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

#include <QGCMapPolygon.h>

+ Inheritance diagram for QGCMapPolygon:
+ Collaboration diagram for QGCMapPolygon:

Signals

void countChanged (int count)
 
void pathChanged (void)
 
void dirtyChanged (bool dirty)
 
void cleared (void)
 
void centerChanged (QGeoCoordinate center)
 
void centerDragChanged (bool centerDrag)
 
void interactiveChanged (bool interactive)
 
bool isValidChanged (void)
 
bool isEmptyChanged (void)
 
void traceModeChanged (bool traceMode)
 
void showAltColorChanged (bool showAltColor)
 
void selectedVertexChanged (int index)
 

Public Member Functions

 QGCMapPolygon (QObject *parent=nullptr)
 
 QGCMapPolygon (const QGCMapPolygon &other, QObject *parent=nullptr)
 
 ~QGCMapPolygon () override
 
const QGCMapPolygonoperator= (const QGCMapPolygon &other)
 
int count READ count NOTIFY countChanged (QVariantList path READ path NOTIFY pathChanged) 1(double area READ area NOTIFY pathChanged) 1(QmlObjectListModel *pathModel READ qmlPathModel CONSTANT) 1(bool dirty READ dirty WRITE setDirty NOTIFY dirtyChanged) 1(QGeoCoordinate center READ center WRITE setCenter NOTIFY centerChanged) 1(bool centerDrag READ centerDrag WRITE setCenterDrag NOTIFY centerDragChanged) 1(bool interactive READ interactive WRITE setInteractive NOTIFY interactiveChanged) 1(bool isValid READ isValid NOTIFY isValidChanged) 1(bool empty READ empty NOTIFY isEmptyChanged) 1(bool traceMode READ traceMode WRITE setTraceMode NOTIFY traceModeChanged) 1(bool showAltColor READ showAltColor WRITE setShowAltColor NOTIFY showAltColorChanged) 1(int selectedVertex READ selectedVertex WRITE selectVertex NOTIFY selectedVertexChanged) 1 void clear(void)
 
void appendVertex (const QGeoCoordinate &coordinate)
 
void removeVertex (int vertexIndex)
 
void appendVertices (const QVariantList &varCoords)
 
void appendVertices (const QList< QGeoCoordinate > &coordinates)
 
void adjustVertex (int vertexIndex, const QGeoCoordinate coordinate)
 
void splitPolygonSegment (int vertexIndex)
 Splits the segment comprised of vertextIndex -> vertexIndex + 1.
 
bool containsCoordinate (const QGeoCoordinate &coordinate) const
 Returns true if the specified coordinate is within the polygon.
 
void offset (double distance)
 Offsets the current polygon edges by the specified distance in meters.
 
bool loadKMLOrSHPFile (const QString &file)
 
QList< QGeoCoordinate > coordinateList (void) const
 Returns the path in a list of QGeoCoordinate's format.
 
QGeoCoordinate vertexCoordinate (int vertex) const
 Returns the QGeoCoordinate for the vertex specified.
 
void verifyClockwiseWinding (void)
 Adjust polygon winding order to be clockwise (if needed)
 
void beginReset (void)
 
void endReset (void)
 
void saveToJson (QJsonObject &json)
 
bool loadFromJson (const QJsonObject &json, bool required, QString &errorString)
 
QList< QPointF > nedPolygon (void) const
 Convert polygon to NED and return (D is ignored)
 
double area (void) const
 Returns the area of the polygon in meters squared.
 
QDomElement kmlPolygonElement (KMLDomDocument &domDocument)
 
int count (void) const
 
bool dirty (void) const
 
void setDirty (bool dirty)
 
QGeoCoordinate center (void) const
 
bool centerDrag (void) const
 
bool interactive (void) const
 
bool isValid (void) const
 
bool empty (void) const
 
bool traceMode (void) const
 
bool showAltColor (void) const
 
int selectedVertex () const
 
QVariantList path (void) const
 
QmlObjectListModelqmlPathModel (void)
 
QmlObjectListModelpathModel (void)
 
void setPath (const QList< QGeoCoordinate > &path)
 
