Marble in KDE 4.0 is a virtual globe. It is a stand-alone application that can show you the earth, zoom in and out, and give you a view of the world in either Globe Projection or Flat Projection. It is based on tiles, i.e data sets that are just big pixmaps that we get from sources like NASA.
The user can choose a number of Map themes, i.e. datasets like a standard Atlas view or a night map with city lights or a set of satellite photos. He or she can also control what is shown on the basic map, such as country borders, cities or other placemarks like mountains or ship wrecks (you can locate the Titanic using Marble).
In addition to being a full application, Marble is also a set of widgets that the programmer can integrate into other applications. The set of widgets provided by marble comprises the map widget and two control widgets. The widgets have full integration with Qt Designer, so the developer can simply drag and drop the marble components as any ordinary button or combobox.
Marble, the Vision
While Marble is a virtual globe now, the vision is much more than that. We expect so called "Geo Services" to become very common on the desktop in the near future. Already now, Digikam can geotag the photos if the camera has a GPS. Geotagging will simply be a common thing to do.
The manifesto file in the Marble source states: "Marble is meant to become for "geo browsers" what KHTML/WebKit is for web browsers already". In other words, Marble will be the central component in the geo services infrastructure.
Marble exists in two different incarnations: A KDE version which uses the full power of kdelibs, and a Qt-only version which is more portable. The Qt-only version has already been ported to Windows, Macintosh, Windows CE, and the OLPC. We hope that, given some time, Marble will be the standard Geo Browser on all desktops, including GNOME.
Marble, the Development
To reach the vision, we need integration. Marble needs to be fully integratable into almost anything, and also to integrate other components into itself. In fact, we think this is so important that we have assigned the code name "Integration" for Marble 4.1.
The Marble widget is already able to be integrateg into any KDE or Qt application. However, not all frameworks uses widgets; Plasma and KOffice Flake Shapes are two notable exceptions, although Plasma in KDE 4.1 will actually be able to use them.
Refactor to Allow Integration of Marble Without Widgets
We have just finished a refactoring where we split the MarbleWidget into two classes:
- MarbleMap, which is an abstract map class that can paint on any device.
- MarbleWidget which is like the old Widget, but uses MarbleMap as the actual painter.
Refactor to Allow External Plugins
There is also development going on in the internals of Marble. The internal machinery is rather complex, due to the extreme performance demands that a smooth update puts on the hardware. Remember that Marble doesn't need hardware acceleration to be able to work well.
The layer system is much better defined now, and a refactor is going on that will allow external plugins to create new stand-alone tile layers, combined tile layers, vector layers or placemark layers or any combination thereof. These plugins will also be able to plug into the configuration system of the legend, thus letting users turn on and off subfunctions at will.
Support for KML and GPX Files
KML is the XML format that is used to create data that can be inserted into Google maps and Google Earth. Marble 4.1 will have support for the most-used parts of KML, and eventually for all of KML. Thus any data that can be shown in Google Earth can also be shown in Marble.
Marble 4.1 will also support standard GPS track files (the so-called "GPX" files), and maybe also other file formats.
Support for Custom Scenes
Marble supports DGML files, a new XML format created directly for Marble itself. DGML describes a Map Theme or general setup that combines one or more tile sets with data of other types, such as vectors and placemarks. For Marble 4.1, we have extended the DGML format into DGML2, which is very powerful. Examples of usages are: scientists can describe specialized maps for tracking earth quakes, weather maps with complete legends of all weather symbols, integration with OpenStreetMap and so on.
Support for Other Geo Infrastructure
If possible, Marble 4.1 will also integrate into already existing geo frameworks such as GeoClue which tries to use GPS, IP number and other means to get the current position. It already supports gpsd, the GPS daemon, but that feature will be more easy to use in 4.1.
What we hope is that people will use all these ways of integrating Marble and create new and wonderful ways to use geo services on the desktop. I don't think we can imagine all the new uses yet, they will develop as the potential of KDE 4 unwraps in KDE 4.2 and on. Already now, you can use the Marble widget and the Marble map in your own projects, and soon you will be able to write custom plugins to Marble. Contact me (ingwa) or Torsten Rahn (tackat) on irc://irc.freenode.com/#kde-edu. We will answer almost any question. You can also subscribe to firstname.lastname@example.org and get the insider story on all this.