获取纬度/经度附近的邮政编码列表

时间:2012-04-20 13:26:30

标签: java android

我有一个Android应用程序,可以找到您当前的位置,但我需要弄清楚哪个邮政编码位于当前位置20英里内。找到这些信息的最佳方法是什么?是否有公共API或Web服务?我可以给出纬度/经度或邮政编码作为输入。

3 个答案:

答案 0 :(得分:0)

您必须使用反向地理编码器,例如:

http://www.geonames.org/

答案 1 :(得分:0)

我首先要使用Haversine公式。使用从中获得的结果来查找相对于该半径的zipcode。

import com.google.android.maps.GeoPoint;  

public class DistanceCalculator {  

   private double Radius;  

   // R = earth's radius (mean radius = 6,371km)  
   // Constructor  
   DistanceCalculator(double R) {  
      Radius = R;  
   }  

   public double CalculationByDistance(GeoPoint StartP, GeoPoint EndP) {  
      double lat1 = StartP.getLatitudeE6()/1E6;  
      double lat2 = EndP.getLatitudeE6()/1E6;  
      double lon1 = StartP.getLongitudeE6()/1E6;  
      double lon2 = EndP.getLongitudeE6()/1E6;  
      double dLat = Math.toRadians(lat2-lat1);  
      double dLon = Math.toRadians(lon2-lon1);  
      double a = Math.sin(dLat/2) * Math.sin(dLat/2) +  
         Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2)) *  
         Math.sin(dLon/2) * Math.sin(dLon/2);  
      double c = 2 * Math.asin(Math.sqrt(a));  
      return Radius * c;  
   }  
}  

答案 2 :(得分:0)

据我所知,没有api,但你可以使用zipcodes数据库http://zips.sourceforge.net/来创建自己的数据库来使用