我有谷歌地图api放置自动完成的问题。函数getPlaces()
似乎无法按照文档中的描述运行:
Autocomplete
如果有详细信息,则返回用户选择的地点的详细信息 成功检索。否则返回一个存根Place对象,用 name属性设置为输入字段的当前值。
以下面的代码为例:
<html>
<head>
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?v=3&sensor=false&libraries=places"></script>
<script type="text/javascript">
initialize = function () {
var input = document.getElementById('locationsearch');
var options = {
types: ['(cities)']
};
autocomplete = new google.maps.places.Autocomplete(input, options);
}
google.maps.event.addDomListener(window, 'load', initialize);
submitform = function () {
searchplace = autocomplete.getPlace();
console.log(searchplace.name);
}
</script>
</head>
<body>
<form onsubmit="submitform();return false;">
<input type="text" id="locationsearch"/>
<input type="button" value="search" onclick="submitform(); return false;"/>
</form>
</body>
</html>
这个简单的代码使用input="text"
元素中的自动完成功能,按下它旁边的按钮后,它应该在控制台中记录地名。
我遇到的问题是input
元素选择了不完整的地方。我希望getPlace()
函数返回place
对象,并将name属性设置为当前值input
元素。相反,控制台记录错误:
Uncaught TypeError: Cannot read property 'name' of undefined
。
使用地方自动填充功能是否有问题或者此功能是否无法正常工作? 谢谢。
答案 0 :(得分:0)
原因是Google使用了另一个标识符“ locality ”而不是通常的“名称”。
因此,如果你使用'place'中的子元素'locality',你可以获取该地点的名称。
代码:
var val = place.address_components[0][componentForm['locality']];