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// Qt-Security score:significant reason:default
4
5#ifndef QTILEPROVIDEROSM_H
6#define QTILEPROVIDEROSM_H
7
8#include <QtLocation/private/qgeomaptype_p.h>
9#include <QtLocation/private/qgeocameracapabilities_p.h>
10#include <QtCore/QUrl>
11#include <QtCore/QList>
12#include <QtNetwork/QNetworkAccessManager>
13#include <QtNetwork/QNetworkReply>
14#include <QtCore/QPointer>
15#include <QTimer>
16#include <algorithm>
17#include <QtCore/QJsonDocument>
18#include <QtCore/QJsonObject>
19#include <QDateTime>
20
21QT_BEGIN_NAMESPACE
22
23class TileProvider: public QObject
24{
25 Q_OBJECT
26public:
27 enum Status {Idle,
28 Resolving,
29 Valid,
30 Invalid };
31
32 TileProvider();
33 // "Online" constructor. Needs resolution to fetch the parameters
34 TileProvider(const QUrl &urlRedirector, bool highDpi = false);
35 // Offline constructor. Doesn't need URLRedirector and networkmanager
36 TileProvider(const QString &urlTemplate,
37 const QString &format,
38 const QString &copyRightMap,
39 const QString &copyRightData,
40 bool highDpi = false,
41 int minimumZoomLevel = 0,
42 int maximumZoomLevel = 19);
43
44 ~TileProvider();
45 void setNetworkManager(QNetworkAccessManager *nm);
46
47 void resolveProvider();
48 void handleError(QNetworkReply::NetworkError error);
49 void setupProvider();
50
51 inline bool isValid() const;
52 inline bool isInvalid() const;
53 inline bool isResolved() const;
54 inline Status status() const;
55
56 inline QString mapCopyRight() const;
57 inline QString dataCopyRight() const;
58 inline QString styleCopyRight() const;
59 inline QString format() const;
60 inline int minimumZoomLevel() const;
61 inline int maximumZoomLevel() const;
62 inline const QDateTime &timestamp() const;
63 inline bool isHighDpi() const;
64 inline bool isHTTPS() const;
65 QUrl tileAddress(int x, int y, int z) const;
66
67 // Optional properties, not needed to construct a provider
68 void setStyleCopyRight(const QString &copyright);
69 void setTimestamp(const QDateTime &timestamp);
70
71 Status m_status;
72 QUrl m_urlRedirector; // The URL from where to fetch the URL template in case of a provider to resolve.
73 QNetworkAccessManager *m_nm;
74 QString m_urlTemplate;
75 QString m_format;
76 QString m_copyRightMap;
77 QString m_copyRightData;
78 QString m_copyRightStyle;
79 QString m_urlPrefix;
80 QString m_urlSuffix;
81 int m_minimumZoomLevel;
82 int m_maximumZoomLevel;
83 QDateTime m_timestamp;
84 bool m_highDpi;
85
86 int paramsLUT[3]; //Lookup table to handle possibly shuffled x,y,z
87 QString paramsSep[2]; // what goes in between %x, %y and %z
88
89Q_SIGNALS:
90 void resolutionFinished(TileProvider *provider);
91 void resolutionError(TileProvider *provider);
92
93public Q_SLOTS:
94 void onNetworkReplyFinished();
95 void onNetworkReplyError(QNetworkReply::NetworkError error);
96
97friend class QGeoTileProviderOsm;
98};
99
101{
103
104 friend class QGeoTileFetcherOsm;
105 friend class QGeoMapReplyOsm;
107public:
111
112 QGeoTileProviderOsm(QNetworkAccessManager *nm, const QGeoMapType &mapType,
113 const QList<TileProvider *> &providers,
114 const QGeoCameraCapabilities &cameraCapabilities);
116
117 QUrl tileAddress(int x, int y, int z) const;
118 QString mapCopyRight() const;
119 QString dataCopyRight() const;
120 QString styleCopyRight() const;
121 QString format() const;
122 int minimumZoomLevel() const;
123 int maximumZoomLevel() const;
124 bool isHighDpi() const;
125 const QGeoMapType &mapType() const;
126 bool isValid() const;
127 bool isResolved() const;
128 QDateTime timestamp() const;
130
135
136public Q_SLOTS:
137 void resolveProvider();
138 void disableRedirection();
139
140protected Q_SLOTS:
142 void onResolutionError(TileProvider *provider);
144
145protected:
146 void addProvider(TileProvider *provider);
147
148/* Data members */
149
152 TileProvider *m_provider;
157};
158
159QT_END_NAMESPACE
160
161#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
Combined button and popup list for selecting options.