如何从本地定义的geoJSON中聚类标记?

时间:2016-04-30 00:31:16

标签: javascript mapbox

我正在尝试做一些与this非常相似的事情。但是,我有一个本地定义的geojson geojson和一个地图map;我的代码如下:

L.mapbox.featureLayer(geojson).on('ready', function(e) {
    var clusterGroup = new L.MarkerClusterGroup({
        iconCreateFunction: function(cluster) {
            return L.mapbox.marker.icon({
                'marker-symbol': cluster.getChildCount(),
             });
        }
    });
    e.target.eachLayer(function(layer) {
        clusterGroup.addLayer(layer);
    });
    map.addLayer(clusterGroup);
});

我在控制台中没有错误但我在地图上看不到任何聚类。我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

如果通过本地定义',您的意思是geojson只是一个变量并且不会被加载,此代码的问题在于它仍在使用.on('ready'打回来。该回调取决于异步加载 - 当Mapbox.js请求外部资源时。由于没有请求,因此不会调用回调。相反,你要写:

var featureLayer = L.mapbox.featureLayer(geojson);
var clusterGroup = new L.MarkerClusterGroup({
    iconCreateFunction: function(cluster) {
        return L.mapbox.marker.icon({
            'marker-symbol': cluster.getChildCount(),
         });
    }
});
featureLayer.eachLayer(function(layer) {
    clusterGroup.addLayer(layer);
});
map.addLayer(clusterGroup);