diff --git a/src/QtLocationPlugin/QGeoMapReplyQGC.cpp b/src/QtLocationPlugin/QGeoMapReplyQGC.cpp index b07ad39..44ed968 100644 --- a/src/QtLocationPlugin/QGeoMapReplyQGC.cpp +++ b/src/QtLocationPlugin/QGeoMapReplyQGC.cpp @@ -52,9 +52,6 @@ #include #include #include "TerrainTile.h" -#include -#include -#include int QGeoTiledMapReplyQGC::_requestCount = 0; @@ -129,18 +126,13 @@ QGeoTiledMapReplyQGC::networkReplyFinished() // convert "a" to binary in case we have elevation data if ((UrlFactory::MapType)tileSpec().mapId() == UrlFactory::MapType::AirmapElevation) { - QJsonParseError parseError; - QJsonDocument json = QJsonDocument::fromJson(a, &parseError); - if (parseError.error != QJsonParseError::NoError) { + + a = TerrainTile::serialize(a); + if (a.isEmpty()) { emit aborted(); return; - } else { - a = TerrainTile::serialize(json); - if (a.isEmpty()) { - emit aborted(); - return; - } } + } setMapImageData(a); if(!format.isEmpty()) { diff --git a/src/TerrainTile.cc b/src/TerrainTile.cc index e1f772f..2a065e6 100644 --- a/src/TerrainTile.cc +++ b/src/TerrainTile.cc @@ -111,11 +111,17 @@ QGeoCoordinate TerrainTile::centerCoordinate(void) const return _southWest.atDistanceAndAzimuth(_southWest.distanceTo(_northEast) / 2.0, _southWest.azimuthTo(_northEast)); } -QByteArray TerrainTile::serialize(QJsonDocument document) +QByteArray TerrainTile::serialize(QByteArray input) { + QJsonParseError parseError; + QJsonDocument document = QJsonDocument::fromJson(input, &parseError); + if (parseError.error != QJsonParseError::NoError) { + QByteArray emptyArray; + return emptyArray; + } + QByteArray byteArray; - QIODevice::OpenMode writeonly = QIODevice::WriteOnly; - QDataStream stream(&byteArray, writeonly); + QDataStream stream(&byteArray, QIODevice::WriteOnly); if (!document.isObject()) { qCDebug(TerrainTileLog) << "Terrain tile json doc is no object"; QByteArray emptyArray; diff --git a/src/TerrainTile.h b/src/TerrainTile.h index 84de079..faee055 100644 --- a/src/TerrainTile.h +++ b/src/TerrainTile.h @@ -89,7 +89,7 @@ public: * * @return serialized data */ - static QByteArray serialize(QJsonDocument document); + static QByteArray serialize(QByteArray input); private: inline int _latToDataIndex(double latitude) const; @@ -98,11 +98,11 @@ private: QGeoCoordinate _southWest; /// South west corner of the tile QGeoCoordinate _northEast; /// North east corner of the tile - int _minElevation; /// Minimum elevation in tile - int _maxElevation; /// Maximum elevation in tile - double _avgElevation; /// Average elevation of the tile + int _minElevation; /// Minimum elevation in tile + int _maxElevation; /// Maximum elevation in tile + double _avgElevation; /// Average elevation of the tile - double** _data; /// 2D elevation data array + double** _data; /// 2D elevation data array int _gridSizeLat; /// data grid size in latitude direction int _gridSizeLon; /// data grid size in longitude direction bool _isValid; /// data loaded is valid