QGIS API Documentation 3.99.0-Master (7d2ca374f2d)
Loading...
Searching...
No Matches
qgsvectortileloader.h
Go to the documentation of this file.
1/***************************************************************************
2 qgsvectortileloader.h
3 --------------------------------------
4 Date : March 2020
5 Copyright : (C) 2020 by Martin Dobias
6 Email : wonder dot sk at gmail dot com
7 ***************************************************************************
8 * *
9 * This program is free software; you can redistribute it and/or modify *
10 * it under the terms of the GNU General Public License as published by *
11 * the Free Software Foundation; either version 2 of the License, or *
12 * (at your option) any later version. *
13 * *
14 ***************************************************************************/
15
16#ifndef QGSVECTORTILELOADER_H
17#define QGSVECTORTILELOADER_H
18
19
20#include "qgstiles.h"
21
22#define SIP_NO_FILE
23
24class QgsFeedback;
27
28class QByteArray;
29class QNetworkReply;
30class QEventLoop;
31
32
39class CORE_EXPORT QgsVectorTileRawData
40{
41 public:
43 QgsVectorTileRawData( QgsTileXYZ tileID = QgsTileXYZ(), const QByteArray &data = QByteArray() )
44 : id( tileID ), tileGeometryId( tileID ), data( { { QString(), data } } ) {}
45
47 QgsVectorTileRawData( QgsTileXYZ tileID, const QMap<QString, QByteArray> &data )
48 : id( tileID ), tileGeometryId( tileID ), data( data ) {}
49
52
62
64 QMap<QString, QByteArray> data;
65};
66
67
74class CORE_EXPORT QgsVectorTileLoader : public QObject
75{
76 Q_OBJECT
77 public:
78
80 static QList<QgsVectorTileRawData> blockingFetchTileRawData(
81 const QgsVectorTileDataProvider *provider,
82 const QgsTileMatrixSet &tileMatrixSet,
83 const QPointF &viewCenter,
84 const QgsTileRange &range,
85 int zoomLevel,
86 QgsFeedback *feedback = nullptr,
88
89 //
90 // non-static stuff
91 //
92
94 QgsVectorTileLoader( const QgsVectorTileDataProvider *provider, const QgsTileMatrixSet &tileMatrixSet, const QgsTileRange &range, int zoomLevel, const QPointF &viewCenter,
95 QgsFeedback *feedback, Qgis::RendererUsage usage );
96 ~QgsVectorTileLoader() override;
97
99 void downloadBlocking();
100
102 QString error() const;
103
104 private:
105 void loadFromNetworkAsync( const QgsTileXYZ &id, const QgsTileMatrixSet &tileMatrixSet, const QgsVectorTileDataProvider *provider, Qgis::RendererUsage usage );
106
107 private slots:
108 void tileReplyFinished();
109 void canceled();
110
111 signals:
114
115 private:
117 std::unique_ptr<QEventLoop> mEventLoop;
119 QgsFeedback *mFeedback;
120
122 QHash<QgsTileXYZ, QList<QgsTileDownloadManagerReply *>> mReplies;
123
125 QHash<QgsTileXYZ, QMap<QString, QByteArray>> mPendingRawData;
126
127 QString mError;
128};
129
130#endif // QGSVECTORTILELOADER_H
RendererUsage
Usage of the renderer.
Definition qgis.h:3531
@ Unknown
Renderer used for unknown usage.
Definition qgis.h:3534
Base class for feedback objects to be used for cancellation of something running in a worker thread.
Definition qgsfeedback.h:44
Reply object for tile download manager requests returned from calls to QgsTileDownloadManager::get().
Defines a set of tile matrices for multiple zoom levels.
Definition qgstiles.h:278
A range of tiles in a tile matrix.
Definition qgstiles.h:118
Stores coordinates of a tile in a tile matrix set.
Definition qgstiles.h:43
Base class for vector tile layer data providers.
void tileRequestFinished(const QgsVectorTileRawData &rawTile)
Emitted when a tile request has finished. If a tile request has failed, the returned raw tile byte ar...
QString error() const
Returns a eventual error that occurred during loading, void if no error.
void downloadBlocking()
Blocks the caller until all asynchronous requests are finished (with a success or a failure).
static QList< QgsVectorTileRawData > blockingFetchTileRawData(const QgsVectorTileDataProvider *provider, const QgsTileMatrixSet &tileMatrixSet, const QPointF &viewCenter, const QgsTileRange &range, int zoomLevel, QgsFeedback *feedback=nullptr, Qgis::RendererUsage usage=Qgis::RendererUsage::Unknown)
Returns raw tile data for the specified range of tiles. Blocks the caller until all tiles are fetched...
QgsVectorTileLoader(const QgsVectorTileDataProvider *provider, const QgsTileMatrixSet &tileMatrixSet, const QgsTileRange &range, int zoomLevel, const QPointF &viewCenter, QgsFeedback *feedback, Qgis::RendererUsage usage)
Constructs tile loader for doing asynchronous requests and starts network requests.
Keeps track of raw tile data from one or more sources that need to be decoded.
QMap< QString, QByteArray > data
Raw tile data by source ID.
QgsVectorTileRawData(QgsTileXYZ tileID=QgsTileXYZ(), const QByteArray &data=QByteArray())
Constructs a raw tile object for single source.
QgsTileXYZ id
Tile position in tile matrix set.
QgsTileXYZ tileGeometryId
Tile id associated with the raw tile data.
QgsVectorTileRawData(QgsTileXYZ tileID, const QMap< QString, QByteArray > &data)
Constructs a raw tile object for one or more sources.