我刚刚开始使用Leaflet和Marker Clusterer来组织标记。
问题#1:点击非聚集标记时,不会显示任何弹出窗口。
问题#2:多次点击群集时,会显示该群集中的所有标记,当点击其中一个标记时,会显示其弹出窗口!但是,在通过单击地图关闭弹出窗口后,单击任何这些聚簇标记都不会打开任何弹出窗口!
如果我只有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有关。
我做错了导致弹出窗口的这种行为吗?所有帮助表示感谢,谢谢!
答案 0 :(得分:2)
从我对集群标记组的了解很少,你应该这样做:
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,它就在那里......
答案 1 :(得分:0)
确保您的Leaflet + Clusterer堆栈(Js和Css)中的所有内容都正确。与Clusterer Github repo中的示例进行比较。