这里Map SDK OffscreenRenderer 添加地图路由故障

Here Map SDK OffscreenRenderer add map route glitch

我正在使用 Here Android SDK API。 我有两个地图视图实例 - 一个带有 mapFragment (map_1) 的法线贴图,另一个带有 android 服务中的 OffscreenRenderer 运行 (map_2)。

希望这个方案能给出一些解释。 当在 Activity 用户创建路由时,它发送到 MyApplication 实例,然后发送到绑定服务,其中:

offscreenMap.addMapObject(route);

启动后效果完美。但是当 Activity 被销毁并重新创建时,在相同的用例中,服务中的相同方法被调用(我看到我的路由到达服务实例的日志),但 offscreenMap 不会立即更新。在地图实际更新为新路线之前,可能会有一段很长的任意时间。

更有趣的是,如果用户大量缩小 activity 地图实例(或旋转地图),map_2 会立即更新为新路线。所以我的问题是 - 这是 Here 错误还是我的误用?我可以尝试做些什么来防止这种情况发生?

同样,这不是 android 破坏我的服务或丢失与受限服务的连接的问题,这工作正常。我可以看到调用了服务方法。

希望大家多提建议。

更新: 对于已解决的正常案例问题(感谢 David Leong):告诉地图实例它需要更新,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(在 activity)被用户缩小后才会更新。我对 navManager 做错了什么吗?

更新2: 得到它。我将 navManager 用于 map1 和 map2。这是一个错误。它可能是单调的,应该只用于一个地图实例。当我重新启动 activity 时,它的 catch 导航管理器到它自己的地图,然后 map2 只是意外地刷新了。所以我删除了在 map1 上使用导航管理器及其现在的工作。同样令人沮丧的是我不能对两个地图都使用导航管理器 =(

您更新后的问题的答案是编写您自己的 RoadView。这实际上很容易,我们的几个客户都这样做了!

每当导航管理器有更新的位置时,您可以同时更新两个地图的位置。我们的道路视图仅设计用于驱动一个地图实例。