Turfjs点在多边形中始终返回false

时间:2019-01-25 19:33:07

标签: javascript turfjs

我正在使用Google Maps API对用户进行地理位置定位,如果他们在洛杉矶市,它将告诉他们他们所在的LAPD报告区域。我在报告区域(RD)的geojson覆盖图上从here加载。

我想获取地理位置坐标,并使用Turfjs的booleanPointInPolygon确定它是否在RD中,如果是,则返回该RD。

但是无论我做什么,即使我显然处于RD /多边形中,turfjs函数也始终返回false。

我下载了geojson file并将其作为常规json文件本地导入。 这是我的功能:

    getRd() {
            const repdist = require("../assets/LAPD_Reporting_Districts.json");
            let point = turf.point([34.05350702472784, -118.24291762202074]);
            var poly;
            repdist.features.forEach(rd => {
                poly = turf.polygon(rd.geometry.coordinates);
                var found = turf.booleanPointInPolygon(point, poly);
                console.log("found: ", found);
            });

据我所知,turf.point和turf.polygon数组格式正确,执行时没有错误。我已经完成了草皮功能,一切似乎都很好。

鉴于代码示例(位于洛杉矶124号市政厅的代码示例)中的坐标,我希望结果返回true,但“ found”返回1135 false。

1 个答案:

答案 0 :(得分:2)

我建议检查两件事:

  • turf.point坐标必须是Lon,Lat而不是Lat,Lon。这可能是问题所在,因为-118不是有效的纬度。 Lon,Lat是一个非常常见的约定。

  • 还要检查传递给booleanPointInPolygon的值。(文档)[https://www.npmjs.com/package/@turf/boolean-point-in-polygon]显示坐标数组被包装为两个数组,而不仅仅是一个。