gpt4 book ai didi

ios - 如何过滤无效位置更新 iOS

转载 作者:行者123 更新时间:2023-11-28 08:19:51 24 4
gpt4 key购买 nike

我使用 CCLocationManager 每 1 分钟跟踪一次位置,这是我的 didUpdateLocation 委托(delegate)方法:

func changeLocationAccuracy() {
switch locationManager.desiredAccuracy {
case kCLLocationAccuracyBest:
locationManager.desiredAccuracy = kCLLocationAccuracyThreeKilometers
locationManager.distanceFilter = 99999
case kCLLocationAccuracyThreeKilometers:
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.distanceFilter = kCLDistanceFilterNone
default: break
}
}

func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
guard let newLocation = locations.last else {
return
}

let interval = newLocation.timestamp.timeIntervalSinceNow

if abs(interval) > 5 || locationManager.desiredAccuracy != kCLLocationAccuracyBest {
return
}

if newLocation.horizontalAccuracy < 0 {
return
}

if currentLocation != nil && newLocation.timestamp.timeIntervalSince(currentLocation.timestamp) < 0 {
return
}

currentLocation = newLocation

print("interval: \(interval)")
print("desiredAccuracy: \(locationManager.desiredAccuracy)")
print("accuracy: \(newLocation.horizontalAccuracy)")

timer = Timer.scheduledTimer(timeInterval: 60, target: self, selector: #selector(LocationService.changeLocationAccuracy), userInfo: nil, repeats: false)
changeLocationAccuracy()
}

正如您在上面看到的,我正在过滤掉无效的位置,但问题是我的距离在不移动手机的情况下发生变化。这是我的日志数据:

interval: -0.0140599608421326
desiredAccuracy: -1.0
accuracy: 90.8123422472749
distance : 113.473282606026
-----------
interval: -0.0128610134124756
desiredAccuracy: -1.0
accuracy: 90.8123422472749
distance : 113.473282606026
-----------
interval: -0.00315600633621216
desiredAccuracy: -1.0
accuracy: 2000.0
distance : 180.768761850842
-----------
interval: -0.00381100177764893
desiredAccuracy: -1.0
accuracy: 2000.0
distance : 180.768761850842
-----------
interval: -0.0131250023841858
desiredAccuracy: -1.0
accuracy: 219.000225316427
distance : 0.763731059143118
-----------
interval: -0.0137189626693726
desiredAccuracy: -1.0
accuracy: 219.000225316427
distance : 0.763731059143118

有什么解决办法吗?提前致谢。

最佳答案

您可能只是期望比实际提供的更准确。首先,手机最初使用 GPS 以外的其他机载传感器。其次,GPS 系统本身并不是特别准确。因此,即使您是静止的,随着时间的推移,手机认为您所在的位置可能会发生微小变化,这既是因为不同的传感器预热,也仅仅是因为最准确的传感器 GPS 并不是那么准确。

关于ios - 如何过滤无效位置更新 iOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41622713/

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