Skip to content

Commit

Permalink
QtLocationPlugin: Make MapProvider Functions Const (mavlink#11583)
Browse files Browse the repository at this point in the history
  • Loading branch information
HTRamsey committed Jun 5, 2024
1 parent 955efaf commit 7ffedb8
Show file tree
Hide file tree
Showing 21 changed files with 504 additions and 753 deletions.
29 changes: 3 additions & 26 deletions src/QtLocationPlugin/BingMapProvider.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,31 +9,8 @@

#include "BingMapProvider.h"

BingMapProvider::BingMapProvider(const QString &imageFormat, const quint32 averageSize,
const QGeoMapType::MapStyle mapType, QObject* parent)
: MapProvider(QStringLiteral("https://www.bing.com/maps/"), imageFormat, averageSize, mapType, parent) {}

static const QString RoadMapUrl = QStringLiteral("http://ecn.t%1.tiles.virtualearth.net/tiles/r%2.png?g=%3&mkt=%4");

QString BingRoadMapProvider::_getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) {
Q_UNUSED(networkManager)
const QString key = _tileXYToQuadKey(x, y, zoom);
return RoadMapUrl.arg(QString::number(_getServerNum(x, y, 4)), key, _versionBingMaps, _language);
}

static const QString SatteliteMapUrl = QStringLiteral("http://ecn.t%1.tiles.virtualearth.net/tiles/a%2.jpeg?g=%3&mkt=%4");

QString BingSatelliteMapProvider::_getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) {
Q_UNUSED(networkManager)
QString BingMapProvider::_getURL(int x, int y, int zoom) const
{
const QString key = _tileXYToQuadKey(x, y, zoom);
return SatteliteMapUrl.arg(QString::number(_getServerNum(x, y, 4)) ,key ,_versionBingMaps ,_language);
return _mapUrl.arg(_getServerNum(x, y, 4)).arg(_mapName, key, _imageFormat, _versionBingMaps, _language);
}

static const QString HybridMapUrl = QStringLiteral("http://ecn.t%1.tiles.virtualearth.net/tiles/h%2.jpeg?g=%3&mkt=%4");

QString BingHybridMapProvider::_getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) {
Q_UNUSED(networkManager)
const QString key = _tileXYToQuadKey(x, y, zoom);
return HybridMapUrl.arg(QString::number(_getServerNum(x, y, 4)), key, _versionBingMaps, _language);
}

60 changes: 27 additions & 33 deletions src/QtLocationPlugin/BingMapProvider.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,59 +11,53 @@

#include "MapProvider.h"

