Estoy tratando de escribir una categoría para CLLocation para devolver el rumbo a otro CLLocation.CL Categoría de ubicación para calcular el rumbo con la función Haversine
Creo que estoy haciendo algo mal con la fórmula (el cálculo no es mi punto fuerte). El cojinete devuelto siempre está apagado.
He estado buscando en esta pregunta y trató de aplicar los cambios que fueron aceptadas como una respuesta correcta y la página web que hace referencia:
Calculating bearing between two CLLocationCoordinate2Ds
http://www.movable-type.co.uk/scripts/latlong.html
Gracias por cualquier punteros. Intenté incorporar los comentarios de esa otra pregunta y todavía no estoy obteniendo nada.
Gracias
Aquí está mi categoría -
----- 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);
}
¿Por qué estás convirtiendo los valores de latitud y lon de grados a radianes? ¿La función Haversine requiere esa conversión? –
Para responder mi propia pregunta, sí. La función Haversine requiere esa conversión como se muestra aquí: http://www.movable-type.co.uk/scripts/latlong.html –