Here 移动 SDK PositionSimulator

Here Mobile SDK PositionSimulator

我正在使用 Here Mobile Android SDK 并尝试模拟 GPX 轨迹,以测试我的地图行为。我使用 PositionSimulator class,为位置更新设置回调,但是当我调用 startPlayback(filename) 它解析我的 gpx 文件时 android 没有错误,但不模拟假 gps 坐标。

有人可以为 PositionSimulator 或可行的代码示例提供可行的 gpx 文件吗?

我的代码:

posManager = PositioningManager.getInstance();
posManager.start(PositioningManager.LocationMethod.GPS_NETWORK);
posManager.addListener(
   new WeakReference<PositioningManager.OnPositionChangedListener>(positionListener));
mapFragment.getPositionIndicator().setVisible(true);
simulator = new PositionSimulator();
PositionSimulator.PlaybackError err = simulator.startPlayback(trackFileName);

模拟器实例收到了正确的点数,但我的位置标记和相机根本没有移动。我用路线、waypoints 和轨道尝试不同的 gpx 文件。也许我需要以某种方式在 gpx 中设置时间戳?添加了 Moc 位置的权限。

模拟在某条路线行驶时,有没有更好的测试相机运动的方法?任何帮助将不胜感激。

您是否在 "Settings > Developer Options > Select mock location app" 对话框中设置了您的应用程序? More info

此外,您可以尝试使用 PositionSimulator getPositionCountgetCurrentPositionIndexgetPosition API 进行故障排除,看看它是否正在处理您的 GPX 日志正确。

您可以尝试使用 PositioningManager setLogType API 和 LogType#DATA_SOURCE

使用 HERE SDK 创建 GPX 日志

下面是gpx的例子,PositionSimulator:

<gpx>
  <metadata>
   <name>london</name>
   <time>2017-01-19T17:41:11Z</time>
  </metadata>
<trk>
  <name>test</name>
<trkseg>
  <trkpt lat="51.47785480" lon="-0.14754295">
    <ele>8.0000000</ele>
    <time>2010-01-01T00:00:00Z</time>
    <hdop>33</hdop></trkpt>
  <trkpt lat="51.47788554" lon="-0.14778173">
    <ele>8.0000000</ele>
    <time>2010-01-01T00:00:01Z</time>
    <hdop>42</hdop></trkpt>
  <trkpt lat="51.47787976" lon="-0.14807005">
    <ele>6.0000000</ele>
    <time>2010-01-01T00:00:02Z</time>
    <hdop>20</hdop></trkpt>
....
</trkseg>
</trk>
</gpx>

我做错的唯一一件事是没有提供 hdop 字段 - 准确性值。即使您关闭了 PositionIndicator 的准确度显示 - 显然,如果没有 hdop 值,它也不会播放。

A​​ndrewJC,感谢您的帮助。