Получить текущее местоположение пользователя Google API не работает
Привет, я использую Google автозаполнение мест в моем приложении IOS. Но проблема в том, что он не работает. и я не могу получить текущее местоположение пользователя.
Функция поиска успешно показывает места в окне автозаполнения, но единственная проблема, с которой я сталкиваюсь, не в состоянии определить текущее местоположение пользователя. Это код для получения текущего местоположения пользователя, которое я использую.
class ViewController: UIViewController,CLLocationManagerDelegate {
var locationManager = CLLocationManager()
var placesClient : GMSPlacesClient?
override func viewDidLoad() {
super.viewDidLoad()
locationManager.requestAlwaysAuthorization()
run()
}
func run(){
self.placesClient?.currentPlaceWithCallback({ (list: GMSPlaceLikelihoodList?, error: NSError?) -> Void in
if let error = error {
print("error: \(error.description)")
return
}
for likelihood in list!.likelihoods {
if let likelihood = likelihood as? GMSPlaceLikelihood {
let place = likelihood.place
print("Current Place name \(place.name) at likelihood \(likelihood.likelihood)")
print("Current Place address \(place.formattedAddress)")
print("Current Place attributions \(place.attributions)")
print("Current PlaceID \(place.placeID)")
}
}
})
}
Я также добавил ключи в info.plist и собираю приложение на своем телефоне.
2 ответа
Добавьте следующее в viewDidLoad()
placesClient = GMSPlacesClient.shared()
И вы положили run()
сразу после авторизации запроса API может не работать с первого раза, когда вы запускаете приложение, так как оно асинхронно, и API будет отвечать с ошибкой, потому что авторизация не была получена в то время.
В следующем примере кода извлекается список мест, где устройство, скорее всего, будет найдено, и записывается имя, вероятность и другие сведения для каждого места.
placesClient.currentPlaceWithCallback({ (placeLikelihoods, error) -> Void in
guard error == nil else {
print("Current Place error: \(error!.localizedDescription)")
return
}
if let placeLikelihoods = placeLikelihoods {
for likelihood in placeLikelihoods.likelihoods {
let place = likelihood.place
print("Current Place name \(place.name) at likelihood \(likelihood.likelihood)")
print("Current Place address \(place.formattedAddress)")
print("Current Place attributions \(place.attributions)")
print("Current PlaceID \(place.placeID)")
}
}
})