2013-07-11 19 views
6

prima leggere attentamente domanda ...Come ottenere una distanza dritta tra due posizioni in Android?

ho bisogno distanza dritto, non a piedi, in auto, o ecc

Date un'occhiata a questa immagine, che qui di seguito,

Straight

Google ci fornisce distanza in auto e in auto.

Ma io non lo voglio, voglio distanza diritta tra due posizioni (latitudine - longitudine).

Viene visualizzato come LINE ROSSO.

NOTA: Non voglio mettere linea rossa sulla mappa di Google, vogliono solo il distanza in unità

+0

111,325 km = (vicino) 1 grado – Selvin

+1

Non è sempre vero, Selvin. I gradi longitudinali variano con la tua latitudine. –

+0

Ecco un esercizio: la prossima volta proviamo ad essere educati mentre facciamo domande. – Nirmal

risposta

15

ANDROID

double distance 

Location locationA = new Location(“point A”) 

locationA.setLatitude(latA); 

locationA.setLongitude(lngA); 

Location locationB = new Location(“point B”); 

locationB.setLatitude(latB); 

LocationB.setLongitude(lngB); 

distance = locationA.distanceTo(locationB); 
(miglio, km, ecc.)

MATHEMATICALY

a = distance in degrees //meterConversion = 1609; 

b = 90 - latitude of point 1 

c = 90 - latitude of point 2 

l = longitude of point 1 - longitude of point 2 

Cos(a) = Cos(b)Cos(c) + Sin(b)Sin(c)Sin(l) 

d = circumference of Earth * a/360 // circumference of Earth = 3958.7558657440545D km 
+0

Proverò questo codice .. – Darshak

+1

È perfetto ... dai la distanza in Meter .... –

+0

Grazie per il codice ... funziona per me ... – Darshak

2

Distanza che si trova con il seguente codice. Hai solo bisogno di ottenere due latitudine e longitudine di geoPoint. e usalo nel seguente calcolo per ottenere la distanza.

R = 6371; // km 
d = Math.acos(Math.sin(lat1)*Math.sin(lat2) + 
       Math.cos(lat1)*Math.cos(lat2) * 
       Math.cos(lon2-lon1)) * R; 

Questa sarà la distanza di ritorno dopo tutto il calcolo.

R è il raggio di superficie in KM, è necessario utilizzare nel calcolo e si prova questo. Spero che sia utile per te.

3

Il Haversine function viene utilizzato per trovare la distanza tra due punti su una sfera.

È abbastanza semplice estendere questo per trovare la distanza in linea retta tra due punti sulla Terra. La Terra non è una sfera perfetta, ma questa è ancora una buona approssimazione usando una misura standard (chiamata WGS84) per il raggio all'equatore.

Come ha detto CommonsWare, è possibile farlo in modo molto semplice usando distanceBetween(), che utilizza la funzione Haversine e il raggio WGS84.

Per una migliore comprensione dell'implementazione/matematica, dare un'occhiata a questo sample code in Python.

Problemi correlati