Add a minimal data provider for vector tile layers

Fixes #45153
This commit is contained in:
Nyall Dawson 2021-09-21 09:47:14 +10:00
parent c779f15d29
commit cfaf56cb4b
3 changed files with 79 additions and 11 deletions

View File

@ -86,22 +86,18 @@ Constructs a new vector tile layer
virtual QgsVectorTileLayer *clone() const /Factory/;
virtual QgsDataProvider *dataProvider();
virtual QgsMapLayerRenderer *createMapRenderer( QgsRenderContext &rendererContext ) /Factory/;
virtual bool readXml( const QDomNode &layerNode, QgsReadWriteContext &context );
virtual bool writeXml( QDomNode &layerNode, QDomDocument &doc, const QgsReadWriteContext &context ) const;
virtual bool readSymbology( const QDomNode &node, QString &errorMessage,
QgsReadWriteContext &context, StyleCategories categories = AllStyleCategories );
virtual bool writeSymbology( QDomNode &node, QDomDocument &doc, QString &errorMessage, const QgsReadWriteContext &context,
StyleCategories categories = AllStyleCategories ) const;
virtual void setTransformContext( const QgsCoordinateTransformContext &transformContext );
virtual QString loadDefaultStyle( bool &resultFlag /Out/ );
@ -176,6 +172,7 @@ Returns whether to render also borders of tiles (useful for debugging)
};
/************************************************************************
* This file has been generated automatically from *
* *

View File

@ -197,6 +197,16 @@ QgsVectorTileLayer *QgsVectorTileLayer::clone() const
return layer;
}
QgsDataProvider *QgsVectorTileLayer::dataProvider()
{
return mDataProvider.get();
}
const QgsDataProvider *QgsVectorTileLayer::dataProvider() const
{
return mDataProvider.get();
}
QgsMapLayerRenderer *QgsVectorTileLayer::createMapRenderer( QgsRenderContext &rendererContext )
{
return new QgsVectorTileLayerRenderer( this, rendererContext );
@ -694,3 +704,41 @@ QgsVectorTileLabeling *QgsVectorTileLayer::labeling() const
{
return mLabeling.get();
}
//
// QgsAnnotationLayerDataProvider
//
///@cond PRIVATE
QgsVectorTileDataProvider::QgsVectorTileDataProvider(
const ProviderOptions &options,
QgsDataProvider::ReadFlags flags )
: QgsDataProvider( QString(), options, flags )
{}
QgsCoordinateReferenceSystem QgsVectorTileDataProvider::crs() const
{
return QgsCoordinateReferenceSystem();
}
QString QgsVectorTileDataProvider::name() const
{
return QStringLiteral( "vectortile" );
}
QString QgsVectorTileDataProvider::description() const
{
return QString();
}
QgsRectangle QgsVectorTileDataProvider::extent() const
{
return QgsRectangle();
}
bool QgsVectorTileDataProvider::isValid() const
{
return true;
}
///@endcond

View File

@ -100,19 +100,15 @@ class CORE_EXPORT QgsVectorTileLayer : public QgsMapLayer
// implementation of virtual functions from QgsMapLayer
QgsVectorTileLayer *clone() const override SIP_FACTORY;
QgsDataProvider *dataProvider() override;
const QgsDataProvider *dataProvider() const override SIP_SKIP;
QgsMapLayerRenderer *createMapRenderer( QgsRenderContext &rendererContext ) override SIP_FACTORY;
bool readXml( const QDomNode &layerNode, QgsReadWriteContext &context ) override;
bool writeXml( QDomNode &layerNode, QDomDocument &doc, const QgsReadWriteContext &context ) const override;
bool readSymbology( const QDomNode &node, QString &errorMessage,
QgsReadWriteContext &context, StyleCategories categories = AllStyleCategories ) override;
bool writeSymbology( QDomNode &node, QDomDocument &doc, QString &errorMessage, const QgsReadWriteContext &context,
StyleCategories categories = AllStyleCategories ) const override;
void setTransformContext( const QgsCoordinateTransformContext &transformContext ) override;
QString loadDefaultStyle( bool &resultFlag SIP_OUT ) override;
@ -199,8 +195,35 @@ class CORE_EXPORT QgsVectorTileLayer : public QgsMapLayer
QVariantMap mArcgisLayerConfiguration;
std::unique_ptr< QgsDataProvider > mDataProvider;
bool setupArcgisVectorTileServiceConnection( const QString &uri, const QgsDataSourceUri &dataSourceUri );
};
#ifndef SIP_RUN
///@cond PRIVATE
/**
* A minimal data provider for vector tile layers.
*
* \since QGIS 3.22
*/
class QgsVectorTileDataProvider : public QgsDataProvider
{
Q_OBJECT
public:
QgsVectorTileDataProvider( const QgsDataProvider::ProviderOptions &providerOptions,
QgsDataProvider::ReadFlags flags );
QgsCoordinateReferenceSystem crs() const override;
QString name() const override;
QString description() const override;
QgsRectangle extent() const override;
bool isValid() const override;
};
///@endcond
#endif
#endif // QGSVECTORTILELAYER_H