基本上,我必须更新多个功能,特别是 setGeometry,但每次对单个功能应用更新时,都会触发 change 事件,导致图层重绘。所以,如果更新了 500 个要素,图层将重绘 500 次。 我想支付重绘事件,直到所有功能都更新。
更新: 我能想到的解决方法之一是:
- getFeatures()
- 清楚(正确)
- (更新功能)
- 添加功能(功能)
但我不确定是否有比这更干净的方法
最佳答案
简答:
var feature = layer.getFeatureById("myId");
var geometry = new ol.geom.Point(ol.proj.fromLonLat([lon, lat]));
feature.set(feature.getGeometryName(), geometry, true);
........
source.changed()
长答案:
看了setGeometry 源代码(feature.js),基本上它会在geometryName_ 上使用set 方法。因此,通过显式设置相同的属性并将 opt_silent 设置为 true,它不会触发更改事件 ( object.js)。
完成更改后,只需在图层上触发更改事件即可。
关于javascript - 在 openlayers 3 上,如何在更新功能时暂停更改事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36974264/