Evento de incêndio após MarkerClusterer terminou
-
13-12-2019 - |
Pergunta
Assim que eu tiver um aplicativo que contém um mapa com (várias centenas) de marcadores.Eu uso o markerclusterer.js fornecido pelo Google para o cluster meu marcadores e fazer a coisa toda mais fácil de ver.Eu estou utilizando a API V3.
Eu estou bem com tudo isso.Mas o que eu gostaria de fazer é realizar alguma ação quando o markerclusterer terminou de cluster de todos os marcadores.Eu tentei fazer isso sozinho, mas sem olhar.
Alguma sugestão?(Eu estou supondo que esta vai ser mais fácil do que eu penso e o meu cérebro é apenas frito)
Solução
Eu só estava me perguntando a mesma coisa.Isso é como eu fiz:
google.maps.event.addListener(markerClusterer, 'clusteringend', myFunction);
Outras dicas
O mapa "IDle" trabalho para você?Deve disparar quando o marcador terminar (supondo que você esteja carregando o marcador quando a página é carregada).
Parece que esta biblioteca não está sendo mantido.Ele não funciona com o v3 corretamente por anos e nenhuma solução foi desenvolvida.
Então, eu baixei o não-ser minimizadas versão e colocá-lo em código-fonte para os projetos em que estou a trabalhar.Solução aceita só vai funcionar(para v3) se você fizer o abaixo alterações diretamente na biblioteca:
encontrar createClusters_ função adicionar google.maps.event.trigger(this, "clusteringend", this);
depois que o loop for.Então, ele vai olhar como abaixo:
MarkerClusterer.prototype.createClusters_ = function() {
if (!this.ready_) {
return;
}
// Get our current map view bounds.
// Create a new bounds object so we don't affect the map.
var mapBounds = new google.maps.LatLngBounds(this.map_.getBounds().getSouthWest(),
this.map_.getBounds().getNorthEast());
var bounds = this.getExtendedBounds(mapBounds);
for (var i = 0, marker; marker = this.markers_[i]; i++) {
if (!marker.isAdded && this.isMarkerInBounds_(marker, bounds)) {
this.addToClosestCluster_(marker);
}
}
google.maps.event.trigger(this, "clusteringend", this);
};
Agora você pode usar:
google.maps.event.addListener(markerClusterer, 'clusteringend', myFunction);