3#include <QtCore/QLoggingCategory>
4#include <QtCore/QObject>
5#include <QtCore/QPointer>
6#include <QtCore/QQueue>
7#include <QtCore/QVariant>
8#include <QtPositioning/QGeoCoordinate>
46 void _sendNextBatch();
47 void _coordinateHeights(
bool success,
const QList<double> &heights);
50 struct QueuedRequestInfo_t {
51 QPointer<TerrainAtCoordinateQuery> terrainAtCoordinateQuery;
52 QList<QGeoCoordinate> coordinates;
55 struct SentRequestInfo_t {
56 QPointer<TerrainAtCoordinateQuery> terrainAtCoordinateQuery;
63 QQueue<QueuedRequestInfo_t> _requestQueue;
64 QList<SentRequestInfo_t> _sentRequests;
66 QTimer *_batchTimer =
nullptr;
68 static constexpr int _batchTimeout = 500;
86 void requestData(
const QList<QGeoCoordinate> &coordinates);
99 bool _autoDelete =
false;
116 void requestData(
const QGeoCoordinate &fromCoord,
const QGeoCoordinate &toCoord);
129 void _pathHeights(
bool success,
double distanceBetween,
double finalDistanceBetween,
const QList<double> &heights);
132 bool _autoDelete =
false;
153 void requestData(
const QGeoCoordinate &swCoord,
const QGeoCoordinate &neCoord);
165 void _carpetHeights(
bool success,
double minHeight,
double maxHeight,
const QList<QList<double>> &carpet);
168 bool _autoDelete =
false;
187 void requestData(
const QVariantList &polyPath);
188 void requestData(
const QList<QGeoCoordinate> &polyPath);
192 void terrainDataReceived(
bool success,
const QList<TerrainPathQuery::PathHeightInfo_t> &rgPathHeightInfo);
198 bool _autoDelete =
false;
200 QList<QGeoCoordinate> _rgCoords;
201 QList<TerrainPathQuery::PathHeightInfo_t> _rgPathHeightInfo;
Q_DECLARE_LOGGING_CATEGORY(AndroidSerialLog)
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
double distanceBetween
Distance between each height value.
double finalDistanceBetween
Distance between final two height values.
QList< double > heights
Terrain heights along path.