Turfjs 多边形中的点总是 returns false

Turfjs Point In Polygon always returns false

我正在使用 Google 地图 API 对用户进行地理定位,如果他们在洛杉矶市,我会告诉他们他们所在的 LAPD 报告区。我有一个从 here 加载的报告区 (RD) 的地理 json 覆盖图。

我想获取地理坐标,并使用 Turfjs 的 booleanPointInPolygon 来确定它是否在 RD 中,如果是,return 那个 RD。

但无论我做什么,turfjs 函数总是 returns false,即使我显然处于 RD/Polygon。

我下载了 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 数组格式正确,执行时没有错误。我已经完成了 turf 功能,一切似乎都很好。

鉴于代码示例中的坐标(洛杉矶市政厅,位于 RD 124),我希望结果 return 正确,但是 "found" returns 1135错误。

我建议检查两件事:

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

  • 还要检查传递给 booleanPointInPolygon 的值 documentation 显示坐标数组被包裹在两个数组中,而不仅仅是一个数组。