首页 / Turf.js / 使用示例
点在多边形内判断
一批随机坐标落在一张不规则多边形上,逐点判断是否在面内。 这是选址、派单、围栏判断里出现频率最高的一类计算。
源码与运行效果
说明
点位在页面加载时随机生成,点击「重新采样」重新抽取。
每个点构造一次 turf.point,再交给
pointInPolygon。函数返回布尔值,
渲染时直接决定颜色,不做二次判断。
var inPoly = turf.pointInPolygon || turf.booleanPointInPolygon;
var hit = inPoly(turf.point([116.40, 39.92]), polygon);
console.log(hit ? '面内' : '面外');
两百个点直接逐点判断,没有做外包矩形粗筛。 数量再往上走,先比 bbox 再进多边形判断,可以把大部分面外的点挡在第一步。
| 设置 | 取值 | 说明 |
|---|---|---|
| 采样数量 | 200 | 够看出分布,又不至于让渲染成为负担 |
| 边界语义 | 默认 | 落在边线上的点算作面内 |
| 面类型 | 普通多边形 | 带洞面与多面同样支持 |
内外数量之和应始终等于采样数量。若两者加起来不对, 通常是有点的坐标落在面外却被误判,或者重复计数。 这类守恒检查比肉眼比对颜色可靠。