Вы можете добавить проверку для newLocation.horizontalAccuracy
:
if ((newLocation.horizontalAccuracy > 0.0) && (newLocation.horizontalAccuracy < 10.0))
Или, для вашего случая:
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{
if (newLocation.horizontalAccuracy < 0) return;
NSTimeInterval locationAge = -[newLocation.timestamp timeIntervalSinceNow];
if ((locationAge > 5.0)||(newLocation.horizontalAccuracy < 0.0)||(newLocation.horizontalAccuracy > 10.0)) return;
[[self locationPoints] addObject:newLocation];
[self updateView];
}
Это (locationAge > 5.0)
состояние кажется странным. Вы действительно этого хотите? Если вы сохраните его в своем приложении, оно перестанет обновляться, если устройство потеряет надлежащий сигнал GPS для >5.0s
.
Еще одна вещь: вы помните, чтобы настроить locationManager
с помощью:
locationManager.desiredAccuracy=kCLLocationAccuracyBest;
Вы также должны знать, что это съедает достаточно батареи, но для тестирования ...