52 bool QgsVectorTileLayer::loadDataSource()
 
   57   mSourceType = dsUri.
param( QStringLiteral( 
"type" ) );
 
   58   mSourcePath = dsUri.
param( QStringLiteral( 
"url" ) );
 
   59   if ( mSourceType == QLatin1String( 
"xyz" ) && dsUri.
param( QStringLiteral( 
"serviceType" ) ) == QLatin1String( 
"arcgis" ) )
 
   61     if ( !setupArcgisVectorTileServiceConnection( mSourcePath, dsUri ) )
 
   64   else if ( mSourceType == QLatin1String( 
"xyz" ) )
 
   68       QgsDebugMsg( QStringLiteral( 
"Invalid format of URL for XYZ source: " ) + mSourcePath );
 
   76     if ( dsUri.
hasParam( QStringLiteral( 
"zmin" ) ) )
 
   77       mSourceMinZoom = dsUri.
param( QStringLiteral( 
"zmin" ) ).toInt();
 
   78     if ( dsUri.
hasParam( QStringLiteral( 
"zmax" ) ) )
 
   79       mSourceMaxZoom = dsUri.
param( QStringLiteral( 
"zmax" ) ).toInt();
 
   81     setExtent( 
QgsRectangle( -20037508.3427892, -20037508.3427892, 20037508.3427892, 20037508.3427892 ) );
 
   83   else if ( mSourceType == QLatin1String( 
"mbtiles" ) )
 
   88       QgsDebugMsg( QStringLiteral( 
"failed to open MBTiles file: " ) + mSourcePath );
 
   92     QString format = reader.metadataValue( QStringLiteral( 
"format" ) );
 
   93     if ( format != QLatin1String( 
"pbf" ) )
 
   95       QgsDebugMsg( QStringLiteral( 
"Cannot open MBTiles for vector tiles. Format = " ) + format );
 
   99     QgsDebugMsgLevel( QStringLiteral( 
"name: " ) + reader.metadataValue( QStringLiteral( 
"name" ) ), 2 );
 
  100     bool minZoomOk, maxZoomOk;
 
  101     int minZoom = reader.metadataValue( QStringLiteral( 
"minzoom" ) ).toInt( &minZoomOk );
 
  102     int maxZoom = reader.metadataValue( QStringLiteral( 
"maxzoom" ) ).toInt( &maxZoomOk );
 
  104       mSourceMinZoom = minZoom;
 
  106       mSourceMaxZoom = maxZoom;
 
  107     QgsDebugMsgLevel( QStringLiteral( 
"zoom range: %1 - %2" ).arg( mSourceMinZoom ).arg( mSourceMaxZoom ), 2 );
 
  112     r = ct.transformBoundingBox( r );
 
  117     QgsDebugMsg( QStringLiteral( 
"Unknown source type: " ) + mSourceType );
 
  125 bool QgsVectorTileLayer::setupArcgisVectorTileServiceConnection( 
const QString &uri, 
const QgsDataSourceUri &dataSourceUri )
 
  131   query.addQueryItem( QStringLiteral( 
"f" ), QStringLiteral( 
"pjson" ) );
 
  132   url.setQuery( query );
 
  134   QNetworkRequest request = QNetworkRequest( url );
 
  139   switch ( networkRequest.get( request ) )
 
  151   const QByteArray raw = content.
content();
 
  155   QJsonDocument doc = QJsonDocument::fromJson( raw, &err );
 
  160   mArcgisLayerConfiguration = doc.object().toVariantMap();
 
  161   if ( mArcgisLayerConfiguration.contains( QStringLiteral( 
"error" ) ) )
 
  166   mArcgisLayerConfiguration.insert( QStringLiteral( 
"serviceUri" ), uri );
 
  167   mSourcePath = uri + 
'/' + mArcgisLayerConfiguration.value( QStringLiteral( 
"tiles" ) ).toList().value( 0 ).toString();
 
  170     QgsDebugMsg( QStringLiteral( 
"Invalid format of URL for XYZ source: " ) + mSourcePath );
 
  175   if ( !dataSourceUri.
hasParam( QStringLiteral( 
"zmin" ) ) )
 
  178     mSourceMinZoom = dataSourceUri.
param( QStringLiteral( 
"zmin" ) ).toInt();
 
  180   if ( !dataSourceUri.
hasParam( QStringLiteral( 
"zmax" ) ) )
 
  181     mSourceMaxZoom = mArcgisLayerConfiguration.value( QStringLiteral( 
"maxzoom" ) ).toInt();
 
  183     mSourceMaxZoom = dataSourceUri.
