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