2017-04-13 67 views
0

我正在使用此处的Android SDK API。 我有两个地图视图实例 - 一个具有mapFragment的普通地图(map_1),另一个具有在android服务(map_2)内运行的OffscreenRenderer。 enter image description here此处地图SDK OffscreenRenderer添加地图路线故障

希望这个方案能提供一些解释。 当活动用户创建路线将其发送给所有MyApplication实例,然后以有限的服务,其中:启动

offscreenMap.addMapObject(route); 

在这之后运行完美。但是,当Activity被破坏并重新创建时,在相同的用例中,服务中的相同方法会被调用(我会看到我的路由到达Service实例的日志),但是不会立即更新offscreenMap。在地图实际获得新路线更新之前,可能会发生一些漫长的任意时间。

更有趣的是,如果用户大量放大活动地图实例(或旋转地图),map_2会立即更新新路线。所以我的问题是 - 这是一个这里的错误还是我的滥用?我能做些什么来防止这种情况发生?

同样,它不是android销毁我的服务或丢失与有界服务的连接的问题,这很好。我可以看到服务方法被调用。

希望有任何建议。

更新时间: 对于解决(感谢大卫·施)正常情况下的问题:告诉地图实例,它需要进行更新,setZoomLevel(getZoomLevel())方法的帮助。 但是!如果在相同情况下在Roadview导航模式下运行的NavigationManager - 地图仍然不会更新。

澄清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()); 
} 

虽然第一次创建活动和存活 - 此代码的工作。但是当它被破坏并重新创建时,map2只会在map1(在活动时)被用户缩小后更新。我用NavManager做错了什么?

更新2: 得到它。我使用navManager的map1和map2。这是一个错误。它可能是一个singletone,应该只用于一个地图实例。当我重新启动其捕获导航管理器到其自己的地图的活动,然后map2刷新只是偶然。所以我现在删除了map1上的导航管理器及其工作。此外它相当令人沮丧,我无法使用导航经理都映射=(

+1

您是否在两个地图之间使用相同的MapRoute对象?路由对象,因为你有两个地图 –

+0

是的,我选中了,我使用了相同的Route对象,但是为两个地图实例单独创建了两个不同的MapRoute对象。仅在map_1上进行了一些操作后,仍然在map_2上绘制MapRoute。还是我需要使用两个Route对象?我猜不是,因为它可能不应该有任何连接到地图视图..任何其他建议?) –

+1

这应该是好的。系统缺失的内容可能是重新绘制地图的一个尝试。尝试像map.setZoomLevel(map.getZoomLevel());这将是一个无操作,但会触发重绘。如果这是有效的,那么这意味着该系统认为没有任何变化,这是部分正确的。 –

回答

0

回答你的问题的更新是写自己的RoadView,它实际上是很容易的,我们几个客户做!

无论何时导航管理员有更新的位置,您可以同时更新两个地图的位置我们的路线图仅用于驱动一个地图实例

+0

谢谢!你有什么样的例子可以开始吗?任何算法已经证明是好的?)相机转动semms是一项非常艰巨的任务,如果我们想要做到这一点顺利,并处理所有quizzy转身舒适的司机.. –

+0

对不起,我没有一个很好的一手或上传到我们的github页面。让我记下这一点,并要求我们的团队创建另一个样本。 –

+0

谢谢,那会非常好!) –