2012-02-09 22 views
6

Sto provando a misurare la distanza tra due punti (longitudine, latitudine). Il mio problema è che ottengo risultati diversi su iOS e su Android.Distanza diversa tra due punti su iOS e Android

L'ho verificato con questo site e il risultato è stato che i valori di Android sono corretti.

sto usando questo metodo MapKit per ottenere la distanza in iOS: distanceFromLocation:

Qui sono le mie posizioni di prova:

P1: 48,643,798 mila, 9,453,735 mila P2: 49,495,15 mila, 9,782,15 mila

Distanza iOS: 97717 m Distanza Android: 97673 m

Come è possibile e come posso risolvere questo problema?

+1

In realtà entrambi utilizzano gli stessi dati: vedere la mia risposta di seguito. – lnafziger

risposta

8

Così ho avuto un problema diverso e siamo capitati la risposta ad entrambe le nostre domande:

Su iOS è possibile effettuare le seguenti operazioni:

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

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

ho cercato e cercato, ma rifugio' Sono stato in grado di trovare una ragione per la differenza. Dal momento che sono gli stessi identici punti, dovrebbe mostrare la stessa distanza indipendentemente dal modo in cui stai viaggiando. L'ho inviato ad Apple come bug e l'hanno chiuso come duplicato, ma non lo hanno ancora risolto. Suggerirei a chiunque voglia che questo sia corretto per inoltrarlo come bug.

Nel frattempo, la media dei due è in realtà il valore corretto:

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

A quanto pare Android non ha questo problema.

+0

La magia della matematica. Questo mi aiuterà a calmare il cliente. C'è qualche spiegazione per questo o è fatto per calcolare la distanza media tra questi due valori? – MoFuRo

+2

Ho cercato e cercato ma non sono stato in grado di trovare una ragione per la differenza. Dal momento che sono gli stessi identici punti, dovrebbe mostrare la stessa distanza indipendentemente dal modo in cui stai viaggiando. L'ho inviato ad Apple come bug e sto aspettando una risposta. – lnafziger

+0

Ben fatto, spero che risolvano questo problema. – MoFuRo

3

La longitudine e la latitudine non sono tutto ciò di cui hai bisogno. Devi usare lo stesso modello di riferimento come WGS84 o ETRS89. La terra non è un ellissoide esatto, quindi hai bisogno di modelli, nessuno dei modelli è del tutto esatto e, a seconda del modello che usi, le distanze sono leggermente diverse.

Assicurati di utilizzare lo stesso riferimento per iOS e Android.

+1

OK, ne sono a conoscenza ma non posso impostare questi modelli. Mi sorprenderebbe se il framework MapKit utilizzasse un modello di calcolo diverso su altre piattaforme. piattaforme. – MoFuRo

3

C'è più di un modo per calcolare la distanza tra i rapporti long/lat in base a come compensi la curvatura della terra, e non c'è un approccio corretto o sbagliato. Molto probabilmente le due piattaforme usano un modello leggermente diverso.

Ecco alcune formule per calcolarlo da soli. http://www.movable-type.co.uk/scripts/latlong.html

Se è assolutamente necessario che siano uguali, è sufficiente implementare il proprio calcolo utilizzando una di queste formule, quindi è possibile assicurarsi di ottenere lo stesso risultato su entrambe le piattaforme.

+0

Questa sarebbe la mia opzione se usano davvero modelli di calcolo diversi. Mi interesserebbe se iOS e Android usassero davvero modelli di calcolo diversi. – MoFuRo

+2

Bene MapKit è un codice Apple e Android è un codice Google, e anche se MapKit utilizza l'algoritmo di calcolo di Google, non c'è alcuna garanzia che Google non l'abbia ottimizzata tra le versioni successive del software delle mappe. –

Problemi correlati