在适用于 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);
}
}
});
}
有人有更好的主意吗?
addMarker
的方法签名是:
public final Marker addMarker (MarkerOptions options)
因此,当您通过指定标记的选项将标记添加到GoogleMap
时,您应该保存返回的Marker
对象(而不是用于创建它的MarkerOptions
对象)。此对象允许您稍后更改标记状态。当您完成标记后,您可以调用Marker.remove()
将其从地图中删除。
顺便说一句,如果您只想暂时隐藏它,则可以通过调用Marker.setVisible(boolean)
来切换标记的可见性。
像这样将标记添加到地图
Marker markerName = map.addMarker(new MarkerOptions().position(latLng).title("Title"));
然后,您将能够使用 remove 方法,它将仅删除该标记
markerName.remove();

要清除地图中的所有涂鸦,请使用
map.clear()
如果标记存在,请删除最后一个标记。如果标记不存在,请创建当前标记
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)));
}
本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处
评论列表(21条)