質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.50%
GPS

GPSは、Global Positioning Systemの略です。衛星信号を使用して受信機の地上又は空中内の居場所を特定するナビゲーションシステムです。"GPS"は受信機のことも指します。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

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

Q&A

解決済

2回答

292閲覧

Swift4.0 Xcode func内外での値の引き渡し

oyshwk46

総合スコア15

GPS

GPSは、Global Positioning Systemの略です。衛星信号を使用して受信機の地上又は空中内の居場所を特定するナビゲーションシステムです。"GPS"は受信機のことも指します。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

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

1グッド

0クリップ

投稿2019/02/13 10:24

編集2019/02/13 11:29

前提・実現したいこと

取得した現在地の値を用いて、計算を行う機能を実装したいです。

発生している問題・エラーメッセージ

現在位置の取得は出来ましたが、他のfuncに緯度・経度を引き渡すことができません。

該当のソースコード

以下は現在位置を取得するコードです。

Swift

1import UIKit 2import CoreLocation 3 4class ViewController: UIViewController, CLLocationManagerDelegate { 5 6 var locationManager: CLLocationManager! 7 8 func setupLocationManager() { 9 locationManager = CLLocationManager() 10 guard let locationManager = locationManager else { return } 11 locationManager.requestWhenInUseAuthorization() 12 13 let status = CLLocationManager.authorizationStatus() 14 if status == .authorizedWhenInUse { 15 locationManager.delegate = self 16 locationManager.distanceFilter = 10 17 locationManager.startUpdatingLocation() 18 } 19 } 20 21 func locationManager(_ manager: CLLocationManager, didUpdateLocations location: [CLLocation]) { 22 let location = location.first 23 let latitude = location?.coordinate.latitude 24 let longitude = location?.coordinate.longitude 25 } 26} 27 28override func viewDidLoad() { 29 super.viewDidLoad() 30 // Do any additional setup after loading the view, typically from a nib. 31 setupLocationManager() 32ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー 33    34この中でlatitudeとlongitudeの値を使用して計算をしたいです。 35   例)let λ:Double = latitude 36 let θ:Double = longitude 37 38 let F:Double = λ +θ 39 40ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー 41 }

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

Swift4.0

tetsuyahachisu👍を押しています

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

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

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

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

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

guest

回答2

0

ベストアンサー

GPSの仕組み上、位置情報の特定には時間が掛るため、アプリ起動時にすぐに座標が取れるわけではありません。
そのため、iOSでは「位置情報が取れたらデリゲートを通じてお知らせします。」という非同期的な仕組みになっています。
(電波の悪い所にいるといつまで経っても位置が取れない事もあります)

したがって、viewDidLoadのタイミングで何か処理をしようというのは無理があります。

つまり、
func locationManager(_ manager: CLLocationManager, didUpdateLocations location: [CLLocation]) {が呼ばれたタイミングでは、その時の位置情報が取れるわけですから、
その中で緯度経度を使った処理をすればよいです。

投稿2019/02/14 00:29

takabosoft

総合スコア8356

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

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

0

インスタンス変数にでも保存して下さい。

投稿2019/02/14 00:22

fuzzball

総合スコア16731

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問