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