3

我想在传单地图上(使用 Leaflet.markercluster 插件)向(随后)聚集图标添加一个点击事件。事件本身有效,但警报总是为每个单击的图标生成数组的最后一个元素。我看不出原因。将“标记”声明为数组并没有改变结果。

    map.clearLayers;

    var marker = [];

    var markers = L.markerClusterGroup({
        disableClusteringAtZoom: 10,
        spiderfyOnMaxZoom: true,
        chunkedLoading: true
    });

    for (id in reclist) {       
        var posn = reclist[id]['info'][1];
        var pose = reclist[id]['info'][2];
        var title = reclist[id]['info'][0];
        var mapicon = L.icon({iconUrl: 'url of icon');  

        marker[id] = new L.marker(new L.LatLng(posn, pose), {icon: mapicon})
        .on('click', function(){alert(title)});

        markers.addLayer(marker[id]);

    }

    map.addLayer(markers); 
4

1 回答 1

4

为此有特殊事件:请参阅文档

markers.on('clusterclick', function() {});

请注意,这是您的集群的一个事件。所以它没有在你的循环中定义。

var markers = L.markerClusterGroup({ ... });
markers.on('clusterclick', function() { ... });
for (id in reclist) { ... }

如果我误解了您的问题并且您想为每个标记定义一个点击事件:如果您想显示标题,则不能像您一样使用该变量。应该这样做:

var title = reclist[id]['info'][0];   
var marker = new L.marker(new L.LatLng(posn, pose), {icon: mapicon});
marker.title = title;
marker.on('click', function(e){alert(e.target.title)});

这是一个例子

于 2016-06-12T13:45:51.543 回答