2015-03-06 2 views
1

Je trouve que souvent en utilisant CLLocationManager:Filtrer les mauvais endroits de CLLocationManager

self.locationManager = [[CLLocationManager alloc] init]; 
self.locationManager.delegate = self; 
self.locationManager.desiredAccuracy = kCLLocationAccuracyBest; 
self.locationManager.distanceFilter = 10; 

et de méthode déléguée:

-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations; 

je vais obtenir des résultats qui ressemblent à la ci-dessous, même sans se déplacer du tout. Je sais que le service de localisation n'est pas toujours précis à 100% et qu'il est soumis aux conditions du réseau, mais existe-t-il un moyen de filtrer les mauvais emplacements afin que je ne finisse pas avec des points aléatoires comme celui-ci?

enter image description here

Répondre

2

C'est bizarre. Nous avons presque le même code et le mien travaille. Avez-vous exécuté [self.locationManager startUpdatingLocation] une fois?

Essayez aussi ajouter [self.locationManager startMonitoringSignificantLocationChanges]

+0

Merci pour l'astuce sur 'startMonitoringSignificantLocationChanges'. Je vais passer à cela et faire des tests. – soleil

+0

J'ai essayé de passer à 'startMonitoringSignificantLocationChanges', mais je ne reçois aucune mise à jour de localisation. Devez-vous faire quoi que ce soit d'autre pour que iOS pense qu'un changement d'emplacement est important? – soleil

+0

ceci est mon code pour initialiser mon LocationManager '- (CLLocationManager *) locationManager' ' '{ ' if (_locationManager!) { ' _locationManager = [[CLLocationManager de alloc] init]; _locationManager.delegate = self; _locationManager.desiredAccuracy = kCLLocationAccuracyBest; if ([_locationManager répondToSelector: @selecteur (requestWhenInUseAuthorization)]) { [_locationManager requestWhenInUseAuthorization]; } [_locationManager startMonitoringSignificantLocationChanges]; } return _locationManager; } – dizzyboy