Swift MapKitで現在地の向きを表示し続けたい
SwiftでiOS向けのコードを勉強しています。
MapKitを使い、現在地の向きを表示させることはできたのですが、
iPhoneで「拡大、縮小、回転」などの操作をすると、向きの表示が消えてしまい
再表示されないのですが、どうすれば良いでしょうか、ご教授いただけたら助かります。
(様々な参考書やサイトの継ぎ接ぎを試しながらの状態で、まだ理解が追いついておらず、
面目ありません。)
userTrackingModeプロパティのセットは、この位置に書くので正解でしょうか?
import UIKit
import MapKit
class ViewController: UIViewController, CLLocationManagerDelegate {
let manager = CLLocationManager()
@IBOutlet weak var mapView: MKMapView!
override func viewDidLoad() {
super.viewDidLoad()
manager.delegate = self
if CLLocationManager.authorizationStatus() != .authorizedWhenInUse {
manager.requestWhenInUseAuthorization()
}
//位置に追従する
mapView.userTrackingMode = MKUserTrackingMode.follow
//現在地の向きを表示
mapView.userTrackingMode = MKUserTrackingMode.followWithHeading
}
func locationManager(_ manager: CLLocationManager,didChangeAuthorization status: CLAuthorizationStatus) {
if status == .authorizedWhenInUse {
manager.requestLocation()
}
}
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
print("locations : \(locations)")
let current = locations[0]
let region = MKCoordinateRegionMakeWithDistance(current.coordinate, 500, 500);
mapView.setRegion(region, animated: true)
}
func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) {
print("error = \(error)")
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}