résumé:
Voici un premier exemple d'application pour iPhone. Nous allons simplement afficher une carte Google Maps centrée sur un point.
pré-requis:
Développement sur iPhone avec XCode en Objective-C .
Introduction
L'affichage d'une carte Google Maps dans une application pour iPhone est assez similaire à celui sur Android. Il suffit de créer un projet, de déclarer une MapView et de la centrer avec le bon niveau de zoom.
Préparation du projet
Evidemment pour mettre en oeuvre ce tutoriel, il est nécessaire de posséder un Mac, car l'outil de développement pour iPhone s'installe exclusivement sur cette plateforme. Cet outil se nomme XCode, on le trouve sur cette page. Une fois installé , créez un nouveau projet pour iPhone de type Window based application ; il s'agit d'une version brute de projet, sans template en tout genre. Cela nous permettra de mieux comprendre les tâches à effectuer.
Pour utiliser les fonctionnalités des cartes dans une application iPhone, il faut ajouter le framework MapKit au projet :
Un peu de code
Nous aurons dans ce projet, que j'ai appelé MapView, deux classes importantes MapViewAppDelegate qui lance l'appli et donne la main au controleur de vue MapViewController. Ces fichiers ont l'extension .m, les .h étant leur déclaration.
Voici le fichier MapViewAppDelegate.h qui declare une fenêtre seulement :
@interface MapViewAppDelegate : NSObject <UIApplicationDelegate> { UIWindow *window; } @property (nonatomic, retain) IBOutlet UIWindow *window; @end
et voici le fichier MapViewAppDelegate.m
#import "MapViewAppDelegate.h" #import "MapViewController.h" @implementation MapViewAppDelegate @synthesize window ; MapViewController *mp ; - (void)applicationDidFinishLaunching:(UIApplication *)application { mp = [[MapViewController alloc] initWithNibName:nil bundle:nil]; [window addSubview:mp.view]; [window makeKeyAndVisible]; } - (void)dealloc { [mp release]; [window release]; [super dealloc]; } @end
On voit que dans la méthode applicationDidFinishLaunching on ajoute la vue du controleur MapViewController à la fenêtre principale.
Maintenant voyons la classe qui affiche la carte.
Dans MapviewController.h, on déclare hériter de MKMapViewDelegate et on déclare un objet MapView :
#import <MapKit/MapKit.h> @interface MapViewController : UIViewController <MKMapViewDelegate> { MKMapView *mapView; } @property (nonatomic, retain) IBOutlet MKMapView *mapView; @end
Passons à la classe maintenant :
#import "MapViewController.h" @implementation MapViewController @synthesize mapView; - (void)viewDidLoad { [super viewDidLoad]; mapView.showsUserLocation = YES; mapView =[[MKMapView alloc] initWithFrame:self.view.bounds]; mapView.mapType=MKMapTypeStandard; mapView.delegate = self ; mapView.zoomEnabled = TRUE ; MKCoordinateRegion region ; MKCoordinateSpan span; span.latitudeDelta=0.1; span.longitudeDelta=0.1; CLLocationCoordinate2D location= mapView.userLocation.coordinate ; location.latitude = 43.578059; location.longitude = 1.40307; region.span=span; region.center=location; [mapView setRegion:region animated:TRUE]; [mapView regionThatFits:region]; [self.view insertSubview:mapView atIndex:0]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; } - (void)viewDidUnload { self.mapView = nil; } - (void)dealloc { [mapView release]; [super dealloc]; } @end
Tout se passe dans la méthode viewDidLoad. La syntaxe est assez claire : on initialise des attributs de la carte, on crée une Region à partir de coordonnées GPS et avec une taille (span, niveau de zoom de base) puis on affiche cette MapView.
et voici le résultat :
Conclusion
Nous venons donc de créer une application avec une carte Google Maps intégrée. Ce n'est pas trés compliqué, hormis le fait de jongler avec multiples langages, mais les principes restent les mêmes.
Auteur : Loïc - loic.goblet [ at ] gmail.com
