J'ai un MKMapView par lequel je laisse tomber une annotation chaque fois que la vue se charge, ou quand la méthode de classe personnalisée showLocation
est appelée.Problèmes étranges de CLLocationManager
J'ai besoin de précision pour être le meilleur
-(void)viewDidLoad {
locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
locationManager.distanceFilter = kCLDistanceFilterNone;
locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation;
[locationManager startUpdatingLocation];
}
-(IBAction) showLocation:(id) sender{
[locationManager startUpdatingLocation];
}
- (void) locationManager:(CLLocationManager *) manager
didUpdateToLocation:(CLLocation *) newLocation
fromLocation:(CLLocation *) oldLocation {
// start geocoding with newLocation coordinate which will automatically set annotation.
SVGeocoder *geocodeRequest = [[SVGeocoder alloc]
initWithCoordinate:CLLocationCoordinate2DMake(newLocation.coordinate.latitude, newLocation.coordinate.longitude)];
[geocodeRequest setDelegate:self];
[geocodeRequest startAsynchronous];
[geocodeRequest release];
[locationManager stopUpdatingLocation];
}
Ma question est de savoir quand la méthode didUpdateToLocation
appelée? Seulement après qu'un nouvel emplacement soit trouvé lorsque j'effectue [locationManager startUpdatingLocation]
?
Je suis confronté à un problème étrange lorsque l'utilisateur est en déplacement et à l'arrêt. Dites que l'utilisateur se déplace du point A-> B-> C-> D avec des intervalles de 1 min entre les points. Quand j'appelle ma méthode au point C, parfois elle renvoie les coordonnées du point A, parfois le point B et parfois le C. C'est juste aléatoire.
C'est encore plus bizarre quand je suis à l'arrêt. Je reçois des coordonnées différentes quand j'appelle la méthode showLocation
même si je suis branché sur ma maison WiFi.
Je pensais à implémenter didUpdateToLocation pour obtenir le meilleur résultat possible en 5 secondes. Si dans les 5secs, il trouve un emplacement particulier d'une précision que j'avais définie, alors utilisez la coordonnée. Sinon, utilisez le meilleur qu'il a trouvé dans le délai de 5sec. Mais comme je suis nouveau, je ne sais pas comment coder quelque chose comme ça. J'ai lu NSTimer et il semble que cela pourrait fonctionner.
Des conseils, les gars?
Merci beaucoup d'avance!