param( QStringLiteral( 
"zmax" ) ).toInt();
 
  185   setExtent( 
QgsRectangle( -20037508.3427892, -20037508.3427892, 20037508.3427892, 20037508.3427892 ) );
 
  219   QDomElement mapLayerNode = layerNode.toElement();
 
  230   QDomElement elem = node.toElement();
 
  234   const QDomElement elemRenderer = elem.firstChildElement( QStringLiteral( 
"renderer" ) );
 
  235   if ( elemRenderer.isNull() )
 
  237     errorMessage = tr( 
"Missing <renderer> tag" );
 
  240   const QString rendererType = elemRenderer.attribute( QStringLiteral( 
"type" ) );
 
  245     if ( rendererType == QLatin1String( 
"basic" ) )
 
  249       errorMessage = tr( 
"Unknown renderer type: " ) + rendererType;
 
  253     r->
readXml( elemRenderer, context );
 
  257   if ( categories.testFlag( 
Labeling ) )
 
  260     const QDomElement elemLabeling = elem.firstChildElement( QStringLiteral( 
"labeling" ) );
 
  261     if ( !elemLabeling.isNull() )
 
  263       const QString labelingType = elemLabeling.attribute( QStringLiteral( 
"type" ) );
 
  265       if ( labelingType == QLatin1String( 
"basic" ) )
 
  269         errorMessage = tr( 
"Unknown labeling type: " ) + rendererType;
 
  283     QDomNode blendModeNode = node.namedItem( QStringLiteral( 
"blendMode" ) );
 
  284     if ( !blendModeNode.isNull() )
 
  286       QDomElement e = blendModeNode.toElement();
 
  294     QDomNode layerOpacityNode = node.namedItem( QStringLiteral( 
"layerOpacity" ) );
 
  295     if ( !layerOpacityNode.isNull() )
 
  297       QDomElement e = layerOpacityNode.toElement();
 
  307   Q_UNUSED( errorMessage )
 
  308   QDomElement elem = node.toElement();
 
  314     QDomElement elemRenderer = doc.createElement( QStringLiteral( 
"renderer" ) );
 
  315     elemRenderer.setAttribute( QStringLiteral( 
"type" ), mRenderer->type() );
 
  318       mRenderer->writeXml( elemRenderer, context );
 
  320     elem.appendChild( elemRenderer );
 
  323   if ( mLabeling && categories.testFlag( 
Labeling ) )
 
  325     QDomElement elemLabeling = doc.createElement( QStringLiteral( 
"labeling" ) );
 
  326     elemLabeling.setAttribute( QStringLiteral( 
"type" ), mLabeling->type() );
 
  327     mLabeling->writeXml( elemLabeling, context );
 
  328     elem.appendChild( elemLabeling );
 
  334     QDomElement blendModeElem  = doc.createElement( QStringLiteral( 
"blendMode" ) );
 
  336     blendModeElem.appendChild( blendModeText );
 
  337     node.appendChild( blendModeElem );
 
  343     QDomElement layerOpacityElem  = doc.createElement( QStringLiteral( 
"layerOpacity" ) );
 
  344     QDomText layerOpacityText = doc.createTextNode( QString::number( 
opacity() ) );
 
  345     layerOpacityElem.appendChild( layerOpacityText );
 
  346     node.appendChild( layerOpacityElem );
 
  361   QStringList warnings;
 
  372   if ( !dsUri.
param( QStringLiteral( 
"styleUrl" ) ).isEmpty() )
 
  374     styleUrl = dsUri.
param( QStringLiteral( 
"styleUrl" ) );
 
  376   else if ( mSourceType == QLatin1String( 
"xyz" ) && dsUri.
param( QStringLiteral( 
"serviceType" ) ) == QLatin1String( 
"arcgis" ) )
 
  379     styleUrl = mArcgisLayerConfiguration.value( QStringLiteral( 
"serviceUri" ) ).toString()
 
  380                + 
