CLLocationManager sans Device

Le Simulator lancé à partir de Xcode est bien pratique car on n’a pas toujours son iPhone sous la main pour faire des tests.
Lorsque l’on utilise CoreLocation sans un iPhone mais avec le simulateur et que l’on cherche à avoir notre position actuelle, on récupère toujours les mêmes latitude et longitude : il s’agit tout simplement des coordonnées GPS d’Apple Inc !

Apple Inc.
1, infinite loop Cupertino
CA 95014

Lorsque l’on débugge sans device (= sans iPhone) des calculs de distances entre notre position actuelle et d’autres coordonnées GPS, on se retrouve avec des distances vraiment énormes (sauf si vous habitez à Cupertino !).

Ces distances énormes peuvent être pénibles lorsque l’on cherche par exemple à classer différentes coordonnées GPS par ordre de proximité, on préfère avoir des distances cohérentes pendant le débug afin de voir que tout se passe correctement…

Pour cela on peut par exemple regarder sa position actuelle sur Google Maps et récupérer la latitude et la longitude.

Ensuite il suffit d’utiliser les directives de compilateur comme ci-dessous :

-(void)locationManager:(CLLocationManager*)manager  didUpdateToLocation:(CLLocation*)newLocation  fromLocation:(CLLocation*)oldLocation
{
CLLocation *myLocation;
[locationMgr stopUpdatingLocation];
#if  TARGET_IPHONE_SIMULATOR // je mets en dur ma position pour ne pas avoir  le "1 infinite loop" d'Apple quand je suis en Simulator
myLocation = [[CLLocation alloc] initWithLatitude:-23.532787 longitude:-46.660141];
#else
myLocation = newLocation;
#endif
}

Petit rappel : pour utiliser CoreLocation, ne pas oublier de rajouter dans le .h l’import de CoreLocation.h et le delegate de CoreLocation

  • Trackback ( 0 )
  • Commentaires ( 0 )
  1. Aucun commentaire pour l'instant

  1. Aucun trackback pour l'instant

Utiliser le SDK 3.0 avec un iPhone sous OS 3.0.1