我有很多功能(数千个),其中一些(〜数百个)改变位置/方向/状态。所以我尝试用以下两种方式更新图层/地图:
我通过 setCoordinates 更新:(数据来自 socket.io)
feature.getGeometry().setCoordinates(ol.proj.transform([data.longitude, data.latitude], 'EPSG:4326', 'EPSG:3857'));
我创建了一个包含所有特征的全局数组,并设置了一个间隔(5 秒)并清除矢量源并再次从全局数组中添加特征。顺便说一下,我更新全局数组如下:
// 数据:这里是一个更新的特性。(位置、方向和自定义状态已更改)。
var index = globalFeaturesArray.findIndex(feature => feature.getId() == data.getId()); globalFeaturesArray[index] = 数据;// 在全局数组中设置了新特性
问题是,如果更新的功能太多,浏览器会在全局数组中找到它们并替换时冻结。随着更换,新的更新可能会一次又一次地出现(瓶颈)。第一种方式也一样。它还为每个功能更新重新计算集群。
如果他们不断获得更新,那么在 openlayers 地图中显示特征的最佳方式是什么?我阅读了有关 geoserver 和 WFS 的主题,但我不确定它是否适合我的情况?100x 功能可能会改变位置,而 900x 功能支架所以 wfs 服务器会一次又一次地向我发送 1k 功能?这可能会在地理服务器和客户端之间发生巨大而无用的流量吗?
希望有更好的方法来实时解决这个问题!