java中两个经纬度怎么计算距离
时间: 2023-11-04 17:06:02 浏览: 48
在Java中,可以使用Haversine公式来计算两个经纬度之间的距离。以下是一个示例代码:
```java
public class DistanceCalculator {
private static final double EARTH_RADIUS = 6371; // 地球半径,单位为千米
/**
* 计算两个经纬度之间的距离
*
* @param lat1 第一个点的纬度
* @param lon1 第一个点的经度
* @param lat2 第二个点的纬度
* @param lon2 第二个点的经度
* @return 两个经纬度之间的距离,单位为千米
*/
public static double calculateDistance(double lat1, double lon1, double lat2, double lon2) {
double dLat = Math.toRadians(lat2 - lat1);
double dLon = Math.toRadians(lon2 - lon1);
double a = Math.sin(dLat / 2) * Math.sin(dLat / 2)
+ Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2))
* Math.sin(dLon / 2) * Math.sin(dLon / 2);
double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
return EARTH_RADIUS * c;
}
}
```
在上面的代码中,使用了Math类中的一些方法来进行计算。具体来说:
- Math.toRadians()方法用于将角度转换为弧度。
- Math.sin()和Math.cos()方法用于计算正弦和余弦值。
- Math.atan2()方法用于计算反正切值。
使用该方法,可以计算两个经纬度之间的距离,例如:
```java
double distance = DistanceCalculator.calculateDistance(39.9042, 116.4074, 31.2304, 121.4737);
System.out.println("Distance is " + distance + " km");
```
这将输出:
```
Distance is 1061.3717590788336 km
```