2016-04-01 12 views
0

Mit GPS-Punkten berechne ich, indem ich vorherige und aktuelle Punkte mit location1.distanceTo (location2) halte, indem ich jedes Mal zu einer Variable auf einer Zeit diff hinzufüge, um die zurückgelegte Entfernung zu erreichen. Ist es eine gute Annäherung, um die Fahrzeugbewegungsdistanz zu erhalten? Gibt es einen besseren Ansatz, um beim Fahren eines Fahrzeugs eine genaue Fahrdistanz zu erhalten?Android: Fahrzeugentfernung mit Mobilgerät berechnen

+0

Ich kann sein, wenn Ihre Entfernung in Metern nicht rund wird. –

Antwort

0

Verwenden Sie den folgenden Code. Ich hoffe, es wird helfen.

public double CalculationByDistance(LatLng StartP, LatLng EndP) { 
    int Radius = 6371;// radius of earth in Km 
    double lat1 = StartP.latitude; 
    double lat2 = EndP.latitude; 
    double lon1 = StartP.longitude; 
    double lon2 = EndP.longitude; 
    double dLat = Math.toRadians(lat2 - lat1); 
    double dLon = Math.toRadians(lon2 - lon1); 
    double a = 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); 
    double c = 2 * Math.asin(Math.sqrt(a)); 
    double valueResult = Radius * c; 
    double km = valueResult/1; 
    DecimalFormat newFormat = new DecimalFormat("####"); 
    int kmInDec = Integer.valueOf(newFormat.format(km)); 
    double meter = valueResult % 1000; 
    int meterInDec = Integer.valueOf(newFormat.format(meter)); 
    Log.i("Radius Value", "" + valueResult + " KM " + kmInDec 
      + " Meter " + meterInDec); 

    return Radius * c; 
} 



float[] results = new float[1]; 
Location.distanceBetween(oldPosition.latitude, oldPosition.longitude, 
      newPosition.latitude, newPosition.longitude, results); 
Verwandte Themen