6#include "KmlModelTagWriter.h"
8#include "GeoDataModel.h"
9#include "GeoDataAlias.h"
10#include "GeoDataTypes.h"
11#include "GeoDataLocation.h"
12#include "GeoDataOrientation.h"
13#include "GeoDataResourceMap.h"
14#include "GeoDataScale.h"
16#include "KmlGroundOverlayWriter.h"
17#include "KmlLinkTagWriter.h"
18#include "KmlElementDictionary.h"
19#include "KmlObjectTagWriter.h"
24static GeoTagWriterRegistrar s_writerModel(
26 kml::kmlTag_nameSpaceOgc22 ),
27 new KmlModelTagWriter);
29bool KmlModelTagWriter::write(
const GeoNode *node, GeoWriter& writer )
const
31 const GeoDataModel *model =
static_cast<const GeoDataModel*
>( node );
33 writer.writeStartElement( kml::kmlTag_Model );
34 KmlObjectTagWriter::writeIdentifiers( writer, model );
36 KmlGroundOverlayWriter::writeAltitudeMode( writer, model->altitudeMode());
38 const GeoDataLocation
location = model->location() ;
40 writer.writeStartElement( kml::kmlTag_Location );
42 writer.writeOptionalElement( kml::kmlTag_longitude,
QString::number(
location.longitude( GeoDataCoordinates::Degree ) ),
"0" );
43 writer.writeOptionalElement( kml::kmlTag_latitude,
QString::number(
location.latitude( GeoDataCoordinates::Degree ) ),
"0" );
46 writer.writeEndElement();
48 const GeoDataOrientation orientation = model->orientation();
50 writer.writeStartElement( kml::kmlTag_Orientation );
52 writer.writeOptionalElement( kml::kmlTag_heading,
QString::number( orientation.heading() ),
"0" );
53 writer.writeOptionalElement( kml::kmlTag_tilt,
QString::number( orientation.tilt() ),
"0" );
54 writer.writeOptionalElement( kml::kmlTag_roll,
QString::number( orientation.roll() ),
"0" );
56 writer.writeEndElement();
58 const GeoDataScale scale = model->scale() ;
60 writer.writeStartElement( kml::kmlTag_Scale );
62 writer.writeOptionalElement( kml::kmlTag_x,
QString::number( scale.x() ),
"1" );
63 writer.writeOptionalElement( kml::kmlTag_y,
QString::number( scale.y() ),
"1" );
64 writer.writeOptionalElement( kml::kmlTag_z,
QString::number( scale.z() ),
"1" );
66 writer.writeEndElement();
68 writeElement( &model->link(), writer );
70 const GeoDataResourceMap
map = model->resourceMap() ;
72 writer.writeStartElement( kml::kmlTag_ResourceMap );
74 const GeoDataAlias alias =
map.alias() ;
75 writer.writeStartElement( kml::kmlTag_Alias );
77 writer.writeTextElement( kml::kmlTag_targetHref, alias.targetHref() );
78 writer.writeTextElement( kml::kmlTag_sourceHref, alias.sourceHref() );
80 writer.writeEndElement();
82 writer.writeEndElement();
84 writer.writeEndElement();
QPair< QString, QString > QualifiedName
Object Name and Namespace Pair This type is intended to be used in a similar way to.
QVariant location(const QVariant &res)
Binds a QML item to a specific geodetic location in screen coordinates.
QString number(double n, char format, int precision)
QFuture< void > map(Iterator begin, Iterator end, MapFunctor &&function)