Как обновить слой XYZ в Open Layers 5 - PullRequest
0 голосов
/ 10 ноября 2018

Является ли удаление и повторное добавление слоя 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 голосов
/ 10 ноября 2018

Этот метод может использоваться либо в качестве фиктивного параметра для переопределения кэширования, либо для установки настраиваемого параметра времени для таких источников, как карты погоды:

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);
0 голосов
/ 10 ноября 2018

Другим способом было бы обновить источник в связи с использованием tileUrlFunction:

TileLayer.getSource().refresh();

См. Также здесь.

...