初質問のものです。よろしくお願いします。
ただいま、現在地を地図に表示するプログラムを作っているのですが、写真のように青い画面がひたすら続いてしまいます。
ちなみにコードエラーは全く起きていないという状況です。
xcodeを再インストールしたり、容量チェックを行ったりもしたのですが、なかなか解決ができません。
どなたか解決方法を教えていただけないでしょうか?
お手数ですがよろしくお願いします。
こちらがコードになります
import UIKit
import MapKit
import CoreLocation
class ViewController: UIViewController ,MKMapViewDelegate,
CLLocationManagerDelegate{
var locationManager = CLLocationManager() override func viewDidLoad() { super.viewDidLoad() locationManager.delegate = self // 画面背景色を設定 self.view.backgroundColor = UIColor(red:0.7,green:0.7,blue:0.7,alpha:1.0) } // 画面回転にも対応する override func viewDidAppear(_ animated: Bool) { var topPadding: CGFloat = 0 var bottomPadding: CGFloat = 0 var leftPadding: CGFloat = 0 var rightPadding: CGFloat = 0 if #available(iOS 11.0, *) { // 'keyWindow' was deprecated in iOS 13.0: Should not be used for applications let window = UIApplication.shared.windows.filter {$0.isKeyWindow}.first topPadding = window!.safeAreaInsets.top bottomPadding = window!.safeAreaInsets.bottom leftPadding = window!.safeAreaInsets.left rightPadding = window!.safeAreaInsets.right } //位置情報サービスの確認 CLLocationManager.locationServicesEnabled() // セキュリティ認証のステータス let status = CLLocationManager.authorizationStatus() if(status == CLAuthorizationStatus.notDetermined) { print("NotDetermined") // 許可をリクエスト locationManager.requestWhenInUseAuthorization() } else if(status == CLAuthorizationStatus.restricted){ print("Restricted") } else if(status == CLAuthorizationStatus.authorizedWhenInUse){ print("authorizedWhenInUse") } else if(status == CLAuthorizationStatus.authorizedAlways){ print("authorizedAlways") } else{ print("not allowed") } // 位置情報の更新 locationManager.startUpdatingLocation() // MapViewのインスタンス生成. let mapView = MKMapView() // MapViewをSafeAreaに収める(Portraitのケース) // 以降、Landscape のみを想定 let screenWidth = view.frame.size.width let screenHeight = view.frame.size.height let rect = CGRect(x: leftPadding, y: topPadding, width: screenWidth - leftPadding - rightPadding, height: screenHeight - topPadding - bottomPadding ) mapView.frame = rect // Delegateを設定. mapView.delegate = self // 縮尺を設定 var region:MKCoordinateRegion = mapView.region region.center = mapView.userLocation.coordinate region.span.latitudeDelta = 0.02 region.span.longitudeDelta = 0.02 mapView.setRegion(region,animated:true) // MapViewをViewに追加. self.view.addSubview(mapView) mapView.mapType = MKMapType.hybrid mapView.userTrackingMode = MKUserTrackingMode.follow mapView.userTrackingMode = MKUserTrackingMode.followWithHeading } func mapView(_ mapView: MKMapView, regionDidChangeAnimated animated: Bool) { print("region changed") }
}
どのようなコードで実行されたのか提示していただかないと判断できませんので、質問を編集しコードを貼り付けて頂けますでしょうか。
その際、
```swift
ここにコードをペーストする
```
といった感じで、```で囲むようにしていただくと、他の質問者さんと同じようにコードがわかりやすく、かつ再利用できる形で載せられますので、よろしくお願いします。
TsukubaDepot様
ご丁寧にありがとうございます。
初質問でどのように行えば良いかあまり分からないのですがこのような感じでよろしいでしょうか?
お手数ですがよろしくお願いします。
import UIKit
import MapKit
import CoreLocation
class ViewController: UIViewController ,MKMapViewDelegate,
CLLocationManagerDelegate{
var locationManager = CLLocationManager()
override func viewDidLoad() {
super.viewDidLoad()
locationManager.delegate = self
// 画面背景色を設定
self.view.backgroundColor = UIColor(red:0.7,green:0.7,blue:0.7,alpha:1.0)
}
// 画面回転にも対応する
override func viewDidAppear(_ animated: Bool) {
var topPadding: CGFloat = 0
var bottomPadding: CGFloat = 0
var leftPadding: CGFloat = 0
var rightPadding: CGFloat = 0
if #available(iOS 11.0, *) {
// 'keyWindow' was deprecated in iOS 13.0: Should not be used for applications
let window = UIApplication.shared.windows.filter {$0.isKeyWindow}.first
topPadding = window!.safeAreaInsets.top
bottomPadding = window!.safeAreaInsets.bottom
leftPadding = window!.safeAreaInsets.left
rightPadding = window!.safeAreaInsets.right
}
//位置情報サービスの確認
CLLocationManager.locationServicesEnabled()
// セキュリティ認証のステータス
let status = CLLocationManager.authorizationStatus()
if(status == CLAuthorizationStatus.notDetermined) {
print("NotDetermined")
// 許可をリクエスト
locationManager.requestWhenInUseAuthorization()
}
else if(status == CLAuthorizationStatus.restricted){
print("Restricted")
}
else if(status == CLAuthorizationStatus.authorizedWhenInUse){
print("authorizedWhenInUse")
}
else if(status == CLAuthorizationStatus.authorizedAlways){
print("authorizedAlways")
}
else{
print("not allowed")
}
// 位置情報の更新
locationManager.startUpdatingLocation()
// MapViewのインスタンス生成.
let mapView = MKMapView()
// MapViewをSafeAreaに収める(Portraitのケース)
// 以降、Landscape のみを想定
let screenWidth = view.frame.size.width
let screenHeight = view.frame.size.height
let rect = CGRect(x: leftPadding,
y: topPadding,
width: screenWidth - leftPadding - rightPadding,
height: screenHeight - topPadding - bottomPadding )
mapView.frame = rect
// Delegateを設定.
mapView.delegate = self
// 縮尺を設定
var region:MKCoordinateRegion = mapView.region
region.center = mapView.userLocation.coordinate
region.span.latitudeDelta = 0.02
region.span.longitudeDelta = 0.02
mapView.setRegion(region,animated:true)
// MapViewをViewに追加.
self.view.addSubview(mapView)
mapView.mapType = MKMapType.hybrid
mapView.userTrackingMode = MKUserTrackingMode.follow
mapView.userTrackingMode = MKUserTrackingMode.followWithHeading
}
func mapView(_ mapView: MKMapView, regionDidChangeAnimated animated: Bool) {
print("region changed")
}
}
上記のコードですが、ここではなく、「質問に追記」という形で編集していただけないでしょうか。
コメントの方だと他の方が気づかないため、本文に追記のほうが望ましいです。
あと、
```swift
コード本体
```
という感じで、コード前後に```swiftと```を入れるようにお願いいたします。
https://teratail.com/questions/44783
この辺りが参考になるかと思います。
TsukubaDepot様
すみませんが、```swiftの```にイマイチ何を書けば良いかわかりません
下手な質問で申し訳ございません。
教えていただけませんか?
試しに、
```swift
let a = 10
```
上記の三行をご質問に追加し、その結果プレビューがどのような感じに変わるのか試してみるといいかもしれません。
コードの方はとりあえず拝見いたします。
回答1件
あなたの回答
tips
プレビュー