簡體   English   中英

自動刷新WMS層

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM