[RESOLU] Zoom sur la position actuelle sur une carte

SkateboardVSkateboardV Membre
juin 2012 modifié dans API UIKit #1
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 :


<br />
#import &quot;ViewController.h&quot;<br />
@implementation ViewController<br />
@synthesize maPosition;<br />
- (void)didReceiveMemoryWarning<br />
{<br />
	[super didReceiveMemoryWarning];<br />
	// Release any cached data, images, etc that aren&#39;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&#39;une View<br />
	mapView = [[MKMapView alloc] initWithFrame:self.view.frame];<br />
	// On veut afficher la position courante de l&#39;utilisateur<br />
	[mapView setShowsUserLocation:TRUE];<br />
	// MKMapTypeStandard est un mode d&#39;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&#39;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 &#33;= 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&#39;utilisateur (utile pour les annotations)<br />
	location = newLocation.coordinate;<br />
  <br />
	// On fait déplacer la carte vers la nouvelle position courante de l&#39;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 !

Réponses

  • La méthode locationManager:didUpdateToLocation:fromLocation:didFailWithError: n'est pas déclarée dans CLLocationManagerDelegate donc elle n'est jamais exécutée.
  • CéroceCéroce Membre, Modérateur
    Et quand appliques-tu region à  la carte ?
  • @Baarde pourtant j'arrive à  afficher les coordonnées de "description" sur mon label maPosition.. Comment faire pour qu'elle s'execute alors ?



    @Céroce ah oui, est-ce qu'il suffit de rajouter


    <br />
    <br />
    [mapView [color=#A0A000]setRegion:r[/color]egion [color=#A0A000]animated:[/color][color=#008000]TRUE[/color]];<br />
    




    après que region et span soient initialisés ?
  • BaardeBaarde Membre
    juin 2012 modifié #5
    'SkateboardV' a écrit:
    @Baarde pourtant j'arrive à  afficher les coordonnées de "description" sur mon label maPosition.. Comment faire pour qu'elle s'execute alors ?


    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.
  • Effectivement, j'ai fait une erreur de copier/coller. Merci à  vous deux pour votre aide !
  • Une dernière question, j'aimerais garder la propreté du forum alors comment on fait pour éditer le titre pour y afficher [RESOLU] ? image/rolleyes.gif' class='bbc_emoticon' alt='::)' />
  • AliGatorAliGator Membre, Modérateur
    'SkateboardV' a écrit:


    Une dernière question, j'aimerais garder la propreté du forum alors comment on fait pour éditer le titre pour y afficher [RESOLU] ? image/rolleyes.gif' class='bbc_emoticon' alt='::)' />
    Il suffit d'éditer ton premier message : quand tu édites le tout premier message d'une discussion, tu peux aussi changer le titre du sujet, et donc rajouter [RESOLU] devant !
  • SkateboardVSkateboardV Membre
    juin 2012 modifié #9
    @AliGator tu vas peut-être me prendre pour un attardé mais... Quand je clique sur "modifier" pour éditer mon premier message, (c'est bien ça qu'il faut faire ? image/xd-laugh.gif' class='bbc_emoticon' alt='xd' /> ) je n'ai pas accès au titre...



    Edit : j'ai reussi ahah ! Merci bien.
Connectez-vous ou Inscrivez-vous pour répondre.