Ich habe mir alles angesehen, was ich auf diesem finden kann, und habe keine Lösung gefunden. Ich versuche, etwas sehr einfaches zu tun:Android Google Map verschieben Kamera funktioniert nicht
protected void moveCamera(final LatLng position, final float zoom) {
getMap(new OnMapReadyCallback() {
@Override
public void onMapReady(final GoogleMap googleMap) {
logger.debug("Moving map to " + position);
CameraPosition cameraPosition = new CameraPosition.Builder()
.target(position)
.zoom(zoom)
.build();
googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
}
});
}
Nichts passiert. Keine Fehler, keine Kamerabewegung. Ich habe auch moveCamera
stattdessen versucht. Ich habe verschiedene Arten von Anrufen an CameraUpdateFactory
ausprobiert, ich habe versucht, separat zu bewegen und zu zoomen, ich habe versucht, mit einer Handler
mit einer Verzögerung zu buchen. Manchmal funktioniert das perfekt, aber wenn ich das Fragment mit der Karte verlasse und zurückkomme, funktioniert es nicht. Die Karte wird auf den Breitengrad 0,0 und den Standardkarten-Typ zurückgesetzt (es wurde auf Hybrid gesetzt) und ich kann nichts erreichen. Ich weiß, dass die Methode durch Logging-Anweisungen aufgerufen wird. Gibt es irgendeine Art von Lebenszyklus, die ich tun muss, um sicherzustellen, dass die Karte wiederhergestellt werden kann?
Ich würde wirklich lieber nicht zu Mapbox oder etwas wechseln, weil das eine Menge Arbeit wäre, um einen kleinen Fehler zu beheben, aber ich muss das richtig funktionieren.
Warum Sie eine 'CameraUpdate' erstelle und dann ist es nicht benutzen? – nasch
Wenn ich nur die 'moveCamera' und' animateCamera' Teile verwende, tut das nichts. 'LatLngBounds bounds = LatLngBounds.builder(). Build()' (was vermutlich der Fall war, weil 'builder' in Ihrem Code-Snippet nicht definiert war) erzeugt diesen Fehler:' java.lang.IllegalStateException: no included points ' – nasch