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?

Foi útil?

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 :

https://github.com/Leaflet/Leaflet.markercluster/issues/75

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top