首页 / Turf.js / API 文档
circle
先看结论
以一点为圆心、按指定半径生成闭合多边形,是范围分析里最常用的几何构造。
turf.circle(center, radius, options?) → Feature<Polygon>
参数
| 参数 | 类型 | 默认 | 说明 |
|---|---|---|---|
center | Feature<Point> | number[] | — | 圆心,可传要素或 [lng, lat] |
radius | number | — | 半径,单位由 units 决定 |
options.steps | number | 64 | 圆周分段数,越大越接近圆 |
options.units | string | kilometers | 可用 miles、kilometers、meters、degrees、radians |
options.properties | object | {} | 结果多边形的属性 |
示例
var center = turf.point([116.391263, 39.907359], { name: '站点 A' });
var ring = turf.circle(center, 3, {
steps: 64,
units: 'kilometers',
properties: { name: '3 公里覆盖范围' }
});
console.log(ring.geometry.coordinates[0].length); // 65,首尾闭合
顶点数等于 steps + 1,最后一个点回到起点。
半径与圆心都写在属性里时,后续做相交、合并能直接复用。
steps 的取舍
| steps | 形状 | 适用 |
|---|---|---|
| 8–16 | 明显多边形 | 点落区判断、批量运算 |
| 32–64 | 肉眼接近圆 | 地图展示、覆盖范围 |
| 128 以上 | 近似平滑 | 面积核算、导出给制图 |
分段越多,后续相交与渲染越慢。批量处理上万个圆时, 先用低分段做粗筛,再对候选集换用高分段精算。
与 buffer 的区别
| 函数 | 输入 | 输出 |
|---|---|---|
turf.circle | 单点 | 固定 steps 顶点的圆多边形 |
turf.buffer | 点、线、面 | 按几何形状扩展的缓冲区 |
只处理点时两者结果接近;处理线或面只能用 buffer。
circle 的分段完全由参数决定,buffer 的弧段由 steps 控制且会随几何自适应。
精度边界
圆的顶点通过大圆航线上的目标点计算,跨越高纬度时东西方向的 实际地面距离会小于赤道处。跨半球或半径达到数百公里时, 得到的是球面近似,不适合与平面坐标数据做严格套合。
半径必须带单位意识。
turf.circle(pt, 500) 默认是 500 公里。
写 500 想要 500 米却漏了 units: 'meters',
结果会放大一千倍,而且不会报错。
经纬志(2026)。《circle》。https://www.jingweizhi.com/turf/api/circle.html(访问日期 2026-11-03)。