'/' + mArcgisLayerConfiguration.value( QStringLiteral( 
"defaultStyles" ) ).toString();
 
  383   if ( !styleUrl.isEmpty() )
 
  385     QNetworkRequest request = QNetworkRequest( QUrl( styleUrl ) );
 
  390     switch ( networkRequest.
get( request ) )
 
  398         error = QObject::tr( 
"Error retrieving default style" );
 
  412     if ( styleDefinition.contains( QStringLiteral( 
"sprite" ) ) )
 
  415       QString spriteUriBase;
 
  416       if ( styleDefinition.value( QStringLiteral( 
"sprite" ) ).toString().startsWith( QLatin1String( 
"http" ) ) )
 
  418         spriteUriBase = styleDefinition.value( QStringLiteral( 
"sprite" ) ).toString();
 
  422         spriteUriBase = styleUrl + 
'/' + styleDefinition.value( QStringLiteral( 
"sprite" ) ).toString();
 
  425       for ( 
int resolution = 2; resolution > 0; resolution-- )
 
  427         QNetworkRequest request = QNetworkRequest( QUrl( spriteUriBase + QStringLiteral( 
"%1.json" ).arg( resolution > 1 ? QStringLiteral( 
"@%1x" ).arg( resolution ) : QString() ) ) );
 
  430         switch ( networkRequest.
get( request ) )
 
  438             QNetworkRequest request = QNetworkRequest( QUrl( spriteUriBase + QStringLiteral( 
"%1.png" ).arg( resolution > 1 ? QStringLiteral( 
"@%1x" ).arg( resolution ) : QString() ) ) );
 
  443             switch ( networkRequest.
get( request ) )
 
  448                 QImage spriteImage( QImage::fromData( imageContent.
content() ) );
 
  449                 context.
setSprites( spriteImage, spriteDefinition );
 
  488     bool resultFlag = 
false;
 
  498   if ( mSourceType == QLatin1String( 
"xyz" ) && dsUri.
param( QStringLiteral( 
"serviceType" ) ) == QLatin1String( 
"arcgis" ) )
 
  502     metadata.
setIdentifier( mArcgisLayerConfiguration.value( QStringLiteral( 
"serviceUri" ) ).toString() );
 
  503     const QString parentIdentifier = mArcgisLayerConfiguration.value( QStringLiteral( 
"serviceItemId" ) ).toString();
 
  504     if ( !parentIdentifier.isEmpty() )
 
  509     metadata.
setTitle( mArcgisLayerConfiguration.value( QStringLiteral( 
"name" ) ).toString() );
 
  510     QString copyright = mArcgisLayerConfiguration.value( QStringLiteral( 
"copyrightText" ) ).toString();
 
  511     if ( !copyright.isEmpty() )
 
  538     if ( sourceUrl.isLocalFile() )
 
  543       dsUri.
setParam( QStringLiteral( 
"url" ), QUrl::fromLocalFile( relSrcUrl ).toString() );
 
  547   else if ( 
sourceType == QLatin1String( 
"mbtiles" ) )
 
  570     if ( sourceUrl.isLocalFile() )  
 
  574       dsUri.
