[Marble-commits] branches/KDE/4.6/kdeedu/marble/src/lib/geodata/writers/kml

Dennis Nienhüser earthwings at gentoo.org
Fri Jan 7 13:31:27 CET 2011


SVN commit 1212552 by nienhueser:

Altitude must be written as well in linestrings.
Backport of commit 1212549.

 M  +17 -2     KmlLineStringTagWriter.cpp  


--- branches/KDE/4.6/kdeedu/marble/src/lib/geodata/writers/kml/KmlLineStringTagWriter.cpp #1212551:1212552
@@ -32,8 +32,17 @@
         writer.writeStartElement( kml::kmlTag_LineString );
         writer.writeStartElement( "coordinates" );
 
-        for ( int i = 0; i < lineString.size(); ++i )
-        {
+        // Write altitude for *all* elements, if *any* element
+        // has altitude information (!= 0.0)
+        bool hasAltitude = false;
+        for ( int i = 0; i < lineString.size(); ++i ) {
+            if ( lineString.at( i ).altitude() ) {
+                hasAltitude = true;
+                break;
+            }
+        }
+
+        for ( int i = 0; i < lineString.size(); ++i ) {
             GeoDataCoordinates coordinates = lineString.at( i );
             if ( i > 0 )
             {
@@ -45,7 +54,13 @@
             writer.writeCharacters( "," );
             qreal lat = coordinates.latitude( GeoDataCoordinates::Degree );
             writer.writeCharacters( QString::number( lat, 'f', 10 ) );
+
+            if ( hasAltitude ) {
+                qreal alt = coordinates.altitude();
+                writer.writeCharacters( "," );
+                writer.writeCharacters( QString::number( alt, 'f', 2 ) );
         }
+        }
 
         writer.writeEndElement();
         writer.writeEndElement();


More information about the Marble-commits mailing list