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

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

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

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

Swift

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

Q&A

解決済

1回答

434閲覧

[Swift] 現在位置を取得して表示する方法がわかりません

kkkkk00001111

総合スコア36

Xcode

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

Swift

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

0グッド

0クリップ

投稿2022/06/27 06:00

編集2022/06/27 07:41

macOS12.4 Xcode13.0 を使用

現在位置を取得して地図に表示するために、以下のように書きました。(一部略)

Swift

1import UIKit 2import MapKit 3import CoreLocation 4 5class ViewController!: UIViewController ,MKMapViewDelegate, 6 CLLocationManagerDelegate{ 7 var locationManager = CLLocationManager() 8 9 override func viewDidLoad() { 10 super.viewDidLoad() 11 12 // Do any additional setup after loading the view. 13 locationManager.delegate = self 14 } 15 16 17 override func viewDidAppear(_ animated: Bool) { 18 19 20 //位置情報サービスの確認 21 CLLocationManager.locationServicesEnabled() 22 23 // セキュリティ認証のステータス 24 let manager = CLLocationManager() 25 //let status = CLLocationManager.authorizationStatus() 26 let status = manager.authorizationStatus 27 28 if(status == CLAuthorizationStatus.notDetermined) { 29 print("NotDetermined") 30 // 許可をリクエスト 31 locationManager.requestWhenInUseAuthorization() 32 33 } 34 else if(status == CLAuthorizationStatus.restricted){ 35 print("Restricted") 36 } 37 else if(status == CLAuthorizationStatus.authorizedWhenInUse){ 38 print("authorizedWhenInUse") 39 } 40 else if(status == CLAuthorizationStatus.authorizedAlways){ 41 print("authorizedAlways") 42 } 43 else{ 44 print("not allowed") 45 } 46 47 // 位置情報の更新 48 locationManager.startUpdatingLocation() 49 50 // MapViewのインスタンス生成. 51 let mapView = MKMapView() 52 53 // MapViewをSafeAreaに収める(Portraitのケース) 54 // 以降、Landscape のみを想定 55 let screenWidth = view.frame.size.width 56 let screenHeight = view.frame.size.height 57 58 let rect = CGRect(x: 0, 59 y: 0, 60 width: screenWidth 61 height: screenHeight ) 62 63 mapView.frame = rect 64 65 // Delegateを設定. 66 mapView.delegate = self 67 68 // 縮尺を設定 69 var region:MKCoordinateRegion = mapView.region 70 region.center = mapView.userLocation.coordinate 71 72 region.span.latitudeDelta = 0.02 73 region.span.longitudeDelta = 0.02 74 75 mapView.setRegion(region,animated:true) 76 // MapViewをViewに追加. 77 self.view.addSubview(mapView) 78 79 mapView.mapType = MKMapType.hybrid 80 81 mapView.userTrackingMode = MKUserTrackingMode.follow 82 mapView.userTrackingMode = MKUserTrackingMode.followWithHeading 83 } 84 85 func mapView(_ mapView: MKMapView, regionDidChangeAnimated animated: Bool) { 86 print("region changed") 87 } 88 89} 90

この状態でシミュレーターでビルドすると、画面には何も表示されず、以下のようなメッセージが出ました。

イメージ説明

調べてみると、Info.pliset に原因があるらしいのですが、どこを修正すれば良いのか分かりませんでした。
どのように修正したらよいか教えていただきたいです。

Info.pliset

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

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

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

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

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

guest

回答1

0

ベストアンサー

質問欄のInfo.plistの画像は直接ファイルを修正しましたでしょうか?
手元の環境で確認してみたところInfo.plist自体は次のようになっていました。
(このファイルに「Privacy - Location When In Use Usage Description」は見当たりませんでした)

xml

1<?xml version="1.0" encoding="UTF-8"?> 2<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 3<plist version="1.0"> 4<dict> 5 <key>UIApplicationSceneManifest</key> 6 <dict> 7 <key>UIApplicationSupportsMultipleScenes</key> 8 <false/> 9 <key>UISceneConfigurations</key> 10 <dict> 11 <key>UIWindowSceneSessionRoleApplication</key> 12 <array> 13 <dict> 14 <key>UISceneConfigurationName</key> 15 <string>Default Configuration</string> 16 <key>UISceneDelegateClassName</key> 17 <string>$(PRODUCT_MODULE_NAME).SceneDelegate</string> 18 <key>UISceneStoryboardFile</key> 19 <string>Main</string> 20 </dict> 21 </array> 22 </dict> 23 </dict> 24</dict> 25</plist>

プロジェクトの[TARGETS]-[Info]-[Custom iOS Target Properties]を設定してみたらどうでしょうか。
Keyの追加の仕方に迷うのですが、適当な行のKeyの右側にある「+」マークをクリックすると新しい行を追加することができます。
そこに「Privacy - Location When In Use Usage Description」を選択してみたらどうでしょうか。
イメージ説明

投稿2022/06/27 10:56

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

kkkkk00001111

2022/06/28 01:22

この方法でうまくいきました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問