BingMapProvider.h 2.02 KB
Newer Older
Pierre TILAK's avatar
Pierre TILAK committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14
#pragma once

#include "MapProvider.h"

#include <QByteArray>
#include <QMutex>
#include <QNetworkProxy>
#include <QNetworkReply>
#include <QPoint>
#include <QString>

class BingMapProvider : public MapProvider {
    Q_OBJECT
  public:
15 16
    BingMapProvider(QString imageFormat, quint32 averageSize,
                    QGeoMapType::MapStyle mapType, QObject* parent);
Pierre TILAK's avatar
Pierre TILAK committed
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37

    ~BingMapProvider();

  protected:
    // Define the url to Request
    virtual QString _getURL(int x, int y, int zoom,
                            QNetworkAccessManager* networkManager) = 0;

    const QString _versionBingMaps = "563";
};

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

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

class BingRoadMapProvider : public BingMapProvider {
    Q_OBJECT
  public:
    BingRoadMapProvider(QObject* parent)
38
        : BingMapProvider(QString("png"), AVERAGE_BING_STREET_MAP, QGeoMapType::StreetMap,
Pierre TILAK's avatar
Pierre TILAK committed
39 40 41 42 43 44 45 46 47 48 49 50 51 52
                          parent) {}

  protected:
    QString _getURL(int x, int y, int zoom,
                    QNetworkAccessManager* networkManager);
};

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

class BingSatelliteMapProvider : public BingMapProvider {
    Q_OBJECT
  public:
    BingSatelliteMapProvider(QObject* parent)
53
        : BingMapProvider(QString("jpg"), AVERAGE_BING_SAT_MAP, QGeoMapType::SatelliteMapDay,
Pierre TILAK's avatar
Pierre TILAK committed
54 55 56 57 58 59 60 61 62 63 64 65 66 67
                          parent) {}

  protected:
    QString _getURL(int x, int y, int zoom,
                    QNetworkAccessManager* networkManager);
};

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

class BingHybridMapProvider : public BingMapProvider {
    Q_OBJECT
  public:
    BingHybridMapProvider(QObject* parent)
68
        : BingMapProvider(QString("jpg"),AVERAGE_BING_SAT_MAP, QGeoMapType::HybridMap,
Pierre TILAK's avatar
Pierre TILAK committed
69 70 71 72 73 74
                          parent) {}

  protected:
    QString _getURL(int x, int y, int zoom,
                    QNetworkAccessManager* networkManager);
};