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
qgeomap.cpp
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#include "qgeomap_p.h"
5#include "qgeomap_p_p.h"
9#include <QDebug>
10#include <QRectF>
11
13
15 : QObject(dd,parent)
16{
17}
18
22
24{
25 Q_D(QGeoMap);
26 if (size == d->m_viewportSize)
27 return;
28 d->m_viewportSize = size;
29 d->m_geoProjection->setViewportSize(size);
30 d->changeViewportSize(size);
31}
32
34{
35 Q_D(const QGeoMap);
36 return d->m_viewportSize;
37}
38
40{
41 Q_D(const QGeoMap);
42 return d->m_viewportSize.width();
43}
44
46{
47 Q_D(const QGeoMap);
48 return d->m_viewportSize.height();
49}
50
52{
53 Q_D(QGeoMap);
54 if (cameraData == d->m_cameraData)
55 return;
56 d->m_cameraData = cameraData;
57 d->m_geoProjection->setCameraData(cameraData, false);
58 d->changeCameraData(cameraData);
59 emit cameraDataChanged(d->m_cameraData);
60}
61
63{
64 Q_D(QGeoMap);
65 d->setCameraCapabilities(cameraCapabilities);
66}
67
69{
71 return false;
72}
73
74bool QGeoMap::setBearing(qreal bearing, const QGeoCoordinate &coordinate) //FIXME visibleArea
75{
76 Q_D(QGeoMap);
77 bool res = d->m_geoProjection->setBearing(bearing, coordinate);
78 if (!res)
79 return false;
80
82 return true;
83}
84
85bool QGeoMap::anchorCoordinateToPoint(const QGeoCoordinate &coordinate, const QPointF &anchorPoint)
86{
87 Q_D(QGeoMap);
88 QGeoCoordinate newCenter = geoProjection().anchorCoordinateToPoint(coordinate, anchorPoint);
89 newCenter.setLatitude(qBound(d->m_minimumViewportLatitude, newCenter.latitude(), d->m_maximumViewportLatitude));
91 if (data.center() != newCenter) {
92 data.setCenter(newCenter);
94 return true;
95 }
96 return false;
97}
98
99bool QGeoMap::fitViewportToGeoRectangle(const QGeoRectangle &rectangle, const QMargins &borders)
100{
101 Q_UNUSED(rectangle);
102 Q_UNUSED(borders);
103 return false;
104}
105
110
112{
113 Q_D(const QGeoMap);
114 return d->m_cameraData;
115}
116
118{
119 Q_D(QGeoMap);
120 if (type == d->m_activeMapType)
121 return;
122 d->m_activeMapType = type;
123 d->setCameraCapabilities(d->m_engine->cameraCapabilities(type.mapId())); // emits
124 d->changeActiveMapType(type);
126}
127
129{
130 Q_D(const QGeoMap);
131 return d->m_activeMapType;
132}
133
135{
136 Q_D(const QGeoMap);
137 return d->m_geoProjection->minimumZoom();
138}
139
141{
142 Q_D(const QGeoMap);
143 return d->maximumCenterLatitudeAtZoom(cameraData);
144}
145
147{
148 Q_D(const QGeoMap);
149 return d->minimumCenterLatitudeAtZoom(cameraData);
150}
151
152double QGeoMap::mapWidth() const
153{
154 Q_D(const QGeoMap);
155 return d->mapWidth();
156}
157
158double QGeoMap::mapHeight() const
159{
160 Q_D(const QGeoMap);
161 return d->mapHeight();
162}
163
165{
166 Q_D(const QGeoMap);
167 return *(d->m_geoProjection);
168}
169
171{
172 Q_D(const QGeoMap);
173 return d->m_cameraCapabilities;
174}
175
176QGeoMap::Capabilities QGeoMap::capabilities() const
177{
178 return Capabilities(QGeoMap::SupportsNothing);
179}
180
182{
183
184}
185
187{
188
189}
190
191QGeoMap::ItemTypes QGeoMap::supportedMapItemTypes() const
192{
193 Q_D(const QGeoMap);
194 return d->supportedMapItemTypes();
195}
196
198{
199 Q_D(QGeoMap);
200 if (item && !d->m_mapItems.contains(item) && d->supportedMapItemTypes() & item->itemType()) {
201 d->m_mapItems.append(item);
202 d->addMapItem(item);
203 }
204}
205
207{
208 Q_D(QGeoMap);
209 if (item && d->m_mapItems.contains(item)) {
210 d->removeMapItem(item);
211 d->m_mapItems.removeOne(item);
212 }
213}
214
216{
217 Q_D(QGeoMap);
218 for (QDeclarativeGeoMapItemBase *p : d->m_mapItems)
219 d->removeMapItem(p);
220 d->m_mapItems.clear();
221}
222
223void QGeoMap::setItemToWindowTransform(const QTransform &itemToWindowTransform)
224{
225 Q_D(QGeoMap);
226 d->m_geoProjection->setItemToWindowTransform(itemToWindowTransform);
227}
228
229void QGeoMap::setVisibleArea(const QRectF &visibleArea)
230{
231 Q_D(QGeoMap);
232 const QRectF &va = d->visibleArea();
233 d->setVisibleArea(visibleArea);
234 if (va != d->visibleArea())
236}
237
239{
240 Q_D(const QGeoMap);
241 return d->visibleArea();
242}
243
245{
246 return QStringLiteral("#copyright-root { background: rgba(255, 255, 255, 128) }");
247}
248
249void QGeoMap::setAcceptedGestures(bool pan, bool flick, bool pinch, bool rotate, bool tilt)
250{
251 Q_UNUSED(pan);
252 Q_UNUSED(flick);
253 Q_UNUSED(pinch);
254 Q_UNUSED(rotate);
255 Q_UNUSED(tilt);
256}
257
259{
260 Q_D(QGeoMap);
261 if (d->m_copyrightVisible == visible)
262 return;
263
264 d->m_copyrightVisible = visible;
265}
266
268 : QObjectPrivate(),
269 m_geoProjection(geoProjection),
270 m_engine(engine)
271{
272 // Setting the default camera caps without emitting anything
273 if (engine)
275}
276
282
284{
285 Q_Q(QGeoMap);
287 return;
290 emit q->cameraCapabilitiesChanged(oldCaps);
291}
292
297
299{
300 return map.d_func();
301}
302
304{
305 return QGeoMap::NoItem;
306}
307
312
317
319{
321 return static_cast<const QGeoProjectionWebMercator *>(m_geoProjection)->mapWidth();
322 return 0; // override this for maps supporting other projections
323}
324
326{
328 return static_cast<const QGeoProjectionWebMercator *>(m_geoProjection)->mapHeight();
329 return 0; // override this for maps supporting other projections
330}
331
333{
334 m_copyrightVisible = visible;
335}
336
338{
339 return m_copyrightVisible;
340}
341
347
353
354void QGeoMapPrivate::setVisibleArea(const QRectF &/*visibleArea*/)
355{
356
357}
358
360{
361 return QRectF();
362}
363
365{
366 qreal xp = qMin<qreal>(visibleArea.x(), qMax(m_viewportSize.width() - 1, 0));
367 qreal yp = qMin<qreal>(visibleArea.y(), qMax(m_viewportSize.height() - 1, 0));
368 qreal w = qMin<qreal>(visibleArea.width(), qMax<qreal>(m_viewportSize.width() - xp, 0));
369 qreal h = qMin<qreal>(visibleArea.height(), qMax<qreal>(m_viewportSize.height() - yp, 0));
370 return QRectF(xp, yp, w, h);
371}
372
\inmodule QtCore
Definition qcoreevent.h:45
\inmodule QtPositioning
void setCameraCapabilities(const QGeoCameraCapabilities &cameraCapabilities)
Definition qgeomap.cpp:283
virtual double mapWidth() const
Definition qgeomap.cpp:318
QGeoProjection * m_geoProjection
Definition qgeomap_p_p.h:78
virtual double maximumCenterLatitudeAtZoom(const QGeoCameraData &cameraData) const
Definition qgeomap.cpp:342
QGeoMapType m_activeMapType
Definition qgeomap_p_p.h:81
double m_maximumViewportLatitude
Definition qgeomap_p_p.h:85
const QGeoCameraCapabilities & cameraCapabilities() const
Definition qgeomap.cpp:293
double m_minimumViewportLatitude
Definition qgeomap_p_p.h:86
QSize m_viewportSize
Definition qgeomap_p_p.h:77
virtual void setVisibleArea(const QRectF &visibleArea)
Definition qgeomap.cpp:354
QRectF clampVisibleArea(const QRectF &visibleArea) const
Definition qgeomap.cpp:364
virtual void removeMapItem(QDeclarativeGeoMapItemBase *item)
Definition qgeomap.cpp:313
virtual bool copyrightVisible() const
Definition qgeomap.cpp:337
QGeoCameraCapabilities m_cameraCapabilities
Definition qgeomap_p_p.h:83
virtual QGeoMap::ItemTypes supportedMapItemTypes() const
Definition qgeomap.cpp:303
QGeoMapPrivate(QGeoMappingManagerEngine *engine, QGeoProjection *geoProjection)
Definition qgeomap.cpp:267
virtual void setCopyrightVisible(bool visible)
Definition qgeomap.cpp:332
static const QGeoMapPrivate * get(const QGeoMap &map)
Definition qgeomap.cpp:298
QPointer< QGeoMappingManagerEngine > m_engine
Definition qgeomap_p_p.h:79
virtual double mapHeight() const
Definition qgeomap.cpp:325
bool m_copyrightVisible
Definition qgeomap_p_p.h:84
virtual double minimumCenterLatitudeAtZoom(const QGeoCameraData &cameraData) const
Definition qgeomap.cpp:348
virtual void addMapItem(QDeclarativeGeoMapItemBase *item)
Definition qgeomap.cpp:308
virtual QRectF visibleArea() const
Definition qgeomap.cpp:359
virtual ~QGeoMapPrivate()
Definition qgeomap.cpp:277
int mapId() const
void setCameraData(const QGeoCameraData &cameraData)
Definition qgeomap.cpp:51
virtual bool setBearing(qreal bearing, const QGeoCoordinate &coordinate)
Definition qgeomap.cpp:74
@ SupportsNothing
Definition qgeomap_p.h:59
QSize viewportSize() const
Definition qgeomap.cpp:33
virtual bool fitViewportToGeoRectangle(const QGeoRectangle &rectangle, const QMargins &borders)
Definition qgeomap.cpp:99
virtual QString copyrightsStyleSheet() const
Definition qgeomap.cpp:244
void setActiveMapType(const QGeoMapType &mapType)
Definition qgeomap.cpp:117
virtual Capabilities capabilities() const
Definition qgeomap.cpp:176
virtual void prefetchData()
Definition qgeomap.cpp:181
void clearMapItems()
Definition qgeomap.cpp:215
double mapHeight() const
Definition qgeomap.cpp:158
double maximumCenterLatitudeAtZoom(const QGeoCameraData &cameraData) const
Definition qgeomap.cpp:140
void visibleAreaChanged()
QGeoMap(QGeoMapPrivate &dd, QObject *parent=nullptr)
Definition qgeomap.cpp:14
void setViewportSize(const QSize &viewportSize)
Definition qgeomap.cpp:23
virtual QGeoShape visibleRegion() const
Definition qgeomap.cpp:106
QGeoCameraCapabilities cameraCapabilities() const
Definition qgeomap.cpp:170
void cameraDataChanged(const QGeoCameraData &cameraData)
virtual void setCopyrightVisible(bool visible)
Definition qgeomap.cpp:258
virtual bool anchorCoordinateToPoint(const QGeoCoordinate &coordinate, const QPointF &anchorPoint)
Definition qgeomap.cpp:85
virtual void setItemToWindowTransform(const QTransform &itemToWindowTransform)
Definition qgeomap.cpp:223
const QGeoProjection & geoProjection() const
Definition qgeomap.cpp:164
virtual void setAcceptedGestures(bool pan, bool flick, bool pinch, bool rotate, bool tilt)
Definition qgeomap.cpp:249
void removeMapItem(QDeclarativeGeoMapItemBase *item)
Definition qgeomap.cpp:206
ItemTypes supportedMapItemTypes() const
Definition qgeomap.cpp:191
virtual bool handleEvent(QEvent *event)
Definition qgeomap.cpp:68
QGeoMapType activeMapType() const
Definition qgeomap.cpp:128
double mapWidth() const
Definition qgeomap.cpp:152
void addMapItem(QDeclarativeGeoMapItemBase *item)
Definition qgeomap.cpp:197
virtual void clearData()
Definition qgeomap.cpp:186
QRectF visibleArea() const
Definition qgeomap.cpp:238
double minimumCenterLatitudeAtZoom(const QGeoCameraData &cameraData) const
Definition qgeomap.cpp:146
const QGeoCameraData & cameraData() const
Definition qgeomap.cpp:111
int viewportHeight() const
Definition qgeomap.cpp:45
void setCameraCapabilities(const QGeoCameraCapabilities &cameraCapabilities)
Definition qgeomap.cpp:62
int viewportWidth() const
Definition qgeomap.cpp:39
void setVisibleArea(const QRectF &visibleArea)
Definition qgeomap.cpp:229
void activeMapTypeChanged()
double minimumZoom() const
Definition qgeomap.cpp:134
virtual ~QGeoMap()
Definition qgeomap.cpp:19
QGeoCameraCapabilities cameraCapabilities(int mapId=0) const
virtual double minimumCenterLatitudeAtZoom(const QGeoCameraData &cameraData) const =0
virtual ProjectionType projectionType() const =0
virtual QGeoShape visibleRegion() const
virtual double maximumCenterLatitudeAtZoom(const QGeoCameraData &cameraData) const =0
virtual QGeoCoordinate anchorCoordinateToPoint(const QGeoCoordinate &coordinate, const QPointF &anchorPoint) const
\inmodule QtPositioning
\inmodule QtPositioning
Definition qgeoshape.h:17
virtual bool contains(const QPointF &point) const
Returns true if this item contains point, which is in local coordinates; otherwise,...
\inmodule QtCore
Definition qmargins.h:24
\inmodule QtCore
Definition qobject.h:103
\inmodule QtCore\reentrant
Definition qpoint.h:217
\inmodule QtCore\reentrant
Definition qrect.h:484
\inmodule QtCore
Definition qsize.h:25
constexpr int height() const noexcept
Returns the height.
Definition qsize.h:133
constexpr int width() const noexcept
Returns the width.
Definition qsize.h:130
\macro QT_RESTRICTED_CAST_FROM_ASCII
Definition qstring.h:129
The QTransform class specifies 2D transformations of a coordinate system.
Definition qtransform.h:20
QMap< QString, QString > map
[6]
Combined button and popup list for selecting options.
constexpr const T & qBound(const T &min, const T &val, const T &max)
Definition qminmax.h:44
constexpr const T & qMax(const T &a, const T &b)
Definition qminmax.h:42
GLfloat GLfloat GLfloat w
[0]
GLenum GLuint GLintptr GLsizeiptr size
[1]
GLint GLsizei GLsizei GLenum GLenum GLsizei void * data
GLenum type
GLfloat GLfloat GLfloat GLfloat h
struct _cl_event * event
GLuint res
GLdouble GLdouble GLdouble GLdouble q
Definition qopenglext.h:259
GLfloat GLfloat p
[1]
#define QStringLiteral(str)
#define emit
#define Q_UNUSED(x)
double qreal
Definition qtypes.h:187
QGraphicsItem * item
QJSEngine engine
[0]