从GoogleMap中移除一个标记
在新的Android版Google Maps API中,我们可以添加一个标记 ,但无法(轻松)删除标记 。
我的解决scheme是将标记保留在地图中,当我想删除标记时重绘地图,但效率不高。
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); } } }); } 
有没有人有更好的主意?
  addMarker的方法签名是: 
 public final Marker addMarker (MarkerOptions options) 
 因此,当您通过指定标记的选项将标记添加到GoogleMap ,应保存返回的Marker对象(而不是您用来创build它的MarkerOptions对象)。 这个对象允许你稍后改变标记状态。 当您完成标记时,可以调用Marker.remove()将其从地图中删除。 
 另外,如果您只想临时隐藏它,可以通过调用Marker.setVisible(boolean)来切换标记的可见性。 
清除地图使用中的所有涂鸦
 map.clear() 
像这样将标记添加到地图
 Marker markerName = map.addMarker(new MarkerOptions().position(latLng).title("Title")); 
然后你就可以使用remove方法,它只会删除那个标记
 markerName.remove(); 
  1.如果你想删除一个标记,你可以做marker.remove(); 或者,您也可以隐藏标记,而不是将其删除 
  marker.setVisible(false); 
 并在需要时稍后显示。 
  2.然而,如果你想从地图上删除所有的标记使用 map.clear(); 
  注意: map.clear(); 也将删除Polylines, Circles等 
  3.如果你不想删除Polylines, Circles使用循环标记的长度(如果你有多个标记)删除那些在这里检查示例 或设置它们可见false并且不要使用map.clear(); 在这种情况下。 
如果标记存在删除最后一个标记 如果标记不存在,则创build当前标记
 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))); } 
使用下面的代码:
  mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() { @Override public boolean onMarkerClick(Marker marker) { marker.remove(); return true; } }); 
一旦你点击“标记” ,你可以删除它。
创build一个全局variables来跟踪标记
 private Marker currentLocationMarker; 
//删除旧标记
  if (null != currentLocationMarker) { currentLocationMarker.remove(); } 
//添加更新的标记并移动相机
  currentLocationMarker = mMap.addMarker(new MarkerOptions().position( new LatLng(getLatitude(), getLongitude())) .title("You are now Here").visible(true) .icon(Utils.getMarkerBitmapFromView(getActivity(), R.drawable.auto_front)) .snippet("Updated Location")); currentLocationMarker.showInfoWindow(); 
在地图上添加所有标记的数组。
稍后,使用:
 Marker temp = markers.get(markers.size() - 1); temp.remove();