Jump to content

zip code distance calculator


Q695

Recommended Posts

I'll be doing it for users within any given zip code, and calculating the distance to other users, so I don't think the tool is powerful enough.

Why would you think that? Just pass the users entered zipcode to the API and read the results. It'll do exactly what you want.

I have a sqlite database of zip codes and their geo coordinates. When I want to find the distance between two zip codes I query the db and then use the following function:

<?php

/**
 * This function calculates the distance between two 
 * points (given the latitude/longitude of those points).
 *
 * @param  decimal degrees  latitude of point 1
 * @param  decimal degrees  longitude of point 1
 * @param  decimal degrees  latitude of point 2
 * @param  decimal degrees  longitude of point 2
 * @param  string  the unit for results
 *                   'M' is statute miles
 *                   'K' is kilometers
 *                   'N' is nautical miles
 */
if( ! function_exists( 'distance_between_geo_coords' ) )
{
	function distance_between_geo_coords( $lat1, $lng1, $lat2, $lng2, $unit )
	{
		$theta = $lng1 - $lng2;
		$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( strtolower( $unit ) == 'k' )
		{
			return $miles * 1.609344;
		}
		else if( strtolower( $unit ) == 'n' )
		{
			return $miles * 0.8684;
		}
		else
		{
			return $miles;
		}
	}
}

// --------------------------------------------------------------

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.