SQLite DB の lat、lng を使用して地図をプロットしようとしましたが、地図が描画される前に自分の位置を取得できません。うぐっ!

StackOverflow https://stackoverflow.com/questions/1621266

  •  06-07-2019
  •  | 
  •  

質問

私は何ができますか: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 の本質的に非同期な性質に対抗しようとするのではなく、ユーザーに注目すべきものを提供することです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top