본문 바로가기

Ios

Ios - CoreLocation

임포트

import CoreLocation

 

locationManager 인스턴스 생성

컨트롤러 클래스 내부에

let locationManager = CLLocationManager()

 

권한 획득

viewDidLoad() 안에 locationManager의 requestWhenInUseAuthorization() 메소드 선언

override func viewDidLoad() {
    super.viewDidLoad()
        
    locationManager.requestWhenInUseAuthorization()
}

그리고 프로퍼티 리스트(.plist)에 권한 설정을 추가합니다.

key값으로 privacy-When In Use Usage Description을 선택하고 value에 해당 권한을 얻기 위한 이유를 입력합니다.

 

위치 사용

locationManager.requestLocation - 현재 위치를 한 번 전송 요청

locationManager.startUpdatingLocation - 현재 위치를 계속적으로 추적

 

requestLocation을 사용 할 때 필요한 delegate 메소드

didUpdateLocations와 didFailWithError를 인자로 갖는 locationManager 메서드 둘다 반드시 implement해야합니다.

extension WeatherViewController: CLLocationManagerDelegate {
    func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
    
    }
    
    func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) {
        
    }
}

 

locations을 통한 좌표값(경도, 위도) 얻기

// locations는 옵셔널 배열이고 가장 최신으로 업데이트된 정보가 배열의 뒷부분에 쌓이므로 .last를 사용하였다.
if let location = locations.last {
	
    let lon = location.coordinate.longitude // 경도
   
	let lat = location.coordinate.latitude // 위도
}