studio programacion para móviles libro edición desarrollo desarrollar curso aprende aplicaciones android geolocation angle

para - manual de programacion android pdf



Ángulo entre dos geolocalizaciones conocidas de Android (4)

Quiero encontrar un ángulo entre dos geolocalizaciones conocidas. Básicamente, lo que quiero es dirigir una flecha cuyo punto de cola está en mi ubicación actual y la punta de flecha apunta hacia una ubicación geográfica fija. Así que estoy pensando si de alguna manera, soy capaz de obtener un ángulo entre estas dos geolocalizaciones, entonces de manera probable, podré hacer lo mismo.

Ustedes tienen algunas sugerencias para hacerlo de una mejor manera. Cualquier ayuda sería apreciada.


Esto es simple trigonometría, realmente. Si están lo suficientemente cerca, puedes usar la geometría plana. Tome las dos ubicaciones, descubra el triángulo rectángulo que tiene las dos ubicaciones como ángulos agudos y calcule.

Ya hay un enlace a la matemática básica arriba.

Una cosa: si las ubicaciones están muy alejadas, querrá usar trigonometría esférica o los ángulos serán inexactos.

Bueno, había un enlace ... http://www.easycalculation.com/trigonometry/triangle-angles.php


No estoy seguro de entender lo que quiere hacer, pero consulte esto: Referencia de Android, Ubicación, distancia entre (inicio dobleLatitud, inicio dobleLongitud, extremo dobleLatitud, extremo dobleLongitud, flotante [] resultados)

El parámetro de resultados debe ser una matriz de flotantes: al menos 2 elementos. Luego en los resultados [0] encontrará la distancia y en los resultados 1 teniendo entre estos dos puntos. Lo que es importante "La distancia y el rumbo se definen con el elipsoide WGS84".


Yo quería lograr lo mismo. usando esta referencia para calcular el ángulo de la siguiente manera:

private double angleFromCoordinate(double lat1, double long1, double lat2, double long2) { double dLon = (long2 - long1); double y = Math.sin(dLon) * Math.cos(lat2); double x = Math.cos(lat1) * Math.sin(lat2) - Math.sin(lat1) * Math.cos(lat2) * Math.cos(dLon); double brng = Math.atan2(y, x); brng = Math.toDegrees(brng); brng = (brng + 360) % 360; brng = 360 - brng; return brng; }

y luego girar ImageView a este ángulo

private void rotateImage(ImageView imageView, double angle) { Matrix matrix = new Matrix(); imageView.setScaleType(ScaleType.MATRIX); // required matrix.postRotate((float) angle, imageView.getDrawable().getBounds() .width() / 2, imageView.getDrawable().getBounds().height() / 2); imageView.setImageMatrix(matrix); }