2013-07-11 4 views
6

Erst lesen Frage sorgfältig ...Wie bekomme ich eine direkte Entfernung zwischen zwei Orten in Android?

Ich brauche gerade Strecke, nicht zu Fuß, mit dem Auto oder usw.

einen Blick auf dieses Bild Nehmen Sie die unten gegeben,

Straight

Google stellen uns Entfernung mit dem Auto und fahren.

Aber ich will es nicht, ich will gerade Entfernung zwischen zwei Standorten (Breite - Länge).

Welche wird angezeigt als RED LINE.

HINWEIS: Ich will nicht rote Linie auf Google-Karte setzen, will nur die Entfernung in Einheiten

+0

111,325 km = (nahe) 1 Grad – Selvin

+1

Das ist nicht immer wahr Selvin. Longitudinale Grade variieren mit Ihrem Breitengrad. –

+0

Hier ist eine Übung: Beim nächsten Mal versuchen wir höflich zu sein und Fragen zu stellen. – Nirmal

Antwort

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); 
(Meile, km, etc.)

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

Ich werde diesen Code versuchen .. – Darshak

+1

Es ist perfekt ... Abstand in Meter geben .... –

+0

Vielen Dank für den Code ... es funktioniert für mich ... – Darshak

2

Entfernung finden Sie mit folgendem Code. Sie müssen nur zwei geografische Breite und Länge GeoPoint erhalten. und verwenden Sie diese in der folgenden Berechnung, um die Entfernung zu erhalten.

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

Das wird nach jeder Berechnung zurück Abstand sein.

R ist der Radius der Oberfläche in KM, müssen in der Berechnung verwendet werden, und Sie versuchen dies. Ich hoffe es ist nützlich für dich.

3

Die Haversine function wird verwendet, um den Abstand zwischen zwei Punkten auf einer Kugel zu finden.

Es ist ziemlich einfach, dies zu erweitern, um den Abstand der geraden Linie zwischen zwei Punkten auf der Erde zu finden. Die Erde ist keine perfekte Kugel, aber dies ist immer noch eine gute Näherung, indem eine Standardmessung (WGS84) für den Radius am Äquator verwendet wird.

Wie CommonsWare gesagt hat, können Sie dies sehr einfach tun, indem Sie distanceBetween() verwenden, das die Haversine-Funktion und den WGS84-Radius verwendet.

Für ein besseres Verständnis der Implementierung/Mathematik, werfen Sie einen Blick auf diese sample code in Python.

Verwandte Themen