使用 Places SDK for iOS,您可以发现 当前已定位的设备。也就是设备所在地点 当前报告的位置。例如,本地商家、 地图注点和地理位置。
正在请求营业地点授权
如果您的应用使用
GMSPlacesClient findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:
,
您的应用必须请求使用定位服务的权限。将
“NSLocationWhenInUseUsageDescription
”的Info.plist
钥匙
文件,以定义字符串,告诉用户您需要该位置的原因
服务。例如:
<key>NSLocationWhenInUseUsageDescription</key> <string>Show your location on the map</string>
如果您想调用
findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:
应用在后台运行时,如果不触发确认对话框,
在进行调用之前执行以下步骤:
- 将
NSLocationAlwaysUsageDescription
键添加到Info.plist
文件中。 - 对
CLLocationManager
的任何实例调用requestAlwaysAuthorization
然后再调用该方法。
按如下方式请求 CLLocationManager
授权:
Swift
locationManager.requestAlwaysAuthorization()
Objective-C
[self.locationManager requestAlwaysAuthorization];
正在获取当前位置
查找设备目前所在的本地商家或其他地点
定位, 呼叫
GMSPlacesClient
findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:
。包含
以下参数:
- 一个或多个
GMSPlaceField
,用于指定哪些数据类型 返回。如果省略此参数,则返回所有可能的字段,并且 您将需要支付相应的费用。这仅适用于“地点详情”请求。 - 用于处理结果的回调方法。
这些字段与“地点搜索结果”结果相对应,而且分为三个结算类别: 基本、联系人和氛围。“基本”字段按基本费率结算,且不会产生额外费用 费用。“联系人”和“氛围”字段按更高的费率结算。更多信息 有关地点数据请求的结算方式,请参见 使用量和结算。
API 调用指定的回调方法,
GMSPlaceLikelihood
对象的操作。
每个
GMSPlaceLikelihood
对象代表一个地方。对于每个地点,结果都包含一个
指示相应地点是正确地点的可能性。较高的值
表示该地点是最佳匹配项的可能性。缓冲区可能会
为空(如果没有与设备位置对应的已知地点)。
以下代码示例会检索设备所在位置的列表 并记录每个地点的名称和可能性。
Swift
// Specify the place data types to return. let fields: GMSPlaceField = GMSPlaceField(rawValue: UInt(GMSPlaceField.name.rawValue) | UInt(GMSPlaceField.placeID.rawValue))! placesClient?.findPlaceLikelihoodsFromCurrentLocation(withPlaceFields: fields, callback: { (placeLikelihoodList: Array<GMSPlaceLikelihood>?, error: Error?) in if let error = error { print("An error occurred: \(error.localizedDescription)") return } if let placeLikelihoodList = placeLikelihoodList { for likelihood in placeLikelihoodList { let place = likelihood.place print("Current Place name \(String(describing: place.name)) at likelihood \(likelihood.likelihood)") print("Current PlaceID \(String(describing: place.placeID))") } } })
Objective-C
// Specify the place data types to return. GMSPlaceField fields = (GMSPlaceFieldName | GMSPlaceFieldPlaceID); [_placesClient findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:fields callback:^(NSArray<GMSPlaceLikelihood *> * _Nullable likelihoods, NSError * _Nullable error) { if (error != nil) { NSLog(@"An error occurred %@", [error localizedDescription]); return; } if (likelihoods != nil) { for (GMSPlaceLikelihood *likelihood in likelihoods) { GMSPlace *place = likelihood.place; NSLog(@"Current place name: %@", place.name); NSLog(@"Place ID: %@", place.placeID); } } }];
关于可能性值的说明:
- 可能性提供了相对概率, 返回的地点列表中最符合某个条件的地点 单一请求。您无法比较不同请求的可能性。
- 可能性的值将在 0 和 1.0 之间。
- 所返回数组中可能性的总和,
GMSPlaceLikelihood
对象始终小于或等于 1.0。请注意,总和不是 一定是 1.0
例如,要表示地点 A 是正确地点的概率有 55%, 且是地点 B 的可能性为 35%,可能性数组包含两个成员: 地点 A 的可能性为 0.55, 地点 B 的可能性为 0.35。
在应用中显示提供方说明
当应用显示从
GMSPlacesClient
findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:
,应用
还必须显示提供方说明。详细了解
归因。