经纬志
首页 / Turf.js / 使用示例

点在多边形内判断

一批随机坐标落在一张不规则多边形上,逐点判断是否在面内。 这是选址、派单、围栏判断里出现频率最高的一类计算。

Turf.js 7.x · 更新 2026-10-27
源码与运行效果
运行效果

说明

点位在页面加载时随机生成,点击「重新采样」重新抽取。 每个点构造一次 turf.point,再交给 pointInPolygon。函数返回布尔值, 渲染时直接决定颜色,不做二次判断。

var inPoly = turf.pointInPolygon || turf.booleanPointInPolygon;

var hit = inPoly(turf.point([116.40, 39.92]), polygon);
console.log(hit ? '面内' : '面外');

两百个点直接逐点判断,没有做外包矩形粗筛。 数量再往上走,先比 bbox 再进多边形判断,可以把大部分面外的点挡在第一步。

设置取值说明
采样数量200够看出分布,又不至于让渲染成为负担
边界语义默认落在边线上的点算作面内
面类型普通多边形带洞面与多面同样支持

内外数量之和应始终等于采样数量。若两者加起来不对, 通常是有点的坐标落在面外却被误判,或者重复计数。 这类守恒检查比肉眼比对颜色可靠。