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();
    }   
}

問題は、ボタンを 2 回押して両方のマーカーを削除する必要があることです。これは、最初に押すとマーカーが 1 つだけ消えるためです。

私は何を間違っていますか?

4

2 に答える 2

6

.size() は、反復ごとに、つまり要素 0 を削除した後に再評価されます。

次のように書く方が簡単です。

mapView.getOverlays().clear();
于 2011-01-11T17:14:37.273 に答える