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 프로그래밍 (닐스미스 지음/ 황반석 옮김)" 에 있는 예제를 참고하여 작성하였습니다.
'programming language > swift' 카테고리의 다른 글
ios 시간 알림, 위치 알림 사용하기 in swift (0) | 2016.09.11 |
---|---|
ios photo extensions 사용하기 in swift (0) | 2016.09.11 |
ios MKMapItem 지도 사용하기 길찾기 in swift (0) | 2016.09.09 |
ios 상태보존 , 복원 사용하기 in swift (0) | 2016.09.07 |
ios 로컬알림 및 앱 background 사용 in swift (0) | 2016.09.07 |