我正在使用Here Android SDK API。 我有两个地图视图实例 - 一个带有mapFragment(map_1)的普通地图,另一个带有在Android服务(map_2)内运行的OffscreenRenderer。
希望这个方案能提供一些解释。 当在Activity用户创建Route时,它将发送到MyApplication实例,然后发送到有界服务,其中:
offscreenMap.addMapObject(route);
启动后,此功能非常完美。但是当Activity被销毁并重新创建时,在相同的用例中,调用服务中的相同方法(我看到我的路由到达服务实例的日志),但是offscreenMap没有立即更新。在地图实际更新新路线之前,可能会有一些长的仲裁时间。
更有意思的是,如果用户大幅度调出活动地图实例(或旋转地图),map_2会立即更新新路线。所以我的问题是 - 这是一个Here bug还是我的误用?我可以尝试做些什么来防止这种情况发生?
再次,它不是android破坏我的服务或失去与有界服务的连接的问题,这工作正常。我可以看到调用服务方法。
希望有任何建议。
更新 对于正常情况问题解决了(感谢David Leong):告诉map实例它需要更新,setZoomLevel(getZoomLevel())方法有帮助。 但!如果在同一情况下NavigationManager在Roadview导航模式下运行 - 地图仍然没有更新。
用于澄清map2实例的一些代码。服务开始时:
positionManager = PositioningManager.getInstance();
positionManager.start(PositioningManager.LocationMethod.GPS_NETWORK);
navMngr = NavigationManager.getInstance();
navMngr.setMap(map2);
navMngr.setMapUpdateMode(NavigationManager.MapUpdateMode.ROADVIEW);
navMngr.startTracking();
添加(或更改)路线时:
public void addRoute(Route route) {
Log.d(TAG, "addRoute");
MapRoute mainRoute = new MapRoute (route);
if (currentRoute != null) {
map2.removeMapObject(currentRoute);
}
currentRoute = mainRoute;
map2.addMapObject(currentRoute);
map2.setZoomLevel(map2.getZoomLevel());
//navMngr.stop();
navMngr.startNavigation(currentRoute.getRoute());
}
当Activity首次创建并且活着时 - 此代码有效。但是当它被破坏并重新创建时,map2只有在map1(at activity)被用户缩小后才会更新。我对navManager做错了吗?
Updated2: 得到它。我使用navManager for map1和map2。这是一个错误。它可能是单一的,只能用于一个地图实例。当我重新启动活动时,它将导航管理器捕获到自己的地图,然后map2只是意外刷新。所以我现在删除map1上使用导航管理器及其工作。同样令人沮丧的是,我无法使用导航管理器进行两种地图=(
答案 0 :(得分:0)
更新问题的答案是编写自己的RoadView。它实际上非常简单,我们的一些客户也这么做!
每当导航管理器具有更新位置时,您可以同时更新两个地图的位置。我们的道路视图仅用于驱动一个地图实例。