You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何计算手机当前经纬度与目标经纬度之间的指向夹角?

实现基于经纬度的方位角计算函数getAngle

直接用经纬度计算方位角完全可行,不需要转DMS格式。下面是成熟的实现方案,核心用球面三角学公式计算从当前位置到目标位置的地理方位角(正北为0度,顺时针递增,范围0-360°):

function getAngle(lat1, lng1, lat2, lng2) {
  // 把角度转换为弧度(JS三角函数默认用弧度)
  const radLat1 = Math.PI * lat1 / 180;
  const radLng1 = Math.PI * lng1 / 180;
  const radLat2 = Math.PI * lat2 / 180;
  const radLng2 = Math.PI * lng2 / 180;

  // 计算经度差
  const deltaLng = radLng2 - radLng1;

  // 球面方位角计算核心分量
  const y = Math.sin(deltaLng) * Math.cos(radLat2);
  const x = Math.cos(radLat1) * Math.sin(radLat2) - Math.sin(radLat1) * Math.cos(radLat2) * Math.cos(deltaLng);

  // 计算弧度并转换为角度,调整到0-360°的范围
  let angle = Math.atan2(y, x) * 180 / Math.PI;
  angle = (angle + 360) % 360;

  return angle;
}

关键说明:

  • 所有经纬度直接用原始十进制数值即可,无需转换DMS,转换反而会损失精度
  • 输出的角度规则:0°=正北,90°=正东,180°=正南,270°=正西,符合常规的方位认知
  • atan2(y, x)返回的是-180°到180°的角度,通过(angle + 360) % 360调整为0-360°的正角度范围

测试示例:

比如当前位置是纽约(40.7128, -74.0060),目标是洛杉矶(34.0522, -118.2437),调用getAngle(40.7128, -74.0060, 34.0522, -118.2437)会返回约259°,对应西南方向,符合实际地理方位。

内容的提问来源于stack exchange,提问作者Jordy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 14:35:21