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/QLoggingCategory>
4#include <QtCore/QObject>
5#include <QtGui/QImage>
6#include <QtPositioning/QGeoCoordinate>
7
8#include "Viewer3DTileReply.h"
9
10Q_DECLARE_LOGGING_CATEGORY(Viewer3DTileQueryLog)
11
12class Viewer3DTileQuery : public QObject
13{
14 Q_OBJECT
15
16 friend class Viewer3DTileQueryTest;
17
18public:
20 QGeoCoordinate coordinateMin;
21 QGeoCoordinate coordinateMax;
23 int zoomLevel = 0;
24 };
25
26 explicit Viewer3DTileQuery(QObject *parent = nullptr);
27
28 void adaptiveMapTilesLoader(const QString &mapType, int mapId, const QGeoCoordinate &coordinateMin, const QGeoCoordinate &coordinateMax);
29 int maxTileCount(int zoomLevel, const QGeoCoordinate &coordinateMin, const QGeoCoordinate &coordinateMax);
30 QByteArray mapData() const { return _mapToBeLoaded.mapData(); }
31 QSize mapSize() const { return QSize(_mapToBeLoaded.mapWidth, _mapToBeLoaded.mapHeight); }
32
33signals:
35 void mapTileDownloaded(float progress);
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(Viewer3DTileReply::TileInfo_t tileData);
42 void _tileGiveUp(Viewer3DTileReply::TileInfo_t tileData);
43 void _tileEmpty(Viewer3DTileReply::TileInfo_t 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 _downloadedTilesCount = 0;
76 int _mapId = 0;
77 int _zoomLevel = 0;
78};
79
Q_DECLARE_LOGGING_CATEGORY(AndroidSerialLog)
void textureGeometryReady(TileStatistics_t tileInfo)
void mapTileDownloaded(float progress)
QByteArray mapData() const
QSize mapSize() const
void loadingMapCompleted()
Q_DECLARE_METATYPE(satellite_info_s)