Autocomplete(新規)は、テキスト検索文字列と検索範囲を制御する地理的境界を含むリクエストに応答して、場所の候補を返します。自動入力では、入力された単語全体とサブ文字列を照合して、地名、住所、プラスコードを解決できます。ユーザーが入力するときにクエリを送信して、場所とクエリの予測をオンザフライで提供できます。
たとえば、ユーザー入力の一部である「Sicilian piz」を含む文字列を入力として使用し、検索範囲をカリフォルニア州サンフランシスコに限定して Autocomplete を呼び出します。レスポンスには、検索文字列と検索エリアに一致する場所の予測のリストが含まれます(「Sicilian Pizza Kitchen」というレストランなど)。
返された場所の予測は、ユーザーが目的の場所を選択できるようにユーザーに提示するように設計されています。Place Details(New) リクエストを実行すると、返された場所の予測に関する詳細情報を取得できます。
自動入力(新規)リクエスト
アプリは、FindAutocompletePredictionsRequest
オブジェクトを渡して PlacesClient.findAutocompletePredictions()
を呼び出すことで、自動入力 API から予測された地名や住所のリストを取得できます。次の例は、PlacesClient.findAutocompletePredictions()
の完全な呼び出しを示しています。
Places.initializeWithNewPlacesApiEnabled(context, apiKey); final List<Field> placeFields = getPlaceFields(); LatLng center = new LatLng(37.7749, -122.4194); CircularBounds circle = CircularBounds.newInstance(center, /* radius = */ 5000); final FindAutocompletePredictionsRequest autocompletePlacesRequest = FindAutocompletePredictionsRequest.builder() .setQuery("Sicilian piz") .setRegionCode("ES") .setLocationRestriction(circle) .build()); placesClient.findAutocompletePredictions(autoCompletePlacesRequest) .addOnSuccessListener( (response) -> { List<AutocompletePrediction> predictions = response.getResult().getAutocompletePredictions(); } ).addOnFailureListener( exception -> { Log.e(TAG, "some exception happened" + exception.getMessage()); }) );
自動入力(新規)の回答
API は Task
で FindAutocompletePredictionsResponse
を返します。FindAutocompletePredictionsResponse
には、予測された場所を表す AutocompletePrediction
オブジェクトが最大 5 個含まれます。クエリとフィルタ条件に一致する既知の場所がない場合、リストは空になることがあります。
予測された場所ごとに、次のメソッドを呼び出して場所の詳細を取得できます。
getFullText(CharacterStyle)
は、場所の説明の全文を返します。これは、メインテキストとセカンダリ テキストを組み合わせたものです。例: 「エッフェル塔、アヴェニュー アントワール フランス、パリ、フランス」また、この方法では、CharacterStyle
を使用して、検索に一致する説明のセクションを任意のスタイルでハイライト表示できます。CharacterStyle
パラメータは省略可能です。ハイライト表示が不要な場合は null に設定します。getPrimaryText(CharacterStyle)
は、場所を説明するメインテキストを返します。通常は場所の名前です。例: 「エッフェル塔」、「123 Pitt Street」。getSecondaryText(CharacterStyle)
は、場所の説明の補足テキストを返します。これは、自動入力の予測を表示する際の 2 行目などに便利です。例:「Avenue Anatole France, Paris, France」、「Sydney, New South Wales」。getPlaceId()
は、予測された場所のプレイス ID を返します。プレイス ID は、プレイスを一意に識別するテキスト識別子です。後でPlace
オブジェクトを再取得する際に使用できます。Autocomplete の場所 ID の詳細については、場所の詳細(新規)をご覧ください。プレイス ID の一般的な情報については、プレイス ID の概要をご覧ください。getTypes()
は、この場所に関連付けられているスポットタイプのリストを返します。getDistanceMeters()
は、この場所とリクエストで指定された起点との直線距離をメートル単位で返します。
必須パラメータ
-
クエリ
検索するテキスト文字列。単語全体とサブ文字列、地名、住所、プラスコードを指定します。Autocomplete(新規)サービスは、この文字列に基づいて一致する候補を返します。また、候補の関連性に基づいて結果を並べ替えます。
クエリ パラメータを設定するには、
FindAutocompletePredictionsRequest
オブジェクトを作成するときにsetQuery()
メソッドを呼び出します。
オプション パラメータ
-
プライマリ タイプ
レスポンスで返されるプレイスのフィルタリングに使用される、表 A または 表 B のタイプから最大 5 つのタイプ値のリスト。レスポンスに含まれる場所は、指定されたプライマリ タイプ値のいずれかに一致している必要があります。
1 つの場所に関連付けることができる主なタイプは、テーブル A または テーブル B のタイプから 1 つのみです。たとえば、プライマリ タイプは
"mexican_restaurant"
または"steak_house"
です。次のいずれかの場合、リクエストは
INVALID_REQUEST
エラーで拒否されます。- 5 つを超えるタイプが指定されている。
- 認識できない型は指定されます。
プライマリ タイプ パラメータを設定するには、
FindAutocompletePredictionsRequest
オブジェクトを作成するときにsetTypesFilter()
メソッドを呼び出します。 -
国
指定された国リストの結果のみを表示します。国リストは、最大 15 個の 2 文字の ccTLD(「トップレベル ドメイン」)値のリストとして指定します。省略した場合、レスポンスには制限が適用されません。たとえば、地域をドイツとフランスに制限するには、次のようにします。
locationRestriction
とincludedRegionCodes
の両方を指定すると、結果は 2 つの設定の交差領域に配置されます。countries パラメータを設定するには、
FindAutocompletePredictionsRequest
オブジェクトを作成するときにsetCountries()
メソッドを呼び出します。 -
入力オフセット
クエリ内のカーソルの位置を示す 0 ベースの Unicode 文字オフセット。カーソルの位置は、返される予測に影響する可能性があります。空の場合は、デフォルトでクエリの長さになります。
入力オフセット パラメータを設定するには、
FindAutocompletePredictionsRequest
オブジェクトを作成するときにsetInputOffset()
メソッドを呼び出します。 地域による偏りや地域の制限
検索エリアを定義するには、地域の偏向または地域の制限を指定できますが、両方を指定することはできません。位置情報の制限は、結果が含まれる必要がある地域を指定する方法であり、位置情報バイアスは、結果が近い地域を指定する方法です。主な違いは、位置情報バイアスでは、指定した地域外の検索結果が返される可能性があることです。
位置情報バイアス
検索する領域を指定します。この場所は制限ではなくバイアスとして機能するため、指定されたエリア外の検索結果が返されることもあります。
位置バイアス パラメータを設定するには、
FindAutocompletePredictionsRequest
オブジェクトを作成するときにsetLocationBias()
メソッドを呼び出します。地域の制限
検索する領域を指定します。指定されたエリア外の検索結果は返されません。
位置情報の制限パラメータを設定するには、
FindAutocompletePredictionsRequest
オブジェクトを作成するときにsetLocationRestriction()
メソッドを呼び出します。
位置情報バイアスまたは位置情報の制限領域を長方形のビューポートまたは円として指定します。
円は、中心点と半径(メートル単位)で定義されます。半径は 0.0 ~ 50, 000.0 の範囲で指定する必要があります。デフォルト値は 0.0 です。地域の制限では、半径を 0.0 より大きい値に設定する必要があります。指定されていない場合、リクエストは結果を返しません。
長方形は緯度経度ビューポートで、対角線上の 2 つの
low
ポイントとhigh
ポイントで表されます。ビューポートは閉じた領域と見なされます。つまり、境界が含まれます。緯度の範囲は -90 ~ 90 度、経度の範囲は -180 ~ 180 度の範囲で指定する必要があります。low
=high
の場合、ビューポートは単一のポイントで構成されます。low.longitude
>high.longitude
の場合、経度の範囲が反転します(ビューポートが経度 180 度線を越えます)。low.longitude
= -180 度、high.longitude
= 180 度の場合、ビューポートにはすべての経度が含まれます。low.longitude
= 180 度、high.longitude
= -180 度の場合、経度の範囲は空になります。
low
とhigh
の両方を入力する必要があります。また、表すボックスを空にすることはできません。ビューポートが空の場合、エラーが発生します。
-
出発地
目的地までの直線距離を計算する始点(
getDistanceMeters()
を使用してアクセス)。この値を省略すると、直線距離は返されません。緯度と経度の座標として指定する必要があります。オリジン パラメータを設定するには、
FindAutocompletePredictionsRequest
オブジェクトを作成するときにsetOrigin()
メソッドを呼び出します。 -
地域コード
住所のフォーマット設定など、レスポンスのフォーマット設定に使用される地域コード。ccTLD(「トップレベル ドメイン」)の 2 文字の値として指定します。ほとんどの ccTLD コードは ISO 3166-1 コードと同じですが、いくつかの例外があります。たとえば、英国の ccTLD は「uk」(.co.uk)ですが、ISO 3166-1 コードは「gb」(技術的には「グレート ブリテンおよび北アイルランド連合王国」のエンティティ)です。
無効なリージョン コードを指定すると、API は
INVALID_ARGUMENT
エラーを返します。このパラメータは、適用される法律に基づいて結果に影響する可能性があります。地域コード パラメータを設定するには、
FindAutocompletePredictionsRequest
オブジェクトを作成するときにsetRegionCode()
メソッドを呼び出します。 -
セッション トークン
セッション トークンは、Autocomplete(新規)呼び出しを「セッション」として追跡するユーザー作成の文字列です。Autocomplete は、課金目的でセッション トークンを使用して、ユーザーの Autocomplete 検索のクエリフェーズと選択フェーズを個別のセッションにグループ化します。セッションは、ユーザーが検索語句を入力し始めたときに開始され、ユーザーが場所を選択すると終了します。各セッションで複数のクエリを実行し、その後に 1 つのプレイスを選択できます。セッションが終了すると、トークンは無効になります。アプリはセッションごとに新しいトークンを生成する必要があります。すべてのプログラムによる自動入力セッションでセッション トークンを使用することをおすすめします(フラグメントを埋め込む場合や、インテントを使用して自動入力を起動する場合、API によって自動的に処理されます)。
Autocomplete は
AutocompleteSessionToken
を使用して各セッションを識別します。アプリは、新しいセッションを開始するたびに新しいセッション トークンを渡し、その後のfetchPlace()
の呼び出しで同じトークンと Place ID を渡して、ユーザーが選択した場所の Place Details を取得する必要があります。セッション トークン パラメータを設定するには、
FindAutocompletePredictionsRequest
オブジェクトを作成するときにsetSessionToken()
メソッドを呼び出します。詳細については、セッション トークンをご覧ください。
自動入力(新規)の例
位置情報の制限と位置情報バイアスを使用する
自動入力(新規)では、デフォルトで IP バイアスを使用して検索範囲を制御します。IP バイアスを使用すると、API はデバイスの IP アドレスを使用して結果をバイアスします。必要に応じて、位置情報の制限または位置情報のバイアスを使用して、検索するエリアを指定できます(両方を使用することはできません)。
地域の制限では、検索するエリアを指定します。指定されたエリア外の検索結果は返されません。次の例では、位置情報の制限を使用して、リクエストをサンフランシスコを中心とする半径 5,000 メートルの円形の位置情報の制限に制限しています。
Places.initializeWithNewPlacesApiEnabled(context, apiKey); final List<Field> placeFields = getPlaceFields(); LatLng center = new LatLng(37.7749, -122.4194); CircularBounds circle = CircularBounds.newInstance(center, /* radius = */ 5000); final FindAutocompletePredictionsRequest autocompletePlacesRequest = FindAutocompletePredictionsRequest.builder() .setQuery("Amoeba") .setLocationRestriction(circle) .build()); placesClient.findAutocompletePredictions(autoCompletePlacesRequest) .addOnSuccessListener( (response) -> { List<AutocompletePrediction> predictions = response.getResult().getAutocompletePredictions(); } ).addOnFailureListener( exception -> { Log.e(TAG, "some exception happened" + exception.getMessage()); }) );
位置情報バイアスでは、位置情報がバイアスとして機能します。つまり、指定された場所の周辺の結果(指定されたエリア外の検索結果を含む)が返される可能性があります。次の例では、位置情報バイアスを使用するように前のリクエストを変更します。
Places.initializeWithNewPlacesApiEnabled(context, apiKey); final List<Field> placeFields = getPlaceFields(); LatLng center = new LatLng(37.7749, -122.4194); CircularBounds circle = CircularBounds.newInstance(center, /* radius = */ 5000); final FindAutocompletePredictionsRequest autocompletePlacesRequest = FindAutocompletePredictionsRequest.builder() .setQuery("Amoeba") .setLocationBias(circle) .build()); placesClient.findAutocompletePredictions(autoCompletePlacesRequest) .addOnSuccessListener( (response) -> { List<AutocompletePrediction> predictions = response.getResult().getAutocompletePredictions(); } ).addOnFailureListener( exception -> { Log.e(TAG, "some exception happened" + exception.getMessage()); }) );
プライマリ タイプを使用する
primary types パラメータを使用すると、表 A と 表 B に示す特定のタイプのリクエスト結果を制限できます。最大 5 つの値の配列を指定できます。省略した場合は、すべてのタイプが返されます。
次の例では、クエリ文字列「サッカー」を指定し、primary types パラメータを使用して、結果を "sporting_goods_store"
タイプの施設に限定しています。
Places.initializeWithNewPlacesApiEnabled(context, apiKey); final List<Field> placeFields = getPlaceFields(); final List<Place.Field> primaryTypes = Arrays.asList("sporting_goods_store"); LatLng center = new LatLng(37.7749, -122.4194); CircularBounds circle = CircularBounds.newInstance(center, /* radius = */ 5000); final FindAutocompletePredictionsRequest autocompletePlacesRequest = FindAutocompletePredictionsRequest.builder() .setQuery("Soccer") .setIncludedPrimaryTypes(primaryTypes) .setLocationBias(circle) .build()); placesClient.findAutocompletePredictions(autoCompletePlacesRequest) .addOnSuccessListener( (response) -> { List<AutocompletePrediction> predictions = response.getResult().getAutocompletePredictions(); } ).addOnFailureListener( exception -> { Log.e(TAG, "some exception happened" + exception.getMessage()); }) );
主なタイプ パラメータを省略すると、"athletic_field"
など、不要なタイプの施設が結果に含まれることがあります。
オリジンを使用する
リクエストに緯度と経度の座標として origin パラメータを含めると、API は、出発地から目的地までの直線距離をレスポンス(getDistanceMeters()
を使用してアクセス)に含めます。この例では、出発地をサンフランシスコの中心に設定します。
Places.initializeWithNewPlacesApiEnabled(context, apiKey); final List<Field> placeFields = getPlaceFields(); LatLng center = new LatLng(37.7749, -122.4194); CircularBounds circle = CircularBounds.newInstance(center, /* radius = */ 5000); final FindAutocompletePredictionsRequest autocompletePlacesRequest = FindAutocompletePredictionsRequest.builder() .setQuery("Amoeba") .setOrigin(center) .setLocationRestriction(circle) .build()); placesClient.findAutocompletePredictions(autoCompletePlacesRequest) .addOnSuccessListener( (response) -> { List<AutocompletePrediction> predictions = response.getResult().getAutocompletePredictions(); } ).addOnFailureListener( exception -> { Log.e(TAG, "some exception happened" + exception.getMessage()); }) );
帰属表示
自動入力(新規)は、地図がなくても使用できます。地図を表示する場合は、Google マップである必要があります。地図なしで自動入力(新規)サービスの予測を表示する場合は、検索フィールドまたは検索結果に Google のロゴをインラインで表示する必要があります。詳細については、Google のロゴとアトリビューションを表示するをご覧ください。