I'm working on a directory site for post offices. I want to let the user search for the nearest post office which offers the service they require. What would be the best way to do this? What would be the easiest or most efficient ways?

  • If it helps the system would be similar to: tools.usps.com/go/POLocatorAction!input.action But would use use postcode or the user's current location as the search criteria. I also anticipate that each post office will have multiple services but not many will have the exact same services, so i will need to be able to refine each search by the services the user wants.
    – Erademus
    Nov 16, 2016 at 12:47

1 Answer 1


It's possible to query the database by lat long form a zip code.

Then you need a way to utilize the Haversine formula to calculate the distance and sort by the shortest value.

function getDistanceFromLatLonInKm(lat1,lon1,lat2,lon2) {
  var R = 6371; // Radius of the earth in km
  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 km
  return d;

function deg2rad(deg) {
  return deg * (Math.PI/180)

Look at these answers to see a couple ways to do it.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.