Usando openPopup() com Leaflet.js + Clustering
-
10-12-2019 - |
Pergunta
Estou usando a fantástica biblioteca de mapeamento OpenStreetMap leaflet.js há algum tempo e acabei de começar a implementar este plugin de cluster.Estou funcionando bem com um projeto atual, que carrega diferentes camadas no mapa e em uma barra lateral clicável.
O único problema é que se eu clicar em um item da barra lateral e o marcador correspondente estiver em um objeto de cluster, recebo um erro.Eu resolvi isso verificando se há um erro (usando try/catch) e aplicando zoom para que a camada fique visível como abaixo:
$('.item').click(function() {
currentlayer = this.id;
...
try {
geojson._layers[currentlayer].openPopup();
} catch(e) {
map.setView(geojson._layers[currentlayer]._latlng, 16);
geojson._layers[currentlayer].openPopup();
}
...
return false;
});
O único problema é que recebo o mesmo erro ao tentar executar o método openPopup() após aplicar zoom, embora, se eu clicar na barra lateral novamente, o pop-up apareça corretamente.Você pode vê-lo em ação aqui:
http://www2.lichfielddc.gov.uk/myarea/map2.php
Alguma ideia?
Solução
Sim, tive o mesmo problema com esse plugin.Então desenvolvi o meu próprio, que deve posicionar os pop-ups corretamente.Também estou criando alguns eventos, para que você possa executar algum código quando um cluster for clicado ou evitar que o nível de zoom seja alterado.
https://github.com/cavis/leafpile
Além disso, estou trabalhando em um projeto semelhante ao seu. https://github.com/cavis/slidemapper.É um plugin jquery para criar uma apresentação de slides que acompanha um mapa.Estou trabalhando na integração do meu plugin leafpile diretamente nele.
Outras dicas
Talvez você tenha que ampliar a camada de cluster usando zoomToShowLayer
: