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:
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user