我正在寻找一种方法,可以重绘存储在图层中的所有要素(相当于使用OL2的“重绘”方法)
类ol.layer.Vector的"changed“方法仅”刷新“地图上可见的要素(例如,缩放部分),因此不会影响外部要素
应用于这些数据的处理方法是定期删除旧要素
我如何才能做到这一点?
另一个问题是如何通知此特定删除的结束?
提前感谢
Jean-Marie
发布于 2015-04-23 21:52:34
首先,感谢您的回答
我的问题实际上需要更多的信息:
浏览器客户端通过实时websocket连接接收点数
每秒,从这些点收集的新特征数组就会以这种方式添加到Vector图层中:
vectorLayer.getSource().addFeatures(features);
源缓冲器的持续时间例如是一小时,并且为了管理一小时的时间滑动窗口,每分钟移除旧特征
map.once('postrender',removeOldFeatures);
vectorLayer.changed(); or map.renderSync();
此移除仅适用于可见要素
但是,一旦某些要素由于对地图上未显示这些要素的部分进行缩放而不可见,则无论使用何种方法(vectorLayer.changed()或map.render()),都不会对这些要素执行移除处理(removeOldFeatures),因为要素的数量不会停止增加...
Jean-Marie
发布于 2015-04-23 17:57:59
我在使用TileVector源代码和格式GeoJSON时也遇到了同样的问题。最后,我使用提供的TileUrlFunction并重新绘制图层,我只需使用layer.setSource(yourdefinedSource)方法再次设置源。杜比是对的。大多数情况下(如果源代码经常更新),发送一个唯一的参数(比如unix时间戳)作为cachebuster是很有用的。
https://stackoverflow.com/questions/29793335
复制相似问题