【问题标题】:Mapbox - clustering only markers on the same coordinatesMapbox - 仅在相同坐标上聚类标记
【发布时间】:2015-12-26 07:25:02
【问题描述】:

是否可以仅将标记聚集在同一坐标上? 使用 mapbox 标记聚类时,所有标记都根据地图缩放级别进行分组。我想做的是让所有标记独立(非分组),除了相同经纬度坐标上的标记。

这可能吗?

【问题讨论】:

  • 这不是聚类(参见维基百科),而是重复坐标检测,一个更简单的问题。
  • 你读过我的帖子吗?任务是对具有相同坐标的标记进行分组,不要对其他标记进行分组。
  • 是的。您想要对重复项进行分组,并且不进行聚类,但您的问题标题显示为“聚类”(参见 Wikipedia for clustering)
  • 显而易见(并且可能是最好的)解决方案是在将重复坐标添加到地图之前将它们合并为单个标记。

标签: mapbox markerclusterer


【解决方案1】:

这不是一个完美的解决方案,但它会完成工作...... 我通过使用两个图层组解决了我的问题,一个用于单个标记,一个用于集群标记。

类似这样的:

var overlay1 = L.layerGroup().addTo(map);//this one is for single markers
var overlay2 = L.layerGroup().addTo(map);//this one is for clustered

var layers;


//load markers from external source
var featureLayer = L.mapbox.featureLayer()

.loadURL('/my_geojson_script/')

.on('ready', function(e) {

    layers = e.target;

    //go and do the filtering
    doTheThing();



})





function doTheThing()

    overlay1.clearLayers();//remove all single markers
    overlay2.clearLayers();//remove all clustered

    var clusterGroup = new L.MarkerClusterGroup().addTo(overlay2);



    layers.eachLayer(function(layer) {


        //the number of markers on this layer coordinates (info collected from json property. I calculate this in advance)
        var numberOfMarkers = layer.feature.properties.numberOfMarkers;


        //if number of markers is greater than 1 add layer to cluster group         
        if(numberOfMarkers>1){

            clusterGroup.addLayer(layer);
        }
        else{//if number of markers is 1 add layer to individual layer group

            overlay1.addLayer(layer);
        }




    }); 
}

【讨论】:

    猜你喜欢
    • 2020-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-27
    • 2020-11-20
    相关资源
    最近更新 更多