ubicacion studio obtener hacer gratis google geolocalizacion ejemplo crear coordenadas como app activar android gps formatting coordinates

hacer - obtener ubicacion android studio 2017



¿Cómo formatear latitud y longitud del GPS? (5)

En Android (java) cuando obtienes la latitud y longitud actual usando la función getlatitude (), etc. obtienes las coordenadas en formato decimal:

latitud: 24.3454523 longitud: 10.123450

Quiero poner esto en grados y minutos decimales para que luzca algo como esto:

Latitud: 40 ° 42''51 "N Longitud: 74 ° 00''21" W


Utilizar esta

public static String getFormattedLocationInDegree(double latitude, double longitude) { try { int latSeconds = (int) Math.round(latitude * 3600); int latDegrees = latSeconds / 3600; latSeconds = Math.abs(latSeconds % 3600); int latMinutes = latSeconds / 60; latSeconds %= 60; int longSeconds = (int) Math.round(longitude * 3600); int longDegrees = longSeconds / 3600; longSeconds = Math.abs(longSeconds % 3600); int longMinutes = longSeconds / 60; longSeconds %= 60; String latDegree = latDegrees >= 0 ? "N" : "S"; String lonDegrees = longDegrees >= 0 ? "E" : "W"; return Math.abs(latDegrees) + "°" + latMinutes + "''" + latSeconds + "/"" + latDegree +" "+ Math.abs(longDegrees) + "°" + longMinutes + "''" + longSeconds + "/"" + lonDegrees; } catch (Exception e) { return ""+ String.format("%8.5f", latitude) + " " + String.format("%8.5f", longitude) ; }

}


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);

referencia es el sitio del desarrollador de Android .

Editar

He intentado seguir lo siguiente y obtener 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 diferentes opciones según su requisito


Tiene una coordenada en grados decimales, este formato de representación se llama "DEG"

Y quiere un DEG a DMS (Grados, Minutos, Segundos) (por ejemplo, 40 ° 42''51 "N),
conversión.

Esta implementación del código de Java en http://en.wikipedia.org/wiki/Geographic_coordinate_conversion

si los valores de coordenadas de DEG son <0, es oeste para longitud o sur para latitud.


Como ya se mencionó, se requieren algunas manipulaciones de cadena. Creé la siguiente clase de ayuda, 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; } }