Skip to content

Instantly share code, notes, and snippets.

@joshholat
Last active September 6, 2023 14:47
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save joshholat/6980569 to your computer and use it in GitHub Desktop.
Save joshholat/6980569 to your computer and use it in GitHub Desktop.
Calculating Distance Between Two Latitude and Longitude Points
<?php
function distance($lat1, $lon1, $lat2, $lon2, $unit)
{
$theta = $lon1 - $lon2;
$dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) + cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($theta));
$dist = acos($dist);
$dist = rad2deg($dist);
$miles = $dist * 60 * 1.1515;
$unit = strtoupper($unit);
if ($unit == "K") {
return ($miles * 1.609344);
} else if ($unit == "N") {
return ($miles * 0.8684);
} else {
return $miles;
}
}
echo distance(41.928, -87.7044, 42.8807, -88.2014, "M") . " Miles<br>";
echo distance(41.928, -87.7044, 42.8807, -88.2014, "K") . " Kilometers<br>";
?>
<script>
// See: http://stackoverflow.com/questions/27928/how-do-i-calculate-distance-between-two-latitude-longitude-points
function getDistanceFromLatLonInKm(lat1,lon1,lat2,lon2)
{
var R = 3963; // Radius of the earth in miles
var dLat = deg2rad(lat2-lat1); // deg2rad below
var dLon = deg2rad(lon2-lon1);
var a =
Math.sin(dLat/2) * Math.sin(dLat/2) +
Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2)) *
Math.sin(dLon/2) * Math.sin(dLon/2)
;
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
var d = R * c; // Distance in miles
return d;
}
function deg2rad(deg) {
return deg * (Math.PI/180)
}
console.log(getDistanceFromLatLonInKm(41.928, -87.7044, 42.8807, -88.2014));
</script>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment