首页 > 解决方案 > 如何将图层设置为已编辑以调用 draw:edited

问题描述

我正在尝试使用 Leaflet.Draw 在地图上手动创建标记。当我使用 Leaflet.Draw 添加标记时,在 draw:created 处理程序中,我想打开一个创建表单的弹出窗口。

远离这里,一切正常,我可以处理并将该弹出窗口和标记的创建保存在数据库中。

这里的转折是当我想编辑它时:

我单击编辑按钮,它使标记可编辑,我单击它以打开带有 form 的弹出窗口。我在弹出窗口中更改消息,单击将调用 draw:edited 处理程序的编辑工具栏保存按钮。

不幸的是,我的标记没有移动,因此不被视为已编辑的图层。

如何将该标记设置为“已编辑”以被 draw:edited 处理程序视为已编辑,即使它没有移动?

事实上,这些处理程序是如何工作的?

标签: javascriptleafleteditleaflet.draw

解决方案


查看 Leaflet.Draw 源,它将dragend事件挂在这样的标记上

_onDragEnd: function (e) {
        var layer = e.target;
        layer.edited = true;
        this._map.fire(L.Draw.Event.EDITMOVE, {layer: layer});
    }    

您可以在代码中设置layer.edited属性(layer标记在哪里)。


推荐阅读