Google Maps API V3 - Como remover ícones de cluster?
-
27-09-2019 - |
Pergunta
Como posso remover todos os ícones de cluster (marcadores de cluster) do mapa? tentei com conselhos como:
Google Maps API V3: Como remover todos os marcadores?
... mas não funcionou.
Você pode me ajudar como conseguir isso?
Agradeço antecipadamente!
Atualização (2010-11-23)
Os marcadores são armazenados em matriz com
var markersClust = Array();
... e são adicionados com (combinação com PHP):
markersClust.push(marker_<?php echo $team["Team"]["id"]; ?>);
var markerClusterer = new MarkerClusterer(MyMap.map, markersClust, clusterOptions);
E funciona bem.
Mas, não posso removê -los de um mapa, e isso me leva ...
tentei remover marcadores (e eu fiz) com
for ( var i=0; i < markersClust.length; i++) {
markersClust[i].setMap(null);
}
markersClust = [];
Mas os ícones de cluster são postos no mapa.
Também tentei coisas como:
markerClusterer.clearMarkers();
e gosto
MyMap.preventDefault();
MyMap.stopPropagation();
MyMap.clearMarkers();
Mas, novamente, os ícones dos clusters ainda estão lá, em um mapa.
O que mais preciso fazer para remover esses ícones de cluster do meu mapa? por favor ajude...
Solução
Itera sobre cada marcador e defina o mapa desse marcador para NULL. Isso removerá o marcador do mapa.
Outras dicas
Esta é a maneira certa de fazer isso:
// Unset all markers
var i = 0, l = markers.length;
for (i; i<l; i++) {
markers[i].setMap(null)
}
markers = [];
// Clears all clusters and markers from the clusterer.
markerClusterer.clearMarkers();
Demo: http://jsfiddle.net/hoffz/gezxx/
Documentação: https://googlemaps.github.io/js-marker-clusterer/docs/reference.html
Eu também tive o mesmo problema. Eu o corrigi declarando apenas meu Markerclusterrer uma vez durante a inicialização:
markerCluster = new MarkerClusterer(map);
Isto é o que eu faço. Tenho muitos marcadores, mas quando eu mudo para o mapa de calor, quero remover todos os marcadores e cluster. Quando eu crio marcador, adiciono -o à matriz de marcadores globais
markers.push(marker);
Eu defino cluster como este
markerCluster = new MarkerClusterer(map, markers);
markerCluster.setIgnoreHidden(true);
Quando eu clico no botão para mostrar o mapa de calor
$.each(markers, function(k, v){
v.setVisible(false);
});
markerCluster.repaint();
Quando repaint()
é chamado com ignorar oculto, ele esconde todos os ícones de cluster.