我正在寻找一种方法来重绘存储在图层中的所有功能(相当于使用OL2重绘“方法”)
类ol.layer.Vector的方法“已更改”仅“刷新”地图上可见的要素(例如在缩放部分中) 因此不会影响外部的功能
应用于这些数据的处理方法是定期删除旧功能
我怎样才能做到这一点?
另一个问题是如何通知此特定删除的结束?
提前致谢
让 -
答案 0 :(得分:1)
首先感谢您的回答
我的问题需要更多信息:
浏览器客户端通过实时websocket连接接收点数
每秒,从这些点收集的一系列新功能将以这种方式添加到Vector层中:
vectorLayer.getSource().addFeatures(features);
源缓冲区的持续时间例如是一小时,并且为了管理一小时的时间滑动窗口,每分钟都会移除旧功能
map.once('postrender',removeOldFeatures);
vectorLayer.changed(); or map.renderSync();
仅对可见功能正确执行此删除
但是,只要某些功能不可见,例如,由于放大了地图中未显示这些功能的部分,那么无论使用何种方法,都不会对这些功能执行删除处理(removeOldFeatures) (vectorLayer.changed()或map.render()) 因此,功能的数量不会停止增加......
让 -
答案 1 :(得分:0)
我遇到了与TileVector Source相同的问题并格式化了GeoJSON。最后我使用提供的TileUrlFunction并重新绘制图层,我只是使用layer.setSource(yourdefinedSource)方法再次设置Source。 Dube是对的。大多数情况下(如果源经常更新),将唯一的参数(如unix时间戳)作为缓存器发送是很有用的。