¿Cómo puedo obtener la distancia entre dos puntos por latlng?

Quiero obtener la distancia de A a B por latlng.When ejecutar mi aplicación con el código siguiente, devolver un resultado equivocado. Fx i tryed A (31.172740,115.0081630), luego B (30.6055980,114.3603140), el resultado es de unos 3111km.but la distancia correcta es de unos 134 km. Mi código es:

class btnListener implements OnClickListener{ public void onClick(View v) { lat_a=lat_A.getText().toString(); lng_a=lng_A.getText().toString(); lat_b=lat_B.getText().toString(); lng_b=lng_B.getText().toString(); double a1,n1,a2,n2; a1=30.6055980; a2=Double.parseDouble(lat_b); n2=Double.parseDouble(lng_b); double R=6371; double D=Math.acos(Math.sin(a1)*Math.sin(a2)+Math.cos(a1)*Math.cos(a2)*Math.cos(n2-n1)); Toast.makeText(getApplication(), "the distance is"+String.valueOf(D*R)+"km from A to B", Toast.LENGTH_SHORT).show(); } } 

Intente abajo el código.

 public float distance (float lat_a, float lng_a, float lat_b, float lng_b ) { double earthRadius = 3958.75; double latDiff = Math.toRadians(lat_b-lat_a); double lngDiff = Math.toRadians(lng_b-lng_a); double a = Math.sin(latDiff /2) * Math.sin(latDiff /2) + Math.cos(Math.toRadians(lat_a)) * Math.cos(Math.toRadians(lat_b)) * Math.sin(lngDiff /2) * Math.sin(lngDiff /2); double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); double distance = earthRadius * c; int meterConversion = 1609; return new Float(distance * meterConversion).floatValue(); } 

Si no lo entendió, por favor revise este enlace , el mismo código disponible aquí.

Hay un api proporcionado por el propio androide para obtener la distancia entre dos puntos. Utilizar:

 Location.distanceBetween( startLatitude, startLongitude, endLatitude, endLongitude, results); 

Que devuelve la distancia en metros.

  • Android cómo detener gps
  • establecer 2 alertas de proximidad con la misma emisión
  • Android LocationManager.getLastKnownLocation () devuelve null
  • Cómo calcular la distancia de diferentes marcadores en un mapa y luego recoger el menos uno
  • Comprobar WiFi y GPS isConnected o no en Android?
  • ¿Cuándo se usa la triangulación de torre celular?
  • Ubicación por dirección IP en interiores
  • Reemplazar proveedor de señales GPS predeterminado en dispositivos Android
  • ¿Cómo puedo obtener el nombre de la ciudad de mi posición actual?
  • Correcciones DGPS en Android
  • Error de tiempo de ejecución: java.lang.IllegalArgumentException: provider = gps
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.