QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
Viewer3DTileQuery.h
Go to the documentation of this file.
1#pragma once
2
3#include <QtCore/QByteArray>
4#include <QtCore/QObject>
5#include <QtCore/QPoint>
6#include <QtCore/QSize>
7#include <QtCore/QString>
8#include <QtCore/QStringList>
9#include <QtGui/QImage>
10#include <QtPositioning/QGeoCoordinate>
11
12#include "Viewer3DTileInfo.h"
14
16class QNetworkAccessManager;
17
18class Viewer3DTileQuery : public QObject
19{
20 Q_OBJECT
21
23
24public:
26
27 explicit Viewer3DTileQuery(QObject *parent = nullptr);
28
29 void adaptiveMapTilesLoader(const QString &mapType, int mapId, const QGeoCoordinate &coordinateMin, const QGeoCoordinate &coordinateMax);
30 int maxTileCount(int zoomLevel, const QGeoCoordinate &coordinateMin, const QGeoCoordinate &coordinateMax);
31 QByteArray mapData() const { return _mapToBeLoaded.mapData(); }
32 QSize mapSize() const { return QSize(_mapToBeLoaded.mapWidth, _mapToBeLoaded.mapHeight); }
33
34signals:
36 void mapTileDownloaded(float progress);
38
39private:
40 void _loadMapTiles(int zoomLevel, QPoint tileMinIndex, QPoint tileMaxIndex);
41 TileStatistics_t _findAndLoadMapTiles(int zoomLevel, const QGeoCoordinate &coordinateMin, const QGeoCoordinate &coordinateMax);
42 void _tileDone(Viewer3DTileInfo tileData);
43 void _tileGiveUp(Viewer3DTileInfo tileData);
44 void _tileEmpty(Viewer3DTileInfo tileData);
45 void _cleanupReply(Viewer3DTileReply *reply);
46 static QString _tileKey(int mapId, int x, int y, int zoomLevel);
47
48 struct MapTileContainer_t
49 {
50 static constexpr int tileSize = 256;
51
52 QStringList tileList;
53 QPoint tileMinIndex;
54 QPoint tileMaxIndex;
55 QPoint currentTileIndex;
56 QByteArray currentTileData;
57 QImage mapTextureImage;
58
59 int zoomLevel = 0;
60 int mapWidth = 0;
61 int mapHeight = 0;
62
63 void init();
64 void setMapTile();
65 QByteArray mapData() const;
66 void clear();
67 };
68
69 QNetworkAccessManager *_networkManager = nullptr;
70 MapTileContainer_t _mapToBeLoaded;
71 QGeoCoordinate _textureCoordinateMin;
72 QGeoCoordinate _textureCoordinateMax;
73 QString _mapType;
74
75 int _totalTilesCount = 0;
76 int _downloadedTilesCount = 0;
77 int _mapId = 0;
78 int _zoomLevel = 0;
79};
void textureGeometryReady(TileStatistics_t tileInfo)
void mapTileDownloaded(float progress)
void adaptiveMapTilesLoader(const QString &mapType, int mapId, const QGeoCoordinate &coordinateMin, const QGeoCoordinate &coordinateMax)
QByteArray mapData() const
friend class Viewer3DTileQueryTest
QSize mapSize() const
int maxTileCount(int zoomLevel, const QGeoCoordinate &coordinateMin, const QGeoCoordinate &coordinateMax)
void loadingMapCompleted()