Calculate Distance Between Two Locations Using Coordinates

Calculate Distance Between Two Locations Using Coordinates

To determine the shortest distance between two locations, the Haversine formula is commonly used. This method accounts for the Earth’s curvature.
PHP Code for Distance Calculation
Here is a PHP function to calculate the distance between two sets of geographical coordinates using the Haversine formula:

function haversine_distance($lat1, $lon1, $lat2, $lon2, $unit = 'km') {
    $earth_radius = ($unit === 'km') ? 6371.009 : 3958.761; // Radius of Earth in km or miles

    $lat1 = deg2rad($lat1);
    $lon1 = deg2rad($lon1);
    $lat2 = deg2rad($lat2);
    $lon2 = deg2rad($lon2);

    $delta_lat = $lat2 - $lat1;
    $delta_lon = $lon2 - $lon1;

    $angle = 2 * asin(sqrt(pow(sin($delta_lat / 2), 2) + cos($lat1) * cos($lat2) * pow(sin($delta_lon / 2), 2)));

    return $angle * $earth_radius;
}

Example Usage
Here is an example to demonstrate how to use the function to calculate the distance between two cities, Los Angeles and New York:

// Coordinates for Los Angeles
$lat1 = 34.0522; $lon1 = -118.2437;

// Coordinates for New York City
$lat2 = 40.7128; $lon2 = -74.0060;

// Calculate distance
$distance_km = haversine_distance($lat1, $lon1, $lat2, $lon2, 'km');
$distance_miles = haversine_distance($lat1, $lon1, $lat2, $lon2, 'miles');

// Output result
echo "Distance: " . $distance_km . " km (" . $distance_miles . " miles).";

Key Notes
This formula assumes the Earth is spherical, which can introduce small errors for longer distances, but it works well for most practical purposes.

 

Leave a Comment

Your email address will not be published. Required fields are marked *

Privacy Overview

This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.