gpt4 book ai didi

ios - 有没有办法让 GPS 给出的位置更准确?

转载 作者:行者123 更新时间:2023-11-28 05:52:29 25 4
gpt4 key购买 nike

我正在为具有持久对象的 IOS 制作 AR 应用程序。我放入 AR 场景中的每个对象都存储有 GPS 位置。问题是:准确性。我正在使用 swift 的核心定位工具包,但在室内我无法获得低于 4-6 的精度(距离正确位置 4-6 米的误差)。然后,一切都在重新加载场景时发生在其他地方。

我已经在用了

locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation

我尝试获取多个样本来进行加权平均,但我注意到在一些样本之后获得的位置是相同的(准确度也是 4-6)。可能 swift 自己会这样做。

有什么我想念的吗?获得更好方法的数学方法?或者没有办法让它变得更好?

编辑

某个位置的速度如何?我应该更信任那些速度更快的人还是根本不相关?

最佳答案

我尝试了以下方法来跳过冗余位置更新触发器。此方法包括将最新的位置更新保存在您的 UserDefaults 中。下次收到位置更新时,会在接受该位置作为有效位置更新之前进行一系列检查,如位置准确性、更新时间戳、距离等。希望这会有所帮助。

func setCurrentLocation(location: CLLocation) {

let encodedLocation = NSKeyedArchiver.archivedData(withRootObject: location)
UserDefaults.standard.set(encodedLocation, forKey: UserDefaultKey.previousVisitedLocation)
}

func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {

guard locations.count > 0 else {
return
}

guard let location = locations.last else {
return
}

guard location.horizontalAccuracy > 0 else {
return
}

guard location.horizontalAccuracy < DISTANCE_LIMIT else { //DISTANCE_LIMIT is the value you have set for your distance filter
return
}

let previousLocationEncoded = UserDefaults.standard.object(forKey: UserDefaultKey.previousVisitedLocation) as? Data

if previousLocationEncoded == nil {

setCurrentLocation(location: location)

//do your tasks

} else {

let previousLocationDecoded = NSKeyedUnarchiver.unarchiveObject(with: previousLocationEncoded!) as! CLLocation

let distanceBetweenVisits = previousLocationDecoded.distance(from: location)

if distanceBetweenVisits > DISTANCE_LIMIT {

let timeIntervalBetweenVisits = location.timestamp.timeIntervalSince(previousLocationDecoded.timestamp)

guard timeIntervalBetweenVisits > 0 else {
return
}

setCurrentLocation(location: location)

//do your tasks
}
}
}

关于ios - 有没有办法让 GPS 给出的位置更准确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52416273/

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