6#include "KmlFeatureTagWriter.h"
8#include "GeoDataOverlay.h"
9#include "GeoDataTimeStamp.h"
10#include "GeoDataTimeSpan.h"
11#include "GeoDataDocument.h"
12#include "GeoDataStyle.h"
13#include "GeoDataStyleMap.h"
14#include "GeoDataExtendedData.h"
15#include "GeoDataLookAt.h"
16#include "GeoDataPlacemark.h"
17#include "GeoDataCamera.h"
19#include "GeoDataRegion.h"
20#include "GeoDataLatLonAltBox.h"
21#include "KmlElementDictionary.h"
22#include "KmlObjectTagWriter.h"
23#include "KmlOsmPlacemarkDataTagWriter.h"
24#include "OsmPlacemarkData.h"
31KmlFeatureTagWriter::KmlFeatureTagWriter(
const QString &elementName)
32 : m_elementName( elementName )
37bool KmlFeatureTagWriter::write(
const Marble::GeoNode *node, GeoWriter &writer )
const
39 const GeoDataFeature *feature =
static_cast<const GeoDataFeature*
>(node);
41 if (
const GeoDataDocument *document = geodata_cast<GeoDataDocument>(feature)) {
44 if( (document->id().isEmpty())
45 && (document->name().isEmpty())
46 && (document->targetId().isEmpty())
47 && (document->styles().count() == 0)
48 && (document->styleMaps().count() == 0)
49 && (document->extendedData().isEmpty())
50 && (document->featureList().count() == 1) ) {
51 writeElement( document->featureList()[0], writer );
56 writer.writeStartElement( m_elementName );
58 KmlObjectTagWriter::writeIdentifiers( writer, feature );
60 writer.writeOptionalElement( kml::kmlTag_name, feature->name() );
61 writer.writeOptionalElement( kml::kmlTag_visibility,
QString::number( feature->isVisible() ),
"1" );
62 writer.writeOptionalElement(
"address", feature->address() );
64 if( !feature->description().isEmpty() ) {
65 writer.writeStartElement(
"description" );
66 if( feature->descriptionIsCDATA() ) {
67 writer.writeCDATA( feature->description() );
69 writer.writeCharacters( feature->description() );
71 writer.writeEndElement();
74 GeoDataLookAt
const * lookAt =
dynamic_cast<const GeoDataLookAt*
>( feature->abstractView() );
76 writeElement( lookAt, writer );
78 GeoDataCamera
const *
camera =
dynamic_cast<const GeoDataCamera*
>( feature->abstractView() );
80 writeElement(
camera, writer );
83 if( feature->timeStamp().when().isValid() ) {
84 writeElement( &feature->timeStamp(), writer );
87 if( feature->timeSpan().isValid() ) {
88 writeElement( &feature->timeSpan(), writer );
91 if ( !feature->region().latLonAltBox().isNull() ) {
92 writeElement( &feature->region(), writer );
95 bool const result = writeMid( node, writer );
97 if (geodata_cast<GeoDataPlacemark>(feature)) {
98 KmlOsmPlacemarkDataTagWriter::write(feature, writer);
101 if( !feature->extendedData().isEmpty() ) {
102 writeElement( &feature->extendedData(), writer );
105 writer.writeEndElement();
A shared base class for all classes that are mapped to a specific tag (ie.
Q_SCRIPTABLE QString camera()
Binds a QML item to a specific geodetic location in screen coordinates.
QString number(double n, char format, int precision)