Autocomplete (New) サービスは、HTTP リクエストに応じて場所の候補とクエリ予測を返すウェブサービスです。リクエストでは、テキスト検索文字列に加え、検索対象地域を限定する地理的境界を指定します。
予測入力(新版)サービスは、入力値の完全な単語や部分文字列を照合して、場所の名前や住所、Plus Codes を解決できます。これにより、アプリケーションはユーザーの入力に合わせて随時クエリを送信し、場所とクエリの候補をリアルタイムで表示することができます。
Autocomplete(新版)API からのレスポンスには、次の 2 種類の予測を含めることができます。
- 場所の予測: 指定された入力テキスト文字列と検索エリアに基づく、お店やサービス、住所、スポットなどの場所。デフォルトでは、場所の予測が返されます。
- クエリの予測: 入力テキスト文字列と検索領域に一致するクエリ文字列。デフォルトでは、クエリ予測は返されません。
includeQueryPredictions
リクエスト パラメータを使用して、レスポンスにクエリ予測を追加します。
たとえば、ユーザー入力の一部である「Sicilian piz」を含む文字列を入力として API を呼び出し、検索エリアをカリフォルニア州サンフランシスコに限定します。レスポンスには、検索文字列と検索領域に一致する場所の候補のリストが含まれます(「Sicilian Pizza Kitchen」など)。場所の詳細が含まれます。
返される「場所の候補」は、ユーザーが目的の場所を選択できるよう、ユーザーに表示されるように設計されています。返されたプレイスの予測の詳細情報を取得するには、Place Details (New) リクエストを送信します。
レスポンスには、検索文字列と検索エリア(「Sicilian Pizza & Pasta」など)に一致するクエリ予測のリストも含まれます。レスポンスの各クエリ予測には、推奨されるテキスト検索文字列を含む text
フィールドが含まれています。その文字列を テキスト検索(新版)の入力として使用して、より詳細な検索を実行します。
API Explorer では、ライブ リクエストを実行して、API と API オプションを把握できます。
お試しください予測入力(新)リクエスト
オートコンプリート(新規)リクエストは、次の形式の URL に対する HTTP POST リクエストです。
https://places.googleapis.com/v1/places:autocomplete
すべてのパラメータを JSON リクエスト本文または POST リクエストの一部としてヘッダーで渡します。例:
curl -X POST -d '{ "input": "pizza", "locationBias": { "circle": { "center": { "latitude": 37.7937, "longitude": -122.3965 }, "radius": 500.0 } } }' \ -H 'Content-Type: application/json' -H "X-Goog-Api-Key: API_KEY" \ https://places.googleapis.com/v1/places:autocomplete
レスポンスについて
Autocomplete(新規)は、レスポンスとして JSON オブジェクトを返します。レスポンスの説明:
suggestions
配列には、認識された関連性に基づいて、予測されたすべての場所とクエリが順序付けられて含まれます。各場所はplacePrediction
フィールドで表され、各クエリはqueryPrediction
フィールドで表されます。placePrediction
フィールドには、プレイス ID やテキストの説明など、単一のプレイス予測に関する詳細情報が含まれます。queryPrediction
フィールドには、1 つのクエリ予測に関する詳細情報が含まれます。
完全な JSON オブジェクトの形式は次のとおりです。
{ "suggestions": [ { "placePrediction": { "place": "places/ChIJ5YQQf1GHhYARPKG7WLIaOko", "placeId": "ChIJ5YQQf1GHhYARPKG7WLIaOko", "text": { "text": "Amoeba Music, Haight Street, San Francisco, CA, USA", "matches": [ { "endOffset": 6 }] }, ... }, { "queryPrediction": { "text": { "text": "Amoeba Music", "matches": [ { "endOffset": 6 }] }, ... } ...] }
必須パラメータ
-
入力
検索するテキスト文字列。完全な単語と部分文字列、場所の名前、住所、Plus Codes を指定します。Autocomplete(新規)サービスはこの文字列と一致する候補を、関連性の高い順に並べて結果として返します。
オプション パラメータ
-
FieldMask
レスポンス フィールド マスクを作成して、レスポンスで返すフィールドのリストを指定します。HTTP ヘッダー
X-Goog-FieldMask
を使用して、レスポンス フィールド マスクをメソッドに渡します。返される候補フィールドのカンマ区切りのリストを指定します。たとえば、提案の
suggestions.placePrediction.place
とsuggestions.placePrediction.text
を取得します。X-Goog-FieldMask: places.displayName,places.formattedAddress
*
を使用してすべてのフィールドを取得します。X-Goog-FieldMask: *
-
includedPrimaryTypes
場所には、表 A または表 B に記載されているタイプのうち、1 つのプライマリ タイプのみを指定できます。たとえば、プライマリ タイプは
"mexican_restaurant"
や"steak_house"
です。デフォルトでは、API は、プレイスに関連付けられているプライマリ タイプ値に関係なく、
input
パラメータに基づいてすべてのプレイスを返します。includedPrimaryTypes
パラメータを渡すことで、結果を特定のプライマリ型またはプライマリ型に制限します。このパラメータを使用して、Table A または Table B の型の値を最大 5 つ指定します。場所がレスポンスに含まれるためには、指定されたプライマリ タイプの値のいずれかと一致する必要があります。
このパラメータには、代わりに
(regions)
または(cities)
のいずれかを含めることもできます。(regions)
タイプ コレクションは、区域や郵便番号などのエリアや区分をフィルタします。(cities)
タイプのコレクションは、Google が都市として識別する場所をフィルタします。次の場合は、リクエストは
INVALID_REQUEST
エラーで拒否されます。- 指定したタイプの数が 5 個より多い。
- 任意の型は、
(cities)
または(regions)
に加えて指定します。 - 認識できないタイプが指定されている。
-
includePureServiceAreaBusinesses
true
に設定すると、顧客を直接訪問したり、顧客に直接配送したりするビジネスが返されますが、物理的なビジネス拠点はありません。false
に設定すると、API は実店舗があるビジネスのみを返します。 -
includeQueryPredictions
true
の場合、レスポンスには場所とクエリの両方の予測が含まれます。デフォルト値はfalse
です。つまり、レスポンスには場所の予測のみが含まれます。 -
includedRegionCodes
指定した地域のリストからのみ結果を取得します。このリストは、最大 15 個の ccTLD(「トップレベル ドメイン」)の 2 文字の値の配列として指定します。省略した場合、レスポンスに制限は適用されません。たとえば、リージョンをドイツとフランスに制限するには、次のようにします。
"includedRegionCodes": ["de", "fr"]
locationRestriction
とincludedRegionCodes
の両方を指定すると、結果は 2 つの設定の交差する領域に配置されます。 -
inputOffset
input
内のカーソル位置を示す 0 ベースの Unicode 文字オフセット。カーソルの位置は、返される予測に影響する可能性があります。空の場合、デフォルトでinput
の長さになります。 -
languageCode
結果を返す際の優先言語。
input
で使用されている言語がlanguageCode
で指定された値と異なる場合、または返されたプレイスにローカル言語からlanguageCode
への翻訳がない場合、結果が混合言語になる可能性があります。- 優先言語を指定するには、IETF BCP-47 言語コードを使用する必要があります。
-
languageCode
が指定されていない場合、API はAccept-Language
ヘッダーで指定された値を使用します。どちらも指定されていない場合のデフォルトはen
です。無効な言語コードを指定すると、API はINVALID_ARGUMENT
エラーを返します。 - 優先言語は、API が返す結果のセットや、それらが返される順序に小さい影響を及ぼします。これは、スペルミスを修正する API の機能にも影響します。
-
API は、ユーザーとローカルの両言語で判読可能な番地を返すとともに、ユーザー入力を反映しようとします。場所の予測の形式は、各リクエストのユーザー入力によって異なります。
-
input
パラメータの一致する用語が最初に選択され、languageCode
パラメータで指定された言語設定に沿った名前が使用されます(使用可能な場合)。それ以外の場合は、ユーザー入力に最も一致する名前が使用されます。 -
番地は、
input
パラメータのキーワードと一致するキーワードが選択された後、ローカル言語で、可能であればユーザーが読み取れるスクリプトでフォーマットされます。 -
その他の住所はすべて、
input
パラメータのキーワードと一致するキーワードが選択された後、優先言語で返されます。優先言語で名前を表示できない場合、API は最も近い言語を使用します。
-
locationBias または locationRestriction
検索領域を定義するには、
locationBias
またはlocationRestriction
を指定できます。両方は指定できません。locationRestriction
は、結果が含まれる必要があるリージョンを指定すると考えてください。locationBias
は、結果が近接している必要があるリージョンを指定すると考えてください。ただし、そのリージョンの外側にあってもかまいません。locationBias
検索する領域を指定します。この位置情報はバイアスとして機能します。つまり、指定された位置情報の周辺の結果(指定されたエリア外の場所も含む)が返される可能性があります。
locationRestriction
検索する領域を指定します。指定した範囲外の結果は返されません。
locationBias
またはlocationRestriction
のリージョンを長方形のビューポートまたは円として指定します。円は、中心点と半径(メートル単位)で定義されます。半径は 0.0 ~ 50000.0 の範囲で指定する必要があります。デフォルト値は 0.0 です。
locationRestriction
の場合、半径を 0.0 より大きい値に設定する必要があります。それ以外の場合、リクエストは結果を返しません。例:
"locationBias": { "circle": { "center": { "latitude": 37.7937, "longitude": -122.3965 }, "radius": 500.0 } }
長方形は緯度経度ビューポートで、対角線上の 2 つの
low
と高ポイントで表されます。ビューポートは閉じた領域と見なされます。つまり、境界が含まれます。緯度の範囲は -90 ~ 90 度、経度の範囲は -180 ~ 180 度の範囲内で指定する必要があります。low
=high
の場合、ビューポートは単一のポイントで構成されます。low.longitude
>high.longitude
の場合、経度の範囲が逆になります(ビューポートは経度線と交差します)。low.longitude
= -180 度、high.longitude
= 180 度の場合、ビューポートにはすべての経度が含まれます。low.longitude
= 180 度、high.longitude
= -180 度の場合、経度範囲は空になります。
low
とhigh
の両方に値を入力する必要があります。また、表すボックスを空にすることはできません。ビューポートが空の場合はエラーになります。たとえば、このビューポートはニューヨーク市を完全に囲んでいます。
"locationBias": { "rectangle": { "low": { "latitude": 40.477398, "longitude": -74.259087 }, "high": { "latitude": 40.91618, "longitude": -73.70018 } } }
-
オリジン
目的地までの直線距離を計算する始点(
distanceMeters
として返されます)。この値を省略すると、直線距離は返されません。緯度と経度の座標で指定する必要があります。"origin": { "latitude": 40.477398, "longitude": -74.259087 }
-
regionCode
レスポンスのフォーマットに使用される地域コード。ccTLD(「トップレベル ドメイン」)の 2 文字の値で指定します。ccTLD コードのほとんどは ISO 3166-1 コードと同一ですが、いくつか注意が必要な例外もあります。たとえば、英国の ccTLD は「uk」(.co.uk)ですが、その ISO 3166-1 コードは「gb」(厳密には「United Kingdom of Great Britain and Northern Ireland」のエンティティ)です。
無効なリージョン コードを指定すると、API は
INVALID_ARGUMENT
エラーを返します。このパラメータは、適用される法律に基づいて結果に影響する可能性があります。 -
sessionToken
セッション トークンは、Autocomplete(新規)の呼び出しを「セッション」として追跡するユーザー作成の文字列です。予測入力(新版)は、セッション トークンを使用して、ユーザーの予測入力検索のクエリフェーズと選択フェーズを、請求処理のために個別のセッションにグループ化します。詳細については、セッション トークンをご覧ください。
オートコンプリート(新機能)の例
locationRestriction を使用して検索を特定のエリアに制限する
locationRestriction
には、検索するエリアを指定します。指定した領域外の結果は返されません。次の例では、locationRestriction
を使用して、サンフランシスコを中心とする半径 5, 000 メートルの円にリクエストを制限します。
curl -X POST -d '{ "input": "Art museum", "locationRestriction": { "circle": { "center": { "latitude": 37.7749, "longitude": -122.4194 }, "radius": 5000.0 } } }' \ -H 'Content-Type: application/json' -H "X-Goog-Api-Key: API_KEY" \ https://places.googleapis.com/v1/places:autocomplete
指定された領域内のすべての結果が suggestions
配列に格納されます。
{ "suggestions": [ { "placePrediction": { "place": "places/ChIJkQQVTZqAhYARHxPt2iJkm1Q", "placeId": "ChIJkQQVTZqAhYARHxPt2iJkm1Q", "text": { "text": "Asian Art Museum, Larkin Street, San Francisco, CA, USA", "matches": [ { "startOffset": 6, "endOffset": 16 } ] }, "structuredFormat": { "mainText": { "text": "Asian Art Museum", "matches": [ { "startOffset": 6, "endOffset": 16 } ] }, "secondaryText": { "text": "Larkin Street, San Francisco, CA, USA" } }, "types": [ "establishment", "museum", "point_of_interest" ] } }, { "placePrediction": { "place": "places/ChIJI7NivpmAhYARSuRPlbbn_2w", "placeId": "ChIJI7NivpmAhYARSuRPlbbn_2w", "text": { "text": "de Young Museum, Hagiwara Tea Garden Drive, San Francisco, CA, USA", "matches": [ { "endOffset": 15 } ] }, "structuredFormat": { "mainText": { "text": "de Young Museum", "matches": [ { "endOffset": 15 } ] }, "secondaryText": { "text": "Hagiwara Tea Garden Drive, San Francisco, CA, USA" } }, "types": [ "establishment", "point_of_interest", "tourist_attraction", "museum" ] } }, /.../ ] }
locationRestriction
を使用して、検索を長方形のビューポートに制限することもできます。次の例では、リクエストをサンフランシスコのダウンタウンに制限しています。
curl -X POST -d '{ "input": "Art museum", "locationRestriction": { "rectangle": { "low": { "latitude": 37.7751, "longitude": -122.4219 }, "high": { "latitude": 37.7955, "longitude": -122.3937 } } } }' \ -H 'Content-Type: application/json' -H "X-Goog-Api-Key: API_KEY" \ https://places.googleapis.com/v1/places:autocomplete
結果は suggestions
配列に格納されます。
{ "suggestions": [ { "placePrediction": { "place": "places/ChIJkQQVTZqAhYARHxPt2iJkm1Q", "placeId": "ChIJkQQVTZqAhYARHxPt2iJkm1Q", "text": { "text": "Asian Art Museum, Larkin Street, San Francisco, CA, USA", "matches": [ { "startOffset": 6, "endOffset": 16 } ] }, "structuredFormat": { "mainText": { "text": "Asian Art Museum", "matches": [ { "startOffset": 6, "endOffset": 16 } ] }, "secondaryText": { "text": "Larkin Street, San Francisco, CA, USA" } }, "types": [ "point_of_interest", "museum", "establishment" ] } }, { "placePrediction": { "place": "places/ChIJyQNK-4SAhYARO2DZaJleWRc", "placeId": "ChIJyQNK-4SAhYARO2DZaJleWRc", "text": { "text": "International Art Museum of America, Market Street, San Francisco, CA, USA", "matches": [ { "startOffset": 14, "endOffset": 24 } ] }, "structuredFormat": { "mainText": { "text": "International Art Museum of America", "matches": [ { "startOffset": 14, "endOffset": 24 } ] }, "secondaryText": { "text": "Market Street, San Francisco, CA, USA" } }, "types": [ "museum", "point_of_interest", "tourist_attraction", "art_gallery", "establishment" ] } } ] }
locationBias を使用して検索結果に地域を優先する
locationBias
では、位置情報はバイアスとして機能します。つまり、指定した位置情報の周辺の結果(指定したエリア外の検索結果を含む)が返される可能性があります。次の例では、サンフランシスコのダウンタウンに対するリクエストにバイアスをかけています。
curl -X POST -d '{ "input": "Amoeba", "locationBias": { "circle": { "center": { "latitude": 37.7749, "longitude": -122.4194 }, "radius": 5000.0 } } }' \ -H 'Content-Type: application/json' -H "X-Goog-Api-Key: API_KEY" \ https://places.googleapis.com/v1/places:autocomplete
検索結果に、5, 000 m の半径外のスポットなど、より多くのスポットが含まれるようになりました。
{ "suggestions": [ { "placePrediction": { "place": "places/ChIJ5YQQf1GHhYARPKG7WLIaOko", "placeId": "ChIJ5YQQf1GHhYARPKG7WLIaOko", "text": { "text": "Amoeba Music, Haight Street, San Francisco, CA, USA", "matches": [ { "endOffset": 6 } ] }, "structuredFormat": { "mainText": { "text": "Amoeba Music", "matches": [ { "endOffset": 6 } ] }, "secondaryText": { "text": "Haight Street, San Francisco, CA, USA" } }, "types": [ "electronics_store", "point_of_interest", "store", "establishment", "home_goods_store" ] } }, { "placePrediction": { "place": "places/ChIJr7uwwy58hYARBY-e7-QVwqw", "placeId": "ChIJr7uwwy58hYARBY-e7-QVwqw", "text": { "text": "Amoeba Music, Telegraph Avenue, Berkeley, CA, USA", "matches": [ { "endOffset": 6 } ] }, "structuredFormat": { "mainText": { "text": "Amoeba Music", "matches": [ { "endOffset": 6 } ] }, "secondaryText": { "text": "Telegraph Avenue, Berkeley, CA, USA" } }, "types": [ "electronics_store", "point_of_interest", "establishment", "home_goods_store", "store" ] } }, ... ] }
locationBias
を使用して、検索を長方形のビューポートに制限することもできます。次の例では、リクエストをサンフランシスコのダウンタウンに制限しています。
curl -X POST -d '{ "input": "Amoeba", "locationBias": { "rectangle": { "low": { "latitude": 37.7751, "longitude": -122.4219 }, "high": { "latitude": 37.7955, "longitude": -122.3937 } } } }' \ -H 'Content-Type: application/json' -H "X-Goog-Api-Key: API_KEY" \ https://places.googleapis.com/v1/places:autocomplete
長方形のビューポート内の検索結果はレスポンスに表示されますが、バイアスにより、一部の結果は定義された境界の外側に表示されます。結果は suggestions
配列にも含まれます。
{ "suggestions": [ { "placePrediction": { "place": "places/ChIJ5YQQf1GHhYARPKG7WLIaOko", "placeId": "ChIJ5YQQf1GHhYARPKG7WLIaOko", "text": { "text": "Amoeba Music, Haight Street, San Francisco, CA, USA", "matches": [ { "endOffset": 6 } ] }, "structuredFormat": { "mainText": { "text": "Amoeba Music", "matches": [ { "endOffset": 6 } ] }, "secondaryText": { "text": "Haight Street, San Francisco, CA, USA" } }, "types": [ "point_of_interest", "store", "establishment" ] } }, { "placePrediction": { "place": "places/ChIJr7uwwy58hYARBY-e7-QVwqw", "placeId": "ChIJr7uwwy58hYARBY-e7-QVwqw", "text": { "text": "Amoeba Music, Telegraph Avenue, Berkeley, CA, USA", "matches": [ { "endOffset": 6 } ] }, "structuredFormat": { "mainText": { "text": "Amoeba Music", "matches": [ { "endOffset": 6 } ] }, "secondaryText": { "text": "Telegraph Avenue, Berkeley, CA, USA" } }, "types": [ "point_of_interest", "store", "establishment" ] } }, { "placePrediction": { "place": "places/ChIJRdmfADq_woARYaVhnfQSUTI", "placeId": "ChIJRdmfADq_woARYaVhnfQSUTI", "text": { "text": "Amoeba Music, Hollywood Boulevard, Los Angeles, CA, USA", "matches": [ { "endOffset": 6 } ] }, "structuredFormat": { "mainText": { "text": "Amoeba Music", "matches": [ { "endOffset": 6 } ] }, "secondaryText": { "text": "Hollywood Boulevard, Los Angeles, CA, USA" } }, "types": [ "point_of_interest", "store", "establishment" ] } }, /.../ ] }
includedPrimaryTypes を使用する
includedPrimaryTypes
パラメータを使用して、テーブル A、テーブル B、(regions)
のみ、または (cities)
のみから最大 5 つの型の値を指定します。場所がレスポンスに含まれるには、指定されたプライマリ タイプ値のいずれかと一致している必要があります。
次の例では、「サッカー」の input
文字列を指定し、includedPrimaryTypes
パラメータを使用して、結果を "sporting_goods_store"
タイプの施設に制限します。
curl -X POST -d '{ "input": "Soccer", "includedPrimaryTypes": ["sporting_goods_store"], "locationBias": { "circle": { "center": { "latitude": 37.7749, "longitude": -122.4194 }, "radius": 500.0 } } }' \ -H 'Content-Type: application/json' -H "X-Goog-Api-Key: API_KEY" \ https://places.googleapis.com/v1/places:autocomplete
includedPrimaryTypes
パラメータを省略すると、"athletic_field"
など、不要なタイプの施設が結果に含まれることがあります。
クエリ予測をリクエストする
クエリの予測はデフォルトでは返されません。includeQueryPredictions
リクエスト パラメータを使用して、クエリの予測をレスポンスに追加します。例:
curl -X POST -d '{ "input": "Amoeba", "includeQueryPredictions": true, "locationBias": { "circle": { "center": { "latitude": 37.7749, "longitude": -122.4194 }, "radius": 5000.0 } } }' \ -H 'Content-Type: application/json' -H "X-Goog-Api-Key: API_KEY" \ https://places.googleapis.com/v1/places:autocomplete
suggestions
配列には、上記のレスポンスについてで説明したように、プレイス予測とクエリ予測の両方が含まれるようになりました。各クエリ予測には、推奨されるテキスト検索文字列を含む text
フィールドが含まれます。テキスト検索(新規)リクエストを送信すると、返されたクエリ予測の詳細情報を取得できます。
オリジンを使用
この例では、リクエストに緯度と経度の座標として origin
を含めます。origin
を含めると、API のレスポンスに distanceMeters
フィールドが含まれます。このフィールドには、origin
から目的地までの直線距離が含まれます。この例では、送信元をサンフランシスコの中心に設定します。
curl -X POST -d '{ "input": "Amoeba", "origin": { "latitude": 37.7749, "longitude": -122.4194 }, "locationRestriction": { "circle": { "center": { "latitude": 37.7749, "longitude": -122.4194 }, "radius": 5000.0 } } }' \ -H 'Content-Type: application/json' -H "X-Goog-Api-Key: API_KEY" \ https://places.googleapis.com/v1/places:autocomplete
レスポンスには distanceMeters
が含まれます。
{ "suggestions": [ { "placePrediction": { "place": "places/ChIJ5YQQf1GHhYARPKG7WLIaOko", "placeId": "ChIJ5YQQf1GHhYARPKG7WLIaOko", "text": { "text": "Amoeba Music, Haight Street, San Francisco, CA, USA", "matches": [ { "endOffset": 6 } ] }, "structuredFormat": { "mainText": { "text": "Amoeba Music", "matches": [ { "endOffset": 6 } ] }, "secondaryText": { "text": "Haight Street, San Francisco, CA, USA" } }, "types": [ "home_goods_store", "establishment", "point_of_interest", "store", "electronics_store" ], "distanceMeters": 3012 } } ] }
試してみよう:
API Explorer を使用すると、サンプル リクエストを作成して、API と API のオプションを把握できます。
- ページの右側にある API アイコン を選択します。
- 必要に応じて [標準パラメータを表示] を開き、フィールド マスクに
fields
パラメータを設定します。 - 必要に応じて、リクエスト本文を編集します。
- [Execute] ボタンを選択します。ポップアップで、リクエストに使用するアカウントを選択します。
API Explorer パネルで展開アイコン を選択して、API Explorer ウィンドウを開きます。