22 connect(_flightMapSettings->mapType(), &
Fact::rawValueChanged,
this, &Viewer3DTerrainTexture::_onMapTypeChanged);
27 _setTextureLoaded(
false);
33 if (_mapProvider && _mapProvider->
mapLoaded()) {
35 }
else if (_fallbackCenter.isValid()) {
38 std::tie(bbMin, bbMax) = _fallbackBoundingBox(_fallbackCenter);
40 qCDebug(Viewer3DTerrainTextureLog) <<
"loadTexture: no map loaded and no fallback center";
44 if (!_terrainTileLoader) {
54std::pair<QGeoCoordinate, QGeoCoordinate> Viewer3DTerrainTexture::_fallbackBoundingBox(
const QGeoCoordinate ¢er)
56 constexpr double fallbackRadiusMeters = 500.0;
57 const QGeoCoordinate south = center.atDistanceAndAzimuth(fallbackRadiusMeters, 180);
58 const QGeoCoordinate west = center.atDistanceAndAzimuth(fallbackRadiusMeters, 270);
59 const QGeoCoordinate north = center.atDistanceAndAzimuth(fallbackRadiusMeters, 0);
60 const QGeoCoordinate east = center.atDistanceAndAzimuth(fallbackRadiusMeters, 90);
61 return {QGeoCoordinate(south.latitude(), west.longitude(), 0),
62 QGeoCoordinate(north.latitude(), east.longitude(), 0)};
67 if (_fallbackCenter == newFallbackCenter) {
70 _fallbackCenter = newFallbackCenter;
74 if (!_mapProvider || !_mapProvider->
mapLoaded()) {
75 if (!_fallbackCenter.isValid() && _terrainTileLoader) {
80 disconnect(_terrainTileLoader,
nullptr,
this,
nullptr);
81 _terrainTileLoader->deleteLater();
82 _terrainTileLoader =
nullptr;
83 _setTextureLoaded(
false);
91void Viewer3DTerrainTexture::_updateTexture()
93 if (!_terrainTileLoader) {
97 qCDebug(Viewer3DTerrainTextureLog) <<
"Texture loaded:" << _terrainTileLoader->
mapSize();
98 setSize(_terrainTileLoader->
mapSize());
99 setFormat(QQuick3DTextureData::RGBA32F);
100 setHasTransparency(
false);
102 setTextureData(_terrainTileLoader->
mapData());
103 _setTextureLoaded(
true);
107 _terrainTileLoader->deleteLater();
108 _terrainTileLoader =
nullptr;
111void Viewer3DTerrainTexture::_onMapTypeChanged()
113 _mapType = _flightMapSettings->mapProvider()->rawValue().toString()
114 + QStringLiteral(
" ")
115 + _flightMapSettings->mapType()->rawValue().toString();
119 if (mapId == _mapId) {
123 qCDebug(Viewer3DTerrainTextureLog) <<
"Map type changed:" << _mapType <<
"mapId:" << mapId;
130 if (_roiMinCoordinate == newRoiMinCoordinate) {
133 _roiMinCoordinate = newRoiMinCoordinate;
139 if (_roiMaxCoordinate == newRoiMaxCoordinate) {
142 _roiMaxCoordinate = newRoiMaxCoordinate;
148 if (_mapProvider == newMapProvider) {
156 _mapProvider = newMapProvider;
169 if (_tileCount == newTileCount) {
172 _tileCount = newTileCount;
178 if (_textureGeometryDone == newTextureGeometryDone) {
181 _textureGeometryDone = newTextureGeometryDone;
#define QGC_LOGGING_CATEGORY(name, categoryStr)
void rawValueChanged(const QVariant &value)
Provides access to all app settings.
static int getQtMapIdFromProviderType(QStringView type)
virtual std::pair< QGeoCoordinate, QGeoCoordinate > mapBoundingBox() const =0
virtual bool mapLoaded() const =0
void textureGeometryDoneChanged()
void mapProviderChanged()
void setRoiMinCoordinate(const QGeoCoordinate &newRoiMinCoordinate)
Q_INVOKABLE void loadTexture()
void setTextureGeometryDone(bool newTextureGeometryDone)
void setRoiMaxCoordinate(const QGeoCoordinate &newRoiMaxCoordinate)
void setTextureGeometry(const Viewer3DTileStatistics &tileInfo)
void setFallbackCenter(const QGeoCoordinate &newFallbackCenter)
void roiMaxCoordinateChanged()
void roiMinCoordinateChanged()
void fallbackCenterChanged()
void setTileCount(const QSize &newTileCount)
void setMapProvider(Viewer3DMapProvider *newMapProvider)
void textureGeometryReady(TileStatistics_t tileInfo)
void adaptiveMapTilesLoader(const QString &mapType, int mapId, const QGeoCoordinate &coordinateMin, const QGeoCoordinate &coordinateMax)
QByteArray mapData() const
void loadingMapCompleted()
QGeoCoordinate coordinateMin
QGeoCoordinate coordinateMax