前提・実現したいこと
【実現したいこと】
Swiftにて、下記のサイトに従ってマップアプリを作成しています。
【Swift5】 Mapkitまとめ - Quiita
アプリ起動時、現在地を取得して初期の標準位置に設定したいです。
【前提】
・画面いっぱいにMapViewを貼り付けています。
・MapkitとCoreLocationを使用しています。
・Info.plistに以下の項目を設定しています。
Privacy - Location Always Usage Description
Privacy - Location When In Use Usage Description
発生している問題・エラーメッセージ
現在地を正しく取得できていません。 printでmapView.userLocation.coordinateを出力してみると以下のとおりです。 CLLocationCoordinate2D(latitude: 0.0, longitude: 0.0)
該当のソースコード
Swift
1 2import UIKit 3import MapKit 4import CoreLocation 5 6class ViewController: UIViewController, CLLocationManagerDelegate { 7 8 @IBOutlet weak var mapView: MKMapView! 9 var locationManager: CLLocationManager! 10 11 override func viewDidLoad() { 12 super.viewDidLoad() 13 14 // ロケーションマネージャーのセットアップ 15 locationManager = CLLocationManager() // ロケーションマネージャのインスタンス 16 locationManager.delegate = self // デリゲートを指定 17 locationManager!.requestWhenInUseAuthorization() // 位置情報許可のリクエスト 18 19 // ここで現在地を出力 20 print("mapView.userLocation.coordinate:(mapView.userLocation.coordinate)") 21 // 現在地に照準を合わす 22 // 0.01が距離の倍率 23 let span = MKCoordinateSpan(latitudeDelta: 0.01, longitudeDelta: 0.01) 24 25 // 現在地の取得 26 let region = MKCoordinateRegion(center: mapView.userLocation.coordinate, span: span) 27 // ここで照準を合わせている 28 mapView.region = region 29 } 30 31 // 許可を求めるためのdelegateメソッド 32 func locationManager(_ manager: CLLocationManager, didChangeAuthorization status: CLAuthorizationStatus) { 33 switch status { 34 35 // 許可の選択をされていない場合 36 case .notDetermined: 37 print("位置情報の取得許可を選択されていません") 38 locationManager!.requestWhenInUseAuthorization() // 許可を求める 39 // 位置情報サービスが使用できない場合 40 case .restricted: 41 print("位置情報サービスが使用できません") 42 break // 何もしない 43 // 拒否された場合 44 case .denied: 45 print("位置情報の取得が拒否されました") 46 break 47 // 常時、またはアプリの使用中のみ許可されている場合 48 case .authorizedAlways, .authorizedWhenInUse: 49 print("位置情報の取得が許可されています") 50 manager.startUpdatingLocation() // 現在地の取得を開始 51 break 52 default: 53 break 54 } 55 } 56} 57 58
試したこと
printにて現在地を出力
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。