電話の現在地を取得し、座標をWebサーバーに送信してデータを処理し、結果をアプリに返します。
私が今直面している問題は、ビューが最初に読み込まれ、次にそれだけが座標を取得することです。
最初に座標を取得して、Webサーバーに送信し、データを処理して返送し、ビューに表示できるようにするにはどうすればよいですか?
ありがとう!
電話の現在地を取得し、座標をWebサーバーに送信してデータを処理し、結果をアプリに返します。
私が今直面している問題は、ビューが最初に読み込まれ、次にそれだけが座標を取得することです。
最初に座標を取得して、Webサーバーに送信し、データを処理して返送し、ビューに表示できるようにするにはどうすればよいですか?
ありがとう!
ビューコントローラが提示される前に位置情報を本当に必要とする場合は、遷移の前に提示するビューコントローラに位置情報サービスを実行させることができます。現在のViewControllerがない場合(つまり、ロケーションを必要とするView Controllerが現在ルートViewControllerである場合)、メインViewControllerに移行する前にロケーションサービスを実行する新しいルートViewControllerを導入できます。
この提示するViewControllerは、(Location Awarenessプログラミングガイドに従って)ロケーションサービスを作成し、開始する必要があります。適切なをCLLocationManager
受信すると、ロケーションサービスを停止し、メインのViewControllerに移行できます。おそらく、この中間ビューコントローラは、位置情報サービスが実行されている間、いくつかの素敵な「お待ちください」画面または画像のコピーも表示する必要があります。didUpdateLocations
CLLocationManagerDelegate
default.png
UIActivityIndicatorView
ただし、実際には、必ずしもこの中間ビューコントローラを導入する必要はありません。プライマリビューコントローラですべてを行うことができます。非同期のイベント駆動型コーディングパターンを採用できます。したがって、ビューが表示される前に位置情報を要求するのではなく、位置情報サービスが満たされるまでWebサービスのパフォーマンスを延期することができます。たとえば、この単純なテストプロジェクトは、位置情報サービスを呼び出し、完了時にWebリクエストを天気予報サービスに送信し、JSON応答を解析します。中間ビューコントローラは必要ありませんでした。
ただし、Appleは、位置情報サービスが成功した場合にのみ機能するアプリに眉をひそめる(つまり、拒否する可能性が高い)ため、位置情報サービスを使用できない場合にアプリが何をするかを考えてみてください。そのシナリオを適切に処理する必要があります。おそらく、最後の既知の場所を使用します。
次に、表示前に現在の場所を見つけられないのはなぜですか。そのマップの場所にプッシュしている間、これらの座標を渡してWebサービスを呼び出し、データを表示できるようにします。そうすれば、必要なものが得られると思います。