

SwiftでiOS向けのコードを勉強しています。  
MapKitを使い、現在地の向きを表示させることはできたのですが、  
iPhoneで「拡大、縮小、回転」などの操作をすると、向きの表示が消えてしまい  
再表示されないのですが、どうすれば良いでしょうか、ご教授いただけたら助かります。  
（様々な参考書やサイトの継ぎ接ぎを試しながらの状態で、まだ理解が追いついておらず、  
面目ありません。）  
userTrackingModeプロパティのセットは、この位置に書くので正解でしょうか？

[code]

        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.
    }
        }
    
[/code]


CC BY-SA 3.0
2017-08-14T06:16:52.083
37180
2017-09-27T12:18:26.797
2017-09-27T12:18:26.797
369
24718
question
swift ios mapkit
Swift MapKitで現在地の向きを表示し続けたい


こちらはすでに解決したでしょうか？

[shu223さんの記事](https://qiita.com/shu223/items/4d70ee695ef1bf39af18)にもあるように、ユーザーが少しでも地図を動かすと強制的に  
`MKUserTrackingModeNone` に戻されます。つまり、向きの表示が消えるのは仕様です。

> 標準マップアプリを見てると、少しマップを動かすと、そのとき MKUserTrackingMode が MKUserTrackingModeFollow
> であっても MKUserTrackingModeFollowWithHeading であっても、MKUserTrackingModeNone に
> 強制的に戻されることがわかります。

`userTrackingMode` プロパティのセットは、その位置で問題ないのですが、

[code]

    mapView.userTrackingMode = MKUserTrackingMode.follow
    
[/code]

と

[code]

    mapView.userTrackingMode = MKUserTrackingMode.followWithHeading
    
[/code]

はどちらか片方で十分です。向きを表示したい場合は前者を消して、後者だけでも問題なく動くと思います。


CC BY-SA 3.0
2017-09-27T08:50:06.503
38233
2017-09-27T08:50:06.503
369
37180
answer