根据经纬度算出两个位置之间的距离

package com.sandu.mega.common.kit;

public class DistanceKit {
    //地球平均半径
    private static final double EARTH_RADIUS = 6378137;
    //把经纬度转为度(°)
    private static double rad(double d){
       return d * Math.PI / 180.0;
    }
    
    /**
     * 根据两点间经纬度坐标(double值),计算两点间距离,单位为米
     * @param lng1  第一个人的经度
     * @param lat1   第一个人的纬度
     * @param lng2   第二个人的经度
     * @param lat2    第二个人的纬度
     * @return
     */
    public static double getDistance(String lng1, String lat1, String lng2, String lat2){
       double radLat1 = rad(Double.valueOf(lat1));
       double radLat2 = rad(Double.valueOf(lat2));
       double a = radLat1 - radLat2;
       double b = rad(Double.valueOf(lng1)) - rad(Double.valueOf(lng2));
       double s = 2 * Math.asin(
            Math.sqrt(
                Math.pow(Math.sin(a/2),2) 
                + Math.cos(radLat1)*Math.cos(radLat2)*Math.pow(Math.sin(b/2),2)
            )
        );
       s = s * EARTH_RADIUS;
       s = Math.round(s * 10000) / 10000;
       return s;
    }
    
}
    

 

posted @ 2017-05-05 10:21  suruozhong  阅读(615)  评论(0编辑  收藏  举报