我有一个 android 应用程序可以找到您当前的位置,但我需要找出哪些邮政编码在当前位置的 20 英里范围内。找到这些信息的最佳方式是什么?是否有公共 API 或 Web 服务?我可以提供纬度/经度或邮政编码作为输入。
问问题
1666 次
3 回答
0
您将不得不使用反向地理编码器,例如:
于 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 回答