迁移到地点详情(新)

Places SDK for iOS 支持现有的地点详情。如果您熟悉现有的 Places SDK for iOS,新版地点详情会进行以下更改:

  • 采用了新的定价模式。如需了解所有 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 版本

示例请求

使用“地点详情(新)”时,您可以发出请求并在 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);
  }
}];