diff --git a/src/core/labeling/qgsvectorlayerlabelprovider.h b/src/core/labeling/qgsvectorlayerlabelprovider.h index 1af6d47b38c..d899af01c34 100644 --- a/src/core/labeling/qgsvectorlayerlabelprovider.h +++ b/src/core/labeling/qgsvectorlayerlabelprovider.h @@ -107,6 +107,12 @@ class CORE_EXPORT QgsVectorLayerLabelProvider : public QgsAbstractLabelProvider */ const QgsPalLayerSettings &settings() const; + /** + * Sets fields of this label provider. Normally this is not needed, but when used for vector tiles, + * fields are not known at the time of creation of label providers. It should be called before + * a call to prepare() which uses the list of fields. + * \since QGIS 3.14 + */ void setFields( const QgsFields &fields ) { mFields = fields; } protected: diff --git a/src/core/vectortile/qgsvectortilebasiclabeling.h b/src/core/vectortile/qgsvectortilebasiclabeling.h index 82ae1d683c9..e8e06cae9d9 100644 --- a/src/core/vectortile/qgsvectortilebasiclabeling.h +++ b/src/core/vectortile/qgsvectortilebasiclabeling.h @@ -137,7 +137,9 @@ class CORE_EXPORT QgsVectorTileBasicLabeling : public QgsVectorTileLabeling class QgsVectorTileBasicLabelProvider : public QgsVectorTileLabelProvider { public: + //! Constructs a label provider for the given vector tile layer and using styling from QgsVectorTileBasicLabeling QgsVectorTileBasicLabelProvider( QgsVectorTileLayer *layer, const QList &styles ); + QList subProviders() override; bool prepare( QgsRenderContext &context, QSet &attributeNames ) override; void registerTileFeatures( const QgsVectorTileRendererData &tile, QgsRenderContext &context ) override; @@ -155,6 +157,7 @@ class QgsVectorTileBasicLabelProvider : public QgsVectorTileLabelProvider QMap > mRequiredFields; }; +/// @endcond #endif diff --git a/src/core/vectortile/qgsvectortilelabeling.h b/src/core/vectortile/qgsvectortilelabeling.h index 46a50166d82..8c5ba993a50 100644 --- a/src/core/vectortile/qgsvectortilelabeling.h +++ b/src/core/vectortile/qgsvectortilelabeling.h @@ -33,6 +33,7 @@ class QgsVectorTileRendererData; class QgsVectorTileLabelProvider : public QgsVectorLayerLabelProvider { public: + //! Constructs base label provider class for the given vector tile layer explicit QgsVectorTileLabelProvider( QgsVectorTileLayer *layer ); //! Returns field names for each sub-layer that are required for labeling