是否可以检查点是否在geojson的多边形内?

时间:2016-09-28 10:32:04

标签: android mapbox-gl

我有一些包含一些多边形的geojson,将其添加为源并创建了一个图层以在地图集地图上显示这些要素。

由于我使用的是这种方法:(从样本源编辑: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());
                    }

我可以通过将标记位置传递给其中一个多边形来检查标记是否位于其中一个多边形内。

但是当我将相机远离标记时,多边形不会渲染,检查器不再工作。

所以我的问题是,有没有办法检查标记是否在多边形内部,无论我的相机指向哪里?

2 个答案:

答案 0 :(得分:2)

检查地图框上多边形内是否有谎言 可以使用turf.js库http://turfjs.org/

这是您不需要在地图框上绘制点或多边形的方式(无需绘图)。

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 lib的inside方法了 即turf.inside(point, polygon); // return boolean True/False

答案 1 :(得分:0)