как плавно перевести / анимировать обновленные позиции символов слоя точек mapboxgl JS

#mapbox-gl-js

#mapbox-gl-js

Вопрос:

я пытаюсь выяснить, как анимировать обновление этого слоя карты, чтобы точки плавно переводились на новые позиции, а не просто появлялись там. я не нашел никаких полезных отправных точек в руководствах / примерах mpabox gl, и мне было интересно, есть ли простой способ подойти к этому. Спасибо

приведенный ниже код извлекает документ geojson из api раз в 60 секунд и обновляет слой карты.

         var map = new mapboxgl.Map({
            container: 'map', // container id
            style: 'mapbox://styles/mapbox/light-v10', // style URL
            center: [-73.93, 40.73], // centroid of NYC
            zoom: 11 // starting zoom
        });

        var url = '/api/v1/nyc/livemap';
            map.on('load', function () {
            var request = new XMLHttpRequest();
            window.setInterval(function () {
            // make a GET request to parse the GeoJSON at the url
            request.open('GET', url, true);
            request.onload = function () {
            if (this.status >= 200 amp;amp; this.status < 400) {
            // retrieve the JSON from the response
            var json = JSON.parse(this.response);

            map.getSource('observations').setData(json);

            map.flyTo({
            center: json.geometry.coordinates,
            speed: 0.5
            });
            }
            };
            request.send();
            }, 60000); // refresh every n milliseconds

            map.addSource('observations', { type: 'geojson', data: url });
            map.addLayer({
                'id': 'buses',
                'type': 'circle',
                'source': 'observations',
                'paint': {
                'circle-radius': 3,
                    //'circle-color': '#0039A6'

                    'circle-color': [
                        'match',
                        ['get', 'occupancy'],
                        'full',
                        '#e55e5e',
                        'standingAvailable',
                        '#FFFF00',
                        'seatsAvailable',
                        '#00FF00',
                        /* null */ '#87CEFA'
                        ]
                        },
            });
            });

  

Ответ №1:

Mapbox GL JS не содержит никакого механизма для анимации точек данных из одного местоположения в другое.

Вы могли бы использовать along функцию Turf для интерполяции каждой точки в некоторой пропорции по пути от ее предыдущего местоположения к ее новому местоположению.