Java 根據兩個經緯度,得到兩點距離



private static final double EARTH_RADIUS = 6371000;//赤道半徑(單位m)
private static final double INTEGR_NUM = 10000;

/**
* 基於googleMap中的算法得到兩經緯度之間的距離,誤差 <= 0.2m
* @param lat1 第一點的精度
* @param lng1 第一點的緯度
* @param lat2 第二點的精度
* @param lng2 第二點的緯度
* @return 返回的距離,單位m
* */

public static double distance(double lat1, double lng1, double lat2, double lng2) {
double x1 = Math.cos(lat1) * Math.cos(lng1);
double y1 = Math.cos(lat1) * Math.sin(lng1);
double z1 = Math.sin(lat1);
double x2 = Math.cos(lat2) * Math.cos(lng2);
double y2 = Math.cos(lat2) * Math.sin(lng2);
double z2 = Math.sin(lat2);
double lineDistance =
Math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2) + (z1 - z2) * (z1 - z2));
double s = EARTH_RADIUS * Math.PI * 2 * Math.asin(0.5 * lineDistance) / 180;
return Math.round(s * INTEGR_NUM) / INTEGR_NUM;
}


免責聲明!

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



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