在地理编码器中查找lat和long的邮政编码

时间:2014-08-13 04:50:56

标签: android google-maps zipcode

我正在使用Geocoder查找邮政编码。

我的代码:

    Geocoder geocoder = new Geocoder(this, Locale.ENGLISH);

       try {
  List<Address> addresses = geocoder.getFromLocation(LATITUDE, LONGITUDE, 1);

  if(addresses != null) {
   Address returnedAddress = addresses.get(0);
   StringBuilder strReturnedAddress = new StringBuilder("Address:\n");
   for(int i=0; i<returnedAddress.getMaxAddressLineIndex(); i++) {
    strReturnedAddress.append(returnedAddress.getAddressLine(i)).append("\n");
    strReturnedAddress.append(returnedAddress.getPostalCode()).append("\n");

   }
   myAddress.setText(strReturnedAddress.toString());
  }
  else{
   myAddress.setText("No Address returned!");
  }
 } catch (IOException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
  myAddress.setText("Canont get Address!");
 }

我的问题是邮政编码返回null。

此代码在Android 4.2或以下版本中无效。

如果有在线api通过给予lat long来提供邮政编码。那么请告诉我。

请帮我解决这个问题。

提前致谢。

3 个答案:

答案 0 :(得分:1)

    Geocoder geocoder;
    List<Address> addresses;
    geocoder = new Geocoder(this, Locale.getDefault());
    addresses = geocoder.getFromLocation(latitude, longitude, 1);

    String address = addresses.get(0).getAddressLine(0);
    String city = addresses.get(0).getAddressLine(1);
    String country = addresses.get(0).getAddressLine(2);

邮政编码(美国的邮政编码),如果有的话,是:

 final String postalCode = addresses.get(0).getPostalCode();

答案 1 :(得分:0)

根据Android API和getPostalCode()的文档:

  

返回地址的邮政编码,例如“94110”或null   如果不知道。

简单而悲伤的答案是,没有给定地址的邮政编码数据。很难推荐除Geocoder以外的任何其他选择,Google Geocoder API可能是Android中Geocoder的来源,我认为没有更好的选择(对于世界而言)广泛的目的)。如果搜索仅限于特定国家/地区,则可能存在其他解决方案,例如英国的uk-postcodes API

答案 2 :(得分:0)

从谷歌地理编码器API的json中找到postal_code和formatted_address标签。我希望有帮助......