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

circle

先看结论

以一点为圆心、按指定半径生成闭合多边形,是范围分析里最常用的几何构造。

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

参数

参数类型默认说明
centerFeature<Point> | number[]—圆心,可传要素或 [lng, lat]
radiusnumber—半径,单位由 units 决定
options.stepsnumber64圆周分段数,越大越接近圆
options.unitsstringkilometers可用 miles、kilometers、meters、degrees、radians
options.propertiesobject{}结果多边形的属性

示例

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)。