Categoria de localização para cálculo do rolamento com função Haversine

Estou tentando escrever uma categoria para CLLocation para retornar o rolamento para outra CLLocation.

Acredito que estou fazendo algo errado com a fórmula (calcular não é o meu ponto forte). O rolamento retornado está sempre desativado.

Estive analisando esta questão e tentei aplicar as alterações que foram aceitas como resposta correta e a página da Web que ela faz referência:

Cálculo de rolamentos entre dois CLLocationCoordinate2Ds

http://www.movable-type.co.uk/scripts/latlong.html

Obrigado por qualquer indicação. Tentei incorporar o feedback dessa outra pergunta e ainda não estou conseguindo algo.

obrigado

Aqui está a minha categoria -

----- CLLocalização + Rolamento.h

#import <Foundation/Foundation.h>
#import <CoreLocation/CoreLocation.h>


@interface CLLocation (Bearing)

-(double) bearingToLocation:(CLLocation *) destinationLocation;
-(NSString *) compassOrdinalToLocation:(CLLocation *) nwEndPoint;

@end

--------- CLLocation + Bearing.m

#import "CLLocation+Bearing.h"

double DegreesToRadians(double degrees) {return degrees * M_PI / 180;};
double RadiansToDegrees(double radians) {return radians * 180/M_PI;};


@implementation CLLocation (Bearing)

-(double) bearingToLocation:(CLLocation *) destinationLocation {

 double lat1 = DegreesToRadians(self.coordinate.latitude);
 double lon1 = DegreesToRadians(self.coordinate.longitude);

 double lat2 = DegreesToRadians(destinationLocation.coordinate.latitude);
 double lon2 = DegreesToRadians(destinationLocation.coordinate.longitude);

 double dLon = lon2 - lon1;

 double y = sin(dLon) * cos(lat2);
 double x = cos(lat1) * sin(lat2) - sin(lat1) * cos(lat2) * cos(dLon);
 double radiansBearing = atan2(y, x);

 return RadiansToDegrees(radiansBearing);
}

questionAnswers(6)

yourAnswerToTheQuestion