2017-04-13 24 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

謝謝,那會非常好!) –