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;
  • Mapa no funciona después de instalar desde la tienda de juegos en android
  • Obtener la ubicación seleccionada de la actividad de Google Maps
  • Plaza en blanco en Google Maps
  • ¿Qué algoritmo utilizan los mapas de Google para calcular la dirección entre 2 puntos?
  • Cómo obtener el espacio de latitud / longitud en Google Map V2 para Android
  • ¿Es posible especificar el <uses-permission> mediante programación?
  • Deshabilitar el botón de selección mientras selecciona la ubicación de la ubicación anónima mediante la opción Colocar selector google API en android
  • Error en Google Maps android "android Error al cargar el mapa. No se pudo contactar con los servidores de Google. "
  • Com.google.android.maps.MapView muestra los mosaicos desactualizados
  • Cómo obtener una clave de versión de Google Maps API v2
  • Mapa de Google que muestra texto de derechos de autor adicional en algunos dispositivos
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.