首页 / Turf.js / API 文档
booleanPointInPolygon
先看结论
返回布尔值,判断点落在面内、面外,还是正好压在边界上。
turf.booleanPointInPolygon(point, polygon, options) → boolean
参数
| 参数 | 类型 | 说明 |
|---|---|---|
point | Coord / Feature | 待判断点 |
polygon | Feature / Geometry | Polygon 或 MultiPolygon |
options.ignoreBoundary | boolean | 为真时边界点算作外部 |
返回值
布尔值。点落到面外时返回 false,参数为空时也返回 false。
示例
var area = turf.polygon([[[116.30, 39.85], [116.45, 39.85],
[116.45, 39.95], [116.30, 39.95], [116.30, 39.85]]]);
console.log(turf.booleanPointInPolygon([116.35, 39.90], area)); // true
console.log(turf.booleanPointInPolygon([116.50, 39.90], area)); // false
边界点
ignoreBoundary 默认为假,边界上的点算在内部。
这个判定依赖射线法的浮点结果,坐标精度变化时可能翻转。
统计时把边界点单列一类,结论更稳。
洞的处理
带洞的多边形里,洞内的点返回 false。
不需要额外判断环的方向,函数内部会按包含关系处理。
性能
单次调用的复杂度与面的顶点数成正比。批量判断上万点时, 先把点按外包框粗筛,再对留下的点做精确判断。
坐标顺序别写反。写成 [纬度, 经度] 时函数不会报错,
只是静默返回 false,排查起来很费时间。
经纬志(2026)。《booleanPointInPolygon》。https://www.jingweizhi.com/turf/api/boolean-point-in-polygon.html(访问日期 2026-11-03)。