【发布时间】:2011-05-02 10:04:56
【问题描述】:
有什么方法可以从 location 或 lat 或 long 获取当前用户位置的邮政编码。 如果有怎么办?
【问题讨论】:
有什么方法可以从 location 或 lat 或 long 获取当前用户位置的邮政编码。 如果有怎么办?
【问题讨论】:
使用安卓Geocoder API!
getFromLocation(double, double, int) 就是你所需要的。
【讨论】:
是的,你可以......你需要做的就是提取
http://maps.google.com/maps/geo?ll=纬度,经度
http://maps.google.com/maps/geo?ll=10.345561,123.896932
或者试试这个解决方案。我可以给你一个想法。
你可以拥有一个城市,对吧?有了这个 json 数据,如果你有这个格式的邮政编码的数据库(在 maxmind.com)
国家代码 |城市 |邮政编码
现在查询与谷歌返回的国家代码相关的数据库。
更新
Geocoding API v2 已于 2013 年 9 月 9 日停用。
这是 API 服务的新 URL
http://maps.googleapis.com/maps/api/geocode/json?latlng=your_latitude,your_longitude
http://maps.googleapis.com/maps/api/geocode/json?latlng=10.32,123.90&sensor=true
【讨论】:
基于地理编码器的实现:
private String getZipCodeFromLocation(Location location) {
Address addr = getAddressFromLocation(location);
return addr.getPostalCode() == null ? "" : addr.getPostalCode();
}
private Address getAddressFromLocation(Location location) {
Geocoder geocoder = new Geocoder(this);
Address address = new Address(Locale.getDefault());
try {
List<Address> addr = geocoder.getFromLocation(location.getLatitude(), location.getLongitude(), 1);
if (addr.size() > 0) {
address = addr.get(0);
}
} catch (IOException e) {
e.printStackTrace();
}
return address;
}
您还可以从地址获取其他信息,例如城市名称。
【讨论】: