如何在Android中一键删除mapview中的所有标记?

时间:2011-01-11 16:26:19

标签: android android-mapview itemizedoverlay

我在地图上有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个标记消失。

我做错了什么?

2 个答案:

答案 0 :(得分:3)

.size()将在每次迭代时重新评估,即在删除元素0之后。

写起来会更容易:

mapView.getOverlays().clear();

答案 1 :(得分:0)

更公平的解决方案是仅删除标记而不删除任何其他布局(例如 Compas、版权等)

mapView.overlays
                .forEach { (it as? Marker)?.remove(mapView) }