2016-08-23 57 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 –