2010-06-25 199 views
0

基本上,我的應用程序中的位置控制器正常工作。但是,如果它運行了很長時間,它就會在不承認它的情況下出錯。我認爲gps緩衝區溢出或那種。GPS獲取錯誤位置

這裏是我的didUpdate-事件

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

//nonvalid 
if (signbit(newLocation.horizontalAccuracy)) 
    return; 

//0.0 is no valid location here 
if ((abs(newLocation.coordinate.latitude) < 1.0e-05) || (abs(newLocation.coordinate.longitude) < 1.0e-05)) 
    return; 

if (newLocation.horizontalAccuracy > DBL_MAX) 
    return; 


@synchronized(self) 
{ 
    currentCoordinate.latitude = newLocation.coordinate.latitude; 
    currentCoordinate.longitude = newLocation.coordinate.longitude; 
} 

}

代碼有可能刷新位置緩存? 或用三角測量值來控制位置?

+0

只要添加標籤「iphone」,就不必在標題中包含「iPhone」。 :) – Emil 2010-06-25 12:43:24

+0

你在說多久?這似乎不太可能,這不會完全由蘋果測試;) – deanWombourne 2010-06-25 13:33:04

回答

1

您還應該測試您的位置數據的年齡。這是刷新緩存最接近的事情(這是不可能的)。檢查timestamp屬性並拒絕更新,如果它太舊。

// check that the location data isn't older than 60 seconds 
if ([newLocation.timestamp timeIntervalSinceReferenceDate] < [NSDate timeIntervalSinceReferenceDate] - 60) { 
    return; 
}