我使用谷歌地图API,地理定位用户,如果他们在洛杉矶,会告诉他们洛杉矶警察局的报告区他们在。我有一个geojson覆盖的报告区(RD),正在从这里加载。
我想得到地理坐标,并使用Turfjs的booleanPointInPolygon来确定它是否在RD中,如果是,返回RD。
但是无论我做什么,turfjs函数总是返回false,即使我显然在RD/Polygon中。
我下载了geojson文件并将其作为常规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数组是正确的,并且在执行时没有错误。我已经跨过草坪活动了,一切看起来都很好。
给定代码示例(LA市政厅,位于RD 124中)中的和弦,我希望结果返回true,但"found“返回1135个错误。
发布于 2019-01-25 20:15:17
我建议检查两件事:
turf.point坐标必须是Lon,Lat而不是Lat,Lon。这可能是一个问题,因为-118不是一个有效的纬度。Lon,Lat是一种非常普遍的习俗。booleanPointInPolygon的值-- 文档显示将坐标数组封装在两个数组中,而不仅仅是一个。https://stackoverflow.com/questions/54371746
复制相似问题