Opened 13 years ago

Closed 13 years ago

#3866 closed bug (fixed)

Measure tool is windows is unusable

Reported by: NathanW Owned by: nobody
Priority: major: does not work as expected Milestone: Version 1.7.0
Component: MapCanvas Version: Trunk
Keywords: Cc:
Must Fix for Release: Yes Platform: Windows
Platform Version: Awaiting user input: no

Description

In windows the measure tool is pretty much unusable, it's very slow and glitches a lot.

Looking at the debug log a lot of calls are made to setEllisoid(). Each time the mouse moves this is printed.

[45184] d:\src\qgis\src\core\qgsdistancearea.cpp(161) : (QgsDistanceArea::setEllipsoid) setEllipsoid: a=6.37814e+06, b=6.37814e+06, 1/f=298.257
[45184] d:\src\qgis\src\core\qgscoordinatereferencesystem.cpp(349) : (QgsCoordinateReferenceSystem::createFromProj4) proj4: +proj=longlat +ellps=WGS84 +no_defs
[45184] d:\src\qgis\src\core\qgscoordinatereferencesystem.cpp(378) : (QgsCoordinateReferenceSystem::createFromProj4) proj string supplied has no +a argument
[45184] d:\src\qgis\src\core\qgscoordinatereferencesystem.cpp(540) : (QgsCoordinateReferenceSystem::getRecord) running query: select * from tbl_srs where parameters='+proj=longlat +ellps=WGS84 +no_defs'
[45184] d:\src\qgis\src\core\qgscoordinatereferencesystem.cpp(562) : (QgsCoordinateReferenceSystem::getRecord) trying system srs.db
[45184] d:\src\qgis\src\core\qgscoordinatereferencesystem.cpp(617) : (QgsCoordinateReferenceSystem::getRecord) retrieved:  select * from tbl_srs where parameters='+proj=longlat +ellps=WGS84 +no_defs'
[45184] d:\src\qgis\src\core\qgscoordinatereferencesystem.cpp(406) : (QgsCoordinateReferenceSystem::createFromProj4) proj4string match search for srsid returned srsid: 3239
[45184] d:\src\qgis\src\core\qgscoordinatereferencesystem.cpp(799) : (QgsCoordinateReferenceSystem::setMapUnits) Projection has linear units of Meter
[45184] d:\src\qgis\src\core\qgscoordinatereferencesystem.cpp(799) : (QgsCoordinateReferenceSystem::setMapUnits) Projection has linear units of Meter

Tracked down to this bit of code:

void QgsMeasureDialog::configureDistanceArea( QgsDistanceArea& da )
{
  QSettings settings;
  QString ellipsoidId = settings.value( "/qgis/measure/ellipsoid", "WGS84" ).toString();
  da.setSourceCrs( mTool->canvas()->mapRenderer()->destinationCrs().srsid() );
  da.setEllipsoid( ellipsoidId );
  da.setProjectionsEnabled( mcbProjectionEnabled->isChecked() );
}

Which is called on every mouse move. Do we really need to call it on every mouse move?

Change History (2)

comment:1 by jef, 13 years ago

Why should it be slower on Windows? I suppose it's just the noisy debugging output that makes it slow.

comment:2 by jef, 13 years ago

Resolution: fixed
Status: newclosed

fixed in commit 50d255f20fdb362c6b26bf0bec7f60e3f35ea1e2.

Note: See TracTickets for help on using tickets.