如何在OpenLayers5中自动执行view.animate?

时间:2019-07-02 18:28:07

标签: javascript html openlayers openlayers-5

我有一个坐标列表,我希望我的代码可以平移。我可以放置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 :(得分:0)

您有一个基本的错误,即setTimeout将被快速连续地重复调用,而每一个在10000毫秒的延迟后都会调用view.animate-地图将变得充满动画请求。

这是一个使用setInterval的有效示例,可确保panToNextlocation每3000毫秒仅调用一次

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