Track rögzítés javítása, távolság limit idő alapú módosítása, Fix #9 @30m

This commit is contained in:
2026-07-11 18:28:01 +02:00
parent fc31acb80f
commit d2605b00da
2 changed files with 80 additions and 23 deletions
@@ -329,17 +329,35 @@ class TrackingController extends GetxController {
pos.latitude,
pos.longitude,
);
// Szűrés: ugrásszerű változás (pl. GPS lock elvesztése) ignorálása
if (segmentDist > 100) {
// Szűrés: valóban LEHETETLEN ugrás kiszűrése (pl. GPS lock-
// vesztés utáni téves fix) — az ELTELT IDŐT is figyelembe véve.
// A korábbi, sima 100 m-es távolság-küszöb gyorsabb haladásnál
// (pl. földúton autóval) egy rövid, teljesen normál jel-
// kimaradás után érkező, VALÓS pontokat is kiszűrt, mert
// néhány másodperc alatt egy autó simán megtesz 100+ métert.
final elapsedSec =
point.timestamp.difference(_lastPoint!.timestamp).inMilliseconds /
1000.0;
final impliedSpeedMs =
elapsedSec > 0 ? segmentDist / elapsedSec : double.infinity;
// ~50 m/s = 180 km/h — terepen, földúton ennél gyorsabban senki
// nem halad, tehát ami ennél nagyobb sebességet implikálna, az
// GPS-hiba, nem valódi mozgás.
const maxPlausibleSpeedMs = 50.0;
if (impliedSpeedMs > maxPlausibleSpeedMs) {
AppLogger.w(
'_onPosition',
'GPS ugrás kiszűrve: ${segmentDist.toStringAsFixed(0)}m '
'(pts: ${livePoints.length})');
_lastPoint = point; // reset — következő pont ettől mér
'GPS ugrás kiszűrve: ${segmentDist.toStringAsFixed(0)}m / '
'${elapsedSec.toStringAsFixed(1)}s '
'(${(impliedSpeedMs * 3.6).toStringAsFixed(0)} km/h, '
'pts: ${livePoints.length})');
_lastPoint = point;
return;
}
}
_accumulatedDistance += segmentDist;
sessionDistance.value = _accumulatedDistance;