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

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

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

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

Q&A

解決済

1回答

2624閲覧

MapViewが表示できない

退会済みユーザー

退会済みユーザー

総合スコア0

Swift

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

0グッド

0クリップ

投稿2020/05/14 04:43

編集2020/05/14 05:08

初質問のものです。よろしくお願いします。
ただいま、現在地を地図に表示するプログラムを作っているのですが、写真のように青い画面がひたすら続いてしまいます。
ちなみにコードエラーは全く起きていないという状況です。
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") }

}

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

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

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

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

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

TsukubaDepot

2020/05/14 04:49

どのようなコードで実行されたのか提示していただかないと判断できませんので、質問を編集しコードを貼り付けて頂けますでしょうか。 その際、 ```swift ここにコードをペーストする ``` といった感じで、```で囲むようにしていただくと、他の質問者さんと同じようにコードがわかりやすく、かつ再利用できる形で載せられますので、よろしくお願いします。
退会済みユーザー

退会済みユーザー

2020/05/14 04:53

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") } }
TsukubaDepot

2020/05/14 04:56

上記のコードですが、ここではなく、「質問に追記」という形で編集していただけないでしょうか。 コメントの方だと他の方が気づかないため、本文に追記のほうが望ましいです。 あと、 ```swift コード本体 ``` という感じで、コード前後に```swiftと```を入れるようにお願いいたします。
退会済みユーザー

退会済みユーザー

2020/05/14 05:09

TsukubaDepot様 すみませんが、```swiftの```にイマイチ何を書けば良いかわかりません 下手な質問で申し訳ございません。 教えていただけませんか?
TsukubaDepot

2020/05/14 05:11

試しに、 ```swift let a = 10 ``` 上記の三行をご質問に追加し、その結果プレビューがどのような感じに変わるのか試してみるといいかもしれません。 コードの方はとりあえず拝見いたします。
guest

回答1

0

ベストアンサー

緯度経度の初期値が南大西洋の海上になっているため、表示されているのが海だけになっています。

たとえば、シミュレータ上で Option を押しながらドラッグするとピンチアウトできますので、その操作を用いて広域表示に切り替えていくと、やがてアフリカ大陸が見えてきますのでご確認ください。


ところで、このコードは何かを参考にされて書かれたものでしょうか。

位置情報取得が中途半端なまま終わっているので、おそらく続きとして「現在位置の取得」があるのでは無いかと思いますが、いかがでようか。

投稿2020/05/14 05:21

TsukubaDepot

総合スコア5086

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

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

退会済みユーザー

退会済みユーザー

2020/05/14 06:47

TsukubaDepot様 ご丁寧にありがとうございました。 初期値が南太平洋だったことには気がつかなく、混乱してしまっていました。 ありがとうございました。
TsukubaDepot

2020/05/14 06:54

ちなみに、たとえば region.center = mapView.userLocation.coordinate を region.center = CLLocationCoordinate2D(latitude: 35.681236, longitude: 139.767125) のような感じに書き換えると東京駅が中心になります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問