2017-08-21 4 views
-2

So schreibe ich derzeit eine Funktion haversine Formel, um die Entfernung für 2-Koordinaten zu berechnen, und ich finde diesen Code, aber ich weiß nicht, wie man es in Android schreiben. Hier ist die Funktion, die ich erstellen werde. dieseSphärische Cosinus Haversine Formel

private double SphericalCosinus(double lat1, double long1, double lat2, 
     double long2) { 
    //formula 
} 

und die Formel ist dies ein, da einige Tutorial ist, die mir sagen, Mathe libarary zu verwenden, aber ich den Code falsch immer schreiben, weil die Apps den Standort zeigen abgepfiffen. hier ist die Formel i

erhalten
=(6371.1*((2*ASIN(SQRT((SIN((RADIANS(lat2)-RADIANS(lat1))/2)^2)+COS(RADIANS(lat2))*COS(RADIANS(lat1))*(SIN((RADIANS(long2)-RADIANS(long1))/2)^2)))))) 
+0

Was Ihre Frage ist eigentlich? –

+0

ich versuche, es in android Studio –

+0

schreiben Die IDE ist nicht relevant. –

Antwort

2

Durch die Kraft finden und ersetzen:

private double SphericalCosinus(double lat1, double long1, double lat2, double long2) { 
    return 6371.1*((2 * 
     Math.asin(
      Math.sqrt(
       (Math.sin(Math.pow((Math.toRadians(lat2)-Math.toRadians(lat1))/2),2.0)) + 
       Math.cos(Math.toRadians(lat2)) * 
       Math.cos(Math.toRadians(lat1)) * 
       (Math.sin(Math.pow(Math.toRadians(long2)-Math.toRadians(long1))/2),2.0) 
      ) 
     ) 
    )); 
} 

https://developer.android.com/reference/java/lang/Math.html

+0

operator "^" kann nicht angewendet werden auf "double", "int", das ist ein anderer Fehler –

+0

Ich denke, es ist eine gute Praxis, dass Sie es selbst beheben. Benutze Math.pow. – Gal

+0

Ich habe die Antwort so bearbeitet, dass es wahrscheinlich funktioniert. Wenn Sie bitte mit der Antwort, bitte senden Sie es als die richtige Antwort. Danke – Gal