次のクエリがあります。これは郵便番号: 11368
です。Googleのオートコンプリートサービスとオートコンプリートが同じクエリで異なる結果を返す
私が先頭に郵便番号の実際の地域を取得していますオートコンプリートのオブジェクト(ないサービス)を作成します。
これはコードです:
autocomplete = new google.maps.places.Autocomplete(
document.getElementById('PlaceSearch'),
{ types: ['(regions)'] });
[...]
これは、まさに私が欲しいものです。しかし、設計上の理由からサイト固有のオートコンプリートシステムを使用する必要があります。そのため、私はAutocompleteService
に移動しました。これは、UI以外のコード専用のものです(少なくとも、それはすべきです)。私は私のオートコンプリートサービスの作成:
x = new google.maps.places.AutocompleteService();
を私は使用:
x.getQueryPredictions({ input: key }, function (results, status) {
if (status == google.maps.places.PlacesServiceStatus.OK) {
[...]
});
});
しかし、これは私が結果から得るものです:
私はdescription
を使用していますプロパティを使用してエントリを表示しますが、返されるlocaの最初のエントリの場所IDとしては問題ありませんまったく同じクエリを入力していても、完全に異なっています。
は私も試してみた:
x.getQueryPredictions({ input: key, types: ['(regions)'] }
、
x.getQueryPredictions({ input: key, types: ['(geocode)'] }
x.getQueryPredictions({ input: key, types: ['geocode'] }
typeahead
レベルの質問に答えていますが、私の質問の結果はAPIレベルでは間違いなく突き詰めずにいます。オートコンプリートサービスから直接コールバック関数でデバッガでチェックしました。
私は、両方のケースで、ネットワーク要求を検査し、ここに取り組んで要求されました:
https://maps.googleapis.com/maps/api/place/js/AutocompletionService.GetPredictions?1s11368&4sen-US&9s(regions)&15e3&key=XXXXXX&callback=_xdc_._qxy1y2&token=45006
それが正しいJSONを返します。
https://maps.googleapis.com/maps/api/place/js/AutocompletionService.GetQueryPredictionsJson?1s11368&4sen-US&9s(regions)&15e3&key=XXXXXX&callback=_xdc_._38p24d&token=20471
そして、それは正しくないJSONを返します。ここでは
が不正JSONを返す要求です。私が見るところでは、をtypes
というパラメータとして渡す必要がありますが、それでも間違いはあります。より不条理なことに、2つのクエリの唯一の違いは、token
という変数です(私は間違ったクエリのトークンを正しいものに置き換えようとしましたが、The Google Maps JavaScript API must be downloaded directly from Google's servers.
というエラーが出ています)とコールバック関数には何もありません返されたJSONを処理します。私が考えることができるのは、Googleがサーバ上の初期化レベルで何かをしている間に、そのサーバ/インスタンス(したがってトークン)に結びついたトークンを返す間だけだと思います。
私は何が間違っていますか、Google独自の先読み実装でプログラム的に同じ結果を得るにはどうすればよいですか?