传单标记点击时不会打开弹出窗口
-
11-12-2019 - |
题
我刚刚开始使用传单 标记聚类器 组织标记。
问题#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 存储库中的示例进行比较。
不隶属于 StackOverflow