void setPath (const QVariantList &path)
 
void setCenter (QGeoCoordinate newCenter)
 
void setCenterDrag (bool centerDrag)
 
void setInteractive (bool interactive)
 
void setTraceMode (bool traceMode)
 
void setShowAltColor (bool showAltColor)
 
void selectVertex (int index)
 

Static Public Attributes

static constexpr const char * jsonPolygonKey = "polygon"
 

Detailed Description

The QGCMapPolygon class provides a polygon which can be displayed on a map using a map visuals control. It maintains a representation of the polygon on QVariantList and QmlObjectListModel format.

Definition at line 15 of file QGCMapPolygon.h.

Constructor & Destructor Documentation

◆ QGCMapPolygon() [1/2]

QGCMapPolygon::QGCMapPolygon ( QObject *  parent = nullptr)

Definition at line 16 of file QGCMapPolygon.cc.

◆ QGCMapPolygon() [2/2]

QGCMapPolygon::QGCMapPolygon ( const QGCMapPolygon other,
QObject *  parent = nullptr 
)

Definition at line 26 of file QGCMapPolygon.cc.

◆ ~QGCMapPolygon()

QGCMapPolygon::~QGCMapPolygon ( )
override

Definition at line 38 of file QGCMapPolygon.cc.

References pathChanged(), and qgcApp.

Member Function Documentation

◆ adjustVertex()

void QGCMapPolygon::adjustVertex ( int  vertexIndex,
const QGeoCoordinate  coordinate 
)

Adjust the value for the specified coordinate

Parameters
vertexIndexPolygon point index to modify (0-based)
coordinateNew coordinate for point

Definition at line 95 of file QGCMapPolygon.cc.

References pathChanged(), setDirty(), and QmlObjectListModel::value().

Referenced by setCenter().

◆ appendVertex()

void QGCMapPolygon::appendVertex ( const QGeoCoordinate &  coordinate)

Definition at line 270 of file QGCMapPolygon.cc.

References QmlObjectListModel::append(), and pathChanged().

Referenced by splitPolygonSegment().

◆ appendVertices() [1/2]

void QGCMapPolygon::appendVertices ( const QList< QGeoCoordinate > &  coordinates)

◆ appendVertices() [2/2]

void QGCMapPolygon::appendVertices ( const QVariantList &  varCoords)

◆ area()

double QGCMapPolygon::area ( void  ) const

Returns the area of the polygon in meters squared.

Definition at line 531 of file QGCMapPolygon.cc.

References nedPolygon().

Referenced by TransectStyleComplexItem::coveredArea().

◆ beginReset()

void QGCMapPolygon::beginReset ( void  )

◆ center()

QGeoCoordinate QGCMapPolygon::center ( void  ) const
inline

Definition at line 103 of file QGCMapPolygon.h.

Referenced by SurveyComplexItem::centerCoordinate().

◆ centerChanged

void QGCMapPolygon::centerChanged ( QGeoCoordinate  center)
signal

Referenced by setCenter().

◆ centerDrag()

bool QGCMapPolygon::centerDrag ( void  ) const
inline

Definition at line 104 of file QGCMapPolygon.h.

Referenced by setCenterDrag().

◆ centerDragChanged

void QGCMapPolygon::centerDragChanged ( bool  centerDrag)
signal

Referenced by setCenterDrag().

◆ cleared

void QGCMapPolygon::cleared ( void  )
signal

◆ containsCoordinate()

bool QGCMapPolygon::containsCoordinate ( const QGeoCoordinate &  coordinate) const

Returns true if the specified coordinate is within the polygon.

Definition at line 162 of file QGCMapPolygon.cc.

◆ coordinateList()

QList< QGeoCoordinate > QGCMapPolygon::coordinateList ( void  ) const

Returns the path in a list of QGeoCoordinate's format.

Definition at line 233 of file QGCMapPolygon.cc.

Referenced by StructureScanComplexItem::greatestDistanceTo(), StructureScanComplexItem::setCoordinate(), and TransectStyleComplexItem::setCoordinate().

◆ count()

◆ countChanged [1/2]

void QGCMapPolygon::countChanged ( int  count)
signal

