diff --git a/src/3d/qgs3dutils.cpp b/src/3d/qgs3dutils.cpp index 8ff8d920fa2c..c7b0219ac5c9 100644 --- a/src/3d/qgs3dutils.cpp +++ b/src/3d/qgs3dutils.cpp @@ -172,14 +172,15 @@ QList Qgs3DUtils::positions( const Qgs3DMapSettings &map, QgsVectorLa continue; const QgsAbstractGeometry *g = f.geometry().constGet(); - if ( const QgsPoint *pt = qgsgeometry_cast< const QgsPoint *>( g ) ) + for ( auto it = g->vertices_begin(); it != g->vertices_end(); ++it ) { + QgsPoint pt = *it; float geomZ = 0; - if ( pt->is3D() ) + if ( pt.is3D() ) { - geomZ = pt->z(); + geomZ = pt.z(); } - float terrainZ = map.terrainGenerator()->heightAt( pt->x(), pt->y(), map ) * map.terrainVerticalScale(); + float terrainZ = map.terrainGenerator()->heightAt( pt.x(), pt.y(), map ) * map.terrainVerticalScale(); float h; switch ( altClamp ) { @@ -193,11 +194,9 @@ QList Qgs3DUtils::positions( const Qgs3DMapSettings &map, QgsVectorLa h = terrainZ + geomZ; break; } - positions.append( QVector3D( pt->x() - map.originX(), h, -( pt->y() - map.originY() ) ) ); + positions.append( QVector3D( pt.x() - map.originX(), h, -( pt.y() - map.originY() ) ) ); //qDebug() << positions.last(); } - else - qDebug() << "not a point"; } return positions; diff --git a/src/3d/qgs3dutils.h b/src/3d/qgs3dutils.h index ff4047e74ba6..fcc67f1eef7f 100644 --- a/src/3d/qgs3dutils.h +++ b/src/3d/qgs3dutils.h @@ -75,7 +75,7 @@ class _3D_EXPORT Qgs3DUtils static QMatrix4x4 stringToMatrix4x4( const QString &str ); /** - * Calculates (x,y,z) position of point in the Point vector layers + * Calculates (x,y,z) positions of a (multi)point in the Point vector layers */ static QList positions( const Qgs3DMapSettings &map, QgsVectorLayer *layer, const QgsFeatureRequest &req, AltitudeClamping altClamp );