Android 来自位置的ZipCode

Android 来自位置的ZipCode,android,location,zipcode,Android,Location,Zipcode,是否有任何方法可以从location、lat或long获取当前用户位置的邮政编码。 如果是,怎么做?是的,您可以……您只需提取 纬度、经度 或者试试这个解决方案。我可以给你一个想法 你可以拥有一座城市,对吗?有了这个json数据,如果您有一个zipcode的数据库(在maxmind.com上)使用这种格式 CountryCode | City | ZipCode 宿务6000 现在查询您的数据库,该数据库与Google返回的countrycode相关 更新 地理编码API v2已于2013年

是否有任何方法可以从location、lat或long获取当前用户位置的邮政编码。
如果是,怎么做?

是的,您可以……您只需提取

纬度、经度

或者试试这个解决方案。我可以给你一个想法

你可以拥有一座城市,对吗?有了这个json数据,如果您有一个zipcode的数据库(在maxmind.com上)使用这种格式

CountryCode | City | ZipCode
宿务6000

现在查询您的数据库,该数据库与Google返回的countrycode相关

更新

地理编码API v2已于2013年9月9日被拒绝。

下面是API服务的新URL

使用Android


getFromLocation(double,double,int)是您所需要的一切。

基于地理编码器的实现:

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;
}
私有字符串getZipCodeFromLocation(位置){
地址addr=getAddressFromLocation(位置);
返回addr.getPostalCode()==null?”:addr.getPostalCode();
}
专用地址getAddressFromLocation(位置){
Geocoder Geocoder=新的Geocoder(本);
地址=新地址(Locale.getDefault());
试一试{
List addr=geocoder.getFromLocation(location.getLatitude(),location.getLatitude(),1);
如果(地址大小()>0){
地址=地址获取(0);
}
}捕获(IOE异常){
e、 printStackTrace();
}
回信地址;
}

您还可以从地址获取其他信息,例如城市名称。

@Udaykiran您需要另一个包含zipcode记录的数据库。这是该数据库的示例。如果您还想下载另一个zipcode数据库,请单击此处“>ZipCode数据库谢谢你救了我一天!!!!还有@Udaykiran尝试给美国的lat long,它会给你邮政编码,我不知道印度有什么问题!!!!这个答案不再有效,因为谷歌已经拒绝了地理编码API v2。Android地理编码API是一个更好的解决方案。我已经更新了我的答案。
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;
}