2014-07-03 36 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