在this example中,您可以創建一個多邊形,然後單擊它並彈出菜單顯示。有三個按鈕:編輯,刪除和選擇一種顏色。如何檢測事件並確定它是哪一個 - 刪除或編輯 - 在彈出菜單中執行?我想在執行其中一個事件時執行一些操作,例如,當一個多邊形被編輯或刪除時。它的標準方式:如何檢測使用Leaflet-draw-toolbar插件創建的彈出式菜單中的「刪除」或「編輯」事件?
map.on('draw:created', function (evt) {
layer = evt.layer;
// do something when polygon is created
});
map.on('draw:edited', function (evt) {
layer = evt.layer;
// do something when polygon is edited
});
map.on('draw:deleted', function (evt) {
layer = evt.layer;
// do something when polygon is deleted
});
但是對於彈出菜單中的事件它不起作用。
所以我在我的腳本文件編輯文件leaflet.draw-toolbar.js
並添加我的自定義事件現在'draw-popup:edited'
LeafletToolbar.EditAction.Popup.Edit = LeafletToolbar.ToolbarAction.extend({
...
map.on('click', function() {
shape.editing.disable();
shape.fire('draw-popup:edited', shape);
});
...
});
我能夠檢測'draw-popup:edited'
事件
layer.on('draw-popup:edited', function() {
var geom = this.toGeoJSON();
console.log(geom);
});
但現在它的發射多次,當我點擊地圖並返回所有已編輯的形狀。 檢測事件並返回編輯的形狀的正確方法是什麼?
感謝您的回覆。您的代碼只是檢測彈出菜單上的點擊事件。但我想知道執行了哪個操作(刪除或編輯),以及刪除或編輯了哪個多邊形。我糾正了這個問題。 – dabajabaza