私のメインCollectionView
(アプリケーションのホームページ)に、ユーザーに最も近い場所に基づいて場所(つまりセル自体)を更新したいと考えています。私は自分の場所をFirebase
に保存しており、ユーザーからの距離順に位置を正しく一覧表示するためにGeoFire
とコアの場所を使用しています。GeoFireクエリのユーザー位置データをviewWillAppearに読み込む
他の投稿は、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を照会する前に自分の場所が有効かどうかを確認しました。 –
viewWillAppear自体のコア位置からどのように位置を取得しますか? .requestLocationのロケーションマネージャメソッドを使用する必要がありますか?あなたはその問題をどのように克服したかの基本的なコードを私に見せてくれますか? – Josh