gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 07:22:16 25 4
gpt4 key购买 nike

我刚开始使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com