[英]auto refresh WMS layer
我正在嘗試每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'
}
}));
}
嘗試更新源參數,而不是源本身。 像這樣
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()
});
謝謝,
最終,我解決了與您的回答類似的自動刷新:
radar.getSource().updateParams({
'LAYERS': 'xxxx',
'TIME': n
});
其中n是一個返回毫秒的函數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.