2011-10-21 64 views
0

我正在嘗試設置mylocationoverlay。不幸的是,它的表現很奇怪。它工作正常,除非它在我離開MapActivity並返回到我的應用程序之後纔出現。最初,地圖出現,並有一個藍色的圓圈,而它正在獲得一個很好的位置。然而,不是解決一個問題,而是圓圈消失。mylocationoverlay第一次找到位置消失

我的代碼看起來是這樣的:

onResume() { 
    myLocation = new MyLocationOverlay(getActivity(), mp); 
myLocation.enableMyLocation(); 
myLocation.runOnFirstFix(new Runnable(){ 
     public void run() { 
      map.getOverlays().clear(); 
     map.getOverlays().add(myLocation); 
     map.postInvalidate(); 
     } 
    } 
} 


onPause() { 
    myLocation.disableMyLocation(); 
    layout.removeView(map); 
    map = null; 

}

有沒有人有什麼可能會發生在這裏的任何想法?由於這幾乎是所有在線樣例的逐字記錄,所以我可能會補充說我正在運行2.3.4的motorolla atrix上進行測試。

+0

後添加您的覆蓋,你必須填寫()在地圖上查看。 –

回答

0

Edit :讓我帶你通過你的代碼:

onResume() { 
// First time: draw a circle somewhere here. There is no GPS fix yet, so no dot. 
// Second time: The dot from the previous fix exists, so you get a circle and dot. 
myLocation = new MyLocationOverlay(getActivity(), mp); 
myLocation.enableMyLocation(); 
myLocation.runOnFirstFix(new Runnable(){ 
     public void run() { 
     // First time: removes the circle and draws a dot. 
     // Second time: removes the circle and dot, and draw a new dot. 
     map.getOverlays().clear(); 
     map.getOverlays().add(myLocation); 
     map.postInvalidate(); 
     } 
    } 
} 

map.getOverlays().clear();刪除圈

使用remove()而不是刪除您不希望覆蓋(S),而不是清除它們全部。

記得撥打map.invalidate();每當你需要強制重繪

+0

我用remove來代替,它仍然不會第一次顯示。我還在日誌中顯示了地圖上有多少疊加層,儘管沒有顯示任何內容,但它說了1。我認爲這個平臺意味着繪製方法沒有被調用? – akhalsa

+0

我還應該補充說,當第一次出現藍色圓圈時,它不包括中心的圓點。然後藍色圓圈消失,沒有覆蓋。第二次打開活動時,最初有藍色圓圈,但在中心包含一個覆蓋點。然後一旦圓圈消失,圓點仍然留在那裏。我完全不知道爲什麼它第一次無法運作! – akhalsa

相關問題