是否需要在openlayers的Modify.js中调用相邻的removeFeature和addFeature函数?

问题描述 投票:0回答:1

我正在使用“橡皮擦”功能,该功能不断使用feature.setGeometry()修改要素几何,如下所示:

【【testA】:首先选择功能,然后选择“橡皮擦”]

【testB】:

首先选择功能,然后选择“橡皮擦”要修改的功能很简单,因此很难看到testA和testB之间的性能差异。

但是,如果要修改的功能足够复杂,则显而易见,testA比testB更加不稳定。

[使用chrome devtools的性能工具检查后,发现在testA中,将调用Modify.js中的方法handleFeatureChange_

在testB中,未调用上述方法。并且是这种导致性能差异的方法。[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()。
openlayers openlayers-3
1个回答
0
投票
© www.soinside.com 2019 - 2024. All rights reserved.