From 1c3cfd1e136e8d61ecf6b1cacf8f2bbf93e76fc1 Mon Sep 17 00:00:00 2001 From: David Signer Date: Wed, 10 Apr 2019 09:09:37 +0200 Subject: [PATCH] use calculation factor for scale --- .../server/auto_generated/qgsserverprojectutils.sip.in | 2 ++ src/app/qgsprojectproperties.cpp | 10 +++++----- src/server/qgsserverprojectutils.h | 1 + 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/python/server/auto_generated/qgsserverprojectutils.sip.in b/python/server/auto_generated/qgsserverprojectutils.sip.in index e366f16a635..27167545a53 100644 --- a/python/server/auto_generated/qgsserverprojectutils.sip.in +++ b/python/server/auto_generated/qgsserverprojectutils.sip.in @@ -170,6 +170,8 @@ Returns the denominator of the default scale used in case of the scale is not gi :param project: the QGIS project :return: the denominator of the scale + +.. versionadded:: 3.8 %End bool wmsUseLayerIds( const QgsProject &project ); diff --git a/src/app/qgsprojectproperties.cpp b/src/app/qgsprojectproperties.cpp index f02354389e1..ea5efc0ef67 100644 --- a/src/app/qgsprojectproperties.cpp +++ b/src/app/qgsprojectproperties.cpp @@ -643,13 +643,13 @@ QgsProjectProperties::QgsProjectProperties( QgsMapCanvas *mapCanvas, QWidget *pa mWMSMaxAtlasFeaturesSpinBox->setValue( QgsProject::instance()->readNumEntry( QStringLiteral( "WMSMaxAtlasFeatures" ), QStringLiteral( "/" ), 1 ) ); + //connect this to crs change mWMSDefaultMapUnitsPerMm = new QDoubleSpinBox(); - mWMSDefaultMapUnitsPerMm->setDecimals( 3 ); + mWMSDefaultMapUnitsPerMm->setDecimals( 4 ); + mWMSDefaultMapUnitsPerMm->setSingleStep( 0.001 ); mWMSDefaultMapUnitsPerMm->setValue( QgsProject::instance()->readDoubleEntry( QStringLiteral( "WMSDefaultMapUnitsPerMm" ), QStringLiteral( "/" ), 1 ) ); - - //care for map units mm, km, inches etc... mWMSDefaultMapUnitScale = new QgsScaleWidget(); - mWMSDefaultMapUnitScale->setScale( QgsProject::instance()->readDoubleEntry( QStringLiteral( "WMSDefaultMapUnitsPerMm" ), QStringLiteral( "/" ), 1 ) * 1000 ); + mWMSDefaultMapUnitScale->setScale( QgsProject::instance()->readDoubleEntry( QStringLiteral( "WMSDefaultMapUnitsPerMm" ), QStringLiteral( "/" ), 1 ) * QgsUnitTypes::fromUnitToUnitFactor( QgsProject::instance()->crs().mapUnits(), QgsUnitTypes::DistanceMillimeters ) ); if ( QgsProject::instance()->crs().isGeographic() ) { @@ -1324,7 +1324,7 @@ void QgsProjectProperties::apply() } else { - defaultMapUnitsPerMm = mWMSDefaultMapUnitScale->scale() / 1000; + defaultMapUnitsPerMm = mWMSDefaultMapUnitScale->scale() / QgsUnitTypes::fromUnitToUnitFactor( QgsProject::instance()->crs().mapUnits(), QgsUnitTypes::DistanceMillimeters ); } QgsProject::instance()->writeEntry( QStringLiteral( "WMSDefaultMapUnitsPerMm" ), QStringLiteral( "/" ), defaultMapUnitsPerMm ); diff --git a/src/server/qgsserverprojectutils.h b/src/server/qgsserverprojectutils.h index 344ab067d18..5e50d0181da 100644 --- a/src/server/qgsserverprojectutils.h +++ b/src/server/qgsserverprojectutils.h @@ -158,6 +158,7 @@ namespace QgsServerProjectUtils * Returns the denominator of the default scale used in case of the scale is not given * \param project the QGIS project * \return the denominator of the scale + * \since QGIS 3.8 */ SERVER_EXPORT double wmsDefaultMapUnitsPerMm( const QgsProject &project );