Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Toggle main menu visibility
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
// Qt-Security score:significant reason:default
4
5
#
include
"qgeomap_p.h"
6
#
include
"qgeomap_p_p.h"
7
#
include
"qgeocameracapabilities_p.h"
8
#
include
"qgeomappingmanagerengine_p.h"
9
#
include
"qdeclarativegeomapitembase_p.h"
10
#
include
<
QDebug
>
11
#
include
<
QRectF
>
12
13
QT_BEGIN_NAMESPACE
14
15
QGeoMap::QGeoMap(QGeoMapPrivate &dd, QObject *parent)
16
: QObject(dd,parent)
17
{
18
}
19
20
QGeoMap::~QGeoMap()
21
{
22
}
23
24
void
QGeoMap::setViewportSize(
const
QSize& size)
25
{
26
Q_D(QGeoMap);
27
if
(size == d->m_viewportSize)
28
return
;
29
d->m_viewportSize = size;
30
d->m_geoProjection->setViewportSize(size);
31
d->changeViewportSize(size);
32
}
33
34
QSize QGeoMap::viewportSize()
const
35
{
36
Q_D(
const
QGeoMap);
37
return
d->m_viewportSize;
38
}
39
40
int
QGeoMap::viewportWidth()
const
41
{
42
Q_D(
const
QGeoMap);
43
return
d->m_viewportSize.width();
44
}
45
46
int
QGeoMap::viewportHeight()
const
47
{
48
Q_D(
const
QGeoMap);
49
return
d->m_viewportSize.height();
50
}
51
52
void
QGeoMap::setCameraData(
const
QGeoCameraData &cameraData)
53
{
54
Q_D(QGeoMap);
55
if
(cameraData == d->m_cameraData)
56
return
;
57
d->m_cameraData = cameraData;
58
d->m_geoProjection->setCameraData(cameraData,
false
);
59
d->changeCameraData(cameraData);
60
emit cameraDataChanged(d->m_cameraData);
61
}
62
63
void
QGeoMap::setCameraCapabilities(
const
QGeoCameraCapabilities &cameraCapabilities)
64
{
65
Q_D(QGeoMap);
66
d->setCameraCapabilities(cameraCapabilities);
67
}
68
69
bool
QGeoMap::handleEvent(QEvent *event)
70
{
71
Q_UNUSED(event);
72
return
false
;
73
}
74
75
bool
QGeoMap::setBearing(qreal bearing,
const
QGeoCoordinate &coordinate)
//FIXME visibleArea
76
{
77
Q_D(QGeoMap);
78
bool
res = d->m_geoProjection->setBearing(bearing, coordinate);
79
if
(!res)
80
return
false
;
81
82
setCameraData(geoProjection().cameraData());
83
return
true
;
84
}
85
86
bool
QGeoMap::anchorCoordinateToPoint(
const
QGeoCoordinate &coordinate,
const
QPointF &anchorPoint)
87
{
88
Q_D(QGeoMap);
89
QGeoCoordinate newCenter = geoProjection().anchorCoordinateToPoint(coordinate, anchorPoint);
90
newCenter.setLatitude(qBound(d->m_minimumViewportLatitude, newCenter.latitude(), d->m_maximumViewportLatitude));
91
QGeoCameraData data = cameraData();
92
if
(data.center() != newCenter) {
93
data.setCenter(newCenter);
94
setCameraData(data);
95
return
true
;
96
}
97
return
false
;
98
}
99
100
bool
QGeoMap::fitViewportToGeoRectangle(
const
QGeoRectangle &rectangle,
const
QMargins &borders)
101
{
102
Q_UNUSED(rectangle);
103
Q_UNUSED(borders);
104
return
false
;
105
}
106
107
QGeoShape QGeoMap::visibleRegion()
const
108
{
109
return
geoProjection().visibleRegion();
110
}
111
112
const
QGeoCameraData &QGeoMap::cameraData()
const
113
{
114
Q_D(
const
QGeoMap);
115
return
d->m_cameraData;
116
}
117
118
void
QGeoMap::setActiveMapType(
const
QGeoMapType &type)
119
{
120
Q_D(QGeoMap);
121
if
(type == d->m_activeMapType)
122
return
;
123
d->m_activeMapType = type;
124
d->setCameraCapabilities(d->m_engine->cameraCapabilities(type.mapId()));
// emits
125
d->changeActiveMapType(type);
126
emit activeMapTypeChanged();
127
}
128
129
QGeoMapType QGeoMap::activeMapType()
const
130
{
131
Q_D(
const
QGeoMap);
132
return
d->m_activeMapType;
133
}
134
135
double
QGeoMap::minimumZoom()
const
136
{
137
Q_D(
const
QGeoMap);
138
return
d->m_geoProjection->minimumZoom();
139
}
140
141
double
QGeoMap::maximumCenterLatitudeAtZoom(
const
QGeoCameraData &cameraData)
const
142
{
143
Q_D(
const
QGeoMap);
144
return
d->maximumCenterLatitudeAtZoom(cameraData);
145
}
146
147
double
QGeoMap::minimumCenterLatitudeAtZoom(
const
QGeoCameraData &cameraData)
const
148
{
149
Q_D(
const
QGeoMap);
150
return
d->minimumCenterLatitudeAtZoom(cameraData);
151
}
152
153
double
QGeoMap::mapWidth()
const
154
{
155
Q_D(
const
QGeoMap);
156
return
d->mapWidth();
157
}
158
159
double
QGeoMap::mapHeight()
const
160
{
161
Q_D(
const
QGeoMap);
162
return
d->mapHeight();
163
}
164
165
const
QGeoProjection &QGeoMap::geoProjection()
const
166
{
167
Q_D(
const
QGeoMap);
168
return
*(d->m_geoProjection);
169
}
170
171
QGeoCameraCapabilities QGeoMap::cameraCapabilities()
const
172
{
173
Q_D(
const
QGeoMap);
174
return
d->m_cameraCapabilities;
175
}
176
177
QGeoMap::Capabilities QGeoMap::capabilities()
const
178
{
179
return
Capabilities(QGeoMap::SupportsNothing);
180
}
181
182
void
QGeoMap::prefetchData()
183
{
184
185
}
186
187
void
QGeoMap::clearData()
188
{
189
190
}
191
192
QGeoMap::ItemTypes QGeoMap::supportedMapItemTypes()
const
193
{
194
Q_D(
const
QGeoMap);
195
return
d->supportedMapItemTypes();
196
}
197
198
void
QGeoMap::addMapItem(QDeclarativeGeoMapItemBase *item)
199
{
200
Q_D(QGeoMap);
201
if
(item && !d->m_mapItems.contains(item) && d->supportedMapItemTypes() & item->itemType()) {
202
d->m_mapItems.append(item);
203
d->addMapItem(item);
204
}
205
}
206
207
void
QGeoMap::removeMapItem(QDeclarativeGeoMapItemBase *item)
208
{
209
Q_D(QGeoMap);
210
if
(item && d->m_mapItems.contains(item)) {
211
d->removeMapItem(item);
212
d->m_mapItems.removeOne(item);
213
}
214
}
215
216
void
QGeoMap::clearMapItems()
217
{
218
Q_D(QGeoMap);
219
for
(QDeclarativeGeoMapItemBase *p : d->m_mapItems)
220
d->removeMapItem(p);
221
d->m_mapItems.clear();
222
}
223
224
void
QGeoMap::setItemToWindowTransform(
const
QTransform &itemToWindowTransform)
225
{
226
Q_D(QGeoMap);
227
d->m_geoProjection->setItemToWindowTransform(itemToWindowTransform);
228
}
229
230
void
QGeoMap::setVisibleArea(
const
QRectF &visibleArea)
231
{
232
Q_D(QGeoMap);
233
const
QRectF &va = d->visibleArea();
234
d->setVisibleArea(visibleArea);
235
if
(va != d->visibleArea())
236
emit visibleAreaChanged();
237
}
238
239
QRectF QGeoMap::visibleArea()
const
240
{
241
Q_D(
const
QGeoMap);
242
return
d->visibleArea();
243
}
244
245
QString QGeoMap::copyrightsStyleSheet()
const
246
{
247
return
QStringLiteral(
"#copyright-root { background: rgba(255, 255, 255, 128) }"
);
248
}
249
250
void
QGeoMap::setAcceptedGestures(
bool
pan,
bool
flick,
bool
pinch,
bool
rotate,
bool
tilt)
251
{
252
Q_UNUSED(pan);
253
Q_UNUSED(flick);
254
Q_UNUSED(pinch);
255
Q_UNUSED(rotate);
256
Q_UNUSED(tilt);
257
}
258
259
void
QGeoMap::setCopyrightVisible(
bool
visible)
260
{
261
Q_D(QGeoMap);
262
if
(d->m_copyrightVisible == visible)
263
return
;
264
265
d->m_copyrightVisible = visible;
266
}
267
268
QGeoMapPrivate::QGeoMapPrivate(QGeoMappingManagerEngine *engine, QGeoProjection *geoProjection)
269
: QObjectPrivate(),
270
m_geoProjection(geoProjection),
271
m_engine(engine)
272
{
273
// Setting the default camera caps without emitting anything
274
if
(engine)
275
m_cameraCapabilities = m_engine->cameraCapabilities(m_activeMapType.mapId());
276
}
277
278
QGeoMapPrivate::~QGeoMapPrivate()
279
{
280
if
(m_geoProjection)
281
delete
m_geoProjection;
282
}
283
284
void
QGeoMapPrivate::setCameraCapabilities(
const
QGeoCameraCapabilities &cameraCapabilities)
285
{
286
Q_Q(QGeoMap);
287
if
(m_cameraCapabilities == cameraCapabilities)
288
return
;
289
QGeoCameraCapabilities oldCaps = m_cameraCapabilities;
290
m_cameraCapabilities = cameraCapabilities;
291
emit q->cameraCapabilitiesChanged(oldCaps);
292
}
293
294
const
QGeoCameraCapabilities &QGeoMapPrivate::cameraCapabilities()
const
295
{
296
return
m_cameraCapabilities;
297
}
298
299
const
QGeoMapPrivate *QGeoMapPrivate::get(
const
QGeoMap &map)
300
{
301
return
map.d_func();
302
}
303
304
QGeoMap::ItemTypes QGeoMapPrivate::supportedMapItemTypes()
const
305
{
306
return
QGeoMap::NoItem;
307
}
308
309
void
QGeoMapPrivate::addMapItem(QDeclarativeGeoMapItemBase *item)
310
{
311
Q_UNUSED(item);
312
}
313
314
void
QGeoMapPrivate::removeMapItem(QDeclarativeGeoMapItemBase *item)
315
{
316
Q_UNUSED(item);
317
}
318
319
double
QGeoMapPrivate::mapWidth()
const
320
{
321
if
(m_geoProjection->projectionType() == QGeoProjection::ProjectionWebMercator)
322
return
static_cast
<
const
QGeoProjectionWebMercator *>(m_geoProjection)->mapWidth();
323
return
0;
// override this for maps supporting other projections
324
}
325
326
double
QGeoMapPrivate::mapHeight()
const
327
{
328
if
(m_geoProjection->projectionType() == QGeoProjection::ProjectionWebMercator)
329
return
static_cast
<
const
QGeoProjectionWebMercator *>(m_geoProjection)->mapHeight();
330
return
0;
// override this for maps supporting other projections
331
}
332
333
void
QGeoMapPrivate::setCopyrightVisible(
bool
visible)
334
{
335
m_copyrightVisible = visible;
336
}
337
338
bool
QGeoMapPrivate::copyrightVisible()
const
339
{
340
return
m_copyrightVisible;
341
}
342
343
double
QGeoMapPrivate::maximumCenterLatitudeAtZoom(
const
QGeoCameraData &cameraData)
const
344
{
345
m_maximumViewportLatitude = m_geoProjection->maximumCenterLatitudeAtZoom(cameraData);
346
return
m_maximumViewportLatitude;
347
}
348
349
double
QGeoMapPrivate::minimumCenterLatitudeAtZoom(
const
QGeoCameraData &cameraData)
const
350
{
351
m_minimumViewportLatitude = m_geoProjection->minimumCenterLatitudeAtZoom(cameraData);
352
return
m_minimumViewportLatitude;
353
}
354
355
void
QGeoMapPrivate::setVisibleArea(
const
QRectF &
/*visibleArea*/
)
356
{
357
358
}
359
360
QRectF QGeoMapPrivate::visibleArea()
const
361
{
362
return
QRectF();
363
}
364
365
QRectF QGeoMapPrivate::clampVisibleArea(
const
QRectF &visibleArea)
const
366
{
367
qreal xp = qMin<qreal>(visibleArea.x(), qMax(m_viewportSize.width() - 1, 0));
368
qreal yp = qMin<qreal>(visibleArea.y(), qMax(m_viewportSize.height() - 1, 0));
369
qreal w = qMin<qreal>(visibleArea.width(), qMax<qreal>(m_viewportSize.width() - xp, 0));
370
qreal h = qMin<qreal>(visibleArea.height(), qMax<qreal>(m_viewportSize.height() - yp, 0));
371
return
QRectF(xp, yp, w, h);
372
}
373
374
QT_END_NAMESPACE
QT_BEGIN_NAMESPACE
Combined button and popup list for selecting options.
Definition
qsequentialanimationgroup.cpp:47
qtlocation
src
location
maps
qgeomap.cpp
Generated on
for Qt by
1.18.0