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

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

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

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

Q&A

解決済

1回答

1040閲覧

swift labelに取得した位置情報を定数として宣言したい

globalplus

総合スコア119

Swift

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

0グッド

0クリップ

投稿2019/10/31 05:49

編集2019/10/31 06:19

labelに取得した現在地の緯度経度を定数(user)として宣言したいのですが、ユーザーによって緯度経度は違うのでどう宣言したら良いかわかりません。

swift

1import UIKit 2import MapKit 3import CoreLocation 4import Firebase 5 6class ViewController: UIViewController { 7 8 @IBOutlet weak var mapView: MKMapView! 9 let locationManager = CLLocationManager() 10 @IBOutlet weak var longitude: UILabel! 11 @IBOutlet weak var latitude: UILabel! 12 let user = [longitude.text, latitude.text] 13 //上記の一文は自分で書きました。書き方がわからないのでグチャグチャですすみません 14 15 override func viewDidLoad() { 16 super.viewDidLoad() 17 18 locationManager.delegate = self 19 20 } 21} 22extension ViewController: CLLocationManagerDelegate { 23func locationManager(_ manager: CLLocationManager, didChangeAuthorization status: CLAuthorizationStatus) { 24 switch status { 25 case .notDetermined: 26 locationManager.requestWhenInUseAuthorization() 27 case .authorizedWhenInUse: 28 locationManager.startUpdatingLocation() 29 default: 30 break 31 } 32 } 33 func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { 34 if let coordinate = locations.last?.coordinate { 35 // 現在地を拡大して表示する 36 let span = MKCoordinateSpan(latitudeDelta: 0.01, longitudeDelta: 0.01) 37 let region = MKCoordinateRegion(center: coordinate, span: span) 38 mapView.region = region 39 40 } 41 guard let newLocation = locations.last else { 42 return 43 } 44 self.latitude.text = "".appendingFormat("%.4f", newLocation.coordinate.latitude) 45 self.longitude.text = "".appendingFormat("%.4f", newLocation.coordinate.longitude) 46 } 47}

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

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

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

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

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

MasatoUchida

2019/10/31 07:30

optionalとdidSetを使えば1回のみ初期化する疑似的なletは作れるんですがいかがでしょうか。
guest

回答1

0

ベストアンサー

何をしたいのでしょうか?

過去の質問から推測するに

たくさんのユーザーの位置情報を取得して、
Mapにそれを表示したいなら、
structでユーザーを定義するのがいいと思います。

Swift

1struct Player { 2 let userId: String 3 let userName: String 4 let userLongitude: Double 5 let userLatitude: Double 6}

として、DLした情報をここの型に流し込み、
配列で保持(let players:[Player] = [])して、
各所で利用(annotationのデータにする等)するといいと思います。

投稿2019/11/03 15:23

hameji

総合スコア1380

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

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

globalplus

2019/11/03 21:12

推測していただきありがとうございます助かります。 そうです、たくさんの位置情報を取得して表示させたいです。 structを使った事がないのでちょっと調べてみます。 ps.structだけでfirebaseを使わずに実装できるのでしょうか?回答下さったのを見るとstructだけでの実装と理解してるんですがあってますか?
hameji

2019/11/04 03:59

いや、どこかのデータベース(firestoreなど)からダウンロードをして、 そのデータをsturctで作ったplayerなどに保存する必要があります。 そして、それを利用してpinなどを立てるです。
globalplus

2019/11/04 04:05 編集

わかりました。ありがとうございます。ちょっとやってみます。 とりあえず方法はわかったのでベストアンサーにさせていただきます。 わからなかったら質問自体を変えてまた質問させていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問