Turf booleanPointInPolygon 总是 returns false

Turf booleanPointInPolygon always returns false

我想检查一个点是否在多边形中:

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 对于任何点仍然 returns false。

如果那是您的代码,那么问题是 poly_coordinates 不是多边形,它只是多边形的坐标部分。

你应该有这样的东西:

const poly = { type: 'Polygon', coordinates: poly_coordinates }
turf.booleanPointInPolygon(pt, poly)