从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();