QgsMapLayer* QgsHostedRDSBuilder::createMapLayer( const QDomElement& elem, const QString& layerName, QList<QTemporaryFile*>& filesToRemove, QList<QgsMapLayer*>& layersToRemove, bool allowCaching ) const { QgsMSDebugMsg( "entering." ); if ( elem.isNull() ) { return 0; } QString uri = elem.attribute( "uri", "not found" ); if ( uri == "not found" ) { QgsMSDebugMsg( "Uri not found" ); return 0; } else { QgsMSDebugMsg( "Trying to get hostedrds layer from cache with uri: " + uri ); QgsRasterLayer* rl = 0; if ( allowCaching ) { rl = dynamic_cast<QgsRasterLayer*>( QgsMSLayerCache::instance()->searchLayer( uri, layerName ) ); } if ( !rl ) { QgsMSDebugMsg( "hostedrds layer not in cache, so create and insert it" ); rl = new QgsRasterLayer( uri, layerNameFromUri( uri ) ); if ( allowCaching ) { QgsMSLayerCache::instance()->insertLayer( uri, layerName, rl ); } else { layersToRemove.push_back( rl ); } } clearRasterSymbology( rl ); //projection if ( rl ) { QString epsg = elem.attribute( "epsg" ); if ( !epsg.isEmpty() ) { bool conversionOk; int epsgnr = epsg.toInt( &conversionOk ); if ( conversionOk ) { //set spatial ref sys QgsCoordinateReferenceSystem srs; srs.createFromOgcWmsCrs( QString( "EPSG:%1" ).arg( epsgnr ) ); rl->setCrs( srs ); } } } return rl; } }