如何在开放层5中更新XYZ层

时间:2018-11-10 15:42:23

标签: openlayers openlayers-5

删除和重新添加XYZ图层是在ol5中更新它的唯一方法吗?

我知道TileWMS有一个updateParams()方法,这很好,但是我正在使用的某些层是带有时间查询参数的XYZ。

这是我如何工作的伪代码,但这似乎不是正确的解决方法。

function createLayer() {
return new TileLayer({
            source: new XYZ({
                url: 'https://url?x={x}&y={y}&z={z}&time=' + dateTimeString,
            })
        });
}
map.addLayer(createLayer());
// user interaction to change the time
map.removeLayer(createLayer());
map.addLayer(createLayer());

谢谢!

2 个答案:

答案 0 :(得分:3)

另一种方法是使用tileUrlFunction刷新源代码:

TileLayer.getSource().refresh();

另请参阅here.

答案 1 :(得分:3)

此方法可以用作伪参数来覆盖缓存,也可以在诸如气象图的来源上设置可配置的时间参数:

var layer = new TileLayer({
            source: new XYZ()
        });
function setTileUrl(dateTime) {
    layer.getSource().setUrl('https://url?x={x}&y={y}&z={z}&time=' + dateTime);
}
setTileUrl(initialDateTime);
map.addLayer(layer);
// user interaction to change the time
setTileUrl(newDateTime);