Rotar un ImageView para hacer frente a una posición dada en latitud y longitud

Estoy intentando programar mi app así que mi ImageView de una flecha señalará en un android.Location determinado. En este momento no apunta en la dirección correcta. Es bastante fuera por alguna razón. Creo que es porque no estoy teniendo en cuenta en qué dirección estoy enfrentando correctamente.

Esto es lo que estoy haciendo actualmente:

float angle = GetAngle(myLocation); RotateAnimation anim = new RotateAnimation(0.0f, angle, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); anim.setInterpolator(new LinearInterpolator()); anim.setRepeatCount(0); anim.setDuration(2); anim.setFillAfter(true); arrow.startAnimation(anim); 

Aquí está la función GetAngle ():

 float GetAngle(Location myLocation) { float angle = (float) Math.toDegrees(Math.atan2(theirLocation.getLatitude() - myLocation.getLatitude(), theirLocation.getLongitude() - myLocation.getLongitude())); if (angle < 0) angle += 360; return angle; } 

¿Hay una mejor manera de hacer esto que cómo soy? No tengo ni idea de cómo obtener el ImageView para hacer frente a las coordenadas que me dan desde una ubicación.

2 Solutions collect form web for “Rotar un ImageView para hacer frente a una posición dada en latitud y longitud”

En primer lugar, no estoy seguro de por qué desea una vista de imagen para girar a un ángulo. Pero si crees que puedes reemplazar la imagen con un marcador, hazlo.

Hay muchas ventajas de usar marcador en este caso

  1. Fácil de obtener y establecer la rotación

  2. Su rotación será muy suave

En segundo lugar, utilice esta función para obtener el ángulo

ToAngle = startingLocation.bearingTo (endingLocation);

Actualiza tu código sin animación, al principio. Tuve el mismo problema, por lo que la animación puede reiniciar o detener en el comportamiento diferente.

 float angle = GetAngle(myLocation); myView.setRotation(angle); //Or also check myView.setRotationX(angle); myView.setRotationY(angle); 
  • ¿Cómo encontrar mi ubicación actual (latitute + longitude) al hacer clic en un botón en android?
  • Android Advertencia: JAR no existe o no contiene recursos
  • Android - Distancia entre dos ciudades
  • Intervalo requestLocationUpdates en Android
  • Android locationManager sigue llamando onLocationChanged después de removeUpdates
  • Problemas de permiso para la ubicación en android Marshmallow applicaton
  • La ubicación de la red Android tarda horas en actualizar la ubicación
  • Android-Java: location.getTime () devuelve UTC-1 en lugar de UTC si el huso horario actual es "ahorro de luz del día"
  • Obtener el nombre de la ciudad de la latitud y la longitud en androide da servicio no disponible Android 4.0.3?
  • Se pierde el proveedor de Android Fused Location
  • DDMS no puede enviar la ubicación al emulador
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.