¿Cómo puedo dibujar una flecha que muestre la dirección de manejo en MapView?
Utilizo ese componente de Google Maps MapView
en una aplicación de Android. Puedo usar la ubicación GPS para mostrar mi ubicación con un punto. Pero me gustaría mostrar una flecha en su lugar, que señala la dirección de conducción (rodamiento). Creo que puedo usar el valor del bearing
para obtener el ángulo de la flecha.
¿Cómo puedo hacer eso?
- Android cómo dibujar la pintura en mano libre en MapView con superposición?
- ICS teclado de vuelta, los botones de inicio no tomar contacto cuando se abre en la superposición
- Aplicación de una superposición (filtro de imagen) a un mapa de bits
- Problema de superposición de texto en ViewFlipper ..
- Lista de clics dentro de OverlayItem (MapView para Android)
- Dibujar una superposición similar a MapsApp
- ¿Cómo crear una superposición que bloquea los eventos de toque a la interfaz de usuario debajo de él?
- Cómo obtener el largo y lat valor de cuatro esquinas en el mapa en android?
- Superposiciones de mapa más eficientes en Android
- Primera vista arriba / superpuesta en LinearLayout
- No entiende el método drawAt () para com.google.android.maps.Overlay
- Mostrar un bus móvil en google maps api v2 android
- Superponer una actividad en otra actividad O superponer una vista sobre otra
Asumiendo que usted tiene la localización entonces obtenga el cojinete haciendo:
float myBearing = location.getBearing();
Para implementar la superposición utilizaremos ItemizedOverlay y OverlayItem . Necesitará subclasificar OverlayItem para agregar la funcionalidad para rotar Drawable. Algo como:
public BitmapDrawable rotateDrawable(float angle) { Bitmap arrowBitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.map_pin); // Create blank bitmap of equal size Bitmap canvasBitmap = arrowBitmap.copy(Bitmap.Config.ARGB_8888, true); canvasBitmap.eraseColor(0x00000000); // Create canvas Canvas canvas = new Canvas(canvasBitmap); // Create rotation matrix Matrix rotateMatrix = new Matrix(); rotateMatrix.setRotate(angle, canvas.getWidth()/2, canvas.getHeight()/2); // Draw bitmap onto canvas using matrix canvas.drawBitmap(arrowBitmap, rotateMatrix, null); return new BitmapDrawable(canvasBitmap); }
Entonces todo lo que queda por hacer es aplicar este nuevo Drawable al OverlayItem. Esto se hace usando el método setMarker ().