Places SDK for iOS(新版)は、場所の名前と住所、緯度/経度座標で指定された地理的位置、場所の種類(ナイトクラブ、ペットショップ、博物館など)など、場所に関する豊富な情報をアプリに提供します。特定の場所のこの情報にアクセスするには、プレイス ID(場所を一意に識別する安定した ID)を使用します。
Place Details を取得する
GMSPlace
クラスには、プレイス データ フィールド(新規)に示されているすべてのデータ フィールドなど、特定のプレイスに関する情報が含まれています。GMSPlacesClient
fetchPlaceWithRequest:
を呼び出し、GMSFetchPlaceRequest
オブジェクトと GMSPlaceResultCallback
型のコールバック メソッドを渡して、GMSPlace
オブジェクトを取得します。
GMSFetchPlaceRequest
オブジェクトは、次の項目を指定します。
- (必須)プレイス ID。Google プレイスのデータベースおよび Google マップで、特定の場所を一意に識別する ID です。
- (必須)
GMSPlace
オブジェクトで返すフィールドのリスト。GMSPlaceProperty
で定義されているフィールド マスクとも呼ばれます。フィールド リストで 1 つ以上のフィールドを指定しない場合、またはフィールド リストを省略した場合、呼び出しはエラーを返します。 - (省略可)レスポンスのフォーマットに使用される地域コード。
- (省略可)Autocomplete(新版)セッションの終了に使用されるセッション トークン。
Place Details リクエストを作成する
この例では、次のパラメータを渡して、ID でプレイスを取得します。
ChIJV4k8_9UodTERU5KXbkYpSYs
の Place ID。- ビジネス名とウェブサイトの URL を返すように指定するフィールド リスト。
- 結果を処理する
GMSPlaceResultCallback
。
API は、指定されたコールバック メソッドを呼び出し、GMSPlace
オブジェクトを渡します。場所が見つからない場合、プレイス オブジェクトは nil になります。
Places Swift SDK
// 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 }
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); } }];
Place Details レスポンス
Place Details は、場所に関する詳細を含む GMSPlace
オブジェクトを返します。フィールド リストで指定されたフィールドのみが GMSPlace
オブジェクトに入力されます。
営業ステータスを取得する
GMSPlacesClient
オブジェクトには、呼び出しで指定された時間に基づいて、現在地が営業中かどうかを示すレスポンスを返す isOpenWithRequest
(Swift では isOpenRequest
、GooglePlacesSwift では isPlaceOpenRequest
)というメンバー関数が含まれています。
このメソッドは、次のものを含む GMSPlaceIsOpenWithRequest
型の単一の引数を取ります。
GMSPlace
オブジェクト、またはプレイス ID を指定する文字列。必要なフィールドを含む Place オブジェクトの作成の詳細については、プレイスの詳細をご覧ください。
- 確認する時間を指定するオプションの
NSDate
(Obj-C)またはDate
(Swift)オブジェクト。時間が指定されていない場合、デフォルトは現在時刻です。 - レスポンスを処理する
GMSPlaceOpenStatusResponseCallback
メソッド。 >
GMSPlaceIsOpenWithRequest
メソッドでは、GMSPlace
オブジェクトに次のフィールドを設定する必要があります。
GMSPlacePropertyUTCOffsetMinutes
GMSPlacePropertyBusinessStatus
GMSPlacePropertyOpeningHours
GMSPlacePropertyCurrentOpeningHours
GMSPlacePropertySecondaryOpeningHours
これらのフィールドが Place オブジェクトで指定されていない場合、またはプレイス ID を渡した場合は、GMSPlacesClient GMSFetchPlaceRequest:
を使用して取得します。
isOpenWithRequest
レスポンス
isOpenWithRequest
は、ビジネスが営業中か、閉店しているか、ステータスが不明かを示す status
というブール値を含む GMSPlaceIsOpenResponse
オブジェクトを返します。
言語 | 開いている場合の値 | 閉店時の値 | ステータスが不明な場合の値 |
---|---|---|---|
Places Swift | true |
false |
nil |
Swift | .open |
.closed |
.unknown |
Objective-C | GMSPlaceOpenStatusOpen |
GMSPlaceOpenStatusClosed |
GMSPlaceOpenStatusUnknown |
isOpenWithRequest
の請求
GMSPlacePropertyUTCOffsetMinutes
フィールドとGMSPlacePropertyBusinessStatus
フィールドは、Basic Data SKU の対象となります。残りの営業時間は Place Details Enterprise SKU に基づいて課金されます。GMSPlace
オブジェクトに以前のリクエストからのこれらのフィールドがすでに存在する場合、再度課金されることはありません。
例: GMSPlaceIsOpenWithRequest
リクエストを作成する
次の例は、既存の GMSPlace
オブジェクト内で GMSPlaceIsOpenWithRequest
を初期化する方法を示しています。Places Swift SDK
let isOpenRequest = IsPlaceOpenRequest(place: place) switch await placesClient.isPlaceOpen(with: isOpenRequest) { case .success(let isOpenResponse): switch isOpenResponse.status { case true: // Handle open case false: // Handle closed case nil: // Handle unknown case .failure(let placesError): // Handle error }
Swift
let isOpenRequest = GMSPlaceIsOpenRequest(place: place, date: nil) GMSPlacesClient.shared().isOpen(with: isOpenRequest) { response, error in if let error = error { // Handle Error } switch response.status { case .open: // Handle open case .closed: // Handle closed case .unknown: // Handle unknown } }
Objective-C
GMSPlaceIsOpenRequest *isOpenRequest = [[GMSPlaceIsOpenRequest alloc] initWithPlace:place date:nil]; [[GMSPlacesClient sharedClient] isOpenWithRequest:isOpenRequest callback:^(GMSPlaceIsOpenResponse response, NSError *_Nullable error) { if (error) { // Handle error } switch (response.status) { case GMSPlaceOpenStatusOpen: // Handle open case GMSPlaceOpenStatusClosed: // Handle closed case GMSPlaceOpenStatusUnknown: // Handle unknown } }];
必須パラメータ
GMSFetchPlaceRequest
オブジェクトを使用して、必要なパラメータを指定します。
プレイス ID
Places SDK for iOS で使用されるプレイス ID は、Places API、Places SDK for Android、その他の Google API で使用される識別子と同じです。各プレイス ID が参照できる場所は 1 つのみですが、1 つの場所が複数のプレイス ID を持つ場合はあります。
場所が新しいプレイス ID を取得する状況があります。たとえば、お店やサービスが新しい場所に移動するケースが考えられます。
場所 ID を指定して場所をリクエストすると、レスポンスで常に同じ場所が返されます(その場所がまだ存在する場合)。ただし、レスポンスにはリクエスト内の場所 ID とは異なる場所 ID が含まれる場合があります。
フィールド リスト
場所の詳細をリクエストするときは、場所の GMSPlace
オブジェクトで返すデータをフィールド マスクとして指定する必要があります。フィールド マスクを定義するには、GMSPlaceProperty
から GMSFetchPlaceRequest
オブジェクトに値の配列を渡します。フィールド マスキングは、不要なデータをリクエストしないようにするための優れた設計手法です。これにより、不要な処理時間と請求料金を回避できます。
次のフィールドを 1 つ以上指定します。
次のフィールドは、Place Details Essentials ID Only SKU をトリガーします。
GMSPlacePropertyPlaceID
GMSPlacePropertyPhotos
次のフィールドは、Place Details Essentials SKU をトリガーします。
GMSPlacePropertyAddressComponents
GMSPlacePropertyFormattedAddress
GMSPlacePropertyCoordinate
GMSPlacePropertyPlusCode
GMSPlacePropertyTypes
GMSPlacePropertyViewport
次のフィールドは、Place Details Pro SKU をトリガーします。
GMSPlacePropertyBusinessStatus
GMSPlacePropertyIconBackgroundColor
GMSPlacePropertyIconImageURL
GMSPlacePropertyName
GMSPlacePropertyUTCOffsetMinutes
GMSPlacePropertyWheelchairAccessibleEntrance
次のフィールドは、Place Details Pro SKU をトリガーします。
GMSPlacePropertyCurrentOpeningHours
GMSPlacePropertySecondaryOpeningHours
GMSPlacePropertyPhoneNumber
GMSPlacePropertyPriceLevel
GMSPlacePropertyRating
GMSPlacePropertyOpeningHours
GMSPlacePropertyUserRatingsTotal
GMSPlacePropertyWebsite
次のフィールドは、Place Details Enterprise SKU をトリガーします。
GMSPlacePropertyCurbsidePickup
GMSPlacePropertyDelivery
GMSPlacePropertyDineIn
GMSPlacePropertyEditorialSummary
GMSPlacePropertyReservable
GMSPlacePropertyReviews
GMSPlacePropertyServesBeer
GMSPlacePropertyServesBreakfast
GMSPlacePropertyServesBrunch
GMSPlacePropertyServesDinner
GMSPlacePropertyServesLunch
GMSPlacePropertyServesVegetarianFood
GMSPlacePropertyServesWine
GMSPlacePropertyTakeout
次の例では、2 つのフィールド値のリストを渡して、リクエストによって返される GMSPlace
オブジェクトに name
フィールドと placeID
フィールドが含まれるように指定します。
Places Swift SDK
// Specify the place data types to return. let fields: [PlaceProperty] = [.placeID, .displayName]
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];
オプション パラメータ
GMSFetchPlaceRequest
オブジェクトを使用して、省略可能なパラメータを指定します。
regionCode
レスポンスのフォーマットに使用される地域コード。 2 文字の CLDR コード値として指定します。このパラメータは、検索結果にバイアス効果をもたらすこともあります。デフォルト値はありません。
レスポンスの住所フィールドの国名が地域コードと一致する場合、住所から国コードが省略されます。
大半の CLDR コードは ISO 3166-1 コードと同一ですが、いくつか注意が必要な例外もあります。たとえば、英国の ccTLD は「uk」(.co.uk)ですが、ISO 3166-1 コードは「gb」(厳密には「グレートブリテンおよび北アイルランド連合王国」のエンティティ用)です。このパラメータは、適用される法律に基づいて結果に影響を与える可能性があります。
sessionToken
セッション トークンは、Autocomplete(新版)の呼び出しを「セッション」として追跡するユーザー生成の文字列です。Autocomplete(新規)では、セッション トークンを使用して、予測入力検索でのユーザーのクエリと場所の選択フェーズを、請求処理のために個別のセッションにグループ化します。セッション トークンは、Autocomplete(新規)呼び出しに続く Place Details(新規)呼び出しに渡されます。詳細については、セッション トークンをご覧ください。
アプリに属性を表示する
アプリで GMSPlacesClient
から取得した情報(写真やクチコミなど)を表示する場合、必要な帰属情報も表示する必要があります。
たとえば、GMSPlacesClient
オブジェクトの reviews
プロパティには、最大 5 個の GMSPlaceReview
オブジェクトの配列が含まれます。各 GMSPlaceReview
オブジェクトには、帰属情報と著者の帰属情報を含めることができます。アプリにレビューを表示する場合は、帰属情報または著作者の帰属情報も表示する必要があります。
詳細については、アトリビューションに関するドキュメントをご覧ください。