2012-02-09 19 views
6

Estoy tratando de medir la distancia entre dos puntos (longitud, latitud). Mi problema es que obtengo resultados diferentes en iOS y luego en Android.Diferencia de distancia entre dos puntos en iOS y Android

Lo he comprobado con este site y el resultado fue que los valores de Android son correctos.

estoy usando este método MapKit para obtener la distancia en IOS: distanceFromLocation:

Éstos son mis lugares de prueba:

P1: 48.643798, 9.453735 P2: 49.495150, 9.782150

Distancia iOS: 97717 m Distancia Android: 97673 m

¿Cómo es esto posible y cómo puedo solucionarlo?

+1

En realidad ambos utilizan los mismos datos: vea mi respuesta a continuación. – lnafziger

Respuesta

8

Así que yo estaba teniendo un problema diferente y tropezamos con la respuesta a nuestras dos preguntas:

En iOS se puede hacer lo siguiente:

meters1 = [P1 distanceFromLocation:P2] 
// meters1 is 97,717 

meters2 = [P2 distanceFromLocation:P1] 
// meters2 is 97,630 

He buscado y buscado, pero Haven' Pude encontrar una razón para la diferencia. Dado que son exactamente los mismos puntos, debe mostrar la misma distancia sin importar en qué dirección esté viajando. Lo envié a Apple como un error y lo cerraron como un duplicado, pero aún no lo han solucionado. Sugeriría a cualquiera que quiera que esto se solucione que también lo envíe como un error.

Mientras tanto, el promedio de los dos es en realidad el valor correcto:

meters = (meters1 + meters2)/2 
// meters (the average of the first two) is 97,673 

Al parecer Android no tiene este problema.

+0

La magia de las matemáticas. Eso me ayudará a calmar al cliente. ¿Hay alguna explicación para esto o se hace esto para calcular la distancia promedio entre estos dos valores? – MoFuRo

+2

He buscado y buscado pero no he podido encontrar un motivo para la diferencia. Dado que son exactamente los mismos puntos, debe mostrar la misma distancia sin importar en qué dirección esté viajando. Lo envié a Apple como un error y estoy esperando una respuesta. – lnafziger

+0

Bien hecho, espero que solucionen esto. – MoFuRo

3

La longitud y la latitud no son todo lo que necesita. Debe usar el mismo modelo de referencia como WGS84 o ETRS89. La tierra no es un elipsoide exacto, por lo que necesita modelos, ninguno de los modelos es completamente exacto y, según el modelo que utilice, las distancias son algo diferentes.

Asegúrese de utilizar la misma referencia para iOS y Android.

+1

OK, soy consciente de eso, pero no puedo configurar estos modelos. Me sorprendería si el framework MapKit utiliza un modelo de cálculo diferente en otras plataformas. plataformas. – MoFuRo

3

Hay más de una forma de calcular la distancia entre coordenadas largas/lat en función de cómo se compensa la curvatura de la tierra, y no hay un enfoque correcto o incorrecto. Lo más probable es que las dos plataformas usen un modelo ligeramente diferente.

Aquí hay algunas fórmulas para calcularlo usted mismo. http://www.movable-type.co.uk/scripts/latlong.html

Si realmente necesita que sean iguales, simplemente implemente su propio cálculo utilizando una de estas fórmulas, luego puede asegurarse de obtener el mismo resultado en ambas plataformas.

+0

Esa sería mi opción si realmente usan diferentes modelos de cálculo. Me interesaría si iOS y Android realmente usan diferentes modelos de cálculo. – MoFuRo

+2

Bueno MapKit es el código de Apple y Android es el código de Google, e incluso si MapKit usa el algoritmo de cálculo de Google, no hay garantía de que Google no lo haya ajustado entre las versiones sucesivas de su software de mapas. –

Cuestiones relacionadas