这是我的工作代码:http://jsfiddle.net/spadez/5ntLetey/1/
它完美无缺,但我试图将剩余的信息提取到字段中。这是我之前在网上找到的lat和long的代码:
lat.val(results[0].geometry.location.lat());
lng.val(results[0].geometry.location.lng());
如何提取其余信息?这是我尝试过但没有工作的一个例子:
country_short.val(results[0].address_components.country());
Here is the API documentation,我做错了什么?
答案 0 :(得分:1)
你没有做任何特别错误的事情,不幸的是,返回的地址组件可能大不相同。例如,如果你要对一个可能位于海洋中间的坐标集进行地理编码,那么你就不会得到许多address
个组件,也许什么都没有,而在某个地方的中间像纽约市一样,有很多组件可以归还。
您需要做的是解析返回的响应以找到您想要的内容country
,并且仅在中将其插入到您的字段中,且仅当有地址组件时才type
"国家"。
因此,举例来说,为了让国家变得短而长,你会做这样的事情:
// Get Country value.
var country = getCountry(results[0].address_components)
$('#country_long').val(country.long);
$('#country_short').val(country.short);
调用看起来像这样的函数:
function getCountry(addressComponents) {
var returnCountry = {
'long': 'N/A',
'short': 'N/A'
};
// Loop through all address components and find country if possible.
$(addressComponents).each(function (componentIndex, component) {
// loop through all "types" of each component to find if there is a type of "country"
$(component.types).each(function (indexTypes, type) {
if (type == 'country') {
// Then return the long_name and short_name of the component
returnCountry.long = component.long_name;
returnCountry.short = component.short_name;
}
});
});
return returnCountry;
}