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

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

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

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

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

Swift

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

Q&A

解決済

1回答

2246閲覧

緯度・経度をラベルに反映させたい/Firebaseに逆ジオコーディングを送りたい

alan-d-haller

総合スコア18

Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

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

Swift

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

0グッド

0クリップ

投稿2017/09/23 03:13

###前提・実現したいこと

お世話になります。
iOSアプリ開発を始めて1ヶ月半の初心者です。

現在位置情報を利用するアプリの開発を行っているのですが、
取得した緯度と経度の座標値をラベルに反映できず困っております。

また、Firebaseにデータを送る際に、
逆ジオコーディングのコードの箇所でエラーが生じてしまいます。

これはどのように解決すればよろしいのでしょうか?

ご存知の方がいらっしゃいましたら、
ご助力いただけると幸いです。

よろしくお願い致します。

###該当のソースコード

①緯度・軽度ラベルが更新されない

swift

1override func viewWillAppear(_ animated: Bool) { 2 super.viewWillAppear(animated) 3 4 catchLocationData() 5 6 } 7 8 9//現在地を取得 10func catchLocationData(){ 11 12 if CLLocationManager.locationServicesEnabled() { 13 14 locationManager = CLLocationManager() 15 locationManager.delegate = self 16 locationManager.startUpdatingLocation() 17 18 } 19 } 20 21//位置情報取得に関するアラート 22func locationManager(_ manager: CLLocationManager, didChangeAuthorization status: CLAuthorizationStatus) { 23 switch status { 24 case .notDetermined: 25 locationManager.requestWhenInUseAuthorization() 26 case .restricted, .denied: 27 break 28 case .authorizedAlways, .authorizedWhenInUse: 29 break 30 } 31 } 32 33//位置情報が更新されるたびに呼ばれる 34func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { 35 guard let newLocation = locations.last else { 36 return 37 } 38 39 self.latitudeLabel.text = "".appendingFormat("%.4f", newLocation.coordinate.latitude) 40 self.longitudeLabel.text = "".appendingFormat("%.4f", newLocation.coordinate.longitude) 41 nowLatitude = newLocation.coordinate.latitude 42 nowLongitude = newLocation.coordinate.latitude 43 44 //↓緯度・軽度ラベルが更新されない↓// 45 self.reverseGeocode(latitude: Double(latitudeLabel.text!)!, longitude: Double(longitudeLabel.text!)!) 46 47 } 48 49// 逆ジオコーディング処理(緯度・経度を住所に変換) 50func reverseGeocode(latitude:CLLocationDegrees, longitude:CLLocationDegrees) { 51 let location = CLLocation(latitude: latitude, longitude: longitude) 52 let geocoder = CLGeocoder() 53 54 geocoder.reverseGeocodeLocation(location, completionHandler: { (placemark, error) -> Void in 55 let placeMark = placemark?.first 56 if let country = placeMark?.country { 57 58 59 print("(country)") 60 61 self.country = country 62 } 63 if let administrativeArea = placeMark?.administrativeArea { 64 print("(administrativeArea)") 65 66 self.administrativeArea = administrativeArea 67 } 68 //以下省略//

②Firebaseに逆ジオコーディングを送る際にエラーが出る

swift

1//Firebaseのストレージへデータを送る 2 func postRoom(){ 3 4 AppDelegate.instance().showIndicator() 5 uid = (Auth.auth().currentUser?.uid)! 6 7 //↓ここでエラーが起こる↓// 8 reverseGeocode(latitude: Double(latitudeLabel.text!)!, longitude: Double(longitudeLabel.text!)!) 9 10 let ref = Database.database().reference() 11 12 //以下省略//

###発生している問題・エラーメッセージ
②のエラー箇所に以下のようなメッセージが表示される。

swift

1Thread 1: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)

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

開発環境は以下の通りです。
macOS Sierra(10.12.6)
iOS 11.0
Xcode 9.0
Swift 4.0

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

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

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

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

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

guest

回答1

0

自己解決

iOS11からの仕様変更により、位置情報の権限設定でNSLocationWhenInUseUsageDescription(使用中のみ許可)を設けることが必須となったとのこと。
なので、Info.plistPrivacy - Location When In Use Usage Descriptionの設定を加えたところ、解決しました。

投稿2017/10/02 01:09

alan-d-haller

総合スコア18

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問