2017-02-20 7 views
0

У меня есть набор данных GeoJSON около 30 000 полигонов, каждый из которых имеет имя и адрес. Я загрузил это в Mapbox в виде плитки.Mapbox: добавить поиск по атрибуту box?

Возможно ли создать поле «поиск по атрибуту» с помощью Mapbox GL JS, где пользователь может начать вводить текст, а окно поиска предоставляет результаты на основе имени и адреса для пользователя на выбор? Вдоль линий this Mango example:

enter image description here

Возможно ли это в MapBox? Я мог бы сделать это, запустив что-то вроде SELECT * FROM tiles WHERE name LIKE '%venet%' or address LIKE '%venet%' против набора таймеров, а затем подключив результаты к моему собственному выпадающим спискам, но я не знаю, поддерживает ли Mapbox JS такой запрос Ajax. или если Mapbox JS предоставляет виджет для этого.

Я делал это раньше в Carto.JS с использованием пользовательского кода и запроса SQL LIKE, но я не знаю, возможно ли это с помощью Mapbox.

ответ

0

Хотя Лукас является правильным, что вы не можете сделать это с помощью наборов данных вы сказали, что вы загрузили данные в виде набора фишек.

MapBox-GL-JS querySourceFeatures может делать то, что вы хотите:

Возвращает массив объектов GeoJSON Feature представляющих функции в пределах заданного вектора плитки или источника GeoJSON, которые удовлетворяют параметрам запроса.

Он не поддерживает частичное соответствие (т.е. %venet%), но вы могли бы, вероятно, использовать его, чтобы извлечь все функции в окне просмотра, а затем отфильтровать их самостоятельно. Вот хороший пример этого: https://www.mapbox.com/mapbox-gl-js/example/filter-features-within-map-view/

Смежные вопросы