En la API de Google Maps v2, si quería eliminar todos los marcadores del mapa, simplemente podía hacerlo:
map.clearOverlays();
¿Cómo puedo hacer esto en Google Maps API v3?
Mirando la API de referencia, no me queda claro.
Parece que todavía no existe esta función en la V3.
La gente sugiere mantener las referencias a todos los marcadores que tiene en el mapa en una matriz. Y luego, cuando quieras eliminarlos todos, sólo tienes que recorrer el array y llamar al método .setMap(null) en cada una de las referencias.
Ver esta pregunta para más información/código
Mi versión:
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);
}
El código es una versión editada de este código http://www.lootogo.com/googlemapsapi3/markerPlugin.html He eliminado la necesidad de llamar a addMarker manualmente.
Pros
Cons
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();
};
No creo que haya uno en la V3, así que usé la implementación personalizada anterior.
Descargo de responsabilidad: Yo no escribí este código, pero me olvidé de mantener una referencia cuando lo fusioné en mi base de código, así que no sé de dónde vino.
La función "set_map`" publicada en ambas respuestas parece que ya no funciona en la API de Google Maps v3.
Me pregunto qué ha pasado
Actualización:
Parece que Google cambió su API de tal manera que "set_map" no es "setMap
".
http://code.google.com/apis/maps/documentation/v3/reference.html