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

bboxPolygon

先看结论

把四至范围数组变成可绘制、可运算的矩形多边形。

最后验证 2026-11-03 · Turf.js 7.x · 更新 2026-10-29 · 引用本文
turf.bboxPolygon(bbox, options?) → Feature<Polygon>

参数

参数类型说明
bboxBBox[minX, minY, maxX, maxY],经纬度顺序
options.propertiesobject写入结果的属性,默认空对象
options.idstring | number写入结果的要素 id

返回单个环的 Polygon,首尾坐标相同,共五个位置。 坐标顺序为 [minX, minY]、[maxX, minY]、 [maxX, maxY]、[minX, maxY] 并闭合。

从数据生成范围面

var bbox = turf.bbox(points);            // [minX, minY, maxX, maxY]

var extentPolygon = turf.bboxPolygon(bbox, {
  properties: { name: '数据范围' }
});

console.log(extentPolygon.geometry.type);              // Polygon
console.log(extentPolygon.geometry.coordinates[0].length); // 5

turf.bbox 与 bboxPolygon 是一对: 前者算四至,后者把四至变成面。两者之间可以插入外扩、裁剪等处理。

给范围留边

var b = turf.bbox(featureCollection);
var pad = 0.02;

var padded = turf.bboxPolygon([
  b[0] - pad, b[1] - pad,
  b[2] + pad, b[3] + pad
]);

turf.bbox(padded);   // 外扩后的四至

pad 的单位是度。0.02 度在赤道约 2.2 公里, 在高纬度东西方向的距离会缩小,需要精确边距时改用 turf.buffer。

范围面的典型用途

用途说明
裁剪作为 turf.intersect 或 turf.booleanIntersects 的输入
遮罩用 turf.mask 挖掉范围内部或外部
展示直接作为 GeoJSON 图层的矩形边框
查询转成后端接口需要的四至参数

跨越 180 度经线

[minX, minY, maxX, maxY] 要求 minX ≤ maxX。 数据横跨日期变更线时,直接算出的包围盒会覆盖大半个地球, 得到一条横穿全球的错误矩形。这类数据先做经度归一,或拆成两个范围。

bbox 不是多边形,不能直接画。 在 MapLibre 或 Leaflet 中,四至数组只能用于 fitBounds。 需要作为要素参与空间运算时,必须先经过 bboxPolygon。

引用本文

经纬志(2026)。《bboxPolygon》。https://www.jingweizhi.com/turf/api/bbox-polygon.html(访问日期 2026-11-03)。