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
locationsingleton.cpp
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
5#include <QtPositioning/private/qwebmercator_p.h>
6#include <QtPositioning/private/qdoublevector2d_p.h>
7#include <QDebug>
8
10
12{
14
15 if (value.isObject()) {
16 if (value.hasProperty(QStringLiteral("latitude")))
17 c.setLatitude(value.property(QStringLiteral("latitude")).toNumber());
18 if (value.hasProperty(QStringLiteral("longitude")))
19 c.setLongitude(value.property(QStringLiteral("longitude")).toNumber());
20 if (value.hasProperty(QStringLiteral("altitude")))
21 c.setAltitude(value.property(QStringLiteral("altitude")).toNumber());
22
23 if (ok)
24 *ok = true;
25 } else if (ok) {
26 *ok = false;
27 }
28
29 return c;
30}
31
32
54
65
74QGeoCoordinate LocationSingleton::coordinate(double latitude, double longitude, double altitude) const
75{
76 return QGeoCoordinate(latitude, longitude, altitude);
77}
78
87{
88 return QGeoShape();
89}
90
102
112 double width, double height) const
113{
114 return QGeoRectangle(center, width, height);
115}
116
126 const QGeoCoordinate &bottomRight) const
127{
128 return QGeoRectangle(topLeft, bottomRight);
129}
130
140{
141 QList<QGeoCoordinate> internalCoordinates;
142 for (const auto &coordinate : coordinates) {
143 if (coordinate.canConvert<QGeoCoordinate>())
144 internalCoordinates << coordinate.value<QGeoCoordinate>();
145 }
146
147 return QGeoRectangle(internalCoordinates);
148}
149
158{
159 return QGeoCircle();
160}
161
168{
169 return QGeoCircle(center, radius);
170}
171
181{
182 return QGeoPath();
183}
184
194{
195 QList<QGeoCoordinate> pathList;
196
197 if (value.isArray()) {
198 quint32 length = value.property(QStringLiteral("length")).toUInt();
199 for (quint32 i = 0; i < length; ++i) {
200 bool ok = false;
201 QGeoCoordinate c = parseCoordinate(value.property(i), &ok);
202
203 if (!ok || !c.isValid()) {
204 pathList.clear(); // aborting
205 break;
206 }
207
208 pathList.append(c);
209 }
210 }
211
212 return QGeoPath(pathList, width);
213}
214
224{
225 return QGeoPolygon();
226}
227
237{
238 QList<QGeoCoordinate> internalCoordinates;
239 for (const auto &coordinate : coordinates) {
240 if (coordinate.canConvert<QGeoCoordinate>())
241 internalCoordinates << coordinate.value<QGeoCoordinate>();
242 }
243
244 return QGeoPolygon(internalCoordinates);
245}
246
256{
257 QList<QGeoCoordinate> internalCoordinates;
258 for (const auto &coordinate : perimeter) {
259 if (coordinate.canConvert<QGeoCoordinate>())
260 internalCoordinates << coordinate.value<QGeoCoordinate>();
261 }
262 QGeoPolygon poly(internalCoordinates);
263
264 for (const auto &h : holes) {
265 if (h.metaType().id() == QMetaType::QVariantList) {
266 QList<QGeoCoordinate> hole;
267 const QVariantList &holeData = h.toList();
268 for (const auto &coord : holeData) {
269 if (coord.canConvert<QGeoCoordinate>())
270 hole << coord.value<QGeoCoordinate>();
271 }
272 if (!hole.isEmpty())
273 poly.addHole(hole);
274 }
275 }
276
277 return poly;
278}
279
289{
290 return QGeoCircle(shape);
291}
292
305
315{
316 return QGeoPath(shape);
317}
318
331
340QGeoCoordinate LocationSingleton::mercatorToCoord(const QPointF &mercator) const
341{
342 return QWebMercator::mercatorToCoord(QDoubleVector2D(mercator.x(), mercator.y()));
343}
344
352QPointF LocationSingleton::coordToMercator(const QGeoCoordinate &coord) const
353{
354 return QWebMercator::coordToMercator(coord).toPointF();
355}
356
358
359#include "moc_locationsingleton_p.cpp"
Q_INVOKABLE QGeoCircle shapeToCircle(const QGeoShape &shape) const
\qmlmethod geocircle QtPositioning::shapeToCircle(geoshape shape) const
Q_INVOKABLE QGeoRectangle rectangle() const
\qmlmethod georectangle QtPositioning::rectangle() const
Q_INVOKABLE QGeoPolygon shapeToPolygon(const QGeoShape &shape) const
\qmlmethod geopolygon QtPositioning::shapeToPolygon(geoshape shape) const
Q_INVOKABLE QGeoPath path() const
\qmlmethod geopath QtPositioning::path() const
Q_INVOKABLE QGeoShape shape() const
\qmlmethod geoshape QtPositioning::shape() const
LocationSingleton(QObject *parent=0)
\qmltype QtPositioning \inqmlmodule QtPositioning
Q_INVOKABLE QGeoPath shapeToPath(const QGeoShape &shape) const
\qmlmethod geopath QtPositioning::shapeToPath(geoshape shape) const
Q_INVOKABLE QGeoCoordinate coordinate() const
\qmlmethod coordinate QtPositioning::coordinate()
Q_INVOKABLE QGeoCircle circle() const
\qmlmethod geocircle QtPositioning::circle() const
Q_INVOKABLE QGeoPolygon polygon() const
\qmlmethod geopolygon QtPositioning::polygon() const
Q_INVOKABLE QGeoRectangle shapeToRectangle(const QGeoShape &shape) const
\qmlmethod georectangle QtPositioning::shapeToRectangle(geoshape shape) const
\inmodule QtPositioning
Definition qgeocircle.h:15
\inmodule QtPositioning
\inmodule QtPositioning
Definition qgeopath.h:16
\inmodule QtPositioning
Definition qgeopolygon.h:16
\inmodule QtPositioning
\inmodule QtPositioning
Definition qgeoshape.h:17
The QJSValue class acts as a container for Qt/JavaScript data types.
Definition qjsvalue.h:31
QList< T > toList() const noexcept
Definition qlist.h:723
\inmodule QtCore
Definition qobject.h:103
\inmodule QtCore\reentrant
Definition qpoint.h:217
static QDoubleVector2D coordToMercator(const QGeoCoordinate &coord)
static QGeoCoordinate mercatorToCoord(const QDoubleVector2D &mercator)
QT_BEGIN_NAMESPACE QGeoCoordinate parseCoordinate(const QJsonArray &coordinateArray)
static QT_BEGIN_NAMESPACE QGeoCoordinate parseCoordinate(const QJSValue &value, bool *ok)
Combined button and popup list for selecting options.
EGLOutputLayerEXT EGLint EGLAttrib value
[5]
GLint GLsizei GLsizei height
GLenum GLuint GLenum GLsizei length
GLint GLsizei width
GLfloat GLfloat GLfloat GLfloat h
const GLubyte * c
GLuint coord
#define QStringLiteral(str)
unsigned int quint32
Definition qtypes.h:50
double qreal
Definition qtypes.h:187