class BingMapProvider : public MapProvider {
Q_OBJECT
static constexpr const quint32 AVERAGE_BING_STREET_MAP = 1297;
static constexpr const quint32 AVERAGE_BING_SAT_MAP = 19597;

public:
BingMapProvider(const QString &imageFormat, const quint32 averageSize,
const QGeoMapType::MapStyle mapType, QObject* parent = nullptr);
class BingMapProvider : public MapProvider
{
Q_OBJECT

~BingMapProvider() = default;
protected:
BingMapProvider(const QString &mapName, const QString &imageFormat, quint32 averageSize,
QGeoMapType::MapStyle mapType, QObject* parent = nullptr)
: MapProvider(QStringLiteral("https://www.bing.com/maps/"), imageFormat, averageSize, mapType, parent)
, _mapName(mapName) {}

bool _isBingProvider() const override { return true; }
public:
bool isBingProvider() const final { return true; }

private:
QString _getURL(int x, int y, int zoom) const final;

protected:
const QString _versionBingMaps = QStringLiteral("563");
const QString _mapName;
const QString _mapUrl = QStringLiteral("http://ecn.t%1.tiles.virtualearth.net/tiles/%2%3.%4?g=%5&mkt=%6");
const QString _versionBingMaps = QStringLiteral("2981");
};

static const quint32 AVERAGE_BING_STREET_MAP = 1297;
static const quint32 AVERAGE_BING_SAT_MAP = 19597;

// -----------------------------------------------------------
// Bing Road Map

class BingRoadMapProvider : public BingMapProvider {
class BingRoadMapProvider : public BingMapProvider
{
Q_OBJECT

public:
BingRoadMapProvider(QObject* parent = nullptr)
: BingMapProvider(QStringLiteral("png"), AVERAGE_BING_STREET_MAP, QGeoMapType::StreetMap, parent) {}

QString _getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) override;
: BingMapProvider(QStringLiteral("r"), QStringLiteral("png"), AVERAGE_BING_STREET_MAP, QGeoMapType::StreetMap, parent) {}
};

// -----------------------------------------------------------
// Bing Satellite Map

class BingSatelliteMapProvider : public BingMapProvider {
class BingSatelliteMapProvider : public BingMapProvider
{
Q_OBJECT

public:
BingSatelliteMapProvider(QObject* parent = nullptr)
: BingMapProvider(QStringLiteral("jpg"), AVERAGE_BING_SAT_MAP, QGeoMapType::SatelliteMapDay, parent) {}

QString _getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) override;
: BingMapProvider(QStringLiteral("a"), QStringLiteral("jpg"), AVERAGE_BING_SAT_MAP, QGeoMapType::SatelliteMapDay, parent) {}
};

// -----------------------------------------------------------
// Bing Hybrid Map

class BingHybridMapProvider : public BingMapProvider {
class BingHybridMapProvider : public BingMapProvider
{
Q_OBJECT

public:
BingHybridMapProvider(QObject* parent = nullptr)
: BingMapProvider(QStringLiteral("jpg"),AVERAGE_BING_SAT_MAP, QGeoMapType::HybridMap, parent) {}

QString _getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) override;
: BingMapProvider(QStringLiteral("h"), QStringLiteral("jpg"),AVERAGE_BING_SAT_MAP, QGeoMapType::HybridMap, parent) {}
};
54 changes: 29 additions & 25 deletions src/QtLocationPlugin/ElevationMapProvider.cpp
Original file line number Diff line number Diff line change
@@ -1,42 +1,46 @@
/****************************************************************************
*
* (c) 2009-2020 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
*
* QGroundControl is licensed according to the terms in the file
* COPYING.md in the root of the source code directory.
*
* License for the COPERNICUS dataset hosted on https://terrain-ce.suite.auterion.com/:
*
* © DLR e.V. 2010-2014 and © Airbus Defence and Space GmbH 2014-2018 provided under
* COPERNICUS by the European Union and ESA; all rights reserved.
*
****************************************************************************/

#include "ElevationMapProvider.h"
#include "TerrainTile.h"

/*
License for the COPERNICUS dataset hosted on https://terrain-ce.suite.auterion.com/:
© DLR e.V. 2010-2014 and © Airbus Defence and Space GmbH 2014-2018 provided under COPERNICUS
by the European Union and ESA; all rights reserved.
*/

ElevationProvider::ElevationProvider(const QString& imageFormat, quint32 averageSize, QGeoMapType::MapStyle mapType, QObject* parent)
: MapProvider(QStringLiteral("https://terrain-ce.suite.auterion.com/"), imageFormat, averageSize, mapType, parent) {}

//-----------------------------------------------------------------------------
int CopernicusElevationProvider::long2tileX(const double lon, const int z) const {
int CopernicusElevationProvider::long2tileX(double lon, int z) const
{
Q_UNUSED(z)
return static_cast<int>(floor((lon + 180.0) / TerrainTile::tileSizeDegrees));
}

//-----------------------------------------------------------------------------
int CopernicusElevationProvider::lat2tileY(const double lat, const int z) const {
int CopernicusElevationProvider::lat2tileY(double lat, int z) const
{
Q_UNUSED(z)
return static_cast<int>(floor((lat + 90.0) / TerrainTile::tileSizeDegrees));
}

QString CopernicusElevationProvider::_getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) {
Q_UNUSED(networkManager)
QString CopernicusElevationProvider::_getURL(int x, int y, int zoom) const
{
Q_UNUSED(zoom)
return QString("https://terrain-ce.suite.auterion.com/api/v1/carpet?points=%1,%2,%3,%4")
.arg(static_cast<double>(y) * TerrainTile::tileSizeDegrees - 90.0)
.arg(static_cast<double>(x) * TerrainTile::tileSizeDegrees - 180.0)
.arg(static_cast<double>(y + 1) * TerrainTile::tileSizeDegrees - 90.0)
.arg(static_cast<double>(x + 1) * TerrainTile::tileSizeDegrees - 180.0);
return QStringLiteral("https://terrain-ce.suite.auterion.com/api/v1/carpet?points=%1,%2,%3,%4")
.arg((static_cast<double>(y) * TerrainTile::tileSizeDegrees) - 90.0)
.arg((static_cast<double>(x) * TerrainTile::tileSizeDegrees) - 180.0)
.arg((static_cast<double>(y + 1) * TerrainTile::tileSizeDegrees) - 90.0)
.arg((static_cast<double>(x + 1) * TerrainTile::tileSizeDegrees) - 180.0);
}

QGCTileSet CopernicusElevationProvider::getTileCount(const int zoom, const double topleftLon,
const double topleftLat, const double bottomRightLon,
const double bottomRightLat) const {
QGCTileSet CopernicusElevationProvider::getTileCount(int zoom, double topleftLon,
double topleftLat, double bottomRightLon,
double bottomRightLat) const
{
QGCTileSet set;
set.tileX0 = long2tileX(topleftLon, zoom);
set.tileY0 = lat2tileY(bottomRightLat, zoom);
Expand Down
40 changes: 20 additions & 20 deletions src/QtLocationPlugin/ElevationMapProvider.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,37 +2,37 @@

#include "MapProvider.h"

#include <QtCore/QString>
static constexpr const quint32 AVERAGE_AIRMAP_ELEV_SIZE = 2786;

static const quint32 AVERAGE_AIRMAP_ELEV_SIZE = 2786;

class ElevationProvider : public MapProvider {
class ElevationProvider : public MapProvider
{
Q_OBJECT
public:

protected:
ElevationProvider(const QString& imageFormat, quint32 averageSize,
QGeoMapType::MapStyle mapType, QObject* parent = nullptr);
QGeoMapType::MapStyle mapType, QObject* parent = nullptr)
: MapProvider(QStringLiteral("https://terrain-ce.suite.auterion.com/"), imageFormat, averageSize, mapType, parent) {}

virtual bool _isElevationProvider() const override { return true; }
public:
bool isElevationProvider() const final { return true; }
};

// -----------------------------------------------------------
// Airmap Elevation

class CopernicusElevationProvider : public ElevationProvider {
class CopernicusElevationProvider : public ElevationProvider
{
Q_OBJECT
public:

public:
CopernicusElevationProvider(QObject* parent = nullptr)
: ElevationProvider(QStringLiteral("bin"), AVERAGE_AIRMAP_ELEV_SIZE,
QGeoMapType::StreetMap, parent) {}

int long2tileX(const double lon, const int z) const override;

int lat2tileY(const double lat, const int z) const override;
int long2tileX(double lon, int z) const final;
int lat2tileY(double lat, int z) const final;

QGCTileSet getTileCount(const int zoom, const double topleftLon,
const double topleftLat, const double bottomRightLon,
const double bottomRightLat) const override;
QGCTileSet getTileCount(int zoom, double topleftLon,
double topleftLat, double bottomRightLon,
double bottomRightLat) const final;

protected:
QString _getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) override;
private:
QString _getURL(int x, int y, int zoom) const final;
};
31 changes: 6 additions & 25 deletions src/QtLocationPlugin/EsriMapProvider.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,10 @@

#include <QtNetwork/QNetworkRequest>

EsriMapProvider::EsriMapProvider(const quint32 averageSize, const QGeoMapType::MapStyle mapType, QObject *parent)
: MapProvider(QString(), QString(), averageSize, mapType, parent) {}

QNetworkRequest EsriMapProvider::getTileURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) {
//-- Build URL
QNetworkRequest EsriMapProvider::getTileURL(int x, int y, int zoom) const
{
QNetworkRequest request;
const QString url = _getURL(x, y, zoom, networkManager);
const QString url = _getURL(x, y, zoom);
if (url.isEmpty()) {
return request;
}
Expand All @@ -31,23 +28,7 @@ QNetworkRequest EsriMapProvider::getTileURL(const int x, const int y, const int
return request;
}

static const QString WorldStreetMapUrl = QStringLiteral("http://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer/tile/%1/%2/%3");

QString EsriWorldStreetMapProvider::_getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) {
Q_UNUSED(networkManager)
return WorldStreetMapUrl.arg(zoom).arg(y).arg(x);
}

static const QString WorldSatelliteMapUrl = QStringLiteral("http://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/%1/%2/%3");

QString EsriWorldSatelliteMapProvider::_getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) {
Q_UNUSED(networkManager)
return WorldSatelliteMapUrl.arg(zoom).arg(y).arg(x);
}

static const QString TerrainMapUrl = QStringLiteral("http://server.arcgisonline.com/ArcGIS/rest/services/World_Terrain_Base/MapServer/tile/%1/%2/%3");

QString EsriTerrainMapProvider::_getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) {
Q_UNUSED(networkManager)
return TerrainMapUrl.arg(zoom).arg(y).arg(x);
QString EsriMapProvider::_getURL(int x, int y, int zoom) const
{
return _mapUrl.arg(_mapName).arg(zoom).arg(y).arg(x);
}
45 changes: 26 additions & 19 deletions src/QtLocationPlugin/EsriMapProvider.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,41 +11,48 @@

#include "MapProvider.h"

class EsriMapProvider : public MapProvider {
class EsriMapProvider : public MapProvider
{
Q_OBJECT

public:
EsriMapProvider(const quint32 averageSize, const QGeoMapType::MapStyle mapType, QObject* parent = nullptr);
protected:
EsriMapProvider(const QString &mapName, quint32 averageSize, QGeoMapType::MapStyle mapType, QObject* parent = nullptr)
: MapProvider(QString(), QString(), averageSize, mapType, parent)
, _mapName(mapName) {}

QNetworkRequest getTileURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) override;
public:
QNetworkRequest getTileURL(int x, int y, int zoom) const final;

private:
QString _getURL(int x, int y, int zoom) const final;

const QString _mapName;
const QString _mapUrl = QStringLiteral("http://services.arcgisonline.com/ArcGIS/rest/services/%1/MapServer/tile/%2/%3/%4");
};

class EsriWorldStreetMapProvider : public EsriMapProvider {
class EsriWorldStreetMapProvider : public EsriMapProvider
{
Q_OBJECT

public:
public:
EsriWorldStreetMapProvider(QObject* parent = nullptr)
: EsriMapProvider(AVERAGE_TILE_SIZE, QGeoMapType::StreetMap, parent) {}

QString _getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) override;
: EsriMapProvider(QStringLiteral("World_Street_Map"), AVERAGE_TILE_SIZE, QGeoMapType::StreetMap, parent) {}
};

class EsriWorldSatelliteMapProvider : public EsriMapProvider {
class EsriWorldSatelliteMapProvider : public EsriMapProvider
{
Q_OBJECT

public:
public:
EsriWorldSatelliteMapProvider(QObject* parent = nullptr)
: EsriMapProvider(AVERAGE_TILE_SIZE, QGeoMapType::SatelliteMapDay, parent) {}

QString _getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) override;
: EsriMapProvider(QStringLiteral("World_Imagery"), AVERAGE_TILE_SIZE, QGeoMapType::SatelliteMapDay, parent) {}
};

class EsriTerrainMapProvider : public EsriMapProvider {
class EsriTerrainMapProvider : public EsriMapProvider
{
Q_OBJECT

public:
public:
EsriTerrainMapProvider(QObject* parent = nullptr)
: EsriMapProvider(AVERAGE_TILE_SIZE, QGeoMapType::TerrainMap, parent) {}

QString _getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) override;
: EsriMapProvider(QStringLiteral("World_Terrain_Base"), AVERAGE_TILE_SIZE, QGeoMapType::TerrainMap, parent) {}
};
Loading

0 comments on commit 7ffedb8

Please sign in to comment.