SQLite DB の lat、lng を使用して地図をプロットしようとしましたが、地図が描画される前に自分の位置を取得できません。うぐっ!
質問
私は何ができますか:100 個の緯度と経度のポイントの sqlite DB を取得し、それらのピンを地図上にドロップします。素晴らしく見える!
私がやりたいのは、地図を描く前に自分の位置を取得することです。しかし、次のようです。
- (void)locationManager:(CLLocationManager *)manager DidUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
常に (void)viewDidLoad の実行後に起動されます。どこに挿入しても問題ありません。
私がする必要があるのは、スプラッシュ画面を表示し、場所を取得するまでそこで停止し、その緯度と経度を使用して、自分から何マイルも離れていない場所の SQLite DB を検索することです。
ここに私の痕跡があります:
-[RootViewController initWithTabBar]と入力します
-[RootViewController viewDidLoad]と入力します
-[RootViewController locationManager:didUpdateToLocation:fromLocation:] と入力します
そして、私が本当に欲しいものは次のとおりです。
-[RootViewController initWithTabBar]と入力します
-[RootViewController locationManager:didUpdateToLocation:fromLocation:] と入力します
-[RootViewController viewDidLoad]と入力します
今私は考えています(タブバーコントローラーを使用して作業しています)、何らかの方法でこれをアプリのデリゲートにずっとプッシュしなければならないでしょうか?位置情報を取得するまでアプリ全体をフリーズしますか?それが私の最近の考えです。
ヒント、リード、スニペットをありがとう...!!!何日も探しましたが、まったく見つかりませんでした。
ありがとう!!!!
解決
アプリを「フリーズ」することは絶対に望ましくなく、アプリのデリゲートで行う作業は最小限に抑えたいと考えています。 applicationDidFinishLaunching:
可能な限りの方法で。私がお勧めできること:
- 2 つのビューがあります。1 つはマップを含む「実際の」ビューで、(おそらく) 何らかのビュー コントローラーによって制御されます。もう 1 つは、ユーザーへのメッセージと
UIActivityIndicatorView
, 、またはそのようなもの。 - アプリが起動したら、アプリのウィンドウに待機中のビューをロードして表示し、位置マネージャーを起動してユーザーの現在位置を見つけます。
- 十分な位置情報が得られたら、実際のビューをロードしてウィンドウに追加し、待機中のビューを削除します。(おそらく素晴らしいクロスフェード アニメーションか何かが含まれます。)
両方のビューを追加し、単に反転することもできます。 hidden
適切なタイミングでプロパティを表示します。しかし、重要なのは、Core Location の本質的に非同期な性質に対抗しようとするのではなく、ユーザーに注目すべきものを提供することです。