Android Encuentra la latitud Longitud del punto X de la ubicación definida
MapView
trabajando en Android
MapView
y el desarrollo de una aplicación basada en mapas. Necesito encontrar una distancia X de las Co-ordinates
específicas. La dirección no es mi prioridad La distancia es mi prioridad que diga que necesito encontrar 100 metros de una ubicación en particular cualquier idea de cómo puedo hacer eso Gracias de antemano por leer y contestar.
- Cómo mostrar el diálogo de configuración de ubicación en android?
- Cómo publicar datos utilizando el método POST en Android
- ACCESS_COARSE_LOCATION es necesario si el usuario ya ha concedido ACCESS_FINE_LOCATION?
- No ver Geofence Transitions en el tutorial de Google sobre Geofencing
- ¿Cómo afecta la función Doze / Standby a las actualizaciones de ubicación?
- Android 4.4.2 LocationResult.hasResult (intención) da Unmarshalling código de tipo desconocido
- LocationClient no se puede resolver con un tipo
- Se pierde el proveedor de Android Fused Location
- RuntimeException en el análisis de Gson JSON: Error al invocar java.lang.ClassLoader protegido () sin args
- Android: Location.distancePara no funcionar correctamente?
- Cómo obtener el nombre de la ciudad por latitud y longitud en android?
- LocationManager devuelve la antigua ubicación en caché "Wifi" con la marca de hora actual
- ¿Cómo comprobar si el servicio de localización wifi está en ...?
Para calcular para encontrar un punto en una línea a una distancia dada lejos de un origen, usted necesita tener un cojinete (o una dirección) así como la distancia. Esta es una función que tendrá una ubicación inicial, un cojinete y una distancia (profundidad) y devolverá una ubicación de destino (para Android): Es posible que desee convertirlo de KM a Metros o lo que sea.
public static Location GetDestinationPoint(Location startLoc, float bearing, float depth) { Location newLocation = new Location("newLocation"); double radius = 6371.0; // earth's mean radius in km double lat1 = Math.toRadians(startLoc.getLatitude()); double lng1 = Math.toRadians(startLoc.getLongitude()); double brng = Math.toRadians(bearing); double lat2 = Math.asin( Math.sin(lat1)*Math.cos(depth/radius) + Math.cos(lat1)*Math.sin(depth/radius)*Math.cos(brng) ); double lng2 = lng1 + Math.atan2(Math.sin(brng)*Math.sin(depth/radius)*Math.cos(lat1), Math.cos(depth/radius)-Math.sin(lat1)*Math.sin(lat2)); lng2 = (lng2+Math.PI)%(2*Math.PI) - Math.PI; // normalize to -180...+180 if (lat2 == 0 || lng2 == 0) { newLocation.setLatitude(0.0); newLocation.setLongitude(0.0); } else { newLocation.setLatitude(Math.toDegrees(lat2)); newLocation.setLongitude(Math.toDegrees(lng2)); } return newLocation; };
Sólo para hacer la respuesta de javram en metros y radianes en lugar de grados.
/** * Create a new location specified in meters and bearing from a previous location. * @param startLoc from where * @param bearing which direction, in radians from north * @param distance meters from startLoc * @return a new location */ public static Location createLocation(Location startLoc, double bearing, double distance) { Location newLocation = new Location("newLocation"); double radius = 6371000.0; // earth's mean radius in m double lat1 = Math.toRadians(startLoc.getLatitude()); double lng1 = Math.toRadians(startLoc.getLongitude()); double lat2 = Math.asin(Math.sin(lat1) * Math.cos(distance / radius) + Math.cos(lat1) * Math.sin(distance / radius) * Math.cos(bearing)); double lng2 = lng1 + Math.atan2(Math.sin(bearing) * Math.sin(distance / radius) * Math.cos(lat1), Math.cos(distance / radius) - Math.sin(lat1) * Math.sin(lat2)); lng2 = (lng2 + Math.PI) % (2 * Math.PI) - Math.PI; // normalize to -180...+180 if (lat2 == 0 || lng2 == 0) { newLocation.setLatitude(0.0); newLocation.setLongitude(0.0); } else { newLocation.setLatitude(Math.toDegrees(lat2)); newLocation.setLongitude(Math.toDegrees(lng2)); } return newLocation; }
- AdMob Interstitial y error isLoaded deben ser llamados en el subproceso principal de la interfaz de usuario
- Android Studio no puede iniciar sesión en GitHub