На моей главной странице CollectionView
(домашняя страница приложения) я хотел бы обновить местоположения (то есть сами ячейки) на основе ближайшего местоположения к пользователю. Я сохраняю свои местоположения в Firebase
и будет использовать GeoFire
и местоположение ядра, чтобы правильно перечислять местоположения в дистанционном порядке от пользователя.Загрузка данных о местоположении пользователя для запроса GeoFire в viewWillAppear
Другие сообщения говорят о том, что наилучшая практика для наблюдателей включает в себя загрузку в viewWillAppear;
, однако я не смог получить местоположение пользователя до этого запуска и не имел центрированной точки для моего запроса GeoFire
. В большинстве примеров, связанных с CoreLocation
, используются карты или предварительно выбранные координаты, но я не планировал использовать карту внутри этого контроллера и хочу динамически загружать на основе местоположения пользователя.
Я исследовал загрузку didUpdateLocations
в пределах AppDelegate
, но так и не смог назвать этот метод. Каков наилучший способ получить координаты местоположения пользователя перед запуском запроса GeoFire
при загрузке возвращаемых данных в viewWillAppear
или вам нужно установить регион и проверить, введен ли пользователь в этот регион?
var locationDict = [CLLocation]() //using this variable to pass values outside the function to the query
override func viewWillAppear(animated: Bool) {
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.requestAlwaysAuthorization()
locationManager.startUpdatingLocation()
}
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
let recentLocation = locations[0]
locationDict.append(recentLocation)
}
func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) {
print(error.localizedDescription)
}
У меня была такая же проблема, решить ее, получив место в viewWillAppear и наблюдателя в viewDidAppear. Также я проверил, было ли мое местоположение действительным до запроса firebase. –
Как бы вы получили местоположение от Core Location в viewWillAppear? Должен ли я использовать метод диспетчера местоположений .requestLocation? не могли бы вы показать мне базовый код того, как вы преодолели эту проблему? – Josh