2017-10-21 93 views
1

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); 

}); 

但現在它的發射多次,當我點擊地圖並返回所有已編輯的形狀。 檢測事件並返回編輯的形狀的正確方法是什麼?

回答

0

你可以試試下面的代碼:

$('#map').on('click', '.leaflet-popup-toolbar',() => {console.log('click')}) 
+0

感謝您的回覆。您的代碼只是檢測彈出菜單上的點擊事件。但我想知道執行了哪個操作(刪除或編輯),以及刪除或編輯了哪個多邊形。我糾正了這個問題。 – dabajabaza

相關問題