首页 / Turf.js / 使用示例
多边形相交
两个面重叠时得到一块交集,分离后返回 null。 拖动滑块能同时看到面积变化和空值返回这两件事。
源码与运行效果
说明
蓝色为固定面 A,橙色为可上移的 B,绿色填充是交集。
每次滑动都重新构造 B 并调用一次 turf.intersect,
返回 null 时把状态改为「无交集」,面积显示 0。
var inter = turf.intersect(A, B);
if (inter) {
area.textContent = (turf.area(inter) / 1e6).toFixed(2) + ' km²';
} else {
area.textContent = '0';
}
| 偏移量 | 结果类型 | 说明 |
|---|---|---|
| 0° | Polygon | 两面部分重叠,交集为矩形 |
| 0.005°–0.055° | Polygon | 交集变小,下边界仍在 A 内 |
| 0.06° 及以上 | null | B 的下边越过 A 的上边,完全分离 |
交集边界由两个面的边线交点重新组织而成,顶点数比输入多。 这些小顶点在放大后才看得出来,对面积没有影响,但会让后续计算变慢。
intersect 返回 null 时不要当异常处理,
它是「没有公共部分」的正常表达。真正需要排查的是输入几何非法的情况,
可以用 turf.kinks 先检查自相交。