我想检查一个点是否在多边形中。
if (turf.booleanPointInPolygon(pt, poly_coordinates)) {
console.log("INSIDE");
} else {
console.log("OUTSIDE");
}
JSON.stringify(console.log(pt)) 显示:
{"type":"Feature","properties":{},"geometry":{"type":"Point","coordinates":[2.1362996,41.391026000000004]}}
JSON.stringify(console.log(poly_coordinates)) 显示:
[[[2.1666008868967594,41.420742231455876],[2.1423966327457435,41.39486355482066],[2.159906093195218,41.38185595077573],[2.1666008868967594,41.420742231455876]]]
注意:所有的东西都是经纬度格式。
为什么是booleanPointInPolygon返回false?这个特殊情况只是一个例子点和一个例子多边形,它可能在多边形之外。然而,如果多边形包含了整个世界,这并不重要,booleanPointInPolygon仍然会对任何点返回false。
如果你的代码是这样的,那么问题就在于 poly_coordinates
不是一个多边形,只是一个多边形的坐标部分。
你应该有这样的东西。
const poly = { type: 'Polygon', coordinates: poly_coordinates }
turf.booleanPointInPolygon(pt, poly)