Comment faire pivoter une flèche de direction vers un emplacement particulier

Dans mon application j'ai une latitude-longitude de 1 correction de l'emplacement. Maintenant l'utilisateur avec l'iPhone peut se déplacer n'importe où et même lui faire tourner son appareil, la flèche (certains uiimageview) doit indiquer que la correction de l'emplacement de sorte que l'Utilisateur va obtenir la direction à cet endroit à chaque fois. J'ai essayé comme suit.

-(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {

CLLocationCoordinate2D here =  newLocation.coordinate;
[self calculateUserAngle:here];
}


-(void) calculateUserAngle:(CLLocationCoordinate2D)user {
    NSLog(@"my destination is %f ; %f", fixlocLat, fixlocLon);
    degrees =  degrees + atan2(sin(fixlocLon-user.longitude)*cos(fixlocLat),cos(user.latitude)*sin(fixlocLat) - sin(user.latitude)*cos(fixlocLat)*cos(fixlocLon-user.longitude));
//get angle between user location and fix location
}

- (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading 
{
    arrow.transform = CGAffineTransformMakeRotation((degrees-newHeading.trueHeading) * M_PI / 180);
}

mais le code ci-dessus va toujours tourner la flèche pour env. 2-3 degrés nord pour chaque emplacement.

Ma question ressemble à ce Débordement de Pile question.mais à l'aide de code à partir de ce lien, je suis mauvaise direction.
merci de m'aider sur ce point.

et aussi si une idée à l'aide de l'accéléromètre ou l'gyrodata sera utile pour moi.

merci à l'avance.

source d'informationauteur Dhawal