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
Aucun commentaire pour l'instant