我正在尝试完成一个由我的同学留给我的项目,但是由于我在这个主题上缺乏经验,我倾向于陷入某些代码块中,如果我能理解的话我可以毫不费力地完成项目。我知道你可能会说,为什么不问他,我试过但是我没有回答,我的时钟正在滴答作响。
以下是我不理解的部分/代码块,如果您能向我解释,我将非常感激。
他声明了一个变量
var component_form = {
'street_number': 'short_name',
'route': 'long_name',
'locality': 'long_name',
'administrative_area_level_1': 'short_name',
'country': 'long_name',
'postal_code': 'short_name'
};
我认为该变量适用于此功能
function fillInAddress() {
var place = autocomplete.getPlace();
for (var component in component_form) {
document.getElementById(component).value = "";
document.getElementById(component).disabled = false;
}
for (var j = 0; j < place.address_components.length; j++) {
var att = place.address_components[j].types[0];
if (component_form[att]) {
var val = place.address_components[j][component_form[att]];
document.getElementById(att).value = val;
}
}
}
答案 0 :(得分:1)
查看Google Places API的Place Details回复。
以下只是我从上面的链接复制的一个片段。
如果您查看第二个for
循环并将其与循环和Place Details响应对象进行比较。
来自回复的street_number
等属性被分配到component_form
"html_attributions" : [],
"result" : {
"address_components" : [
{
"long_name" : "48",
"short_name" : "48",
"types" : [ "street_number" ]
},
{
"long_name" : "Pirrama Road",
"short_name" : "Pirrama Road",
"types" : [ "route" ]
},
{
"long_name" : "Pyrmont",
"short_name" : "Pyrmont",
"types" : [ "locality", "political" ]
},
当您进一步挖掘Place API时。以下是自动填充响应包含的内容
types
包含适用于此地点的一系列类型。例如:[“political”,“locality”]或[“establishment”,“geocode”]。
在您的情况下,您将获取0th index
数组中types
的值。
var att = place.address_components[j].types[0];
会为您提供street_number
。您的代码会验证component_form
中是否存在该代码。如果是,则从自动完成响应对象中指定值short_name
。
因此,我假设您要求自动完成参数,并在URL中使用types=street_number
查询。对于下一个,您将拥有types=route
(因为您始终只获得第0个索引)
希望这会有所帮助。