2010-12-02 17 views

Respuesta

19

Suponiendo que tenga el Lugar continuación, obtener el rodamiento haciendo:

float myBearing = location.getBearing(); 

Implementar la plantilla que va a utilizar y ItemizedOverlayOverlayItem. Tendrá que crear una subclase de OverlayItem para agregar la funcionalidad para rotar Drawable. Algo así 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 Disponibles a la OverlayItem. Esto se hace usando el método setMarker().

+0

No debería extender [Overlay] (http://code.google.com/intl/sv-SE/android/add-ons/google-apis/reference/com/google/android/maps/Overlay. html) en su lugar, ya que [MyLocationOverlay] (http://code.google.com/intl/sv-SE/android/add-ons/google-apis/reference/com/google/android/maps/MyLocationOverlay.html) no ? – Jonas

+2

Esto funciona bien para mí, pero tuve que cambiar canvas.getWidth(), canvas.getHeight() a canvas.getWidth()/2, canvas.getHeight()/2 para rotar alrededor del centro de la imagen (o se gira fuera de existencia) –

+2

@Gwyn: respuesta actualizada, gracias – pheelicks

Cuestiones relacionadas