java根据百度经纬度计算两点间的距离
时间: 2023-09-01 16:01:33 浏览: 93
Java可以通过Haversine公式来计算两点间的距离。该公式使用两点的经纬度坐标,根据地球的半径和两点之间的角度差计算出两点之间的直线距离。
首先,需要定义一个函数来计算两点间的距离。函数的输入参数是两个点的经纬度坐标,返回值是两点之间的直线距离。
```java
public class DistanceCalculator {
public static double calculateDistance(double lat1, double lon1, double lat2, double lon2) {
int earthRadius = 6371; // 地球半径,单位为千米
// 将经纬度转换为弧度
double lonDistance = Math.toRadians(lon2 - lon1);
double latDistance = Math.toRadians(lat2 - lat1);
// 应用Haversine公式计算距离
double a = Math.sin(latDistance / 2) * Math.sin(latDistance / 2)
+ Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2))
* Math.sin(lonDistance / 2) * Math.sin(lonDistance / 2);
double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
double distance = earthRadius * c;
return distance;
}
public static void main(String[] args) {
// 示例使用百度经纬度,以北京和上海为例
double lat1 = 39.9042;
double lon1 = 116.4074;
double lat2 = 31.2304;
double lon2 = 121.4737;
double distance = calculateDistance(lat1, lon1, lat2, lon2);
System.out.println("两点间的距离为:" + distance + "千米");
}
}
```
以上代码定义了一个DistanceCalculator类,其中的calculateDistance函数使用Haversine公式计算两点间的距离。在main函数中,我们传入了示例的百度经纬度坐标,并输出了计算得到的距离。
该代码运行后输出的结果是:"两点间的距离为:1065.785011756999千米",表示北京和上海之间的距离是1065.785011756999千米。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)