summaryrefslogtreecommitdiff
path: root/src/imports
diff options
context:
space:
mode:
authorPaolo Angelelli <paolo.angelelli@qt.io>2018-04-17 13:43:27 +0200
committerPaolo Angelelli <paolo.angelelli@qt.io>2018-05-04 12:53:07 +0000
commit3c4b3d3666d66584144975a2d2278927392cce8e (patch)
tree062fa95d3a92749995739656c22f957b6865a8d1 /src/imports
parentd5b31c5b61e43546d5e8bc3637acf3f7cc4f14d6 (diff)
downloadqtlocation-3c4b3d3666d66584144975a2d2278927392cce8e.tar.gz
Expose mercatorToCoord and coordToMercator to QML
Handy to manipulate geo-geometries in JS. Change-Id: I9866849a8b94e8fb8a9ebc24a0a2d93f2c4cbaf5 Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
Diffstat (limited to 'src/imports')
-rw-r--r--src/imports/positioning/locationsingleton.cpp28
-rw-r--r--src/imports/positioning/locationsingleton.h4
2 files changed, 32 insertions, 0 deletions
diff --git a/src/imports/positioning/locationsingleton.cpp b/src/imports/positioning/locationsingleton.cpp
index 89b93617..ea70d47f 100644
--- a/src/imports/positioning/locationsingleton.cpp
+++ b/src/imports/positioning/locationsingleton.cpp
@@ -38,6 +38,8 @@
****************************************************************************/
#include "locationsingleton.h"
+#include <QtPositioning/private/qwebmercator_p.h>
+#include <QtPositioning/private/qdoublevector2d_p.h>
static QGeoCoordinate parseCoordinate(const QJSValue &value, bool *ok)
{
@@ -315,3 +317,29 @@ QGeoPolygon LocationSingleton::shapeToPolygon(const QGeoShape &shape) const
{
return QGeoPolygon(shape);
}
+
+/*!
+ \qmlmethod coordinate QtPositioning::mercatorToCoord(point mercator) const
+
+ Converts a mercator coordinate into a latitude-longitude coordinate.
+
+ \sa {coordToMercator}
+ \since 5.12
+*/
+QGeoCoordinate LocationSingleton::mercatorToCoord(const QPointF &mercator) const
+{
+ return QWebMercator::mercatorToCoord(QDoubleVector2D(mercator.x(), mercator.y()));
+}
+
+/*!
+ \qmlmethod point QtPositioning::coordToMercator(coordinate coord) const
+
+ Converts a coordinate into a mercator coordinate.
+
+ \sa {mercatorToCoord}
+ \since 5.12
+*/
+QPointF LocationSingleton::coordToMercator(const QGeoCoordinate &coord) const
+{
+ return QWebMercator::coordToMercator(coord).toPointF();
+}
diff --git a/src/imports/positioning/locationsingleton.h b/src/imports/positioning/locationsingleton.h
index 6a560fa8..92e03f1b 100644
--- a/src/imports/positioning/locationsingleton.h
+++ b/src/imports/positioning/locationsingleton.h
@@ -50,6 +50,7 @@
#include <QtPositioning/QGeoPolygon>
#include <QtQml/QJSValue>
#include <QVariant>
+#include <QPointF>
class LocationSingleton : public QObject
{
@@ -84,6 +85,9 @@ public:
Q_INVOKABLE QGeoRectangle shapeToRectangle(const QGeoShape &shape) const;
Q_INVOKABLE QGeoPath shapeToPath(const QGeoShape &shape) const;
Q_INVOKABLE QGeoPolygon shapeToPolygon(const QGeoShape &shape) const;
+
+ Q_REVISION(12) Q_INVOKABLE QGeoCoordinate mercatorToCoord(const QPointF &mercator) const;
+ Q_REVISION(12) Q_INVOKABLE QPointF coordToMercator(const QGeoCoordinate &coord) const;
};
#endif // LOCATIONSINGLETON_H