【发布时间】:2012-11-21 11:00:38
【问题描述】:
在新的 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);
}
}
});
}
有人有更好的主意吗?
【问题讨论】:
-
为什么要使用 Runnable() 来添加标记?
-
在 UI 线程上做
-
使用 mMap.clear() 清除所有标记
标签: android google-maps