Calcular distancia entre dos coordenadas android – android

Pregunta:


quisiera saber como puedo hallar la distancia entre 2 coordenadas en kilómetros en trayecto vía automóvil, estoy usando la API de google maps.
Agradezco cualquier aporte.

Preguntado por: Andrey Herrera

Usando función distanceTo de GoogleMaps

Googlemaps dispone de la función distanceTo documentación oficial de Location

Ejemplo:

Location locationA = new Location("punto A");

locationA.setLatitude(latA);
locationA.setLongitude(lngA);

Location locationB = new Location("punto B");

locationB.setLatitude(latB);
locationB.setLongitude(lngB);

float distance = locationA.distanceTo(locationB);

El valor devuelto es en metros.

Usando CalculationByDistance

O bien puedes probar esa función, extraída de la respuesta SO

public double CalculationByDistance(LatLng StartP, LatLng EndP) {
        int Radius = 6371;// radio de la tierra en  kilómetros
        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;
    }

Te recomiendo usar la clase Location de android, ya tiene implementado un método para eso

Location location = new Location("localizacion 1");
location.setLatitude(0.00000);  //latitud
location.setLongitude(0.00000); //longitud 
Location location2 = new Location("localizacion 2");
location2.setLatitude(0.00000);  //latitud
location2.setLongitude(0.00000); //longitud 
double distance = location.distanceTo(location2);

Fuente

Related Posts:

Push notifications to devices and browsers via Pushbullet
...
Send messages to mobile devices with Google Firebase.
...
A PHP library for easy PushOver service use: send real-time notifications to your Android and iOS devices.
...
A simple PHP library for the Pushover service
...
Google Cloud Messaging (GCM) PHP Server Library
...
Read basic info about an application from .apk file.
...
A PHP library for sending GCM messages
...
A Bundle for Symfony2 projects to send notifications in mobile devices through Firebase Cloud Messaging API
...
PHP API for Firebase Cloud Messaging from Google
...
PHP application server for google firebase cloud messaging (FCM)
...
Standalone PHP library for easy devices notifications push.
...
Girar Rectángulo con LibGDX – android libgdx
Pregunta: Estoy haciendo un programilla de prueba que se compone de : 4 botones , arriba, abajo, izquierda y derecha. Una nave espacial, formada por un ...
Botones con android y LibGDX – android libgdx
Pregunta: Buenas, he creado un pequeño boton en android, con libGDX muy sencillo, pero el problema es el siguiente: Le tengo asignada una funcion que escribe ...
¿Location manager Android? Experiencias – android mysql android-studio
Pregunta: He desarrollado una aplicación Gps que envía información a Mysql cada 10 seg atraves de locationmanager. ¿Según su experiencia hasta cuanto es posible disminuir ...
Crear cuenta regresiva N segundos mientras se visualiza una Activity en Android – java android
Pregunta: Quiero implementar una cuenta regresiva de N segundos, que se inicie cuando la Activity se muestre, se pare el contador cuando el usuario decide ...
Tags:

One Comment

Add a Comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *