8

Places ライブラリを使用して住所入力をオートコンプリートします。検索は 1 つの都市のみに制限されており、次のような出力が得られます。

「ロシア、モスクワ、レーニンスキー プロスペクト 28」

「Rossiya、Moskva」を非表示にする方法は?...

私のクエリ:

function() {
        // Search bounds
        var p1 = new google.maps.LatLng(54.686534, 35.463867);
        var p2 = new google.maps.LatLng(56.926993, 39.506836);
        self.options = {
            bounds : new google.maps.LatLngBounds(p1, p2),
            componentRestrictions: {country: 'ru'},
        };

        var elements = document.querySelectorAll('.address');

        for ( var i = 0; i < elements.length; i++) {
            var autocomplete = new google.maps.places.Autocomplete(elements[i],
                    self.options);
        }
4

5 に答える 5

5

できますが、入力フィールドの値を 2 か所で置き換える必要があります。例:

var autocomplete = new google.maps.places.Autocomplete(input, placesOptions);
var input = document.getElementById('searchTextField');

「place_changed」イベント内で、次のことを行います。

placeResult = autocomplete.getPlace();
//This will get only the address
input.value = placeResult.name;

これにより、searchtextfield の値が通りに変更されます。

2 位は少しトリッキーです。

input.addEventListener('blur', function(){
// timeoutfunction allows to force the autocomplete field to only display the street name.
if(placeResult){ setTimeout(function(){ input.value = placeResult.name; }, 1); }

これを行う必要がある理由は、blur のイベント リスナーのみを追加すると、Google プレイスが入力フィールドに完全な住所を入力するため、Google が更新するのを「待機」し、待機して変更を強制する必要があるためです。数ミリ秒。

setTimeout 関数なしで試してみると、私の言いたいことがわかるでしょう。

于 2012-10-30T20:22:19.280 に答える
1

編集

できません。逆に、あなたはただ都市を探していたのです。アドレスコンポーネントから通りの名前(これは通りの名前だと思います)だけを印刷する方法はありません。


質問されたものの反対

ドキュメントから:

locality(都市)タイプのコレクションは、またはのいずれかに一致する結果を返すようにPlaceサービスに指示しますadministrative_area3

var input = document.getElementById('searchTextField');
var options = {
  bounds: defaultBounds,
  types: ['(cities)']
};

autocomplete = new google.maps.places.Autocomplete(input, options);
于 2012-04-13T11:57:51.107 に答える
0

in result u have hash and from it u can get part what u want:

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

now from "place" u can get it

place.geometry.location.lat()

and for address

place.address_components[0] or place.address_components[1] ...

depends on what u want to get

于 2012-09-18T14:50:11.690 に答える
-1

place_changed 内でタイムアウト関数を設定します。

var streetString = place.address_components[0] or place.address_components[1];

window.setTimeout(function() {
  $('input').val(streetString);
}, 200);

このソリューションは私にとってはうまくいきました。

于 2014-03-30T04:33:01.167 に答える