【发布时间】:2014-04-06 19:13:25
【问题描述】:
如何使用 Google Maps JavaScript API v3 解析来自反向地理编码的响应。
geocoder.geocode({'latLng': latlng}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
if (results[0]) {
infowindow.setContent(results[0].formatted_address);
infowindow.open(map, marker);
}
}
这会在弹出窗口中很好地显示格式化的地址,但我试图从响应中提取其他位,最好是街道名称或路线(如果没有找到街道名称)。但是当使用obj = JSON.parse(json); 时,我一直在控制台中收到此错误。
SyntaxError: JSON.parse: 意外字符
如果是 PHP,我会做一堆 for each 循环。是否可以在 JavaScript 中做类似的事情?
这是一个示例
{
"results" : [
{
"address_components" : [
{
"long_name" : "131",
"short_name" : "131",
"types" : [ "street_number" ]
},
{
"long_name" : "Stubbington Avenue",
"short_name" : "Stubbington Ave",
"types" : [ "route" ]
},
{
"long_name" : "Portsmouth",
"short_name" : "Portsmouth",
"types" : [ "locality", "political" ]
},
{
"long_name" : "Portsmouth",
"short_name" : "Portsmouth",
"types" : [ "administrative_area_level_3", "political" ]
},
{
"long_name" : "Portsmouth",
"short_name" : "Portsmouth",
"types" : [ "administrative_area_level_2", "political" ]
},
{
"long_name" : "England",
"short_name" : "England",
"types" : [ "administrative_area_level_1", "political" ]
},
{
"long_name" : "United Kingdom",
"short_name" : "GB",
"types" : [ "country", "political" ]
},
{
"long_name" : "PO2",
"short_name" : "PO2",
"types" : [ "postal_code_prefix", "postal_code" ]
},
{
"long_name" : "Portsmouth",
"short_name" : "Portsmouth",
"types" : [ "postal_town" ]
}
],
"formatted_address" : "131 Stubbington Avenue, Portsmouth PO2, UK",
"geometry" : {
"location" : {
"lat" : 50.8170795,
"lng" : -1.0709701
},
"location_type" : "ROOFTOP",
"viewport" : {
"northeast" : {
"lat" : 50.81842848029149,
"lng" : -1.069621119708498
},
"southwest" : {
"lat" : 50.8157305197085,
"lng" : -1.072319080291502
}
}
},
"types" : [ "street_address" ]
}
],
"status" : "OK"
}
还有一个link to my dev page,里面有我当前的完整代码
总之,我如何从那里的混乱中获得“Stubbington Avenue”?
【问题讨论】:
-
“混乱”是有效的对象语法。不知道为什么 json.parse 会失败。如果你可以把它变成一个对象,那么你可以 for-each 循环,如此处所示@987654322 @
-
console.log(json)一直说它没有定义。但是,如果我将 alert(json) 添加到页面,弹出[object][object] etcdoes,我只是没有正确传递它吗?obj = JSON.parse(results);
标签: javascript json parsing google-maps-api-3 geocode