iOS Geolocation

 Dans ce article nous allons voir comment obtenir de façon programmatique les coordonnées géographique d’un lieu depuis votre application iOS. La localisation est en enjeu important au sein d’une application. Elle a fait le succès de start-up comme Foursquare. Une bonne géolocalisation fait toute la différence, l’expérience utilisateur en est directement impactée.

 

 

Créer un nouveau projet Xcode:

Ouvrir Xcode, Créer un nouveau projet en choisissant View Base application. Nommons cette application “GPS_Location”.

Xcode Welcome page

Xcode View Based Application

Xcode crée automatiquement la structure du projet, et charge toutes les librairies nécessaires au fonctionnement de base d’une application de type View. Vous pourrez vérifier qu’une classe ViewController a bien été créée. De plus dans le dossier Resources des fichiers portant l’extension xib ont été générés.

Importer la classe de géolocalisation

Il suffit pour cela d’ajouter au projet le Core Location framework (CoreLocation.framework). Pour ce faire, il vous faut modifier le fichier GPS_LocationViewController.h  et ajouter :

GPS_LocationViewController.h
1 2 3 4 5 6 7 8 
#import <UIKit/UIKit.h> #import <CoreLocation/CoreLocation.h> @interface GPS_LocationViewController : UIViewController { CLLocationManager *locationManager; } @property (nonatomic, retain) CLLocationManager *locationManager; -(IBAction)Button:(id)sender; @end

 

Utiliser l’interface Builder

Faites un double-clique sur le fichier GPS_LocationViewController.xib pour l’ouvrir avec l’interface Builder. On va faire simple ici. On va juste afficher un bouton, qui au clic nous renverra les coordonnées géographique de la position courante.

Dans la liste à gauche (ou droite si vous l’avez déplacée 🙂 de l’interface builder, Faites donc un glisser-déposer d’un bouton (Round Rect Button) et placez le sur la page :

Xcode Bouton


Modifier le fichier GPS_LocationViewController.m

C’est le coeur même de l’application. C’est d’ici que nous allons gérer le comportement du controlleur associé au bouton. Modifier donc ce fichier et ajouter simplement :

GPS_LocationViewController.m
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 
#import "Current_LatLongViewController.h" @implementation Current_LatLongViewController @synthesize locationManager; - (void)dealloc { [super dealloc]; } - (void)didReceiveMemoryWarning { // Releases the view if it doesn’t have a superview. [super didReceiveMemoryWarning]; // Release any cached data, images, etc that aren’t in use. } #pragma mark – View lifecycle - (void)viewDidUnload { [super viewDidUnload]; } -(IBAction)Button:(id)sender { locationManager = [[CLLocationManager alloc] init]; locationManager.delegate = self; locationManager.desiredAccuracy = kCLLocationAccuracyBest; locationManager.distanceFilter = kCLDistanceFilterNone; [locationManager startUpdatingLocation]; CLLocation *location = [locationManager location]; // Configure the new event with information from the location CLLocationCoordinate2D coordinate = [location coordinate]; NSString *latitude = [NSString stringWithFormat:@"%f", coordinate.latitude]; NSString *longitude = [NSString stringWithFormat:@"%f", coordinate.longitude]; NSLog(@"dLatitude : %@", latitude); NSLog(@"dLongitude : %@",longitude); UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(50, 40, 250, 50)]; UILabel *myLabel = [[UILabel alloc] initWithFrame:CGRectMake(50, 80, 200, 50)]; UILabel *myLabel1 = [[UILabel alloc] initWithFrame:CGRectMake(50, 120, 200, 100)]; myLabel.textColor = [UIColor blackColor]; myLabel1.textColor = [UIColor blackColor]; label.backgroundColor = [UIColor clearColor]; myLabel.backgroundColor = [UIColor clearColor]; myLabel1.backgroundColor = [UIColor clearColor]; [myLabel setText:latitude]; [myLabel1 setText:longitude]; label.text = @"Current Latitude And Longitude"; [self.view addSubview:label]; [self.view addSubview:myLabel]; [self.view addSubview:myLabel1]; } - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { // Return YES for supported orientations return (interfaceOrientation == UIInterfaceOrientationPortrait); } @end

 

En compilant vous devriez connaitre rapidement votre localisation actuelle. Au fait, vous êtes où là ? 🙂

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.