ユーザーアカウントとメインマップビューのために私のアプリケーション内でFirebaseとGoogleマップを使用しています。私のアプリでは、ユーザーの場所から開始し、マップを移動できるようにしたいが、いくつかの問題がある。Googleマップユーザーの場所から開始
経由でユーザーが認証されると。 Firebase、私はそれはユーザーの場所を取得しようとしているが、私はアプリケーションのために有効に位置情報サービスを持っている場合でも、通常
nil
を返します。これは私のコードです:if let mylocation = mapView.myLocation { print("User's location: \(mylocation)") } else { print("User's location is unknown") }
これは私の
viewDidLoad
の機能です。私はInfo.plistファイル内の場所とプライバシーに関する声明を使用する許可を求めるコードを持っています。マップが読み込まれてユーザーの場所が見つかった場合は、その場所をユーザーの場所に合わせて表示するようにします。しかし、それは時間内にユーザーの場所を取得することができないか、そうであるように見え、マップは他の場所で読み込まれ、ユーザーの場所に更新されません。
だからここに私の質問
は、マップをロードし、それはそれはアプリを使うの全体のためにそこに立ち往生されることなく、ユーザの位置に更新するようにするにはどのような方法はありますか?私が望むものの例は、基本的にはユーザーの場所から始まり、マップをユーザーの場所に一貫して更新しようとせずに地図とやり取りできるGoogleマップのクローンです。そうでない場合は、地図を読み込む前に場所が見つかるのを待つ方法がありますか?私はGCD(グランドセントラルディスパッチ)を使ってみましたが、うまくいきませんでした。私はそれが起こることができる多くの問題があるので、それは、地図を表示する前に、場所を読み込むのを待って、それは私の最高のオプションではないように感じる。これらのどちらもオプションでない場合、あなたは何をしますか?ありがとう!
私はアプリケーションを起動するときにその位置を必要とするだけで、それは何をガードステートメントに変更しますか?私は全く新しいものが必要ですか?また、私のdeinitで 'myLocationFound'オブザーバーを削除する必要がありますか? –
また、 'CLLocationManager'で位置を取得することもできます。最初の場所の更新を取得したら、マネージャを停止し、その 'CLLocation'オブジェクトを使用します。私の最初の提案を使用したい場合は、位置検出 'mapView.isMyLocationEnabled = false'を無効にすることができます –
私は依然としてユーザーの場所を表示します。以前のコメントでは、答えの最後の部分を参照していました。私はそれをどうやってやりますか?私は 'myLocationFound'のフラグを追加しましたが、ユーザーが移動するたびにマップカメラを更新しないようにする方法はわかりません。 –