Pergunta

Eu só comecei a usar Folheto e Marcador De Clusterer para organizar os marcadores.

Problema #1: Quando um unclustered marcador é clicado, sem pop-up aparece.

Problema #2: Quando um cluster é clicado várias vezes, todos os marcadores dentro do cluster aparece, e quando um marcador é clicado, o seu pop-up aparece!No entanto, depois de fechar o pop-up ao clicar no mapa, clicando em qualquer um desses clusters marcadores não abra qualquer popups!

Se eu só tiver 3 unclustered marcadores, o popup funciona bem.No entanto, quanto mais marcadores são adicionados, uma vez que um cluster de formulários, clicando no marcador dentro de qualquer cluster não fará com que o pop-up para abrir!

Inicializando markerclusterer

markers = new L.MarkerClusterGroup();
map.addLayer(markers);

Todos os marcadores adicionados ao markercluster markers

Um loop chama no render função para criar a marker e adicioná-lo para o markerclusterer da matriz markers. (ignore o backbone.js o código)

ListingMarkerView = Backbone.View.extend({
    template: _.template( $('#tpl_ListingMarkerView').html() ),

    render: function() {

        // Create marker
        var content = this.template( this.model.toJSON() );
        var marker = new L.marker(
            [this.model.get('lat'), this.model.get('lng')],
            {content: content});
        marker.bindPopup(content);

        // Add to markerclusterer
        markers.addLayer(marker);
    }
});

Sem markerclusterer

Se eu adicionar o marker diretamente para map em vez de o markerclusterer matriz markers, o popups funcionam bem, então eu acho que o problema tem algo a ver com markerclusterer.

Eu fiz algo de errado que resultou em tal comportamento do pop-ups?Toda a ajuda é apreciada, obrigado!

Foi útil?

Solução

Do pouco que eu sei do marcador de cluster de grupo, você deve fazer isso:

var markerGroup = new L.MarkerClusterGroup();
markerGroup.on('click', function(ev) {
    // Current marker is ev.layer
    // Do stuff
});

Para adicionar um manipulador de eventos para a camada de cluster em vez disso, fazer isso:

markerGroup.on('clusterclick', function(ev) {
    // Current cluster is ev.layer
    // Child markers for this cluster are a.layer.getAllChildMarkers()
    // Do stuff
});

Ah, e leia o github Leia-me cuidadosamente, está tudo lá...

Outras dicas

Certifique-se de que você tem o direito de versões de tudo no seu Folheto + Clusterer pilha (Js e Css).Compare os exemplos na Clusterer repositório Github.

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