Java 知道经纬度如何求距离
时间: 2025-03-02 13:53:15 浏览: 63
### 使用Java计算两个地理坐标之间距离
在Java中,可以利用Haversine公式来高效而精准地计算地球表面任意两点间的最短路径——即大圆距离。此公式的具体表达如下:
\[ a = \sin^2\left(\frac{\Delta\varphi}{2}\right) + \cos(\varphi_1)\cdot\cos(\varphi_2)\cdot\sin^2\left(\frac{\Delta\lambda}{2}\right) \]
其中,
- \( \varphi \) 表示纬度;
- \( \lambda \) 表示经度。
接着,
\[ c = 2\cdot\textrm{atan2}(\sqrt{a}, \sqrt{(1-a)}) \]
最终的距离可以通过下面的方式获得:
\[ d = R\cdot c \]
这里的\(R\)代表地球半径,在标准情况下取平均值约为6,371千米[^3]。
下面是基于上述原理编写的Java函数`calculateDistance`用于执行实际运算过程:
```java
public class DistanceCalculator {
private static final double EARTH_RADIUS_KM = 6371;
public static double calculateDistance(double lat1, double lon1,
double lat2, double lon2){
// 将十进制度数转化为弧度
double phi1 = Math.toRadians(lat1);
double phi2 = Math.toRadians(lat2);
double deltaPhi = Math.toRadians((lat2-lat1));
double deltaLambda = Math.toRadians((lon2-lon1));
double a = Math.sin(deltaPhi/2)*Math.sin(deltaPhi/2)+
Math.cos(phi1)*Math.cos(phi2)*
Math.sin(deltaLambda/2)*Math.sin(deltaLambda/2);
double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
return EARTH_RADIUS_KM*c; // 返回结果单位为公里
}
}
```
这段代码实现了接收两组经纬度作为输入参数,并输出两者间的大圆距离(以公里计)的功能[^4]。
阅读全文
相关推荐
