◆ countChanged() [2/2]

int count READ count NOTIFY QGCMapPolygon::countChanged ( QVariantList path READ path NOTIFY  pathChanged)

◆ dirty()

bool QGCMapPolygon::dirty ( void  ) const
inline

Definition at line 101 of file QGCMapPolygon.h.

Referenced by setDirty().

◆ dirtyChanged

void QGCMapPolygon::dirtyChanged ( bool  dirty)
signal

◆ empty()

bool QGCMapPolygon::empty ( void  ) const
inline

Definition at line 107 of file QGCMapPolygon.h.

References QmlObjectListModel::count().

◆ endReset()

void QGCMapPolygon::endReset ( void  )

◆ interactive()

bool QGCMapPolygon::interactive ( void  ) const
inline

Definition at line 105 of file QGCMapPolygon.h.

Referenced by setInteractive().

◆ interactiveChanged

void QGCMapPolygon::interactiveChanged ( bool  interactive)
signal

Referenced by setInteractive().

◆ isEmptyChanged

bool QGCMapPolygon::isEmptyChanged ( void  )
signal

◆ isValid()

bool QGCMapPolygon::isValid ( void  ) const
inline

◆ isValidChanged

◆ kmlPolygonElement()

QDomElement QGCMapPolygon::kmlPolygonElement ( KMLDomDocument domDocument)

◆ loadFromJson()

bool QGCMapPolygon::loadFromJson ( const QJsonObject &  json,
bool  required,
QString &  errorString 
)

Load a polygon from json

Parameters
jsonJson object to load from
requiredtrue: no polygon in object will generate error
errorStringError string if return is false
Returns
true: success, false: failure (errorString set)

Definition at line 206 of file QGCMapPolygon.cc.

References QmlObjectListModel::append(), errorString, jsonPolygonKey, JsonHelper::loadGeoCoordinateArray(), pathChanged(), setDirty(), and JsonParsing::validateRequiredKeys().

Referenced by StructureScanComplexItem::load(), and QGCFencePolygon::loadFromJson().

◆ loadKMLOrSHPFile()

bool QGCMapPolygon::loadKMLOrSHPFile ( const QString &  file)

Loads a polygon from a KML/SHP file

Returns
true: success

Definition at line 509 of file QGCMapPolygon.cc.

References appendVertices(), beginReset(), endReset(), errorString, and qgcApp.

◆ nedPolygon()

QList< QPointF > QGCMapPolygon::nedPolygon ( void  ) const

Convert polygon to NED and return (D is ignored)

Definition at line 431 of file QGCMapPolygon.cc.

References QGCGeo::convertGeoToNed(), QmlObjectListModel::count(), count(), nedPolygon(), and vertexCoordinate().

Referenced by area(), nedPolygon(), and offset().

◆ offset()

void QGCMapPolygon::offset ( double  distance)

Offsets the current polygon edges by the specified distance in meters.

Definition at line 455 of file QGCMapPolygon.cc.

References appendVertices(), beginReset(), QGCGeo::convertNedToGeo(), count(), endReset(), nedPolygon(), and vertexCoordinate().

◆ operator=()

const QGCMapPolygon & QGCMapPolygon::operator= ( const QGCMapPolygon other)

Definition at line 58 of file QGCMapPolygon.cc.

References appendVertices(), path(), and setDirty().

Referenced by QGCFencePolygon::operator=().

◆ path()

QVariantList QGCMapPolygon::path ( void  ) const
inline

Definition at line 112 of file QGCMapPolygon.h.

Referenced by operator=(), GeoFenceManager::sendToVehicle(), setPath(), and setPath().

◆ pathChanged

◆ pathModel()

QmlObjectListModel & QGCMapPolygon::pathModel ( void  )
inline

Definition at line 114 of file QGCMapPolygon.h.

◆ qmlPathModel()

QmlObjectListModel * QGCMapPolygon::qmlPathModel ( void  )
inline

Definition at line 113 of file QGCMapPolygon.h.

◆ removeVertex()

void QGCMapPolygon::removeVertex ( int  vertexIndex)

Definition at line 315 of file QGCMapPolygon.cc.

