// return ratio [mu/lu] between map units and layer units // this is of course only an approximation double _ratioMU2LU( const QgsMapSettings& mapSettings, QgsMapLayer* layer ) { double distMU = mapSettings.mapUnitsPerPixel(); QgsPoint ptMapCenterMU = mapSettings.visibleExtent().center(); QgsPoint ptMapCenterRightMU( ptMapCenterMU.x() + distMU, ptMapCenterMU.y() ); QgsPoint ptMapCenterLU = mapSettings.mapToLayerCoordinates( layer, ptMapCenterMU ); QgsPoint ptMapCenterRightLU = mapSettings.mapToLayerCoordinates( layer, ptMapCenterRightMU ); double distLU = sqrt( ptMapCenterLU.sqrDist( ptMapCenterRightLU ) ); double ratio = distMU / distLU; return ratio; }
QgsPoint QgsTolerance::toLayerCoordinates( QgsMapLayer* layer, const QgsMapSettings& mapSettings, QPoint point ) { QgsPoint pt = mapSettings.mapToPixel().toMapCoordinates( point ); return mapSettings.mapToLayerCoordinates( layer, pt ); }