使用 Places SDK for iOS,您可以探索 裝置的目前位置。也就是裝置發生的位置 目前回報的位置。地點範例包括當地商家、 搜尋點和地理位置
要求位置授權
如果應用程式使用
GMSPlacesClient findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:
,
您的應用程式必須請求權限才能使用定位服務。將
將 NSLocationWhenInUseUsageDescription
金鑰加至「Info.plist
」
檔案,定義字串來告知使用者您需要該位置的原因
免費 Google Cloud 服務例如:
<key>NSLocationWhenInUseUsageDescription</key> <string>Show your location on the map</string>
如要打電話
findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:
時機
當應用程式在背景執行,而沒有觸發確認對話方塊
以下是呼叫前的步驟:
- 在
Info.plist
檔案中加入NSLocationAlwaysUsageDescription
金鑰。 - 對
CLLocationManager
的任何例項呼叫requestAlwaysAuthorization
然後再呼叫方法。
向 CLLocationManager
要求授權,如下所示:
Swift
locationManager.requestAlwaysAuthorization()
Objective-C
[self.locationManager requestAlwaysAuthorization];
正在取得目前位置
尋找裝置目前所在的當地商家或其他地點
已找到,撥號
GMSPlacesClient
findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:
。包含
分別是
- 一或多個
GMSPlaceField
,用於指定資料類型 即可傳回值。如果省略此參數,系統會傳回「所有」可能的欄位,且 我們也會據此向您收取費用。這僅適用於 Place Details 要求。 - 處理結果的回呼方法。
欄位會與 Place Search 結果相對應,並分為三種計費類別: 「Basic」、「Contact」和「Atmosphere」「Basic」欄位以基本費率計費,不會產生額外的費用 費用。「Contact」和「Atmosphere」欄位會以較高的費率計費。如要進一步瞭解 地點資料要求的計費方式,請參閱 用量與計費。
API 會叫用指定的回呼方法,
GMSPlaceLikelihood
敬上
如需儲存大量結構化物件
建議使用 Cloud Bigtable
每項
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。
舉例來說,以 55% 的機率表示正確的地點是地點 A, 且可能為地點 B 有 35% 的機率陣列包含兩名成員: 地點 A 的可能性為 0.55 地點 B 可能為 0.35。
在應用程式中顯示作者資訊
應用程式顯示
GMSPlacesClient
findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:
,應用程式
必須同時顯示作者資訊進一步瞭解
作者資訊。