Reputation: 173
I'm currently working on an app that uses CLLocationManager with the lowest accuracy (kCLLocationAccuracyThreeKilometers). However, once every couple minutes I need to get an accurate location of the user, so I set the accuracy to kCLLocationAccuracyBest when a timer expires.
Obviously, CLLocationManager starts updating the location, going from an inaccurate location to more accurate locations in steps. The problem is, however, that I don't know how to detect when the optimal location accuracy has been reached, so I never know when I have the best location to work with.
Does anybody know a solution to this problem? It would be highly appreciated.
Upvotes: 4
Views: 7615
Reputation: 69499
IN the CLLocationManagerDelegate
method locationManager:didUpdateLocations:
look at the horizontalAccuracy
of CLLocation
. This will give you the radius in meters.
As stated in documentation:
The radius of uncertainty for the location, measured in meters. (read-only)
The location manager will keep trying in getting the best accuracy as possible, so you will have to decide when the location is accurate enough.
Upvotes: 9
Reputation: 1037
Similar functionality is implemented in detail by Apple in the sample project "LocateMe". Check out GetLocationViewController from LocateMe here: https://developer.apple.com/library/ios/samplecode/locateme.
Upvotes: 2