Problemes avec CoreLocation
Bonjour,
je suis entrain de plancher sur la localization dans mon appli, à terme pour qu'elle me retourne d'après les coordonnées contenues dans une base de données, les lieux se situant dans un certain rayon autour du téléphone.
Mon problème vient des valeurs sensées êtres en dégrées ° retournées par le GPS. Elle sont avec des exponentielles, par exemple : -7.64455e-199°
Je ne comprends pas pourquoi, et en calculant sauf erreur de ma part je ne tombe pas sur la valeur qui devrait être d'à peu prés 37° (valeur que me retourne l'appli LocateMe d'Apple)
Voici mon code :
Je vérifie mes valeurs dans le log.
J'ai aussi ces méthodes :
Quelqu'un aurait il une idée ?
Merci de votre aide
je suis entrain de plancher sur la localization dans mon appli, à terme pour qu'elle me retourne d'après les coordonnées contenues dans une base de données, les lieux se situant dans un certain rayon autour du téléphone.
Mon problème vient des valeurs sensées êtres en dégrées ° retournées par le GPS. Elle sont avec des exponentielles, par exemple : -7.64455e-199°
Je ne comprends pas pourquoi, et en calculant sauf erreur de ma part je ne tombe pas sur la valeur qui devrait être d'à peu prés 37° (valeur que me retourne l'appli LocateMe d'Apple)
Voici mon code :
- (void)viewDidLoad {<br /> self.locationManager = [[CLLocationManager alloc] init];<br /> locationManager.delegate = self;<br /> locationManager.desiredAccuracy = kCLLocationAccuracyBest;<br /> [locationManager startUpdatingLocation];<br /> NSString *latitude = [[NSString alloc] initWithFormat:@"%g", self.startingPoint.coordinate.latitude];<br /> NSString *longitude = [[NSString alloc] initWithFormat:@"%g°", self.startingPoint.coordinate.longitude];<br /><br /> NSLog(latitude);<br /> NSLog(longitude);<br /> self.title = @"Near You";<br /> [locationManager stopUpdatingLocation];<br /><br /> [super viewDidLoad];<br /><br />}
Je vérifie mes valeurs dans le log.
J'ai aussi ces méthodes :
#pragma mark -<br />#pragma mark CLLocationManagerDelegate Methods<br /><br />- (void)locationManager:(CLLocationManager *)manager<br /> didUpdateToLocation:(CLLocation *)newLocation<br /> fromLocation:(CLLocation *)oldLocation {<br /> if (oldLocation != newLocation)<br /> {<br /> self.startingPoint = newLocation;<br /> }<br />}<br /><br />- (void)locationManager:(CLLocationManager *)manager<br /> didFailWithError:(NSError *)error {<br /> NSString *errorType = (error.code == kCLErrorDenied) ?<br /> @"Access Denied" : @"Unknown Error";<br /> UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error getting location" message:errorType delegate:nil cancelButtonTitle:@"Okay" otherButtonTitles:nil];<br /> [alert show];<br /> [alert release];<br />}<br />
Quelqu'un aurait il une idée ?
Merci de votre aide
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
En même temps c'est pas ce que tu lui demandes en faisant un %g?
C'est comme quand tu lui demandes d'afficher (par NSLog par ex) un entier alors qu'en fait tu lui passes un flottant, ou l'inverse... la valeur réelle aura beau être la bonne, à l'affichage du NSLog il va pas t'afficher ce que tu attends puisque tu ne lui aura pas indiqué le bon type de données à afficher... Bah là c'est pareil :P
Donc tes valeurs sont bonnes, c'est leur formattage et leur affichage dans le NSLog qui est mal prévu.
Alors maintenant je peut utiliser mes latitudes longitudes en tant que "Double" ou pas ?
%g affiche un flottant "au mieux".
%f l'écrit en décimale.
%e l'écrit en notation scientifique.
Par contre j'ai un peu lutté sur le fait que la méthode
- (void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation
mettent du temps à trouver les coordonnées et que par conséquent elles sont nulles au moment du viewDidLoad, donc si quelqu'un à un jour des soucis pensez à appeler les méthodes voulues à la fin de cette méthode, une fois que les coordonnées GPS sont bien récupérées.
Voila j'espère que ça pourra aider quelqu'un.
J'ai presque fini tout ce qui concerne la partie GPS de mon appli, maintenant je voudrais sauvegarder certains endroits comme des favoris, je vais si j'ai bien compris d'après vos réponses dans un autre topic sauvegarder ces données dans ma bd.