0

Google マップ API の場所のオートコンプリートに問題があります。getPlaces()ドキュメントに記載されている ように機能していないようです:オートコンプリート

詳細が正常に取得された場合、ユーザーが選択したプレイスの詳細を返します。それ以外の場合は、name プロパティが入力フィールドの現在の値に設定されたスタブ Place オブジェクトを返します。

例として次のコードを取り上げます。

<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要素が不完全な場所を選択したときです。関数は、要素の現在の値に設定された name プロパティを持つオブジェクトgetPlace()を返すことを期待しています。代わりに、コンソールがエラーをログに記録しています: 。placeinputUncaught TypeError: Cannot read property 'name' of undefined

場所のオートコンプリートを使用して間違っていることがありますか、それともこの機能が正しく機能していないだけですか? ありがとうございました。

4

1 に答える 1

0

理由は、Google が通常の「name」の代わりに別の識別子「 locality 」を使用したためです。

そのため、「place」のサブ要素「locality」を使用すると、場所の名前を取得できます。

コード:

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

于 2014-05-01T15:24:21.433 に答える