在我的主要CollectionView
(應用程序主頁)上,我想根據距離用戶最近的位置更新位置(即單元格本身)。我將我的位置存儲在Firebase
中,並將使用GeoFire
和核心位置,以便按距離順序正確列出距離用戶的位置。在viewVillAppear中加載GeoFire查詢的用戶位置數據
其他職位都表示,觀察員的最佳做法涉及將其加載到viewWillAppear;
但是,在運行之前,我無法獲取用戶的位置,並且沒有我的GeoFire
查詢的中心點。與CoreLocation
相關的大多數示例都涉及地圖或預選座標,但我並未打算在此控制器內使用地圖,並且希望根據用戶位置動態加載。
我已經研究了加載didUpdateLocations
在AppDelegate
之內,但是還沒有能夠在那裏調用那個方法。在加載viewWillAppear
中返回的數據時運行GeoFire
查詢之前獲取用戶位置座標的最佳方法是什麼?或者您是否需要設置區域並檢查用戶是否在該區域內輸入?
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之前,我還檢查了我的位置是否有效。 –
你會如何從viewpoint的核心位置獲取位置?我需要使用.requestLocation的位置管理器方法嗎?你能告訴我你如何克服這個問題的基本代碼嗎? – Josh