1. 标记 GeoDataPlacemark *place = new GeoDataPlacemark( "Bucharest" ); place->setCoordinate( 25.97, 44.43, 0.0, GeoDataCoordinates::Degree ); place->setPopulation( 1877155 ); place->setCountryCode ( "Romania" ); GeoDataDocument *document = new GeoDataDocument; document->append( place ); // Add the document to MarbleWidget's tree model mapWidget->model()->treeModel()->addDocument( document );2. 初始位置 GeoDataCoordinates home(112, 30.0, 10.0, GeoDataCoordinates::Degree); mapWidget->centerOn(home);3.鼠标当前位置 // Connect the map widget to the position label. QObject::connect(mapWidget, SIGNAL(mouseMoveGeoPosition(QString)), positionLabel, SLOT(setText(QString))); 4.设置投影 mapWidget->setProjection( Mercator ); 5.获取设置控件 foreach ( AbstractFloatItem * floatItem, mapWidget->floatItems() )
if ( floatItem && floatItem->nameId() == "compass" ) { // Put the compass onto the left hand side floatItem->setPosition( QPoint( 10, 10 ) ); // Make the content size of the compass smaller floatItem->setContentSize( QSize( 50, 50 ) ); }
6.绘制标记
void MyMarbleWidget::customPaint(GeoPainter* painter)
{ GeoDataCoordinates home(8.4, 49.0, 0.0, GeoDataCoordinates::Degree); painter->setPen(Qt::green); painter->drawEllipse(home, 17, 17); painter->setPen(Qt::red); painter->drawText(home, "Hello Marble!"); }