Java 计算两个经纬度之间的直线距离 - Haversine 公式实现
你可以使用 Haversine 公式来计算两个经纬度之间的直线距离。以下是一个示例代码:
public class DistanceCalculator {
private static final int EARTH_RADIUS = 6371; // 地球半径,单位千米
public static double calculateDistance(double lat1, double lon1, double lat2, double lon2) {
// 将经纬度转换为弧度
double radLat1 = Math.toRadians(lat1);
double radLon1 = Math.toRadians(lon1);
double radLat2 = Math.toRadians(lat2);
double radLon2 = Math.toRadians(lon2);
// 使用 Haversine 公式计算两点间的距离
double a = Math.sin((radLat2 - radLat1) / 2) * Math.sin((radLat2 - radLat1) / 2) +
Math.cos(radLat1) * Math.cos(radLat2) *
Math.sin((radLon2 - radLon1) / 2) * Math.sin((radLon2 - radLon1) / 2);
double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
double distance = EARTH_RADIUS * c;
return distance;
}
public static void main(String[] args) {
double lat1 = 39.908722; // 第一个点的纬度
double lon1 = 116.397499; // 第一个点的经度
double lat2 = 31.230393; // 第二个点的纬度
double lon2 = 121.473704; // 第二个点的经度
double distance = calculateDistance(lat1, lon1, lat2, lon2);
System.out.println("两点间的直线距离为:" + distance + "千米");
}
}
上述代码中,calculateDistance 方法接受四个参数:第一个点的纬度(lat1)、经度(lon1)、第二个点的纬度(lat2)和经度(lon2)。它使用 Haversine 公式计算两点间的距离,并返回结果。
在 main 方法中,我们传入了两个经纬度坐标,然后调用 calculateDistance 方法计算两点间的直线距离,并打印结果。
原文地址: https://www.cveoy.top/t/topic/ptcN 著作权归作者所有。请勿转载和采集!