3

我正在使用传单集群插件来绘制一堆崩溃。当您加载页面时,我会绘制出所有崩溃(存储在 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);
    });
4

2 回答 2

15

刚刚想通了。

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

markers.clearLayers();

这会清除所有数据。

于 2013-09-09T20:54:39.583 回答
0

我们可以通过使用disableClusteringAtZoom需要指定可以删除聚类的标签来删除聚类层

var markers = L.markerClusterGroup({disableClusteringAtZoom: 17, spiderfyOnMaxZoom: false, showCoverageOnHover: true, zoomToBoundsOnClick: true }); 
于 2018-03-13T07:14:57.337 回答