MapView in Android drehen

Ich schreibe eine Android-App, bei der sich die Karte gemäß dem Kompass dreht (d. H., Wenn das Telefon nach Osten zeigt, wird die Karte so ausgerichtet, dass die Ostseite der Karte oben liegt). Vorherige Antworten, die ich über das Schreiben der onDraw () -Methode in mapView gefunden habe, wurden vorgeschlagen. Die API hat die Methode jedoch in final geändert, sodass sie nicht überschrieben werden kann. Als Ergebnis habe ich versucht, die zu überschreibendispatchDraw() Methode wie folgt:

Hinweis:

-compass ist ein Boolescher Wert, bei dem die Ansicht gedreht wird, wenn der Wert true ist

-bearing ist eine Float-Variable, die die Gradzahl hat, um die sich die Ansicht drehen soll

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();
}

Antworten auf die Frage(5)

Ihre Antwort auf die Frage