setParam( QStringLiteral( 
"url" ), QUrl::fromLocalFile( absSrcUrl ).toString() );
 
  578   else if ( 
sourceType == QLatin1String( 
"mbtiles" ) )
 
  593   QString info = QStringLiteral( 
"<html><head></head>\n<body>\n" );
 
  595   info += QStringLiteral( 
"<h1>" ) + tr( 
"Information from provider" ) + QStringLiteral( 
"</h1>\n<hr>\n" ) %
 
  596           QStringLiteral( 
"<table class=\"list-view\">\n" ) %
 
  599           QStringLiteral( 
"<tr><td class=\"highlight\">" ) % tr( 
"Name" ) % QStringLiteral( 
"</td><td>" ) % 
name() % QStringLiteral( 
"</td></tr>\n" );
 
  601   info += QStringLiteral( 
"<tr><td class=\"highlight\">" ) % tr( 
"URI" ) % QStringLiteral( 
"</td><td>" ) % 
source() % QStringLiteral( 
"</td></tr>\n" );
 
  602   info += QStringLiteral( 
"<tr><td class=\"highlight\">" ) % tr( 
"Source type" ) % QStringLiteral( 
"</td><td>" ) % 
sourceType() % QStringLiteral( 
"</td></tr>\n" );
 
  605   info += QStringLiteral( 
"<tr><td class=\"highlight\">" ) % tr( 
"Source path" ) % QStringLiteral( 
"</td><td>%1" ).arg( QStringLiteral( 
"<a href=\"%1\">%2</a>" ).arg( QUrl( url ).toString(), 
sourcePath() ) ) + QStringLiteral( 
"</td></tr>\n" );
 
  607   info += QStringLiteral( 
"<tr><td class=\"highlight\">" ) % tr( 
"Zoom levels" ) % QStringLiteral( 
"</td><td>" ) % QStringLiteral( 
"%1 - %2" ).arg( 
sourceMinZoom() ).arg( 
sourceMaxZoom() ) % QStringLiteral( 
"</td></tr>\n" );
 
  609   info += QLatin1String( 
"</table>\n<br><br>" );
 
  615   info += QStringLiteral( 
"<h1>" ) % tr( 
"Identification" ) % QStringLiteral( 
"</h1>\n<hr>\n" ) %
 
  617           QStringLiteral( 
"<br><br>\n" ) %
 
  620           QStringLiteral( 
"<h1>" ) % tr( 
"Extent" ) % QStringLiteral( 
"</h1>\n<hr>\n" ) %
 
  622           QStringLiteral( 
"<br><br>\n" ) %
 
  625           QStringLiteral( 
"<h1>" ) % tr( 
"Access" ) % QStringLiteral( 
"</h1>\n<hr>\n" ) %
 
  627           QStringLiteral( 
"<br><br>\n" ) %
 
  631           QStringLiteral( 
"<h1>" ) % tr( 
"Contacts" ) % QStringLiteral( 
"</h1>\n<hr>\n" ) %
 
  633           QStringLiteral( 
"<br><br>\n" ) %
 
  636           QStringLiteral( 
"<h1>" ) % tr( 
"References" ) % QStringLiteral( 
"</h1>\n<hr>\n" ) %
 
  638           QStringLiteral( 
"<br><br>\n" ) %
 
  641           QStringLiteral( 
"<h1>" ) % tr( 
"History" ) % QStringLiteral( 
"</h1>\n<hr>\n" ) %
 
  643           QStringLiteral( 
"<br><br>\n" ) %
 
  645           QStringLiteral( 
"\n</body>\n</html>\n" );
 
  658   const QString referer = dsUri.
param( QStringLiteral( 
"referer" ) );
 
  661   if ( rawTiles.isEmpty() )
 
  663   return rawTiles.first().data;
 
  668   mRenderer.reset( r );
 
  674   return mRenderer.get();
 
  685   return mLabeling.get();
 
