使用緯度/經度點計算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中文網其他相關文章!