For an app that does lots of calculation from the GPS, I need to get the latitude/longitude and speed every 0.5 second to be very accurate and avoid delay.
I am using:
[locationManager setDesiredAccuracy:kCLLocationAccuracyBestForNavigation];- locationManager:didUpdateToLocation:fromLocation:function to store the value in 3 variables:newLatitude,newLongitudeandnewSpeed- An
NSTimerobject that call a function every 0.5 second.
See below a graph generated by Excel representing the latitude values during 18 seconds:
We can clearly see that we have location updates every second, and not every 0.5 second as wished. I do samples driving around my office, so my speeds vary between 0 and 65 MPH. So when I am driving 50MPH, I should get different values for lat/lon/speed from the iPhone every 0.5s right?
Please tell me how I can get those location updates every 0.5s if you know anything about the accuracy with the CLLocationManager object.
Thanks!
You can't tell the location manager how often you want updates, but only respond when it chooses to give you updates. The timing of getting updates can't be counted on, it depends on the ease of finding WiFi signals and GPS signals.
[self.locationManager startUpdatingLocation];
NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(myTimerFunc) userInfo:nil repeats:YES];
- (void)myTimerFunc
{
CLLocation location = self.locationManager.location;
// do work here //
}
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
// do nothing here //
}
来源:https://stackoverflow.com/questions/6104143/iphone-cllocationmanager-updates-every-0-5-seconds