2013-02-02 13 views
10

Googleプレイスからの場所と検索クエリと一致するデータベースからのイベントを表示するカスタムオートコンプリートフィールドを設定しています。このため、プレースオートコンプリートをテキストフィールドに直接接続するのではなく、Googleプレイスオートコンプリートサービスを使用してクエリの予測を取得しています。GoogleプレイスAutocompleteService国別フィルタリング

問題はオートコンプリートサービスを使用して、地域別オートコンプリート候補を国別にフィルタリングする方法がわかりません。

私が試してみた:

var service = new google.maps.places.AutocompleteService(null, { 
     types: ['cities'], 
     componentRestrictions: {country: "au"} 
    }); 

が、それはまだドイツからのオートコンプリートオプションを示し、フランス:(

任意の提案文書referenceで概説したように

答えて

30

サービスの作成時にではなく、サービスを呼び出すときに制限を渡す必要があります。ここでは:

//create service 
service = new google.maps.places.AutocompleteService(); 

//perform request. limit results to Australia 
var request = { 
    input: 'Brisbane', 
    componentRestrictions: {country: 'au'}, 
}; 
service.getPlacePredictions(request, callback); 
+0

こんにちはロバート、どうやってあなたの 'コールバック 'を定義しましたか? – chaeschuechli

+0

@chaeschuechli [公式の例](https://developers.google.com/maps/documentation/javascript/examples/places-queryprediction)を見てください。関数 'displaySuggestions'はコールバックです。 –

+1

これは動作していません!あなたは確認できますか? – Apoorv

1

、地図書館AutocompleteServiceAutocompleteOptionsをサポートしていません。これが貴重な機能だと思われる場合は、Places API - Feature Requestを提出してください。

+1

あなたはそれがドキュメントに概説されている場所について、より具体的なことはできますか?私が見ていることから、あなたは国によって制限することができます。 – thealexbaron

+0

はい、私はまた "componentRestrictions"をチェックしました – LeRoy

7

AutocompletionRequestを使用してタイプとcomponentRestrictionsを指定できます。ここに例があります -

var service = new google.maps.places.AutocompleteService(); 

    service.getPlacePredictions({ input: query, types: ['geocode'], 
           componentRestrictions:{ country: 'us' } }, 
      function (predictions, status) { 
       if (status == google.maps.places.PlacesServiceStatus.OK) { 
        var results = document.getElementById('results'); 
        for (var i = 0, prediction; prediction = predictions[i]; i++) { 
         results.innerHTML += '<li>' + prediction.description + '</li>'; 
        } 
       } 
      }); 
0

このコードを使用してください。

var options = { 
    types: ['(cities)'], 
    componentRestrictions: {country: ["in"]} 
} 
//Find From location  
var input= document.getElementById('input_box_city'); 
var fromAuto = new google.maps.places.Autocomplete(input, options); 
+0

これはAutocompleteクラス用であり、AutocompleteServiceクラス用ではありません。 AutocompleteServiceクラスを使用すると、プログラムで結果を処理できますが、Autocompleteクラスは入力要素を修飾します。 – GuruBob

-1

使用この作業コード

var input = document.getElementById("query_value"); 
var autocomplete = new google.maps.places.Autocomplete(input, { 
    componentRestrictions: { country: "IN" }, 
    place_id: "YOUR_PLACE_ID" 
}); 
google.maps.event.addListener(autocomplete, "place_changed", function() { 
    var place = autocomplete.getPlace(); 
}); 


https://maps.googleapis.com/maps/api/js?sensor=false&libraries=places&language=en&key=YOUR_KEY 
関連する問題