diff options
author | xylosper <darklin20@gmail.com> | 2019-02-12 11:18:50 +0900 |
---|---|---|
committer | Thiago Marcos P. Santos <tmpsantos@gmail.com> | 2019-02-12 11:08:26 +0200 |
commit | 26af7265c3e995fb5d09fc5f7e13dd73ae4660b3 (patch) | |
tree | 26927d381583a634a660701cbae5a6397cd14cd6 /platform/qt/src/qmapbox.cpp | |
parent | 2deebc0efe58778d42a021b817f31535ca00016d (diff) | |
download | qtlocation-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.cpp | 27 |
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 |