1

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

谢谢!

4

2 回答 2

4

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

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);
于 2018-11-10T20:52:08.993 回答
3

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

TileLayer.getSource().refresh();

另请参阅此处。

于 2018-11-10T16:06:42.143 回答