[RESOLU] Zoom sur la position actuelle sur une carte
SkateboardV
Membre
Bonjour,
j'ai fait rapidement une petite application qui affiche une carte avec un label qui affiche les coordonnées de la position. Cependant, au démarrage de l'application, je vois la France dans son ensemble et j'aimerais pouvoir régler le zoom initial.
J'ai tenté plusieurs choses mais aucune des solutions trouvées ne marchent..
Voil mon code :
Merci de votre aide !
j'ai fait rapidement une petite application qui affiche une carte avec un label qui affiche les coordonnées de la position. Cependant, au démarrage de l'application, je vois la France dans son ensemble et j'aimerais pouvoir régler le zoom initial.
J'ai tenté plusieurs choses mais aucune des solutions trouvées ne marchent..
Voil mon code :
<br />
#import "ViewController.h"<br />
@implementation ViewController<br />
@synthesize maPosition;<br />
- (void)didReceiveMemoryWarning<br />
{<br />
[super didReceiveMemoryWarning];<br />
// Release any cached data, images, etc that aren't in use.<br />
}<br />
#pragma mark - View lifecycle<br />
- (void)viewDidLoad<br />
{<br />
[super viewDidLoad];<br />
locationManager = [[CLLocationManager alloc] init];<br />
if ([CLLocationManager locationServicesEnabled])<br />
{<br />
locationManager.delegate = self;<br />
locationManager.desiredAccuracy = kCLLocationAccuracyBest;<br />
locationManager.distanceFilter = 100.0f;<br />
[locationManager startUpdatingLocation];<br />
}<br />
<br />
// Initialisation classique d'une View<br />
mapView = [[MKMapView alloc] initWithFrame:self.view.frame];<br />
// On veut afficher la position courante de l'utilisateur<br />
[mapView setShowsUserLocation:TRUE];<br />
// MKMapTypeStandard est un mode d'affichage parmis 3 disponibles<br />
// (les deux autres sont MKMapTypeSatelitte et MKMapTypeHybrid)<br />
[mapView setMapType:MKMapTypeStandard];<br />
// Le fait de setter le Delegate permet d'appeler méthodes implémentées dans cette classe<br />
[mapView setDelegate:self];<br />
// On ajoute la View du mapView a la View du controlleur courant afin de faire afficher la carte<br />
[self.view insertSubview:mapView atIndex:0];<br />
}<br />
- (void)viewDidUnload<br />
{<br />
[self setMaPosition:nil];<br />
[super viewDidUnload];<br />
// Release any retained subviews of the main view.<br />
// e.g. self.myOutlet = nil;<br />
}<br />
- (void)viewWillAppear:(BOOL)animated<br />
{<br />
[super viewWillAppear:animated];<br />
}<br />
- (void)viewDidAppear:(BOOL)animated<br />
{<br />
[super viewDidAppear:animated];<br />
}<br />
- (void)viewWillDisappear:(BOOL)animated<br />
{<br />
[super viewWillDisappear:animated];<br />
}<br />
- (void)viewDidDisappear:(BOOL)animated<br />
{<br />
[super viewDidDisappear:animated];<br />
}<br />
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation<br />
{<br />
// Return YES for supported orientations<br />
return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);<br />
}<br />
- (void)locationManager:(CLLocationManager *)manager<br />
didUpdateToLocation:(CLLocation *)newLocation<br />
fromLocation:(CLLocation *)oldLocation<br />
{<br />
maPosition.text = [newLocation description];<br />
}<br />
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation<br />
didFailWithError:(NSError *)error<br />
{<br />
maPosition.text = [error description];<br />
// On sauvegarde la nouvelle position courante de l'utilisateur (utile pour les annotations)<br />
location = newLocation.coordinate;<br />
<br />
// On fait déplacer la carte vers la nouvelle position courante de l'utilisateur<br />
MKCoordinateRegion region;<br />
region.center = location;<br />
// Le span est le niveau de zoom<br />
MKCoordinateSpan span;<br />
span.latitudeDelta = .005;<br />
span.longitudeDelta = .005;<br />
region.span = span;<br />
// Affichage des coordonnées<br />
}<br />
@end<br />
<br />
Merci de votre aide !
Mots clés:
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
@Céroce ah oui, est-ce qu'il suffit de rajouter
après que region et span soient initialisés ?
Bien sûr que ça s'affiche vu que ton avant-dernière méthode est correctement nommée. Par contre ce n'est pas le cas de la dernière méthode, celle dans laquelle tu changes la région de la carte (à condition, en effet, de rajouter le code adéquat). Si tu veux que ta méthode soit exécutée, nomme la correctement, c'est-à -dire comme une des méthodes décrites dans CLLocationManagerDelegate.
Edit : j'ai reussi ahah ! Merci bien.