2012-02-01 30 views
1

嘗試從Google Maps API中讀取一些信息到JS與我的應用程序中。但沒有安靜得到我的頭來訪問返回的json對象中的信息。 我的JS是...使用javascript讀取jSON數據

 var site = "./maps/scripts/reverseGeocode/locale.php"; 
     var params = "lat="+lat+"&"+"lng="+lng; 

     var object = system.functions().ajax(site, params); 

      var result = object.address_components[0]; 

      alert(result); 

JSON對象是如下...

{ 
    "results" : [ 
     { 
    "address_components" : [ 
     { 
      "long_name" : "24", 
      "short_name" : "24", 
      "types" : [ "street_number" ] 
     }, 
     { 
      "long_name" : "Carabella St", 
      "short_name" : "Carabella St", 
      "types" : [ "route" ] 
     }, 
     { 
      "long_name" : "Kirribilli", 
      "short_name" : "Kirribilli", 
      "types" : [ "locality", "political" ] 
     }, 
     { 
      "long_name" : "New South Wales", 
      "short_name" : "NSW", 
      "types" : [ "administrative_area_level_1", "political" ] 
     }, 
     { 
      "long_name" : "Australia", 
      "short_name" : "AU", 
      "types" : [ "country", "political" ] 
     }, 
     { 
      "long_name" : "2061", 
      "short_name" : "2061", 
      "types" : [ "postal_code" ] 
     } 
    ], 
    "formatted_address" : "24 Carabella St, Kirribilli NSW 2061, Australia", 
    "geometry" : { 
     "bounds" : { 
      "northeast" : { 
       "lat" : -33.84886950, 
       "lng" : 151.21871730 
      }, 
      "southwest" : { 
       "lat" : -33.84960880, 
       "lng" : 151.21810640 
      } 
     }, 
     "location" : { 
      "lat" : -33.84892950, 
      "lng" : 151.21817770 
     }, 
     "location_type" : "RANGE_INTERPOLATED", 
     "viewport" : { 
      "northeast" : { 
       "lat" : -33.84789016970850, 
       "lng" : 151.2197608302915 
      }, 
      "southwest" : { 
       "lat" : -33.85058813029150, 
       "lng" : 151.2170628697085 
      } 
     } 
    }, 
    "types" : [ "street_address" ] 
    }, 
    { 
    "address_components" : [ 
     { 
      "long_name" : "Kirribilli", 
      "short_name" : "Kirribilli", 
      "types" : [ "locality", "political" ] 
     }, 
     { 
      "long_name" : "New South Wales", 
      "short_name" : "NSW", 
      "types" : [ "administrative_area_level_1", "political" ] 
     }, 
     { 
      "long_name" : "Australia", 
      "short_name" : "AU", 
      "types" : [ "country", "political" ] 
     }, 
     { 
      "long_name" : "2061", 
      "short_name" : "2061", 
      "types" : [ "postal_code" ] 
     } 
    ], 
    "formatted_address" : "Kirribilli NSW 2061, Australia", 
    "geometry" : { 
     "bounds" : { 
      "northeast" : { 
       "lat" : -33.84245090, 
       "lng" : 151.22032150 
      }, 
      "southwest" : { 
       "lat" : -33.85270230, 
       "lng" : 151.21152060 
      } 
     }, 
     "location" : { 
      "lat" : -33.84753980000001, 
      "lng" : 151.21314540 
     }, 
     "location_type" : "APPROXIMATE", 
     "viewport" : { 
      "northeast" : { 
       "lat" : -33.84245090, 
       "lng" : 151.22032150 
      }, 
      "southwest" : { 
       "lat" : -33.85270230, 
       "lng" : 151.21152060 
      } 
     } 
    }, 
    "types" : [ "locality", "political" ] 
    }, 
    { 
    "address_components" : [ 
     { 
      "long_name" : "2061", 
      "short_name" : "2061", 
      "types" : [ "postal_code" ] 
     }, 
     { 
      "long_name" : "New South Wales", 
      "short_name" : "NSW", 
      "types" : [ "administrative_area_level_1", "political" ] 
     }, 
     { 
      "long_name" : "Australia", 
      "short_name" : "AU", 
      "types" : [ "country", "political" ] 
     } 
    ], 
    "formatted_address" : "New South Wales 2061, Australia", 
    "geometry" : { 
     "bounds" : { 
      "northeast" : { 
       "lat" : -33.84234370, 
       "lng" : 151.22032150 
      }, 
      "southwest" : { 
       "lat" : -33.85270230, 
       "lng" : 151.20932150 
      } 
     }, 
     "location" : { 
      "lat" : -33.84839570, 
      "lng" : 151.21461550 
     }, 
     "location_type" : "APPROXIMATE", 
     "viewport" : { 
      "northeast" : { 
       "lat" : -33.84234370, 
       "lng" : 151.22032150 
      }, 
      "southwest" : { 
       "lat" : -33.85270230, 
       "lng" : 151.20932150 
      } 
     } 
    }, 
    "types" : [ "postal_code" ] 
    }, 
    { 
    "address_components" : [ 
     { 
      "long_name" : "New South Wales", 
      "short_name" : "NSW", 
      "types" : [ "administrative_area_level_1", "political" ] 
     }, 
     { 
      "long_name" : "Australia", 
      "short_name" : "AU", 
      "types" : [ "country", "political" ] 
     } 
    ], 
    "formatted_address" : "New South Wales, Australia", 
    "geometry" : { 
     "bounds" : { 
      "northeast" : { 
       "lat" : -28.15619210, 
       "lng" : 153.63873290 
      }, 
      "southwest" : { 
       "lat" : -37.50503180, 
       "lng" : 140.99921220 
      } 
     }, 
     "location" : { 
      "lat" : -31.25321830, 
      "lng" : 146.9210990 
     }, 
     "location_type" : "APPROXIMATE", 
     "viewport" : { 
      "northeast" : { 
       "lat" : -28.15619210, 
       "lng" : 153.63873290 
      }, 
      "southwest" : { 
       "lat" : -37.50503180, 
       "lng" : 140.99921220 
      } 
     } 
    }, 
    "types" : [ "administrative_area_level_1", "political" ] 
    }, 
    { 
    "address_components" : [ 
     { 
      "long_name" : "Australia", 
      "short_name" : "AU", 
      "types" : [ "country", "political" ] 
     } 
    ], 
    "formatted_address" : "Australia", 
    "geometry" : { 
     "bounds" : { 
      "northeast" : { 
       "lat" : -9.22108360, 
       "lng" : 159.10545890 
      }, 
      "southwest" : { 
       "lat" : -54.77721850, 
       "lng" : 112.92145430 
      } 
     }, 
     "location" : { 
      "lat" : -25.2743980, 
      "lng" : 133.7751360 
     }, 
     "location_type" : "APPROXIMATE", 
     "viewport" : { 
      "northeast" : { 
       "lat" : -9.22108360, 
       "lng" : 159.10545890 
      }, 
      "southwest" : { 
       "lat" : -54.77721850, 
       "lng" : 112.92145430 
      } 
     } 
    }, 
    "types" : [ "country", "political" ] 
    } 
    ], 
    "status" : "OK" 
} 

我試圖訪問該地址組件...但我不確定如何正確遍歷對象..有人可以幫助我。

  "long_name" : "Kirribilli", 
      "short_name" : "Kirribilli", 
+0

是的,這是我的家庭住址......請不要稈我 – Christopher 2012-02-01 23:29:53

回答

3

這應做到:

var long_name = object.address_components[2].long_name; 
var short_name = object.address_components[2].short_name; 

編輯:建議你使用jQuery的阿賈克斯,而不是爲獲取:

var site = "./maps/scripts/reverseGeocode/locale.php"; 
var params = "lat="+lat+"&"+"lng="+lng; 

$.get(site + '/' + params, function(data) { 
    var long_name = data.address_components[2].long_name; 
    var short_name = data.address_components[2].short_name; 
}); 
+0

感謝您的及時響應...它返回object.address_components是未定義的。這是我遇到的問題......它有點好奇嗎? – Christopher 2012-02-01 23:26:59

+0

謝謝helk,但我試圖避免這種類型的事情的jQuery。 – Christopher 2012-02-01 23:47:44

+0

然後你必須解碼json的舊時尚的方式=)這裏是一個教程http://www.json.org/js.html – 2012-02-01 23:51:36