Solución:
para convertir de decimales a grados, puede hacer lo siguiente
String strLongitude = Location.convert(location.getLongitude(), Location.FORMAT_DEGREES);
String strLatitude = Location.convert(location.getLatitude(), Location.FORMAT_DEGREES);
la referencia es el sitio para desarrolladores de Android.
Editar
He intentado lo siguiente y obtengo el resultado:
strLongitude = Location.convert(location.getLongitude(), Location.FORMAT_DEGREES);
strLatitude = Location.convert(location.getLatitude(), Location.FORMAT_DEGREES);
OUTPUT : Long: 73.16584: Lat: 22.29924
strLongitude = Location.convert(location.getLongitude(), Location.FORMAT_SECONDS);
strLatitude = Location.convert(location.getLatitude(), Location.FORMAT_SECONDS);
OUTPUT : Long: 73:9:57.03876: Lat: 22:17:57.26472
strLongitude = Location.convert(location.getLongitude(), Location.FORMAT_MINUTES);
strLatitude = Location.convert(location.getLatitude(), Location.FORMAT_MINUTES);
OUTPUT : Long: 73:9.95065: Lat: 22:17.95441
Pruebe una opción diferente según sus requisitos
Debería ser algo de matemáticas:
(int)37.33168 => 37
37.33168 % 1 = 0.33168
0.33168 * 60 = 19.905 => 19
19.905 % 1 = 0.905
0.905 * 60 => 54
lo mismo con -122 (agregue 360 si es un valor negativo)
EDITAR: Puede que haya alguna API, que no sé.
Referir desde:
¿Cómo encontrar el grado a partir del valor de latitud en Android?
Convierta los valores de latitud y longitud (grados) al doble. Java
Como ya se mencionó, se requieren algunas manipulaciones de cadenas. Creé la siguiente clase auxiliar, que convierte la ubicación al formato DMS y permite especificar los lugares decimales para los segundos:
import android.location.Location;
import android.support.annotation.NonNull;
public class LocationConverter {
public static String getLatitudeAsDMS(Location location, int decimalPlace){
String strLatitude = Location.convert(location.getLatitude(), Location.FORMAT_SECONDS);
strLatitude = replaceDelimiters(strLatitude, decimalPlace);
strLatitude = strLatitude + " N";
return strLatitude;
}
public static String getLongitudeAsDMS(Location location, int decimalPlace){
String strLongitude = Location.convert(location.getLongitude(), Location.FORMAT_SECONDS);
strLongitude = replaceDelimiters(strLongitude, decimalPlace);
strLongitude = strLongitude + " W";
return strLongitude;
}
@NonNull
private static String replaceDelimiters(String str, int decimalPlace) {
str = str.replaceFirst(":", "°");
str = str.replaceFirst(":", "'");
int pointIndex = str.indexOf(".");
int endIndex = pointIndex + 1 + decimalPlace;
if(endIndex < str.length()) {
str = str.substring(0, endIndex);
}
str = str + """;
return str;
}
}
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)