Problemes avec CoreLocation

allianallian Membre
22:07 modifié dans API UIKit #1
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 :

- (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:@&quot;%g&quot;, self.startingPoint.coordinate.latitude];<br />	NSString *longitude = [[NSString alloc] initWithFormat:@&quot;%g°&quot;, self.startingPoint.coordinate.longitude];<br /><br />	NSLog(latitude);<br />	NSLog(longitude);<br />	self.title = @&quot;Near You&quot;;<br />&nbsp; &nbsp; [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 />	&nbsp;  didFailWithError:(NSError *)error {<br />	NSString *errorType = (error.code == kCLErrorDenied) ?<br />	@&quot;Access Denied&quot; : @&quot;Unknown Error&quot;;<br />	UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@&quot;Error getting location&quot; message:errorType delegate:nil cancelButtonTitle:@&quot;Okay&quot; otherButtonTitles:nil];<br />	[alert show];<br />	[alert release];<br />}<br />


Quelqu'un aurait il une idée ?
Merci de votre aide

Réponses

  • MalaMala Membre, Modérateur
    22:07 modifié #2
    dans 1241691688:

    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°

    En même temps c'est pas ce que tu lui demandes en faisant un %g?


  • AliGatorAliGator Membre, Modérateur
    22:07 modifié #3
    Oui l'erreur ne vient pas des valeurs retournées, mais de ta façon de les afficher. Avec le NSLog et le initWithFormat, surtout avec un format %g qui justement est fait pour afficher tes valeurs en exponentielle... Alors qu'en réalité tes coordinate.latitue et coordinate.longutude ont la bonne valeur.

    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.
  • allianallian Membre
    22:07 modifié #4
    cool merci pour l'aide, je m'étais inspiré d'un exemple d'un bouquin "Beginning iPhone Developement" où ils faisaient comme ça et récupéraient les bonnes valeurs !! ils ont du faire un oubli dans leur exemple ou je ne sais pas.

    Alors maintenant je peut utiliser mes latitudes longitudes en tant que "Double" ou pas ?
  • Philippe49Philippe49 Membre
    22:07 modifié #5
    Oui je suis en train de parcourir ce livre il y a quelques "coquilles", pas nombreuses. Mais c'est un bon livre pour débuter.


    %g affiche un flottant "au mieux". 
    %f l'écrit en décimale.
    %e l'écrit en notation scientifique.
  • allianallian Membre
    22:07 modifié #6
    %f fonctionne très bien.
    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.
Connectez-vous ou Inscrivez-vous pour répondre.