Places SDK for iOS(新)可为您的应用提供丰富的信息 包括地点的名称和地址、地理位置 以纬度/经度坐标形式指定的位置、地点类型(例如 例如夜总会、宠物店、博物馆)等等。要访问 那么您可以使用地点 ID, 用于标识地点。
获取地点详情
通过
GMSPlace
类包含有关特定地点的信息,其中包括
地点数据字段(新)。获取
GMSPlace
对象(通过调用
GMSPlacesClient
fetchPlaceWithRequest:
,
传递一个 GMSFetchPlaceRequest
对象和一个
类型的回调方法
GMSPlaceResultCallback
。
GMSFetchPlaceRequest
对象会指定:
- (必填)地点 ID,即 Google 商家信息中地点的唯一标识符 并在 Google 地图上显示。
- (必需)
GMSPlace
对象中要返回的字段列表,也称为 字段掩码,由GMSPlaceProperty
。 您未在字段列表中指定至少一个字段,或者省略了 字段列表,则该调用会返回错误。 - (可选)用来设置响应格式的地区代码。
- (可选)用于结束“自动补全(新)”会话的会话令牌。
发出“地点详情”请求
此示例通过传递以下参数按 ID 获取地点:
ChIJV4k8_9UodTERU5KXbkYpSYs
的地点 ID。- 指定返回地点名称和网站网址的字段列表。
GMSPlaceResultCallback
来处理结果。
API 调用指定的回调方法,传入
GMSPlace
对象。如果未找到地点,则地点对象为零值。
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 }
“地点详情”响应
地点详情会返回
包含地点详情的 GMSPlace
对象。只有字段列表中指定的字段会填充到 GMSPlace
对象中。
以及数据字段中的 GMSPlace
对象,
响应包含以下成员函数:
- <ph type="x-smartling-placeholder"></ph>
isOpen
用于计算地点在给定时间是否营业。 isOpenAtDate
计算地点在给定日期是否营业。
必需参数
使用 GMSFetchPlaceRequest
对象指定所需的参数。
地点 ID
Places SDK for iOS 中使用的地点 ID 是 标识符与 Places API、Places SDK for Android 中使用的标识符相同 和其他 Google API。每个地点 ID 只能指代一个地点,但单个地点可以有多个地点 多个地点 ID。
在某些情况下,可能会导致地点获得新的地点 ID。 例如,如果商家搬到新位置,会获取新的地点 ID。
通过指定地点 ID 请求地点时,您可以确信 您一定会在响应中收到相同的地点(如果该地点仍然 存在)。但请注意,响应可能包含 与您的要求中的代码不同。
字段列表
请求地点详情时,必须指定
在该地点的 GMSPlace
对象中返回,作为字段掩码。定义字段掩码
从
GMSPlaceProperty
添加到 GMSFetchPlaceRequest
对象中。
字段遮盖是一种很好的设计做法,可确保您不会请求不必要的数据,
有助于避免不必要的处理时间和结算费用。
指定以下一个或多个字段:
以下字段会触发地点详情(仅 ID)SKU:
GMSPlacePropertyPlaceID
、GMSPlacePropertyName
、GMSPlacePropertyPhotos
以下字段会触发地点详情(仅限位置)SKU:
GMSPlacePropertyAddressComponents
,GMSPlacePropertyFormattedAddress
,GMSPlacePropertyCoordinate
,GMSPlacePropertyPlusCode
,GMSPlacePropertyTypes
,GMSPlacePropertyViewport
以下字段会触发地点详情(基本)SKU:
GMSPlacePropertyBusinessStatus
,GMSPlacePropertyIconBackgroundColor
,GMSPlacePropertyIconImageURL
,GMSPlacePropertyUTCOffsetMinutes
,GMSPlacePropertyWheelchairAccessibleEntrance
以下字段会触发地点详情(高级)SKU:
GMSPlacePropertyCurrentOpeningHours
,GMSPlacePropertySecondaryOpeningHours
,GMSPlacePropertyPhoneNumber
,GMSPlacePropertyPriceLevel
,GMSPlacePropertyRating
,GMSPlacePropertyOpeningHours
,GMSPlacePropertyUserRatingsTotal
,GMSPlacePropertyWebsite
以下字段会触发地点详情(首选)SKU:
GMSPlacePropertyCurbsidePickup
,GMSPlacePropertyDelivery
,GMSPlacePropertyDineIn
,GMSPlacePropertyEditorialSummary
,GMSPlacePropertyReservable
,GMSPlacePropertyReviews
,GMSPlacePropertyServesBeer
,GMSPlacePropertyServesBreakfast
,GMSPlacePropertyServesBrunch
,GMSPlacePropertyServesDinner
,GMSPlacePropertyServesLunch
,GMSPlacePropertyServesVegetarianFood
,GMSPlacePropertyServesWine
,GMSPlacePropertyTakeout
以下示例将两个列表
字段值
用于指定请求返回的 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
用于设置响应格式的地区代码,指定为 <ph type="x-smartling-placeholder"></ph> 两个字符的 CLDR 代码值。此参数也可能具有偏差效应 。没有默认值。
如果响应中地址字段的国家/地区名称与 区号,则地址中省略了国家/地区代码。
大多数 CLDR 代码与 ISO 3166-1 代码相同, 但有一些值得注意的例外情况。例如,英国的 ccTLD 为 "uk"(.co.uk),而其 ISO 3166-1 代码为“gb”(从技术层面来讲, “大不列颠及北爱尔兰联合王国”)。 根据适用法律,该参数可能会影响结果。
sessionToken
会话令牌是用户生成的字符串,用于跟踪自动补全情况 (新)调用作为“会话”。自动补全(新)会使用会话令牌 将用户自动补全搜索的查询和地点选择阶段分组到一个单独的会话中 用于结算目的会话令牌会传递到地点详情(新) 跟随“自动补全(新)”调用的调用。如需了解详情,请参阅 会话令牌。
在应用中显示提供方说明
当应用显示从
GMSPlacesClient
、
如照片和评价,则应用还必须显示必要的提供方说明。
例如,GMSPlacesClient
对象的 reviews
属性
包含一个数组,该数组最多包含五个
GMSPlaceReview
对象的操作。每个 GMSPlaceReview
对象都可以包含提供方说明和作者提供方说明。
如果您要在应用中显示评价,则还必须显示出处或作者
归因。
有关详情,请参阅 归因。