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

bearing

先看结论

两点之间的方位角:从正北顺时针量到目标方向,单位是度。

最后验证 2026-11-03 · Turf.js 7.x · 更新 2026-10-29 · 引用本文
turf.bearing(start, end, options?) → number

参数

参数类型默认说明
startCoord—起点,[lng, lat] 或点要素
endCoord—终点
options.finalbooleanfalse为真时返回终点处的方位角,而不是起点的初始方位角

返回值在 -180 到 180 之间,正值为顺时针(向东偏),负值为逆时针(向西偏)。

示例

var a = turf.point([116.391263, 39.907359]);
var b = turf.point([121.473701, 31.230416]);

var deg = turf.bearing(a, b);
console.log(deg);   // 约 153,向南偏东

var finalDeg = turf.bearing(a, b, { final: true });
console.log(finalDeg);

北京到上海的初始方位与终点方位不同,因为大圆航线在球面上会持续转向。 短距离下两者差别很小,跨洲航线可达十几度。

初始方位与终点方位

模式含义用途
final: false从起点出发时应朝向的角度导航起步、箭头指向
final: true到达终点时的航向进近方向、落地朝向

与 destination 配合

var dist = turf.distance(a, b, { units: 'kilometers' });
var dir = turf.bearing(a, b);

var projected = turf.destination(a, dist, dir, { units: 'kilometers' });

/* projected 与 b 几乎重合,差异来自浮点与球面模型 */
console.log(turf.distance(projected, b, { units: 'meters' }));

这组往返关系可用于校验数据:距离与方位都正确时, 推算点与终点的偏差应在米级以内。

画方向箭头

符号旋转角度与方位角方向相反:地图的旋转是逆时针为正, 方位角是顺时针为正。把 bearing 取负再用于 icon-rotate 或 Canvas 的 rotate,箭头才指得对。

两点重合时方位没有意义。 起终点坐标完全一致时 atan2(0, 0) 返回 0, 函数不会报错,看起来像「正北」。批量计算前先剔除距离为零的记录。

引用本文

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