Places SDK for iOS 支持现有的地点详情。如果您熟悉现有的 Places SDK for iOS,新版地点详情会进行以下更改:
采用了新的定价模式。如需了解所有 API 的价格信息,请参阅 Places SDK for iOS(新版)的价格。
必须进行字段遮盖。您必须指定要在响应中返回哪些字段。没有返回字段的默认列表。如果您省略此列表,这些方法会返回错误。
如需发出请求,请调用新的
GMSPlacesClient fetchPlaceWithRequest:
方法。传递给请求:
新的
GMSFetchPlaceRequest
类的实例,用于定义所有请求参数,例如地点 ID 和会话令牌。用于处理响应的
GMSPlaceResultCallback
类型的回调。
响应包含一个
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); } }];