我正在尝试通过jquery ajax从谷歌地图中检索某个位置的纬度和经度。
这是我的JavaScript代码:
var lat;
var lng;
function setCordinates(address)
{
var ret = false;
data = "address="+address;
$.ajax({
type: "GET",
url: "https://maps.googleapis.com/maps/api/geocode/json",
data: data,
cache: false,
dataType: 'json',
success: function(json_data)
{
lat = json_data.results.geometry.location.lat;
lng = json_data.results.geometry.location.lng;
ret = true;
},
error: function()
{
alert("There was an error!");
}
});
return ret;
}
当我从我的控制台预览响应主体时,我将json数据返回为:
{
"results" : [
{
"address_components" : [
{
"long_name" : "Uyo",
"short_name" : "Uyo",
"types" : [ "locality", "political" ]
},
{
"long_name" : "Akwa Ibom",
"short_name" : "Akwa Ibom",
"types" : [ "administrative_area_level_1", "political" ]
},
{
"long_name" : "Nigeria",
"short_name" : "NG",
"types" : [ "country", "political" ]
}
],
"formatted_address" : "Uyo, Nigeria",
"geometry" :
{
"bounds" :
{
"northeast" :
{
"lat" : 5.0906023,
"lng" : 8.0030251
},
"southwest" :
{
"lat" : 4.9681658,
"lng" : 7.8638077
}
},
"location" :
{
"lat" : 5.0377396,
"lng" : 7.9127945
},
"location_type" : "APPROXIMATE",
"viewport" :
{
"northeast" :
{
"lat" : 5.0906023,
"lng" : 8.0030251
},
"southwest" :
{
"lat" : 4.9681658,
"lng" : 7.8638077
}
}
},
"partial_match" : true,
"types" : [ "locality", "political" ]
}
],
"status" : "OK"
}
我想从位置获取lat和lng的值,但是我收到错误:
TypeError: json_data.results.geometry is undefined
我查看了this post,this post,this post,this post和this post,但我真的不知道该怎么做。他们似乎都无关。请帮助我仍然是json的新手。感谢。
答案 0 :(得分:2)
怎么样:
lat = json_data.results[0].geometry.location.lat;
lng = json_data.results[0].geometry.location.lng;
答案 1 :(得分:1)
success: function(json_data)
{
lat = json_data.results[0].geometry.location.lat;
lng = json_data.results[0].geometry.location.lng;
ret = true;
}
结果是一个数组,您可能还想包含一些逻辑来处理返回多个结果的情况。 /编辑删除的片段
答案 2 :(得分:1)
results是JSON响应中的数组,因此您必须首先访问数组的元素:
lat = json_data.results[0].geometry.location.lat;
答案 3 :(得分:0)
你的结果是数组。
所以你必须通过以下方式获得lat / lng的值:
json_data.results[0].geometry.location.lat
和
json_data.results[0].geometry.location.lng
答案 4 :(得分:0)
使用json.parse将其转换为您可以使用的对象。
尝试:
var json_dataObject = JSON.Parse(json_data);
var lat = json_dataObject.results[0].geometry.location.lat;
var lat = json_dataObject.results[0].geometry.location.lng;