如何在Google地理编码API中仅获取州名(administrative_area_level_1)

时间:2014-08-26 12:44:18

标签: android json google-maps

我正在开发一个Android应用程序,它必须实现Google Geocode才能获得州名(administrative_area_level_1)。 为了得到它,我已经能够使用Android中常用的LocationManager获得经度和纬度。现在我需要做的就是将lat和long传递给Google Geocode网址:

  

https://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452

结果,上面的url显示了(JSON和XML)多个结果和位置类型。 我想要实现的是获取JSON中显示的第一个结果的administrative_area_level_1(州名)值的名称。

我怎样才能做到这一点?是否有可能实现这一目标? 请帮助,谢谢

1 个答案:

答案 0 :(得分:1)

尝试使用此代码从google api获取州名。

JSONObject jsonObj = new JSONObject(jsonResults.toString());
         String Status = jsonObj.getString("status");
        if (Status.equalsIgnoreCase("OK")) 
        {
           JSONArray Results = jsonObj.getJSONArray("results");
           JSONObject zero = Results.getJSONObject(0);
           JSONArray address_components = zero.getJSONArray("address_components");

           for (int i = 0; i < address_components.length(); i++) 
           {
               JSONObject zero2 = address_components.getJSONObject(i);
               String long_name = zero2.getString("long_name");
               JSONArray mtypes = zero2.getJSONArray("types");
               String Type = mtypes.getString(0);

               if (Type.equalsIgnoreCase("locality")) 
               {
                  City = long_name;


                  Log.e("current city name:","city:"+City);


               } 
               else
               {
                   if (Type.equalsIgnoreCase("administrative_area_level_2")) 
                   {
                      County = long_name;
                   } 
                   else if (Type.equalsIgnoreCase("administrative_area_level_1")) 
                   {
                     State = long_name;


                     Log.e("current city name:","administrative_area_level_1:"+State);
                   } 
                   else if (Type.equalsIgnoreCase("country")) 
                   {
                     Country = long_name;
                   } 
               }
           }
        }