ios 코어 로케이션 프레임워크를 사용하여 위치정보를 얻는 예제이다.



아래는 전체 소스 코드이다.


import UIKit

import CoreLocation



class ViewController: UIViewController, CLLocationManagerDelegate {


// UI 에서 위치정보를 보여줄 Label 들을 만들고 controller 파일에 연동하였다.

    @IBOutlet weak var latitude: UILabel!                        

    @IBOutlet weak var longitude: UILabel!

    @IBOutlet weak var horizontalAccuracy: UILabel!

    @IBOutlet weak var altitude: UILabel!

    @IBOutlet weak var verticalAccuracy: UILabel!

    @IBOutlet weak var distance: UILabel!

    

    var locationManager : CLLocationManager = CLLocationManager()

    var startLocation : CLLocation!

    

    @IBAction func resetDistance(sender: AnyObject) {

        

        startLocation = nil //초기화 코드

    }

    

    override func viewDidLoad() {

        super.viewDidLoad()

        // Do any additional setup after loading the view, typically from a nib.

        

        locationManager.desiredAccuracy = kCLLocationAccuracyBest

        locationManager.delegate = self

        locationManager.requestWhenInUseAuthorization()

        locationManager.startUpdatingLocation()

        startLocation = nil

    }


    override func didReceiveMemoryWarning() {

        super.didReceiveMemoryWarning()

        // Dispose of any resources that can be recreated.

    }

    

    func locationManager(manager : CLLocationManager, didUpdateLocations locations : [CLLocation]) {

        let latestLocation : AnyObject = locations[locations.count - 1]

        latitude.text = String(format: "%.4f", latestLocation.coordinate.latitude)

        longitude.text = String(format: "%.4f", latestLocation.coordinate.longitude)

        horizontalAccuracy.text = String(format: "%.4f", latestLocation.altitude)

        altitude.text = String(format: "%.4f", latestLocation.verticalAccuracy)

        

        if startLocation == nil {

            startLocation = latestLocation as! CLLocation

        }

        let distanceBetween : CLLocationDistance = latestLocation.distanceFromLocation(startLocation)

        distance.text = String(format: "%.2f", distanceBetween)

    }


    func locationManager(manager : CLLocationManager, didFailWithError error : NSError) {

        print("error : \(error.localizedDescription)")

    }


}





viewDidLoad 에서 실행되는 코드는 애플리케이션이 foreground에서 실행될 때 위치 정보를 추적할 수 있도록 사용자에게 허가를 요청하는 메소드 인데 이 메소드는 프로젝트의 info.plist 파일에 추가되고, NSLocationWhenInUseUsageDescription 키에 할당 value 에는 보여줄 문장을 입력해야 한다. (아래 사진 참조)









위의 
코드는  "핵심만 골라 배우는 ios 9 프로그래밍 (닐스미스 지음/ 황반석 옮김)" 에 있는 예제를 참고하여 작성하였습니다.

+ Recent posts