summaryrefslogtreecommitdiff
path: root/platform/qt/src/qmapbox.cpp
diff options
context:
space:
mode:
authorxylosper <darklin20@gmail.com>2019-02-12 11:18:50 +0900
committerThiago Marcos P. Santos <tmpsantos@gmail.com>2019-02-12 11:08:26 +0200
commit26af7265c3e995fb5d09fc5f7e13dd73ae4660b3 (patch)
tree26927d381583a634a660701cbae5a6397cd14cd6 /platform/qt/src/qmapbox.cpp
parent2deebc0efe58778d42a021b817f31535ca00016d (diff)
downloadqtlocation-mapboxgl-26af7265c3e995fb5d09fc5f7e13dd73ae4660b3.tar.gz
[qt] add global projection functions
There are 3 methods in QMapboxGL which can be static method. QMapboxGL::metersPerPixelAtLatitude QMapboxGL::projectedMetersForCoordinate QMapboxGL::coordinateForProjectedMeters Add these functions into QMapbox namespace as global functions. The methods in QMapboxGL are kept for backward compatibility.
Diffstat (limited to 'platform/qt/src/qmapbox.cpp')
-rw-r--r--platform/qt/src/qmapbox.cpp27
1 files changed, 27 insertions, 0 deletions
diff --git a/platform/qt/src/qmapbox.cpp b/platform/qt/src/qmapbox.cpp
index d0f80818c7..34cb5e86bc 100644
--- a/platform/qt/src/qmapbox.cpp
+++ b/platform/qt/src/qmapbox.cpp
@@ -4,6 +4,7 @@
#include <mbgl/util/default_styles.hpp>
#include <mbgl/util/geometry.hpp>
#include <mbgl/util/traits.hpp>
+#include <mbgl/util/projection.hpp>
#include <QOpenGLContext>
@@ -222,4 +223,30 @@ QVector<QPair<QString, QString> >& defaultStyles()
return styles;
}
+/*!
+ Returns the amount of meters per pixel from a given \a latitude and \a zoom.
+*/
+double metersPerPixelAtLatitude(double latitude, double zoom)
+{
+ return mbgl::Projection::getMetersPerPixelAtLatitude(latitude, zoom);
+}
+
+/*!
+ Return the projected meters for a given \a coordinate object.
+*/
+ProjectedMeters projectedMetersForCoordinate(const Coordinate &coordinate)
+{
+ auto projectedMeters = mbgl::Projection::projectedMetersForLatLng(mbgl::LatLng { coordinate.first, coordinate.second });
+ return QMapbox::ProjectedMeters(projectedMeters.northing(), projectedMeters.easting());
+}
+
+/*!
+ Returns the coordinate for a given \a projectedMeters object.
+*/
+Coordinate coordinateForProjectedMeters(const ProjectedMeters &projectedMeters)
+{
+ auto latLng = mbgl::Projection::latLngForProjectedMeters(mbgl::ProjectedMeters { projectedMeters.first, projectedMeters.second });
+ return QMapbox::Coordinate(latLng.latitude(), latLng.longitude());
+}
+
} // namespace QMapbox