setCameraMode3D method
void
setCameraMode3D()
Switches to 3D navigation mode (tilt = 70°) with a smooth animation. Works in both Follow Mode and Free Cam mode.
Implementation
void setCameraMode3D() {
_userPreferredTilt = 70.0;
_targetCameraTilt = 70.0;
final isTickerRunning = (_gpsAnimationTicker?.isTicking == true) || (_ticker?.isTicking == true);
// If not actively tracking or ticker is paused (e.g. stationary), use MapLibre's built-in animateCamera
if (!_isTracking || _isReturningToVehicle || _isCameraTransitioning || !isTickerRunning) {
_cameraTilt = 70.0;
if (stateNotifier.value != null) {
final currentCam = _controller.mapController.cameraPosition;
final targetPos = currentCam?.target ?? stateNotifier.value!.currentPosition;
_controller.mapController.animateCamera(
CameraUpdate.newCameraPosition(
CameraPosition(
target: targetPos,
tilt: 70.0,
zoom: currentCam?.zoom ?? _smoothedZoom ?? 17.0,
bearing: currentCam?.bearing ?? _cameraBearing ?? 0.0,
),
),
duration: const Duration(milliseconds: 600),
);
}
}
}