void QgsOsgEarthTileSource::initialize( const std::string& referenceURI, const Profile* overrideProfile ) { Q_UNUSED( referenceURI ); Q_UNUSED( overrideProfile ); setProfile( osgEarth::Registry::instance()->getGlobalGeodeticProfile() ); QgsMapRenderer* mainRenderer = mQGisIface->mapCanvas()->mapRenderer(); mMapRenderer = new QgsMapRenderer(); long epsgGlobe = 4326; if ( mainRenderer->destinationCrs().authid().compare( QString( "EPSG:%1" ).arg( epsgGlobe ), Qt::CaseInsensitive ) != 0 ) { QgsCoordinateReferenceSystem srcCRS( mainRenderer->destinationCrs() ); //FIXME: crs from canvas or first layer? QgsCoordinateReferenceSystem destCRS; destCRS.createFromOgcWmsCrs( QString( "EPSG:%1" ).arg( epsgGlobe ) ); //QgsProject::instance()->writeEntry("SpatialRefSys","/ProjectionsEnabled",1); mMapRenderer->setDestinationCrs( destCRS ); mMapRenderer->setProjectionsEnabled( true ); mCoordTranform = new QgsCoordinateTransform( srcCRS, destCRS ); } mMapRenderer->setOutputUnits( mainRenderer->outputUnits() ); mMapRenderer->setMapUnits( QGis::Degrees ); mMapRenderer->setLabelingEngine( new QgsPalLabeling() ); }
bool QgsMapCanvasItem::setRenderContextVariables( QPainter* p, QgsRenderContext& context ) const { if ( !mMapCanvas || !p ) { return false; } QgsMapRenderer* mapRenderer = mMapCanvas->mapRenderer(); if ( !mapRenderer ) { return false; } context.setPainter( p ); context.setRendererScale( mMapCanvas->scale() ); int dpi = mapRenderer->outputDpi(); int painterDpi = p->device()->logicalDpiX(); double scaleFactor = 1.0; double rasterScaleFactor = 1.0; //little trick to find out if painting origines from composer or main map canvas if ( data( 1 ).toString() == "composer" ) { rasterScaleFactor = painterDpi / 25.4; scaleFactor = dpi / 25.4; } else { if ( mapRenderer->outputUnits() == QgsMapRenderer::Millimeters ) { scaleFactor = dpi / 25.4; } } context.setScaleFactor( scaleFactor ); context.setRasterScaleFactor( rasterScaleFactor ); return true; }