如何在 Open Layers 5 中更新 XYZ 图层
How to update an XYZ layer in Open Layers 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());
谢谢!
另一种方法是刷新与使用 tileUrlFunction 相关的源:
TileLayer.getSource().refresh();
另见 here.
此方法可用作虚拟参数来覆盖缓存或在天气图等源上设置可配置的时间参数:
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);
删除并重新添加 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());
谢谢!
另一种方法是刷新与使用 tileUrlFunction 相关的源:
TileLayer.getSource().refresh();
另见 here.
此方法可用作虚拟参数来覆盖缓存或在天气图等源上设置可配置的时间参数:
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);