我在地图上有2个标记,我想在用户点击按钮时删除它们。这是我的方法:
public void deleteAllMarkers() {
if(mapView.getOverlays().size() !=0) {
//Log.d("MAPA ",Integer.toString(mapView.getOverlays().size()));
for (int i=0; i<mapView.getOverlays().size(); i++ ) {
mapView.getOverlays().remove(i);
}
mapView.postInvalidate();
}
}
问题是我必须按两次按钮才能摆脱两个标记,因为在第一次按下后只有1个标记消失。
我做错了什么?
答案 0 :(得分:3)
.size()将在每次迭代时重新评估,即在删除元素0之后。
写起来会更容易:
mapView.getOverlays().clear();
答案 1 :(得分:0)
更公平的解决方案是仅删除标记而不删除任何其他布局(例如 Compas、版权等)
mapView.overlays
.forEach { (it as? Marker)?.remove(mapView) }