2012-02-01 81 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