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.

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); 
  • ¿ICS Android habilita los gps de forma programática?
  • LocationManager.getLastKnownLocation () return null
  • Alternativa a FusedLocationProviderApi
  • Cómo obtener el usuario Inicio / Lugar de trabajo de un usuario en Android
  • Cómo dibujar la ruta mientras me muevo desde mi ubicación actual usando Google Maps
  • Usar ubicación simulada sin configurarla en la configuración
  • ¿Cuál es el significado de android.location.LocationManager.PASSIVE_PROVIDER?
  • ACCESS_FINE_LOCATION Permisos de AndroidManifest no concedidos
  • Posicionamiento egnos en un dispositivo android
  • Android GeoCoder devuelve sólo 1 resultado
  • RequestLocationUpdates no se actualiza en intervalos en Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.