谷歌地图api放置自动完成getPlace()无法正常工作

时间:2013-05-13 20:34:49

标签: google-maps-api-3 autocomplete google-places-api

我有谷歌地图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

使用地方自动填充功能是否有问题或者此功能是否无法正常工作? 谢谢。

1 个答案:

答案 0 :(得分:0)

原因是Google使用了另一个标识符“ locality ”而不是通常的“名称”。

因此,如果你使用'place'中的子元素'locality',你可以获取该地点的名称。

代码:

 var val = place.address_components[0][componentForm['locality']];

Example