javascript - 如何将图层设置为已编辑以调用 draw:edited
问题描述
我正在尝试使用 Leaflet.Draw 在地图上手动创建标记。当我使用 Leaflet.Draw 添加标记时,在 draw:created 处理程序中,我想打开一个创建表单的弹出窗口。
远离这里,一切正常,我可以处理并将该弹出窗口和标记的创建保存在数据库中。
这里的转折是当我想编辑它时:
我单击编辑按钮,它使标记可编辑,我单击它以打开带有 form 的弹出窗口。我在弹出窗口中更改消息,单击将调用 draw:edited 处理程序的编辑工具栏保存按钮。
不幸的是,我的标记没有移动,因此不被视为已编辑的图层。
如何将该标记设置为“已编辑”以被 draw:edited 处理程序视为已编辑,即使它没有移动?
事实上,这些处理程序是如何工作的?
解决方案
查看 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
标记在哪里)。