2011-08-09 22 views
11

En el iPhone, obtengo la ubicación del usuario en grados decimales, por ejemplo: latitud 39.470920 y longitud = -0.373192; Eso es el punto A.Coordenadas de GPS en grados para calcular distancias

Necesito crear una línea con otro GPS de coordenadas, también en grados decimales, el punto B. A continuación, calcular la distancia (perpendicular) entre la línea de A a B y otro punto C.

El problema es que me confunden con los valores en grados. Me gustaría tener el resultado en metros. ¿Cuál es la conversión necesaria? ¿Cómo será la fórmula final para calcular esto?

+0

También tengo el mismo problema, y ​​ninguna de las 2 respuestas aquí lo resuelve. La respuesta de RabinDev se acercó, pero no resolvió el problema de conversión de grados a metros. ¿Algun consejo? –

Respuesta

1
  • (CLLocationDistance) distanceFromLocation: (const CLLocation *) location es el método para obtener la distancia desde CLLocation a otra.

Su problema es también de encontrar la línea más corta entre una línea (A, B) y el punto C. supongo que si sus 3 CLLocations están cerca (menos de unos pocos kilómetros de distancia), puede hacer los cálculos "como si" las coordenadas son puntos en un solo plano, y use this en C++, o this o y simplemente use las Ubicaciones CL "como si" fueran coordenadas xey en un plano.

Si sus coordenadas están muy lejos, o la exactitud exacta es importante, entonces la forma esférica de la tierra importa, y usted necesita hacer cosas usando great circle distance y otra geometría en la esfera.

+0

ho rabindev cualquier ejemplo de muestra enviarlo, por favor – Durga

+0

plus1 para la referencia esférica súper geek. :-) – eric

28

¿Por qué no usa CLLocation s distanceFromLocation: método? Le indicará la distancia precisa entre el receptor y otra CLLocation.

CLLocation *locationA = [[CLLocation alloc] initWithLatitude:12.123456 longitude:12.123456]; 
CLLocation *locationB = [[CLLocation alloc] initWithLatitude:21.654321 longitude:21.654321]; 

CLLocationDistance distanceInMeters = [locationA distanceFromLocation:locationB]; 

// CLLocation is aka double 

[locationA release]; 
[locationB release]; 

Es así de fácil.

+0

Hola cálculo de distancia Toastor cualquier ejemplo de muestra enviarlo por favor – Durga

+0

Listo. Cosas como eso son fáciles de aprender de la biblioteca de referencia. Publiqué el enlace en mi respuesta, es posible que desee echarle un vistazo. – Toastor

Cuestiones relacionadas