diff --git a/python/core/auto_generated/qgsmapsettings.sip.in b/python/core/auto_generated/qgsmapsettings.sip.in index e9600336223f..781ff949d5ee 100644 --- a/python/core/auto_generated/qgsmapsettings.sip.in +++ b/python/core/auto_generated/qgsmapsettings.sip.in @@ -526,7 +526,7 @@ transform point coordinates from layer's CRS to output CRS :return: the transformed point %End - QgsPoint layerToMapCoordinates( const QgsMapLayer *layer, QgsPoint point ) const; + QgsPoint layerToMapCoordinates( const QgsMapLayer *layer, const QgsPoint &point ) const; %Docstring transform point coordinates from layer's CRS to output CRS @@ -551,7 +551,7 @@ transform point coordinates from output CRS to layer's CRS :return: the transformed point %End - QgsPoint mapToLayerCoordinates( const QgsMapLayer *layer, QgsPoint point ) const; + QgsPoint mapToLayerCoordinates( const QgsMapLayer *layer, const QgsPoint &point ) const; %Docstring transform point coordinates from output CRS to layer's CRS diff --git a/src/core/qgsmapsettings.cpp b/src/core/qgsmapsettings.cpp index 0c2ba10cd5cd..4f492ec5971c 100644 --- a/src/core/qgsmapsettings.cpp +++ b/src/core/qgsmapsettings.cpp @@ -496,11 +496,11 @@ QgsPointXY QgsMapSettings::layerToMapCoordinates( const QgsMapLayer *layer, QgsP return point; } -QgsPoint QgsMapSettings::layerToMapCoordinates( const QgsMapLayer *layer, QgsPoint point ) const +QgsPoint QgsMapSettings::layerToMapCoordinates( const QgsMapLayer *layer, const QgsPoint &point ) const { double x = point.x(); double y = point.y(); - double z = point.z(); + double z = !std::isnan( point.z() ) ? point.z() : 0.0; try { @@ -513,7 +513,7 @@ QgsPoint QgsMapSettings::layerToMapCoordinates( const QgsMapLayer *layer, QgsPoi QgsMessageLog::logMessage( QObject::tr( "Transform error caught: %1" ).arg( cse.what() ), QObject::tr( "CRS" ) ); } - return QgsPoint( x, y, z ); + return QgsPoint( x, y, !std::isnan( point.z() ) ? z : point.z() ); } @@ -550,11 +550,11 @@ QgsPointXY QgsMapSettings::mapToLayerCoordinates( const QgsMapLayer *layer, QgsP return point; } -QgsPoint QgsMapSettings::mapToLayerCoordinates( const QgsMapLayer *layer, QgsPoint point ) const +QgsPoint QgsMapSettings::mapToLayerCoordinates( const QgsMapLayer *layer, const QgsPoint &point ) const { double x = point.x(); double y = point.y(); - double z = point.z(); + double z = !std::isnan( point.z() ) ? point.z() : 0.0; try { @@ -567,7 +567,7 @@ QgsPoint QgsMapSettings::mapToLayerCoordinates( const QgsMapLayer *layer, QgsPoi QgsMessageLog::logMessage( QObject::tr( "Transform error caught: %1" ).arg( cse.what() ), QObject::tr( "CRS" ) ); } - return QgsPoint( x, y, z ); + return QgsPoint( x, y, !std::isnan( point.z() ) ? z : point.z() ); } diff --git a/src/core/qgsmapsettings.h b/src/core/qgsmapsettings.h index dd4e5e6550ff..8a4c6ebfa084 100644 --- a/src/core/qgsmapsettings.h +++ b/src/core/qgsmapsettings.h @@ -468,7 +468,7 @@ class CORE_EXPORT QgsMapSettings : public QgsTemporalRangeObject * \returns the transformed point * \since QGIS 3.16 */ - QgsPoint layerToMapCoordinates( const QgsMapLayer *layer, QgsPoint point ) const; + QgsPoint layerToMapCoordinates( const QgsMapLayer *layer, const QgsPoint &point ) const; /** * \brief transform rectangle from layer's CRS to output CRS @@ -488,7 +488,7 @@ class CORE_EXPORT QgsMapSettings : public QgsTemporalRangeObject * \returns the transformed point * \since QGIS 3.16 */ - QgsPoint mapToLayerCoordinates( const QgsMapLayer *layer, QgsPoint point ) const; + QgsPoint mapToLayerCoordinates( const QgsMapLayer *layer, const QgsPoint &point ) const; /** * \brief transform rectangle from output CRS to layer's CRS