it-swarm.com.de

Google Maps API v3 - Wie lösche ich Überlagerungen?

In Google Maps API v2 habe ich map.clearOverlays() verwendet, um die Markierung zu entfernen und erneut zu zeichnen.

Wie mache ich das mit Google Maps API v3?

Vielen Dank

22
Natim

Unter hier finden Sie Einzelheiten zu den verschiedenen Optionen, die Sie jetzt öffnen können. Jetzt müssen Sie jedoch die Marker durchlaufen und einzeln entfernen. Ihr Code sollte ungefähr so ​​aussehen:

var markers = [];

function clearOverlays() {
 while(markers.length) { markers.pop().setMap(null); }
  markers.length = 0;
}

markers.Push(marker);
google.maps.event.addListener(marker,"click",function(){});
13
Paul Owens

Das ist gut:

http://apitricks.blogspot.com/2010/02/clearoverlays-in-v3.html

Artikel für den Fall, dass der Link stirbt:

clearOverlays() in V3

In API v3 gibt es keine clearOverlays (). Einige Praktiken wurden vorgestellt. Ich denke, das ist das Einfachste, was es gibt.

Verschieben Sie alle Überlagerungen in einem Array, wenn Sie erstellt werden (wie gewohnt). Der folgende Code löscht sowohl die Karte als auch das Array:

while(overlays[0])
{
  overlays.pop().setMap(null);
}

die pop () -Methode eines Arrays entfernt das letzte Element eines Arrays und gibt dieses Element zurück. 'while' hält dies so lange aufrecht, wie sich Elemente im Array befinden. Wenn Overlays [0] nicht mehr existieren, ist die Mission abgeschlossen und der Code wird fortgesetzt.

34
Emmanuel Umaña

Ich habe eine andere Lösung gefunden, die sehr gut funktioniert

gmap.overlayMapTypes.setAt( 0, null);

während gmap Ihr ​​Kartenobjekt ist

2
Karim Samir

Sie können sich die Google Maps-Dokumentation ansehen, da sie die einfache deleteOverLays-Methode http://code.google.com/apis/maps/documentation/javascript/overlays.html anzeigt.

// Deletes all markers in the array by removing references to them
function deleteOverlays() {
  if (markersArray) {
    for (i in markersArray) {
      markersArray[i].setMap(null);
    }
    markersArray.length = 0;
  }
}
1
Burak Dede

Das Objekt overlayMapTypes liefert eine eindeutige Methode:

map.overlayMapTypes.clear()

Während map Ihr ​​Google Maps-Objekt ist.

Wenn Sie die Methode in Ihrer API-Version nicht finden können, können Sie auf die folgende Quelle von clear zurückgreifen:

clear = function() {
    for (; this.get("length");) this.pop()
};
1
Pascale

Wie wäre es mit diesem? Ich möchte die .setMap (null) nicht verwenden, da ich keinen besseren Weg weiß, die polyShape erneut zu initiieren.

polyShape = new google.maps.Polygon(
    {
        strokeColor     : '#000000',
        strokeOpacity   : 0.3,
        strokeWeight    : 1,
        fillColor       : "#000000",
        fillOpacity     : 0.26,
        geodesic        : true
    });

Dann ... durchlaufen Sie den Pfad, um ihn zu entfernen.

var path = new google.maps.MVCArray;

/**
 * Delete all points inside Map
 */
function clearMap()
{
    //clear markers
    for (var i = 0; i < markers.length; i++)
    {
        markers[i].setMap(null);

    }
    markers = [];

    //clear polygon, still finding more elegant way
    while (polyShape.getPath().length)
    {
        path.removeAt(0);
    }
}
1
Prabowo Murti

Ein gutes Beispiel von Google finden Sie hier: http://code.google.com/p/gmaps-samples-v3/source/browse/trunk/clear-all-overlays/clear- all overlays.html

Grundsätzlich ist die Idee das Entfernen

  • Markierungen 
  • Polygone 
  • und Polylinien getrennt
0
k_zoltan