Difference between revisions of "Projects/Marble/MarbleCPlusPlus"

Jump to: navigation, search
(Better layout)
Line 3: Line 3:
  
 
<code cppqt>
 
<code cppqt>
#include <QtGui/QApplication>
 
#include <marble/MarbleWidget.h>
 
  
using namespace Marble;
+
#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 *mapWidget = new MarbleWidget();
 +
 
 +
    // Load the OpenStreetMap map
 +
    mapWidget->setMapThemeId("earth/openstreetmap/openstreetmap.dgml");
 +
 
 +
    // Set a server for downloading map data, if needed
 +
    mapWidget->setDownloadUrl("http://download.kde.org/apps/marble/");
 +
    mapWidget->show();
 +
 
 +
    return app.exec();
 +
}
  
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();
 
}
 
 
</code>
 
</code>
  
 
Save the code above as <tt>my_marble.cpp</tt> and compile it:
 
Save the code above as <tt>my_marble.cpp</tt> and compile it:
 +
 +
<code>
 
  g++ -I /usr/include/qt4/ -o my_marble my_marble.cpp -lmarblewidget -lQtGui
 
  g++ -I /usr/include/qt4/ -o my_marble my_marble.cpp -lmarblewidget -lQtGui
 +
</code>
 +
 
If things go fine, execute <tt>./my_marble</tt> and you end up with a fully usable OpenStreetMap application: [[Image:My_marble.png]]
 
If things go fine, execute <tt>./my_marble</tt> and you end up with a fully usable OpenStreetMap application: [[Image:My_marble.png]]
  
 
Here's a little checklist to tackle some problems that might arise when compiling the code above:
 
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)
 
* 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 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.
 
* 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
 
* Likewise, add -I /path/to/marble/headers if they're not to be found in /usr/include

Revision as of 09:07, 9 February 2009

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:

  1. include <QtGui/QApplication>
  2. 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 *mapWidget = new MarbleWidget();
   // Load the OpenStreetMap map
   mapWidget->setMapThemeId("earth/openstreetmap/openstreetmap.dgml");
   // Set a server for downloading map data, if needed
   mapWidget->setDownloadUrl("http://download.kde.org/apps/marble/");
   mapWidget->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: My marble.png

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

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V.Legal