Skip to content

Commit

Permalink
[wms] Fix broken WMS layers from servers using relative OnlineResourc…
Browse files Browse the repository at this point in the history
…e paths
  • Loading branch information
nirvn committed Jun 19, 2020
1 parent 21c6573 commit 714b2ef
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 6 deletions.
14 changes: 10 additions & 4 deletions src/providers/wms/qgswmscapabilities.cpp
Expand Up @@ -452,8 +452,9 @@ QDateTime QgsWmsSettings::parseWmstDateTimes( QString item )
// ----------------------


QgsWmsCapabilities::QgsWmsCapabilities( const QgsCoordinateTransformContext &coordinateTransformContext ):
mCoordinateTransformContext( coordinateTransformContext )
QgsWmsCapabilities::QgsWmsCapabilities( const QgsCoordinateTransformContext &coordinateTransformContext, const QString &baseUrl ):
mCoordinateTransformContext( coordinateTransformContext ),
mBaseUrl( baseUrl )
{

}
Expand Down Expand Up @@ -691,8 +692,13 @@ void QgsWmsCapabilities::parseService( const QDomElement &element, QgsWmsService

void QgsWmsCapabilities::parseOnlineResource( const QDomElement &element, QgsWmsOnlineResourceAttribute &onlineResourceAttribute )
{

onlineResourceAttribute.xlinkHref = QUrl::fromEncoded( element.attribute( QStringLiteral( "xlink:href" ) ).toUtf8() ).toString();
QUrl url = QUrl::fromEncoded( element.attribute( QStringLiteral( "xlink:href" ) ).toUtf8() );
if ( url.isRelative() )
{
const QUrl baseUrl = QUrl( mBaseUrl );
url = baseUrl.resolved( url );
}
onlineResourceAttribute.xlinkHref = url.toString();
}


Expand Down
3 changes: 2 additions & 1 deletion src/providers/wms/qgswmscapabilities.h
Expand Up @@ -933,7 +933,7 @@ class QgsWmsCapabilities
/**
* Constructs a QgsWmsCapabilities object with the given \a coordinateTransformContext
*/
QgsWmsCapabilities( const QgsCoordinateTransformContext &coordinateTransformContext = QgsCoordinateTransformContext() );
QgsWmsCapabilities( const QgsCoordinateTransformContext &coordinateTransformContext = QgsCoordinateTransformContext(), const QString &baseUrl = QString() );

bool isValid() const { return mValid; }

Expand Down Expand Up @@ -1072,6 +1072,7 @@ class QgsWmsCapabilities
private:

QgsCoordinateTransformContext mCoordinateTransformContext;
QString mBaseUrl;

friend class QgsWmsProvider;
friend class TestQgsWmsCapabilities;
Expand Down
2 changes: 1 addition & 1 deletion src/providers/wms/qgswmsprovider.cpp
Expand Up @@ -1373,7 +1373,7 @@ bool QgsWmsProvider::retrieveServerCapabilities( bool forceRefresh )
return false;
}

QgsWmsCapabilities caps( transformContext() );
QgsWmsCapabilities caps( transformContext(), mSettings.baseUrl() );
if ( !caps.parseResponse( downloadCaps.response(), mSettings.parserSettings() ) )
{
mErrorFormat = caps.lastErrorFormat();
Expand Down

0 comments on commit 714b2ef

Please sign in to comment.