スポンサーリンク

【Swift】MapViewで現在地を表示・取得する方法。〜MapAPP作成③〜

Swift
スポンサーリンク

今回の記事は地図アプリ作成の続きです。
地図アプリと言っても目的が今のところ定まっていませんが、前回までで指定の場所を表示することができているとも思います。まだのかたは下記記事をご参照ください。

今回の記事ではその続きといえば続きに当たりますが、現在地情報をSwiftを使ってアプリ内で表示、取得できるまでの記事になります。

スポンサーリンク

地図アプリに現在地を表示させるXcode側の設定

まずはXcodeプロジェクトのディレクトリ何あるinfo.plistをクリックして見て下さい。

こちらをクリックするとたくさん表示がある一覧のページに飛びます。

その一覧のinfomation property listの横の+マークをクリックしてください。

すると選択欄が出てくるのでそちらで下記2項目を選んびます。

Privacy – Location When In Use Usage Description
Privacy – Location Always Usage Description

この設定項目の右横に文字を入力できますがこちらは現在地を取得し表示させていいかの確認の際に表示させる文字を記載することができます。

なんでもOkです。私はOk?を入力したのみ。

次にstoryboardに戻ります。

Mapkit viewをクリックして自身の設定位置情報を表示させ設定をほど施します。

これでXcode側の設定は完了です。

地図アプリに現在地を表示・取得させるソースコード

次に地図アプリに現在地を表示させる方法について記載いたします。

まず上記の段階でbuildするとどの様に表示されるかご紹介します。

mapのみの表示になっており現在地のマークなどは特に表示されていないと思います。

これを修正するためにDelegateを設定していきます。

コードは下記です。

import UIKit
import MapKit
import CoreLocation

class MapViewController: UIViewController,CLLocationManagerDelegate {
    @IBOutlet weak var map: MKMapView!
    
    var locationManager: CLLocationManager!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        locationManager = CLLocationManager()
        locationManager.delegate = self
        locationManager!.requestWhenInUseAuthorization()
    }
    // 許可を求めるためのdelegateメソッド
    func locationManager(_ manager: CLLocationManager,didChangeAuthorization status: CLAuthorizationStatus) {
            switch status {
            // 許可されてない場合
            case .notDetermined:
            // 許可を求める
                manager.requestWhenInUseAuthorization()
            // 拒否されてる場合
            case .restricted, .denied:
                // 何もしない
                break
            // 許可されている場合
            case .authorizedAlways, .authorizedWhenInUse:
                // 現在地の取得を開始
                manager.startUpdatingLocation()
                break
            default:
                break
            }
        }
  

}

日本全土表示させるようにしています。

まずは現在地を使用するためにCoreLocationをインポートします。

そしてlocationmanagerというものを定義してそちらで全ての管理をこなっていきます。

そして現在地取得のdelegateの関数を記載して後はページロード時に全て読み込みをお行えば完了です。

正直深くまでわからなくとも上記コードでうまくいきます。

ただ私が一瞬ハマった落とし穴がエミュレータではどうやらこちら現在地を取得できない様です。

そのため実機での検証が必要ですのでそれだけは忘れずにです。

私が京都に生息していることはブログタイトルからお分かりかと思いますがきちんと表示されている様で満足です。

したの観光スポットなんとかボタンは無視して下さい。

本記事を読んでいただき感謝です。サイトを訪れていただいた方はプログラミング勉強中かと思いますのでプログラミング勉強のコツを合わせてご紹介。

スポンサーリンク
スポンサーリンク
スポンサーリンク

ブログに関しては500円程度かかりますが、それ以外は無料です。知識の吸収と並行してアウトプットは非常に効率が良いです。テックアカデミーに関しては講座レベルが高いにも関わらず、無料体験や人気口座も大幅値下げがあるので、重点的に学びたいものを無料体験してみてください。

転職時にも、エンジニアからテックアカデミー・Paizaは認知度が高いので、未経験入社採用を行う際履歴書で目に留まります。特にPaizaのスキルレベルA・SなどはIT業界でも評価されます。

テックアカデミー・Paizaの無料登録ができる期間中にぜひご利用してみてください。私も活用経験ありです。

Swift
スポンサーリンク
スポンサーリンク
ともぶろぐ

コメント

  1. […] 【Swift】地図アプリで現在地取得を行う方法〜地図アプリ作成編③〜 […]

タイトルとURLをコピーしました