【问题标题】:How to get postal code using user current location in android如何在android中使用用户当前位置获取邮政编码
【发布时间】:2013-09-02 08:12:24
【问题描述】:

我正在尝试获取邮政编码,但无法获取邮政编码(邮政编码)。我可以获取当前城市,但是当我尝试获取邮政编码时,它给了我一个空指针异常。 谁能帮帮我。

final Geocoder gcd = new Geocoder(getApplicationContext(),
                Locale.getDefault());

List<Address> addresses = gcd.getFromLocation(latitude, longitude, 1);
if (addresses.size() > 0)                                   Log.d(addresses.get(0).getLocality()); // I can get city name here.
Log.d(addresses.get(0).getPostalCode();// here i am getting nullpoiter exception

【问题讨论】:

标签: android zipcode


【解决方案1】:

尝试使用android内置的Geocoder获取经纬度的详细信息,而无需调用google location api,如下所示:

使用Context初始化Gecoder:

final Geocoder gcd = new Geocoder(context);

获取 Address 作为 Lat-Long 的结果,此处为 (10) 最大结果。

List<Address> addresses = gcd.getFromLocation(latitude, longitude, 10);

迭代以获取所需的位置详细信息:

for (Address address : addresses) {
    if(address.getLocality()!=null && address.getPostalCode()!=null){
        Log.d(address.getLocality());
        Log.d(address.getPostalCode();
       break;
    }
}

【讨论】:

  • 但是我应该得到邮政编码?我知道上述解决方案,但我需要获取邮政编码..
【解决方案2】:
    Geocoder geocoder = new Geocoder(this, Locale.ENGLISH);
    List<Address> addresses = geocoder.getFromLocation(latitude, longitude, 1);
    Address address=null;
    String addr="";
    String zipcode="";
    String city="";
    String state="";
    if (addresses != null && addresses.size() > 0){

            addr=addresses.get(0).getAddressLine(0)+"," +addresses.get(0).getSubAdminArea();
                 city=addresses.get(0).getLocality();
                 state=addresses.get(0).getAdminArea();

                 for(int i=0 ;i<addresses.size();i++){
                     address = addresses.get(i);
                     if(address.getPostalCode()!=null){
                         zipcode=address.getPostalCode();
                         break;
                     }

                }

【讨论】:

    【解决方案3】:

    我使用谷歌网络服务获取邮政编码。

    以下是谷歌网络服务

    http://maps.googleapis.com/maps/api/geocode/json?latlng=lattitude,longitude&sensor=true

    这里是纬度和经度。所以替换这些值,您将得到响应并解析它们并获取邮政编码。

    【讨论】:

      【解决方案4】:

      我有实用的方法来获取非常整洁且工作正常的邮政编码..

      public static String getPostalCodeByCoordinates(Context context, double lat, double lon) throws IOException {
      
          Geocoder mGeocoder = new Geocoder(context, Locale.getDefault());
          String zipcode=null;
          Address address=null;
      
          if (mGeocoder != null) {
      
              List<Address> addresses = mGeocoder.getFromLocation(lat, lon, 5);
      
              if (addresses != null && addresses.size() > 0) {
      
                  for (int i = 0; i < addresses.size(); i++) {
                      address = addresses.get(i);
                      if (address.getPostalCode() != null) {
                          zipcode = address.getPostalCode();
                          Log.d(TAG, "Postal code: " + address.getPostalCode());
                          break;
                      }
      
                  }
                  return zipcode;
              }
          }
      
          return null;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多