A thread safe class for performing blocking (sync) network requests, with full support for QGIS proxy...
ErrorCode get(QNetworkRequest &request, bool forceRefresh=false, QgsFeedback *feedback=nullptr)
Performs a "get" operation on the specified request.
@ NetworkError
A network error occurred.
@ ServerExceptionError
An exception was raised by the server.
@ NoError
No error was encountered.
@ TimeoutError
Timeout was reached before a reply was received.
QgsNetworkReplyContent reply() const
Returns the content of the network reply, after a get() or post() request has been made.
This class represents a coordinate reference system (CRS).
Contains information about the context in which a coordinate transform is executed.
Class for storing the component parts of a RDBMS data source URI (e.g.
QByteArray encodedUri() const
Returns the complete encoded URI as a byte array.
bool hasParam(const QString &key) const
Returns true if a parameter with the specified key exists.
int removeParam(const QString &key)
Removes a generic parameter by key.
void setEncodedUri(const QByteArray &uri)
Sets the complete encoded uri.
QString param(const QString &key) const
Returns a generic parameter value corresponding to the specified key.
void setParam(const QString &key, const QString &value)
Sets a generic parameter value on the URI.
QString authConfigId() const
Returns any associated authentication configuration ID stored in the URI.
static QVariant parseJson(const std::string &jsonString)
Converts JSON jsonString to a QVariant, in case of parsing error an invalid QVariant is returned.
Context for a MapBox GL style conversion operation.
void setPixelSizeConversionFactor(double sizeConversionFactor)
Sets the pixel size conversion factor, used to scale the original pixel sizes when converting styles.
void setSprites(const QImage &image, const QVariantMap &definitions)
Sets the sprite image and definitions JSON to use during conversion.
void setTargetUnit(QgsUnitTypes::RenderUnit targetUnit)
Sets the target unit type.
QVariantMap spriteDefinitions() const
Returns the sprite definitions to use during conversion.
Handles conversion of MapBox GL styles to QGIS vector tile renderers and labeling settings.
QgsVectorTileRenderer * renderer() const
Returns a new instance of a vector tile renderer representing the converted style,...
QgsVectorTileLabeling * labeling() const
Returns a new instance of a vector tile labeling representing the converted style,...
Result convert(const QVariantMap &style, QgsMapBoxGlStyleConversionContext *context=nullptr)
Converts a JSON style map, and returns the resultant status of the conversion.
@ Success
Conversion was successful.
QString errorMessage() const
Returns a descriptive error message if an error was encountered during the style conversion,...
QStringList warnings() const
Returns a list of user-friendly warnings generated during the conversion, e.g.
static QString typeToString(QgsMapLayerType type)
Converts a map layer type to a string value.
Base class for utility classes that encapsulate information necessary for rendering of map layers.
Base class for all map layer types.
void readStyleManager(const QDomNode &layerNode)
Read style manager's configuration (if any). To be called by subclasses.
void writeStyleManager(QDomNode &layerNode, QDomDocument &doc) const
Write style manager's configuration (if exists). To be called by subclasses.
QString source() const
Returns the source for the layer.
void setBlendMode(QPainter::CompositionMode blendMode)
Set the blending mode used for rendering a layer.
virtual QString loadDefaultStyle(bool &resultFlag)
Retrieve the default style for this layer if one exists (either as a .qml file on disk or as a record...
void triggerRepaint(bool deferredUpdate=false)
Will advise the map canvas (and any other interested party) that this layer requires to be repainted.
QString crsHtmlMetadata() const
Returns a HTML fragment containing the layer's CRS metadata, for use in the htmlMetadata() method.
QgsLayerMetadata metadata
QPainter::CompositionMode blendMode() const
Returns the current blending mode for a layer.
virtual void setOpacity(double opacity)
Sets the opacity for the layer, where opacity is a value between 0 (totally transparent) and 1....
virtual void setMetadata(const QgsLayerMetadata &metadata)
Sets the layer's metadata store.
QgsCoordinateTransformContext transformContext() const
Returns the layer data provider coordinate transform context or a default transform context if the la...
virtual QgsError error() const
Gets current status error.
virtual void setExtent(const QgsRectangle &rect)
Sets the extent.
QString mDataSource
Data source description string, varies by layer type.
virtual QString loadDefaultMetadata(bool &resultFlag)
Retrieve the default metadata for this layer if one exists (either as a .qmd file on disk or as a rec...
void setValid(bool valid)
Sets whether layer is valid or not.
void readCommonStyle(const QDomElement &layerElement, const QgsReadWriteContext &context, StyleCategories categories=AllStyleCategories)
Read style data common to all layer types.
@ Rendering
Rendering: scale visibility, simplify method, opacity.
void writeCommonStyle(QDomElement &layerElement, QDomDocument &document, const QgsReadWriteContext &context, StyleCategories categories=AllStyleCategories) const
Write style data common to all layer types.
void invalidateWgs84Extent()
Invalidates the WGS84 extent.
void setCrs(const QgsCoordinateReferenceSystem &srs, bool emitSignal=true)
Sets layer's spatial reference system.
Utility class for reading and writing MBTiles files (which are SQLite3 databases).
Encapsulates a network reply within a container which is inexpensive to copy and safe to pass between...
QByteArray content() const
Returns the reply content.
static QgsPainting::BlendMode getBlendModeEnum(QPainter::CompositionMode blendMode)
Returns a BlendMode corresponding to a QPainter::CompositionMode.
static QPainter::CompositionMode getCompositionMode(QgsPainting::BlendMode blendMode)
Returns a QPainter::CompositionMode corresponding to a BlendMode.
BlendMode
Blending modes enum defining the available composition modes that can be used when rendering a layer.
QString writePath(const QString &filename) const
Prepare a filename to save it to the project file.
QString readPath(const QString &filename) const
Turn filename read from the project file to an absolute path.
The class is used as a container of context for various read/write operations on other objects.
const QgsPathResolver & pathResolver() const
Returns path resolver for conversion between relative and absolute paths.
A rectangle specified with double values.
Contains information about the context of a rendering operation.
Defines a matrix of tiles for a single zoom level: it is defined by its size (width *.
static QgsTileMatrix fromWebMercator(int mZoomLevel)
Returns a tile matrix for the usual web mercator.
Range of tiles in a tile matrix to be rendered.
Stores coordinates of a tile in a tile matrix set.
int zoomLevel() const
Returns tile's zoom level (Z)
int column() const
Returns tile's column index (X)
int row() const
Returns tile's row index (Y)
@ RenderMillimeters
Millimeters.
Basic labeling configuration for vector tile layers.
The default vector tile renderer implementation.
static QList< QgsVectorTileBasicRendererStyle > simpleStyleWithRandomColors()
Returns a list of styles to render all layers, using random colors.
Base class for labeling configuration classes for vector tile layers.
virtual void readXml(const QDomElement &elem, const QgsReadWriteContext &context)=0
Reads labeling properties from given XML element.
This class provides map rendering functionality for vector tile layers.
Implements a map layer that is dedicated to rendering of vector tiles.
QByteArray getRawTile(QgsTileXYZ tileID)
Fetches raw tile data for the give tile coordinates.
bool readXml(const QDomNode &layerNode, QgsReadWriteContext &context) override
Called by readLayerXML(), used by children to read state specific to them from project files.
bool writeSymbology(QDomNode &node, QDomDocument &doc, QString &errorMessage, const QgsReadWriteContext &context, StyleCategories categories=AllStyleCategories) const override
Write the style for the layer into the docment provided.
void setRenderer(QgsVectorTileRenderer *r)
Sets renderer for the map layer.
QString decodedSource(const QString &source, const QString &provider, const QgsReadWriteContext &context) const FINAL
Called by readLayerXML(), used by derived classes to decode provider's specific data source from proj...
QString sourceType() const
Returns type of the data source.
bool writeXml(QDomNode &layerNode, QDomDocument &doc, const QgsReadWriteContext &context) const override
Called by writeLayerXML(), used by children to write state specific to them to project files.
void setLabeling(QgsVectorTileLabeling *labeling)
Sets labeling for the map layer.
QgsVectorTileLabeling * labeling() const
Returns currently assigned labeling.
~QgsVectorTileLayer() override
bool readSymbology(const QDomNode &node, QString &errorMessage, QgsReadWriteContext &context, StyleCategories categories=AllStyleCategories) override
Read the symbology for the current layer from the DOM node supplied.
int sourceMinZoom() const
Returns minimum zoom level at which source has any valid tiles (negative = unconstrained)
QgsMapLayerRenderer * createMapRenderer(QgsRenderContext &rendererContext) override
Returns new instance of QgsMapLayerRenderer that will be used for rendering of given context.
QString loadDefaultStyle(bool &resultFlag) override
Retrieve the default style for this layer if one exists (either as a .qml file on disk or as a record...
QString htmlMetadata() const override
Obtain a formatted HTML string containing assorted metadata for this layer.
QString encodedSource(const QString &source, const QgsReadWriteContext &context) const FINAL
Called by writeLayerXML(), used by derived classes to encode provider's specific data source to proje...
QgsVectorTileLayer(const QString &path=QString(), const QString &baseName=QString())
Constructs a new vector tile layer.
int sourceMaxZoom() const
Returns maximum zoom level at which source has any valid tiles (negative = unconstrained)
QgsVectorTileRenderer * renderer() const
Returns currently assigned renderer.
QString loadDefaultMetadata(bool &resultFlag) override
Retrieve the default metadata for this layer if one exists (either as a .qmd file on disk or as a rec...
QString sourcePath() const
Returns URL/path of the data source (syntax different to each data source type)
void setTransformContext(const QgsCoordinateTransformContext &transformContext) override
Sets the coordinate transform context to transformContext.
QgsVectorTileLayer * clone() const override
Returns a new instance equivalent to this one except for the id which is still unique.
static QList< QgsVectorTileRawData > blockingFetchTileRawData(const QString &sourceType, const QString &sourcePath, const QgsTileMatrix &tileMatrix, const QPointF &viewCenter, const QgsTileRange &range, const QString &authid, const QString &referer)
Returns raw tile data for the specified range of tiles. Blocks the caller until all tiles are fetched...
Abstract base class for all vector tile renderer implementations.
virtual void readXml(const QDomElement &elem, const QgsReadWriteContext &context)=0
Reads renderer's properties from given XML element.
static bool checkXYZUrlTemplate(const QString &url)
Checks whether the URL template string is correct (contains {x}, {y} / {-y}, {z} placeholders)
QgsMapLayerType
Types of layers that can be added to a map.
@ VectorTileLayer
Added in 3.14.
#define QgsDebugMsgLevel(str, level)
#define QgsSetRequestInitiatorClass(request, _class)