Openlayers-3强制执行地图刷新

时间:2015-06-23 08:28:51

标签: openlayers-3 redraw

我有一个自定义样式,可以在地图上显示/隐藏功能,但是当应用它时,它会在地图因功能更新而刷新之前不会激活,但我需要它立即触发。

我尝试了map.render和renderSync(),但他们什么也没做。 mapResize()似乎也没有做任何事情,但如果我等待更新某个功能或移动地图就可以了。

有什么想法吗?无论功能更新如何,我如何强制按需重绘地图?

5 个答案:

答案 0 :(得分:7)

我相信您需要强制更新图层的来源,您可以通过调用其上的changed函数来执行此操作:

yourLayer.getSource().changed();

请参阅:http://openlayers.org/en/v3.6.0/apidoc/ol.source.Source.html

答案 1 :(得分:7)

我终于找到了一个在openlayers 3上刷新图层的解决方案。

你必须像这样更新图层来源的参数:

var source = yourLayer.getSource();
var params = source.getParams();
params.t = new Date().getMilliseconds();
source.updateParams(params);

答案 2 :(得分:0)

一种方法是根据功能对功能进行分组,并将每个组放在不同的图层上,然后您可以轻松地显示或隐藏具有您想要隐藏或显示的功能的指定图层。

答案 3 :(得分:0)

使用 yourlayer.source()。updateParams({CQL_FILTER:“1 = 1”});

一定会奏效。

答案 4 :(得分:0)

要解决此问题,只需使用

this.map.updateSize();