首页 / Turf.js / API 文档
bboxPolygon
先看结论
把四至范围数组变成可绘制、可运算的矩形多边形。
turf.bboxPolygon(bbox, options?) → Feature<Polygon>
参数
| 参数 | 类型 | 说明 |
|---|---|---|
bbox | BBox | [minX, minY, maxX, maxY],经纬度顺序 |
options.properties | object | 写入结果的属性,默认空对象 |
options.id | string | 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)。