首页 > 解决方案 > Leaflet geoman setLatLngs 未将对象恢复到 getLatLngs 位置

问题描述

我有一个问题,当传单 geoman 删除例如多边形上的顶点时,我无法恢复对象的 latLngs。

我在做什么:在对象上单击 -> object.getLatLngs()。工作正常。

如果我开始编辑对象然后object.setLatLngs(ObjectClickLatLngs)它工作正常。

但问题是:单击对象-> 开始编辑-> 右键单击​​顶点(删除顶点)-> object.setLatLngs(ObjectclickLatLngs)。现在顶点被删除并且没有恢复到之前的纬度。

尝试单击多边形,更改顶点然后单击“将对象恢复到初始位置”(按预期工作)然后单击多边形,但右键单击顶点(删除)而不移动它,然后单击“将对象恢复到初始位置”(现在对象不在应有的状态,预计它会恢复到与初始相同的位置)

https://jsfiddle.net/6tzxg2ds/2/

标签: leafletleaflet-geoman

解决方案


问题是 JavaScript 将变量引用到源,所以当层的 latlng 改变时,restoreLatLngs 也会更新。

你可以用这个“摧毁”参考:

restoreLatLngs = JSON.parse(JSON.stringify(x.target.getLatLngs()));

推荐阅读