从geojson中判断一个点是否在多边形内是否可行?

3
我有一个包含一些多边形的geojson文件,将其作为数据源并创建了一个图层来在Mapbox地图上展示这些要素。
由于我使用了这种方法:(从示例来源进行编辑:MapboxGLAndroidSDKTestApp
final PointF pixel = mapboxMap.getProjection().toScreenLocation(point);
                    List<Feature> fList = mapboxMap.queryRenderedFeatures(pixel, "polygons");
                    for(Feature feature:fList){
                        Log.d(TAG,"FeatureInfo: "+feature.toJson());
                    }

我可以通过将标记位置传递给多边形来检查标记是否在其中之一。
但是,当我将我的相机远离标记时,多边形不再呈现,检查器也无法工作。
所以我的问题是,有没有办法检查标记是否位于多边形内,而不管我的相机指向何处?
3个回答

5

要在mapbox上检查一个点是否在多边形内,可以使用turf.js库http://turfjs.org/

这是一种不需要在mapbox上绘制点或多边形的方法(无需绘制)。

var point = turf.point([-75.343, 39.984]); 
// here first is lng and then lat 
var polygon = turf.polygon([[
  [-2.275543, 53.464547],
  [-2.275543, 53.489271],
  [-2.215118, 53.489271],
  [-2.215118, 53.464547],
  [-2.275543, 53.464547]
]], { name: 'poly1'});
// here first is lng and then lat 

现在你可以使用turf库中的inside方法,例如turf.inside(point, polygon); // 返回布尔值True/False


更新:新的TurfJS方法称为booleanContains,它可以处理多种类型的几何图形(不仅仅是点在多边形内)。 请参阅文档GitHub页面了解此方法。 - Dony



网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接