CoreLocation捕获速度

时间:2017-09-23 10:46:48

标签: ios swift

我正在使用CLLocationManager捕获位置数据。我不太关心水平精度,但我希望速度尽可能准确。

任何人都知道kCLLocationAccuracyThreeKilometers对我的用例是否足够,还是我必须使用kCLLocationAccuracyBest来获得最准确的速度?

感谢。

3 个答案:

答案 0 :(得分:1)

AFAIK kCLLocationAccuracyThreeKilometers‍使用手机信号塔(并且不使用GPS),它不会提供每一秒的信息(这就是它对电池有益的原因),也不使用核心动作。没有GPS或coreMotion,任何计算的速度都不会被认为是准确的

所以回答你的问题,不,它不会给你一个准确的速度,但只是为了安全起见,只需跳进汽车并开始记录。 (虽然记得关闭所有其他应用程序的位置服务,因为有时其他应用程序具有更高的准确性可以提高应用程序的准确性)

答案 1 :(得分:0)

TLDR; kCLLocationAccuracyBest是要走的路。

有关详细信息,请参阅https://stackoverflow.com/a/737968/190599

答案 2 :(得分:0)

我在我的一个基于地图的应用程序中遇到了同样的问题,我解决了这个问题(在德里地铁旅行时,即使我已经测试过)并且工作正常:

   func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
        //Get Current Location
        let location = locations.last! as CLLocation
        let userLocation:CLLocation = locations[0] as CLLocation

        // For getting speed
        let speed = location.speed * 2.23694
        lblSpeed.text = (location.speed<0) ? "-- \n mph" : String(format: "%d \n mph", Int(speed))
        locationManager.startUpdatingHeading()

}

kCLLocationAccuracyBest

中的准确性是完美的
locationManager.desiredAccuracy = kCLLocationAccuracyBest

使用此代码后,请随时提供反馈。希望它能解决你的问题。保持编码