Interface BuilderでMkMapViewの「User Location」にチェックを入れると、
Trying to start MapKit location updates without prompting for location authorization. Must call -[CLLocationManager requestWhenInUseAuthorization] or -[CLLocationManager requestAlwaysAuthorization] first.
という警告(エラー?)が出る場合があります
一応問題なく動くのですが、非常に気持ち悪いです
原因はたぶん、
MKMapViewの「User Location」にチェックが入っているので、起動してすぐに位置情報を取得しに行こうとする
↓
「位置情報を使いますか?」というアラート画面をまだ出していない
↓
エラー表示
↓
「位置情報を使いますか?」というアラート画面を表示
という流れなのだと思います
なので、
「位置情報を使いますか?」というアラート画面を表示する
↓
MKMapViewの「User Location」をTrueにする
という順番にすれば、警告はでなくなります
具体的には、Interface BuilderのMkMapViewの「User Location」のチェックを外して、プログラムでtrueにするようにします。trueにするタイミングはMKMapViewのデリーゲートです。位置情報の許可が出てからMKMapViewのshowsUserLocationをtrueにすればOKです
func locationManager(manager: CLLocationManager, didChangeAuthorizationStatus status: CLAuthorizationStatus) { switch status { case CLAuthorizationStatus.AuthorizedAlways, CLAuthorizationStatus.AuthorizedWhenInUse: mapView.showsUserLocation = true break } }