遷移至 Place Details (新推出)

Places SDK for iOS 支援現有的 Place Details。如果您熟悉現有的 Places SDK for iOS,新版 Place Details 會進行下列變更:

  • 使用新的定價模式。如需所有 API 的定價資訊,請參閱 Places SDK for iOS (新版) 定價

  • 必須遮蓋欄位。您必須指定要在回應中傳回的欄位。沒有預設的傳回欄位清單。如果省略這份清單,方法會傳回錯誤。

  • 如要提出要求,請呼叫新的 GMSPlacesClient fetchPlaceWithRequest: 方法。

  • 傳遞至要求:

  • 回應會包含包含地點詳細資料的 GMSPlace 執行個體。GMSPlace 執行個體 types 屬性的值現在由表 A表 B 定義。

  • 回應 GMSPlace 執行個體包含 GMSPlaceReview 類型的新 reviews 屬性。當應用程式顯示從 GMSPlace 例項取得的資訊 (例如相片和評論) 時,應用程式也必須顯示所需的作者資訊。

    詳情請參閱歸因相關說明文件。

  • 回應 GMSPlace 執行個體包含下列成員函式:

    • isOpen 會計算地點在指定時間是否營業。

    • isOpenAtDate 會計算地點在指定日期是否營業。

    只有在啟用 Places SDK for iOS 時,才能使用這些函式。啟用 Places SDK for iOS (新版) 後無法使用。詳情請參閱「選擇 SDK 版本」一文。

要求範例

使用 Place Details (新版) 時,您可以提出要求,並傳遞 GMSFetchPlaceRequest 執行個體中的所有參數。這個範例也使用了欄位遮罩,因此回應只包含地點的顯示名稱和網站網址:

Swift

// A hotel in Saigon with an attribution.
let placeID = "ChIJV4k8_9UodTERU5KXbkYpSYs"

// Specify the place data types to return.
let fields = [GMSPlaceProperty.name, GMSPlaceProperty.website].map {$0.rawValue}

// Create the GMSFetchPlaceRequest instance.
let fetchPlaceRequest = GMSFetchPlaceRequest(placeID: placeID, placeProperties: fields, sessionToken: nil)

client.fetchPlaceWithRequest(fetchPlaceRequest: 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 *> *fields = @[GMSPlacePropertyName, GMSPlacePropertyWebsite];

// Create the GMSFetchPlaceRequest instance.
GMSFetchPlaceRequest *fetchPlaceRequest = [[GMSFetchPlaceRequest alloc] initWithPlaceID:placeID placeProperties: fields 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);
  }
}];