summaryrefslogtreecommitdiff
path: root/src/imports/positioning
diff options
context:
space:
mode:
authorPaolo Angelelli <paolo.angelelli@qt.io>2017-07-11 15:55:27 +0200
committerPaolo Angelelli <paolo.angelelli@qt.io>2017-08-04 11:19:14 +0000
commit92d8e4dc93400250b47f8dbe96ec7e2f748d8d4b (patch)
tree0545f115d23f74be1979ec483a63f19bbc9b1d55 /src/imports/positioning
parent4511bc9b9bc85a0021ce59feab1a28c711dec691 (diff)
downloadqtlocation-92d8e4dc93400250b47f8dbe96ec7e2f748d8d4b.tar.gz
Add QGeoPolygon to QtPositioning
This patch introduces a new QGeoShape, QGeoPolygon, together with helper functions in the location singleton (QtPositioning.*) to create and convert geopolygons from QML. [ChangeLog][QtPositioning][QGeoPolygon] Added QGeoPolygon shape. Change-Id: I111c576d7428f2a953f0459d16c25eea7ab2bd7c Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
Diffstat (limited to 'src/imports/positioning')
-rw-r--r--src/imports/positioning/locationsingleton.cpp43
-rw-r--r--src/imports/positioning/locationsingleton.h5
2 files changed, 48 insertions, 0 deletions
diff --git a/src/imports/positioning/locationsingleton.cpp b/src/imports/positioning/locationsingleton.cpp
index 19b05761..e9b58834 100644
--- a/src/imports/positioning/locationsingleton.cpp
+++ b/src/imports/positioning/locationsingleton.cpp
@@ -234,6 +234,37 @@ QGeoPath LocationSingleton::path(const QJSValue &value, qreal width) const
}
/*!
+ \qmlmethod geopolygon QtPositioning::polygon() const
+
+ Constructs an empty geopolygon.
+
+ \sa {geopolygon}
+ \since 5.10
+*/
+QGeoPath LocationSingleton::polygon() const
+{
+ return QGeoPolygon();
+}
+
+/*!
+ \qmlmethod geopolygon QtPositioning::polygon(list<coordinate> coordinates) const
+
+ Constructs a geopolygon from coordinates.
+
+ \sa {geopolygon}
+ \since 5.10
+*/
+QGeoPath LocationSingleton::polygon(const QVariantList &coordinates) const
+{
+ QList<QGeoCoordinate> internalCoordinates;
+ for (int i = 0; i < coordinates.size(); i++) {
+ if (coordinates.at(i).canConvert<QGeoCoordinate>())
+ internalCoordinates << coordinates.at(i).value<QGeoCoordinate>();
+ }
+ return QGeoPolygon(internalCoordinates);
+}
+
+/*!
\qmlmethod geocircle QtPositioning::shapeToCircle(geoshape shape) const
Converts \a shape to a geocircle.
@@ -272,3 +303,15 @@ QGeoPath LocationSingleton::shapeToPath(const QGeoShape &shape) const
return QGeoPath(shape);
}
+/*!
+ \qmlmethod geopath QtPositioning::shapeToPolygon(geoshape shape) const
+
+ Converts \a shape to a geopolygon.
+
+ \sa {geopolygon}
+ \since 5.10
+*/
+QGeoPolygon LocationSingleton::shapeToPolygon(const QGeoShape &shape) const
+{
+ return QGeoPolygon(shape);
+}
diff --git a/src/imports/positioning/locationsingleton.h b/src/imports/positioning/locationsingleton.h
index 4faf2738..6a560fa8 100644
--- a/src/imports/positioning/locationsingleton.h
+++ b/src/imports/positioning/locationsingleton.h
@@ -47,6 +47,7 @@
#include <QtPositioning/QGeoRectangle>
#include <QtPositioning/QGeoCircle>
#include <QtPositioning/QGeoPath>
+#include <QtPositioning/QGeoPolygon>
#include <QtQml/QJSValue>
#include <QVariant>
@@ -76,9 +77,13 @@ public:
Q_INVOKABLE QGeoPath path() const;
Q_INVOKABLE QGeoPath path(const QJSValue &value, qreal width = 0.0) const;
+ Q_INVOKABLE QGeoPath polygon() const;
+ Q_INVOKABLE QGeoPath polygon(const QVariantList &value) const;
+
Q_INVOKABLE QGeoCircle shapeToCircle(const QGeoShape &shape) const;
Q_INVOKABLE QGeoRectangle shapeToRectangle(const QGeoShape &shape) const;
Q_INVOKABLE QGeoPath shapeToPath(const QGeoShape &shape) const;
+ Q_INVOKABLE QGeoPolygon shapeToPolygon(const QGeoShape &shape) const;
};
#endif // LOCATIONSINGLETON_H