3#include <QtCore/QObject>
4#include <QtCore/QPointer>
5#include <QtCore/QQueue>
6#include <QtCore/QVariant>
7#include <QtPositioning/QGeoCoordinate>
43 void _sendNextBatch();
44 void _coordinateHeights(
bool success,
const QList<double> &heights);
47 struct QueuedRequestInfo_t {
48 QPointer<TerrainAtCoordinateQuery> terrainAtCoordinateQuery;
49 QList<QGeoCoordinate> coordinates;
52 struct SentRequestInfo_t {
53 QPointer<TerrainAtCoordinateQuery> terrainAtCoordinateQuery;
60 QQueue<QueuedRequestInfo_t> _requestQueue;
61 QList<SentRequestInfo_t> _sentRequests;
63 QTimer *_batchTimer =
nullptr;
65 static constexpr int _batchTimeout = 500;
84 void requestData(
const QList<QGeoCoordinate> &coordinates);
97 bool _autoDelete =
false;
114 void requestData(
const QGeoCoordinate &fromCoord,
const QGeoCoordinate &toCoord);
123 void _pathHeights(
bool success,
double distanceBetween,
double finalDistanceBetween,
const QList<double> &heights);
126 bool _autoDelete =
false;
145 void requestData(
const QGeoCoordinate &swCoord,
const QGeoCoordinate &neCoord);
157 void _carpetHeights(
bool success,
double minHeight,
double maxHeight,
const QList<QList<double>> &carpet);
160 bool _autoDelete =
false;
179 void requestData(
const QVariantList &polyPath);
180 void requestData(
const QList<QGeoCoordinate> &polyPath);
184 void terrainDataReceived(
bool success,
const QList<TerrainPathQuery::PathHeightInfo_t> &rgPathHeightInfo);
190 bool _autoDelete =
false;
192 QList<QGeoCoordinate> _rgCoords;
193 QList<TerrainPathQuery::PathHeightInfo_t> _rgPathHeightInfo;
void requestData(const QGeoCoordinate &swCoord, const QGeoCoordinate &neCoord)
void terrainDataReceived(bool success, const TerrainAreaQuery::CarpetHeightInfo_t &carpetHeightInfo)
void addQuery(TerrainAtCoordinateQuery *terrainAtCoordinateQuery, const QList< QGeoCoordinate > &coordinates)
~TerrainAtCoordinateBatchManager()
static TerrainAtCoordinateBatchManager * instance()
void setTerrainQueryInterface(TerrainQueryInterface *terrainQuery)
Set custom terrain query interface (for testing). Takes ownership.
NOTE: TerrainAtCoordinateQuery is not thread safe. All instances/calls to ElevationProvider must be o...
void terrainDataReceived(bool success, const QList< double > &heights)
void requestData(const QList< QGeoCoordinate > &coordinates)
void signalTerrainData(bool success, const QList< double > &heights)
static bool getAltitudesForCoordinates(const QList< QGeoCoordinate > &coordinates, QList< double > &altitudes, bool &error)
~TerrainAtCoordinateQuery()
void terrainDataReceived(bool success, const TerrainPathQuery::PathHeightInfo_t &pathHeightInfo)
Signalled when terrain data comes back from server.
void requestData(const QGeoCoordinate &fromCoord, const QGeoCoordinate &toCoord)
void terrainDataReceived(bool success, const QList< TerrainPathQuery::PathHeightInfo_t > &rgPathHeightInfo)
Signalled when terrain data comes back from server.
Base class for offline/online terrain queries.
Q_DECLARE_METATYPE(satellite_info_s)
QList< QList< double > > carpet