From 2a9ecabad86f37ccfcf8de9d0d5853238678ab4c Mon Sep 17 00:00:00 2001 From: Remek Zajac Date: Mon, 19 Apr 2021 17:09:06 +0100 Subject: [PATCH] Only accept sufficiently accurate location updates (#9483) * only accept sufficiently accurate location updates --- src/PositionManager/PositionManager.cpp | 6 ++++-- src/PositionManager/PositionManager.h | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/PositionManager/PositionManager.cpp b/src/PositionManager/PositionManager.cpp index 370694dfbcd..0a15dbdb39d 100644 --- a/src/PositionManager/PositionManager.cpp +++ b/src/PositionManager/PositionManager.cpp @@ -78,9 +78,11 @@ void QGCPositionManager::_positionUpdated(const QGeoPositionInfo &update) QGeoCoordinate newGCSPosition = QGeoCoordinate(); qreal newGCSHeading = update.attribute(QGeoPositionInfo::Direction); - if (update.isValid()) { + if (update.isValid() && update.hasAttribute(QGeoPositionInfo::HorizontalAccuracy)) { // Note that gcsPosition filters out possible crap values - if (qAbs(update.coordinate().latitude()) > 0.001 && qAbs(update.coordinate().longitude()) > 0.001) { + if (qAbs(update.coordinate().latitude()) > 0.001 && + qAbs(update.coordinate().longitude()) > 0.001 && + update.attribute(QGeoPositionInfo::HorizontalAccuracy) <= MinHorizonalAccuracyMeters) { newGCSPosition = update.coordinate(); } } diff --git a/src/PositionManager/PositionManager.h b/src/PositionManager/PositionManager.h index 1d955978004..4c6575e01c7 100644 --- a/src/PositionManager/PositionManager.h +++ b/src/PositionManager/PositionManager.h @@ -21,7 +21,7 @@ class QGCPositionManager : public QGCTool { Q_OBJECT public: - + static constexpr size_t MinHorizonalAccuracyMeters = 100; QGCPositionManager(QGCApplication* app, QGCToolbox* toolbox); ~QGCPositionManager();