🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

1706閲覧

viewDidLoadを呼び出したタイミングで、位置情報を取得、Annotationを立てたい

manato.tttt

総合スコア14

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2019/09/09 01:01

前提・実現したいこと

・前提
Map Kit Viewを使用して、位置情報を利用したアプリの作成を行なっております。
CLLocationManagerのdidUpdateLocationで位置情報が取得できることは分かりました。
アプリがForegroundになったタイミングでAnnotationを立てることはできております。

ちなみに位置情報はFirebase上に上げており、
Foregroundになった際のAnnotationの位置情報はFirebaseから取得したものを使用しています。
また、通信量を考慮して位置情報取得は、起動時とForegroundになったタイミングの2回に限定しようと考えております。

・実現したいこと
viewDidLoadを呼び出したタイミング(Map Kit Viewを利用しているViewControllerに遷移したタイミング)で位置情報の取得、Annotationを立てる

現状viewDidLoadを呼び出したタイミングでAnnotationを立てようとすると、didUpdateLocationが実行されていないため位置情報がnilになってしまいます。

上記のタイミングでAnnotationを立てることは可能なのでしょうか。

よろしくお願い申し上げます。

該当のソースコード

swift

1 var userLatitude: Double? 2 var userLongtitude: Double? 3 4func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { 5 guard let newLocation = locations.first else {return} 6 //print(uid) 7 userLatitude = newLocation.coordinate.latitude 8 userLongtitude = newLocation.coordinate.longitude 9 10 } 11

試したこと

検索いたしましたが、見つけ切れませんでした。

補足情報(FW/ツールのバージョンなど)

Swift:5.0.3

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

GPSで位置を特定するには電波状況などにより時間が掛かります。
viewDidLoad内では取れない事を前提にプログラムを組んでください。

投稿2019/09/09 01:35

編集2019/09/10 01:29
takabosoft

総合スコア8356

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

manato.tttt

2019/09/09 13:40

ご回答ありがとうございます。 やはり、そうなんですね。。。 他の取得方法を試してみます。 ありがとうございます。
manato.tttt

2019/09/09 14:39 編集

ひとまず、viewDidLoad内にTimerを設置してAnnotationの設置を行いました。
hameji

2019/09/09 16:59

取得まではHUDを表示し、取得後に表示するなどはどうですか???
manato.tttt

2019/09/11 00:49

ありがとうございます。 HUDはUserLocation(青色のやつ)ですかね? いいですね!そうしたいと思います。
takabosoft

2019/09/11 01:35

HUDはPKHUDだとかSVProgressHUDのようなグルグル回っていてローディング中を示しているやつです。 また、タイマーで回さなくてもdidUpdateLocationsで値が取れた初回などにAnnotationを建てるような感じでも良いとは思います(別にタイマーでもいいですが)
manato.tttt

2019/09/11 15:28

HUDはそういうことだったんですね なるほど!ありがとうございます! そういうやり方もあるんですね!参考にさせてください!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問