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);
并说出我要删除之前的图层,而不是当前图层。
答案 0 :(得分:1)
假设您要删除地图上的所有图层,您可以使用与"draw:created"
事件监听器开头类似的代码:
map.eachLayer(function (layer) {
map.removeLayer(layer);
});
(但我认为这也会删除你的Tile Layers,所以也许你应该在那里添加一些支票)
如果您使用中间drawnItems
功能组,您还可以使用.clearLayers()
方法:
drawnItems.clearLayers();