2013-02-28 114 views
1

您可以簡單地在Android上添加標記與新的V2谷歌地圖API。由於標記是在配置更改或保存實例時重新創建的,因此您必須通過其ID來引用它們。問題是如何從地圖標記中刪除特定的ID?谷歌地圖API v2通過編號找到標記

我的使用情況是標記添加到地圖中,存儲其ID與映射真實的物體。然後用戶刪除這些真實對象之一,因此我找到Marker標識並希望從地圖中刪除Marker,我知道的唯一方法是讓Marker對象和調用remove()。

回答

2

該文檔在配置更改時重新創建標記是錯誤的,它對我們來說確實很好,但它在那裏是錯誤的。

+0

你確定嗎? – gingo 2013-04-03 12:34:51

+0

@gingo是的。只需在onCreate中創建一個標記if(savedInstanceState == null)並旋轉屏幕。旋轉後,您將看不到標記重新創建。 http://code.google.com/p/gmaps-api-issues/issues/detail?id=5101 – 2013-04-03 17:04:23

0

只是嘗試以下操作:

private Marker myMarker; 

myMarker = getMap().addMarker(new MarkerOptions() 
        .position(latLng) 
        .title("My Spot") 
        .snippet("This is my spot!")); 

現在要刪除標記,你可以調用

myMarker.remove(); 
+0

您的解決方案運行良好,直到引發onSaveInstance事件。您可以在這裏查看文檔:http://developer.android.com/reference/com/google/android/gms/maps/model/Marker.html#getId%28%29 – gingo 2013-02-28 19:02:39

1

我也做地圖集羣,在這裏我要碰到類似的情況將標記添加到羣集時刪除標記。

我使用的解決方案是,當我創建並添加到地圖並將標記存儲在Map(String - Marker),其中key(String)將是一個自動生成的標記ID,並且值將是標記對象。

現在,您可以通過其標識獲取對標記對象的引用,並在該標記上調用remove()

我希望這會對你有所幫助。

+1

您的解決方案運行良好,直到onSaveInstance事件被提出。您可以在這裏查看文檔:http://developer.android.com/reference/com/google/android/gms/maps/model/Marker.html#getId%28%29 – gingo 2013-02-28 19:03:57

+0

是的。你也可以容納所有你想放置引腳的地方,並將它們保存到一個數組中,並且當latlng實現Parcelable時,它將很容易通過將數組放在一起來持久化數組。..和onRestoreInstance你可以再次繪製引腳地圖。並再次按照答案中提到的步驟。 – 2013-03-01 04:11:18