我正在使用“橡皮擦”功能,该功能不断使用feature.setGeometry()
修改要素几何,如下所示:
【testB】:
无
首先选择功能,然后选择“橡皮擦”要修改的功能很简单,因此很难看到testA和testB之间的性能差异。但是,如果要修改的功能足够复杂,则显而易见,testA比testB更加不稳定。
[使用chrome devtools的性能工具检查后,发现在testA中,将调用Modify.js中的方法handleFeatureChange_
。
handleFeatureChange_
方法首先删除,然后立即添加回相同的功能,这种行为是否必要? [我尝试过删除this.removeFeature_(feature)
和this.addFeature_(feature)
之后,无论是testA还是testB,它们之间都没有性能差异,似乎一切正常,没有副作用。
更新:
经过一些进一步的测试,我发现正是修改交互导致了testA和testB之间的差异。修改实例是这样创建的:
new Modify({
features: selectInteraction.getFeatures()
})
我只是创建了修改实例,没有将此交互添加到地图上,并且如果首先选择了该功能,它仍然会调用handleFeatureChange_
方法。
如果未创建修改实例,则一切正常,即使首先选择了功能,也不会调用handleFeatureChange_
方法。
我正在研究“橡皮擦”功能,该功能不断使用feature.setGeometry()修改要素几何,如下所示:【testA】:首先选择要素,然后选择“橡皮擦”【testB】:没有...尝试在适当位置修改几何图形,而不是设置新的几何图形。类似于使用feature.getGeometry().setCoordinates()。