gpt4 book ai didi

ios - 测量两个位置之间的距离不准确

转载 作者:行者123 更新时间:2023-11-30 12:10:13 24 4
gpt4 key购买 nike

我试图获取两个位置之间的距离,但我总是得到错误的值。代码如下:

var startLoction: CLLocation!
var startLoction: CLLocation!

@IBAction func getCurrLocation(){
startLoction = currLocation

}

func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
currLocation = locations.last!

if currLocation.horizontalAccuracy > 0{

var distance = CLLocationDistance(DBL_MAX)
if let location = self.startLoction {
distance = currLocation.distance(from: location)
realTimeDistanceLabel.text = String(format: "%.2f", distance)
}
}
}

问题:1.当我保持静止时,距离有时会增加,可能比15米还要大。它总是从一个大数字开始2.当我走出10或20米,然后直走回来时,距离有时会增加但不会减少。3. 当我绕一个大圈时,距离会相对变得更准确一点。

我还尝试添加 currLocation.horizontalAccuracy > 0 && currLocation.horizontalAccuracy < 100 ,也尝试过prevLocation >= (currLocation.horizontalAccuracy * 0.5从 stackOverflow 的答案来看,我仍然无法获得准确的值。

还有其他想法可以使其正确吗?

谢谢。

最佳答案

使用时打开核心位置开关,花一段时间对设备位置进行三角测量,以便需要一段时间才能稳定下来。但您也会发现它在某些位置/条件下可能会失去准确性,并且会始终尝试提高准确性。然后,设备将改变对“您所在位置”的想法,以及是否在您的方法之后执行此操作

@IBAction func getCurrLocation() { ... }

被调用,自然会看起来好像设备已经移动了。

为了减少这种情况发生的影响,您不仅可以测试 currLocation.horizo​​ntalAccuracy > 0 (因此它是有效读数),还可以测试它小于给定的正值(尽管这会带来它自己的问题 -见下文)。设备当前的水平位置可能介于水平精度属性所报告的不确定性半径的正负之间(不确定性半径始终为正数。如果为负数,则所有赌注都会失败,设备本质上是在说“等等,我还不能确定我在哪里”)。

实际上,虽然为 currLocation.horizo​​ntalAccuracy 设置上限会证明问题,但它可能不是您想要的,因为这样您的 UI 只能在 Core Location 知道准确度大于 x 的条件下工作。通常您不希望以这种方式限制 UI。

关于ios - 测量两个位置之间的距离不准确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46156535/

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