我正在使用 Google Places API 使用 javascript 自动完成地址
当我在输入框中输入地址的单元号和街道号时,它会在建议下拉列表中显示结果,但是当我选择地址时,操作“place_changed”事件的侦听器没有任何地址组件类型为“subpremise”的地址' 即使 formatted_address 属性中也没有单位号码。尽管它确实包含“街道号码”、“城市”、“国家/地区”等其他详细信息
例如:如果我输入“1403/648 Bourke Street”,国家/地区限制为澳大利亚。它在下拉列表中显示了 5 个结果,第一个结果为“1403/648 Bourke street,Melbourne,Australia”,但是当我选择此选项时,我在 place_change 事件侦听器中得到的所有结果都是“648 Bourke street,Melbourne,Australia”
不过,这个问题是间歇性的,它适用于某些单元地址,但不适用于其他单元地址。任何建议将不胜感激!
在我看来,谷歌正在验证该地址是否真实(至少在他们上次更新地点数据库时是真实的 - 我猜是政府记录)。问题是,在创建新的“子前提”地址时,一直在发生细分,并且对这些地址的查找似乎更频繁地中断。奇怪的是,他们允许“无效”地址作为自动完成建议,但随后限制结果。
查询下面的悉尼地址将返回“subpremise”和“street_number”
“澳大利亚新南威尔士州悉尼皮特街 9/321 号”
下面的墨尔本地址只能像“路线”一样准确
“2/321 Pitt Street, 不伦瑞克, 维多利亚州, 澳大利亚”
最大的问题是结果不会在回复中的任何位置返回单位或街道号码。
我将以下 JS 组合在一起,以将用户输入的地址与返回的结果进行比较。如果“数字”缺失,则会添加它们。您可以根据需要进行自定义以适合您的代码。
if (addressType == 'route') {
var regex = RegExp('^(.*)'+GPLACESSTREET.split(' ',1)[0]), // get all the user entered values before a match with the first word from the Google result
result = regex.exec(INPUTFEILD.value);
if ( Array.isArray(result) ) {
FULLSTREETADDRESS = result[1]+''+GPLACESSTREET; // add the street name to the user-entered unit & street number
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)