12 :
KMLDomDocument(QStringLiteral(
"%1 Plan KML").arg(QCoreApplication::applicationName()))
17void KMLPlanDomDocument::_addFlightPath(
Vehicle* vehicle, QList<MissionItem*> rgMissionItems)
19 if (rgMissionItems.count() == 0) {
23 QDomElement itemFolderElement =
addFolder(
"Items");
25 QDomElement flightPathElement = createElement(
"Placemark");
28 addTextElement(flightPathElement,
"styleUrl", QStringLiteral(
"#%1").arg(_missionLineStyleName));
31 addLookAt(flightPathElement, rgMissionItems[0]->coordinate());
34 QList<QGeoCoordinate> rgFlightCoords;
35 QGeoCoordinate homeCoord = rgMissionItems[0]->coordinate();
39 double altAdjustment = item->frame() == MAV_FRAME_GLOBAL ? 0 : homeCoord.altitude();
42 QGeoCoordinate coord = homeCoord;
43 coord.setAltitude(item->param7() + altAdjustment);
44 rgFlightCoords += coord;
47 QGeoCoordinate coord = item->coordinate();
48 coord.setAltitude(coord.altitude() + altAdjustment);
52 rgFlightCoords += coord;
57 QDomElement wpPlacemarkElement = createElement(
"Placemark");
58 addTextElement(wpPlacemarkElement,
"name", QStringLiteral(
"%1 %2").arg(QString::number(item->sequenceNumber())).arg(item->command() == MAV_CMD_NAV_WAYPOINT ?
"" : uiInfo->friendlyName()));
62 htmlString += QStringLiteral(
"Index: %1\n").arg(item->sequenceNumber());
66 htmlString += QStringLiteral(
"Lat: %1\n").arg(QString::number(coord.latitude(),
'f', 7));
67 htmlString += QStringLiteral(
"Lon: %1\n").arg(QString::number(coord.longitude(),
'f', 7));
69 (void)
addPoint(wpPlacemarkElement, coord);
70 (void) itemFolderElement.appendChild(wpPlacemarkElement);
80 for (
int i=0; i<visualItems->
count(); i++) {
90 _addFlightPath(vehicle, rgMissionItems);
91 _addComplexItems(visualItems);
94void KMLPlanDomDocument::_addStyles(
void)
98 QDomElement missionLineStyle =
addStyle(_missionLineStyleName);
99 addLineStyle(missionLineStyle, palette.mapMissionTrajectory(), 4);
102 addPolyStyle(surveyStyle, palette.surveyPolygonInterior(), 0.5);
103 addLineStyle(surveyStyle, palette.surveyPolygonInterior(), 1, 0.5);
virtual void addKMLVisuals(KMLPlanDomDocument &domDocument)
Used to convert a Plan to a KML document.
void addPolyStyle(QDomElement &styleElement, const QColor &color, double opacity=1.0)
void addLineStyle(QDomElement &styleElement, const QColor &color, int width=1, double opacity=1.0)
void addLookAt(QDomElement &parentElement, const QGeoCoordinate &coord)
QDomElement _rootDocumentElement
QDomElement addFolder(const QString &name)
QDomElement addLineString(QDomElement &parent, const QList< QGeoCoordinate > &coords, const QString &altitudeMode=QLatin1String("absolute"), bool extrude=true, bool tessellate=true)
QDomElement addPoint(QDomElement &parent, const QGeoCoordinate &coord, const QString &altitudeMode=QLatin1String("absolute"), bool extrude=true)
void addTextElement(QDomElement &parentElement, const QString &name, const QString &value)
void addDescription(QDomElement &parent, const QString &content)
static constexpr const char * balloonStyleName
QDomElement addStyle(const QString &id)
void addMission(Vehicle *vehicle, QmlObjectListModel *visualItems, QList< MissionItem * > rgMissionItems)
static constexpr const char * surveyPolygonStyleName
static MissionCommandTree * instance()
const MissionCommandUIInfo * getUIInfo(Vehicle *vehicle, QGCMAVLink::VehicleClass_t vtolMode, MAV_CMD command)
UI Information associated with a mission command (MAV_CMD)
bool isTakeoffCommand(void) const
QString friendlyName(void) const
bool specifiesCoordinate(void) const
bool isStandaloneCoordinate(void) const
QGCPalette is used in QML ui to expose color properties for the QGC palette.
int count() const override final
static constexpr VehicleClass_t VehicleClassGeneric