2013-02-28 44 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