1

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

4

3 回答 3

0

您将不得不使用反向地理编码器,例如:

http://www.geonames.org/

于 2012-04-20T13:31:14.627 回答
0

我将从使用Haversine公式开始。使用从中获得的结果来查找相对于该半径的邮政编码。

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;  
   }  
}  
于 2012-04-20T13:34:06.510 回答
0

据我所知,没有 apis,但是您可以使用邮政编码数据库http://zips.sourceforge.net/创建您自己的数据库以使用

于 2012-04-20T13:34:27.057 回答