首页 / Turf.js / API 文档
bearing
先看结论
两点之间的方位角:从正北顺时针量到目标方向,单位是度。
turf.bearing(start, end, options?) → number
参数
| 参数 | 类型 | 默认 | 说明 |
|---|---|---|---|
start | Coord | — | 起点,[lng, lat] 或点要素 |
end | Coord | — | 终点 |
options.final | boolean | false | 为真时返回终点处的方位角,而不是起点的初始方位角 |
返回值在 -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)。