0

我对谷歌地图 api 地方自动完成有问题。似乎该功能getPlaces()不像文档中描述的那样工作: 自动完成

如果详细信息已成功检索,则返回用户选择的地点的详细信息。否则返回一个存根 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一个名称属性设置为input元素当前值的对象。相反,控制台正在记录错误: Uncaught TypeError: Cannot read property 'name' of undefined

使用地点自动完成功能我做错了什么还是这个功能根本无法正常工作?谢谢你。

4

1 回答 1

0

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

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

代码:

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

例子

于 2014-05-01T15:24:21.433 回答