从 GoogleMap中删除标记

在适用于 Android 的新 Google Maps API 中,我们可以add a marker,但是没有办法(轻松地)删除一个。

在适用于 Android 的新 Google Maps API 中,我们可以add a marker,但是没有办法(轻松地)删除一个。

我的解决方案是将标记保留在地图中,并在要删除标记时重新绘制地图,但效率不高。

private final Map<String, MarkerOptions> mMarkers = new ConcurrentHashMap<String, MarkerOptions>();
private void add(String name, LatLng ll) {
  final MarkerOptions marker = new MarkerOptions().position(ll).title(name);
  mMarkers.put(name, marker);
  runOnUiThread(new Runnable() {
    @Override
    public void run() {
      mMap.addMarker(marker);
    }
  });
}
private void remove(String name) {
  mMarkers.remove(name);
  runOnUiThread(new Runnable() {
    @Override
    public void run() {
      mMap.clear();
      for (MarkerOptions item : mMarkers.values()) {
        mMap.addMarker(item);
      }
    }
  });
}

有人有更好的主意吗?

277

addMarker的方法签名是:

public final Marker addMarker (MarkerOptions options)

因此,当您通过指定标记的选项将标记添加到GoogleMap时,您应该保存返回的Marker对象(而不是用于创建它的MarkerOptions对象)。此对象允许您稍后更改标记状态。当您完成标记后,您可以调用Marker.remove()将其从地图中删除。

顺便说一句,如果您只想暂时隐藏它,则可以通过调用Marker.setVisible(boolean)来切换标记的可见性。

40

像这样将标记添加到地图

Marker markerName = map.addMarker(new MarkerOptions().position(latLng).title("Title"));

然后,您将能够使用 remove 方法,它将仅删除该标记

markerName.remove();
32

要清除地图中的所有涂鸦,请使用

map.clear()
6

如果标记存在,请删除最后一个标记。如果标记不存在,请创建当前标记

Marker currentMarker = null;
if (currentMarker!=null) {
    currentMarker.remove();
    currentMarker=null;
}
if (currentMarker==null) {
    currentMarker = mMap.addMarker(new MarkerOptions().position(arg0).
    icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN)));
}

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(127)
返回的 mac地址对于不同的设备是相同的
上一篇
如何在ASP.NETCore6WebAPI中添加端点
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(69条)