Java计算两个经纬度的直线距离
时间: 2023-06-12 07:06:26 浏览: 177
计算两个经纬度之间的直线距离可以使用 Haversine 公式。以下是一个 Java 实现:
```java
public class DistanceCalculator {
private static final double EARTH_RADIUS = 6371; // 地球半径,单位为公里
/**
* 计算两个经纬度之间的直线距离
*
* @param lat1 第一个点的纬度,单位为度
* @param lng1 第一个点的经度,单位为度
* @param lat2 第二个点的纬度,单位为度
* @param lng2 第二个点的经度,单位为度
* @return 两点之间的距离,单位为公里
*/
public static double calculateDistance(double lat1, double lng1, double lat2, double lng2) {
double radLat1 = Math.toRadians(lat1);
double radLng1 = Math.toRadians(lng1);
double radLat2 = Math.toRadians(lat2);
double radLng2 = Math.toRadians(lng2);
double a = Math.sin((radLat1 - radLat2) / 2) * Math.sin((radLat1 - radLat2) / 2)
+ Math.cos(radLat1) * Math.cos(radLat2) * Math.sin((radLng1 - radLng2) / 2) * Math.sin((radLng1 - radLng2) / 2);
double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
return EARTH_RADIUS * c;
}
}
```
使用示例:
```java
double distance = DistanceCalculator.calculateDistance(39.908714, 116.397389, 31.230416, 121.473701);
System.out.println(distance); // 1068.63 公里
```
其中,39.908714 和 116.397389 是北京的经纬度,31.230416 和 121.473701 是上海的经纬度。计算结果为 1068.63 公里。
阅读全文