Pregunta

Recién comencé a usar Leaflet y Agrupador de marcadores para organizar los marcadores.

Problema #1: Cuando se hace clic en un marcador no agrupado, no aparece ninguna ventana emergente.

Problema #2: Cuando se hace clic en un grupo varias veces, aparecen todos los marcadores dentro de ese grupo, y cuando se hace clic en uno de estos marcadores, aparece su ventana emergente.Sin embargo, después de cerrar la ventana emergente haciendo clic en el mapa, al hacer clic en cualquiera de estos marcadores agrupados no se abre ninguna ventana emergente.

Si sólo tengo 3 marcadores no agrupados, la ventana emergente funciona bien.Sin embargo, a medida que se agregan más marcadores, una vez que se forma un grupo, hacer clic en el marcador dentro de cualquier grupo no hará que se abra la ventana emergente.

Inicializando el clusterer de marcadores

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

Todos los marcadores agregados al grupo de marcadores markers

Un bucle llama a la render función para crear el marker y agréguelo a la matriz del marcador clusterer markers. (ignore el código backbone.js)

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);
    }
});

Sin marcador clusterer

Si agrego el marker directamente a map en lugar de la matriz marcadorclusterer markers, las ventanas emergentes funcionan bien, así que supongo que el problema tiene algo que ver con el marcador clusterer.

¿Hice algo mal que provocó tal comportamiento en las ventanas emergentes?Se agradece toda la ayuda, ¡gracias!

¿Fue útil?

Solución

Por lo poco que sé del grupo de marcadores de clúster, deberías hacer esto:

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

Para agregar un controlador de eventos a la capa del clúster, haga esto:

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

Ah, y lee el github. LÉAME Cuidado, está todo ahí...

Otros consejos

Asegúrese de tener las versiones correctas de todo en su pila Leaflet + Clusterer (Js y Css).Compare con los ejemplos del repositorio de Clusterer Github.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top