Calculate distance between two locations by Latitude and Longitude

Calculate distance between two locations by Latitude and Longitude

The following code returns the distance between to locations based on each point’s longitude and latitude.

Passed to function:

lat1, lon1 = Latitude and Longitude of point 1 (in decimal degrees)

lat2, lon2 = Latitude and Longitude of point 2 (in decimal degrees)

unit = the unit you desire for results where: ‘M’ is statute miles (default)

‘K’ is kilometers

‘N’ is nautical miles

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(32.9697, -96.80322, 29.46786, -98.53506, "M") . " Miles";
echo distance(32.9697, -96.80322, 29.46786, -98.53506, "K") . " Kilometers";
echo distance(32.9697, -96.80322, 29.46786, -98.53506, "N") . " Nautical Miles";

###Javascript

function distance(lat1, lon1, lat2, lon2, unit) {
	var radlat1 = Math.PI * lat1/180
	var radlat2 = Math.PI * lat2/180
	var radlon1 = Math.PI * lon1/180
	var radlon2 = Math.PI * lon2/180
	var theta = lon1-lon2
	var radtheta = Math.PI * theta/180
	var dist = Math.sin(radlat1) * Math.sin(radlat2) + Math.cos(radlat1) * Math.cos(radlat2) * Math.cos(radtheta);
	dist = Math.acos(dist)
	dist = dist * 180/Math.PI
	dist = dist * 60 * 1.1515
	if (unit=="K") { dist = dist * 1.609344 }
	if (unit=="N") { dist = dist * 0.8684 }
	return dist
}

Reference : http://www.movable-type.co.uk/scripts/latlong.html