1

我在地图上有 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();
    }   
}

问题是我必须按两次按钮才能摆脱两个标记,因为第一次按下后只有一个标记消失。

我究竟做错了什么?

4

2 回答 2

6

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

写起来会更容易:

mapView.getOverlays().clear();
于 2011-01-11T17:14:37.273 回答
1

更公平的解决方案是只删除没有任何其他布局的标记(如 Compas、版权等)

mapView.overlays
                .forEach { (it as? Marker)?.remove(mapView) }
于 2021-05-03T07:15:16.027 回答