AndroidのGoogleマップからマーカーをクリアする


83

フラグメントアクティビティにマップを追加し、addMarker関数を使用していくつかのマーカーを追加しましたが、すべてのマーカーを削除できます。マーカーのさまざまなリストに関する通知を受け取ります。

今、私はすべてのマーカーを削除し、新しいものを追加したいと思います。

すべてのマーカーをリストに保持し、1つずつ削除する1つの方法(marker.remove())

すべてのマーカーをクリアするためのより良い方法はありますか?


2
clear()メソッドがあります
Marko Niciforovic 2013年

回答:


203

「マップからすべてのマーカー、オーバーレイ、およびポリライン」をクリアする場合は、でを使用clear()しますGoogleMap


1
それを行う前に、それらすべてに対してremove()を呼び出す必要がありますか?つまり、これらのマーカーを含むArrayListがまだある場合は、それらのマーカーへのアクティブな参照がまだあると思います。そのため、マップをクリアしても、それらはメモリに残ります。私はこれについて正しいですか、それともマップをクリアするとマーカーへの参照が消去されますか?
チャーリー-ブレイク

5
@ santirivera92:「それを行う前に、それらすべてに対してremove()を呼び出す必要がありますか?」--AFAIK、あなたはそうする必要はないはずです。「これらのマーカーを含むArrayListがまだある場合は、それらのマーカーへのアクティブな参照がまだあると思います。そのため、マップをクリアしてもメモリに残ります」-はい。ただし、これはGoogleのコードではなくコードです。 。マップとは別にオブジェクト保持している場合は、それらを手放す必要があります。それらを視覚的に削除します。Markerclear()
CommonsWare 2013年

1
@ santirivera92:はい、そうすべきです。他に何もそれらを保持するべきではありません。
CommonsWare 2013年

8
また、clear()関数はMarkerIDをリセットしないことに注意してください。基本的に、あなたはm0新しいMarker追加のために再び得ることはありません。
Prasad De Zoysa 2013

2
@Prasad m0を再度取得する方法はありますか?
Gokhan Arik 2016

4

ポリラインをクリアせず、マーカーのみを削除する必要がある場合は、以下の手順に従ってください。

まず、以下のような新しいマーカー配列を作成します

List<Marker> AllMarkers = new ArrayList<Marker>();

次に、グーグルマップにマーカーを追加するときに、それらをマーカー配列(この例ではAllMarkers)にも追加します。

for(int i=0;i<places.length();i++){

                LatLng location = new LatLng(Lat,Long);
                MarkerOptions markerOptions = new MarkerOptions();
                markerOptions.position(location);
                markerOptions.title("Your title");

                 Marker mLocationMarker = Map.addMarker(markerOptions); // add the marker to Map
                    AllMarkers.add(mLocationMarker); // add the marker to array

                }

次に、最後に以下のメソッドを呼び出して、すべてのマーカーを一度に削除します

 private void removeAllMarkers() {
        for (Marker mLocationMarker: AllMarkers) {
            mLocationMarker.remove();
        }
        AllMarkers.clear();

    }

どこからでも電話してすべてのマーカーを削除する

removeAllMarkers();

ポリラインをクリアせずにマップマーカーのみを削除する方法を探していたときに、この解決策を見つけました。これがあなたにも役立つことを願っています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.