2016-08-23 70 views
0

电流消耗插件的行为,是每一个新的绘图层添加到地图:如何删除上一层时画新?

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

假设你要删除地图上的所有层,你可以在你的"draw:created"事件侦听器开始使用类似一个代码:

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

(但我认为这也将删除你的瓷砖层,所以也许你应该在那里添加一些检查)

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

drawnItems.clearLayers(); 
+0

我应该在'map.eachLayer'期间检查什么类型? –

+0

可能像'layer!== myTileLayer'。但我会建议使用功能组,以便您可以简单地清除该组中的所有内容。 – ghybs

+0

ghybs,你的意思是? https://github.com/ghybs/Leaflet.FeatureGroup.SubGroup –