Estoy escribiendo una aplicación de Android donde una de las características es que el mapa rotará de acuerdo con la brújula (es decir, si el teléfono apunta hacia el este, el mapa estará orientado para que el lado este del mapa está arriba). Las respuestas anteriores que he encontrado sugirieron sobre escribir el método onDraw() en mapView, sin embargo, la API cambió el método a final, por lo que no se puede sobrescribir. Como resultado de ello he tratado de sobrescribir el método dispatchDraw()
así:Rotar MapView en Android
Nota:
-Brújula es un valor lógico que si es cierto, girar la vista
-bearing es una variable de tipo float que tiene los grados que la visión debe girar
protected void dispatchDraw(Canvas canvas) {
canvas.save();
if (compass) {
final float w = this.getWidth();
final float h = this.getHeight();
final float scaleFactor = (float)(Math.sqrt(h * h + w * w)/Math.min(w, h));
final float centerX = w/2.0f;
final float centerY = h/2.0f;
canvas.rotate(bearing, centerX, centerY);
canvas.scale(scaleFactor, scaleFactor, centerX, centerY);
}
super.dispatchDraw(canvas);
canvas.restore();
}
¿Por qué necesita para anular onDraw, puede que no sólo animar la vista dentro de su actividad? – schwiz
@Matthew: tiene usted la respuesta, si es así, por favor, dame la solución –