如何强制重绘图层

时间:2015-04-22 09:32:39

标签: openlayers-3

我正在寻找一种方法来重绘存储在图层中的所有功能(相当于使用OL2重绘“方法”)

类ol.layer.Vector的方法“已更改”仅“刷新”地图上可见的要素(例如在缩放部分中) 因此不会影响外部的功能

应用于这些数据的处理方法是定期删除旧功能

我怎样才能做到这一点?

另一个问题是如何通知此特定删除的结束?

提前致谢

让 -

2 个答案:

答案 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时间戳)作为缓存器发送是很有用的。