Marble/MarbleCPlusPlus

From KDE TechBase
Revision as of 12:51, 28 January 2009 by Tampakrap (talk | contribs)
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Hello Marble!

The Marble API allows a very easy integration of a map widget in your application. Let's prove that with a tiny "Hello world"-like example:

#include <QtGui/QApplication>
#include <marble/MarbleWidget.h>
using namespace Marble;
int main(int argc, char** argv)
{
       QApplication app(argc,argv);
       // Create a Marble QWidget without a parent
       MarbleWidget *map = new MarbleWidget();
       // Load the OpenStreetMap map
       map->setMapThemeId("earth/openstreetmap/openstreetmap.dgml");
       // Set a server for downloading map data, if needed
       map->setDownloadUrl("http://download.kde.org/apps/marble/");
       map->show();
       return app.exec();
}

Save the code above as my_marble.cpp and compile it:

g++ -I /usr/include/qt4/ -o my_marble my_marble.cpp -lmarblewidget -lQtGui

If things go fine, execute ./my_marble and you end up with a fully usable OpenStreetMap application:

Here's a little checklist to tackle some problems that might arise when compiling the code above:

  • You need Qt and Marble development packages (or comparable SVN installations)
  • If you're running Marble from SVN, add the Marble:: prefix to the MarbleWidget above. The Marble namespace was added some time ago.
  • If Qt headers are not installed in /usr/include/qt4 on your system, change the path in the g++ call above accordingly.
  • Likewise, add -I /path/to/marble/headers if they're not to be found in /usr/include