GSoC/GCI Archive
Google Code-in 2013 KDE

Add support for the gx:SoundCue KML tag

completed by: Illya Kovalevskyy

mentors: Torsten Rahn, Dennis Nienhüser

Marble is a virtual globe and world atlas — your Swiss army knife for maps. Find your way and explore the world!

We are working on integrating support for KML Tours into Marble. The user interface will be a panel (like Routing, Map View, ...) where a tour can be loaded from a .kml file, edited, played and also recorded to a movie file. In this task you'll add support for reading and writing gx:SoundCue tags in .kml files.

  • Install the development version (git master) of Marble. See
  • Compile Marble. When configuring cmake use the BUILD_MARBLE_TESTS option
  • Change to the build folder and execute tests/TestGeoDataWriter. The test should succeed
  • Overwrite tests/Tour.kml by tests/TourWait.kml and remove tests/TourWait.kml from tests/TestGeoDataWriter.cpp. Recompile, tests/TestGeoDataWriter should still succeed
  • Extend tests/Tour.kml and add a gx:SoundCue tag (see KML reference). Recompile Marble, execute tests/TestGeoDataWriter. It should not succeed anymore
  • Add a tag handler, a tag writer and a GeoDataSoundCue class to support reading and writing the tags. Once finished tests/TestGeoDataWriter should succeed
    • src/lib/marble/geodata/data/GeoDataTourControl.* can be used as a base for GeoDataSoundCue.*
    • src/lib/marble/geodata/handlers/kml/KmlTourControlTagHandler.* can be used as a base for the gx:SoundCue tag handler
    • extend src/lib/marble/geodata/writers/kml/KmlPlaylistTagWriter.cpp to implement the tag writer. Add a KmlPlaylistTagWriter::writeSoundCue similar to KmlPlaylistTagWriter::writeTourControl and integrate it in writeTourPrimitive()
  • Please submit your work to You can create an account at if you don't have one yet.

Helpful links: