如何刷新 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);
我有一个 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中实现同样的效果。谢谢!
为此,您可以在图层源
上使用updateParamsvar params = layer.getSource().getParams();
layer.getSource().updateParams(params);
因为 WMS 图层会在缩放时刷新in/out我设法在需要更新时通过稍微缩放地图使其刷新。
var current_zoom = map.getView().getZoom();
map.getView().setZoom(current_zoom - 0.001);