ios位置跟踪。距离,速度,时间不一致

时间:2014-07-03 18:29:51

标签: ios location

我正在使用IOS locationManager来跟踪位置。总的来说,它运行良好,我在迭代的基础上接收距离,速度和秒数,通常每秒读取1次。

我在高水平上注意到的一点是,总时间与预期速度的总距离不匹配,总是很低。例如,步行1英里可能具有大约7分钟的相关时间。我希望这会超过20-30分钟。

纵观数据,这些数值似乎都是合理的,但长期的总和只是没有意义。我正在使用BestAccuracy来获取GPS信号,所以我不认为这会有很多不足。

有时甚至会有很多昙花一现的昙花一现。像100米距离,在5秒钟的窗口,以2mph的步行速度。有了这些,我认为GPS只是重新定位。但这并不一定意味着其余的都是100%的。是否应该过滤这些极端情况?

下面的代码显示每个都是单独计算的,而不是相互计算的。我应该用两个来计算第三个吗?即时间=距离/速度或类似。

- (void)locationManager:(CLLocationManager *)manager
        didUpdateLocations:(NSArray *)locations {

    for(int i = 0; i < [locations count]; i++){
       CLLocation *newLocation = [locations objectAtIndex:i];

       // meters will be set on every item but very first location
       CLLocationDistance meters = (oldLocation != nil ? [newLocation distanceFromLocation:oldLocation] : 0);

       // seconds since now
       NSTimeInterval howRecent = [newLocation.timestamp timeIntervalSinceNow];

       // seconds since last event, float level seconds with good precision
       double eventDateMilli = [newLocation.timestamp timeIntervalSince1970];
       double oldLocationMilli = [oldLocation.timestamp timeIntervalSince1970];
       NSTimeInterval secondsBetween = fabs(eventDateMilli - oldLocationMilli);

       currentSpeed =  (newLocation.speed < 0 ? 0 : newLocation.speed);

       // we now have meters, currentSpeed, secondsBetween
       //   ie, distance, speed, time

       // save to network, etc, for analysis and summation


       oldLocation = newLocation;
   }
}

1 个答案:

答案 0 :(得分:0)

您是否在后台使用位置服务?如果是这样,问题可能是位置服务刚刚关闭。您应该将pausesLocationUpdatesAutomatically的{​​{1}}属性设置为CLLocationManager。此外,请确保Info.plist文件中包含NO密钥,并在其数组中包含UIBackgroundModes作为值。