Haversine公式实现
import java.lang.Math;
public class HaversineDistanceCalculator {
private static final double EARTH_RADIUS_KM = 6371.0;
private static double toRadians(double degree) {
return degree * Math.PI / 180.0;
}
public static double calculateDistance(double lat1, double lon1, double lat2, double lon2) {
double lat1Rad = toRadians(lat1);
double lon1Rad = toRadians(lon1);
double lat2Rad = toRadians(lat2);
double lon2Rad = toRadians(lon2);
double dLat = lat2Rad - lat1Rad;
double dLon = lon2Rad - lon1Rad;
double a = Math.sin(dLat / 2.0) * Math.sin(dLat / 2.0)
+ Math.cos(lat1Rad) * Math.cos(lat2Rad) * Math.sin(dLon / 2.0) * Math.sin(dLon / 2.0);
double c = 2.0 * Math.atan2(Math.sqrt(a), Math.sqrt(1.0 - a));
return EARTH_RADIUS_KM * c;
}
public static void main(String[] args) {
double lat1 = 126.62426;
double lon1 = 45.78469;
double lat2 = 126.62689;
double lon2 = 45.77400;
double distance = calculateDistance(lat1, lon1, lat2, lon2);
System.out.println("距离为:" + distance + "公里");
}
}