CLLocation, CLLocationManager
CLLocation, CLLocationManager
**CLLocation**
- CLLocation이란 시스템이 전달하는 위도, 경도 및 코스 정보이다.
- CLLocation 객체에는 장치의 지리적인 위치, 고도값과 함께 측정 정확성과 수집 시기가 포함된다.
- iOS에서는 장치가 움직이는 속도와 방향을 포함한 코스 정보를 가진다.
- 일반적으로 location 객체를 만들지 않고 CLLocationManager 객체에 location 업데이트를 요청한다.
- 시스템은 온보드 센서를 사용하여 위치 데이터를 수집하고 앱에 데이터를 보고한다.
- 몇몇의 서비스는 이전의 데이터를 반환하기에 해당 데이터를 서비스를 개선하기 위해 사용할 수 있다.
- CLLocationManager 객체의 위치 속성으로부터 수집된 정보들을 얻을 수 있다.
- 만약 커스텀 위치를 캐시하거나 두 지리적 좌표 사이의 거리를 계산하기를 원할 때 위치 객체를 만들 수도 있다.
- CLLocation 객체를 있는 그대로 사용하고, 상속하지 않는다.
**Getting the Location Attributes**
- coordinate: CLLocationCoordinate2D
- altitude: CLLocationDistance
- ellipsoidalAltitude: CLLocationDistance
- floor: CLFloor?
- horizontalAccuracy: CLLocationAccuracy
- verticalAccuracy: CLLocationAccuracy
- timestamp: Date
- sourceInformation: CLLocationSourceInformation?
**Measuring the Distance Between Coordinates**
- distance(from: CLLocation) → CLLocationDistance
- 특정 위치로부터 현재 위치까지의 거리(m) 반환
- speed: CLLocationSpeed
- speedAccuracy: CLLocationSpeedAccuracy
- course: CLLocationDirection
- 기기가 이동하는 방향. 북쪽을 기준으로 도 단위로 측정됨
- courseAccuracy: CLLocationDirectionAccuracy
**Data Types**
- CLLocationSpeed
- CLLocationDirection
- CLLocarionDistance
- CLLocationAccuracy
- CLLocationSpeedAccuracy
- CLLocationDirectionAccuracy
**CLLocationManager**
Overview
- 이 클래스의 인스턴스를 통해 Core Location 서비스를 구성하거나 시작 후는 중지할 수 있다.
- 위치 매니저 객체는 다음과 같은 위치와 관련된 활동들을 지원한다.
- 구성이 가능한 정확성과 함께 사용자의 현재 위치에서 크고 작은 변화들을 추적한다.
- 나침반에서 방향 변경을 보고한다.
- 별개의 관심 지역을 모니터링하고 사용자가 해당 지역을 방문하거나 떠났을 때 위치 기반 이벤트를 생산한다.
- 근처 비콘에 범위를 보고한다.
- CLLocationManagerDelegate 프로토콜을 준수하여 커스텀 객체에 delegate 속성을 할당한다.
- delegate가 즉시 할당되며, 위치 매니저가 초기화되면 시스템이 locationManagerDidChangeAuthorization 메서드를 실행한다.
- Core Location은 CLLocationManager를 초기화한 스레드의 런루프를 사용하여 delegate 객체의 메서드를 실행한다.
- 해당 스레드는 앱의 메인 스레드와 같이 런루프가 활성 상태여야 한다.
- 시스템은 위치 매니저가 생성되거나 앱의 권한이 변경되면 즉시 locationManagerDidChangeAuthorization을 실행한다.
- delegate는 모든 위치와 방향과 관련된 업데이트 및 이벤트들을 처리한다.
참고 문서