QGIS API Documentation 4.1.0-Master (60fea48833c)
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 )
45 , tileGeometryId( tileID )
46 , data( { { QString(), data } } )
47 {}
48
50 QgsVectorTileRawData( QgsTileXYZ tileID, const QMap<QString, QByteArray> &data )
51 : id( tileID )
52 , tileGeometryId( tileID )
53 , data( data )
54 {}
55
58
68
70 QMap<QString, QByteArray> data;
71};
72
73
80class CORE_EXPORT QgsVectorTileLoader : public QObject
81{
82 Q_OBJECT
83 public:
85 static QList<QgsVectorTileRawData> blockingFetchTileRawData(
86 const QgsVectorTileDataProvider *provider,
87 const QgsTileMatrixSet &tileMatrixSet,
88 const QPointF &viewCenter,
89 const QgsTileRange &range,
90 int zoomLevel,
91 QgsFeedback *feedback = nullptr,
93 );
94
95 //
96 // non-static stuff
97 //
98
101 const QgsVectorTileDataProvider *provider, const QgsTileMatrixSet &tileMatrixSet, const QgsTileRange &range, int zoomLevel, const QPointF &viewCenter, QgsFeedback *feedback, Qgis::RendererUsage usage
102 );
103 ~QgsVectorTileLoader() override;
104
106 void downloadBlocking();
107
109 QString error() const;
110
111 private:
112 void loadFromNetworkAsync( const QgsTileXYZ &id, const QgsTileMatrixSet &tileMatrixSet, const QgsVectorTileDataProvider *provider, Qgis::RendererUsage usage );
113
114 private slots:
115 void tileReplyFinished();
116 void canceled();
117
118 signals:
121
122 private:
124 std::unique_ptr<QEventLoop> mEventLoop;
126 QgsFeedback *mFeedback;
127
129 QHash<QgsTileXYZ, QList<QgsTileDownloadManagerReply *>> mReplies;
130
132 QHash<QgsTileXYZ, QMap<QString, QByteArray>> mPendingRawData;
133
134 QString mError;
135};
136
137#endif // QGSVECTORTILELOADER_H
RendererUsage
Usage of the renderer.
Definition qgis.h:3559
@ Unknown
Renderer used for unknown usage.
Definition qgis.h:3562
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:284
A range of tiles in a tile matrix.
Definition qgstiles.h:123
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.