Calculating Distance and Bounding Box Coordinates in Java Using Lat/Long Points
Measuring the distance between two latitude and longitude points and creating a bounding box around a given point is a common task in mapping and location-based applications. To address this need, Java developers can leverage the Haversine formula to accurately calculate great circle distances.
Calculating Distance
The Haversine formula, a mathematical equation, can precisely determine the distance between two points on the Earth's surface. Here's a Java implementation of the formula:
<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>
Creating Bounding Box
With the distance calculated, the bounding box can be created by determining the points that are north and east of the given point by the specified distance. The following pseudocode demonstrates this process:
// 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]
The above is the detailed content of How to Calculate Distance and Bounding Box Coordinates Using Latitude and Longitude in Java?. For more information, please follow other related articles on the PHP Chinese website!