QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
MapPositionTracker Class Reference

#include <MapPositionTracker.h>

+ Inheritance diagram for MapPositionTracker:
+ Collaboration diagram for MapPositionTracker:

Signals

void centerMap (const QGeoCoordinate &coordinate, bool firstPosition)
 
void recenterVehicleTo (const QPointF &screenPoint)
 Consumer moves the map (animated) so the vehicle lands at screenPoint.
 
void activeChanged ()
 
void gcsPositionChanged ()
 
void vehicleCoordinateChanged ()
 
void allowGCSLocationCenterChanged ()
 
void allowVehicleLocationCenterChanged ()
 
void centerGCSWhenVehicleValidChanged ()
 
void keepVehicleCenteredChanged ()
 
void userInteractingChanged ()
 
void animatingChanged ()
 
void firstVehiclePositionReceivedChanged ()
 

Public Member Functions

 MapPositionTracker (QObject *parent=nullptr)
 
bool active () const
 
void setActive (bool active)
 
QGeoCoordinate gcsPosition () const
 
void setGcsPosition (const QGeoCoordinate &position)
 
QGeoCoordinate vehicleCoordinate () const
 
void setVehicleCoordinate (const QGeoCoordinate &coordinate)
 
bool allowGCSLocationCenter () const
 
void setAllowGCSLocationCenter (bool allow)
 
bool allowVehicleLocationCenter () const
 
void setAllowVehicleLocationCenter (bool allow)
 
bool centerGCSWhenVehicleValid () const
 
void setCenterGCSWhenVehicleValid (bool center)
 
bool keepVehicleCentered () const
 
void setKeepVehicleCentered (bool keep)
 
bool userInteracting () const
 
void setUserInteracting (bool interacting)
 
bool animating () const
 Consumer's recenter animation is running: inset evaluation is skipped.
 
void setAnimating (bool animating)
 
bool firstVehiclePositionReceived () const
 
void setFirstVehiclePositionReceived (bool received)
 
Q_INVOKABLE void evaluateInsetFollow (const QPointF &vehicleScreenPoint, const QRectF &centerRect, const QVariantList &cornerRects)
 

Static Public Attributes

static constexpr int kResumeDelayMs = 10000
 Following resumes this long after the user stops interacting.
 

Detailed Description

Map auto-centering policy shared by the map engines (FlightMap/QtLocation and GeoMap). Owns the decisions of when and where to center:

  • one-time centering on the first valid vehicle or GCS position
  • continuous vehicle following (keepVehicleCentered)
  • inset-rect following: recenter when the vehicle drifts outside the unobstructed center area of the viewport (evaluateInsetFollow) Following pauses while the user interacts with the map and resumes after a cooldown. The consumer owns everything engine-specific: coordinate/screen projection, camera movement and recenter animation.

Definition at line 32 of file MapPositionTracker.h.

Constructor & Destructor Documentation

◆ MapPositionTracker()

MapPositionTracker::MapPositionTracker ( QObject *  parent = nullptr)
explicit

Definition at line 16 of file MapPositionTracker.cc.

Member Function Documentation

◆ active()

bool MapPositionTracker::active ( ) const
inline

Definition at line 59 of file MapPositionTracker.h.

Referenced by setActive().

◆ activeChanged

void MapPositionTracker::activeChanged ( )
signal

Referenced by setActive().

◆ allowGCSLocationCenter()

bool MapPositionTracker::allowGCSLocationCenter ( ) const
inline

Definition at line 71 of file MapPositionTracker.h.

◆ allowGCSLocationCenterChanged

void MapPositionTracker::allowGCSLocationCenterChanged ( )
signal

◆ allowVehicleLocationCenter()

bool MapPositionTracker::allowVehicleLocationCenter ( ) const
inline

Definition at line 75 of file MapPositionTracker.h.

◆ allowVehicleLocationCenterChanged

void MapPositionTracker::allowVehicleLocationCenterChanged ( )
signal

◆ animating()

bool MapPositionTracker::animating ( ) const
inline

Consumer's recenter animation is running: inset evaluation is skipped.

Definition at line 95 of file MapPositionTracker.h.

Referenced by setAnimating().

◆ animatingChanged

void MapPositionTracker::animatingChanged ( )
signal

Referenced by setAnimating().

◆ centerGCSWhenVehicleValid()

bool MapPositionTracker::centerGCSWhenVehicleValid ( ) const
inline

One-time GCS centering also fires while a valid vehicle position exists (FlightMap centers on GCS in that case when the map will keep following the vehicle anyway)

Definition at line 82 of file MapPositionTracker.h.

◆ centerGCSWhenVehicleValidChanged

void MapPositionTracker::centerGCSWhenVehicleValidChanged ( )
signal

◆ centerMap

void MapPositionTracker::centerMap ( const QGeoCoordinate &  coordinate,
bool  firstPosition 
)
signal

Consumer sets its map center. firstPosition: first vehicle position, also apply the initial zoom.

