根據經緯度計算距離

/**
 * 根據兩點經緯度計算距離
 */
public class Distance {
    private static double EARTH_RADIUS = 6378.137;
    private static double rad(double d) {
        return d * Math.PI / 180.0;
    }
    /**
     * 根據兩點間經緯度座標(double值),計算兩點間距離,單位爲米
     */
    public static double GetDistance(double lat1, double lng1, double lat2,
            double lng2) {
        double radLat1 = rad(lat1);
        double radLat2 = rad(lat2);
        double a = radLat1 - radLat2;
        double b = rad(lng1) - rad(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;
    }
    public static void main(String[] args) {
        // TODO 自動生成方法存根
        double distance = GetDistance(121.49190931.233234121.411994,31.206134);
        System.out.println("Distance is:" + distance);
    }
//注:select * from m_mag  order by  sqrt((((121.412094-lng)*PI()*12656*cos(((31.206234+lat)/2)*PI()/180)/180)  *((121.412094-ln g)*PI()*12656*cos (((31.206234+lat)/2)*PI()/180)/180) )   +(((31.206234-lat)*PI()*12656/180) * ((31.206234-lat)*PI()*12656/180)))  desc;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章