La paire latitude/longitude 0/0 se trouve sur l'équateur au sud de Greenwich, en Angleterre. Cet endroit se trouve dans le golfe de Guinée, au large de la côte ouest de l'Afrique. Si c'est là que votre pin est placé, votre mapView.userLocation n'est pas défini. Probablement que votre code ici est en cours d'exécution avant que MKMapKit ait eu la chance d'obtenir son emplacement. Qu'est-ce que vous voulez vraiment faire est d'avoir votre viewController adopter le protocole MKMapKitDelegate
, définissez la propriété .delegate
de votre point de vue sur la carte à self
, puis mettre en œuvre la méthode:
- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation
Cette méthode sera appelé lorsque le kit de carte localise la utilisateur, et vous pouvez utiliser la valeur userLocation que vous avez passé ici pour définir la région sur la carte. Cependant, jusqu'à ce que cela soit appelé la première fois, le MapView travaille toujours à se localiser, et votre question concernant sa localisation est prématurée.
En outre, votre régionThatFits à la fin est un no-op. Cette méthode ne redimensionne pas la région en place, elle renvoie effectivement une région redimensionnée, pour que vous puissiez l'utiliser comme vous le souhaitez. Vous voulez donc définir la région de votre vue cartographique sur ce que cette méthode renvoie. Comme ceci:
[mapView setRegion:[mapView regionThatFits:region] animated:TRUE];
Avez-vous vérifié que 'mapView.userLocation.location' n'est pas nul? – FelixLam
non ... je devine que l'emplacement n'a pas encore été ajouté à la carte? –