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

多边形相交

两个面重叠时得到一块交集,分离后返回 null。 拖动滑块能同时看到面积变化和空值返回这两件事。

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

说明

蓝色为固定面 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° 及以上nullB 的下边越过 A 的上边,完全分离

交集边界由两个面的边线交点重新组织而成,顶点数比输入多。 这些小顶点在放大后才看得出来,对面积没有影响,但会让后续计算变慢。

intersect 返回 null 时不要当异常处理, 它是「没有公共部分」的正常表达。真正需要排查的是输入几何非法的情况, 可以用 turf.kinks 先检查自相交。