在Java中计算两个坐标之间的距离
在这篇快速教程中,我们将实现计算两个地理坐标之间距离的方法。
特别是,我们首先实现距离的一个近似值。然后,我们将查看Haversine公式和Vincenty公式,这些公式提供更高的准确性。
2. 等距圆柱投影距离近似
让我们首先实现等距圆柱投影近似。详细来说,由于这个公式使用的数学运算最少,它非常快:
double calculateDistance(double lat1, double lon1, double lat2, double lon2) {
double lat1Rad = Math.toRadians(lat1);
double lat2Rad = Math.toRadians(lat2);
double lon1Rad = Math.toRadians(lon1);
double lon2Rad = Math.toRadians(lon2);
double x = (lon2Rad - lon1Rad) * Math.cos((lat1Rad + lat2Rad) / 2);
double y = (lat2Rad - lat1Rad);
double distance = Math.sqrt(x * x + y * y) * EARTH_RADIUS;
return distance;
}
大约 3 分钟