【问题标题】:Leaflet Marker Cluster add weight to markerLeaflet Marker Cluster 为标记添加权重
【发布时间】:2017-06-13 22:24:10
【问题描述】:

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

基本上我希望有一个类似以下的 clusterWeight 属性:

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

但是,此属性不存在。有人知道解决方法吗?谢谢!

【问题讨论】:

    标签: leaflet markerclusterer


    【解决方案1】:

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

    var weightMarker = L.Marker.extend({
       options: { 
          customWeight: 0
       }
    });
    

    然后您可以使用 Leaflet.markercluster 的 iconCreateFunction 来创建自定义集群标记,方法是更改​​标记上显示的内容:

    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)
            });
        }
    });
    

    演示:https://jsfiddle.net/chk1/0hq1t13t/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-13
      • 1970-01-01
      相关资源
      最近更新 更多