Je commence à jouer avec le CLLocationManager et j'essaie d'utiliser la méthode de rappel ci-dessous. Je suis sorti dehors pour le tester sur mon iPhone, et avec les premières mises à jour, il semble que je reçois des valeurs de charabia, comme si tout à coup ma distance est de 39 mètres, même si je n'ai pas bougé. Ou parfois, il va commencer à 5, puis sauter à 20 mètres, encore une fois sans moi déplacer n'importe où. Je suis sorti et j'ai marché, et les mises à jour du point de départ initial m'ont semblé «ok», et quand je suis revenu, je suis revenu au point de départ de 39 mètres. Je me demandais si ce que je fais ci-dessous est correct. J'ai également inclus ma méthode viewDidLoad où j'initialise mon objet CLLocationManager.Obtenir un emplacement précis avec CLLocationManager
Y at-il un moyen de s'assurer que mes premières valeurs sont exactes? Merci d'avance.
- (void)viewDidLoad
{
[super viewDidLoad];
locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
locationManager.distanceFilter = kCLDistanceFilterNone;
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
}
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{
if (startingPoint == nil) {
NSLog(@"NIL starting point");
self.startingPoint = newLocation;
}
CLLocationDistance distance = [newLocation distanceFromLocation:startingPoint];
NSString *distanceString = [[NSString alloc] initWithFormat:@"%g m", distance];
distanceLabel.text = distanceString;
[distanceString release];
numberOfUpdates++;
NSString *countString = [[NSString alloc] initWithFormat:@"%d", numberOfUpdates];
countLabel.text = countString;
[countString release];
}