Places SDK for iOS(新規)は、場所の名前と住所、緯度/経度座標で指定された地理的位置、場所の種類(ナイトクラブ、ペットショップ、博物館など)など、場所に関する豊富な情報をアプリに提供します。特定の場所のこうした情報にアクセスするには、場所を一意に識別する不変の識別子であるプレイス ID を使用します。
Place Details を取得する
GMSPlace
クラスには、場所データ フィールド(新規)に示されているすべてのデータ フィールドなど、特定の場所に関する情報が格納されます。GMSPlace
オブジェクトを取得するには、GMSPlacesClient
fetchPlaceWithRequest:
を呼び出して、GMSFetchPlaceRequest
オブジェクトと、GMSPlaceResultCallback
タイプのコールバック メソッドを渡します。
GMSFetchPlaceRequest
オブジェクトでは、以下を指定します。
- (必須)プレイス ID。Google プレイスのデータベースと Google マップで使用されている場所の一意の識別子です。
- (必須)
GMSPlace
オブジェクトで返すフィールドのリスト。フィールド マスクとも呼ばれます。これはGMSPlaceProperty
で定義されます。 フィールド リストでフィールドを 1 つも指定していない場合、またはフィールド リストを省略すると、呼び出しでエラーが返されます。 - (省略可)レスポンスのフォーマットに使用する地域コード。
- (省略可)オートコンプリート(新規)セッションを終了するために使用されるセッション トークン。
Place Details リクエストを行う
この例では、ID によってプレイスを取得し、次のパラメータを渡します。
ChIJV4k8_9UodTERU5KXbkYpSYs
のプレイス ID。- 場所の名前とウェブサイトの URL を返すように指定するフィールド リスト。
- 結果を処理する
GMSPlaceResultCallback
。
API は指定されたコールバック メソッドを呼び出し、GMSPlace
オブジェクトを渡します。場所が見つからない場合、プレイス オブジェクトは nil になります。
Swift
// A hotel in Saigon with an attribution. let placeID = "ChIJV4k8_9UodTERU5KXbkYpSYs" // Specify the place data types to return. let myProperties = [GMSPlaceProperty.name, GMSPlaceProperty.website].map {$0.rawValue} // Create the GMSFetchPlaceRequest object. let fetchPlaceRequest = GMSFetchPlaceRequest(placeID: placeID, placeProperties: myProperties, sessionToken: nil) client.fetchPlace(with: fetchPlaceRequest, callback: { (place: GMSPlace?, error: Error?) in guard let place, error == nil else { return } print("Place found: \(String(describing: place.name))") })
Objective-C
// A hotel in Saigon with an attribution. NSString *placeID = @"ChIJV4k8_9UodTERU5KXbkYpSYs"; // Specify the place data types to return. NSArray<NSString *> *myProperties = @[GMSPlacePropertyName, GMSPlacePropertyWebsite]; // Create the GMSFetchPlaceRequest object. GMSFetchPlaceRequest *fetchPlaceRequest = [[GMSFetchPlaceRequest alloc] initWithPlaceID:placeID placeProperties: myProperties sessionToken:nil]; [placesClient fetchPlaceWithRequest: fetchPlaceRequest callback: ^(GMSPlace *_Nullable place, NSError *_Nullable error) { if (error != nil) { NSLog(@"An error occurred %@", [error localizedDescription]); return; } else { NSLog(@"Place Found: %@", place.name); NSLog(@"The place URL: %@", place.website); } }];
GooglePlacesSwift
// A hotel in Saigon with an attribution. let placeID = "ChIJV4k8_9UodTERU5KXbkYpSYs" let fetchPlaceRequest = FetchPlaceRequest( placeID: placeID, placeProperties: [.name, .website] ) switch await placesClient.fetchPlace(with: fetchPlaceRequest) { case .success(let place): // Handle place case .failure(let placesError): // Handle error }
Place Details レスポンス
Place Details は、場所の詳細を含む GMSPlace
オブジェクトを返します。GMSPlace
オブジェクトには、フィールド リストで指定されたフィールドのみが入力されます。
レスポンスの GMSPlace
オブジェクトには、データ フィールドに加えて、次のメンバー関数が含まれています。
-
isOpen
は、指定された時間に場所が営業しているかどうかを計算します。 isOpenAtDate
は、特定の日に場所が営業しているかどうかを計算します。
必須パラメータ
GMSFetchPlaceRequest
オブジェクトを使用して、必要なパラメータを指定します。
プレイス ID
Places SDK for iOS で使用されるプレイス ID は、Places API、Places SDK for Android、その他の Google API で使用される識別子と同じです。1 つのプレイス ID で参照できるプレイスは 1 つのみですが、1 つのプレイスが複数のプレイス ID を持つ場合があります。
状況によっては、場所に新しいプレイス ID が付与されることがあります。たとえば、お店やサービスが新しい場所に移動するケースが考えられます。
プレイス ID を指定して場所をリクエストすると、常に同じ場所がレスポンスで返されます(場所がまだ存在する場合)。ただし、レスポンスには、リクエスト内のプレイス ID とは異なるプレイス ID が含まれる場合があります。
フィールド リスト
Place Details をリクエストするときは、その場所の GMSPlace
オブジェクトで返されるデータをフィールド マスクとして指定する必要があります。フィールド マスクを定義するには、GMSPlaceProperty
の値の配列を GMSFetchPlaceRequest
オブジェクトに渡します。フィールド マスキングは、不要なデータをリクエストしないようにするための優れた設計上の方法です。これにより、不要な処理時間と課金を回避できます。
以下のフィールドを 1 つ以上指定します。
以下のフィールドによって Place Details(ID のみ)SKU がトリガーされます。
GMSPlacePropertyPlaceID
、GMSPlacePropertyName
、GMSPlacePropertyPhotos
以下のフィールドによって Place Details(Location Only)SKU がトリガーされます。
GMSPlacePropertyAddressComponents
、GMSPlacePropertyFormattedAddress
、GMSPlacePropertyCoordinate
、GMSPlacePropertyPlusCode
、GMSPlacePropertyTypes
、GMSPlacePropertyViewport
以下のフィールドによって Place Details(Basic)SKU がトリガーされます。
GMSPlacePropertyBusinessStatus
、GMSPlacePropertyIconBackgroundColor
、GMSPlacePropertyIconImageURL
、GMSPlacePropertyUTCOffsetMinutes
、GMSPlacePropertyWheelchairAccessibleEntrance
以下のフィールドによって Place Details(Advanced)SKU がトリガーされます。
GMSPlacePropertyCurrentOpeningHours
、GMSPlacePropertySecondaryOpeningHours
、GMSPlacePropertyPhoneNumber
、GMSPlacePropertyPriceLevel
、GMSPlacePropertyRating
、GMSPlacePropertyOpeningHours
、GMSPlacePropertyUserRatingsTotal
、GMSPlacePropertyWebsite
以下のフィールドによって Place Details(Preferred)SKU がトリガーされます。
GMSPlacePropertyCurbsidePickup
、GMSPlacePropertyDelivery
、GMSPlacePropertyDineIn
、GMSPlacePropertyEditorialSummary
、GMSPlacePropertyReservable
、GMSPlacePropertyReviews
、GMSPlacePropertyServesBeer
、GMSPlacePropertyServesBreakfast
、GMSPlacePropertyServesBrunch
、GMSPlacePropertyServesDinner
、GMSPlacePropertyServesLunch
、GMSPlacePropertyServesVegetarianFood
、GMSPlacePropertyServesWine
、GMSPlacePropertyTakeout
次の例では、2 つのフィールド値のリストを渡して、リクエストによって返される GMSPlace
オブジェクトに name
フィールドと placeID
フィールドがあることを指定します。
Swift
// Specify the place data types to return. let fields: [GMSPlaceProperty] = [.placeID, .name]
Objective-C
// Specify the place data types to return. NSArray<GMSPlaceProperty *> *fields = @[GMSPlacePropertyPlaceID, GMSPlacePropertyName];
GooglePlacesSwift
// Specify the place data types to return. let fields: [PlaceProperty] = [.placeID, .displayName]
省略可能なパラメータ
GMSFetchPlaceRequest
オブジェクトを使用して、オプションのパラメータを指定します。
regionCode
レスポンスのフォーマットに使用するリージョン コード。 2 文字の CLDR コード値で指定します。このパラメータは検索結果にバイアス効果をもたらすこともあります。デフォルト値はありません。
レスポンスの住所フィールドの国名が地域コードと一致する場合、国コードは住所から除外されます。
ほとんどの CLDR コードは ISO 3166-1 コードと同一ですが、いくつか注意が必要な例外もあります。たとえば、英国の ccTLD は「uk」(.co.uk)ですが、ISO 3166-1 コードは「gb」(厳密には「グレート ブリテンおよび北アイルランド連合王国」のエンティティ)です。パラメータは、適用される法律に基づいて結果に影響を与える可能性があります。
sessionToken
セッション トークンは、オートコンプリート(新機能)の呼び出しを「セッション」としてトラッキングする、ユーザー生成の文字列です。オートコンプリート(新機能)は、セッション トークンを使用して、ユーザーのオートコンプリート検索におけるクエリと場所選択のフェーズを個別のセッションにグループ化し、請求を行います。セッション トークンは、Autocomplete(New)呼び出しに続く Place Details(New)呼び出しに渡されます。詳細については、セッション トークンをご覧ください。
アプリに属性を表示する
アプリが GMSPlacesClient
から取得した情報(写真やレビューなど)を表示する場合、必要な属性も表示する必要があります。
たとえば、GMSPlacesClient
オブジェクトの reviews
プロパティには、最大 5 つの GMSPlaceReview
オブジェクトの配列が含まれます。各 GMSPlaceReview
オブジェクトには属性と作成者属性を含めることができます。アプリにレビューを表示する場合は、帰属または著者の帰属も表示する必要があります。
詳細については、アトリビューションのドキュメントをご覧ください。