<?php
/*::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/ /*:: :*/ /*:: this routine calculates the distance between two points (given the :*/ /*:: latitude/longitude of those points). it is being used to calculate :*/ /*:: the distance between two zip codes or postal codes using our :*/ /*:: zipcodeworld(tm) and postalcodeworld(tm) products. :*/ /*:: :*/ /*:: definitions: :*/ /*:: south latitudes are negative, east longitudes are positive :*/ /*:: :*/ /*:: 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 :*/ /*:: 'k' is kilometers (default) :*/ /*:: 'n' is nautical miles :*/ /*:: :*/ /*:: see http://www.zipcodeworld.com/samples/distance.php.html :*/ /*::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
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[0]);
if ($unit == "K") { return ($miles * 1.609344); } else if ($unit == "N") { return ($miles * 0.8684); } else { return $miles; } }
?>
|