setTracking method
void
setTracking(
- bool tracking
)
Implementation
void setTracking(bool tracking) {
debugPrint('[GPS_ANIM] setTracking called: $tracking, was: $_isTracking');
if (_isTracking == tracking) return;
bool wasTracking = _isTracking;
_isTracking = tracking;
_fireStateUpdate();
if (!wasTracking && tracking) {
final isTickerRunning = (_gpsAnimationTicker?.isTicking == true) || (_ticker?.isTicking == true);
if (isTickerRunning) {
// If ticker is running, let the ticker smoothly slide the camera back to the vehicle
_isReturningToVehicle = true;
_isCameraTransitioning = false; // No need for static animateCamera
} else {
// If stationary (no ticker running), use MapLibre's built-in animateCamera
_isCameraTransitioning = true;
_isReturningToVehicle = true;
final targetPos = _lastGpsPos ?? stateNotifier.value?.currentPosition;
if (targetPos != null) {
final targetBearing = stateNotifier.value?.vehicleBearing ?? 0.0;
_controller.mapController.animateCamera(
CameraUpdate.newCameraPosition(
CameraPosition(
target: _offsetCameraTarget(targetPos),
tilt: _cameraTilt,
zoom: 17.0,
bearing: targetBearing,
),
),
duration: const Duration(milliseconds: 800),
).then((_) {
_isCameraTransitioning = false;
_isReturningToVehicle = false;
});
} else {
_isCameraTransitioning = false;
_isReturningToVehicle = false;
}
}
}
}