2828
2929Qgs3DMapSettings::Qgs3DMapSettings ( const Qgs3DMapSettings &other )
3030 : QObject()
31- , mOriginX( other.mOriginX )
32- , mOriginY( other.mOriginY )
33- , mOriginZ( other.mOriginZ )
31+ , mOrigin( other.mOrigin )
3432 , mCrs( other.mCrs )
3533 , mBackgroundColor( other.mBackgroundColor )
3634 , mTerrainVerticalScale( other.mTerrainVerticalScale )
@@ -59,9 +57,10 @@ Qgs3DMapSettings::~Qgs3DMapSettings()
5957void Qgs3DMapSettings::readXml ( const QDomElement &elem, const QgsReadWriteContext &context )
6058{
6159 QDomElement elemOrigin = elem.firstChildElement ( " origin" );
62- mOriginX = elemOrigin.attribute ( " x" ).toDouble ();
63- mOriginY = elemOrigin.attribute ( " y" ).toDouble ();
64- mOriginZ = elemOrigin.attribute ( " z" ).toDouble ();
60+ mOrigin = QgsVector3D (
61+ elemOrigin.attribute ( " x" ).toDouble (),
62+ elemOrigin.attribute ( " y" ).toDouble (),
63+ elemOrigin.attribute ( " z" ).toDouble () );
6564
6665 QDomElement elemCrs = elem.firstChildElement ( " crs" );
6766 mCrs .readXml ( elemCrs );
@@ -85,7 +84,9 @@ void Qgs3DMapSettings::readXml( const QDomElement &elem, const QgsReadWriteConte
8584 QString terrainGenType = elemTerrainGenerator.attribute ( " type" );
8685 if ( terrainGenType == " dem" )
8786 {
88- mTerrainGenerator .reset ( new QgsDemTerrainGenerator );
87+ QgsDemTerrainGenerator *demTerrainGenerator = new QgsDemTerrainGenerator;
88+ demTerrainGenerator->setCrs ( mCrs );
89+ mTerrainGenerator .reset ( demTerrainGenerator );
8990 }
9091 else if ( terrainGenType == " quantized-mesh" )
9192 {
@@ -139,9 +140,9 @@ QDomElement Qgs3DMapSettings::writeXml( QDomDocument &doc, const QgsReadWriteCon
139140 QDomElement elem = doc.createElement ( " qgis3d" );
140141
141142 QDomElement elemOrigin = doc.createElement ( " origin" );
142- elemOrigin.setAttribute ( " x" , QString::number ( mOriginX ) );
143- elemOrigin.setAttribute ( " y" , QString::number ( mOriginY ) );
144- elemOrigin.setAttribute ( " z" , QString::number ( mOriginZ ) );
143+ elemOrigin.setAttribute ( " x" , QString::number ( mOrigin . x () ) );
144+ elemOrigin.setAttribute ( " y" , QString::number ( mOrigin . y () ) );
145+ elemOrigin.setAttribute ( " z" , QString::number ( mOrigin . z () ) );
145146 elem.appendChild ( elemOrigin );
146147
147148 QDomElement elemCrs = doc.createElement ( " crs" );
@@ -210,11 +211,14 @@ void Qgs3DMapSettings::resolveReferences( const QgsProject &project )
210211 }
211212}
212213
213- void Qgs3DMapSettings::setOrigin ( double originX, double originY, double originZ )
214+ QgsVector3D Qgs3DMapSettings::mapToWorldCoordinates ( const QgsVector3D &mapCoords ) const
214215{
215- mOriginX = originX;
216- mOriginY = originY;
217- mOriginZ = originZ;
216+ return Qgs3DUtils::mapToWorldCoordinates ( mapCoords, mOrigin );
217+ }
218+
219+ QgsVector3D Qgs3DMapSettings::worldToMapCoordinates ( const QgsVector3D &worldCoords ) const
220+ {
221+ return Qgs3DUtils::worldToMapCoordinates ( worldCoords, mOrigin );
218222}
219223
220224void Qgs3DMapSettings::setCrs ( const QgsCoordinateReferenceSystem &crs )
0 commit comments