使用纬度/经度点计算 Java 中的距离和边界框坐标
测量两个纬度和经度点之间的距离并创建边界给定点周围的方框是地图绘制和基于位置的应用程序中的一项常见任务。为了解决这一需求,Java 开发者可以利用半正弦公式来精确计算大圆距离。
计算距离
半正矢公式是一个数学方程,可以精确确定地球表面两点之间的距离。下面是该公式的 Java 实现:
<code class="java">public static double distFrom(double lat1, double lng1, double lat2, double lng2) { double earthRadius = 3958.75; // miles (or 6371.0 kilometers) double dLat = Math.toRadians(lat2-lat1); double dLng = Math.toRadians(lng2-lng1); double sindLat = Math.sin(dLat / 2); double sindLng = Math.sin(dLng / 2); double a = Math.pow(sindLat, 2) + Math.pow(sindLng, 2) * Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2)); double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); double dist = earthRadius * c; return dist; }</code>
创建边界框
计算出距离后,可以通过确定北边的点来创建边界框以及给定点以东指定的距离。下面的伪代码演示了这个过程:
// Assuming distance is in miles // Calculate North and East edges northEdge = lat + (distance / 69); // Divide by 69 to convert to degrees eastEdge = lng + (distance / 53); // Divide by 53 to convert to degrees // Create bounding box coordinates boundingBox = [lat, lng, northEdge, eastEdge]
以上是如何在 Java 中使用纬度和经度计算距离和边界框坐标?的详细内容。更多信息请关注PHP中文网其他相关文章!