我正在尝试对本教程提供的mapbox代码进行变型:https://docs.mapbox.com/mapbox-gl-js/example/filter-markers-by-input/
但是,我不是在过滤单个点,而是在尝试找出如何从具有基于整数特征附加名称的GeoJSON中过滤多边形的方法。基本上,我希望能够在文本框中输入多边形的附加名称,并使地图过滤器仅用于该多边形。我很难确定示例中要隔离和移植的代码部分。有人曾经尝试过类似的东西吗?
答案 0 :(得分:0)
当您说“仅过滤该多边形”时,我认为您的意思(以地理空间术语而言)是“仅显示该多边形内的点的过滤器”。
您将要使用Turf的“ booleanWithin
”功能。
您将要更改此代码:
layerIDs.forEach(function(layerID) {
map.setLayoutProperty(layerID, 'visibility',
layerID.indexOf(value) > -1 ? 'visible' : 'none');
});
您将不得不遍历这些点本身(而不仅仅是它们的ID),并使用booleanWithin函数检查该点是否在您已加载其他地方的多边形内。