43 , mTransformContext( options.transformContext )
57 void QgsVectorTileLayer::setDataSourcePrivate(
const QString &dataSource,
const QString &baseName,
const QString &,
const QgsDataProvider::ProviderOptions &, QgsDataProvider::ReadFlags )
61 mDataProvider.reset();
66 bool QgsVectorTileLayer::loadDataSource()
73 mSourceType = dsUri.
param( QStringLiteral(
"type" ) );
74 mSourcePath = dsUri.
param( QStringLiteral(
"url" ) );
75 if ( mSourceType == QLatin1String(
"xyz" ) && dsUri.
param( QStringLiteral(
"serviceType" ) ) == QLatin1String(
"arcgis" ) )
77 if ( !setupArcgisVectorTileServiceConnection( mSourcePath, dsUri ) )
80 else if ( mSourceType == QLatin1String(
"xyz" ) )
84 QgsDebugMsg( QStringLiteral(
"Invalid format of URL for XYZ source: " ) + mSourcePath );
90 if ( dsUri.
hasParam( QStringLiteral(
"zmin" ) ) )
91 zMin = dsUri.
param( QStringLiteral(
"zmin" ) ).toInt();
94 if ( dsUri.
hasParam( QStringLiteral(
"zmax" ) ) )
95 zMax = dsUri.
param( QStringLiteral(
"zmax" ) ).toInt();
98 setExtent(
QgsRectangle( -20037508.3427892, -20037508.3427892, 20037508.3427892, 20037508.3427892 ) );
100 else if ( mSourceType == QLatin1String(
"mbtiles" ) )
103 if ( !reader.open() )
105 QgsDebugMsg( QStringLiteral(
"failed to open MBTiles file: " ) + mSourcePath );
109 const QString format = reader.metadataValue( QStringLiteral(
"format" ) );
110 if ( format != QLatin1String(
"pbf" ) )
112 QgsDebugMsg( QStringLiteral(
"Cannot open MBTiles for vector tiles. Format = " ) + format );
116 QgsDebugMsgLevel( QStringLiteral(
"name: " ) + reader.metadataValue( QStringLiteral(
"name" ) ), 2 );
117 bool minZoomOk, maxZoomOk;
118 const int minZoom = reader.metadataValue( QStringLiteral(
"minzoom" ) ).toInt( &minZoomOk );
119 const int maxZoom = reader.metadataValue( QStringLiteral(
"maxzoom" ) ).toInt( &maxZoomOk );
129 ct.setBallparkTransformsAreAppropriate(
true );
130 r = ct.transformBoundingBox( r );
133 else if ( mSourceType == QLatin1String(
"vtpk" ) )
136 if ( !reader.open() )
138 QgsDebugMsg( QStringLiteral(
"failed to open VTPK file: " ) + mSourcePath );
142 const QVariantMap
metadata = reader.metadata();
143 const QString format =
metadata.value( QStringLiteral(
"tileInfo" ) ).toMap().value( QStringLiteral(
"format" ) ).toString();
144 if ( format != QLatin1String(
"pbf" ) )
146 QgsDebugMsg( QStringLiteral(
"Cannot open VTPK for vector tiles. Format = " ) + format );
150 mMatrixSet = reader.matrixSet();
156 QgsDebugMsg( QStringLiteral(
"Unknown source type: " ) + mSourceType );
161 const QgsDataProvider::ReadFlags
flags;
162 mDataProvider.reset(
new QgsVectorTileDataProvider( providerOptions,
flags ) );
168 bool QgsVectorTileLayer::setupArcgisVectorTileServiceConnection(
const QString &uri,
const QgsDataSourceUri &dataSourceUri )
174 query.addQueryItem( QStringLiteral(
"f" ), QStringLiteral(
"pjson" ) );
175 url.setQuery( query );
177 QNetworkRequest request = QNetworkRequest( url );
182 switch ( networkRequest.get( request ) )
194 const QByteArray raw = content.
content();
198 const QJsonDocument doc = QJsonDocument::fromJson( raw, &err );
203 mArcgisLayerConfiguration = doc.object().toVariantMap();
204 if ( mArcgisLayerConfiguration.contains( QStringLiteral(
"error" ) ) )
209 mArcgisLayerConfiguration.insert( QStringLiteral(
"serviceUri" ), uri );
210 mSourcePath = uri +
'/' + mArcgisLayerConfiguration.value( QStringLiteral(
"tiles" ) ).toList().value( 0 ).toString();
213 QgsDebugMsg( QStringLiteral(
"Invalid format of URL for XYZ source: " ) + mSourcePath );
221 if ( dataSourceUri.
hasParam( QStringLiteral(
"zmin" ) ) )
224 if ( dataSourceUri.
hasParam( QStringLiteral(
"zmax" ) ) )
227 const QVariantMap fullExtent = mArcgisLayerConfiguration.value( QStringLiteral(
"fullExtent" ) ).toMap();
228 if ( !fullExtent.isEmpty() )
231 fullExtent.value( QStringLiteral(
"xmin" ) ).toDouble(),
232 fullExtent.value( QStringLiteral(
"ymin" ) ).toDouble(),
233 fullExtent.value( QStringLiteral(
"xmax" ) ).toDouble(),
234 fullExtent.value( QStringLiteral(
"ymax" ) ).toDouble()
241 setExtent( extentTransform.transformBoundingBox( fullExtentRect ) );
245 QgsDebugMsg( QStringLiteral(
"Could not transform layer fullExtent to layer CRS" ) );
254 setExtent( extentTransform.transformBoundingBox(
QgsRectangle( -20037508.3427892, -20037508.3427892, 20037508.3427892, 20037508.3427892 ) ) );
258 QgsDebugMsg( QStringLiteral(
"Could not transform layer extent to layer CRS" ) );
278 return mDataProvider.get();
283 return mDataProvider.get();
295 const QDomElement matrixSetElement = layerNode.firstChildElement( QStringLiteral(
"matrixSet" ) );
296 if ( !matrixSetElement.isNull() )
298 mMatrixSet.
readXml( matrixSetElement, context );
312 QDomElement mapLayerNode = layerNode.toElement();
315 mapLayerNode.appendChild( mMatrixSet.
writeXml( doc, context ) );
320 QDomElement provider = doc.createElement( QStringLiteral(
"provider" ) );
321 const QDomText providerText = doc.createTextNode(
providerType() );
322 provider.appendChild( providerText );
323 mapLayerNode.appendChild( provider );
334 const QDomElement elem = node.toElement();
338 const QDomElement elemRenderer = elem.firstChildElement( QStringLiteral(
"renderer" ) );
339 if ( elemRenderer.isNull() )
341 errorMessage = tr(
"Missing <renderer> tag" );
344 const QString rendererType = elemRenderer.attribute( QStringLiteral(
"type" ) );
349 if ( rendererType == QLatin1String(
"basic" ) )
353 errorMessage = tr(
"Unknown renderer type: " ) + rendererType;
357 r->
readXml( elemRenderer, context );
361 if ( categories.testFlag(
Labeling ) )
364 const QDomElement elemLabeling = elem.firstChildElement( QStringLiteral(
"labeling" ) );
365 if ( !elemLabeling.isNull() )
367 const QString labelingType = elemLabeling.attribute( QStringLiteral(
"type" ) );
369 if ( labelingType == QLatin1String(
"basic" ) )
373 errorMessage = tr(
"Unknown labeling type: " ) + rendererType;
387 const QDomNode blendModeNode = node.namedItem( QStringLiteral(
"blendMode" ) );
388 if ( !blendModeNode.isNull() )
390 const QDomElement e = blendModeNode.toElement();
398 const QDomNode layerOpacityNode = node.namedItem( QStringLiteral(
"layerOpacity" ) );
399 if ( !layerOpacityNode.isNull() )
401 const QDomElement e = layerOpacityNode.toElement();
411 Q_UNUSED( errorMessage )
412 QDomElement elem = node.toElement();
418 QDomElement elemRenderer = doc.createElement( QStringLiteral(
"renderer" ) );
419 elemRenderer.setAttribute( QStringLiteral(
"type" ), mRenderer->type() );
422 mRenderer->writeXml( elemRenderer, context );
424 elem.appendChild( elemRenderer );
427 if ( mLabeling && categories.testFlag(
Labeling ) )
429 QDomElement elemLabeling = doc.createElement( QStringLiteral(
"labeling" ) );
430 elemLabeling.setAttribute( QStringLiteral(
"type" ), mLabeling->type() );
431 mLabeling->writeXml( elemLabeling, context );
432 elem.appendChild( elemLabeling );
438 QDomElement blendModeElem = doc.createElement( QStringLiteral(
"blendMode" ) );
440 blendModeElem.appendChild( blendModeText );
441 node.appendChild( blendModeElem );
447 QDomElement layerOpacityElem = doc.createElement( QStringLiteral(
"layerOpacity" ) );
448 const QDomText layerOpacityText = doc.createTextNode( QString::number(
opacity() ) );
449 layerOpacityElem.appendChild( layerOpacityText );
450 node.appendChild( layerOpacityElem );
468 QStringList warnings;
475 Qgis::MapLayerProperties res;
476 if ( mSourceType == QLatin1String(
"xyz" ) )
494 QVariantMap styleDefinition;
497 if ( !dsUri.
param( QStringLiteral(
"styleUrl" ) ).isEmpty() )
499 styleUrl = dsUri.
param( QStringLiteral(
"styleUrl" ) );
501 else if ( mSourceType == QLatin1String(
"xyz" ) && dsUri.
param( QStringLiteral(
"serviceType" ) ) == QLatin1String(
"arcgis" ) )
504 styleUrl = mArcgisLayerConfiguration.value( QStringLiteral(
"serviceUri" ) ).toString()
505 +
'/' + mArcgisLayerConfiguration.value( QStringLiteral(
"defaultStyles" ) ).toString();
508 if ( mSourceType == QLatin1String(
"vtpk" ) )
511 if ( !reader.
open() )
513 QgsDebugMsg( QStringLiteral(
"failed to open VTPK file: " ) + mSourcePath );
520 if ( !spriteDefinition.isEmpty() )
523 context.
setSprites( spriteImage, spriteDefinition );
526 else if ( !styleUrl.isEmpty() )
528 QNetworkRequest request = QNetworkRequest( QUrl( styleUrl ) );
533 switch ( networkRequest.
get( request ) )
541 error = QObject::tr(
"Error retrieving default style" );
548 if ( styleDefinition.contains( QStringLiteral(
"sprite" ) ) )
551 QString spriteUriBase;
552 if ( styleDefinition.value( QStringLiteral(
"sprite" ) ).toString().startsWith( QLatin1String(
"http" ) ) )
554 spriteUriBase = styleDefinition.value( QStringLiteral(
"sprite" ) ).toString();
558 spriteUriBase = styleUrl +
'/' + styleDefinition.value( QStringLiteral(
"sprite" ) ).toString();
561 for (
int resolution = 2; resolution > 0; resolution-- )
563 QUrl spriteUrl = QUrl( spriteUriBase );
564 spriteUrl.setPath( spriteUrl.path() + QStringLiteral(
"%1.json" ).arg( resolution > 1 ? QStringLiteral(
"@%1x" ).arg( resolution ) : QString() ) );
565 QNetworkRequest request = QNetworkRequest( spriteUrl );
568 switch ( networkRequest.
get( request ) )
576 QUrl spriteUrl = QUrl( spriteUriBase );
577 spriteUrl.setPath( spriteUrl.path() + QStringLiteral(
"%1.png" ).arg( resolution > 1 ? QStringLiteral(
"@%1x" ).arg( resolution ) : QString() ) );
578 QNetworkRequest request = QNetworkRequest( spriteUrl );
581 switch ( networkRequest.
get( request ) )
586 const QImage spriteImage( QImage::fromData( imageContent.
content() ) );
587 context.
setSprites( spriteImage, spriteDefinition );
612 if ( !styleDefinition.isEmpty() )
635 bool resultFlag =
false;
645 if ( mSourceType == QLatin1String(
"xyz" ) && dsUri.
param( QStringLiteral(
"serviceType" ) ) == QLatin1String(
"arcgis" ) )
649 metadata.
setIdentifier( mArcgisLayerConfiguration.value( QStringLiteral(
"serviceUri" ) ).toString() );
650 const QString parentIdentifier = mArcgisLayerConfiguration.value( QStringLiteral(
"serviceItemId" ) ).toString();
651 if ( !parentIdentifier.isEmpty() )
656 metadata.
setTitle( mArcgisLayerConfiguration.value( QStringLiteral(
"name" ) ).toString() );
657 const QString copyright = mArcgisLayerConfiguration.value( QStringLiteral(
"copyrightText" ) ).toString();
658 if ( !copyright.isEmpty() )
667 else if ( mSourceType == QLatin1String(
"vtpk" ) )
670 if ( !reader.
open() )
672 QgsDebugMsg( QStringLiteral(
"failed to open VTPK file: " ) + mSourcePath );
700 if ( sourceUrl.isLocalFile() )
705 dsUri.
setParam( QStringLiteral(
"url" ), QUrl::fromLocalFile( relSrcUrl ).toString() );
709 else if (
sourceType == QLatin1String(
"mbtiles" ) )
732 if ( sourceUrl.isLocalFile() )
736 dsUri.
setParam( QStringLiteral(
"url" ), QUrl::fromLocalFile( absSrcUrl ).toString() );
740 else if (
sourceType == QLatin1String(
"mbtiles" ) )
755 QString info = QStringLiteral(
"<html><head></head>\n<body>\n" );
759 info += QStringLiteral(
"<h1>" ) + tr(
"Information from provider" ) + QStringLiteral(
"</h1>\n<hr>\n" ) %
760 QStringLiteral(
"<table class=\"list-view\">\n" );
762 info += QStringLiteral(
"<tr><td class=\"highlight\">" ) % tr(
"Source type" ) % QStringLiteral(
"</td><td>" ) %
sourceType() % QStringLiteral(
"</td></tr>\n" );
764 info += QStringLiteral(
"<tr><td class=\"highlight\">" ) % tr(
"Zoom levels" ) % QStringLiteral(
"</td><td>" ) % QStringLiteral(
"%1 - %2" ).arg(
sourceMinZoom() ).arg(
sourceMaxZoom() ) % QStringLiteral(
"</td></tr>\n" );
766 info += QLatin1String(
"</table>\n<br>" );
772 info += QStringLiteral(
"<h1>" ) % tr(
"Identification" ) % QStringLiteral(
"</h1>\n<hr>\n" ) %
774 QStringLiteral(
"<br>\n" ) %
777 QStringLiteral(
"<h1>" ) % tr(
"Extent" ) % QStringLiteral(
"</h1>\n<hr>\n" ) %
779 QStringLiteral(
"<br>\n" ) %
782 QStringLiteral(
"<h1>" ) % tr(
"Access" ) % QStringLiteral(
"</h1>\n<hr>\n" ) %
784 QStringLiteral(
"<br>\n" ) %
788 QStringLiteral(
"<h1>" ) % tr(
"Contacts" ) % QStringLiteral(
"</h1>\n<hr>\n" ) %
790 QStringLiteral(
"<br><br>\n" ) %
793 QStringLiteral(
"<h1>" ) % tr(
"References" ) % QStringLiteral(
"</h1>\n<hr>\n" ) %
795 QStringLiteral(
"<br>\n" ) %
798 QStringLiteral(
"<h1>" ) % tr(
"History" ) % QStringLiteral(
"</h1>\n<hr>\n" ) %
800 QStringLiteral(
"<br>\n" ) %
802 QStringLiteral(
"\n</body>\n</html>\n" );
816 headers [QStringLiteral(
"referer" ) ] = dsUri.
param( QStringLiteral(
"referer" ) );
819 if ( rawTiles.isEmpty() )
821 return rawTiles.first().data;
826 mRenderer.reset( r );
832 return mRenderer.get();
843 return mLabeling.get();
852 QgsVectorTileDataProvider::QgsVectorTileDataProvider(
853 const ProviderOptions &options,
854 QgsDataProvider::ReadFlags flags )
863 QString QgsVectorTileDataProvider::name()
const
865 return QStringLiteral(
"vectortile" );
868 QString QgsVectorTileDataProvider::description()
const
878 bool QgsVectorTileDataProvider::isValid()
const
883 bool QgsVectorTileDataProvider::renderInPreview(
const PreviewContext &context )
888 return context.lastRenderingTimeMs <= 1000;
@ IsBasemapLayer
Layer is considered a 'basemap' layer, and certain properties of the layer should be ignored when cal...
static QgsCoordinateReferenceSystem convertSpatialReference(const QVariantMap &spatialReferenceMap)
Converts a spatial reference JSON definition to a QgsCoordinateReferenceSystem value.
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.
Custom exception class for Coordinate Reference System related exceptions.
Abstract base class for spatial data provider implementations.
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 and ...
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.
QString providerType() const
Returns the provider type (provider key) for this layer.
void setBlendMode(QPainter::CompositionMode blendMode)
Set the blending mode used for rendering a layer.
QgsMapLayer::LayerFlags flags() const
Returns the flags for this layer.
QgsCoordinateReferenceSystem crs
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...
QString mLayerName
Name of the layer - used for display.
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.
QString mProviderKey
Data provider key (name of the data provider)
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.
QString generalHtmlMetadata() const
Returns an HTML fragment containing general metadata information, for use in the htmlMetadata() metho...
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.
virtual QDomElement writeXml(QDomDocument &document, const QgsReadWriteContext &context) const
Writes the set to an XML element.
QgsCoordinateReferenceSystem crs() const
Returns the coordinate reference system associated with the tiles.
int minimumZoom() const
Returns the minimum zoom level for tiles present in the set.
int maximumZoom() const
Returns the maximum zoom level for tiles present in the set.
QgsTileMatrix tileMatrix(int zoom) const
Returns the tile matrix corresponding to the specified zoom.
virtual bool readXml(const QDomElement &element, QgsReadWriteContext &context)
Reads the set from an XML element.
void dropMatricesOutsideZoomRange(int minimumZoom, int maximumZoom)
Deletes any existing matrices which fall outside the zoom range specified by minimumZoom to maximumZo...
Defines a matrix of tiles for a single zoom level: it is defined by its size (width *.
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.
QgsVectorTileLayer(const QString &path=QString(), const QString &baseName=QString(), const QgsVectorTileLayer::LayerOptions &options=QgsVectorTileLayer::LayerOptions())
Constructs a new vector tile layer.
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 document 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...
Qgis::MapLayerProperties properties() const override
Returns the map layer properties of this layer.
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...
int sourceMaxZoom() const
Returns maximum zoom level at which source has any valid tiles (negative = unconstrained)
QgsVectorTileRenderer * renderer() const
Returns currently assigned renderer.
QgsDataProvider * dataProvider() override
Returns the layer's data provider, it may be nullptr.
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 QgsHttpHeaders &headers, QgsFeedback *feedback=nullptr)
Returns raw tile data for the specified range of tiles. Blocks the caller until all tiles are fetched...
bool fromEsriJson(const QVariantMap &json)
Initializes the tile structure settings from an ESRI REST VectorTileService json map.
static QgsVectorTileMatrixSet fromWebMercator(int minimumZoom=0, int maximumZoom=14)
Returns a vector tile structure corresponding to the standard web mercator/GoogleCRS84Quad setup.
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)
Utility class for reading and writing ESRI VTPK files.
QVariantMap spriteDefinition() const
Returns the VTPK sprites definitions.
QgsLayerMetadata layerMetadata() const
Reads layer metadata from the VTPK file.
bool open()
Tries to open the file, returns true on success.
QVariantMap styleDefinition() const
Returns the VTPK style definition.
QImage spriteImage() const
Returns the VTPK sprite image, if it exists.
QgsMapLayerType
Types of layers that can be added to a map.
@ VectorTileLayer
Vector tile layer. Added in QGIS 3.14.
#define QgsDebugMsgLevel(str, level)
#define QgsSetRequestInitiatorClass(request, _class)
const QgsCoordinateReferenceSystem & crs
Setting options for creating vector data providers.
Setting options for loading vector tile layers.