diff --git a/app/inpututils.cpp b/app/inpututils.cpp index 855e5b2c2..09dd763dd 100644 --- a/app/inpututils.cpp +++ b/app/inpututils.cpp @@ -900,14 +900,25 @@ QgsPoint InputUtils::transformPoint( const QgsCoordinateReferenceSystem &srcCrs, { if ( !ct.isShortCircuited() ) { - const QgsVector3D transformed = ct.transform( QgsVector3D( srcPoint.x(), srcPoint.y(), srcPoint.z() ) ); - fallbackOperationOccurred = ct.fallbackOperationOccurred(); - const QgsPoint pt( transformed.x(), transformed.y(), transformed.z(), srcPoint.m() ); - return pt; + // check if the CRS have vertical axis + if ( srcCrs.hasVerticalAxis() && destCrs.hasVerticalAxis() ) + { + const QgsVector3D transformed = ct.transform( QgsVector3D( srcPoint.x(), srcPoint.y(), srcPoint.z() ) ); + fallbackOperationOccurred = ct.fallbackOperationOccurred(); + const QgsPoint pt( transformed.x(), transformed.y(), transformed.z(), srcPoint.m() ); + return pt; + } + else + { + const QgsPointXY transformedXY = ct.transform( QgsPointXY( srcPoint.x(), srcPoint.y() ) ); + fallbackOperationOccurred = ct.fallbackOperationOccurred(); + const QgsPoint pt( transformedXY.x(), transformedXY.y(), srcPoint.z(), srcPoint.m() ); + return pt; + } } - - return srcPoint; } + + return srcPoint; } catch ( QgsCsException &cse ) { diff --git a/app/position/mapposition.cpp b/app/position/mapposition.cpp index be6e18177..c13661c99 100644 --- a/app/position/mapposition.cpp +++ b/app/position/mapposition.cpp @@ -105,7 +105,7 @@ void MapPosition::recalculateMapPosition() { QgsPointXY srcPoint = QgsPointXY( geoposition.x(), geoposition.y() ); QgsPointXY mapPositionXY = InputUtils::transformPointXY( - mPositionKit->positionCrs3D(), + mPositionKit->positionCrs2D(), mMapSettings->destinationCrs(), mMapSettings->transformContext(), srcPoint