Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
qdeclarativegeomap_p.h
Go to the documentation of this file.
1// Copyright (C) 2015 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 QDECLARATIVEGEOMAP_H
5#define QDECLARATIVEGEOMAP_H
6
7//
8// W A R N I N G
9// -------------
10//
11// This file is not part of the Qt API. It exists purely as an
12// implementation detail. This header file may change from version to
13// version without notice, or even be removed.
14//
15// We mean it.
16//
17
18#include <QtLocation/private/qlocationglobal_p.h>
19#include <QtLocation/private/qdeclarativegeomapitemview_p.h>
20#include <QtLocation/private/qdeclarativegeomapitemgroup_p.h>
21#include <QtLocation/qgeoserviceprovider.h>
22#include <QtLocation/private/qgeocameradata_p.h>
23#include <QtLocation/private/qgeocameracapabilities_p.h>
24#include <QtQuick/QQuickItem>
25#include <QtCore/QList>
26#include <QtCore/QPointer>
27#include <QtGui/QColor>
28#include <QtPositioning/qgeorectangle.h>
29#include <QtLocation/private/qgeomap_p.h>
30
31Q_MOC_INCLUDE(<QtLocation/private/qdeclarativegeoserviceprovider_p.h>)
32
34
35class QQuickWindow;
37class QGeoMapType;
39
40class Q_LOCATION_EXPORT QDeclarativeGeoMap : public QQuickItem
41{
46 Q_PROPERTY(QDeclarativeGeoServiceProvider *plugin READ plugin WRITE setPlugin NOTIFY pluginChanged)
47 Q_PROPERTY(qreal minimumZoomLevel READ minimumZoomLevel WRITE setMinimumZoomLevel NOTIFY minimumZoomLevelChanged)
48 Q_PROPERTY(qreal maximumZoomLevel READ maximumZoomLevel WRITE setMaximumZoomLevel NOTIFY maximumZoomLevelChanged)
49 Q_PROPERTY(qreal zoomLevel READ zoomLevel WRITE setZoomLevel NOTIFY zoomLevelChanged)
50
51 Q_PROPERTY(qreal tilt READ tilt WRITE setTilt NOTIFY tiltChanged)
52 Q_PROPERTY(qreal minimumTilt READ minimumTilt WRITE setMinimumTilt NOTIFY minimumTiltChanged)
53 Q_PROPERTY(qreal maximumTilt READ maximumTilt WRITE setMaximumTilt NOTIFY maximumTiltChanged)
54
55 Q_PROPERTY(qreal bearing READ bearing WRITE setBearing NOTIFY bearingChanged)
56
57 Q_PROPERTY(qreal fieldOfView READ fieldOfView WRITE setFieldOfView NOTIFY fieldOfViewChanged)
58 Q_PROPERTY(qreal minimumFieldOfView READ minimumFieldOfView WRITE setMinimumFieldOfView NOTIFY minimumFieldOfViewChanged)
59 Q_PROPERTY(qreal maximumFieldOfView READ maximumFieldOfView WRITE setMaximumFieldOfView NOTIFY minimumFieldOfViewChanged)
60
61 Q_PROPERTY(QGeoMapType activeMapType READ activeMapType WRITE setActiveMapType NOTIFY activeMapTypeChanged)
62 Q_PROPERTY(QList<QGeoMapType> supportedMapTypes READ supportedMapTypes NOTIFY supportedMapTypesChanged)
63 Q_PROPERTY(QGeoCoordinate center READ center WRITE setCenter NOTIFY centerChanged)
64 Q_PROPERTY(QList<QObject *> mapItems READ mapItems NOTIFY mapItemsChanged)
65 Q_PROPERTY(QGeoServiceProvider::Error error READ error NOTIFY errorChanged)
66 Q_PROPERTY(QString errorString READ errorString NOTIFY errorChanged)
67 Q_PROPERTY(QGeoShape visibleRegion READ visibleRegion WRITE setVisibleRegion NOTIFY visibleRegionChanged)
68 Q_PROPERTY(bool copyrightsVisible READ copyrightsVisible WRITE setCopyrightsVisible NOTIFY copyrightsVisibleChanged)
70 Q_PROPERTY(bool mapReady READ mapReady NOTIFY mapReadyChanged)
71 Q_PROPERTY(QRectF visibleArea READ visibleArea WRITE setVisibleArea NOTIFY visibleAreaChanged REVISION(5, 12))
73
74public:
75
76 explicit QDeclarativeGeoMap(QQuickItem *parent = nullptr);
78
79 void setPlugin(QDeclarativeGeoServiceProvider *plugin);
80 QDeclarativeGeoServiceProvider *plugin() const;
81
82 void setActiveMapType(const QGeoMapType &mapType);
83 QGeoMapType activeMapType() const;
84
85 void setMinimumZoomLevel(qreal minimumZoomLevel, bool userSet = true);
86 qreal minimumZoomLevel() const;
87
88 void setMaximumZoomLevel(qreal maximumZoomLevel, bool userSet = true);
89 qreal maximumZoomLevel() const;
90
91 void setZoomLevel(qreal zoomLevel);
92 qreal zoomLevel() const;
93
94 void setBearing(qreal bearing);
95 qreal bearing() const;
96
97 void setTilt(qreal tilt);
98 qreal tilt() const;
99 void setMinimumTilt(qreal minimumTilt, bool userSet = true);
100 qreal minimumTilt() const;
101 void setMaximumTilt(qreal maximumTilt, bool userSet = true);
102 qreal maximumTilt() const;
103
104 void setFieldOfView(qreal fieldOfView);
105 qreal fieldOfView() const;
106 void setMinimumFieldOfView(qreal minimumFieldOfView, bool userSet = true);
107 qreal minimumFieldOfView() const;
108 void setMaximumFieldOfView(qreal maximumFieldOfView, bool userSet = true);
109 qreal maximumFieldOfView() const;
110
111 void setCenter(const QGeoCoordinate &center);
112 QGeoCoordinate center() const;
113
114 void setVisibleRegion(const QGeoShape &shape);
115 QGeoShape visibleRegion() const;
116
117 void setCopyrightsVisible(bool visible);
118 bool copyrightsVisible() const;
119
120 void setColor(const QColor &color);
121 QColor color() const;
122
123 QRectF visibleArea() const;
124 void setVisibleArea(const QRectF &visibleArea);
125
126 bool mapReady() const;
127
128 QList<QGeoMapType> supportedMapTypes();
129
130 Q_INVOKABLE void setBearing(qreal bearing, const QGeoCoordinate &coordinate);
131 Q_INVOKABLE void alignCoordinateToPoint(const QGeoCoordinate &coordinate, const QPointF &point);
132
133 Q_INVOKABLE void removeMapItem(QDeclarativeGeoMapItemBase *item);
135
136 Q_INVOKABLE void addMapItemGroup(QDeclarativeGeoMapItemGroup *itemGroup);
137 Q_INVOKABLE void removeMapItemGroup(QDeclarativeGeoMapItemGroup *itemGroup);
138
139 Q_INVOKABLE void removeMapItemView(QDeclarativeGeoMapItemView *itemView);
140 Q_INVOKABLE void addMapItemView(QDeclarativeGeoMapItemView *itemView);
141
142 Q_INVOKABLE void clearMapItems();
143 QList<QObject *> mapItems();
144
145 Q_INVOKABLE QGeoCoordinate toCoordinate(const QPointF &position, bool clipToViewPort = true) const;
146 Q_INVOKABLE QPointF fromCoordinate(const QGeoCoordinate &coordinate, bool clipToViewPort = true) const;
147
148// QQuickGeoMapGestureArea *gesture();
149
150 Q_INVOKABLE void fitViewportToMapItems(const QVariantList &items = {});
151 Q_INVOKABLE void fitViewportToVisibleMapItems();
152 Q_INVOKABLE void pan(int dx, int dy);
153 Q_INVOKABLE void prefetchData(); // optional hint for prefetch
154 Q_INVOKABLE void clearData();
155 Q_REVISION(13) Q_INVOKABLE void fitViewportToGeoShape(const QGeoShape &shape, QVariant margins);
156 void fitViewportToGeoShape(const QGeoShape &shape, const QMargins &borders = QMargins(10, 10, 10, 10));
157
158 QString errorString() const;
160 QGeoMap* map() const;
161
162 // From QQuickItem
163 void itemChange(ItemChange, const ItemChangeData &) override;
164
166 void pluginChanged(QDeclarativeGeoServiceProvider *plugin);
167 void zoomLevelChanged(qreal zoomLevel);
168 void centerChanged(const QGeoCoordinate &coordinate);
169 void activeMapTypeChanged();
170 void supportedMapTypesChanged();
171 void minimumZoomLevelChanged(qreal minimumZoomLevel);
172 void maximumZoomLevelChanged(qreal maximumZoomLevel);
173 void mapItemsChanged();
174 void errorChanged();
175 void copyrightLinkActivated(const QString &link);
176 void copyrightsVisibleChanged(bool visible);
178 void bearingChanged(qreal bearing);
179 void tiltChanged(qreal tilt);
180 void fieldOfViewChanged(qreal fieldOfView);
181 void minimumTiltChanged(qreal minimumTilt);
182 void maximumTiltChanged(qreal maximumTilt);
183 void minimumFieldOfViewChanged(qreal minimumFieldOfView);
184 void maximumFieldOfViewChanged(qreal maximumFieldOfView);
185 void copyrightsImageChanged(const QImage &copyrightsImage);
186 void copyrightsChanged(const QString &copyrightsHtml);
187 void mapReadyChanged(bool ready);
188 void visibleAreaChanged();
189 Q_REVISION(14) void visibleRegionChanged();
190
191protected:
192 void componentComplete() override;
193 QSGNode *updatePaintNode(QSGNode *, UpdatePaintNodeData *) override;
194 void geometryChange(const QRectF &newGeometry, const QRectF &oldGeometry) override;
195
196 void setError(QGeoServiceProvider::Error error, const QString &errorString);
197 void initialize();
198 void setZoomLevel(qreal zoomLevel, bool overzoom);
199 bool addMapChild(QObject *child);
200 bool removeMapChild(QObject *child);
201 bool isGroupNested(QDeclarativeGeoMapItemGroup *group) const;
202
203 bool addMapItem_real(QDeclarativeGeoMapItemBase *item);
204 bool removeMapItem_real(QDeclarativeGeoMapItemBase *item);
205 bool addMapItemGroup_real(QDeclarativeGeoMapItemGroup *itemGroup);
206 bool removeMapItemGroup_real(QDeclarativeGeoMapItemGroup *itemGroup);
207 bool addMapItemView_real(QDeclarativeGeoMapItemView *itemView);
208 bool removeMapItemView_real(QDeclarativeGeoMapItemView *itemView);
209 void updateItemToWindowTransform();
210 void onSGNodeChanged();
211
213 void mappingManagerInitialized();
214 void pluginReady();
215 void onSupportedMapTypesChanged();
216 void onCameraCapabilitiesChanged(const QGeoCameraCapabilities &oldCameraCapabilities);
217 void onAttachedCopyrightNoticeVisibilityChanged();
218 void onCameraDataChanged(const QGeoCameraData &cameraData);
219
220private:
221 void setupMapView(QDeclarativeGeoMapItemView *view);
222 void populateMap();
223 void fitViewportToMapItemsRefine(const QList<QPointer<QDeclarativeGeoMapItemBase> > &mapItems, bool refine, bool onlyVisible);
224 void attachCopyrightNotice(bool initialVisibility);
225 void detachCopyrightNotice(bool currentVisibility);
226 QMargins mapMargins() const;
227
228private:
229 QQuickWindow *m_window = nullptr;
230 QDeclarativeGeoServiceProvider *m_plugin = nullptr;
231 QGeoMappingManager *m_mappingManager = nullptr;
232 QGeoMapType m_activeMapType;
233 QList<QGeoMapType> m_supportedMapTypes;
234 QList<QDeclarativeGeoMapItemView *> m_mapViews;
235 QPointer<QGeoMap> m_map;
238 QList<QPointer<QDeclarativeGeoMapItemGroup> > m_mapItemGroups;
239 QString m_errorString;
241 QGeoRectangle m_visibleRegion;
242 QColor m_color = QColor::fromRgbF(0.9f, 0.9f, 0.9f);
243 QGeoCameraData m_cameraData;
244 bool m_componentCompleted = false;
245 bool m_pendingFitViewport = false;
246 bool m_copyrightsVisible = true;
247 double m_maximumViewportLatitude = 0.0;
248 double m_minimumViewportLatitude = 0.0;
249 bool m_initialized = false;
250 bool m_sgNodeHasChanged = false;
251 QGeoCameraCapabilities m_cameraCapabilities;
252 qreal m_minimumZoomLevel = Q_QNAN;
253 qreal m_maximumZoomLevel = Q_QNAN;
254 qreal m_userMinimumZoomLevel = 0;
255 qreal m_userMaximumZoomLevel = Q_INFINITY;
256
257 qreal m_minimumTilt = Q_QNAN;
258 qreal m_maximumTilt = Q_QNAN;
259 qreal m_userMinimumTilt = 0;
260 qreal m_userMaximumTilt = Q_INFINITY;
261
262 qreal m_minimumFieldOfView = Q_QNAN;
263 qreal m_maximumFieldOfView = Q_QNAN;
264 qreal m_userMinimumFieldOfView = 0;
265 qreal m_userMaximumFieldOfView = Q_INFINITY;
266
267 int m_copyNoticesVisible = 0;
268 qreal m_maxChildZ = 0;
269 QRectF m_visibleArea;
270
271
272 friend class QDeclarativeGeoMapItem;
275 Q_DISABLE_COPY(QDeclarativeGeoMap)
276};
277
278
280
282
283#endif
The QColor class provides colors based on RGB, HSV or CMYK values.
Definition qcolor.h:31
\inmodule QtPositioning
\inmodule QtLocation
\inmodule QtPositioning
\inmodule QtLocation
Error
Describes an error related to the loading and setup of a service provider plugin.
\inmodule QtPositioning
Definition qgeoshape.h:17
\inmodule QtGui
Definition qimage.h:37
\inmodule QtCore
Definition qmargins.h:24
\inmodule QtCore
Definition qobject.h:103
\inmodule QtCore\reentrant
Definition qpoint.h:217
The QQmlParserStatus class provides updates on the QML parser state.
The QQuickItem class provides the most basic of all visual items in \l {Qt Quick}.
Definition qquickitem.h:63
ItemChange
Used in conjunction with QQuickItem::itemChange() to notify the item about certain types of changes.
Definition qquickitem.h:144
\qmltype Window \instantiates QQuickWindow \inqmlmodule QtQuick
\inmodule QtCore\reentrant
Definition qrect.h:484
\group qtquick-scenegraph-nodes \title Qt Quick Scene Graph Node classes
Definition qsgnode.h:37
\macro QT_RESTRICTED_CAST_FROM_ASCII
Definition qstring.h:129
\inmodule QtCore
Definition qvariant.h:65
QMap< QString, QString > map
[6]
void colorChanged()
Combined button and popup list for selecting options.
static bool initialize()
Definition qctf.cpp:94
DBusConnection const char DBusError * error
#define Q_INFINITY
Definition qnumeric.h:77
#define Q_QNAN
Definition qnumeric.h:81
GLfloat GLfloat f
GLuint color
[2]
GLboolean GLuint group
#define QML_DECLARE_TYPE(TYPE)
Definition qqml.h:19
#define QML_NAMED_ELEMENT(NAME)
#define QML_ADDED_IN_VERSION(MAJOR, MINOR)
static void setError(QJsonObject *response, const QString &msg)
static qreal position(const QQuickItem *item, QQuickAnchors::Anchor anchorLine)
@ NoError
Definition main.cpp:34
#define Q_PROPERTY(...)
#define Q_OBJECT
#define Q_REVISION(...)
#define Q_INVOKABLE
#define Q_INTERFACES(x)
#define Q_SLOTS
#define Q_MOC_INCLUDE(...)
#define Q_ENUMS(x)
#define Q_SIGNALS
double qreal
Definition qtypes.h:187
#define explicit
QGraphicsItem * item
myFilter setColor(QColor(128, 0, 0))
QList< QTreeWidgetItem * > items
QLayoutItem * child
[0]
QQuickView * view
[0]
\inmodule QtQuick
Definition qquickitem.h:159