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:
37
38private:
39 void _loadMapTiles(int zoomLevel, QPoint tileMinIndex, QPoint tileMaxIndex);
40 TileStatistics_t _findAndLoadMapTiles(int zoomLevel, const QGeoCoordinate &coordinateMin, const QGeoCoordinate &coordinateMax);
41 void _tileDone(Viewer3DTileInfo tileData);
42 void _tileGiveUp(Viewer3DTileInfo tileData);
43 void _tileEmpty(Viewer3DTileInfo tileData);
44 void _cleanupReply(Viewer3DTileReply *reply);
45 static QString _tileKey(int mapId, int x, int y, int zoomLevel);
46
47 struct MapTileContainer_t
48 {
49 static constexpr int tileSize = 256;
50
51 QStringList tileList;
52 QPoint tileMinIndex;
53 QPoint tileMaxIndex;
54 QPoint currentTileIndex;
55 QByteArray currentTileData;
56 QImage mapTextureImage;
57
58 int zoomLevel = 0;
59 int mapWidth = 0;
60 int mapHeight = 0;
61
62 void init();
63 void setMapTile();
64 QByteArray mapData() const;
65 void clear();
66 };
67
68 QNetworkAccessManager *_networkManager = nullptr;
69 MapTileContainer_t _mapToBeLoaded;
70 QGeoCoordinate _textureCoordinateMin;
71 QGeoCoordinate _textureCoordinateMax;
72 QString _mapType;
73
74 int _totalTilesCount = 0;
75 int _mapId = 0;
76 int _zoomLevel = 0;
77};
void textureGeometryReady(TileStatistics_t tileInfo)
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()