Unverified Commit 6e68375f authored by Don Gagne's avatar Don Gagne Committed by GitHub

Merge pull request #8195 from DonLakeFlyer/GCSHeading

Don't show GCS heading unless it comes from plugin
parents ac65f8e4 19c73739
...@@ -35,7 +35,7 @@ Map { ...@@ -35,7 +35,7 @@ Map {
property string mapName: 'defaultMap' property string mapName: 'defaultMap'
property bool isSatelliteMap: activeMapType.name.indexOf("Satellite") > -1 || activeMapType.name.indexOf("Hybrid") > -1 property bool isSatelliteMap: activeMapType.name.indexOf("Satellite") > -1 || activeMapType.name.indexOf("Hybrid") > -1
property var gcsPosition: QGroundControl.qgcPositionManger.gcsPosition property var gcsPosition: QGroundControl.qgcPositionManger.gcsPosition
property int gcsHeading: QGroundControl.qgcPositionManger.gcsHeading property real gcsHeading: QGroundControl.qgcPositionManger.gcsHeading
property bool userPanned: false ///< true: the user has manually panned the map property bool userPanned: false ///< true: the user has manually panned the map
property bool allowGCSLocationCenter: false ///< true: map will center/zoom to gcs location one time property bool allowGCSLocationCenter: false ///< true: map will center/zoom to gcs location one time
property bool allowVehicleLocationCenter: false ///< true: map will center/zoom to vehicle location one time property bool allowVehicleLocationCenter: false ///< true: map will center/zoom to vehicle location one time
......
...@@ -13,12 +13,6 @@ ...@@ -13,12 +13,6 @@
QGCPositionManager::QGCPositionManager(QGCApplication* app, QGCToolbox* toolbox) QGCPositionManager::QGCPositionManager(QGCApplication* app, QGCToolbox* toolbox)
: QGCTool (app, toolbox) : QGCTool (app, toolbox)
, _updateInterval (0)
, _gcsHeading (NAN)
, _currentSource (nullptr)
, _defaultSource (nullptr)
, _nmeaSource (nullptr)
, _simulatedSource (nullptr)
{ {
} }
...@@ -34,6 +28,9 @@ void QGCPositionManager::setToolbox(QGCToolbox *toolbox) ...@@ -34,6 +28,9 @@ void QGCPositionManager::setToolbox(QGCToolbox *toolbox)
QGCTool::setToolbox(toolbox); QGCTool::setToolbox(toolbox);
//-- First see if plugin provides a position source //-- First see if plugin provides a position source
_defaultSource = toolbox->corePlugin()->createPositionSource(this); _defaultSource = toolbox->corePlugin()->createPositionSource(this);
if (_defaultSource) {
_usingPluginSource = true;
}
if (qgcApp()->runningUnitTests()) { if (qgcApp()->runningUnitTests()) {
// Units test on travis fail due to lack of position source // Units test on travis fail due to lack of position source
...@@ -91,7 +88,14 @@ void QGCPositionManager::_positionUpdated(const QGeoPositionInfo &update) ...@@ -91,7 +88,14 @@ void QGCPositionManager::_positionUpdated(const QGeoPositionInfo &update)
_gcsPosition = newGCSPosition; _gcsPosition = newGCSPosition;
emit gcsPositionChanged(_gcsPosition); emit gcsPositionChanged(_gcsPosition);
} }
if (newGCSHeading != _gcsHeading) {
// At this point only plugins support gcs heading. The reason is that the quality of heading information from a local
// position device (not a compass) is unknown. In many cases it can only be trusted if the GCS location is moving above
// a certain rate of speed. When it is not, or the gcs is standing still the heading is just random. We don't want these
// random heading to be shown on the fly view. So until we can get a true compass based heading or some smarted heading quality
// information which takes into account the speed of movement we normally don't set a heading. We do use the heading though
// if the plugin overrides the position source. In that case we assume that it hopefully know what it is doing.
if (_usingPluginSource && newGCSHeading != _gcsHeading) {
_gcsHeading = newGCSHeading; _gcsHeading = newGCSHeading;
emit gcsHeadingChanged(_gcsHeading); emit gcsHeadingChanged(_gcsHeading);
} }
......
...@@ -56,13 +56,14 @@ signals: ...@@ -56,13 +56,14 @@ signals:
void positionInfoUpdated(QGeoPositionInfo update); void positionInfoUpdated(QGeoPositionInfo update);
private: private:
int _updateInterval; int _updateInterval = 0;
QGeoPositionInfo _geoPositionInfo; QGeoPositionInfo _geoPositionInfo;
QGeoCoordinate _gcsPosition; QGeoCoordinate _gcsPosition;
qreal _gcsHeading; qreal _gcsHeading = qQNaN();
QGeoPositionInfoSource* _currentSource; QGeoPositionInfoSource* _currentSource = nullptr;
QGeoPositionInfoSource* _defaultSource; QGeoPositionInfoSource* _defaultSource = nullptr;
QNmeaPositionInfoSource* _nmeaSource; QNmeaPositionInfoSource* _nmeaSource = nullptr;
QGeoPositionInfoSource* _simulatedSource; QGeoPositionInfoSource* _simulatedSource = nullptr;
bool _usingPluginSource = false;
}; };
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment