首页 文章

无法在leaflet.js中删除具有群集的图层

提问于
浏览
2

我正在使用leaflet cluster plugin来绘制一堆崩溃 . 当您加载页面时,我会映射所有崩溃(存储在GeoJSON文件中) . 我也有按钮,每年加载一个不同的geoJSON文件 .

我遇到的问题是removeLayer()实际上并没有删除图层 . 因此,当我重新映射一个新的GeoJSON文件时,它只是将所有崩溃堆叠在一起 .

这是我点击按钮时触发的两个功能 . var标记在全局命名空间中定义,如下所示(也许这是问题的一部分)?

var markers = L.markerClusterGroup({spiderfyDistanceMultiplier: 1.3});

//Lay new data on map
function buildMarkers(yearData){
        var crashLayer = new L.geoJson(yearData, {
                onEachFeature: function (feature, layer) {
                    layer.bindPopup(feature.properties.year);
                }
        });
        markers.addLayer(crashLayer);
        map.addLayer(markers);

    }

//Remove ALL data on map        
function removeClusters(){
        map.removeLayer(markers)
    }

//AN example of a button
$("#twelve").click(function(e){
        e.preventDefault();
        $('a').removeClass('selected');
        $(this).addClass('selected');
        removeClusters();
        buildMarkers(twelveCrashes);
    });

2 回答

  • 12

    刚想通了 .

    要清除markers变量中的所有数据,我使用了clearLayers() . 所以在我的buildMarkers()函数中,我只是将它添加到函数的第一行

    markers.clearLayers();
    

    并清除所有数据 .

  • 0

    我们可以通过使用 disableClusteringAtZoom 删除集群层来指定我们可以删除集群的标签

    var markers = L.markerClusterGroup({disableClusteringAtZoom: 17, spiderfyOnMaxZoom: false, showCoverageOnHover: true, zoomToBoundsOnClick: true });
    

相关问题