Wenn ich in Google Maps API v2 alle Kartenmarkierungen entfernen wollte, konnte ich das einfach tun:
map.clearOverlays();
Wie mache ich das in Google Maps API v3 ?
Die Betrachtung der Referenz-API Das ist mir unklar.
Wenn ich in Google Maps API v2 alle Kartenmarkierungen entfernen wollte, konnte ich das einfach tun:
map.clearOverlays();
Wie mache ich das in Google Maps API v3 ?
Die Betrachtung der Referenz-API Das ist mir unklar.
Gehen Sie einfach wie folgt vor:
I. Deklarieren Sie eine globale Variable:
var markersArray = [];
II. Definieren Sie eine Funktion:
function clearOverlays() {
for (var i = 0; i < markersArray.length; i++ ) {
markersArray[i].setMap(null);
}
markersArray.length = 0;
}
OR
google.maps.Map.prototype.clearOverlays = function() {
for (var i = 0; i < markersArray.length; i++ ) {
markersArray[i].setMap(null);
}
markersArray.length = 0;
}
III. Schieben Sie Markierungen in das 'markerArray', bevor Sie Folgendes aufrufen:
markersArray.push(marker);
google.maps.event.addListener(marker,"click",function(){});
IV. Rufen Sie die clearOverlays();
o map.clearOverlays();
Funktion, wo immer sie benötigt wird.
Das war's!!
Das gleiche Problem. Dieser Code funktioniert nicht mehr.
Ich habe es korrigiert, ändern Sie clearMarkers Methode auf diese Weise:
set_map(null) ---> setMap(null)
google.maps.Map.prototype.clearMarkers = function() {
for(var i=0; i < this.markers.length; i++){
this.markers[i].setMap(null);
}
this.markers = new Array();
};
Die Dokumentation wurde aktualisiert und enthält nun Einzelheiten zu diesem Thema: https://developers.google.com/maps/documentation/javascript/markers#remove
In V3 scheint es diese Funktion noch nicht zu geben.
Es wird empfohlen, Verweise auf alle Marker auf der Karte in einem Array zu speichern. Und dann, wenn Sie sie alle löschen wollen, nur Schleife durch das Array und rufen Sie .setMap(null) Methode auf jeder der Referenzen.
Siehe diese Frage für weitere Informationen/Code.
Meine Version:
google.maps.Map.prototype.markers = new Array();
google.maps.Map.prototype.getMarkers = function() {
return this.markers
};
google.maps.Map.prototype.clearMarkers = function() {
for(var i=0; i<this.markers.length; i++){
this.markers[i].setMap(null);
}
this.markers = new Array();
};
google.maps.Marker.prototype._setMap = google.maps.Marker.prototype.setMap;
google.maps.Marker.prototype.setMap = function(map) {
if (map) {
map.markers[map.markers.length] = this;
}
this._setMap(map);
}
Der Code ist eine bearbeitete Version dieses Codes http://www.lootogo.com/googlemapsapi3/markerPlugin.html Die Notwendigkeit, addMarker manuell aufzurufen, wurde beseitigt.
Profis
Nachteile
Diese Lösung war die einfachste von allen, die ursprünglich von YingYang 11. März '14 um 15:049 unter der ursprünglichen Antwort auf die ursprüngliche Frage des Benutzers
Ich verwende dieselbe Lösung 2,5 Jahre später mit Google Maps v3.18 und es funktioniert wie ein Zauber.
markersArray.push(newMarker) ;
while(markersArray.length) { markersArray.pop().setMap(null); }
// No need to clear the array after that.
google.maps.Map.prototype.markers = new Array();
google.maps.Map.prototype.addMarker = function(marker) {
this.markers[this.markers.length] = marker;
};
google.maps.Map.prototype.getMarkers = function() {
return this.markers
};
google.maps.Map.prototype.clearMarkers = function() {
for(var i=0; i<this.markers.length; i++){
this.markers[i].setMap(null);
}
this.markers = new Array();
};
Ich glaube nicht, dass es in V3 eine solche Funktion gibt, also habe ich die obige benutzerdefinierte Implementierung verwendet.
Haftungsausschluss: Ich habe diesen Code nicht geschrieben, aber ich habe vergessen, einen Verweis beizubehalten, als ich ihn in meine Codebasis einfügte, also weiß ich nicht, woher er stammt.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.