ubicacion studio puntos obtener medir mapas google geolocalizacion geograficos entre distancias distancia crear calcular app android google-maps

studio - Cálculo de la distancia entre dos puntos de latitud y longitud en Android



medir distancias google maps android (2)

¿Cómo puedo encontrar la distancia entre two puntos de latitude y longitude

Para uno de los puntos de latitud y longitud lo tengo en la base de datos y otro quiero usar la posición actual del móvil

¿Cuál debería necesitar para usarlos a continuación ?

  • proveedor de localización de Android
  • Google API
  • Cálculo matemático

nota :: Cualquier muestra de código de demostración será útil


Puedes usar el algoritmo Haversine. Otro usuario ya ha codificado una solución para esto:

public double CalculationByDistance(double initialLat, double initialLong, double finalLat, double finalLong){ int R = 6371; // km double dLat = toRadians(finalLat-initialLat); double dLon = toRadians(finalLong-initialLong); lat1 = toRadians(lat1); lat2 = toRadians(lat2); double a = Math.sin(dLat/2) * Math.sin(dLat/2) + Math.sin(dLon/2) * Math.sin(dLon/2) * Math.cos(lat1) * Math.cos(lat2); double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); return R * c; } public double toRadians(deg) { return deg * (Math.PI/180) }

Fuente: https://.com/a/17787472/3449528


Puede usar el algoritmo incorporado:

Location locationA = new Location("point A"); locationA.setLatitude(latA); locationA.setLongitude(lngA); Location locationB = new Location("point B"); locationB.setLatitude(latB); LocationB.setLongitude(lngB); distance = locationA.distanceTo(locationB) ;

actualización: (no tengo ningún error con esto)

LatLng latLngA = new LatLng(12.3456789,98.7654321); LatLng latLngB = new LatLng(98.7654321,12.3456789); Location locationA = new Location("point A"); locationA.setLatitude(latLngA.latitude); locationA.setLongitude(latLngA.longitude); Location locationB = new Location("point B"); locationB.setLatitude(latLngB.latitude); locationB.setLongitude(latLngB.longitude); double distance = locationA.distanceTo(locationB);