2011-06-18 8 views
0

Dans mon application, j'utilise LocationManger pour obtenir l'emplacement, Aussi je veux calculer DISTANCE, SPEED et TIME.iphone Calcul de la vitesse GPS

De gestionnaire de la position Je suis obtenir le temps et la distance avec succès, Mais quand je calcule la vitesse à partir des coordonnées, il montre des valeurs erronées.

Pour obtenir l'emplacement, j'utilise le code suivant.

CLLocationManager *locManager ; 
float fltDistanceTravelled; 
double calculatedSpeed; 

//=============== 
locManager=[[CLLocationManager alloc] init]; 
locManager.delegate=self; 
locManager.distanceFilter=25.0f; 
locManager.desiredAccuracy=kCLLocationAccuracyBestForNavigation; 
[locManager startUpdatingLocation]; 
//===================== 

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation 
{ 
    if(newLocation && oldLocation) 
    { 
     // getting distance 
     fltDistanceTravelled +=[self getDistanceInKm:newLocation fromLocation:oldLocation]; 
    } 
    if(oldLocation != nil)   
    { 
     CLLocationDistance distanceChange = [newLocation getDistanceFrom:oldLocation]; 
     NSTimeInterval sinceLastUpdate = [newLocation.timestamp timeIntervalSinceDate:oldLocation.timestamp]; 
     // calculate speed 
     calculatedSpeed= (distanceChange/sinceLastUpdate) * 3.6;  
    } 
} 

mais ce code renvoie des valeurs erronées de calculateSpeed ​​(speed) de la voiture. s'il vous plaît aidez-moi dans le scénario ci-dessus merci d'avance

+1

s'il vous plaît formater correctement votre question – PengOne

+0

désolé pour cela .. je l'ai maintenant formaté ... toute aide? – nivrutti

Répondre

0

Vous obtenez déjà les données de vitesse dans la méthode de délégué.

CLLocation a une speed propriété

Plutôt que d'essayer de calculer vous-même, juste obtenir de newLocation.speed.

+0

Je reçois le même, mais parfois il renvoie des valeurs erronées J'utilise le code suivant pour calculer les vitesses. CLLocationDistance distanceChange = [newLocation getDistanceFrom: oldLocation]; NSTimeInterval sinceLastUpdate = [newLocation.timestamp timeIntervalSinceDate: oldLocation.timestamp]; // calculer la vitesse calculateSpeed ​​= (distanceChange/sinceLastUpdate) * 3.6; – nivrutti

+0

@nivrutti Le point que j'essayais de faire est que vous n'avez pas besoin de calculer la vitesse - vous pouvez l'obtenir directement à partir de la propriété 'speed' de' CLLocation'. – Abizern

+0

merci @Abizern ok je vais utiliser seulement la vitesse GPS dans mon application, mais parfois il retourne moins les valeurs – nivrutti