2012-09-25 3 views
0

Je veux calculer le milieu de plusieurs Geo-Points (speicified par longitude, latitude) dans ObjCvaleurs différentes pour le calcul de MiddleOfPoints

- (CLLocationCoordinate2D)middleOfPoints:(NSOrderedSet *)points 
{ 
    int i = 0; i = points.count; 
    double x,y,z = 0; 

    for (BuildingPoint *point in points) 
    { 
     // Iterate through Set 
     x += cos(point.latitude.doubleValue*(M_PI/180)) * cos(point.longitude.doubleValue*(M_PI/180)); 
     y += cos(point.latitude.doubleValue*(M_PI/180)) * sin(point.longitude.doubleValue*(M_PI/180)); 
     z += sin(point.latitude.doubleValue*(M_PI/180)); 
    } 

    x = x/i; 
    y = y/i; 
    z = z/i; 

    double longitude = 180/M_PI * atan2(y,x); 
    double t = sqrt(x * x + y * y); 
    double latitude = 180/M_PI * atan2(z,t); 

    return CLLocationCoordinate2DMake(latitude, longitude); 
} 

Mais pour une raison quelconque je reçois des valeurs différentes quand je l'appelle la méthode 5 fois avec le même jeu d'entrée. Des idées ?

+0

Avez-vous eu la chance de vérifier ma réponse? Si cela vous a aidé, n'oubliez pas de "l'accepter" en cliquant sur le cadre de la case à cocher à gauche de la réponse, voir http://stackoverflow.com/faq#howtoask. –

Répondre

0
double x,y,z = 0; 

ne z initialise à zéro, mais x et y ont une valeur non définie (au hasard). Changez-le en

double x = 0, y = 0, z = 0; 
Questions connexes