CoreLocation 捕捉速度
Posted
技术标签:
【中文标题】CoreLocation 捕捉速度【英文标题】:CoreLocation capturing speed 【发布时间】:2017-09-23 10:46:47 【问题描述】:我正在使用 CLLocationManager 捕获位置数据。我不太关心水平精度,但我希望速度尽可能准确。
有人知道 kCLLocationAccuracyThreeKilometers 是否足以满足我的用例,还是我必须使用 kCLLocationAccuracyBest 才能获得最准确的速度?
谢谢。
【问题讨论】:
取决于你计算速度的方式? 通过比较两个坐标? 我没有计算速度。我正在从 CLLocation (CLLocationSpeed) 读取速度属性 【参考方案1】:AFAIK kCLLocationAccuracyThreeKilometers
使用手机信号塔(并且不使用 GPS),它不会为您提供每一秒的信息(这就是它对电池有益的原因),也不会使用核心 Motion。如果没有 GPS 或 coreMotion,任何计算的速度都不会被认为是准确的
所以要回答您的问题,不,它不会为您提供准确的速度,但为了安全起见,只需跳上汽车并开始记录。 (虽然记得关闭所有其他应用的定位服务,因为有时其他精度更高的应用可能会提高您应用的准确性)
【讨论】:
【参考方案2】:我在我的一个基于地图的应用程序中遇到了同样的问题,我以这种方式解决了(在德里地铁旅行时,即使我测试过)并且它工作正常:
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
使用此代码后,请随时提供您的反馈。希望它能解决你的问题。继续编码
【讨论】:
【参考方案3】:TLDR; kCLLocationAccuracyBest 是要走的路。
详情见https://***.com/a/737968/190599
【讨论】:
以上是关于CoreLocation 捕捉速度的主要内容,如果未能解决你的问题,请参考以下文章