@@ -58,8 +58,8 @@ QgsMeasureDialog::QgsMeasureDialog( QgsMeasureTool* tool, Qt::WFlags f )
5858 else
5959 mcbProjectionEnabled->setCheckState ( Qt::Unchecked );
6060
61- connect ( mcbProjectionEnabled, SIGNAL ( stateChanged (int ) ),
62- this , SLOT ( changeProjectionEnabledState () ));
61+ connect ( mcbProjectionEnabled, SIGNAL ( stateChanged ( int ) ),
62+ this , SLOT ( changeProjectionEnabledState () ) );
6363
6464 updateUi ();
6565}
@@ -99,14 +99,12 @@ void QgsMeasureDialog::mouseMove( QgsPoint &point )
9999 int decimalPlaces = settings.value ( " /qgis/measure/decimalplaces" , " 3" ).toInt ();
100100
101101 // Create QgsDistance Area for customization ProjectionEnabled setting
102- QgsDistanceArea myDa;
103- myDa.setSourceCrs ( mTool ->canvas ()->mapRenderer ()->destinationSrs ().srsid () );
104- myDa.setEllipsoid ( mTool ->canvas ()->mapRenderer ()->distanceArea ()->ellipsoid () );
105- myDa.setProjectionsEnabled ( mcbProjectionEnabled->isChecked () );
102+ QgsDistanceArea myDa;
103+ configureDistanceArea ( myDa );
106104
107105 // show current distance/area while moving the point
108106 // by creating a temporary copy of point array
109- // and adding moving point at the end
107+ // and adding moving point at the end
110108 if ( mMeasureArea && mTool ->points ().size () > 1 )
111109 {
112110 QList<QgsPoint> tmpPoints = mTool ->points ();
@@ -134,10 +132,8 @@ void QgsMeasureDialog::addPoint( QgsPoint &point )
134132 int decimalPlaces = settings.value ( " /qgis/measure/decimalplaces" , " 3" ).toInt ();
135133
136134 // Create QgsDistance Area for customization ProjectionEnabled setting
137- QgsDistanceArea myDa;
138- myDa.setSourceCrs ( mTool ->canvas ()->mapRenderer ()->destinationSrs ().srsid () );
139- myDa.setEllipsoid ( mTool ->canvas ()->mapRenderer ()->distanceArea ()->ellipsoid () );
140- myDa.setProjectionsEnabled ( mcbProjectionEnabled->isChecked () );
135+ QgsDistanceArea myDa;
136+ configureDistanceArea ( myDa );
141137
142138 int numPoints = mTool ->points ().size ();
143139 if ( mMeasureArea && numPoints > 2 )
@@ -269,19 +265,18 @@ void QgsMeasureDialog::convertMeasurement( double &measure, QGis::UnitType &u, b
269265 // The parameter &u is out only...
270266
271267 QGis::UnitType myUnits = mTool ->canvas ()->mapUnits ();
272- if (( myUnits == QGis::Degrees || myUnits == QGis::Feet ) &&
273- mTool ->canvas ()->mapRenderer ()->distanceArea ()->ellipsoid () != " NONE" &&
268+ if (( myUnits == QGis::Degrees || myUnits == QGis::Feet ) &&
274269 mcbProjectionEnabled->isChecked () )
275270 {
276271 // Measuring on an ellipsoid returns meters, and so does using projections???
277272 myUnits = QGis::Meters;
278273 QgsDebugMsg ( " We're measuring on an ellipsoid or using projections, the system is returning meters" );
279274 }
280-
275+
281276 // Get the units for display
282277 QSettings settings;
283278 QString myDisplayUnitsTxt = settings.value ( " /qgis/measure/displayunits" , " meters" ).toString ();
284-
279+
285280 // Only convert between meters and feet
286281 if ( myUnits == QGis::Meters && myDisplayUnitsTxt == " feet" )
287282 {
@@ -314,9 +309,9 @@ void QgsMeasureDialog::changeProjectionEnabledState()
314309 // store value
315310 QSettings settings;
316311 if ( mcbProjectionEnabled->isChecked () )
317- settings.setValue ( " /qgis/measure/projectionEnabled" , 2 );
312+ settings.setValue ( " /qgis/measure/projectionEnabled" , 2 );
318313 else
319- settings.setValue ( " /qgis/measure/projectionEnabled" , 0 );
314+ settings.setValue ( " /qgis/measure/projectionEnabled" , 0 );
320315
321316 // clear interface
322317 mTable ->clear ();
@@ -327,13 +322,11 @@ void QgsMeasureDialog::changeProjectionEnabledState()
327322 updateUi ();
328323
329324 int decimalPlaces = settings.value ( " /qgis/measure/decimalplaces" , " 3" ).toInt ();
330-
325+
331326 // create DistanceArea
332- QgsDistanceArea myDa;
333- myDa.setSourceCrs ( mTool ->canvas ()->mapRenderer ()->destinationSrs ().srsid () );
334- myDa.setEllipsoid ( mTool ->canvas ()->mapRenderer ()->distanceArea ()->ellipsoid () );
335- myDa.setProjectionsEnabled ( mcbProjectionEnabled->isChecked () );
336-
327+ QgsDistanceArea myDa;
328+ configureDistanceArea ( myDa );
329+
337330 if ( mMeasureArea )
338331 {
339332 double area = 0.0 ;
@@ -342,14 +335,15 @@ void QgsMeasureDialog::changeProjectionEnabledState()
342335 area = myDa.measurePolygon ( mTool ->points () );
343336 }
344337 editTotal->setText ( formatArea ( area, decimalPlaces ) );
345- }else
338+ }
339+ else
346340 {
347341 QList<QgsPoint>::const_iterator it;
348342 bool b = true ; // first point
349-
350- QgsPoint p1,p2;
351-
352- for (it= mTool ->points ().constBegin (); it != mTool ->points ().constEnd (); ++it)
343+
344+ QgsPoint p1, p2;
345+
346+ for ( it = mTool ->points ().constBegin (); it != mTool ->points ().constEnd (); ++it )
353347 {
354348 p2 = *it;
355349 if ( !b )
@@ -373,3 +367,12 @@ void QgsMeasureDialog::changeProjectionEnabledState()
373367 }
374368 }
375369}
370+
371+ void QgsMeasureDialog::configureDistanceArea ( QgsDistanceArea& da )
372+ {
373+ QSettings settings;
374+ QString ellipsoidId = settings.value ( " /qgis/measure/ellipsoid" , " WGS84" ).toString ();
375+ da.setSourceCrs ( mTool ->canvas ()->mapRenderer ()->destinationSrs ().srsid () );
376+ da.setEllipsoid ( ellipsoidId );
377+ da.setProjectionsEnabled ( mcbProjectionEnabled->isChecked () );
378+ }
0 commit comments