map.fitBounds для динамического изменения вида карты для отображения видимых объектов в MapBox - PullRequest
0 голосов
/ 24 апреля 2020

Моя карта содержит несколько объектов, идентификаторы всех этих функций хранятся в массиве: featureIds.

Мое приложение содержит кнопку, которая переключает видимость некоторых функций.

Я работаю над JavaScript функцией reCenter(), чтобы выполнить это переключение. Эта функция «уменьшает» и корректирует вид карты в соответствии с границами объектов, которые теперь видны.

function reCenter() {

// new array for visible features 
var visibleFeatures = [];

// retrieve the features which are visible and put them into the new array
    for (var i = 0; i < featureIds.length; i++) {

        if (map.getLayoutProperty(featureIds[i], "visibility") == "visible") {

            visibleFeatures.push(map.queryRenderedFeatures(featureIds[i]));
        }

    }

    // new array to store coordinates
    coordinates = [];


    // push coordinates for each visible feature to coordinates array    
    for (var j = 0; j < visibleFeatures.length; j++) {

        coordinates.push(coord.geometry.coordinates);

    }

    // do fit as shown here : https://docs.mapbox.com/mapbox-gl-js/example/zoomto-linestring/
    var bounds = coordinates.reduce(function (bounds, coord) {
        return bounds.extend(coord);
    }, new mapboxgl.LngLatBounds(coordinates[0], coordinates[0]));

    map.fitBounds(bounds, {
        padding: 20
    });
}

Несмотря на выполнение вышеупомянутого и следование инструкциям, приведенным в https://docs.mapbox.com/mapbox-gl-js/example/zoomto-linestring/. Я получаю следующую ошибку: TypeError: this._sw is undefined

Как можно наилучшим образом найти все координаты видимых объектов и передать их в map.fitBounds()?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...