Leaflet.js: How to remove multiple layers from map

后端 未结 3 1429
囚心锁ツ
囚心锁ツ 2021-02-08 12:18

I am using Leaflet.js for a map. Now I want to remove added layers from the map. By clicking the input #button all checked checkboxes shall be changed to unchecked and all corre

相关标签:
3条回答
  • 2021-02-08 12:21

    According to the Leaflet API doc http://leafletjs.com/reference.html#map-removelayer, removeLayer takes an ILayer parameter: removeLayer( <ILayer> layer ) but you're passing it a String: $(this).attr("id")

    It looks like you do have the layer object in a variable already: mapcat52. You could save the layer objects when you create them, then look them up by id to pass to removeLayer:

    var layers = new Array();
    
    // create layer
    var mapcat52 = new MyCustomLayer(latlng);
    
    // save to layers list
    layers["mapcat52"] = mapcat52;
    ...
    
    // remove layers
    $.each(someObj.idsChecked, function(id, val) {
        // look up layer object by id
        var layerObj = layers[val];
        // remove layer
        map.removeLayer(layerObj); 
    });
    
    0 讨论(0)
  • 2021-02-08 12:24

    I would say the easiest way to remove/add (toggle) layers from the map would be to use a LayerGroup.

    Before adding individual layers to the map, add them to a LayerGroup instead and then add that LayerGroup to your map.

    Then when you have to remove the layers, just call the clearLayers() function.

    Check out the API for LayerGroup http://leafletjs.com/reference.html#layergroup

    Example

    var map = L.map('leafletMap', {minZoom:11}).setView([37.8, -96], 11);
    var assetLayerGroup = new L.LayerGroup();
    var marker1 = L.marker([39.61, -105.02]).bindPopup('This is Littleton, CO.');
    var marker2 = L.marker([39.74, -104.99]).bindPopup('This is Denver, CO.'),
    assetLayerGroup.addLayer(marker1);
    assetLayerGroup.addLayer(marker2);
    

    When remove checkbox is checked

    assetLayerGroup.clearLayers();
    
    0 讨论(0)
  • 2021-02-08 12:27

    I wrote the below example to show how to remove multiples geoJSON layer.

    ///adding geoJSON data

          var myGeoJSON = L.geoJSON(myData, {
    
            onEachFeature: function (feature, layer) {
                layer.myTag = "myGeoJSON"
            }
    
        });
    

    ////// function to remove geoJSON layers

    var removeMarkers = function() {
        map.eachLayer( function(layer) {
    
          if ( layer.myTag &&  layer.myTag === "myGeoJSON") {
            map.removeLayer(layer)
              }
    
            });
    
    }
    

    //// calling function

    removeMarkers();

    0 讨论(0)
提交回复
热议问题