我有一个Android应用程序,可以找到您当前的位置,但我需要弄清楚哪个邮政编码位于当前位置20英里内。找到这些信息的最佳方法是什么?是否有公共API或Web服务?我可以给出纬度/经度或邮政编码作为输入。
答案 0 :(得分:0)
您必须使用反向地理编码器,例如:
答案 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/来创建自己的数据库来使用