References pathChanged(), QmlObjectListModel::removeAt(), and selectVertex().

◆ saveToJson()

void QGCMapPolygon::saveToJson ( QJsonObject &  json)

Saves the polygon to the json object.

Parameters
jsonJson object to save to

Definition at line 197 of file QGCMapPolygon.cc.

References jsonPolygonKey, JsonHelper::saveGeoCoordinateArray(), and setDirty().

Referenced by StructureScanComplexItem::save(), and QGCFencePolygon::saveToJson().

◆ selectedVertex()

int QGCMapPolygon::selectedVertex ( ) const
inline

Definition at line 110 of file QGCMapPolygon.h.

◆ selectedVertexChanged

void QGCMapPolygon::selectedVertexChanged ( int  index)
signal

Referenced by selectVertex().

◆ selectVertex()

void QGCMapPolygon::selectVertex ( int  index)

Definition at line 648 of file QGCMapPolygon.cc.

References count(), and selectedVertexChanged().

Referenced by removeVertex(), and splitPolygonSegment().

◆ setCenter()

void QGCMapPolygon::setCenter ( QGeoCoordinate  newCenter)

◆ setCenterDrag()

void QGCMapPolygon::setCenterDrag ( bool  centerDrag)

Definition at line 405 of file QGCMapPolygon.cc.

References centerDrag(), and centerDragChanged().

◆ setDirty()

◆ setInteractive()

void QGCMapPolygon::setInteractive ( bool  interactive)

Definition at line 413 of file QGCMapPolygon.cc.

References interactive(), and interactiveChanged().

◆ setPath() [1/2]

void QGCMapPolygon::setPath ( const QList< QGeoCoordinate > &  path)

◆ setPath() [2/2]

void QGCMapPolygon::setPath ( const QVariantList &  path)

◆ setShowAltColor()

void QGCMapPolygon::setShowAltColor ( bool  showAltColor)

Definition at line 641 of file QGCMapPolygon.cc.

References showAltColor(), and showAltColorChanged().

◆ setTraceMode()

void QGCMapPolygon::setTraceMode ( bool  traceMode)

Definition at line 633 of file QGCMapPolygon.cc.

References traceMode(), and traceModeChanged().

◆ showAltColor()

bool QGCMapPolygon::showAltColor ( void  ) const
inline

Definition at line 109 of file QGCMapPolygon.h.

Referenced by setShowAltColor().

◆ showAltColorChanged

void QGCMapPolygon::showAltColorChanged ( bool  showAltColor)
signal

Referenced by setShowAltColor().

◆ splitPolygonSegment()

void QGCMapPolygon::splitPolygonSegment ( int  vertexIndex)

Splits the segment comprised of vertextIndex -> vertexIndex + 1.

Definition at line 244 of file QGCMapPolygon.cc.

References appendVertex(), QmlObjectListModel::insert(), pathChanged(), and selectVertex().

◆ traceMode()

bool QGCMapPolygon::traceMode ( void  ) const
inline

Definition at line 108 of file QGCMapPolygon.h.

Referenced by setTraceMode().

◆ traceModeChanged

void QGCMapPolygon::traceModeChanged ( bool  traceMode)
signal

◆ verifyClockwiseWinding()

void QGCMapPolygon::verifyClockwiseWinding ( void  )

Adjust polygon winding order to be clockwise (if needed)

Definition at line 551 of file QGCMapPolygon.cc.

References appendVertices(), beginReset(), and endReset().

◆ vertexCoordinate()

QGeoCoordinate QGCMapPolygon::vertexCoordinate ( int  vertex) const

Returns the QGeoCoordinate for the vertex specified.

Definition at line 421 of file QGCMapPolygon.cc.

Referenced by StructureScanComplexItem::appendMissionItems(), StructureScanComplexItem::coordinate(), nedPolygon(), and offset().

Member Data Documentation

◆ jsonPolygonKey

constexpr const char* QGCMapPolygon::jsonPolygonKey = "polygon"
staticconstexpr

Definition at line 125 of file QGCMapPolygon.h.

Referenced by StructureScanComplexItem::load(), loadFromJson(), and saveToJson().


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