Mapbox:按属性框添加搜索?

时间:2017-02-20 12:25:16

标签: mapbox mapbox-gl-js

我有一个大约30,000个多边形的GeoJSON数据集,每个多边形都附有一个名称和地址。我已将其作为tileset上传到Mapbox。

是否可以使用Mapbox GL JS创建“按属性搜索”框,用户可以在其中开始输入,搜索框根据用户可以选择的名称和地址提供结果?沿着this Mango example

enter image description here

Mapbox可以实现吗?我可以通过对tileset运行SELECT * FROM tiles WHERE name LIKE '%venet%' or address LIKE '%venet%'之类的东西,然后将结果连接到我自己的下拉列表,但我不知道Mapbox JS是否支持这种Ajax查询。或者Mapbox JS是否提供了用于执行此操作的小部件。

我之前在使用自定义代码和SQL LIKE查询的Carto.JS中完成了此操作,但我不知道是否可以使用Mapbox。

2 个答案:

答案 0 :(得分:0)

根据documentation for the datasets API,目前没有允许您按属性搜索的操作。

答案 1 :(得分:0)

虽然Lucas是正确的,你不能用数据集做到这一点,你说你上传的数据是 tileset

Mapbox-GL-JS querySourceFeatures可以做你想做的事:

  

返回GeoJSON Feature对象的数组,表示指定的矢量切片或GeoJSON源中满足查询参数的要素。

它不支持部分匹配(即%venet%),但您可以使用它来获取视口中的所有要素,然后自己过滤它们。这里有一个很好的例子:https://www.mapbox.com/mapbox-gl-js/example/filter-features-within-map-view/