Place Autocomplete(新機能)

プラットフォームを選択: Android iOS JavaScript ウェブサービス

Autocomplete (New) サービスは、リクエストに応じてプレイスの候補を返す iOS API です。リクエストでは、テキスト検索文字列に加え、検索対象地域を限定する地理的境界を指定します。

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

場所の候補は、指定された入力テキスト文字列と検索エリアに基づいて、ビジネス、住所、スポットなどの場所です。

たとえば、ユーザー入力の一部である「Spagh」を含む文字列を入力として API を呼び出し、検索範囲をニューヨーク市に限定します。レスポンスには、検索文字列と検索エリアに一致する場所の候補のリスト(「Cafe Spaghetti」というレストランなど)と、その場所の詳細が含まれます。

返された場所の候補は、ユーザーが目的の場所を選択できるように表示されます。Place Details (New) リクエストを送信すると、返されたプレイス候補の詳細情報を取得できます。

Autocomplete(新規)リクエスト

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

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.
}

Autocomplete(新規)の回答

自動補完は、最大 5 つの GMSAutocompleteSuggestion インスタンスの配列を返します。配列には次のものが含まれます。

  • placeID
  • types: この場所に適用されるタイプ。
  • distanceMeters: 原点からの距離。
  • attributedFullText: 候補の完全な人が読めるテキスト。
  • attributedPrimaryText: 候補の主要なテキスト(人が読める形式)。
  • attributedSecondaryText: 候補の補足テキスト(人が読める形式)。
  • structuredFormat: 特定の名前と、都市や地域などのあいまいさを解消するテキスト。

必須パラメータ

クエリ

検索するテキスト文字列。完全な単語や部分文字列、場所の名前、住所、Plus Codes を指定します。Autocomplete (New) サービスはこの文字列と一致する候補を、関連性の高い順に並べて結果として返します。

オプション パラメータ

タイプ

1 つの場所に関連付けることができるのは、テーブル A または テーブル B のタイプのうち1 つのプライマリ タイプのみです。たとえば、プライマリ タイプは 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"])
  

locationRestrictioncountries の両方を指定すると、結果は 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 度の場合、経度の範囲は空になります。

lowhigh の両方に値を入力する必要があります。また、表すボックスを空にすることはできません。ビューポートが空の場合、エラーが発生します。

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

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)
  

オリジン

目的地までの直線距離を計算する始点(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」(厳密には「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 つの値の配列を指定できます。省略すると、すべてのタイプが返されます。

次の例では、クエリ文字列「サッカー」を指定し、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 マップを使用してください。地図を使わずに Autocomplete(新規)サービスからの候補を表示する場合は、検索フィールド/検索結果に Google ロゴをインラインで表示する必要があります。詳しくは、Google のロゴと帰属を表示するをご覧ください。