2011-12-18 29 views
5

Eventuali duplicati:
How to calculate distance between two locations using their longitude and latitude valuedistanza calcolare Android tra due luoghi

Prima di tutto mi dai qualche istruzione su come la Terra non è una sfera perfetta e tutto cambia quando si arriva più vicino ai poli, che sembra essere tutto ciò che posso trovare in rete. E prima di chiedere a mio padre che è un geografo esperto e mio zio che è un fisico quantico che lavora per la NASA e io che sono un programmatore informatico, vorrei prima chiederlo a voi ragazzi!

Ho solo bisogno di un parco palla Km distanza in linea d'aria da un telefono a un elenco di posizioni pre-popolate per un'area di 720 chilometri quadrati, quindi le variazioni non sono importanti.

Questo sono io adesso, per favore non farmi cadere niente su di me.

mLatitude=-38.3533177 
mLongitude=144.9127674 

E questo mi è di dieci minuti fa a circa 3 km di distanza in linea d'aria,

mLatitude=-38.3444385 
mLongitude=144.9374762 

Come si calcola che per ottenere tre chilometri?

Sono abbastanza nuovo in Java, quindi non sono sicuro di quali funzioni matematiche siano disponibili e non ho idea di quale sia il calcolo?

Cheers,

Mike.

+0

Ho chiesto domanda smilliar, check this out: http://stackoverflow.com/questions/8286771/list-events-on-defined-area-using-google-maps – PiKey

+0

vedere questa risposta: http://stackoverflow.com/a/8410867/265167 –

risposta

27

È possibile utilizzare il metodo distanceTo() della classe Location per ottenere la distanza tra due località.

+0

DistanceTo() e DistanceBetween() sono un po 'sfuggenti, se li digito in una ricerca ottengo risultati per equazioni matematiche che fanno ciò che si penserebbe fossero funzioni incorporate dovresti ... dovrebbe. Come Nostras ha detto che tutti hanno un raggio di terra leggermente diverso, ma per me ho solo bisogno di un parco giochi. –

+0

OK, stai dicendo che non sai come usare questo metodo? – anujprashar

4
public class Calculator { 
    private static final int earthRadius = 6371; 
    public static float calculateDistance(float lat1, float lon1, float lat2, float lon2) 
    { 
     float dLat = (float) Math.toRadians(lat2 - lat1); 
     float dLon = (float) Math.toRadians(lon2 - lon1); 
     float a = 
       (float) (Math.sin(dLat/2) * Math.sin(dLat/2) + Math.cos(Math.toRadians(lat1)) 
         * Math.cos(Math.toRadians(lat2)) * Math.sin(dLon/2) * Math.sin(dLon/2)); 
     float c = (float) (2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a))); 
     float d = earthRadius * c; 
     return d; 
    } 
} 
+0

Potrebbe dirmi qual è l'unità del risultato di questa funzione? Non sembra che restituisca km giusto? –

+0

Sembra che la funzione abbia restituito la distanza in chilometri. – NOSTRA

Problemi correlati