关键词搜索

源码搜索 ×
×

求两个球面坐标点(经纬度)之间的距离

发布2019-09-07浏览2154次

详情内容

我们常说的经纬度,属于球面坐标系,因为地球是个球体。如果知道地球上A、B两个地方的坐标,如何求它们之间的距离?

这是有公式的,照算可也:
在这里插入图片描述
其中R是球体半径,arccos,反余弦;jA、wA是A点的经纬度对应的弧度,jB、wB以此类推。

function getOffset(p,p0){//计算p和p0之间的距离
	//x:经度 y:纬度
    let x = getRadian(p.x);//经度转为弧度
    let y = getRadian(p.y);
    let x0 = getRadian(p0.x);
    let y0 = getRadian(p0.y);
    
    let R = 6371.393;//地球半径,千米
    let acos = Math.acos;
    let cos = Math.cos;
    let sin = Math.sin;
    let pi = 3.1415926;

    //R * arccos(cos(y1) * cos(y2) * cos(x2 - x1) + sin(y1) * sin(y2))
    return off = R * acos(cos(y) * cos(y0) * cos(x0 - x) + sin(y) * sin(y0));

    function getRadian(jw){//经纬度转弧度
        return (jw * pi) / 180;
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

参考文章:
关于已知两点经纬度求球面最短距离的公式推导

相关技术文章

点击QQ咨询
开通会员
返回顶部
×
微信扫码支付
微信扫码支付
确定支付下载
请使用微信描二维码支付
×

提示信息

×

选择支付方式

  • 微信支付
  • 支付宝付款
确定支付下载