Hvis jeg i Google Maps API v2 ønskede at fjerne alle kortmarkører, kunne jeg blot gøre følgende:
map.clearOverlays();
Hvordan gør jeg det i Google Maps API v3?
Når jeg kigger på Reference API, er det uklart for mig.
Det ser ud til, at der endnu ikke findes en sådan funktion i V3.
Folk foreslår at gemme referencer til alle markører, du har på kortet, i et array. Når du så ønsker at slette dem alle, skal du bare løbe gennem arrayet og kalde .setMap(null)-metoden på hver af referencerne.
Se dette spørgsmål for mere info/kode.
Min 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);
}
Koden er en redigeret version af denne kode http://www.lootogo.com/googlemapsapi3/markerPlugin.html Jeg har fjernet behovet for at kalde addMarker manuelt.
Fordele
Ulemper
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();
};
Jeg tror ikke, at der er en i V3, så jeg brugte ovenstående brugerdefinerede implementering.
Ansvarsfraskrivelse: Jeg har ikke skrevet denne kode, men jeg glemte at bevare en reference, da jeg fusionerede den i min kodebase, så jeg ved ikke, hvor den kom fra.
Funktionen "set_map
", der er beskrevet i begge svar, virker tilsyneladende ikke længere i Google Maps v3 API.
Jeg spekulerer på, hvad der er sket
opdatering:
Det ser ud til, at Google har ændret deres API, således at "set_map
" ikke er "setMap
".
http://code.google.com/apis/maps/documentation/v3/reference.html