Android Google Map InfoWindow punto de anclaje después de la rotación del marcador

¿Cómo reiniciar el punto de anclaje InfoWindows marcador después de que el marcador se ha girado para estar siempre en el centro superior? El problema es que el punto de anclaje se gira junto con el marcador.

static final LatLng PERTH = new LatLng(-31.90, 115.86); Marker marker = mMap.addMarker(new MarkerOptions() .position(PERTH) .anchor(0.5,0.5) .rotation(90.0) .infoWindowAnchor(0.5,0)); //Update marker with new data (position and direction angle) var angle = 130.0; marker.setPosition(new LatLng(-30.20, 113.27)); marker.setRotation(angle); marker.setInfoWindowAnchor(x,y); // how to calculate these values? 

Introduzca aquí la descripción de la imagen

 var angle = 130.0; var x = Math.sin(-angle * Math.PI / 180) * 0.5 + 0.5; var y = -(Math.cos(-angle * Math.PI / 180) * 0.5 - 0.5); marker.setInfoWindowAnchor((float)x, (float)y); 

Explicación:

Si asumimos que el marcador de mapa es de forma circular (lo más razonable para fines de rotación) y como sabemos que InfoWindow punto de anclaje (B) se puede establecer en cualquier punto de coordenada relativa de 0,0,0,0 (superior izquierda) a 1,1 (inferior derecha ) Podemos encontrar cualquier punto en la línea del círculo por el grado de rotación dada usando las fórmulas SIN y COS.

Introduzca aquí la descripción de la imagen

X distancia entre A y B = Radio * SIN (grado); Y distancia entre A y B = Radio * COS (grado);

Adoptándolos para las coordenadas del androide conseguimos:

var x = Math.sin(-angle * Math.PI / 180) * 0.5 + 0.5;

  1. Encontramos SINE desde el ángulo de rotación del depósito (valor negativo) convertido en radianes (grado * PI / 180);
  2. Multiplique por el radio del círculo (0.5) para obtener la distancia en el eje X;
  3. Desplaza a DERECHA por radio (+0.5) para que esté en el centro de la forma (en el eje X);

var y = -(Math.cos(-angle * Math.PI / 180) * 0.5 - 0.5);

  1. Buscar COSINE desde el ángulo de rotación del depósito (valor negativo) convertido en radianes (grado * PI / 180);
  2. Multiplique por el radio del círculo (0.5) para obtener la distancia en el eje Y;
  3. Desplaza hacia arriba por radio (-0.5) para estar en la parte superior de la forma (en el eje Y);
  4. Hacer valor positivo (con – signo) como sistema de coordenadas de marcador tiene valores positivos en el eje Y hacia abajo;
  • LocationClient no conectado en el método "onConnected"
  • Convierta la aplicación de Android que utiliza mapas API V1 a Maps Android API V2
  • Cómo cambiar el color del marcador cuando haga clic en marcador en android?
  • Android agrega a las ubicaciones de los usuarios (Google maps)
  • Android || Obtener la información actual de la ruta de Google Maps
  • Google Maps v2 no se muestra después de publicar en el mercado de juegos
  • Android Google Maps v2 - Tecla de depuración vs tecla de liberación
  • Android: ubicación de Google Maps con bajo consumo de batería
  • Visualización de varias rutas utilizando la API de direcciones en Android
  • Google Maps API v2: ¿Cómo hacer que los marcadores se puedan hacer clic?
  • Google Maps CameraUpdateFactory no se ha inicializado
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.