QGIS API Documentation  3.14.0-Pi (9f7028fd23)
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 #define SIP_NO_FILE
20 
21 class QByteArray;
22 
23 #include "qgsvectortilerenderer.h"
24 
32 {
33  public:
35  QgsVectorTileRawData( QgsTileXYZ tileID = QgsTileXYZ(), const QByteArray &raw = QByteArray() )
36  : id( tileID ), data( raw ) {}
37 
41  QByteArray data;
42 };
43 
44 
45 class QNetworkReply;
46 class QEventLoop;
47 
48 class QgsMbTiles;
49 
56 class QgsVectorTileLoader : public QObject
57 {
58  Q_OBJECT
59  public:
60 
62  static QList<QgsVectorTileRawData> blockingFetchTileRawData( const QString &sourceType, const QString &sourcePath, const QgsTileMatrix &tileMatrix, const QPointF &viewCenter, const QgsTileRange &range );
63 
65  static QByteArray loadFromNetwork( const QgsTileXYZ &id, const QgsTileMatrix &tileMatrix, const QString &requestUrl );
67  static QByteArray loadFromMBTiles( const QgsTileXYZ &id, QgsMbTiles &mbTileReader );
68 
69  //
70  // non-static stuff
71  //
72 
74  QgsVectorTileLoader( const QString &uri, const QgsTileMatrix &tileMatrix, const QgsTileRange &range, const QPointF &viewCenter, QgsFeedback *feedback );
76 
78  void downloadBlocking();
79 
80  private:
81  void loadFromNetworkAsync( const QgsTileXYZ &id, const QgsTileMatrix &tileMatrix, const QString &requestUrl );
82 
83  private slots:
84  void tileReplyFinished();
85  void canceled();
86 
87  signals:
89  void tileRequestFinished( const QgsVectorTileRawData &rawTile );
90 
91  private:
93  std::unique_ptr<QEventLoop> mEventLoop;
95  QgsFeedback *mFeedback;
97  QList<QNetworkReply *> mReplies;
98 
99 };
100 
101 #endif // QGSVECTORTILELOADER_H
qgsvectortilerenderer.h
QgsVectorTileLoader::~QgsVectorTileLoader
~QgsVectorTileLoader()
Definition: qgsvectortileloader.cpp:49
QgsTileXYZ
Definition: qgstiles.h:32
QgsTileRange
Definition: qgstiles.h:65
QgsVectorTileLoader::downloadBlocking
void downloadBlocking()
Blocks the caller until all asynchronous requests are finished (with a success or a failure)
Definition: qgsvectortileloader.cpp:61
QgsTileMatrix
Definition: qgstiles.h:102
QgsMbTiles
Definition: qgsmbtiles.h:38
QgsVectorTileLoader::tileRequestFinished
void tileRequestFinished(const QgsVectorTileRawData &rawTile)
Emitted when a tile request has finished. If a tile request has failed, the returned raw tile byte ar...
QgsVectorTileLoader::loadFromNetwork
static QByteArray loadFromNetwork(const QgsTileXYZ &id, const QgsTileMatrix &tileMatrix, const QString &requestUrl)
Returns raw tile data for a single tile, doing a HTTP request. Block the caller until tile data are d...
Definition: qgsvectortileloader.cpp:171
QgsFeedback
Definition: qgsfeedback.h:43
QgsVectorTileRawData::QgsVectorTileRawData
QgsVectorTileRawData(QgsTileXYZ tileID=QgsTileXYZ(), const QByteArray &raw=QByteArray())
Constructs a raw tile object.
Definition: qgsvectortileloader.h:35
QgsVectorTileLoader::blockingFetchTileRawData
static QList< QgsVectorTileRawData > blockingFetchTileRawData(const QString &sourceType, const QString &sourcePath, const QgsTileMatrix &tileMatrix, const QPointF &viewCenter, const QgsTileRange &range)
Returns raw tile data for the specified range of tiles. Blocks the caller until all tiles are fetched...
Definition: qgsvectortileloader.cpp:146
QgsVectorTileLoader
Definition: qgsvectortileloader.h:56
QgsVectorTileLoader::loadFromMBTiles
static QByteArray loadFromMBTiles(const QgsTileXYZ &id, QgsMbTiles &mbTileReader)
Returns raw tile data for a single tile loaded from MBTiles file.
Definition: qgsvectortileloader.cpp:190
QgsVectorTileRawData
Definition: qgsvectortileloader.h:31
QgsVectorTileRawData::id
QgsTileXYZ id
Tile position in tile matrix set.
Definition: qgsvectortileloader.h:39
QgsVectorTileLoader::QgsVectorTileLoader
QgsVectorTileLoader(const QString &uri, const QgsTileMatrix &tileMatrix, const QgsTileRange &range, const QPointF &viewCenter, QgsFeedback *feedback)
Constructs tile loader for doing asynchronous requests and starts network requests.
Definition: qgsvectortileloader.cpp:26
QgsVectorTileRawData::data
QByteArray data
Raw tile data.
Definition: qgsvectortileloader.h:41