如何刷新 OpenLayers 3 中的 WMS 图层?

How to refresh a WMS layer in OpenLayers 3?

我有一个 wms 层,是这样创建的:

layer = new ol.layer.Tile({
  visible: true,
  source: new ol.source.TileWMS({
      url: 'http://localhost:8085/geoserver/accent/wms',
      params: {
          'FORMAT': 'image/png', 
          'VERSION': '1.1.1',
           tiled: true,
           STYLES: '',
           LAYERS: 'accent:layer_' + layer_id + '_',
           tilesOrigin: 0 + "," + 0.0000000000014415
      }
   })
});

我的应用程序中有一些按钮,可以更改图层存储(进行转换、增加图块的级别数等)。因此,为了使这些更改可见,我需要一种方法来 "refresh" 层,以便它可以发出服务器请求并重新绘制自己。看来,就像在旧OL2中有一个很好的方法:

myWMSLayer.redraw(true);

但是我不知道如何在OL3中实现同样的效果。谢谢!

为此,您可以在图层源

上使用updateParams
var params = layer.getSource().getParams();
layer.getSource().updateParams(params);

因为 WMS 图层会在缩放时刷新in/out我设法在需要更新时通过稍微缩放地图使其刷新。

var current_zoom = map.getView().getZoom();
map.getView().setZoom(current_zoom - 0.001);