这里的Android SDK NavigateManager模拟没有Map没有给出机动

时间:2018-04-27 00:06:45

标签: android here-api

我正在使用嵌入在QT应用程序中的HERE Android SDK,我正在尝试转向模拟转向,但没有地图显示。我的应用中没有Map或MapFragment,我直接使用 MapEngine NavigationManager 。我正在初始化主UI线程上的地图引擎,因为这是推荐的(不确定这可能是一个问题)。

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

在我的位置听众中,如果我拨打getNextManeuverDistance()getETA(),我会收到错误回复。所有其他功能都取得了成功,模拟导航最终将完成(在预期的时间),但没有提供任何指示。

我在示例应用程序中使用相同的代码,但在QT框架中运行我从未获得有效的距离或操作。在API参考中,如果下一个操作尚未可用,则getNextManeuver()将返回null(并且获得距离返回MAX_INT)。可能导致这种情况的原因是什么?

在没有Map或MapFragment的应用程序中运行它是否有效? NavigateManager模拟的任何想法会这样做吗?

1 个答案:

答案 0 :(得分:2)

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

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

我不确定半径是多少;我尝试了500米并且呼叫失败了; 2000米正在为我工​​作。

请参阅此处的页面:

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