QGCMapUrlEngine.h 3.08 KB
Newer Older
1 2 3 4 5 6 7 8
/****************************************************************************
 *
 *   (c) 2009-2016 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.
 *
 ****************************************************************************/
dogmaphobic's avatar
dogmaphobic committed
9 10 11 12 13 14 15 16 17 18


/**
 *  @file
 *  @author Gus Grubba <mavlink@grubba.com>
 */

#ifndef QGC_MAP_URL_ENGINE_H
#define QGC_MAP_URL_ENGINE_H

19
#include "GoogleMapProvider.h"
Pierre TILAK's avatar
Pierre TILAK committed
20
#include "BingMapProvider.h"
dogmaphobic's avatar
dogmaphobic committed
21

Don Gagne's avatar
Don Gagne committed
22
#define MAX_MAP_ZOOM (20.0)
dogmaphobic's avatar
dogmaphobic committed
23 24 25 26

class UrlFactory : public QObject {
    Q_OBJECT
public:
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
//
//    enum QString
//    {
//        Invalid                 = -1,
//
//        GoogleMap               = 1,
//        GoogleSatellite         = 4,
//        GoogleLabels            = 8,
//        GoogleTerrain           = 16,
//        GoogleHybrid            = 20,
//
//        OpenStreetMap           = 32,
//        OpenStreetOsm           = 33,
//        OpenStreetMapSurfer     = 34,
//        OpenStreetMapSurferTerrain=35,
//
//        StatkartTopo            = 100,
//        EniroTopo               = 110,
//
//        BingMap                 = 444,
//        BingSatellite           = 555,
//        BingHybrid              = 666,
//
//        /*
//        MapQuestMap             = 700,
//        MapQuestSat             = 701,
//        */
//
//        VWorldMap                = 800,
//        VWorldSatellite          = 801,
//        VWorldStreet             = 802,
//
//        MapboxStreets           = 6000,
//        MapboxLight             = 6001,
//        MapboxDark              = 6002,
//        MapboxSatellite         = 6003,
//        MapboxHybrid            = 6004,
//        MapboxWheatPaste        = 6005,
//        MapboxStreetsBasic      = 6006,
//        MapboxComic             = 6007,
//        MapboxOutdoors          = 6008,
//        MapboxRunBikeHike       = 6009,
//        MapboxPencil            = 6010,
//        MapboxPirates           = 6011,
//        MapboxEmerald           = 6012,
//        MapboxHighContrast      = 6013,
//
//        EsriWorldStreet         = 7000,
//        EsriWorldSatellite      = 7001,
//        EsriTerrain             = 7002,
//
//        AirmapElevation         = 8001
//    };
dogmaphobic's avatar
dogmaphobic committed
80 81 82 83

    UrlFactory      ();
    ~UrlFactory     ();

84 85 86 87 88
    QNetworkRequest getTileURL          (QString type, int x, int y, int zoom, QNetworkAccessManager* networkManager);
    QNetworkRequest getTileURL          (int id, int x, int y, int zoom, QNetworkAccessManager* networkManager);

    QString         getImageFormat      (QString type, const QByteArray& image);
    QString         getImageFormat      (int id , const QByteArray& image);
dogmaphobic's avatar
dogmaphobic committed
89

90
    quint32  averageSizeForType  (QString type);
dogmaphobic's avatar
dogmaphobic committed
91

92
    QHash<QString, MapProvider*> getProviderTable(){return _providersTable;}
dogmaphobic's avatar
dogmaphobic committed
93

94 95 96
    int getIdFromType(QString type);
    QString getTypeFromId(int id);

97
private:
dogmaphobic's avatar
dogmaphobic committed
98
    int             _timeout;
99
    QHash<QString, MapProvider*> _providersTable;
100
    void registerProvider(QString Name, MapProvider* provider);
101

dogmaphobic's avatar
dogmaphobic committed
102
    // BingMaps
103
    //QString         _versionBingMaps;
Pierre TILAK's avatar
Pierre TILAK committed
104

dogmaphobic's avatar
dogmaphobic committed
105 106 107 108

};

#endif