[iOS] CLLoction Manager를 통한 이동 속도(Swift 편)

4791 단어 Swift위치 정보iOS
CoreLocation을 이용하여 이동 속도를 얻는 방법.

운영 환경

  • Xcode 8.0
  • Swift 3.0
  • 전제 조건


    사용자는 위치 정보를 사용할 수 있어야 합니다.상세한 상황은 아래의 문장을 참고하시오.
    iOS 8에서 위치 정보를 얻는 방법이 달라집니다. - Qiita.

    설치 방법


    CLLocation 클래스CLLocationSpeed 속성을 사용합니다.
    /*
     *  speed
     *  
     *  Discussion:
     *    Returns the speed of the location in m/s. Negative if speed is invalid.
     */
    @available(iOS 2.2, *)
    public var speed: CLLocationSpeed { get }
    
    단위는 초속(m/s)이다.속도를 얻을 수 없을 때 마이너스를 되돌려줍니다.
    이동 거리에서 속도를 계산하기 때문에 정밀도가 높지 않다.

    설치 예


    실행startUpdatingLocation.
    override func viewDidLoad() {
        super.viewDidLoad()
    
        if CLLocationManager.locationServicesEnabled() {
            locationManager = CLLocationManager()
            locationManager.delegate = self
            locationManager.startUpdatingLocation()
        }
    }
    
    위치 정보를 업데이트할 때마다 다음 경계부호를 호출합니다.
    func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
        guard let newLocation = locations.last,
            CLLocationCoordinate2DIsValid(newLocation.coordinate) else {
                return
        }
        self.mpsTextField.text = "".appendingFormat("%.2f", newLocation.speed)
        self.kphTextField.text = "".appendingFormat("%.2f", newLocation.speed * 3.6)
    }
    

    실행 결과



    샘플 출처



    iOS 시뮬레이터는 시티 비씨클 라이드(자전거를 타고 이동하는 경우) 등을 시뮬레이트해 각자 이동 속도를 낸 결과 이같이 나타났다.
    City Run
    City Bicycle Ride
    Freeway Drive
    약 4m/s
    약7m/s
    약 33m/s
    약 14km/h
    약 27km/h
    약 120km/h
    Freeway Drive의 이동 속도가 의외로 빨라 깜짝 놀랐다

    좋은 웹페이지 즐겨찾기