根据在Mapbox中输入的文本过滤多边形

时间:2019-12-02 21:42:03

标签: mapbox mapbox-gl-js mapbox-gl

我正在尝试对本教程提供的mapbox代码进行变型:https://docs.mapbox.com/mapbox-gl-js/example/filter-markers-by-input/

但是,我不是在过滤单个点,而是在尝试找出如何从具有基于整数特征附加名称的GeoJSON中过滤多边形的方法。基本上,我希望能够在文本框中输入多边形的附加名称,并使地图过滤器仅用于该多边形。我很难确定示例中要隔离和移植的代码部分。有人曾经尝试过类似的东西吗?

1 个答案:

答案 0 :(得分:0)

当您说“仅过滤该多边形”时,我认为您的意思(以地理空间术语而言)是“仅显示该多边形内的点的过滤器”。

您将要使用Turf的“ booleanWithin”功能。

您将要更改此代码:

layerIDs.forEach(function(layerID) {
    map.setLayoutProperty(layerID, 'visibility',
      layerID.indexOf(value) > -1 ? 'visible' : 'none');
    });

您将不得不遍历这些点本身(而不仅仅是它们的ID),并使用booleanWithin函数检查该点是否在您已加载其他地方的多边形内。