[英]iOS CLLocationManager: Removing spikes
在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)
}
}
有沒有更准確的方法?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.