20

ウェブサイトに Google プレイス オートコンプリートを追加しようとしています。Googleマップをインスタンス化せずに検索テキストボックスをオートコンプリートにバインドすると問題が発生します。私がやろうとしているのは、オートコンプリートを検索フィールドのテキスト候補として使用したいということです。しかし悲しいことに、私が見たすべてのチュートリアルでは、オートコンプリートが Google マップと共に使用されていました。これを回避する方法はありますか?

前もって感謝します。

4

9 に答える 9

12

これはかなり古いスレッドですが、Google は現在、すべての地図ベースのサービスに API を必要としており、コード例を少し単純化できると感じました。

head 要素内 (入力要素 id 属性でコードを更新):

<script type="text/javascript">
  function initAutocomplete() {
    // Create the autocomplete object, restricting the search to geographical
    // location types.
    autocomplete = new google.maps.places.Autocomplete(
        /** @type {!HTMLInputElement} */(document.getElementById('YOUR_INPUT_ELEMENT_ID')),
        {types: ['geocode']});

    // When the user selects an address from the dropdown, populate the address
    // fields in the form.
    autocomplete.addListener('place_changed', fillInAddress);
  }

  function fillInAddress() {
    // Get the place details from the autocomplete object.
    var place = autocomplete.getPlace();

  }
    </script>

ページ内で、上記のスクリプトと一致する ID 属性を持つテキスト入力があることを確認します。

<input type="text" id="YOUR_INPUT_ELEMENT_ID" />

body タグを閉じる直前に、このスクリプトを追加します (独自の API キーで更新します)。

<script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&libraries=places&callback=initAutocomplete" async defer></script>

その他の注意事項:

于 2016-08-19T14:54:57.527 に答える
7

Secretkey を API キーに置き換えるだけです。

<head>
  <link type="text/css" rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,500">
  <script src="https://maps.googleapis.com/maps/api/js?key=Secretkey&libraries=places" async defer></script>
  <script>
    var autocomplete;
    function initialize() {
      autocomplete = new google.maps.places.Autocomplete(
        /** @type {HTMLInputElement} */
        (document.getElementById('autocomplete')),
        { types: ['geocode'] }
      );
      google.maps.event.addListener(autocomplete, 'place_changed', function() {});
    }
  </script>
</head>

<div id="locationField">
  <input id="autocomplete" name="location" placeholder="Enter your address" onFocus="geolocate()" type="text"></input>
</div>

API キーを取得するにはhttps://developers.google.com/maps/documentation/javascript/get-api-key

于 2017-08-21T12:42:37.713 に答える
0
function initialize()
    {
        var input = document.getElementById('location');
        var autocomplete = new google.maps.places.Autocomplete(
                /** @type {HTMLInputElement} */(input),
                {
                    types: ['(cities)'],
                });
        google.maps.event.addListener(autocomplete, 'place_changed', function() {
            var place = autocomplete.getPlace();
            if (!place.geometry) {
                return;
            }
            //document.getElementById('fLat').value = place.geometry.location.lat();
            //document.getElementById('fLong').value = place.geometry.location.lng();

            var address = '';
            if (place.address_components)
            {
                address = [
                    (place.address_components[0] && place.address_components[0].short_name || ''),
                    (place.address_components[1] && place.address_components[1].short_name || ''),
                    (place.address_components[2] && place.address_components[2].short_name || '')
                ].join(' ');
            }
            LoadEventCategory();
            LoadYelpData();
        });
    }

    google.maps.event.addDomListener(window, 'load', initialize);
于 2014-09-10T07:57:24.640 に答える
0

これも試してください

<script>
  google.maps.event.addDomListener(window, 'load', initialize);
    function initialize() {
      var input = document.getElementById('autocomplete_search');
      var autocomplete = new google.maps.places.Autocomplete(input);
      autocomplete.addListener('place_changed', function () {
      var place = autocomplete.getPlace();
      // place variable will have all the information you are looking for.
      $('#lat').val(place.geometry['location'].lat());
      $('#long').val(place.geometry['location'].lng());
    });
  }
</script>

ここで利用可能な完全な例

于 2019-01-29T12:31:08.567 に答える
-5
                <div class="col-sm-4">
                                    <span class="input input--hoshi">
                                        <input class="input__field input__field--hoshi" id="taddress" type="text"  placeholder="" onmouseover="notnull2(this)" onblur="validtaddr(this); validateaddr2(this);" >
                                        <label class="input__label input__label--hoshi input__label--hoshi-color-2" for="dateto">
                                            <span class="input__label-content input__label-content--hoshi">To</span>
                                        </label>
                                    </span>
                                    <div id="taddress-error" style="color:red"></div>
                                    <script>

                                        function validtaddr() {
                                            if (IsplaceChange == false)
                                            {


                                                if ($("#taddress").val != "") {

                                                    $("#taddress-error").html(" ");
                                                }

                                                $("#taddress").val(null)
                                               //  $("#faddress-error").html("please Enter valid location");

                                            }

                                        };



                                    </script>
                                                                    <script>
                                        var autocomplete;
                                        function initialize1() {
                                          autocomplete = new google.maps.places.Autocomplete(
                                              (document.getElementById('taddress')),
                                              { types: ['geocode'] });
                                          google.maps.event.addListener(autocomplete, 'place_changed', function() {
                                          });
                                        }
                                                                    </script>
                                                                    <script>
                                                var IsplaceChange = false;
                                                $(document).ready(function () {
                                                    var input = document.getElementById('taddress');
                                                    var autocomplete = new google.maps.places.Autocomplete(input, { types: ['(cities)'] });

                                                    google.maps.event.addListener(autocomplete, 'place_changed', function () {
                                                        var place = autocomplete.getPlace();

                                                        IsplaceChange = true;
                                                    });

                                                    $("#taddress").keydown(function () {
                                                        IsplaceChange = false;
                                                    });


                                                });
                                    </script>
                                    <script>

                                        $("#taddress").keyup(function () {
                                            var a = $("#taddress").val();
                                        if (a.match(/^[ t`~!@@#$%^&*()_|+\-=?;:'"<>\{\}\[\]\\\/]+/gi)) {


                                            $("#taddress-error").html("White space & special char are not allow");
                                            $("#taddress").val(null);
                                            //document.form1.text1.focus();
                                            return false;
                                        }
                                        else {

                                            $("#taddress-error").html("");
                                            //document.form1.text1.focus();
                                            return true;
                                        }

                                    });
                                    </script>




                                    <script>

                                            function validateaddr2() {
                                                if ($("#taddress").val() == "")
                                                {
                                                    $("#taddress-error").html("Please enter valid location");
                                                    return false;
                                                }
                                                else {
                                                    $("#taddress-error").html("");
                                                }
                                            }
                                            function notnull2() {
                                                if ($("#taddress").val != "") {

                                                    $("#taddress-error").html(" ");
                                                }
                                                else {
                                                    $("#taddress-error").html(" Please enter valid location");
                                                }
                                            }
                                    </script>
                                </div>
于 2016-01-20T08:33:35.967 に答える