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 显示坐标数组被包裹在两个数组中,而不仅仅是一个数组。
我正在使用 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 显示坐标数组被包裹在两个数组中,而不仅仅是一个数组。