Openlayers-3强制地图刷新

Openlayers-3强制地图刷新,openlayers-3,redraw,Openlayers 3,Redraw,我有一个自定义样式,可以显示/隐藏地图上的要素,但当应用它时,它不会激活,直到地图因要素更新而刷新,但我需要它立即触发 我尝试了map.render和renderSync(),但他们什么也没做。mapResize()似乎也不起任何作用,但如果我等待功能更新或移动地图,它就会工作 有什么想法吗?我如何强制地图根据需要重新绘制,而不考虑功能更新?我认为您需要强制更新图层的源代码,您可以通过调用其上的changed函数来执行此操作: yourLayer.getSource().changed();

我有一个自定义样式,可以显示/隐藏地图上的要素,但当应用它时,它不会激活,直到地图因要素更新而刷新,但我需要它立即触发

我尝试了map.render和renderSync(),但他们什么也没做。mapResize()似乎也不起任何作用,但如果我等待功能更新或移动地图,它就会工作


有什么想法吗?我如何强制地图根据需要重新绘制,而不考虑功能更新?

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

yourLayer.getSource().changed();

请参阅:

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

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

必须更新图层源的参数,如下所示:

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

如果Sarumanate不适合你,你可以试试这个:

map.render();

我正在使用ol3。

使用yourlayer.source().updateParams({CQL\u FILTER:“1=1”})


它肯定会起作用。

要解决这个问题,只需使用

this.map.updateSize();

原来我是在代码库的另一个点上做这件事的——一定是忘了,或者是别人用过它!谢谢。我觉得使用很多层会影响性能-你发现了吗?一个方便的jquery代码片段:
$(window).resize(function(){if(map){map.updateSize();})您可以使用以下答案中的方法刷新地图: