Wenn ich in Google Maps API v2 alle Kartenmarkierungen entfernen wollte, konnte ich einfach Folgendes tun:
map.clearOverlays();
Wie mache ich das in Google Maps API v3 ?
Wenn ich mir die Referenz-API anschaue, ist mir das unklar.
Wenn ich in Google Maps API v2 alle Kartenmarkierungen entfernen wollte, konnte ich einfach Folgendes tun:
map.clearOverlays();
Wie mache ich das in Google Maps API v3 ?
Wenn ich mir die Referenz-API anschaue, ist mir das unklar.
Antworten:
Gehen Sie einfach wie folgt vor:
I. Deklarieren Sie eine globale Variable:
II. Definieren Sie eine Funktion:
ODER
III. Drücken Sie die Markierungen im 'markerArray', bevor Sie Folgendes aufrufen:
IV. Rufen Sie die Funktion
clearOverlays();
oder aufmap.clearOverlays();
, wo immer dies erforderlich ist.Das ist es!!
quelle
markersArray
auf ein leeres Array setzen, anstatt seine Länge zu setzen, was ich irgendwie seltsam finde:markersArray = [];
while
Ansatz für die Verarbeitung des Arrays verwenden :while(markersArray.length) { markersArray.pop().setMap(null); }
. Danach muss das Array nicht mehr gelöscht werden.Gleiches Problem. Dieser Code funktioniert nicht mehr.
Ich habe es korrigiert und die clearMarkers-Methode folgendermaßen geändert:
set_map (null) ---> setMap (null)
Die Dokumentation wurde aktualisiert und enthält nun Details zum Thema: https://developers.google.com/maps/documentation/javascript/markers#remove
quelle
new Array();
?Es scheint, dass es in V3 noch keine solche Funktion gibt.
Die Leute schlagen vor, Verweise auf alle Markierungen, die Sie auf der Karte haben, in einem Array zu behalten. Und wenn Sie sie alle löschen möchten, durchlaufen Sie einfach das Array und rufen Sie die .setMap (null) -Methode für jede der Referenzen auf.
Weitere Informationen / Code finden Sie in dieser Frage.
Meine Version:
Der Code ist eine bearbeitete Version dieses Codes http://www.lootogo.com/googlemapsapi3/markerPlugin.html Ich habe die Notwendigkeit beseitigt, addMarker manuell aufzurufen.
Vorteile
Nachteile
quelle
Dies war die einfachste aller Lösungen, die ursprünglich von YingYang am 11. März 14 um 15: 049 unter der ursprünglichen Antwort auf die ursprüngliche Frage des Benutzers veröffentlicht wurden
Ich verwende seine gleiche Lösung 2,5 Jahre später mit Google Maps v3.18 und es funktioniert wie ein Zauber
quelle
Ich glaube nicht, dass es eine in V3 gibt, also habe ich die obige benutzerdefinierte Implementierung verwendet.
Haftungsausschluss: Ich habe diesen Code nicht geschrieben, aber ich habe vergessen, eine Referenz beizubehalten, als ich ihn in meine Codebasis eingefügt habe, sodass ich nicht weiß, woher er stammt.
quelle
In der neuen Version v3 wurde empfohlen, in Arrays zu bleiben. wie folgt.
Siehe Beispiel in der Overlay-Übersicht .
quelle
In der Demo-Galerie von Google finden Sie eine Demo dazu:
http://code.google.com/apis/maps/documentation/javascript/examples/overlay-remove.html
Sie können den Quellcode anzeigen, um zu sehen, wie sie Markierungen hinzufügen.
Kurz gesagt, sie halten die Marker in einem globalen Array. Beim Löschen / Löschen durchlaufen sie das Array und rufen ".setMap (null)" für das angegebene Markierungsobjekt auf.
Dieses Beispiel zeigt jedoch einen Trick. "Löschen" bedeutet für dieses Beispiel, sie aus der Karte zu entfernen, aber im Array zu belassen, sodass die Anwendung sie schnell wieder zur Karte hinzufügen kann. In gewissem Sinne verhält sich dies so, als würde man sie "verstecken".
"Löschen" löscht auch das Array.
quelle
arbeitet nur am IE.
Arbeiten an Chrom, Firefox, dh ...
quelle
Die Lösung ist ganz einfach. Sie können die Methode verwenden :
marker.setMap(map);
. Hier legen Sie fest, auf welcher Karte der Pin angezeigt wird.Wenn Sie also
null
diese Methode (marker.setMap(null);
) festlegen , verschwindet der Stift.Jetzt können Sie eine Funktion schreiben, während alle Markierungen in Ihrer Karte verschwinden.
Sie fügen einfach hinzu, um Ihre Pins in ein Array einzufügen und sie mit
markers.push (your_new pin)
oder diesem Code zu deklarieren, zum Beispiel:Dies ist eine Funktion, mit der alle Markierungen Ihres Arrays in der Karte gesetzt oder ausgeblendet werden können:
Um alle Ihre Marker zu verschwinden, sollten Sie die Funktion aufrufen mit
null
:Und um alle Ihre Marker zu entfernen und zu verschwinden, sollten Sie Ihr Array von Markern wie folgt zurücksetzen:
Dies ist mein vollständiger Code. Es ist das einfachste, auf das ich mich reduzieren könnte. Seien Sie vorsichtig,
YOUR_API_KEY
wenn Sie den Code durch Ihre Google-Schlüssel-API ersetzen :Sie können den Google-Entwickler oder die vollständige Dokumentation auf der Google-Entwickler-Website konsultieren .
quelle
Eine saubere und einfache Anwendung der Antwort von Rolinger.
quelle
Die
set_map
in beiden Antworten veröffentlichte Funktion " " scheint in der Google Maps v3-API nicht mehr zu funktionieren.Ich frage mich, was passiert ist
Aktualisieren:
Es scheint, dass Google seine API so geändert hat, dass "
set_map
" nicht "setMap
" ist.http://code.google.com/apis/maps/documentation/v3/reference.html
quelle
Hier finden Sie ein Beispiel zum Entfernen von Markierungen:
https://developers.google.com/maps/documentation/javascript/examples/marker-remove?hl=es
quelle
Das Folgende von Anon funktioniert perfekt, obwohl es beim wiederholten Löschen der Überlagerungen flackert.
Gehen Sie einfach wie folgt vor:
I. Deklarieren Sie eine globale Variable:
II. Definieren Sie eine Funktion:
III. Drücken Sie die Markierungen im 'markerArray', bevor Sie Folgendes aufrufen:
IV. Rufen Sie die
clearOverlays()
Funktion auf, wo immer dies erforderlich ist.Das ist es!!
Hoffe das wird dir helfen.
quelle
for(in in markersArray){}
tut wahrscheinlich nicht das, was Sie erwarten. WennArray
es an einer anderen Stelle im Code erweitert wird, werden auch diese Eigenschaften und nicht nur die Indizes durchlaufen. Die Javascript-VersionmarkersArray.forEach()
davon wird nicht überall unterstützt. Sie wären besserfor(var i=0; i<markersArray.length; ++i){ markersArray.setMap(null); }
Ich fand die Verwendung der Markermanager-Bibliothek im Projekt Google-Maps-Utility-Library-v3 am einfachsten.
1. Richten Sie den MarkerManager ein
2. Fügen Sie dem MarkerManager Marker hinzu
3. Um Markierungen zu löschen, müssen Sie nur die
clearMarkers()
Funktion des MarkerManger aufrufenquelle
clearMarkers
tun müssen, ist über die aufrufenden Markierungen zu iterierenmarker.setMap(null)
(ich habe die Quelle überprüft). Es wäre weniger Arbeit, sie in ein Array zu packen und es selbst zu tun.Sie können es auch so machen:
quelle
Ich habe dies gerade mit kmlLayer.setMap (null) versucht und es hat funktioniert. Ich bin mir nicht sicher, ob dies mit normalen Markern funktionieren würde, scheint aber korrekt zu funktionieren.
quelle
Um alle Überlagerungen einschließlich Polys, Marker usw. zu entfernen ...
Verwenden Sie einfach:
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);}
Hier ist eine Funktion, die ich geschrieben habe, um sie in einer Kartenanwendung zu erstellen:
quelle
So entfernen Sie alle Markierungen von der Karte: Erstellen Sie Funktionen wie folgt:
1.addMarker (Ort): Diese Funktion dient zum Hinzufügen von Markern auf der Karte
2.clearMarkers (): Mit dieser Funktion werden alle Markierungen aus der Karte entfernt, nicht aus dem Array
3.setMapOnAll (map): Mit dieser Funktion werden Markierungsinformationen zum Array hinzugefügt
4.deleteMarkers (): Diese Funktion löscht alle Marker im Array, indem Verweise auf sie entfernt werden.
quelle
Der sauberste Weg, dies zu tun, besteht darin, alle Funktionen der Karte zu durchlaufen. Markierungen (zusammen mit Polygonen, Polylinien usw.) werden in der Datenschicht der Karte gespeichert .
Für den Fall, dass die Markierungen über den Zeichenmanager hinzugefügt werden , ist es am besten, ein globales Array von Markierungen zu erstellen oder die Markierungen bei der Erstellung wie folgt in die Datenebene zu verschieben:
Ich empfehle den zweiten Ansatz, da Sie später andere Klassenmethoden von google.maps.data verwenden können.
quelle
Dies ist die Methode, die Google selbst in mindestens einem Beispiel verwendet:
Überprüfen Sie das Google-Beispiel auf ein vollständiges Codebeispiel:
https://developers.google.com/maps/documentation/javascript/examples/places-searchbox
quelle
Ich weiß nicht warum, aber das Setzen
setMap(null)
auf meine Marker hat bei mir nicht funktioniert, wenn ich benutzeDirectionsRenderer
.In meinem Fall musste ich anrufen ,
setMap(null)
um meinenDirectionsRenderer
auch.So ähnlich:
quelle
Gehen Sie einfach über Markierungen und entfernen Sie sie von der Karte. Danach leeren Sie die Markierungsanordnung für Karten:
quelle
lösche einfach Googlemap
quelle
Ich habe alle vorgeschlagenen Lösungen ausprobiert, aber nichts hat bei mir funktioniert, während sich alle meine Marker unter einem Cluster befanden. Schließlich habe ich nur folgendes gesagt:
Mit anderen Worten, wenn Sie Markierungen in einen Cluster einschließen und alle Markierungen entfernen möchten, rufen Sie Folgendes auf:
quelle
Du meinst entfernen wie beim Ausblenden oder Löschen?
wenn versteckt:
wenn Sie sie löschen möchten:
Beachten Sie, dass ich Array-Markierungen verwende, um sie zu verfolgen und manuell zurückzusetzen.
quelle
Sie müssen map null auf diese Markierung setzen.
quelle
Ich habe eine einfache Lösung gefunden (glaube ich):
quelle
Ich benutze eine Kurzschrift, die den Job gut macht. Mach einfach
quelle
Wenn Sie das gmap V3-Plugin verwenden:
$("#map").gmap("removeAllMarkers");
Siehe: http://www.smashinglabs.pl/gmap/documentation#after-load
quelle
Ich weiß, dass dies vielleicht eine einfache Lösung ist, aber das ist, was ich tue
Funktioniert jedes Mal für mich.
quelle