Autocomplete(新版)サービスは、リクエストに応じて場所の候補を返す iOS API です。リクエストでは、テキスト検索文字列と、検索領域を制御する地理的境界を指定します。
予測入力(新版)サービスは、入力に含まれる完全な単語や部分文字列を照合して、場所の名前や住所、Plus Codes を解決できます。これにより、アプリケーションはユーザーの入力に応じてクエリを送信し、場所の候補をリアルタイムで表示することができます。
場所の候補は、指定された入力テキスト文字列と検索領域に基づく、お店やサービス、住所、スポットなどの場所です。
たとえば、部分的なユーザー入力「Spagh」を含む文字列を入力として使用し、検索領域をニューヨーク市に限定して API を呼び出します。レスポンスには、検索文字列と検索エリア(「Cafe Spaghetti」という名前のレストランなど)に一致する場所の候補のリストと、場所の詳細が含まれます。
返される場所の候補は、目的の場所を選択できるように、ユーザーに表示されるように設計されています。Place Details(新)リクエストを行うと、返された場所の候補に関する詳細情報を取得できます。
予測入力(新)リクエスト
GMSPlaceClient
のメソッドを呼び出して、予測入力リクエストを作成します。GMSAutocompleteRequest
オブジェクトでパラメータを渡すことができます。レスポンスは、GMSAutocompletePlaceSuggestion
オブジェクト内に予測入力の候補を提供します。
API キーと query
パラメータは必須です。また、GMSAutocompleteSessionToken
を含めてリクエストを課金セッションに関連付け、GMSAutocompleteFilter
を含めて結果に適用することもできます。
必須パラメータと省略可能なパラメータの詳細については、このドキュメントのパラメータ セクションをご覧ください。
Swift
let token = GMSAutocompleteSessionToken() let northWestBounds = CLLocationCoordinate2DMake(40.921628, -73.700051) let southEastBounds = CLLocationCoordinate2DMake(40.477398, -74.259087) let filter = GMSAutocompleteFilter() filter.types = [kGMSPlaceTypeRestaurant] filter.locationBias = GMSPlaceRectangularLocationOption(northWestBounds, southEastBounds) let request = GMSAutocompleteRequest(query:"Spagh") request.filter = filter request.sessionToken = token GMSPlacesClient.shared().fetchAutocompleteSuggestions(from: request, callback: { ( results, error ) in if let error = error { print("Autocomplete error: \(error)") return } if let autocompleteResults = results { for result in autocompleteResults { print("Result \(String(describing: result.placeSuggestion?.placeID)) with \(String(describing: result.placeSuggestion?.attributedFullText))") } } })
Objective-C
CLLocationCoordinate2D northEast = CLLocationCoordinate2DMake(37.388162, -122.088137); CLLocationCoordinate2D southWest = CLLocationCoordinate2DMake(37.395804, -122.077023); GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init]; filter.types = @[ kGMSPlaceTypeRestaurant ]; filter.locationBias = GMSPlaceRectangularLocationOption(northEast, southWest); GMSAutocompleteRequest *request = [[GMSAutocompleteRequest alloc] initWithQuery:@"Sicilian piz"]; request.sessionToken = token; request.filter = filter; [[GMSPlacesClient sharedClient] fetchAutocompleteSuggestionsFromRequest:request callback:^(NSArray<GMSAutocompleteSuggestion *> * results, NSError * error){ // Handle response for (GMSAutocompleteSuggestion *suggestion in results) { if (suggestion.placeSuggestion) { // Show place suggestion data. } } }];
GooglePlacesSwift
let center = (37.3913916, -122.0879074) let northEast = (37.388162, -122.088137) let southWest = (37.395804, -122.077023) let bias = RectangularCoordinateRegion(northEast: northEast, southWest: southWest) let filter = AutocompleteFilter(types: [ .restaurant ], origin: center, coordinateRegionBias: bias) let autocompleteRequest = AutocompleteRequest(query: "Sicilian piz", filter: filter) switch await placesClient.fetchAutocompleteSuggestions(with: autocompleteRequest) { case .success(let autocompleteSuggestions): // Handle suggestions. case .failure(let placesError): // Handle error. }
予測入力(新)の回答
予測入力は最大 5 つの GMSAutocompleteSuggestion
インスタンスの配列を返します。配列には次のものが含まれます。
placeID
types
: この場所に適用されるタイプ。distanceMeters
: 出発地からの距離。attributedFullText
: 人が読める形式の候補の全文。attributedPrimaryText
: 人が読める形式の候補のメインテキスト。attributedSecondaryText
: 人が読める形式の候補のセカンダリ テキスト。structuredFormat
: 都市や地域などの具体的な名前と、あいまいさをなくすテキスト。
必須パラメータ
クエリ
検索するテキスト文字列。完全な単語と部分文字列、地名、住所、Plus Codes を指定します。予測入力(新)サービスは、この文字列に基づいて一致する候補を返し、認識された関連性に基づいて結果を並べ替えます。
オプション パラメータ
タイプ
場所には、関連するタイプの Table A または Table B の 1 つのプライマリ タイプのみを含めることができます。たとえば、プライマリ タイプは mexican_restaurant
や steak_house
です。
デフォルトでは、API は場所に関連付けられている主要なタイプの値に関係なく、input
パラメータに基づいてすべての場所を返します。types
パラメータを渡すことで、結果を特定のプライマリ型またはプライマリ型に制限します。
このパラメータを使用して、テーブル A またはテーブル B から最大 5 つの型の値を指定します。場所がレスポンスに含まれるには、指定されたメインのタイプの値のいずれかと一致する必要があります。
次の場合、リクエストは INVALID_REQUEST
エラーで拒否されます。
- 6 つ以上のタイプが指定されている。
- 認識されないタイプが指定されています。
実施国数
指定した地域のリストの結果のみを含めます。このリストは、最大 15 個の ccTLD(「トップレベル ドメイン」)の 2 文字の値の配列として指定します。省略すると、レスポンスに制限は適用されません。たとえば、リージョンをドイツとフランスに制限するには、次のようにします。
Swift
let filter = GMSAutocompleteFilter() filter.countries = ["DE", "FR"]
Objective-C
GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init]; filter.countries = @[ @"DE", @"FR" ];
GooglePlacesSwift
let filter = AutocompleteFilter(countries: ["DE", "FR"])
locationRestriction
と countries
の両方を指定すると、結果は 2 つの設定の交差する領域になります。
inputOffset
input
内のカーソル位置を示す、ゼロベースの Unicode 文字オフセット。カーソルの位置は、返される予測の種類に影響します。空の場合、デフォルトで input
の長さになります。
locationBias または locationRestriction
検索領域を定義するには、locationBias
または locationRestriction
を指定できます。両方は指定できません。locationRestriction
は結果が属するリージョンを指定するものと考えてください。locationBias
は、結果がエリアの近くにあっても範囲外でもよいリージョンを指定するものと考えることができます。
locationBias
には検索する領域を指定します。この位置はバイアスとして機能します。つまり、指定した位置周辺の結果を返すことができ、指定した領域外の結果も含まれます。locationRestriction
には検索する領域を指定します。指定した領域外の結果は返されません。
locationBias
または locationRestriction
領域を長方形のビューポートまたは円として指定します。
円は、中心点と半径(メートル単位)で定義します。半径は 0.0 ~ 50, 000.0 の範囲で指定してください。デフォルト値は 0.0 です。locationRestriction
の場合、半径は 0.0 より大きい値に設定する必要があります。それ以外の場合、リクエストは結果を返しません。
次に例を示します。
Swift
let center = CLLocationCoordinate2DMake(40.730610, -73.935242) let radius = 1000.0 filter.locationBias = GMSPlaceCircularLocationOption(center, radius)
Objective-C
CLLocationCoordinate2D center = CLLocationCoordinate2DMake(40.730610, -73.935242); radius = 1000.0; GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init]; filter.locationBias = GMSPlaceCircularLocationOption(center, radius);
GooglePlacesSwift
let center = CLLocationCoordinate2DMake(40.477398, -74.259087) let bias = CircularCoordinateRegion(center: center, radius: 1000.0) let filter = AutocompleteFilter(coordinateRegionBias: bias)
長方形は緯度と経度のビューポートであり、対角線上に low
と high
の 2 つのポイントとして表されます。ビューポートは閉じた領域とみなされ、
境界を含みます。緯度境界は -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
の両方を入力する必要があります。表示されるボックスを空にすることはできません。ビューポートが空の場合はエラーになります。
たとえば、次のビューポートはニューヨーク市を完全に囲んでいます。
Swift
let high = CLLocationCoordinate2DMake(40.921628, -73.700051) let low = CLLocationCoordinate2DMake(40.477398, -74.259087) let filter = GMSAutocompleteFilter() filter.locationBias = GMSPlaceRectangularLocationOption(high, low)
Objective-C
CLLocationCoordinate2D high = CLLocationCoordinate2DMake(40.477398, -74.259087); CLLocationCoordinate2D low = CLLocationCoordinate2DMake(440.921628, -73.700051); GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init]; filter.locationBias = GMSPlaceRectangularLocationOption(high, low);
GooglePlacesSwift
let northEast = CLLocationCoordinate2DMake(40.477398, -74.259087) let southWest = CLLocationCoordinate2DMake(40.921628, -73.700051) let filter = AutocompleteFilter(coordinateRegionBias: bias)
出所
目的地までの直線距離を計算する出発地点(distanceMeters
として返されます)。この値を省略すると、直線距離は返されません。緯度と経度の座標で指定する必要があります。
Swift
let filter = GMSAutocompleteFilter() filter.origin = CLLocation(latitude: 37.395804, longitude: -122.077023)
Objective-C
GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init]; filter.origin = [[CLLocation alloc] initWithLatitude:37.395804 longitude: -122.077023];
GooglePlacesSwift
let filter = AutocompleteFilter(origin: CLLocation(latitude: 37.395804, longitude: -122.077023))
regionCode
レスポンスのフォーマットに使用される地域コード。ccTLD(「トップレベル ドメイン」)の 2 文字の値として指定します。ほとんどの ccTLD コードは ISO 3166-1 コードと同一ですが、いくつか注意が必要な例外もあります。たとえば、英国の ccTLD は「uk」(.co.uk)ですが、ISO 3166-1 コードは「gb」(厳密には「グレート ブリテンおよび北アイルランド連合王国」のエンティティ)です。
無効なリージョン コードを指定すると、API から INVALID_ARGUMENT
エラーが返されます。このパラメータは、適用される法律に基づき、結果に影響する場合があります。
sessionToken
セッション トークンはユーザーが生成した文字列で、予測入力(新)の呼び出しを「セッション」としてトラッキングします。予測入力(新版)は、セッション トークンを使用して、ユーザーの予測入力検索のクエリフェーズと選択フェーズを、請求処理のために個別のセッションにグループ化します。詳細については、セッション トークンをご覧ください。
予測入力(新)の例
locationRestriction と locationBias を使用する
予測入力(新版)では、デフォルトで IP バイアスを使用して検索領域を制御します。IP バイアスを設定すると、API はデバイスの IP アドレスを使用して結果にバイアスをかけることができます。必要に応じて、locationRestriction
または locationBias
を使用できます(両方は使用できません)。
地域の制限では、検索する地域を指定します。指定した領域外の結果は返されません。次の例では、ロケーション制限を使用して、リクエストをサンフランシスコを中心とした半径 5,000 m の円形のロケーションに制限します。
Swift
let token = GMSAutocompleteSessionToken() let center = CLLocationCoordinate2DMake(37.775061, -122.419400) let radius = 5000.0 let filter = GMSAutocompleteFilter() filter.locationRestriction = GMSPlaceCircularLocationOption(center, radius) let request = GMSAutocompleteRequest(query:"Piz") request.filter = filter request.sessionToken = token GMSPlacesClient.shared().fetchAutocompleteSuggestions(from: request, callback: { ( results, error ) in if let error = error { print("Autocomplete error: \(error)") return } if let autocompleteResults = results { for result in autocompleteResults { print("Result \(String(describing: result.placeSuggestion?.placeID)) with \(String(describing: result.placeSuggestion?.attributedFullText))") } } })
Objective-C
CLLocationCoordinate2D center = CLLocationCoordinate2DMake(37.775061, -122.419400); radius = 5000.0; GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init]; filter.locationRestriction = GMSPlaceCircularLocationOption(center, radius); GMSAutocompleteRequest *request = [[GMSAutocompleteRequest alloc] initWithQuery:@"Sicilian piz"]; request.sessionToken = token; request.filter = filter; [[GMSPlacesClient sharedClient] fetchAutocompleteSuggestionsFromRequest:request callback:^(NSArray<GMSAutocompleteSuggestion *> * results, NSError * error){ // Handle response for (GMSAutocompleteSuggestion *suggestion in results) { if (suggestion.placeSuggestion) { // Show place suggestion data. } } }];
GooglePlacesSwift
let center = (37.775061, -122.419400) let radius = 5000.0 let restriction = CircularCoordinateRegion(center: center, radius: radius) let filter = AutocompleteFilter(coordinateRegionRestriction: restriction) let token = AutocompleteSessionToken() let autocompleteRequest = AutocompleteRequest(query: "Sicilian piz", sessionToken: token, filter: filter) switch await placesClient.fetchAutocompleteSuggestions(with: autocompleteRequest) { case .success(let autocompleteSuggestions): for suggestion in autocompleteSuggestions { switch suggestion { case .place: // Show place suggestion data. } } case .failure(let placesError): // Handle error. }
場所のバイアスを使用すると、ロケーションがバイアスとして機能します。つまり、指定したエリア以外の結果を含め、指定した場所周辺の結果を返すことができます。次の例では、位置バイアスを使用するように前のリクエストを変更します。
Swift
let token = GMSAutocompleteSessionToken() let center = CLLocationCoordinate2DMake(37.775061, -122.419400) let radius = 5000.0 let filter = GMSAutocompleteFilter() filter.locationBias = GMSPlaceCircularLocationOption(center, radius) let request = GMSAutocompleteRequest(query:"Piz") request.filter = filter request.sessionToken = token GMSPlacesClient.shared().fetchAutocompleteSuggestions(from: request, callback: { ( results, error ) in if let error = error { print("Autocomplete error: \(error)") return } if let autocompleteResults = results { for result in autocompleteResults { print("Result \(String(describing: result.placeSuggestion?.placeID)) with \(String(describing: result.placeSuggestion?.attributedFullText))") } } })
Objective-C
CLLocationCoordinate2D center = CLLocationCoordinate2DMake(37.775061, -122.419400); radius = 5000.0; GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init]; filter.locationBias = GMSPlaceCircularLocationOption(center, radius); GMSAutocompleteRequest *request = [[GMSAutocompleteRequest alloc] initWithQuery:@"Sicilian piz"]; request.sessionToken = token; request.filter = filter; [[GMSPlacesClient sharedClient] fetchAutocompleteSuggestionsFromRequest:request callback:^(NSArray<GMSAutocompleteSuggestion *> * results, NSError * error){ // Handle response for (GMSAutocompleteSuggestion *suggestion in results) { if (suggestion.placeSuggestion) { // Show place suggestion data. } } }];
GooglePlacesSwift
let center = (37.775061, -122.419400) let radius = 5000.0 let bias = CircularCoordinateRegion(center: center, radius: radius) let filter = AutocompleteFilter(coordinateRegionBias: bias) let token = AutocompleteSessionToken() let autocompleteRequest = AutocompleteRequest(query: "Sicilian piz", sessionToken: token, filter: filter) switch await placesClient.fetchAutocompleteSuggestions(with: autocompleteRequest) { case .success(let autocompleteSuggestions): for suggestion in autocompleteSuggestions { switch suggestion { case .place: // Show place suggestion data. } } case .failure(let placesError): // Handle error. }
タイプを使用する
types パラメータを使用して、リクエストの結果を表 A と表 B に記載されている特定のタイプに制限します。最大 5 つの値の配列を指定できます。省略すると、すべての型が返されます。
次の例では、「Soccer」というクエリ文字列を指定し、types パラメータを使用して、結果を "sporting_goods_store"
タイプの施設に制限しています。
Swift
let token = GMSAutocompleteSessionToken() let filter = GMSAutocompleteFilter() filter.types = ["sporting_goods_store"] let request = GMSAutocompleteRequest(query:"Soccer") request.filter = filter request.sessionToken = token GMSPlacesClient.shared().fetchAutocompleteSuggestions(from: request, callback: { ( results, error ) in if let error = error { print("Autocomplete error: \(error)") return } if let autocompleteResults = results { for result in autocompleteResults { print("Result \(String(describing: result.placeSuggestion?.placeID)) with \(String(describing: result.placeSuggestion?.attributedFullText))") } } })
Objective-C
GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init]; filter.types = @[ "sporting_goods_store" ]; GMSAutocompleteRequest *request = [[GMSAutocompleteRequest alloc] initWithQuery:@"Soccer"]; request.sessionToken = token; request.filter = filter; [[GMSPlacesClient sharedClient] fetchAutocompleteSuggestionsFromRequest:request callback:^(NSArray<GMSAutocompleteSuggestion *> * results, NSError * error){ // Handle response for (GMSAutocompleteSuggestion *suggestion in results) { if (suggestion.placeSuggestion) { // Show place suggestion data. } } }];
GooglePlacesSwift
let filter = AutocompleteFilter(types: [ PlaceType(rawValue: "sporting_goods_store") ]) let token = AutocompleteSessionToken() let autocompleteRequest = AutocompleteRequest(query: "Soccer", sessionToken: token, filter: filter) switch await placesClient.fetchAutocompleteSuggestions(with: autocompleteRequest) { case .success(let autocompleteSuggestions): for suggestion in autocompleteSuggestions { switch suggestion { case .place: // Show place suggestion data. } } case .failure(let placesError): // Handle error. }
オリジンを使用
緯度と経度の座標として指定された origin
パラメータをリクエストに含めると、API はレスポンスに出発地から目的地までの直線距離を含めます。レスポンスでは距離が distanceMeters
として返されます。
次の例では、原点をサンフランシスコの中心に設定しています。
Swift
let token = GMSAutocompleteSessionToken() let origin = CLLocation(latitude: 37.7749, longitude: -122.4194) let filter = GMSAutocompleteFilter() filter.origin = origin let request = GMSAutocompleteRequest(query:"Amoeba") request.filter = filter request.sessionToken = token GMSPlacesClient.shared().fetchAutocompleteSuggestions(from: request, callback: { ( results, error ) in if let error = error { print("Autocomplete error: \(error)") return } if let autocompleteResults = results { for result in autocompleteResults { print("Result \(String(describing: result.placeSuggestion?.placeID)) with \(String(describing: result.placeSuggestion?.attributedFullText)) and distance: \(String(describing: result.placeSuggestion?.distanceMeters))") } } })
Objective-C
GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init]; filter.origin = [[CLLocation alloc] initWithLatitude:37.395804 longitude:-122.077023]; GMSAutocompleteRequest *request = [[GMSAutocompleteRequest alloc] initWithQuery:@"Amoeba"]; request.sessionToken = token; request.filter = filter; [[GMSPlacesClient sharedClient] fetchAutocompleteSuggestionsFromRequest:request callback:^(NSArray<GMSAutocompleteSuggestion *> * results, NSError * error){ // Handle response for (GMSAutocompleteSuggestion *suggestion in results) { if (suggestion.placeSuggestion) { // Show place suggestion data. } } }];
GooglePlacesSwift
let filter = AutocompleteFilter(origin: CLLocation(latitude: 37.7749, longitude: -122.4194)) let token = AutocompleteSessionToken() let autocompleteRequest = AutocompleteRequest(query: "Amoeba", sessionToken: token, filter: filter) switch await placesClient.fetchAutocompleteSuggestions(with: autocompleteRequest) { case .success(let autocompleteSuggestions): for suggestion in autocompleteSuggestions { switch suggestion { case .place: // Show place suggestion data. } } case .failure(let placesError): // Handle error. }
帰属表示
Autocomplete (new) は地図がなくても使用できます。地図を表示する場合は、Google マップを使用してください。地図なしで予測入力(新)サービスからの候補を表示する場合は、検索フィールドまたは検索結果の横に Google ロゴをインラインで含める必要があります。詳しくは、Google ロゴと帰属表示をご覧ください。