HERE Android 没有地图的 SDK NavigateManager 模拟没有给出演习

HERE Android SDK NavigateManager simulate without Map is not giving maneuvers

我正在使用嵌入在 QT 应用程序中的 HERE Android SDK,并且正在尝试模拟转弯方向,但没有地图显示。我的应用程序中没有 Map 或 MapFragment,我直接使用 MapEngineNavigationManager。我正在主 UI 线程上初始化地图引擎,这是推荐的(不确定这是否会成为问题)。

我能够初始化地图引擎,创建路线并成功转储。但是,当我使用 NavigationManager 模拟路线时,我可以看到导航移动(位置坐标更新正在进行)。但是,我有 ManeuverEventListeners 和 NewInstructionEventListeners,它们从未被调用过。

并且在我的位置侦听器中,如果我调用 getNextManeuverDistance()getETA(),我会收到错误响应。所有其他功能均已成功,模拟导航最终将完成(在预期时间),但不会提供任何指令。

我有相同的代码在示例应用程序中运行良好,但 运行在 QT 框架中我从未获得有效的距离或操作。在 API 参考中它说 getNextManeuver() 将 return 为空(并获得距离 returns MAX_INT)如果下一个动作尚不可用。是什么原因造成的?

在没有 Map 或 MapFragment 的应用程序中 运行 这是否有效?知道为什么 NavigateManager 模拟会这样吗?

是的,我最终发现必须手动预加载地图数据。似乎计算路线还不够,数据获取通常由地图视图完成,导航管理器只是等待地图数据。

在我的例子中,一旦我计算出路线,我就会开始 mMapDataPrefetcher.fetchMapData(route,radius),然后立即开始 mNavigationManager.simulate(route,speed)。在加载地图数据之前导航有点不稳定,但在地图加载完成后立即开始响应。在我的一些测试中加载可能很慢,不知道为什么。但在频繁使用时,地图数据通常已经存在,因此在这种情况下效果更好。

我不确定什么是合适的半径;我试了500m,通话失败; 2000m 现在对我有用。

在此处查看页面:

这些功能被描述为测试版,所以我不确定是否有任何方法可以在受支持的生产方式中执行此操作。