2013-08-05 2 views
1

J'utilise le code suivant pour mettre à jour l'emplacement après toutes les 0,1 secondes -calculer la vitesse précise par GPS

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    CLController = [[CoreLocationController alloc] init]; 
    CLController.delegate = self; 


// set auto update timer 
    currentTimer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self 
                selector:@selector(updatestart) userInfo:nil repeats:YES]; 

} 

-(void)updatestart 
{ 

     [CLController.locMgr startUpdatingLocation]; 
} 

Et puis je suis en train de calculer la vitesse en utilisant

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation 
{ 
    [locMgr stopUpdatingLocation]; 

NSLog(@"%f",newLocation.speed); 
} 

Je reçois la vitesse en mètre/s mais après un certain temps, le processus ralentit et même lorsque j'arrête de voyager, la vitesse est calculée.

Ce que je veux est d'obtenir la vitesse précise et montrer alerte si la vitesse est supérieure à 12 km/h.

est-il une autre approche que je peux utiliser pour trouver la même chose?

Merci ..

+0

0m/s est une mesure de vitesse tout aussi valide que 12m/s. – Caleb

Répondre

3

Démarrage et arrêt du manager emplacement comme ce n'est pas la façon de le faire. Vous ne pouvez pas le forcer à donner plus de mises à jour de position. Laissez-le en cours d'exécution et faites la moyenne des mises à jour de position au fil du temps. Pour obtenir la meilleure précision, utilisez kCLLocationAccuracyBestForNavigation pour desiredAccuracy du gestionnaire emplacement. Comment pouvez-vous savoir que vous avez arrêté de bouger, ou que vous avez recommencé, si vous ne continuez pas à mesurer?

+0

Si je ne démarre pas et n'arrête pas l'emplacement de mise à jour, il ne me montre que l'emplacement mis à jour cinq fois et s'arrête après cela. – Rohan

+0

Cela fonctionne très bien maintenant. Mais le problème auquel je suis confronté est qu'il met à jour ma vitesse après un délai de 2-3 secondes. Aussi je veux mentionner que j'utilise le GPS pour aller chercher l'emplacement. Y a-t-il quelque chose que je puisse faire pour le rendre parfait? – Rohan

+0

Vous pourriez essayer d'utiliser la propriété 'speed' de' location', mais je ne suis pas sûr que ce soit plus précis. Vous devez juste attendre que le GPS obtienne une correction avant de pouvoir mesurer avec précision. –

Questions connexes