Как искать объекты векторного слоя в Mapbox GL JS

Мне нужно добавить панель поиска, которая будет искать объекты атрибутов векторного слоя, размещенные в mapbox. Я использую API Mapbox GL JS. Я знаю, что это довольно легко сделать с помощью Mapbox js / Leaflet. Я совершенно не понимаю, как сделать то же самое в Mapbox GL JS. Я хочу найти почтовый индекс, который соответствует атрибуту объекта в моем векторном слое (обратите внимание, я не хочу геокодировать адрес или почтовый индекс. Я знаю, что для Mapbox GL существует подключаемый модуль геокодера. Это это не то, что я ищу). Затем я надеюсь обновить информационную панель html различными значениями функций из векторного слоя на основе соответствующей поисковой записи.

Мне нужно знать, как объединить функцию поиска с функциями векторного слоя, обслуживаемыми Mapbox (этот вопрос конкретно относится к Mapbox GL, а не к старой библиотеке Mapbox JS).


person JoeyJoeJoe    schedule 31.01.2016    source источник


Ответы (1)


В mapbox-gl-js нет встроенной функции поиска.

Вы можете реализовать эту функцию с помощью

  • получение списка всех видимых функций с помощью метода featuresIn (docs, пример) ИЛИ с использованием исходного GeoJSON, содержащего эти функции
  • фильтрация этих функций с использованием настраиваемой логики
person Lucas Wojciechowski    schedule 02.03.2016
comment
примечание: похоже, все слои для активной карты (mapbox-gl-js v0.15) доступны на <map>.style._layers. Я не знаю другого метода доступа к всем слоям. Полагаю, featuresIn и featuresAt лучше всего подходят для сценариев, в которых есть точка или границы. - person jimmont; 13.03.2016
comment
Стандартный способ доступа ко всем слоям - map.getStyle().layers - person Steve Bennett; 11.01.2018