【发布时间】:2016-09-03 06:31:01
【问题描述】:
我想检索administrative_area_level_1 值作为状态,locality 值作为区域,formatted_address 值作为地址以供进一步使用。我使用谷歌地图 api,我在其中给出纬度和经度,它将返回包含我想要的数据的 json 对象。
以下是我用来检索包含我想要的部分结果的数据的 url 示例。
http://maps.google.com/maps/api/geocode/json?latlng=1.56406166666667,103.626493333333&sensor=true
{
"results" : [
{
"address_components" : [
{
"long_name" : "Jalan Cengal",
"short_name" : "Jalan Cengal",
"types" : [ "route" ]
},
{
"long_name" : "Johor Bahru",
"short_name" : "Johor Bahru",
"types" : [ "locality", "political" ]
},
{
"long_name" : "Johor",
"short_name" : "Johor",
"types" : [ "administrative_area_level_1", "political" ]
},
{
"long_name" : "Malaysia",
"short_name" : "MY",
"types" : [ "country", "political" ]
},
{
"long_name" : "80990",
"short_name" : "80990",
"types" : [ "postal_code" ]
}
],
"formatted_address" : "Jalan Cengal, 80990 Johor Bahru, Johor, Malaysia",
......
所以起初这是我检索我想要的数据的编码。
private void extractPosition(JSONObject json)
{
JSONObject result = json.optJSONArray("results").optJSONObject(0);
JSONArray address_components = result.optJSONArray("address_components");
area.setText(address_components.optJSONObject(1).optString("short_name"));
state.setText(address_components.optJSONObject(2).optString("short_name"));
address.setText(result.optString("formatted_address"));
}
但后来我意识到位置并不总是相同,因为某些坐标具有如下所示的附加信息,因此我不能依赖数据的位置。
{
"results" : [
{
"address_components" : [
{
"long_name" : "Jalan Kebudayaan 11",
"short_name" : "Jalan Kebudayaan 11",
"types" : [ "route" ]
},
{
"long_name" : "Taman Universiti",
"short_name" : "Taman Universiti",
"types" : [ "sublocality_level_1", "sublocality", "political" ]
},
{
"long_name" : "Skudai",
"short_name" : "Skudai",
"types" : [ "locality", "political" ]
},
{
"long_name" : "Johor",
"short_name" : "Johor",
"types" : [ "administrative_area_level_1", "political" ]
},
{
"long_name" : "Malaysia",
"short_name" : "MY",
"types" : [ "country", "political" ]
},
{
"long_name" : "81300",
"short_name" : "81300",
"types" : [ "postal_code" ]
}
],
"formatted_address" : "Jalan Kebudayaan 11, Taman Universiti, 81300 Skudai, Johor, Malaysia",
.....
我应该如何修改我的编码以便检索administrative_area_level_1 和locality 值?
【问题讨论】:
标签: java android json google-maps-api-3