I could not find any service offering an API. After much research, I found that you have to load the zip codes along with their latitude and longitude position into the table. then calculate the coordinates in the radius you want to find. This is a site that has helped me a lot. http://www.dougv.com/2009/03/27/getting-all-zip-codes-in-a-given-radius-from-a-known-point-zip-code-via-php-and- mysql /
Here is the calculation in java if you really want, if you don't want to work with php
// you get this by querying the database for the zip code Double latitude = Double.parseDouble (zipCode.getLatitude ()); Double longitude = Double.parseDouble (zipCode.getLongitude ());
Double latN =Math.asin( Math.sin(Math.toRadians(latitude)) * Math.cos(distance/radius) + Math.cos(Math.toRadians(latitude)) * Math.sin(distance/radius) * Math.cos(Math.toRadians(0))); Double latS =Math.asin( Math.sin(Math.toRadians(latitude)) * Math.cos(distance/radius) + Math.cos(Math.toRadians(latitude)) * Math.sin(distance/radius) * Math.cos(Math.toRadians(180))); Double longE = Math.toRadians(longitude) + Math.atan2( Math.sin(Math.toRadians(90)) * Math.sin(distance/radius)* Math.cos(Math.toRadians(latitude)) , Math.cos(Math.toRadians(distance/radius)) - Math.sin(Math.toRadians(latitude))* Math.sin(Math.toRadians(latN)) ); Double longW = Math.toRadians(longitude) + Math.atan2( Math.sin(Math.toRadians(270)) * Math.sin(distance/radius)* Math.cos(Math.toRadians(latitude)) , Math.cos(Math.toRadians(distance/radius)) - Math.sin(Math.toRadians(latitude))* Math.sin(Math.toRadians(latN)) ); System.out.println("Latutude N "+Math.toDegrees(latN) +" Latitide S "+Math.toDegrees(latS) +">>> Longitude E "+Math.toDegrees(longE) +" Longitude W "+Math.toDegrees(longW));
source share