2012-04-25 51 views
0

中刪除itemizedOverlay我想實現的是有2種顯示在地圖上標記。onLocationChanged

1),顯示從數據庫引出事件紅色標記(做過 - itemizedOverlay)

2)橙標記物將動態地圖(itemizedOverlay2)上顯示用戶的位置。

我使用ItemizedOverlay具有2個不同的層(一個用於事件和一個用於用戶位置),但是我有與動態標記表示用戶位置的問題。

問題:

會發生什麼事是LocationListener的成功獲取緯度/經度和地點的地圖,但以前的點仍然存在上的點。所以我有一些顯示用戶位置的標記。

我已經實施了一些方法,我發現通過互聯網搜索,但沒有一個onLocationChanged的通話過程中發生的。

class myLocationListener implements LocationListener{ 
     OverlayItem overlayItem; 


     @Override 
     public void onLocationChanged(Location location) { 

      if (location != null){ 

       mapOverlays.remove(itemizedOverlay2); 
       mapView.invalidate(); 

       lat = location.getLatitude(); 
       longi = location.getLongitude(); 
       GeoPoint point = new GeoPoint((int) (lat * 1E6), (int) (longi * 1E6)); 
       mControl.animateTo(point); 

       overlayItem = new OverlayItem(point, "My Location", "This is probably where you are"); 
       itemizedOverlay2.addOverlay(overlayItem); 
       mapOverlays.add(itemizedOverlay2); 

      } 

     } 

我知道你可能需要更多的代碼,但讓我們留在這個塊,看看有人看到我錯了。

謝謝。

+0

此鏈接可能對你有用:安卓MapView無法刪除標記](http://stackoverflow.com/a/4634287/3577656)。 – Rajal 2014-08-12 11:56:22

回答

1

您還沒有發佈針對itemizedOverlay2屬於類的代碼,但我猜它擴展ItemizedOverlay。既然它有一個addOverlay()方法,我也猜測它有一個.clear()方法。

如果是這樣,你應該調用clear()添加新的位置之前

itemizedOverlay2.clear(); 
itemizedOverlay2.addOverlay(overlayItem); 
+0

你對itemizedOverlay2正確的擴展名爲MyItemizedOverlay 類 的事情是沒有明確的()方法。 clear()方法可用於mapOverlays mapOverlays.clear() 我已經嘗試過,它同時清除itemizedOverlay和itemizedOverlay2 – bubbly 2012-04-25 16:00:20

+0

你應該寫清楚()方法即可。 public void clear(){mOverlays.clear();} – NickT 2012-04-25 16:10:59

+0

這不會刪除兩個項目嗎? (itemizedOverlay和itemizedOverlay2)? – bubbly 2012-04-25 17:27:08

0

使用內置在MyLocationOverlay類:

position = new MyLocationOverlay(this, mapView); 
position.enableMyLocation(); 
mapOverlays.add(position); 
+0

我已經考慮過了,但它是一種替代方式,而不是解決我的問題。 但隨着MyLocationOverlay我不知道如何更改接收位置的頻率,一般我不知道它是否能夠做的所有事情是什麼LocationListener的即可。 – bubbly 2012-04-25 16:03:06