我试图每隔x分钟从openlayers 3.5自动刷新WMS图层。
我定义了一个这样的图层:
var radar = new ol.layer.Image({
name: 'radar',
visible: true,
source: new ol.source.ImageWMS({
url: 'geoserver url',
params: {
'LAYERS': 'xxxx',
'SRS': 'EPSG:4326',
'FORMAT': 'image/png',
'SERVICE': 'WMS',
'VERSION': '1.1.0',
'REQUEST': 'GetMap',
'WIDTH': '512',
'HEIGHT': '376'
}
})
});
初始化地图时,图层显示正确。然后我使用“后来的js库”每隔x分钟刷新一层,这里我有疑问。我有一个刷新图层的功能:
function refreshRadarLayer() {
map.removeLayer(radar);
radar = new ol.layer.Image({
name: 'radar',
source: new ol.source.ImageWMS({
url: 'geoserver url',
params: {
'LAYERS': 'xxxxx',
'SRS': 'EPSG:4326',
'FORMAT': 'image/png',
'SERVICE': 'WMS',
'VERSION': '1.1.0',
'REQUEST': 'GetMap',
'WIDTH': '512',
'HEIGHT': '376'
}
})
});
map.addLayer(radar);
}
这个函数是正确的但是,我可以使用setSource这样做吗?
function refreshRadarLayer() {
radar.setSource(new ol.source.ImageWMS({
url: 'geoserver url',
params: {
'LAYERS': 'xxxx',
'SRS': 'EPSG:4326',
'FORMAT': 'image/png',
'SERVICE': 'WMS',
'VERSION': '1.1.0',
'REQUEST': 'GetMap',
'WIDTH': '512',
'HEIGHT': '376'
}
}));
}
答案 0 :(得分:0)
尝试更新源参数,而不是源本身。像这样
radar.getSource().updateParams({
'LAYERS': 'xxxx',
'SRS': 'EPSG:4326',
'FORMAT': 'image/png',
'SERVICE': 'WMS',
'VERSION': '1.1.0',
'REQUEST': 'GetMap',
'WIDTH': '512',
'HEIGHT': '376',
't':new Date().getMilliseconds()
});
答案 1 :(得分:0)
谢谢,
最后我解决了类似你答案的autorefresh:
radar.getSource().updateParams({
'LAYERS': 'xxxx',
'TIME': n
});
其中n是一个返回毫秒的函数。