Openlayers 如何更新开放层5中的XYZ层

Openlayers 如何更新开放层5中的XYZ层,openlayers,openlayers-5,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}&am

删除并重新添加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();

另请参见

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

TileLayer.getSource().refresh();

另请参见

此方法可用作覆盖缓存的虚拟参数,或在源(如天气图)上设置可配置的时间参数:

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);

此方法可用作覆盖缓存的虚拟参数,或在源(如天气图)上设置可配置的时间参数:

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);

这只会清除Openlayers缓存,不会重新计算url<代码>TileLayer.getSource().setUrl('https://url?x={x} &y={y}&z={z}&time='+dateTimeString)将同时执行这两项操作(仍然需要时间参数来覆盖浏览器缓存)。您是对的。与tileUrlFunction相关,它对我有效。这只会清除Openlayers缓存,不会重新计算url<代码>TileLayer.getSource().setUrl('https://url?x={x} &y={y}&z={z}&time='+dateTimeString)将同时执行这两项操作(仍然需要时间参数来覆盖浏览器缓存)。您是对的。与tileUrlFunction相关,它对我有效。