使用Java获取两个地点的距离(米),或者是两个经纬度的距离

该代码片段提供了一个Java方法,用于计算两个经纬度坐标点之间的距离,基于百度地图开放平台的工具。方法首先将纬度和经度转换为弧度,然后应用数学公式计算两点间的距离,最后乘以地球半径(以米为单位)得出结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    最近在写地图项目 ,要计算两个点经纬度的用的很多,就在百度地图开放平台里面找了个工具方法,觉得大家可能很多人都需要,那我就把他放上来有注释版本,方便大家知道他是做了什么事情,如何计算出来的(百度地图提供的没有注释)

   /**
     * 计算两个经纬度间距离 返回值为这两个坐标之间的距离(单位:米)
     * @param lat_a 第一个点的纬度
     * @param lng_a 第一个点的经度
     * @param lat_b 第二个点的纬度
     * @param lng_b 第二个点的经度
     * @return
     */
    public static double getDistance(double lat_a, double lng_a, double lat_b, double lng_b){
        double pk = 180 / 3.14169;  // 地球周长与直径的比例
        // a1、a2、b1、b2:将纬度和经度转换为弧度后的值
        double a1 = lat_a / pk;
        double a2 = lng_a / pk;
        double b1 = lat_b / pk;
        double b2 = lng_b / pk;
        //  t1、t2、t3:三个余弦值,用于后续计算
        double t1 = Math.cos(a1) * Math.cos(a2) * Math.cos(b1) * Math.cos(b2);
        double t2 = Math.cos(a1) * Math.sin(a2) * Math.cos(b1) * Math.sin(b2);
        double t3 = Math.sin(a1) * Math.sin(b1);
        // 两个坐标之间的距离(弧度)
        double tt = Math.acos(t1 + t2 + t3);
        // 6371000:地球半径,单位为米
        return 6371000 * tt;
    }
更外 3.14169为圆周率的近似值,如果需要追求高精准度 可使用jdk提供的Math.PI

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值