CLLocation, CLLocationManager

sanghee·2022년 5월 2일
0

🍀인턴 스터디

목록 보기
5/12

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) 반환

**Getting Speed and Course Information**

  • speed: CLLocationSpeed
    • 1초당 몇 meter를 가는지 속도
  • 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는 모든 위치와 방향과 관련된 업데이트 및 이벤트들을 처리한다.



참고 문서

profile
👩‍💻

0개의 댓글