Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qgeotileproviderosm.h
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#ifndef QTILEPROVIDEROSM_H
5#define QTILEPROVIDEROSM_H
6
7#include <QtLocation/private/qgeomaptype_p.h>
8#include <QtLocation/private/qgeocameracapabilities_p.h>
9#include <QtCore/QUrl>
10#include <QtCore/QList>
11#include <QtNetwork/QNetworkAccessManager>
12#include <QtNetwork/QNetworkReply>
13#include <QtCore/QPointer>
14#include <QTimer>
15#include <algorithm>
16#include <QtCore/QJsonDocument>
17#include <QtCore/QJsonObject>
18#include <QDateTime>
19
20QT_BEGIN_NAMESPACE
21
22class TileProvider: public QObject
23{
24 Q_OBJECT
25public:
26 enum Status {Idle,
27 Resolving,
28 Valid,
29 Invalid };
30
31 TileProvider();
32 // "Online" constructor. Needs resolution to fetch the parameters
33 TileProvider(const QUrl &urlRedirector, bool highDpi = false);
34 // Offline constructor. Doesn't need URLRedirector and networkmanager
35 TileProvider(const QString &urlTemplate,
36 const QString &format,
37 const QString &copyRightMap,
38 const QString &copyRightData,
39 bool highDpi = false,
40 int minimumZoomLevel = 0,
41 int maximumZoomLevel = 19);
42
43 ~TileProvider();
44 void setNetworkManager(QNetworkAccessManager *nm);
45
46 void resolveProvider();
47 void handleError(QNetworkReply::NetworkError error);
48 void setupProvider();
49
50 inline bool isValid() const;
51 inline bool isInvalid() const;
52 inline bool isResolved() const;
53 inline Status status() const;
54
55 inline QString mapCopyRight() const;
56 inline QString dataCopyRight() const;
57 inline QString styleCopyRight() const;
58 inline QString format() const;
59 inline int minimumZoomLevel() const;
60 inline int maximumZoomLevel() const;
61 inline const QDateTime &timestamp() const;
62 inline bool isHighDpi() const;
63 inline bool isHTTPS() const;
64 QUrl tileAddress(int x, int y, int z) const;
65
66 // Optional properties, not needed to construct a provider
67 void setStyleCopyRight(const QString &copyright);
68 void setTimestamp(const QDateTime &timestamp);
69
70 Status m_status;
71 QUrl m_urlRedirector; // The URL from where to fetch the URL template in case of a provider to resolve.
72 QNetworkAccessManager *m_nm;
73 QString m_urlTemplate;
74 QString m_format;
75 QString m_copyRightMap;
76 QString m_copyRightData;
77 QString m_copyRightStyle;
78 QString m_urlPrefix;
79 QString m_urlSuffix;
80 int m_minimumZoomLevel;
81 int m_maximumZoomLevel;
82 QDateTime m_timestamp;
83 bool m_highDpi;
84
85 int paramsLUT[3]; //Lookup table to handle possibly shuffled x,y,z
86 QString paramsSep[2]; // what goes in between %x, %y and %z
87
88Q_SIGNALS:
89 void resolutionFinished(TileProvider *provider);
90 void resolutionError(TileProvider *provider);
91
92public Q_SLOTS:
93 void onNetworkReplyFinished();
94 void onNetworkReplyError(QNetworkReply::NetworkError error);
95
96friend class QGeoTileProviderOsm;
97};
98
100{
102
103 friend class QGeoTileFetcherOsm;
104 friend class QGeoMapReplyOsm;
106public:
110
111 QGeoTileProviderOsm(QNetworkAccessManager *nm, const QGeoMapType &mapType,
112 const QList<TileProvider *> &providers,
113 const QGeoCameraCapabilities &cameraCapabilities);
115
116 QUrl tileAddress(int x, int y, int z) const;
117 QString mapCopyRight() const;
118 QString dataCopyRight() const;
119 QString styleCopyRight() const;
120 QString format() const;
121 int minimumZoomLevel() const;
122 int maximumZoomLevel() const;
123 bool isHighDpi() const;
124 const QGeoMapType &mapType() const;
125 bool isValid() const;
126 bool isResolved() const;
127 QDateTime timestamp() const;
129
134
135public Q_SLOTS:
136 void resolveProvider();
137 void disableRedirection();
138
139protected Q_SLOTS:
141 void onResolutionError(TileProvider *provider);
143
144protected:
145 void addProvider(TileProvider *provider);
146
147/* Data members */
148
151 TileProvider *m_provider;
156};
157
158QT_END_NAMESPACE
159
160#endif // QTILEPROVIDEROSM_H
void onProviderResolutionError(const QGeoTileProviderOsm *provider, QNetworkReply::NetworkError error)
QList< QDateTime > m_maxMapIdTimestamps
QSharedPointer< QGeoTileTexture > getFromOfflineStorage(const QGeoTileSpec &spec)
QList< QGeoTileProviderOsm * > m_providers
QString tileSpecToFilename(const QGeoTileSpec &spec, const QString &format, const QString &directory) const override
QGeoTileSpec filenameToTileSpec(const QString &filename) const override
QString tileSpecToFilename(const QGeoTileSpec &spec, const QString &format, int providerId) const
QSharedPointer< QGeoTileTexture > get(const QGeoTileSpec &spec) override
void clearObsoleteTiles(const QGeoTileProviderOsm *p)
QGeoTileProviderOsm(QNetworkAccessManager *nm, const QGeoMapType &mapType, const QList< TileProvider * > &providers, const QGeoCameraCapabilities &cameraCapabilities)
QNetworkAccessManager * m_nm
QString dataCopyRight() const
const QGeoMapType & mapType() const
QGeoCameraCapabilities m_cameraCapabilities
QGeoCameraCapabilities cameraCapabilities() const
QDateTime timestamp() const
void onResolutionError(TileProvider *provider)
QList< TileProvider * > m_providerList
void addProvider(TileProvider *provider)
QString styleCopyRight() const
void resolutionError(const QGeoTileProviderOsm *provider)
QUrl tileAddress(int x, int y, int z) const