【问题标题】:Google maps API v2 find Marker by idGoogle maps API v2 按 id 查找标记
【发布时间】:2013-03-25 20:01:49
【问题描述】:

您可以在 Android 上使用新的 V2 Google 地图 API 简单地添加标记。因为标记是在配置更改或保存实例时重新创建的,所以您必须通过其 ID 引用它们。问题是如何从具有特定 id 的地图标记中删除?

我的用例是将标记添加到地图,将其 id 与真实对象的映射一起存储。然后用户删除了其中一个真实对象,因此我找到了 Marker id 并想从地图中删除 Marker,我知道的唯一方法是拥有 Marker 对象并在其上调用 remove()。

【问题讨论】:

    标签: android android-maps-v2


    【解决方案1】:

    关于在配置更改时重新创建标记的文档是错误的,这实际上对我们有好处,但那里是错误的。

    【讨论】:

    【解决方案2】:

    我在进行地图聚类时也遇到过类似的情况,我需要在将标记添加到群集时将其删除。

    我使用的解决方案是,在创建标记并将其添加到地图中并将标记存储在 Map (String - Marker) 中时,我持有对标记的引用,其中key(String) 将是自动生成的标记 id,值将是标记对象。

    现在,您可以通过其 id 获取对标记对象的引用,并在该标记上调用 remove()

    希望对你有帮助。

    【讨论】:

    • 您的解决方案运行良好,直到引发 onSaveInstance 事件。您可以在此处查看文档:developer.android.com/reference/com/google/android/gms/maps/…
    • 是的。您还可以将所有 latlng 保存在您想要放置引脚的位置并将其保存在一个数组中.. 并且由于 latlng 实现 Parcelable,通过将其放入 bundle 中来保存数组很容易.. 和 onRestoreInstance 您可以再次将引脚绘制在地图。并再次按照答案中提到的步骤进行操作。
    【解决方案3】:

    请尝试以下方法:

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

    现在您要删除的标记可以调用

    myMarker.remove();
    

    【讨论】:

    猜你喜欢
    • 2017-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-10
    相关资源
    最近更新 更多