Я пытаюсь написать категорию для CLLocation, чтобы вернуть отношение к другому CLLocation.
Я полагаю, что я делаю что-то не так с формулой (калькулезный не моя сильная сторона). Возвращенный подшипник всегда выключен.
Я смотрел на этот вопрос и пытался применить изменения, которые были приняты как правильный ответ, и веб-страницу, на которую он ссылается:
Расчет направления между двумя CLLocationCoordinate2Ds
http://www.movable -type.co.uk / скрипты / latlong.html
Спасибо за любые указатели. Я попытался включить обратную связь от этого другого вопроса, и я все еще просто не получаю что-то.
Спасибо
Вот моя категория -
----- CLLocation + Bearing.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);
}