summaryrefslogtreecommitdiff
path: root/src/map/transform_state.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/map/transform_state.cpp')
-rw-r--r--src/map/transform_state.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/map/transform_state.cpp b/src/map/transform_state.cpp
index 0a858bce6a..afc5b59ef1 100644
--- a/src/map/transform_state.cpp
+++ b/src/map/transform_state.cpp
@@ -3,6 +3,8 @@
using namespace mbgl;
+const double R2D = 180.0 / M_PI;
+
#pragma mark - Matrix
void TransformState::matrixFor(mat4& matrix, const Tile::ID& id) const {
@@ -108,6 +110,15 @@ std::array<float, 2> TransformState::locationCoordinate(float lon, float lat) co
}};
}
+void TransformState::getLonLat(double &lon, double &lat) const {
+ const double s = scale * util::tileSize;
+ const double Bc = s / 360;
+ const double Cc = s / (2 * M_PI);
+
+ lon = -x / Bc;
+ lat = R2D * (2 * std::atan(std::exp(y / Cc)) - 0.5 * M_PI);
+}
+
#pragma mark - Zoom