我刚刚开始使用传单 标记聚类器 组织标记。

问题#1: 单击非聚集标记时,不会出现弹出窗口。

问题#2: 当多次单击一个簇时,该簇内的所有标记都会出现,并且当单击该标记之一时,会出现其弹出窗口!但是,通过单击地图关闭弹出窗口后,单击任何这些聚集标记都不会打开任何弹出窗口!

如果我只有 3 个非聚集标记,则弹出窗口可以正常工作。但是,随着添加更多标记,一旦形成簇,单击任何簇内的标记将不会导致弹出窗口打开!

初始化标记簇

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

添加到标记簇的所有标记 markers

循环调用 render 函数来创建 marker 并将其添加到markerclusterer的数组中 markers. (忽略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);
    }
});

没有标记聚类

如果我添加 marker 直接到 map 而不是markerclusterer数组 markers, ,弹出窗口工作正常,所以我猜问题与markerclusterer有关。

我是否做错了什么导致弹出窗口的这种行为?感谢所有帮助,谢谢!

有帮助吗?

解决方案

根据我对聚类标记组的了解,您应该这样做:

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

要将事件处理程序添加到集群层,请执行以下操作:

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

哦,还有阅读 github 自述文件 仔细一看,里面全是...

其他提示

确保 Leaflet + Clusterer 堆栈(Js 和 Css)中的所有内容都有正确的版本。与 Clusterer Github 存储库中的示例进行比较。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top