【swift3】GPSから現在地を取得してみる

「CoreLocation.framework」を追加。

↓↓↓

Info.plist の
「NSLocationAlwaysAndWhenInUseUsageDescription」
と「NSLocationWhenInUseUsageDescription」 に 位置情報を使用する目的 を記載する。
この内容はユーザに位置情報の使用を許可する際に表示される。

コード

import UIKit
import CoreLocation

class ViewController: UIViewController, CLLocationManagerDelegate{

    var myLocationManager:CLLocationManager?

    var myLatitudeLabel:UILabel! // 緯度表示用のラベル.
    var myLongitudeLabel:UILabel! // 経度表示用のラベル.

    override func viewDidLoad() {
        super.viewDidLoad()

        // 緯度表示用のラベルを生成.
        myLatitudeLabel = UILabel(frame: CGRect(x: 0, y: 0, width: self.view.bounds.width, height: 30))
        myLatitudeLabel.layer.position = CGPoint(x: self.view.bounds.width/2, y:self.view.bounds.height/2+100)

        // 軽度表示用のラベルを生成.
        myLongitudeLabel = UILabel(frame: CGRect(x: 0, y: 0, width: self.view.bounds.width, height: 30))
        myLongitudeLabel.layer.position = CGPoint(x: self.view.bounds.width/2, y:self.view.bounds.height/2+130)

        myLatitudeLabel.text = ""
        myLongitudeLabel.text = ""

        self.view.addSubview(myLatitudeLabel)
        self.view.addSubview(myLongitudeLabel)

        // 現在地の取得.
        myLocationManager = CLLocationManager()
        myLocationManager?.delegate = self
        myLocationManager?.requestWhenInUseAuthorization()

        // セキュリティ認証のステータスを取得.
        let status = CLLocationManager.authorizationStatus()

        // まだ認証が得られていない場合は、認証ダイアログを表示.
        if(status == CLAuthorizationStatus.notDetermined) {
            print("didChangeAuthorizationStatus:\(status)");
            // まだ承認が得られていない場合は、認証ダイアログを表示.
            self.myLocationManager?.requestAlwaysAuthorization()
        }

        // 取得精度の設定.
        myLocationManager?.desiredAccuracy = kCLLocationAccuracyBest
        // 取得頻度の設定.
        //myLocationManager?.distanceFilter = 100 //100m移動したら位置情報更新

        myLocationManager?.startUpdatingLocation()
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }

    // 位置情報取得に成功したときに呼び出されるデリゲート.
    func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {

        // 緯度・経度の表示.
        myLatitudeLabel.text = "緯度:\(String(describing: manager.location?.coordinate.latitude) )"
        myLatitudeLabel.textAlignment = NSTextAlignment.center

        myLongitudeLabel.text = "経度:\(String(describing: manager.location?.coordinate.longitude))"
        myLongitudeLabel.textAlignment = NSTextAlignment.center

    }

    // 位置情報取得に失敗した時に呼び出されるデリゲート.
    func locationManager(_ manager: CLLocationManager,didFailWithError error: Error){
        print("error")
    }

}