经纬志
首页 / Turf.js / API 文档

booleanPointInPolygon

先看结论

返回布尔值,判断点落在面内、面外,还是正好压在边界上。

最后验证 2026-11-03 · Turf.js 7.x · 更新 2026-10-27 · 引用本文
turf.booleanPointInPolygon(point, polygon, options) → boolean

参数

参数类型说明
pointCoord / Feature待判断点
polygonFeature / GeometryPolygon 或 MultiPolygon
options.ignoreBoundaryboolean为真时边界点算作外部

返回值

布尔值。点落到面外时返回 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)。