administrative_area_level_1
の値を状態として取得し、locality
の値を領域として取得し、さらに使用するアドレスとしてformatted_address
の値を取得します。私は緯度と経度を与えるgoogle maps apiを使い、私が望むデータが入っているjsonオブジェクトを返します。ANDROID JSON 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
値を取得することができますので、どのように私は私のコードを変更する必要がありますか?働いていない
、唯一のアドレス値を得ました。 –