Категория CLLocation для расчета пеленга с функцией гаверсинуса

I ' m пытаюсь написать категорию для CLLocation, чтобы вернуть подшипник в другой CLLocation.

Я считаю, что делаю что-то не так с формулой (расчетливость - не моя сильная сторона). Возвращаемый пеленг всегда выключен.

Я изучал этот вопрос и попытался применить изменения, которые были приняты как правильный ответ, и веб-страницу, на которую он ссылается:

Расчет пеленга между двумя CLLocationCoordinate2D

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

Спасибо за любые указатели. Я попытался учесть отзывы из этого другого вопроса, но все еще ничего не понимаю.

Спасибо

Вот моя категория -

----- CLLocation + Bearing.h

#import 
#import 


@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);
}

26
задан Community 23 May 2017 в 11:47
поделиться