我正在开发一个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(州名)值的名称。
我怎样才能做到这一点?是否有可能实现这一目标? 请帮助,谢谢
答案 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;
}
}
}
}