在Android中清除Google地图中的标记

Kas*_*sma 82 android google-maps-android-api-2

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

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

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

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

Com*_*are 196

如果要清除"的所有标记,覆盖,并从地图折线",clear()你的GoogleMap.

  • 另请注意`clear()`函数不会重置`Marker` ID.基本上你不会再添加`m0`来添加新的'Marker`. (8认同)
  • @ santirivera92:"在这之前我应该​​对所有这些调用remove()吗?" - AFAIK,你不应该这样做."如果我仍然有一个带有那些标记的ArrayList,我想我仍然有这些标记的有效引用,所以即使我清除了地图它们也会保留在内存中" - 是的,但那是*你的*代码,不是谷歌的.如果*你*与地图分开抓住`Marker`对象,*你*需要放弃那些.`clear()`会在视觉上删除它们*. (5认同)
  • @Prasad有没有办法再次获得m0? (2认同)

小智 6

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

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

List<Marker> AllMarkers = new ArrayList<Marker>();
Run Code Online (Sandbox Code Playgroud)

然后当你在谷歌地图上添加标记时,也将它们添加到标记数组(在本例中为 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

                }
Run Code Online (Sandbox Code Playgroud)

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

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

    }
Run Code Online (Sandbox Code Playgroud)

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

removeAllMarkers();
Run Code Online (Sandbox Code Playgroud)

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