我知道如何从经度和纬度坐标获取邮政编码,但我不知道如何获得反向(来自邮政编码的经度和纬度)我该怎么做?
在 Android
中从经度和纬度坐标获取邮政编码的代码:
Geocoder geoCoder = new Geocoder(getApplicationContext(), Locale.getDefault());
List<Address> address = null;
if (geoCoder != null){
try {
address= geoCoder.getFromLocation(latPoint, lngPoint, 1);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
if (address.size()> 0){
String postCode = address.get(0).getPostalCode();
}
答案 0 :(得分:2)
你几乎回答了自己的问题。 Android Geocoder类可用于执行地理编码和反向地理编码。地址到latlon的转换称为地理编码; latlon到地址转换(如您的示例中所示)称为反向地理编码。我已修改您的示例以使用英国邮政编码显示地理编码示例:
Geocoder geoCoder = new Geocoder(getActivity(), Locale.getDefault());
List<Address> address = null;
if (geoCoder != null) {
try {
address = geoCoder.getFromLocationName("KT48LY", 10);
} catch (IOException e1) {
e1.printStackTrace();
}
if (address.size() > 0) {
Address first = address.get(0);
double lat = first.getLatitude();
double lon = first.getLongitude();
}
}
答案 1 :(得分:0)
不幸的是,Geocoder只是一个门面。实现取决于设备,而不是强制性的。如果Google自己的Geocoder服务是后端,getFromLocationName方法可能足够可靠,同时将邮政编码和国家/地区的组合指定为查询字符串,例如:
10007, USA
如果这对您不起作用,您可以使用GeoNames.org中的地理位置数据库。我刚刚尝试了一个基于邮政编码和国家/地区名称的查询,并从中获得了正确的结果。
GeoNames有一个支持JSON和XML数据的Web服务API,它们还为不同编程语言的各种客户端库提供下载链接。