2010-02-01 5 views
5

I "m avec MapKit dans ma demande et disaply l'emplacement de l'utilisateur avecRetrieve UserLocation coordination avec MapKit


[mapview setShowUserLocation:YES]; 

Je veux régler le region.center.latitude et region.center.longitude avec les coordonnées du userLocation, comment le faire

Répondre

10

Voici ma réponse, j'essaie quelque chose comme ça et son travail:


//inside my ViewDidLOad 
locManager = [[CLLocationManager alloc] init]; 
[locManager setDelegate:self]; 
[locManager setDesiredAccuracy:kCLLocationAccuracyBest]; 
[locManager startUpdatingLocation]; 

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
CLLocationCoordinate2D loc = [newLocation coordinate]; [maptView setCenterCoordiante:loc]; }
1

Je pense que cela répond à votre question: Returning Mapkit Userlocation Coordinates

(utilise le mapView.userLocation.location.coordinate.latitude et mapView.userLocation.location.coordinate.longitude properties)

puis injecter ces coordonnées dans le

-(void)setCenterCoordinate:(CLLocationCoordinate2D)coordinate animated:(BOOL)animated

de votre instance MKMapView.

+0

oui ou je peux utiliser le region.center.latitude = mapView.userLocation.location.coordinate.latitude; Je pense que cela fonctionnera bien? – ludo

+0

Hum, je ne sais pas si cela fonctionne, je vous recommande de créer un CLLocationCoordinate2D local et de l'injecter dans le sélecteur donné. Vous obtenez le contrôle sur le paramètre d'animation qui pourrait également rendre votre application plus agréable avec une animation. – yonel

+0

Je ne sais pas vraiment comment utiliser le sélecteur que vous m'avez donné mais je vais essayer, si vous avez un lien pour me montrer que ce sera bien aussi. merci – ludo

2

Pour une raison quelconque, cela ne fonctionne pas pour moi. Cela m'amène aux coordonnées (0.0000, 0.0000). Voici mon code si vous avez une chance de le vérifier. Merci pour l'aide!

[mapView setMapType:MKMapTypeStandard]; 
[mapView setZoomEnabled:YES]; 
[mapView setScrollEnabled:YES]; 
mapView.showsUserLocation=TRUE; 

MKCoordinateRegion region = { {0.0, 0.0 }, { 0.0, 0.0 } }; 

CLLocationCoordinate2D myCoord = {mapView.userLocation.location.coordinate.latitude,mapView.userLocation.location.coordinate.longitude}; 
[mapView setCenterCoordinate:myCoord animated:YES]; 

region.span.longitudeDelta = 0.01f; 
region.span.latitudeDelta = 0.01f; 
[mapView setRegion:region animated:YES]; 

[mapView setDelegate:self]; 
6

beaucoup plus facile:

-(void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation { 
MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(userLocation.location.coordinate, 1500, 1500); 
[mapView setRegion:region animated:YES]; 
} 
+2

N'oubliez pas de définir mapView.delegate! – DAS

+0

C'est la meilleure solution. Merci les gars. –