Turf booleanPointInPolygon总是返回false。

问题描述 投票:0回答:1

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

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。

javascript mapbox mapbox-gl-js turfjs
1个回答
0
投票

如果你的代码是这样的,那么问题就在于 poly_coordinates 不是一个多边形,只是一个多边形的坐标部分。

你应该有这样的东西。

const poly = { type: 'Polygon', coordinates: poly_coordinates }
turf.booleanPointInPolygon(pt, poly)
© www.soinside.com 2019 - 2024. All rights reserved.