Ak som chcel v rozhranie Google Maps API v2 odstrániť všetky mapové značky, mohol som jednoducho urobiť:
map.clearOverlays();
Ako to urobím v rozhraní Google Maps API v3?
Pri pohľade na Reference API mi to nie je jasné.
Zdá sa, že takáto funkcia vo V3 zatiaľ nie je.
Ľudia navrhujú uchovávať odkazy na všetky značky, ktoré máte na mape, v poli. A potom, keď ich chcete všetky vymazať, stačí prechádzať pole v slučke a zavolať metódu .setMap(null) na každý z odkazov.
Viac informácií/kód nájdete v tejto otázke.
Moja verzia:
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);
}
Kód je upravená verzia tohto kódu http://www.lootogo.com/googlemapsapi3/markerPlugin.html Odstránil som potrebu ručného volania addMarker.
Klady
Nevýhody
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();
};
Myslím, že vo V3 nie je, takže som použil vyššie uvedenú vlastnú implementáciu.
Upozornenie: Tento kód som nenapísal ja, ale zabudol som zachovať odkaz, keď som ho začleňoval do svojej databázy, takže neviem, odkiaľ sa vzal.
Zdá sa, že funkcia "set_map
" uverejnená v oboch odpovediach už nefunguje v rozhraní Google Maps v3 API.
Zaujímalo by ma, čo sa stalo
Aktualizácia:
Zdá sa, že Google zmenil svoje API tak, že "set_map
" nie je "setMap
".
http://code.google.com/apis/maps/documentation/v3/reference.html