No Google Maps API v2, se eu quisesse remover todos os marcadores de mapa, eu poderia simplesmente fazê-lo:
map.clearOverlays();
Como faço isso no Google Maps API **v3***?
Olhando para a API de referência, ela's não está clara para mim.
Parece que ainda não existe tal função na V3.
As pessoas sugerem manter referências a todos os marcadores que você tem no mapa em uma matriz. E então quando você quiser apagar todos, basta fazer um loop através do array e chamar o método .setMap(null) em cada uma das referências.
Veja esta pergunta para mais informações/código.
A minha versão:
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);
}
O código é a versão editada deste código http://www.lootogo.com/googlemapsapi3/markerPlugin.html Eu removi a necessidade de chamar o addMarker manualmente.
Prós
Contras
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();
};
Eu não'não acho que haja um na V3, por isso usei a implementação personalizada acima.
Aviso: Eu não escrevi este código mas esqueci de manter uma referência quando o fundi na minha base de código para que eu não'não saiba de onde ele veio.
O "set_map
" função postada em ambas as respostas parece não funcionar mais na API do Google Maps v3.
O que será que aconteceu?
Actualização:
Parece que o Google mudou a sua API de tal forma que "set_map
" não é "setMap
".
http://code.google.com/apis/maps/documentation/v3/reference.html