Last active
September 6, 2023 14:47
-
-
Save joshholat/6980569 to your computer and use it in GitHub Desktop.
Calculating Distance Between Two Latitude and Longitude Points
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?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