Попробуйте:
Сначала получите объект CameraUpdate
, используя метод newLatLngBounds
:
CameraUpdate cu = CameraUpdateFactory.newLatLngBounds(bounds_between_two_markers, 10);
Следующий код, который я вставил в мой метод onMapReady()
:
LatLng pos = new LatLng(51.516667, 12.388889);
LatLng pos1 = new LatLng(53.516667, 14.388889);
MarkerOptions markerOptions = setUserMarker(pos);
if(markerOptions != null) {
markerOptions.title(campusLocationName);
mMap.addMarker(markerOptions);
}
LatLngBounds.Builder b = new LatLngBounds.Builder();
b.include(pos);
b.include(pos1);
CameraUpdate cu = CameraUpdateFactory.newLatLngBounds(b.build(), 20);
mMap.animateCamera(cu, 10, new GoogleMap.CancelableCallback() {
@Override
public void onFinish() {
Log.e(TAG, "Start animate onFinish");
CameraPosition cp = new CameraPosition.Builder()
.zoom(mMap.getCameraPosition().zoom)
.target(pos)
.tilt(45.0f)
.bearing(35.0f)
.build();
mMap.animateCamera(CameraUpdateFactory.newCameraPosition(cp));
// mMap.moveCamera(CameraUpdateFactory.newCameraPosition(cp));
}
@Override
public void onCancel() {
Log.e(TAG, "Start animate onCancel");
}
});
Результат с моего устройства:
Используя CancelableCallBack
, вы можете вносить изменения в положение камеры, как и раньше,но если вы не измените коэффициент масштабирования, камера сохранит старый коэффициент масштабирования, вы просто установите bearing
и tilt
, как вам нравится.