javascript - 在 openlayers 3 上,如何在更新功能时暂停更改事件?

标签 javascript openlayers-3

基本上,我必须更新多个功能,特别是 setGeometry,但每次对单个功能应用更新时,都会触发 change 事件,导致图层重绘。所以,如果更新了 500 个要素,图层将重绘 500 次。 我想支付重绘事件,直到所有功能都更新。

更新: 我能想到的解决方法之一是:

  1. getFeatures()
  2. 清楚(正确)
  3. (更新功能)
  4. 添加功能(功能)

但我不确定是否有比这更干净的方法

最佳答案

简答:

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/

相关文章:

openlayers-3 - 我如何知道 openlayers-3 中的多边形内有哪些线段和多边形?

openlayers - 如何在openlayers中将缩放级别限制为整数

javascript - Openlayers 3 + GeoJson 选择功能

javascript - 在 OpenLayers 中以 100% 显示静态图像

javascript - 使用 angular.js 创建具有未知标题的表

javascript - JScript 一词在 MSDN 中的地位如何?

javascript - Excalibur 项目没有显示任何内容

JavaScript For Loop - 有趣,可能很简单

javascript - 获取网站词频计数的最佳方法?还是网站的一部分?

javascript - 无法使用 OpenLayers 3 站点中的 WFS 示例作为基础加载另一个 WFS