Openlayers-3 强制刷新地图

Openlayers-3 Force a map refresh

我有一个自定义样式 shows/hides 在地图上具有特色,但应用它时它不会激活,直到地图因功能更新而刷新,但我需要它立即触发。

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

有什么想法吗?我怎样才能强制地图按需重绘,而不考虑功能更新?

我认为您需要强制更新图层的源代码,您可以通过对其调用 changed 函数来实现:

yourLayer.getSource().changed();

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

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

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

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

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

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

map.render();

我正在使用 ol3。

使用yourlayer.source().updateParams({CQL_FILTER:"1=1"});

一定有用

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

this.map.updateSize();