Java根據經緯度計算兩點之間的距離


public final class DistanceUtils {
 
    /**
     * 地球半徑,單位 km
     */
    private static final double EARTH_RADIUS = 6378.137;
 
    /**
     * 根據經緯度,計算兩點間的距離
     *
     * @param longitude1 第一個點的經度
     * @param latitude1  第一個點的緯度
     * @param longitude2 第二個點的經度
     * @param latitude2  第二個點的緯度
     * @return 返回距離 單位千米
     */
    public static double getDistance(double longitude1, double latitude1, double longitude2, double latitude2) {
        // 緯度
        double lat1 = Math.toRadians(latitude1);
        double lat2 = Math.toRadians(latitude2);
        // 經度
        double lng1 = Math.toRadians(longitude1);
        double lng2 = Math.toRadians(longitude2);
        // 緯度之差
        double a = lat1 - lat2;
        // 經度之差
        double b = lng1 - lng2;
        // 計算兩點距離的公式
        double s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) +
                Math.cos(lat1) * Math.cos(lat2) * Math.pow(Math.sin(b / 2), 2)));
        // 弧長乘地球半徑, 返回單位: 千米
        s =  s * EARTH_RADIUS;
        return s;
    }
 
    public static void main(String[] args) {
        double d = getDistance(116.308479, 39.983171, 116.353454, 39.996059);
        System.out.println(d);
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM