Help us understand the problem. What is going on with this article?

Swift MkMapViewで地図アプリ作成してみた(03)- 現在位置を地図の中心にする

記事一覧

Swift MkMapViewで地図アプリ作成してみた(記事一覧)

Viewのload時に地図を初期化する

  1. 地図の初期化関数を作成する

    地図の初期化関数
        func initMap() {
            // 縮尺を設定
            var region:MKCoordinateRegion = mapView.region
            region.span.latitudeDelta = 0.02
            region.span.longitudeDelta = 0.02
            mapView.setRegion(region,animated:true)
    
            // 現在位置表示の有効化
            mapView.showsUserLocation = true
            // 現在位置設定(デバイスの動きとしてこの時の一回だけ中心位置が現在位置で更新される)
            mapView.userTrackingMode = .follow
        }
    
    設定値 振る舞い 
    .follow 現在位置のみ更新する
    .followWithHeading 現在位置と方向(ヘディングアップ)を更新する
    .none 更新しない
  2. Viewのload時に地図の初期化関数をCallする

    Viewのload時に地図の初期化関すをCallする
        override func viewDidLoad() {
            super.viewDidLoad()
            // Do any additional setup after loading the view, typically from a nib.
    
            // 地図の初期化
            initMap()
        }
    

現在位置が更新される度に地図の中心位置を変更する

  1. 地図の中心位置の変更関数を作成する

    地図の中心位置の更新関数
        func updateCurrentPos(_ coordinate:CLLocationCoordinate2D) {
            var region:MKCoordinateRegion = mapView.region
            region.center = coordinate
            mapView.setRegion(region,animated:true)
        }
    
  2. 現在位置の更新時に地図の中心位置の変更関数をCallする

    現在位置の更新時に地図の中心位置の変更関数をCallする
        // CLLocationManagerのdelegate:現在位置取得
        func locationManager(_ manager: CLLocationManager, didUpdateLocations locations:[CLLocation]) {
            updateCurrentPos((locations.last?.coordinate)!)
        }
    
  3. ▶︎を押してPCシミュレータを起動する。
    Device.png

補足

  • 以下の様にした方が現在位置更新がカクカクせずにスムーズになる。

    補足
        // CLLocationManagerのdelegate:現在位置取得
        func locationManager(_ manager: CLLocationManager, didUpdateLocations locations:[CLLocation]) {
            // updateCurrentPos((locations.last?.coordinate)!)
            mapView.userTrackingMode = .follow
        }
    

記事一覧

Swift MkMapViewで地図アプリ作成してみた(記事一覧)

yuta-sasaki
車載ソフトウェア開発者です。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした