2016-05-08 13 views
0

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_1locality値を取得することができますので、どのように私は私のコードを変更する必要がありますか?働いていない

答えて

0
private void extractPosition(JSONObject json) 
    { 
     JSONObject result = json.optJSONArray("results").optJSONObject(0); 
     JSONArray address_components = result.optJSONArray("address_components"); 

     for (int i =0; i<address_components.length();i++) 
     { 
      String searchKeyword; 

      searchKeyword = address_components.optJSONObject(i).optString("types"); 
      Log.d("test", searchKeyword); 

      if (searchKeyword.contains("locality")) 
      { 
       area.setText(address_components.optJSONObject(i).optString("short_name")); 
      } 

      if (searchKeyword.contains("administrative_area_level_1")) 
      { 
       state.setText(address_components.optJSONObject(i).optString("short_name")); 
      } 
     } 

     address.setText(result.optString("formatted_address")); 
    } 
0
private void extractPosition(JSONObject json) 
{ 
    JSONObject result = json.optJSONArray("results").optJSONObject(0); 
    JSONArray address_components = result.optJSONArray("address_components"); 

    for (int i =0; i<address_components.lenght;i++){ 

     if(address_components.optJSONObject(1).optString("short_name").equals("locality")) 
     area.setText(address_components.optJSONObject(1).optString("short_name")); 

     if (address_components.optJSONObject(1).optString("short_name").equals("administrative_area_level_1")) 
     state.setText(address_components.optJSONObject(2).optString("short_name")); 

     address.setText(result.optString("formatted_address")); 
} 
} 
+0

、唯一のアドレス値を得ました。 –

関連する問題