@@ -814,12 +814,35 @@ void QgsProjectProperties::on_cbxProjectionEnabled_toggled( bool onFlyEnabled )
814
814
QString unitsOnFlyState = tr ( " Canvas units (CRS transformation: %1)" );
815
815
if ( !onFlyEnabled )
816
816
{
817
- if ( !mProjectSrsId )
817
+ // reset projection to default
818
+ const QMap<QString, QgsMapLayer*> &mapLayers = QgsMapLayerRegistry::instance ()->mapLayers ();
819
+
820
+ if ( mMapCanvas ->currentLayer () )
821
+ {
822
+ mLayerSrsId = mMapCanvas ->currentLayer ()->crs ().srsid ();
823
+ }
824
+ else if ( mapLayers.size () > 0 )
818
825
{
819
- mProjectSrsId = projectionSelector-> selectedCrsId ();
826
+ mLayerSrsId = mapLayers. begin (). value ()-> crs (). srsid ();
820
827
}
828
+ else
829
+ {
830
+ mLayerSrsId = mProjectSrsId ;
831
+ }
832
+ mProjectSrsId = mLayerSrsId ;
821
833
projectionSelector->setSelectedCrsId ( mLayerSrsId );
822
834
835
+ QgsCoordinateReferenceSystem srs ( mLayerSrsId , QgsCoordinateReferenceSystem::InternalCrsId );
836
+ // set radio button to crs map unit type
837
+ QGis::UnitType units = srs.mapUnits ();
838
+
839
+ radMeters->setChecked ( units == QGis::Meters );
840
+ radFeet->setChecked ( units == QGis::Feet );
841
+ radDegrees->setChecked ( units == QGis::Degrees );
842
+
843
+ // unset ellipsoid
844
+ mEllipsoidIndex = 0 ;
845
+
823
846
btnGrpMeasureEllipsoid->setTitle ( measureOnFlyState.arg ( tr ( " OFF" ) ) );
824
847
btnGrpMapUnits->setTitle ( unitsOnFlyState.arg ( tr ( " OFF" ) ) );
825
848
}
@@ -1452,7 +1475,6 @@ void QgsProjectProperties::updateEllipsoidUI( int newIndex )
1452
1475
leSemiMajor->setToolTip ( tr ( " Select %1 from pull-down menu to adjust radii" ).arg ( tr ( " Parameters:" ) ) );
1453
1476
leSemiMinor->setToolTip ( tr ( " Select %1 from pull-down menu to adjust radii" ).arg ( tr ( " Parameters:" ) ) );
1454
1477
}
1455
- cmbEllipsoid->setCurrentIndex ( mEllipsoidIndex ); // Not always necessary
1456
1478
if ( mEllipsoidList [ mEllipsoidIndex ].acronym != GEO_NONE )
1457
1479
{
1458
1480
leSemiMajor->setText ( QLocale::system ().toString ( myMajor, ' f' , 3 ) );
@@ -1464,4 +1486,5 @@ void QgsProjectProperties::updateEllipsoidUI( int newIndex )
1464
1486
cmbEllipsoid->setEnabled ( false );
1465
1487
cmbEllipsoid->setToolTip ( tr ( " Can only use ellipsoidal calculations when CRS transformation is enabled" ) );
1466
1488
}
1489
+ cmbEllipsoid->setCurrentIndex ( mEllipsoidIndex ); // Not always necessary
1467
1490
}
0 commit comments