【问题标题】:Clear markers from Google Map in Android从 Android 中的谷歌地图清除标记
【发布时间】:2013-03-17 19:49:12
【问题描述】:

我在片段活动上添加了地图,并使用 addMarker 函数添加了几个标记,但我能够删除所有标记,我收到不同标记列表的通知,

现在我想删除所有标记并添加新标记。

一种将所有标记保留在列表中并一个一个删除的方法,(marker.remove())

有没有更好的方法来清除所有标记。

【问题讨论】:

  • 有 clear() 方法

标签: android google-maps-android-api-2


【解决方案1】:

如果您想清除“地图上的所有标记、叠加层和折线”,use clear() on your GoogleMap

【讨论】:

  • 在这样做之前我应该​​对所有这些都调用 remove() 吗?我的意思是,如果我仍然有一个带有这些标记的 ArrayList,我想我仍然有对这些标记的活动引用,所以即使我清除地图,它们也会保留在内存中。我对此是否正确或清除地图会擦除对标记的引用?
  • @santirivera92:“在这样做之前我应该​​对所有这些都调用 remove() 吗?” - AFAIK,你不应该需要。 “如果我仍然有一个带有这些标记的 ArrayList,我想我仍然对这些标记有活动引用,所以即使我清除地图,它们也会保留在内存中”——是的,但那是 your 代码,而不是 Google 的。如果持有与地图分开的Marker对象,需要放开那些。 clear()以视觉方式删除它们。
  • @santirivera92:是的,应该。没有其他东西应该抓住他们。
  • 另请注意clear() 函数不会重置Marker ID。基本上你不会再得到m0 新的Marker 添加。
  • @Prasad 有没有办法再次获得m0?
【解决方案2】:

如果您不想清除折线并且只需要删除标记,请按照以下步骤操作。

首先创建一个新的标记数组,如下所示

List<Marker> AllMarkers = new ArrayList<Marker>();

然后,当您在谷歌地图上添加标记时,也将它们添加到标记数组(在本例中为 AllMarkers)

for(int i=0;i<places.length();i++){

                LatLng location = new LatLng(Lat,Long);
                MarkerOptions markerOptions = new MarkerOptions();
                markerOptions.position(location);
                markerOptions.title("Your title");

                 Marker mLocationMarker = Map.addMarker(markerOptions); // add the marker to Map
                    AllMarkers.add(mLocationMarker); // add the marker to array

                }

然后最后调用下面的方法一次删除所有标记

 private void removeAllMarkers() {
        for (Marker mLocationMarker: AllMarkers) {
            mLocationMarker.remove();
        }
        AllMarkers.clear();

    }

从任何地方调用以删除所有标记

removeAllMarkers();

当我在寻找一种只删除地图标记而不清除折线的方法时,我发现了这个解决方案。希望这对你也有帮助。

【讨论】:

    猜你喜欢
    • 2016-07-19
    • 2012-12-10
    • 2020-08-18
    • 1970-01-01
    • 1970-01-01
    • 2017-02-10
    • 1970-01-01
    • 1970-01-01
    • 2013-04-10
    相关资源
    最近更新 更多