Как автоматизировать view.animate в OpenLayers5? - PullRequest
0 голосов
/ 02 июля 2019

У меня есть список координат, по которому мой код должен перемещаться.Я могу поместить view.animate и сделать это один раз для перемещения из моего текущего центра к первой координате, но не для циклического перемещения по списку.Есть идеи?Я получил идею из этого https://openlayers.org/en/latest/examples/animation.html.

var координаты = [Лондон, Москва, Стамбул, Рим, Берн];(у них есть свои координаты)

    var view = new ol.View({
        center: istanbul,
        zoom: 4
    })
    var map = new ol.Map({
        target: 'map',
        layers: [
            new ol.layer.Tile({
                source: new ol.source.OSM()
            })],
        loadTilesWhileAnimating: true,
        view: view
    });
    coordinates.forEach(function(element) {

        setTimeout(view.animate({
            center: element,
            duration: 2000,
        }), 10000);
    });

1 Ответ

0 голосов
/ 03 июля 2019

У вас есть основная ошибка в том, что setTimeout будет вызываться повторно в быстрой последовательности, каждый из которых вызывает view.animate после задержки в 10000 мс - карта будет перегружена запросами на анимацию.

Здесьрабочий пример использования setInterval, который гарантирует, что panToNextlocation вызывается только один раз за 3000 мс

https://stackblitz.com/edit/ol-animation-between-points

...