markerclusterer - 单击时传单标记不会打开弹出窗口

标签 markerclusterer openstreetmap leaflet mapbox

我刚开始使用 Leaflet 和 Marker Clusterer组织标记。

问题 #1: 当点击未成簇的标记时,没有弹出窗口出现。

问题 #2: 当一个集群被点击几次时,该集群内的所有标记都会出现,而当其中一个标记被点击时,它的弹出窗口会出现!但是,在通过单击 map 关闭弹出窗口后,单击这些群集标记中的任何一个都不会打开任何弹出窗口!

如果我只有 3 个未聚集的标记,弹出窗口工作正常。但是,随着添加的标记越来越多,一旦集群形成,在任何集群中单击标记都不会导致弹出窗口打开!

正在初始化markerclusterer

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

添加到markercluster的所有标记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);
    }
});

没有markerclusterer

如果我将 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 README小心点,都在里面……

关于markerclusterer - 单击时传单标记不会打开弹出窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12659137/

相关文章:

javascript - Leaflet js中的父多边形

javascript - 单击 map 外部时传单缩放 map

r - 如何将质心(标记)的数据分配给它所属的voronoi/thiessen多边形? (右)

android-我如何在 "Android"的谷歌地图中实现集群管理器时获得确切的数字请给我正确的答案,如果有人有...?

javascript - 获取markerclusterer集群

OpenstreetMap + Leaflet 和 CloudMade

python - 如何获得 {{geocodeArea : xxx }} query to work in python using overpy?

javascript - 如何在 map 循环 Leaflet JS 上复制标记位置

javascript - 如何从谷歌地图中的集群中分离出一个特殊标记?

javascript - 在 Nokia/Here Maps Javascript API 中使用 ClusterProvider,无效的簇号