Как получить координаты отфильтрованного многоугольника с помощью MapBox? - PullRequest
0 голосов
/ 02 апреля 2020

Извините за мой Engli sh.

У меня есть данные на mapbox в векторных плитках.

Я создал функцию, где пользователь может выбирать график и проверять его кнопкой. Я получаю ID посылки. При нажатии на кнопку карта обновляется, и только многоугольник графика окрашивается с помощью фильтра:

       map.addLayer({
        'id': 'parcelle-data-highlighted',
        'type': 'fill',
        'source': 'centremapbox',
        'source-layer': 'centremapbox',
        'paint': {
            'fill-outline-color': '#3c3c3b',
            'fill-color': '#afca0b',
            'fill-opacity': 0.75
        }
       });

       map.setFilter('parcelle-data-highlighted', [
        'in',
        'ID_PARCEL',
        ''+ parcel +''
       ]);

Это работает!

Тогда я не понимаю, как получить координаты многоугольника, который я закрасил через фильтр. Я пытался что-то с map.queryRenderedFeatures и map.querySourcesFeatures, но я получаю только пустые данные.

Может кто-нибудь объяснить мне процедуру, несмотря на do c, я не могу это сделать. Моя цель - получить координаты, чтобы увеличить их.

Большое спасибо за вашу помощь.

Оливье

1 Ответ

0 голосов
/ 03 апреля 2020

То, что вы пытаетесь сделать, не совсем возможно, хотя есть какие-то хакерские обходные пути. По сути, вы просите mapbox-gl- js сообщить вам, где находится данная функция, но на самом деле она не знает. Что если эта функция отключена от экрана? На другой стороне света? Он не знает.

Обычно лучшее решение состоит в том, чтобы иметь альтернативные средства определения местоположения объектов: индекс, такой как большой объект, который отображает идентификатор участка в long / lat.

В случаях, когда многоугольник определенно находится в области просмотра, использование map.querySourceFeatures должно работать. Вы не включили исходный код в эту часть вашей попытки, поэтому я не могу комментировать, что пошло не так в вашем случае.

...