¿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(); } }
- Obteniendo latitud y longitud utilizando gps cada 10 minutos en segundo plano android
- Mover marcador con gps en google map android
- ¿Por qué el servicio de aplicaciones se reinicia y no puede reiniciarlo?
- Obtener la ubicación / posición más precisa? (GPS / Kalman / Android)
- Navegador Android intención: abrir la aplicación de navegación con coordenadas GPS
- Obtención y filtrado de datos de Android GPS, cómo mejora la información de ubicación
- ¿Cómo actualizar la ubicación del GPS con frecuencia?
- Nuevo Android Geofence Api - El código de ejemplo no alerta / notifica cuando en la ubicación
- Android: detecta que el usuario abre la barra de estado
- Compruebe si la geolocalización ha sido falsificada
- Detección del interruptor de encendido / apagado GPS en los teléfonos Android
- ¿Puede Flurry Analytics informar la ubicación del usuario por ciudad en Android?
- Obtención de velocidad mediante el API de ubicación de Google Play
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.
- GregorianCalendar setFirstDayOfWeek no afecta a WEEK_OF_YEAR en pre turrón
- Cómo comprobar el estado de la conexión VPN en Android ICS