我正在使用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。
答案 0 :(得分:2)
我建议检查两件事:
turf.point
坐标必须是Lon,Lat而不是Lat,Lon。这可能是问题所在,因为-118不是有效的纬度。 Lon,Lat是一个非常常见的约定。
还要检查传递给booleanPointInPolygon
的值。(文档)[https://www.npmjs.com/package/@turf/boolean-point-in-polygon]显示坐标数组被包装为两个数组,而不仅仅是一个。