Autocomplete(新規)サービスは、リクエストに応答して場所の候補を返す iOS API です。リクエストで、検索エリアを制御するテキスト検索文字列と地理的な境界を指定します。
Autocomplete(新規)サービスは、入力された単語全体とサブ文字列を照合し、地名、住所、プラスコードを解決できます。そのため、ユーザーが入力するときにクエリを送信して、その場で場所の候補を表示できます。
場所の候補は、指定された入力テキスト文字列と検索エリアに基づいて表示される、ビジネス、住所、スポットなどの場所です。
たとえば、ユーザー入力の一部である「Spagh」を含む文字列を入力として API を呼び出し、検索エリアをニューヨーク市に限定します。レスポンスには、検索文字列と検索エリアに一致する場所の候補のリスト(「Cafe Spaghetti」というレストランなど)と、その場所の詳細情報が含まれます。
返された場所の候補は、ユーザーが目的の場所を選択できるように表示するように設計されています。場所の詳細(新規)リクエストを送信すると、返された場所の候補の詳細情報を取得できます。
自動入力(新規)リクエスト
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. } } }];
iOS 向け Places Swift SDK(プレビュー)
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
: 特定の名前と、都市や地域などのあいまいさを解消するテキスト。
必須パラメータ
クエリ
検索するテキスト文字列。単語全体とサブ文字列、場所の名前、住所、プラスコードを指定します。Autocomplete(新規)サービスは、この文字列に基づいて一致候補を返します。また、認識された関連性に基づいて結果を並べ替えます。
オプション パラメータ
タイプ
場所に関連付けることができるタイプは、テーブル A または テーブル B の単一のプライマリ タイプのみです。たとえば、プライマリ タイプは mexican_restaurant
または steak_house
です。
デフォルトでは、API は場所に関連付けられているプライマリ タイプ値に関係なく、input
パラメータに基づいてすべての場所を返します。types
パラメータを渡して、結果を特定のプライマリ タイプまたはプライマリ タイプに制限します。
このパラメータを使用して、表 A または 表 B から最大 5 つの型値を指定します。レスポンスに含まれる場所は、指定されたプライマリ タイプ値のいずれかと一致している必要があります。
次のいずれかの場合、リクエストは INVALID_REQUEST
エラーで拒否されます。
- 5 つを超えるタイプが指定されている。
- 認識できない型は指定されます。
実施国数
指定された地域のリストからのみ結果を取得します。このリストは、最大 15 個の ccTLD(「トップレベル ドメイン」)の 2 文字の値の配列として指定します。省略した場合、レスポンスには制限が適用されません。たとえば、地域をドイツとフランスに制限するには、次のようにします。
Swift
let filter = GMSAutocompleteFilter() filter.countries = ["DE", "FR"]
Objective-C
GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init]; filter.countries = @[ @"DE", @"FR" ];
iOS 向け Places Swift SDK(プレビュー)
let filter = AutocompleteFilter(countries: ["DE", "FR"])
locationRestriction
と countries
の両方を指定すると、結果は 2 つの設定の交差領域に表示されます。
inputOffset
input
内のカーソルの位置を示す 0 ベースの Unicode 文字オフセット。カーソルの位置は、返される予測に影響する可能性があります。空の場合は、デフォルトで input
の長さになります。
locationBias または locationRestriction
検索領域を定義するには、locationBias
または locationRestriction
を指定します(両方は指定できません)。locationRestriction
は、結果が含まれる必要があるリージョンを指定すると考えてください。locationBias
は、結果が近い必要があるリージョンを指定すると考えてください。ただし、そのリージョンの外側にあってもかまいません。
locationBias
は検索するエリアを指定します。この位置情報はバイアスとして機能します。つまり、指定された位置情報の周辺の結果(指定されたエリア外の検索結果を含む)が返される可能性があります。locationRestriction
は検索するエリアを指定します。指定されたエリア外の検索結果は返されません。
locationBias
または locationRestriction
領域を長方形のビューポートまたは円として指定します。
円は、中心点と半径(メートル単位)で定義されます。半径は 0.0 ~ 50000.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);
iOS 向け Places Swift SDK(プレビュー)
let center = CLLocationCoordinate2DMake(40.477398, -74.259087) let bias = CircularCoordinateRegion(center: center, radius: 1000.0) let filter = AutocompleteFilter(coordinateRegionBias: bias)
長方形は緯度経度ビューポートで、対角線上の 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
の両方を入力する必要があります。また、表すボックスは空にできません。ビューポートが空の場合、エラーが発生します。
たとえば、このビューポートはニューヨーク市を完全に囲んでいます。
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);
iOS 向け Places Swift SDK(プレビュー)
let northEast = CLLocationCoordinate2DMake(40.477398, -74.259087) let southWest = CLLocationCoordinate2DMake(40.921628, -73.700051) let filter = AutocompleteFilter(coordinateRegionBias: bias)
origin
目的地までの直線距離を計算する始点(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];
iOS 向け Places Swift SDK(プレビュー)
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」(技術的には「The United Kingdom of Great Britain and Northern Ireland」のエンティティ)です。
無効な地域コードを指定すると、API は INVALID_ARGUMENT
エラーを返します。このパラメータは、適用される法律に基づいて結果に影響する可能性があります。
sessionToken
セッション トークンは、Autocomplete(新規)呼び出しを「セッション」として追跡するユーザー作成の文字列です。Autocomplete(新規)は、セッション トークンを使用して、課金目的でユーザーの Autocomplete 検索のクエリフェーズと選択フェーズを個別のセッションにグループ化します。詳細については、セッション トークンをご覧ください。
自動入力(新規)の例
locationRestriction と locationBias を使用する
自動入力(新規)では、デフォルトで IP バイアスを使用して検索範囲を制御します。IP バイアスを使用すると、API はデバイスの IP アドレスを使用して結果をバイアスします。必要に応じて、locationRestriction
または locationBias
を使用して検索対象のエリアを指定できます(両方を使用することはできません)。
地域の制限では、検索するエリアを指定します。指定されたエリア外の検索結果は返されません。次の例では、位置情報の制限を使用して、リクエストをサンフランシスコを中心とする半径 5,000 メートルの円形の位置情報の制限に制限しています。
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. } } }];
iOS 向け Places Swift SDK(プレビュー)
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. } } }];
iOS 向け Places Swift SDK(プレビュー)
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. } } }];
iOS 向け Places Swift SDK(プレビュー)
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. } } }];
iOS 向け Places Swift SDK(プレビュー)
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. }
帰属表示
地図がなくても、自動入力(新規)を使用できます。地図を表示する場合は、Google マップを使用してください。地図なしで自動入力(新規)サービスの候補を表示する場合は、検索フィールドまたは検索結果に Google のロゴをインラインで表示する必要があります。詳細については、Google のロゴと帰属情報の表示をご覧ください。