位置情報を取得を行おうとしていますが、経度緯度が表示されません。
参考ページはリンクこちらになります。
コードは以下の通りです。
html
1// 2// ViewController.swift 3// MyPointMap 4// 5// Created by 蓑星友浩 on 2020/06/21. 6// Copyright © 2020 Sennin. All rights reserved. 7// 8 9import UIKit 10import CoreLocation 11 12class LocationViewController: UIViewController{ 13 14 @IBOutlet weak var latitude: UILabel! 15 @IBOutlet weak var longitude: UILabel! 16 17 var locationManager : CLLocationManager! 18 19 //緯度 20 var latitudeNow: String = "" 21 //経度 22 var longitudeNow: String = "" 23 24 25 26 override func viewDidLoad() { 27 super.viewDidLoad() 28 29 // ロケーションマネージャのセットアップ 30 setupLocationManager() 31 } 32 33 @IBAction func getLocationInfo(_ sender: Any) { 34 35 let status = CLLocationManager.authorizationStatus() 36 if status == .denied { 37 showAlert() 38 }else if status == .authorizedWhenInUse{ 39 self.latitude.text = latitudeNow 40 self.longitude.text = longitudeNow 41 } 42 } 43 44 45 @IBAction func clearLabel(_ sender: Any) { 46 47 self.latitude.text = "デフォルト" 48 self.longitude.text = "デフォルト" 49 50 } 51 52 53 func setupLocationManager(){ 54 55 locationManager = CLLocationManager() 56 57 //位置情報取得ダイアログの表示 58 guard let locationManager = locationManager else { return } 59 locationManager.requestWhenInUseAuthorization() 60 61 //マネージャの設定 62 let status = CLLocationManager.authorizationStatus() 63 //ステータス毎の処理 64 if status == .authorizedWhenInUse { 65 locationManager.delegate = self 66 //位置情報を取得を開始 67 locationManager.startUpdatingLocation() 68 } 69 70 71 72 } 73 74 //extensionの意味がわからない 75 76 77 //アラートの表示 78 func showAlert(){ 79 80 let alerTitle = "位置情報取得が許可されていません" 81 let alerMessage = "設定アプリの「プライバシー>位置情報サービス」から変更してください" 82 let alert: UIAlertController = UIAlertController( 83 title: alerTitle, message: alerMessage, preferredStyle: UIAlertController.Style.alert 84 ) 85 //OKボタン 86 let defaultAction: UIAlertAction = UIAlertAction( 87 title: "OK", style: UIAlertAction.Style.default, handler: nil 88 ) 89 90 //UIAlertControllerにActionを追加 91 alert.addAction(defaultAction) 92 //Alertを表示 93 present(alert, animated: true, completion: nil) 94 95 } 96 97} 98extension LocationViewController: CLLocationManagerDelegate{ 99 100 func locationManager(_manager:CLLocationManager, didUpdataLocations locations: [CLLocation]){ 101 102 let location = locations.first 103 let latitude = location?.coordinate.latitude 104 let longitude = location?.coordinate.longitude 105 106 self.latitudeNow = String(latitude!) 107 self.longitudeNow = String(longitude!) 108 109 } 110 111} 112
状態①
位置情報取得許可ダイアログの表示はうまくいきます。
状態②
参考ページリンクのように
[緯度:デフォルト]
[経度:デフォルト]
は表示されますが、[位置情報を取得]ボタンを押すと、空欄になります。
状態③
クリアボタンを押すと、空欄の状態から
[デフォルト]
[デフォルト]
が表示されます。
状態②において位置情報が取得されるようにしたいです。
回答1件
あなたの回答
tips
プレビュー