2010-12-14 57 views
0

J'ai eu beaucoup de mal à comprendre pourquoi distanceFromLocation ne calcule pas la distance correcte pour deux CLLocations. Le résultat calculé est un nombre WAY supérieur à la distance réelle, mais les deux emplacements semblent être des emplacements valides.DistanceFromLocation produisant une distance extrêmement grande (incorrecte)

Tout d'abord, voici les deux endroits:

SITUATION 1: < 44,56697840, -69,55759810> +/- 0.00m (vitesse -1.00 mps/cours -1,00) @ 2010-12 -13 21:12:03 -0500
LOCATION 2: < 44,31400400, -69.79157000> +/- 0.00m (vitesse -1.00 mps/cours -1.00) @ 2010-12-13 21:12: 03 -0500

Et voici le code où Location1 et Location2 sont déclarés. Je l'ai vérifié que ce sont les valeurs correctes, mais je ne peux toujours pas comprendre cela

CLLocation *newLocation = [[CLLocation alloc] 
    initWithLatitude:[latitude doubleValue] 
    longitude:[longitude doubleValue]]; 
    // CURRENT LOCATION (OR SEARCHED LOCATION) 

double dLat = 0; 
int tmpDistance = 0; 
id returnId = nil; 

id tmp = [featuredResults objectAtIndex:i]; 
CLLocation *newLocation2 = [[CLLocation alloc] 
    initWithLatitude:[[tmp valueForKey:@"lat"] doubleValue] 
    longitude:[[tmp valueForKey:@"lng"] doubleValue]]; 

dLat = [newLocation distanceFromLocation:newLocation2]; 

La valeur que je reçois pour Dlat est 330.707.027, ce qui est le mauvais sens. Est-ce que quelqu'un sait où je pourrais me tromper? Merci!

+0

ne voulez-vous pas calculer la distance de newLocation2? – jakev

Répondre

0

Ce code de test basé sur celui de la question donne environ 33669 mètres:

CLLocation *newLocation = [[CLLocation alloc] 
    initWithLatitude:44.56697840 longitude:-69.55759810]; 

CLLocation *newLocation2 = [[CLLocation alloc] 
    initWithLatitude:44.31400400 longitude:-69.79157000]; 

double dLat = [newLocation distanceFromLocation:newLocation2]; 

NSLog(@"distance = %f meters", dLat); 

[newLocation release]; 
[newLocation2 release]; 

sortie:

distance = 33669.002406 mètres

Peut-être vous connectez Dlat en utilisant autre chose que %f?