我正在使用谷歌地图 API 来获取用户的地理位置,如果他们在洛杉矶市内,会告诉他们所在的 LAPD 报告区。我有一个报告区 (RD) 的 GeoJSON 叠加层,从 这里 加载。
我想获得地理位置坐标,并使用 Turfjs 的 booleanPointInPolygon 函数来确定是否在 RD 中,如果是,则返回该 RD。
但无论我做什么,turfjs 函数始终返回 false,尽管我明显位于 RD/Polygon 中。
我下载了GeoJSON 文件并将其作为常规 JSON 文件本地导入。以下是我的函数:
据我观察,turf.point和turf.polygon数组已正确形成,执行时没有错误。我已经逐步检查了turf函数,一切看起来都很好。
鉴于代码示例中的坐标(洛杉矶市政厅位于RD 124),我希望结果返回true,但是“found”返回1135个false。
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),我希望结果返回true,但是“found”返回1135个false。
repdist.features
数组的示例对象吗?我找不到你链接的geojson文件,因为你没有链接到一个geojson文件,而是一个网页。 - Matthias