Place Autocomplete(新機能)

Autocomplete(新版)サービスは、リクエストに応じて場所の候補を返す iOS API です。リクエストでは、テキスト検索文字列と、検索領域を制御する地理的境界を指定します。

予測入力(新版)サービスは、入力に含まれる完全な単語や部分文字列を照合して、場所の名前や住所、Plus Codes を解決できます。これにより、アプリケーションはユーザーの入力に応じてクエリを送信し、場所の候補をリアルタイムで表示することができます。

場所の候補は、指定された入力テキスト文字列と検索領域に基づく、お店やサービス、住所、スポットなどの場所です。

たとえば、部分的なユーザー入力「Sicilian piz」を含む文字列を入力として使用し、検索領域をカリフォルニア州サンフランシスコに限定して API を呼び出します。レスポンスには、検索文字列と検索エリア(「Sicilian Pizza Kitchen」など)に一致する場所の候補のリストと、場所の詳細が含まれます。

返される場所の候補は、目的の場所を選択できるように、ユーザーに表示されるように設計されています。Place Details(新)リクエストを行うと、返された場所の候補に関する詳細情報を取得できます。

予測入力(新規)リクエスト

GMSPlaceClient のメソッドを呼び出して、予測入力リクエストを作成します。GMSAutocompleteRequest オブジェクトでパラメータを渡すことができます。レスポンスは、GMSAutocompletePlaceSuggestion オブジェクト内に予測入力の候補を提供します。

API キーと query パラメータは必須です。また、GMSAutocompleteSessionToken を含めてリクエストを課金セッションに関連付け、GMSAutocompleteFilter を含めて結果に適用することもできます。

必須パラメータと省略可能なパラメータの詳細については、このドキュメントのパラメータ セクションをご覧ください。

Swift

let token = GMSAutocompleteSessionToken()

let northEastBounds = CLLocationCoordinate2DMake(37.388162, -122.088137)
let southWestBounds = CLLocationCoordinate2DMake(37.395804, -122.077023)

let filter = GMSAutocompleteFilter()
filter.types = [kGMSPlaceTypeRestaurant]
filter.locationBias = GMSPlaceRectangularLocationOption(northEastBounds, southWestBounds)
    
let request = GMSAutocompleteRequest(query:"Sicilian piz")
request.filter = filter
request.sessionToken = token
GMSPlacesClient.shared().fetchAutocompleteSuggestions(from: request, callback: { results, error in
  // Handle response
})

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 B1 つのプライマリ タイプのみを含めることができます。たとえば、プライマリ タイプは mexican_restaurantsteak_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"])
  

locationRestrictioncountries の両方を指定すると、結果は 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)      
  

長方形は緯度と経度のビューポートであり、対角線上に lowhigh の 2 つのポイントとして表されます。ビューポートは閉じた領域とみなされ、 境界を含みます。緯度境界は -90 ~ 90 度の範囲、経度境界は -180 ~ 180 度の範囲にする必要があります。

  • low = high の場合、ビューポートはその単一点で構成されます。
  • low.longitude > high.longitude の場合、経度の範囲が反転します(ビューポートが 180 度の経度と交差します)。
  • low.longitude = -180 度、high.longitude= 180 度の場合、ビューポートにはすべての経度が含まれます。
  • low.longitude = 180 度、high.longitude = -180 度の場合、経度範囲は空になります。

lowhigh の両方を入力する必要があります。表示されるボックスを空にすることはできません。ビューポートが空の場合はエラーになります。

たとえば、次のビューポートはニューヨーク市を完全に囲んでいます。

Swift

let high = CLLocationCoordinate2DMake(40.477398, -74.259087)
let low = CLLocationCoordinate2DMake(40.921628, -73.700051)

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:"Sicilian piz")
request.filter = filter
request.sessionToken = token
GMSPlacesClient.shared().fetchAutocompleteSuggestions(from: request, callback: { results, error in
  // Handle response
  })

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:"Sicilian piz")
request.filter = filter
request.sessionToken = token
GMSPlacesClient.shared().fetchAutocompleteSuggestions(from: request, callback: { results, error in
  // Handle response
})

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
  // Handle response
})

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
  // Handle response
})

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 ロゴと帰属表示をご覧ください。