gpt4 book ai didi

iOS CLLocationManager : Removing spikes

转载 作者:行者123 更新时间:2023-11-29 01:12:00 26 4
gpt4 key购买 nike

在 Swift 或 Objective-C 中,我们可以轻松创建 CLLocationmanager 并开始跟踪我们的位置。我们还可以设置一个 distanceFilter,它定义了设备在生成更新事件之前必须水平移动的最小距离(以米为单位)。我的 Swift 代码:

override func viewDidLoad() {
super.viewDidLoad()

manager = CLLocationManager()
manager.delegate = self
manager.distanceFilter = 10
manager.desiredAccuracy = kCLLocationAccuracyBest
manager.startUpdatingLocation()
}

但在某些情况下,gps 精度较低(即在树林、隧道、高层建筑之间......)会生成不正确的尖峰信号。 CLLocationManager 缺少一个属性或方法来定义更新的最大距离以清除此类尖峰。

现在,我自己处理最大距离,将可用位置存储到一个单独的数组中:

var myLocations: [CLLocation] = []

func calculateDistanceBetweenTwoLocations(start:CLLocation,destination:CLLocation) {
var distanceInMeters = start.distanceFromLocation(destination)
if distanceInMeters < 20 {
myLocations.append(destination)
}
}

有没有更准确的方法?

最佳答案

您正在寻找的是 Data cleansing适用于 GPS 数据的方法。

如果您还有时间,可以阅读 this PDF about it

所解释的一些方法是采用 5 个并发点并确保它是具有特定精度参数的集群的一部分。如果不是,则删除不在的点。

关于iOS CLLocationManager : Removing spikes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35625272/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com