我创建了一个openlayers地图(版本5.3)。我添加了一个ImageLayer,创建了一个ImageWMS源以与ArcGis服务器对话。图层显示正常。现在,我需要每30秒刷新一次该层。
我尝试使用刷新方法https://openlayers.org/en/latest/apidoc/module-ol_source_ImageWMS-ImageWMS.html#refresh,但是没有运气。我需要的是源重新加载URL。但这根本不行。
我试图在网址中添加带有时间戳的参数,但是ArcGis一点都不喜欢。
const wms_source = new ImageWMS({
url: 'https://my_secret_domain/arcgis/services/Project/TEST_Lightning/MapServer/WMSServer?request=GetMap',
projection: 'EPSG:4326',
styles: 'default',
params: {
layers: '0',
},
})
const lightning_layer = new ImageLayer({
})
lightning_layer.setSource(wms_source);
this.map = new Map({
layers: [baseLayer, lightning_layer ],
target: document.getElementById('lightning'),
view: new View({
center: fromLonLat([175.79, -37.79]),
zoom: 7,
projection: 'EPSG:3857'
})
});
// I would expect this to reload the source ...
// but looking into the debugger shows that it is not.
wms_source.refresh
有人知道如何重新加载源以显示来自服务器的更新数据吗?
答案 0 :(得分:1)
感谢JGH的评论,我确定了需要更改的地方。
我没有将timestemp添加到源的初始设置中,但是我添加了我的interval函数,该函数每30秒更新一次URL,然后运行refresh ...
setInterval(() => {
wms_source.setUrl('https://my_top_secret_domain/Project/TEST_Lightning/MapServer/WMSServer?request=GetMap&TIMESTAMP=' + new Date().getTime());
this.wms_source.refresh();
}, 30000); // 30s
现在可以正常使用