我正在使用嵌入在QT应用程序中的HERE Android SDK,我正在尝试转向模拟转向,但没有地图显示。我的应用中没有Map或MapFragment,我直接使用 MapEngine 和 NavigationManager 。我正在初始化主UI线程上的地图引擎,因为这是推荐的(不确定这可能是一个问题)。
我能够初始化地图引擎,创建路线并成功转储它。但是,当我使用NavigationManager模拟路线时,我可以看到导航运动(位置更新中的坐标正在进行中)。但是,我有ManeuverEventListeners和NewInstructionEventListeners,它们永远不会被调用。
在我的位置听众中,如果我拨打getNextManeuverDistance()
或getETA()
,我会收到错误回复。所有其他功能都取得了成功,模拟导航最终将完成(在预期的时间),但没有提供任何指示。
我在示例应用程序中使用相同的代码,但在QT框架中运行我从未获得有效的距离或操作。在API参考中,如果下一个操作尚未可用,则getNextManeuver()
将返回null(并且获得距离返回MAX_INT)。可能导致这种情况的原因是什么?
在没有Map或MapFragment的应用程序中运行它是否有效? NavigateManager模拟的任何想法会这样做吗?
答案 0 :(得分:2)
是的,我最终发现地图数据必须手动预加载。似乎计算路线是不够的,数据提取通常由地图视图完成,导航管理器只是在等待地图数据。
就我而言,只要我有计算出的路线,就会启动mMapDataPrefetcher.fetchMapData(route,radius)
,然后立即启动mNavigationManager.simulate(route,speed)
。在加载地图数据之前导航有点不稳定,但在地图加载完成后立即开始响应。在我的一些测试中加载速度很慢,不知道为什么。但是在频繁使用中,地图数据通常已经存在,因此在这种情况下效果会更好。
我不确定半径是多少;我尝试了500米并且呼叫失败了; 2000米正在为我工作。
请参阅此处的页面:
https://developer.here.com/documentation/android-premium/topics/map-data.html
https://developer.here.com/documentation/android-premium/topics/maps-offline.html
这些功能被描述为测试版,因此我不确定是否有任何方法可以以支持的生产方式执行此操作。