iOS查找平均速度

Posted

技术标签:

【中文标题】iOS查找平均速度【英文标题】:iOS find average speed 【发布时间】:2014-03-08 20:41:15 【问题描述】:

我已经有一些东西可以显示我当前的速度和最高速度(下面代码中的最大速度)现在我想做一些东西来计算我的平均速度和核心位置。如何?谢谢。

- (void)locationUpdate:(CLLocation *)location 
speedLabel.text = [NSString stringWithFormat:@"%.2f", [location speed]*2.236936284];

这是最高速度的浮动

   float currentSpeed = [location speed]*2.236936284;
if(currentSpeed - maxSpeed >= 0.01)
    maxSpeed = currentSpeed;
    maxspeedlabel.text = [NSString stringWithFormat: @"%.2f", maxSpeed];


【问题讨论】:

保留当前速度列表并取平均值。 【参考方案1】:

声明变量是你的 *.m 类

@implementation your_class

    CLLocationDistance _distance;
    CLLocation *_lastLocation;
    NSDate *_startDate;

在您的 initviewDidLoad 方法中将它们设置为初始值

_distance = 0;
_lastLocation = nil;
_startDate = nil;

locationUpdate: 更改为

- (void)locationUpdate:(CLLocation *)location 
    speedLabel.text = [NSString stringWithFormat:@"%.2f", [location speed]*2.236936284];
    if (_startDate == nil) // first update!
    
        _startDate = location.timestamp;
        _distance = 0;
    
    else
    
        _distance += [location distanceFromLocation:_lastLocation];
        _lastLocation = location;
        NSTimeInterval travelTime = [location.timestamp timeIntervalSinceDate:_startDate];
        if (travelTime > 0)
        
            double avgSpeed = _distance / travelTime;
            AVGspeedlabel.text = [NSString stringWithFormat: @"%.2f", avgSpeed];
            NSLog(@"Average speed %.2f", avgSpeed);
        
    

重置平均速度

_startDate = nil;
_distance = 0;

【讨论】:

我如何将平均速度放入标签中? 我也想用一个按钮重置它,我该怎么做? 谢谢,还有一个小问题,我该把声明放在哪里? 有几种可能性。其中之一 - 在更新的答案中。 我遇到了崩溃,这与此有关:double avgSpeed = _distance / [location.timestamp timeIntervalSinceDate:_startDate];【参考方案2】:

记住您与时间在一起的第一个位置。然后计算

CLLocationDistance dist = [location distanceFromLocation:initialLocation];
NSTimeInterval time = [location.timestamp timeIntervalSinceDate:initialDate];
double averageSpeed = dist/time;
// If you want it in miles per hour:
// double averageSpeed = dist/time * 2.236936284;

【讨论】:

我如何将平均速度放入标签中? 我也想用一个按钮重置它,我该怎么做? @msweet168:您将其放入标签中,就像使用当前或最大速度一样:averageLabel.text = [NSString stringWithFormat:@"%.2f", averageSpeed]。您可以通过将initialLocationinitialDate 重置为当前位置和时间戳来重置它。 我如何声明这个,我把它放在哪里?\ @MartinR averageSpeed的值是m/s,对吧?

以上是关于iOS查找平均速度的主要内容,如果未能解决你的问题,请参考以下文章

使用索引为什么能提高查询速度?

高中物理:直线运动

计算用户平均速度的最快方法是啥?

Python 和 C++ 下字符串查找速度对比,你觉得Python适合算法竞赛吗

数学小课堂:无穷小(平均速度和瞬间速度的关系)

为啥没有聚合的结束 Group By 会减慢我的查询速度?