如何在绘制新图层时删除上一图层?

时间:2016-08-23 11:35:39

标签: leaflet

Draw插件的当前行为是将每个新绘图图层添加到地图中:

map.on('draw:created', function (e) {
    var type = e.layerType,
        layer = e.layer;

    if (type === 'marker') {
        // Do marker specific actions
    }

    // Do whatever else you need to. (save to db, add to map etc)
    map.addLayer(layer);
});

但是如何改进此代码以便在用户绘制新图层时删除每个上一层?我无法理解如何调用:map.removeLayer(layer);并说出我要删除之前的图层,而不是当前图层。

1 个答案:

答案 0 :(得分:1)

假设您要删除地图上的所有图层,您可以使用与"draw:created"事件监听器开头类似的代码:

map.eachLayer(function (layer) {
  map.removeLayer(layer);
});

(但我认为这也会删除你的Tile Layers,所以也许你应该在那里添加一些支票)

如果您使用中间drawnItems功能组,您还可以使用.clearLayers()方法:

drawnItems.clearLayers();