Referenced by setVehicleCoordinate().

◆ evaluateInsetFollow()

void MapPositionTracker::evaluateInsetFollow ( const QPointF &  vehicleScreenPoint,
const QRectF &  centerRect,
const QVariantList &  cornerRects 
)

Inset-follow evaluation, called periodically by the consumer with the vehicle's current screen position, the unobstructed center rect and the (possibly empty) list of corner rects covered by UI elements. Emits recenterVehicleTo(centerRect.center()) when the vehicle is outside the center rect or under a corner rect.

Definition at line 178 of file MapPositionTracker.cc.

References recenterVehicleTo().

◆ firstVehiclePositionReceived()

bool MapPositionTracker::firstVehiclePositionReceived ( ) const
inline

Writable: consumers set it true to suppress the one-time vehicle centering (e.g. after fitting the view to mission items instead)

Definition at line 101 of file MapPositionTracker.h.

◆ firstVehiclePositionReceivedChanged

void MapPositionTracker::firstVehiclePositionReceivedChanged ( )
signal

◆ gcsPosition()

QGeoCoordinate MapPositionTracker::gcsPosition ( ) const
inline

Definition at line 63 of file MapPositionTracker.h.

◆ gcsPositionChanged

void MapPositionTracker::gcsPositionChanged ( )
signal

Referenced by setGcsPosition().

◆ keepVehicleCentered()

bool MapPositionTracker::keepVehicleCentered ( ) const
inline

Definition at line 86 of file MapPositionTracker.h.

◆ keepVehicleCenteredChanged

void MapPositionTracker::keepVehicleCenteredChanged ( )
signal

Referenced by setKeepVehicleCentered().

◆ recenterVehicleTo

void MapPositionTracker::recenterVehicleTo ( const QPointF &  screenPoint)
signal

Consumer moves the map (animated) so the vehicle lands at screenPoint.

Referenced by evaluateInsetFollow().

◆ setActive()

void MapPositionTracker::setActive ( bool  active)

Definition at line 23 of file MapPositionTracker.cc.

References active(), and activeChanged().

◆ setAllowGCSLocationCenter()

void MapPositionTracker::setAllowGCSLocationCenter ( bool  allow)

Definition at line 64 of file MapPositionTracker.cc.

References allowGCSLocationCenterChanged().

◆ setAllowVehicleLocationCenter()

void MapPositionTracker::setAllowVehicleLocationCenter ( bool  allow)

Definition at line 77 of file MapPositionTracker.cc.

References allowVehicleLocationCenterChanged().

◆ setAnimating()

void MapPositionTracker::setAnimating ( bool  animating)

Definition at line 123 of file MapPositionTracker.cc.

References animating(), and animatingChanged().

◆ setCenterGCSWhenVehicleValid()

void MapPositionTracker::setCenterGCSWhenVehicleValid ( bool  center)

Definition at line 90 of file MapPositionTracker.cc.

References centerGCSWhenVehicleValidChanged().

◆ setFirstVehiclePositionReceived()

void MapPositionTracker::setFirstVehiclePositionReceived ( bool  received)

Definition at line 132 of file MapPositionTracker.cc.

References firstVehiclePositionReceivedChanged().

◆ setGcsPosition()

void MapPositionTracker::setGcsPosition ( const QGeoCoordinate &  position)

Definition at line 38 of file MapPositionTracker.cc.

References gcsPositionChanged().

◆ setKeepVehicleCentered()

void MapPositionTracker::setKeepVehicleCentered ( bool  keep)

Definition at line 99 of file MapPositionTracker.cc.

References keepVehicleCenteredChanged().

◆ setUserInteracting()

void MapPositionTracker::setUserInteracting ( bool  interacting)

Definition at line 108 of file MapPositionTracker.cc.

References userInteractingChanged().

◆ setVehicleCoordinate()

void MapPositionTracker::setVehicleCoordinate ( const QGeoCoordinate &  coordinate)

Definition at line 48 of file MapPositionTracker.cc.

References centerMap(), and vehicleCoordinateChanged().

◆ userInteracting()

bool MapPositionTracker::userInteracting ( ) const
inline

Definition at line 90 of file MapPositionTracker.h.

◆ userInteractingChanged

void MapPositionTracker::userInteractingChanged ( )
signal

Referenced by setUserInteracting().

◆ vehicleCoordinate()

QGeoCoordinate MapPositionTracker::vehicleCoordinate ( ) const
inline

Definition at line 67 of file MapPositionTracker.h.

◆ vehicleCoordinateChanged

void MapPositionTracker::vehicleCoordinateChanged ( )
signal

Referenced by setVehicleCoordinate().

Member Data Documentation

◆ kResumeDelayMs

constexpr int MapPositionTracker::kResumeDelayMs = 10000
staticconstexpr

Following resumes this long after the user stops interacting.

Definition at line 57 of file MapPositionTracker.h.


The documentation for this class was generated from the following files: