javascript - 如何检测使用 Leaflet-draw-toolbar 插件创建的弹出菜单中的 "delete"或 "edit"事件?

标签 javascript leaflet gis toolbar leaflet.draw

this example您可以创建一个多边形,然后单击它并显示弹出菜单。有三个按钮:编辑、删除和选择颜色。如何检测事件并确定在弹出菜单中执行了哪个事件(删除或编辑)?我想在执行其中一个事件时执行一些操作,例如当编辑或删除多边形时。标准方法:

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

});

但是现在,当我单击 map 并返回所有已编辑的形状时,它会被多次触发。 检测事件并返回已编辑形状的正确方法是什么?

最佳答案

您可以尝试以下代码:

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

关于javascript - 如何检测使用 Leaflet-draw-toolbar 插件创建的弹出菜单中的 "delete"或 "edit"事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46861574/

相关文章:

javascript - 检查 undefined variable 与错误变量

javascript - 何时使用 Knex transacting() 与链接 trx 对象

r - 使用 gbuffer 缓冲 R 中的(地理)空间点

javascript - jQuery MultiSelect 插件 SumoSelect 未绑定(bind)到单个页面上的多个实例

javascript - 如何嵌入具有自定义高度的全屏响应式 YouTube 视频

javascript - 如何在传单中显示单个国家多边形并将其居中?

r - 尝试从 CSV 数据构建 map 。只是得到没有数据点的空白 map

javascript - IF 在 ELSE 被接受后不起作用(潜在的 Leaflet.Draw 问题)

php - 固定成本 map 库或服务?

mysql:使用 st_distance_sphere 给出 OK 但没有结果