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