13 :
KMLDomDocument(QStringLiteral(
"%1 Plan KML").arg(QCoreApplication::applicationName()))
18void KMLPlanDomDocument::_addFlightPath(
Vehicle* vehicle, QList<MissionItem*> rgMissionItems)
20 if (rgMissionItems.count() == 0) {
24 QDomElement itemFolderElement =
addFolder(
"Items");
26 QDomElement flightPathElement = createElement(
"Placemark");
29 addTextElement(flightPathElement,
"styleUrl", QStringLiteral(
"#%1").arg(_missionLineStyleName));
32 addLookAt(flightPathElement, rgMissionItems[0]->coordinate());
35 QList<QGeoCoordinate> rgFlightCoords;
36 QGeoCoordinate homeCoord = rgMissionItems[0]->coordinate();
40 double altAdjustment = item->frame() == MAV_FRAME_GLOBAL ? 0 : homeCoord.altitude();
43 QGeoCoordinate coord = homeCoord;
44 coord.setAltitude(item->param7() + altAdjustment);
45 rgFlightCoords += coord;
48 QGeoCoordinate coord = item->coordinate();
49 coord.setAltitude(coord.altitude() + altAdjustment);
53 rgFlightCoords += coord;
58 QDomElement wpPlacemarkElement = createElement(
"Placemark");
59 addTextElement(wpPlacemarkElement,
"name", QStringLiteral(
"%1 %2").arg(QString::number(item->sequenceNumber())).arg(item->command() == MAV_CMD_NAV_WAYPOINT ?
"" : uiInfo->friendlyName()));
63 htmlString += QStringLiteral(
"Index: %1\n").arg(item->sequenceNumber());
67 htmlString += QStringLiteral(
"Lat: %1\n").arg(QString::number(coord.latitude(),
'f', 7));
68 htmlString += QStringLiteral(
"Lon: %1\n").arg(QString::number(coord.longitude(),
'f', 7));
70 (void)
addPoint(wpPlacemarkElement, coord);
71 (void) itemFolderElement.appendChild(wpPlacemarkElement);
81 for (
int i=0; i<visualItems->
count(); i++) {
91 _addFlightPath(vehicle, rgMissionItems);
92 _addComplexItems(visualItems);
95void KMLPlanDomDocument::_addStyles(
void)
99 QDomElement missionLineStyle =
addStyle(_missionLineStyleName);
100 addLineStyle(missionLineStyle, palette.mapMissionTrajectory(), 4);
103 addPolyStyle(surveyStyle, palette.surveyPolygonInterior(), 0.5);
104 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)
bool isTakeoffCommand(void) const
QString friendlyName(void) const
bool specifiesCoordinate(void) const
bool isStandaloneCoordinate(void) const
static constexpr const VehicleClass_t VehicleClassGeneric
int count() const override final