安卓基于百度地图计算两个经纬度点的直线距离并只保留两位小数

今天做公司任务的时候,出现了个问题,需要计算地图上两个点的直线距离,查了下百度的官方API都是计算路程距离,于是乎自己写一个,根据地球的半径等来计算两个经纬度点的直线距离,好了,废话不多说,直接上代码。

    public Double Distance(double lat1, double lng1,double lat2, double lng2) {


        Double R=6370996.81;  //地球的半径

    /*
     * 获取两点间x,y轴之间的距离
     */
        Double x = (lng2 - lng1)*Math.PI*R*Math.cos(((lat1+lat2)/2)*Math.PI/180)/180;
        Double y = (lat2 - lat1)*Math.PI*R/180;


        Double distance = Math.hypot(x, y);   //得到两点之间的直线距离
        BigDecimal bg = new BigDecimal(distance);
        //保留两位小数
        Double lenth = bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();

        return   lenth;

    }

需要传入的四个值就是经度纬度经度纬度,这就不说了。

好了,废话不多说了,就这样。

猜你喜欢

转载自blog.csdn.net/haojiagou/article/details/80701981