@@ -124,6 +124,9 @@ QgsComposerMap::QgsComposerMap( QgsComposition *composition )
124124
125125void QgsComposerMap::init ()
126126{
127+ if ( mComposition && mComposition ->project () )
128+ mCrs = mComposition ->project ()->crs ();
129+
127130 mGridStack = new QgsComposerMapGridStack ( this );
128131 mOverviewStack = new QgsComposerMapOverviewStack ( this );
129132 connectUpdateSlot ();
@@ -205,10 +208,12 @@ QgsMapSettings QgsComposerMap::mapSettings( const QgsRectangle& extent, QSizeF s
205208 QgsExpressionContext expressionContext = createExpressionContext ();
206209
207210 QgsMapSettings jobMapSettings;
211+ jobMapSettings.setDestinationCrs ( mCrs );
212+ jobMapSettings.setCrsTransformEnabled ( true );
208213 jobMapSettings.setExtent ( extent );
209214 jobMapSettings.setOutputSize ( size.toSize () );
210215 jobMapSettings.setOutputDpi ( dpi );
211- jobMapSettings.setMapUnits ( crs () .mapUnits () );
216+ jobMapSettings.setMapUnits ( mCrs .mapUnits () );
212217 jobMapSettings.setBackgroundColor ( Qt::transparent );
213218 jobMapSettings.setOutputImageFormat ( ms.outputImageFormat () );
214219 jobMapSettings.setRotation ( mEvaluatedMapRotation );
@@ -233,8 +238,6 @@ QgsMapSettings QgsComposerMap::mapSettings( const QgsRectangle& extent, QSizeF s
233238 }
234239 jobMapSettings.setLayers ( layers );
235240 jobMapSettings.setLayerStyleOverrides ( layerStyleOverridesToRender ( expressionContext ) );
236- jobMapSettings.setDestinationCrs ( crs () );
237- jobMapSettings.setCrsTransformEnabled ( ms.hasCrsTransformEnabled () );
238241 jobMapSettings.setFlags ( ms.flags () );
239242 jobMapSettings.setFlag ( QgsMapSettings::DrawSelection, false );
240243
@@ -253,7 +256,7 @@ QgsMapSettings QgsComposerMap::mapSettings( const QgsRectangle& extent, QSizeF s
253256 jobMapSettings.setFlag ( QgsMapSettings::DrawEditingInfo, false );
254257 jobMapSettings.setFlag ( QgsMapSettings::UseAdvancedEffects, mComposition ->useAdvancedEffects () ); // respect the composition's useAdvancedEffects flag
255258
256- jobMapSettings.datumTransformStore () = ms. datumTransformStore ( );
259+ jobMapSettings.datumTransformStore (). setDestinationCrs ( mCrs );
257260
258261 return jobMapSettings;
259262}
@@ -873,14 +876,12 @@ QgsRectangle* QgsComposerMap::currentMapExtent()
873876
874877QgsCoordinateReferenceSystem QgsComposerMap::crs () const
875878{
876- if ( mComposition )
877- {
878- return mComposition ->mapSettings ().destinationCrs ();
879- }
880- else
881- {
882- return QgsCoordinateReferenceSystem ();
883- }
879+ return mCrs ;
880+ }
881+
882+ void QgsComposerMap::setCrs ( const QgsCoordinateReferenceSystem& crs )
883+ {
884+ mCrs = crs;
884885}
885886
886887const QgsRectangle* QgsComposerMap::currentMapExtent () const
@@ -1273,6 +1274,10 @@ bool QgsComposerMap::writeXml( QDomElement& elem, QDomDocument & doc ) const
12731274 extentElem.setAttribute ( QStringLiteral ( " ymax" ), qgsDoubleToString ( mExtent .yMaximum () ) );
12741275 composerMapElem.appendChild ( extentElem );
12751276
1277+ QDomElement crsElem = doc.createElement ( QStringLiteral ( " crs" ) );
1278+ mCrs .writeXml ( crsElem, doc );
1279+ composerMapElem.appendChild ( crsElem );
1280+
12761281 // follow map theme
12771282 composerMapElem.setAttribute ( QStringLiteral ( " followPreset" ), mFollowVisibilityPreset ? " true" : " false" );
12781283 composerMapElem.setAttribute ( QStringLiteral ( " followPresetName" ), mFollowVisibilityPresetName );
@@ -1374,6 +1379,13 @@ bool QgsComposerMap::readXml( const QDomElement& itemElem, const QDomDocument& d
13741379 setNewExtent ( QgsRectangle ( xmin, ymin, xmax, ymax ) );
13751380 }
13761381
1382+ QDomNodeList crsNodeList = itemElem.elementsByTagName ( QStringLiteral ( " crs" ) );
1383+ if ( !crsNodeList.isEmpty () )
1384+ {
1385+ QDomElement crsElem = crsNodeList.at ( 0 ).toElement ();
1386+ mCrs .readXml ( crsElem );
1387+ }
1388+
13771389 // map rotation
13781390 if ( !qgsDoubleNear ( itemElem.attribute ( QStringLiteral ( " mapRotation" ), QStringLiteral ( " 0" ) ).toDouble (), 0.0 ) )
13791391 {
0 commit comments