Leaflet 小叶标记簇增加标记的权重

Leaflet 小叶标记簇增加标记的权重,leaflet,markerclusterer,Leaflet,Markerclusterer,我有一张传单地图,我正在使用传单.markerCluster插件对我的标记进行聚类。我有一些表示同一位置上多个点的标记。不幸的是,当它聚集在一起时,它只代表一个点。有没有办法为每个标记添加权重?因此集群将其视为多个点 基本上,我希望有一个clusterWeight属性,如下所示: var newMarker = L.marker(coordinates, { icon: myIcon, clusterWeight: 5 }); 然

我有一张传单地图,我正在使用传单.markerCluster插件对我的标记进行聚类。我有一些表示同一位置上多个点的标记。不幸的是,当它聚集在一起时,它只代表一个点。有没有办法为每个标记添加权重?因此集群将其视为多个点

基本上,我希望有一个clusterWeight属性,如下所示:

var newMarker = L.marker(coordinates, {
            icon: myIcon,
            clusterWeight: 5
        });

然而,这种属性并不存在。有人知道附近有工作吗?谢谢

首先,您需要创建一个支持自定义属性的标记。您可以通过扩展默认的
L.Marker
来实现这一点,如下所示:

var weightMarker = L.Marker.extend({
   options: { 
      customWeight: 0
   }
});
然后,您可以通过更改标记上显示的内容,使用传单.markercluster创建自定义簇标记:

var markers = L.markerClusterGroup({
    iconCreateFunction: function(cluster) {
        // iterate all markers and count
        var markers = cluster.getAllChildMarkers();
        var weight = 0;
        for (var i = 0; i < markers.length; i++) {
            if(markers[i].options.hasOwnProperty("customWeight")){
            weight += markers[i].options.customWeight;                
          }
        }

        var c = ' marker-cluster-';
        if (weight < 10) {
            c += 'small';
        } else if (weight < 100) {
            c += 'medium';
        } else {
            c += 'large';
        }
        // create the icon with the "weight" count, instead of marker count
        return L.divIcon({ 
            html: '<div><span>' + weight + '</span></div>',
            className: 'marker-cluster' + c, iconSize: new L.Point(40, 40)
        });
    }
});
var markers=L.markerClusterGroup({
iconCreateFunction:函数(群集){
//迭代所有标记并计数
var markers=cluster.getAllChildMarkers();
变量权重=0;
对于(var i=0;i

演示:

首先,您需要创建一个支持自定义属性的标记。您可以通过扩展默认的
L.Marker
来实现这一点,如下所示:

var weightMarker = L.Marker.extend({
   options: { 
      customWeight: 0
   }
});
然后,您可以通过更改标记上显示的内容,使用传单.markercluster创建自定义簇标记:

var markers = L.markerClusterGroup({
    iconCreateFunction: function(cluster) {
        // iterate all markers and count
        var markers = cluster.getAllChildMarkers();
        var weight = 0;
        for (var i = 0; i < markers.length; i++) {
            if(markers[i].options.hasOwnProperty("customWeight")){
            weight += markers[i].options.customWeight;                
          }
        }

        var c = ' marker-cluster-';
        if (weight < 10) {
            c += 'small';
        } else if (weight < 100) {
            c += 'medium';
        } else {
            c += 'large';
        }
        // create the icon with the "weight" count, instead of marker count
        return L.divIcon({ 
            html: '<div><span>' + weight + '</span></div>',
            className: 'marker-cluster' + c, iconSize: new L.Point(40, 40)
        });
    }
});
var markers=L.markerClusterGroup({
iconCreateFunction:函数(群集){
//迭代所有标记并计数
var markers=cluster.getAllChildMarkers();
变量权重=0;
对于(var i=0;i
演示: