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