2014-07-03 33 views
0

我正在使用IOS locationManager来跟踪位置。总体来说,它运行良好,我以每秒1次读数的迭代方式获得距离,速度和秒数。ios位置跟踪。距离,速度,时间不一致

我注意到高层次的一件事是总时间与预期速度的总距离不匹配,总是低。例如,步行1英里可能有约7分钟的相关时间。我会更期待20-30分钟的时间。

从数据看,这些数值看起来都很合理,但长期的总和没有意义。我正在使用BestAccuracy并获取GPS信号,所以我不会想象它会有太大的改变。

有时候会出现一些闪烁的光点。就像100米距离,在5秒窗口,以每小时2英里的速度。有了这些,我假设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; 
    } 
} 

回答

0

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

+0

位置服务绝对在后台运行。我有一个数据库完整的数据,我正在看,并试图了解结果。 – Miro