【问题标题】:How to refresh a WMS layer in OpenLayers 3?如何在 OpenLayers 3 中刷新 WMS 图层?
【发布时间】:2021-08-10 15:17:42
【问题描述】:

我有一个 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
      }
   })
});

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

myWMSLayer.redraw(true);

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

【问题讨论】:

  • 或者可能有一个参数可以在 GeoServer 端禁用缓存。现在,即使我在 params 块中添加了一些随机参数,瓷砖也会被缓存

标签: javascript openlayers-3


【解决方案1】:

为此,您可以在图层源上使用updateParams

var params = layer.getSource().getParams();
layer.getSource().updateParams(params);

【讨论】:

  • 这对我不起作用。不适用于 OL3 上的 wms-layer。
【解决方案2】:

因为 WMS 图层会在您放大/缩小时刷新,所以当我需要更新地图时,我设法通过稍微缩放地图使其刷新。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多