localisation de l'utilisateur actuel iPhone coordonnées indiquant que (0,0)

voix
8

Je suis en train d'obtenir les utilisateurs latitude et longitude actuelles avec cette méthode viewDidLoad. La carte résultante est correctement indiquant l'emplacement actuel mais le NSLog montre toujours:

2009-09-19 16:45:29.765 Mapper[671:207] user latitude = 0.000000
2009-09-19 16:45:29.772 Mapper[671:207] user longitude = 0.000000

Tout le monde sait ce que je suis absent ici? Merci d'avance pour votre aide!

- (void)viewDidLoad {
    [super viewDidLoad];
    [mapView setMapType:MKMapTypeStandard];
    [mapView setZoomEnabled:YES];
    [mapView setScrollEnabled:YES];
    [mapView setShowsUserLocation:YES];

    CLLocation *userLoc = mapView.userLocation.location;
    CLLocationCoordinate2D userCoordinate = userLoc.coordinate;

    NSLog(@user latitude = %f,userCoordinate.latitude);
    NSLog(@user longitude = %f,userCoordinate.longitude);
}
Créé 19/09/2009 à 21:50
source utilisateur
Dans d'autres langues...                            


8 réponses

voix
9

La carte ne tentera pas d'obtenir l'emplacement des utilisateurs jusqu'à ce qu'il soit effectivement affiché, pour autant que je sache. Un bon test de cette est, quand pensez-vous obtenir la boîte de dialogue vous demandant s'il est OK pour l'application pour obtenir l'emplacement des utilisateurs? Dans mon expérience qui a toujours venir seulement après la carte apparaît à l'écran.

La meilleure façon d'aborder ce problème si vous devez disposer d'un emplacement au démarrage, est de mettre en œuvre le code du gestionnaire d'emplacement de base classique et obtenir l'emplacement de ce départ. Vous pouvez arrêter de recevoir des mises à jour à partir de là une fois que la carte est et obtenir d'autres changements à partir de là (bien que si vous avez besoin des mises à jour constantes, vous êtes mieux juste garder les mises à jour standards de base de l'emplacement. Si vous y pensez, quand vous avez « montre l'utilisateur emplacement » activé sur la carte utilisation ultérieure Core Localisation par votre application est essentiellement libre depuis le GPS sera tiré le tout le temps de toute façon.

Créé 20/09/2009 à 03:05
source utilisateur

voix
4

Si vous essayez d'obtenir les coordonnées utilisateur dans la méthode viewDidLoad (), il sera toujours donner 0,0 résultat, car il n'a pas encore été initialisé.

Vous devriez jeter un oeil à « Où suis - je » site d'Apple sous forme de code échantillon. Il explique ce que vous avez besoin. Vous devez utiliser CLLocationManager classe. Vous aurez également besoin de la méthode

*-(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation*

Cette méthode est appelée automatiquement à chaque fois que l'emplacement de l'utilisateur est mis à jour. Si vous utilisez un simulateur, cette méthode sera appelée une seule fois et il retourne quelques coordonnées par défaut.

J'espère que cela aide.

Créé 21/09/2009 à 06:36
source utilisateur

voix
2

D'après le document sur CLLocation , si la précision horizontale ou précision verticale est négative, cela signifie qu'il ne peut pas trouver une valeur. Je pense que ce qui se passe ici. Gardez à l' esprit que si vous regardez juste une fois, il peut vous donner une dernière position connue approximative avant même d' améliorer le résultat de précision.

Précision horizontale La latitude et la longitude de coordonnées identifier le centre du cercle et cette valeur indique le rayon de ce cercle. Une valeur négative indique que la latitude et la longitude de coordonnées ne sont pas valides.

Créé 19/09/2009 à 21:55
source utilisateur

voix
1

Comme Kendall dit, le MKMapView ne dispose pas d' un emplacement de l' utilisateur jusqu'à ce qu'il se termine le chargement et la méthode viewDidLoad est généralement trop tôt pour en faire la demande. Est de mettre en œuvre la méthode MKMapViewDelegate Une façon plus simple que d' utiliser CoreLocation -(void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation. Il vous donnera l'emplacement de l'utilisateur dès qu'il se trouve, sans avoir à faire face à un CLLocationManager.

Créé 08/01/2013 à 18:33
source utilisateur

voix
1

Vous devriez obtenir les coordonnées de CoreLocation au lieu de MapKit. MapView affichera l'emplacement de l'utilisateur après effectivement obtenu l'emplacement actuel. Avant l'emplacement est déterminé, la latitude et la longitude sont tous deux à 0. 3

Vous devez créer un instace CLLocationManager, délégué défini. Vous serez averti lorsque l'emplacement est déterminé.

Créé 20/09/2009 à 06:17
source utilisateur

voix
0

Essayez ceci dans

CLLocation *userLoc = mapView.userLocation.location;
CLLocationCoordinate2D userCoordinate = userLoc.coordinate;

NSLog(@"user latitude = %f",userCoordinate.latitude);
NSLog(@"user longitude = %f",userCoordinate.longitude);

ViewdidAppear: ou appelez effectuer seletor après un délai

Créé 05/05/2014 à 12:32
source utilisateur

voix
0

Cette réponse explique comment définir une vue sur la carte avec un emplacement de l'utilisateur:

HowTo MKMapView avec un initialise emplacement de l'utilisateur donné?

Créé 09/03/2010 à 16:52
source utilisateur

voix
-1

Ajoutez ceci à votre section viewDidLoad

mapView.showsUserLocation = YES;
Créé 02/05/2010 à 05:56
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more