2009-11-30 6 views
0

J'ai quelques problèmes avec mes événements Mapkit et userlocation. Je dois appeler une méthode lorsque l'emplacement de l'utilisateur est trouvé, cependant, en utilisant [locationManager startUpdatingLocation];, la méthode appelle trop tôt pour ce que j'essaie de faire.Y a-t-il un événement d'annotation de Mapkit quand l'épingle a fini d'animer?

Idéalement, je voudrais faire un appel une fois que l'animation de la broche de l'emplacement de l'utilisateur est terminée. Y a-t-il un moyen de surveiller cela?

Répondre

1

Dans le délégué de votre LocationManager (qui est conforme au protocole CLLocationManagerDelegate), mettre en œuvre votre appel de méthode à l'intérieur:

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

Ce sera appelé une fois l'emplacement est résolu. Vous pouvez vous assurer qu'il est dans vos tolérances de précision souhaitées avant d'agir:

if (newLocation.accuracy <= locationManager.desiredAccuracy){ 

Vous pouvez effectuer votre action après un délai pour permettre à l'animation pour l'emplacement actuel pour terminer. Apple semble utiliser typiquement entre 0.5 et 0.25 pour les durées d'animation.