I once had a project where the client wanted customers to be able to search for the nearest vendor to the customers zip code - this project was in PHP but the algorithim contained here can be translated to other languages pretty easily (Note, this returns the value in miles):

``````function computeDistance(\$lat1,\$lon1,\$lat2,\$lon2){

\$lat1 =  deg2rad(\$lat1);

\$lon1 =  deg2rad(\$lon1);

\$lat2 =  deg2rad(\$lat2);

\$lon2 =  deg2rad(\$lon2);

// Find the deltas

\$delta_lat = \$lat2 - \$lat1;

\$delta_lon = \$lon2 - \$lon1;

// radius of earth in miles

\$r = 3963.1;

// Find the Great Circle distance

\$distance = pow(sin(\$delta_lat/2.0),2) + cos(\$lat1) * cos(\$lat2) * pow(sin(\$delta_lon/2.0),2);

\$distance = \$r * 2 * atan2(sqrt(\$distance),sqrt(1-\$distance));

return \$distance;

}

``````

## Comments

Bill

That is probably a good suggestion however in my case I don’t know if is any more efficient. I’ll have to experiment. There are only about 10 global distributors and I don’t have a zipcode db to compute against. I have the coordinates of the warehouses and then a random zipcode. I then have to find the warehouse nearest the zipcode

Paul Hastings

and i’ll tell you the same thing i told kinky ben, use a bounding box instead.