gpt4 book ai didi

iphone - 使用 CLLocationManager 时查找速度时出现问题

转载 作者:行者123 更新时间:2023-12-03 19:42:01 25 4
gpt4 key购买 nike

我正在 iPhone 中开发速度计应用程序。我使用 CLLocationManager(基于 GPS)来测量车辆的速度。但我没有得到准确的速度。我已经尝试了各种 stackoverflow 讨论中给出的所有过滤方法。但我没有得到任何改善。有时,速度会达到更大的值(>400kmph)。

我不知道出了什么问题。请向我建议任何代码以获得准确的速度。

提前致谢,

我关注了下面提到的堆栈溢出讨论

Measuring velocity via iPhone SDK

Optimizing CLLocationManager/CoreLocation to retrieve data points faster on the iPhone

CLLocation speed

Why is my CLLocation speed so inaccurate?

我目前已经实现了以下代码:

//locationManager declaration in ViewDidLoad

locManager=[[CLLocationManager alloc]init];
locManager.delegate =self;
[locManager startUpdatingLocation];


- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {

NSTimeInterval locationAge = abs([newLocation.timestamp timeIntervalSinceNow]);

if (locationAge > 5.0) return;
if (newLocation.speed < 0 || newLocation.horizontalAccuracy < 0) return;
if ((newLocation.horizontalAccuracy < (oldLocation.horizontalAccuracy - 10.0)) || (newLocation.horizontalAccuracy < 50.0)|| (newLocation.horizontalAccuracy <= 150.0))
{
if(oldLocation != nil)
{
CLLocationDistance distanceChange = [newLocation distanceFromLocation:oldLocation];

NSTimeInterval sinceLastUpdate = [newLocation.timestamp timeIntervalSinceDate:oldLocation.timestamp];


double calculatedSpeed;
calculatedSpeed = (distanceChange / sinceLastUpdate)*3.6; // to convert the speed into kmph.

}
}

}

最佳答案

即使您不喜欢内置的速度功能,也可以轻松推出自己的功能。

速度是距离随时间的变化,对吗?

如果您有两个 CLLocation,您可以执行以下操作:

CLLocationDistance distance = [aLocation distanceFromLocation:bLocation];

distance 现在是这两点之间距离的 float (以米为单位)。这两个 CLLocations 也有 timestamp 属性,对吗?包含 NSDate 对象。嗯...

NSTimeInterval timediff = [aDate timeIntervalSinceDate:bDate];

timediff 是以秒为单位的差异。

因此,这些点之间的平均速度(以米每秒为单位)是 distance 除以 timediff。您现在可以像获取位置更新的频率一样准确地计算瞬时速度。

我想这就是获取您所收到的 CLLocation 对象的 speed 属性所发生的一切。但是,嘿,如果您想更接近数学,那就继续吧。

从那里,您可以转换为您喜欢的任何单位。一英里有 1609.344 米。一小时有 3600 秒。

现在:这与任何纯粹基于 GPS 的速度计算一样有缺陷,因为您不会获得位置更新的完美间隔的刻度线,有时它们会出错。如果您失去 GPS 信号并且设备退回到手机信号塔三角测量,则可能会使您偏离某个地方的道路,并且看起来就像您绑在火箭包上到那里快。

关于iphone - 使用 CLLocationManager 时查找速度时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6264252/

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