Folheto marcadores de não abrir pop-up, clique no
-
11-12-2019 - |
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!
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.