Leaflet 正在删除geojson图层Mapbox.js/slipal.js

Leaflet 正在删除geojson图层Mapbox.js/slipal.js,leaflet,mapbox,Leaflet,Mapbox,一次删除多个geojson层时遇到问题。当我将它们保留为要素图层时,添加的每个图层都有内存,一个接一个。但当它们成为标记层时,只有最后单击的层被删除 我尝试将它们添加到一个组中,并在组中调用clearLayers,但这仍然只删除最后添加的层,而不是全部。也试过传递身份证,但似乎也没用 $(function() { var geojson; var map = L.mapbox.map('map') .setView([29.96

一次删除多个geojson层时遇到问题。当我将它们保留为要素图层时,添加的每个图层都有内存,一个接一个。但当它们成为标记层时,只有最后单击的层被删除

我尝试将它们添加到一个组中,并在组中调用clearLayers,但这仍然只删除最后添加的层,而不是全部。也试过传递身份证,但似乎也没用

    $(function() {

        var geojson;

        var map = L.mapbox.map('map')
            .setView([29.9629, -90.0603], 6);

        var filters = document.getElementById('filters');

        var layerTwo = L.mapbox.featureLayer()
            .loadURL('panel/data/tamorethan5.geojson')
            .on('ready', layer)
        var layerOne = L.mapbox.featureLayer()
            .loadURL('panel/data/talessthan5.geojson')
            .on('ready', layer)
        var layerThree = L.mapbox.featureLayer()
            .loadURL('panel/data/palessthan5.geojson')
            .on('ready', layer)
        var layerFour = L.mapbox.featureLayer()
            .loadURL('panel/data/pamorethan5.geojson')
            .on('ready', layer)

        function layer() {
            var assetLayerGroup = new L.LayerGroup();

            var layer = this
            var name = layer.getGeoJSON().name;
            var item = filters.appendChild(document.createElement('div'));
            var checkbox = item.appendChild(document.createElement('input'));
            var label = item.appendChild(document.createElement('label'));
            checkbox.type = 'checkbox';
            checkbox.name ='radio';
            checkbox.id = 'myCheckbox';
            checkbox.value = name;
            label.innerHTML = name;
            label.class = label;
            label.setAttribute('for', name);
            checkbox.addEventListener('change', update);

            function update(val) {
                if (checkbox.checked) {
                console.log(layer)
                drawLocations(layer._geojson)
                } else {
                newMapLayer.clearLayers();

                }
            }

            drawLocations = function(layer) {
                L.stamp(layer)
                newMapLayer = L.geoJson(layer, {
                    style: style,
                    onEachFeature: onEachFeature,
                    pointToLayer: function(feature, latlng) {
                        var rad = 3;
                        var col = getColor(feature.properties, 'status');
                        return L.circleMarker(latlng, {
                            radius: rad,
                            fillColor: "#ff7800",
                            stroke: true,
                            weight: 2,
                            opacity: 0.8,
                            fillOpacity: 0.8,
                            className: "circle"
                        });
                    }


                }).addTo(map);

            };
        } //end layer

嗯,好的-这里需要或推荐一些调整:

drawLocations(layer._geojson)
任何在传单或地图框中以下划线开头的内容都应视为禁止进入。改用.getGeoJSON方法

drawLocations(layer.getGeoJSON());
看起来您并不是在向
assetLayerGroup
添加层。如果你想这么做,你会打电话的

var assetLayerGroup = L.layerGroup().addTo(map);
就在那之后

行,而不是在
L.geoJson
层上调用
.addTo(map)
,而是调用
.addTo(assetLayerGroup)

然后调用
assetLayerGroup.clearLayers()
将删除所有添加的层

    var map = L.mapbox.map('map')
        .setView([29.9629, -90.0603], 6);