From 16442341799dceea63e7cd6c3f77331f68f642e7 Mon Sep 17 00:00:00 2001 From: Ansis Brammanis Date: Tue, 26 Jan 2016 18:50:37 -0800 Subject: [core] add setMaxZoom, setMinZoom also change the default maxZoom to 20 to match -js. --- include/mbgl/map/map.hpp | 2 ++ src/mbgl/map/map.cpp | 14 ++++++++++++++ src/mbgl/map/transform.cpp | 8 ++++++++ src/mbgl/map/transform.hpp | 3 +++ src/mbgl/map/transform_state.cpp | 8 ++++++++ src/mbgl/map/transform_state.hpp | 4 +++- 6 files changed, 38 insertions(+), 1 deletion(-) diff --git a/include/mbgl/map/map.hpp b/include/mbgl/map/map.hpp index 1112ac6c93..5b89bf4a91 100644 --- a/include/mbgl/map/map.hpp +++ b/include/mbgl/map/map.hpp @@ -116,7 +116,9 @@ public: CameraOptions cameraForLatLngBounds(const LatLngBounds&, const EdgeInsets&); CameraOptions cameraForLatLngs(const std::vector&, const EdgeInsets&); void resetZoom(); + void setMinZoom(const double minZoom); double getMinZoom() const; + void setMaxZoom(const double maxZoom); double getMaxZoom() const; // Rotation diff --git a/src/mbgl/map/map.cpp b/src/mbgl/map/map.cpp index a45a9ffaff..e013619cfa 100644 --- a/src/mbgl/map/map.cpp +++ b/src/mbgl/map/map.cpp @@ -303,10 +303,24 @@ void Map::resetZoom() { setZoom(0); } +void Map::setMinZoom(const double minZoom) { + transform->setMinZoom(minZoom); + if (getZoom() < minZoom) { + setZoom(minZoom); + } +} + double Map::getMinZoom() const { return transform->getState().getMinZoom(); } +void Map::setMaxZoom(const double maxZoom) { + transform->setMaxZoom(maxZoom); + if (getZoom() > maxZoom) { + setZoom(maxZoom); + } +} + double Map::getMaxZoom() const { return transform->getState().getMaxZoom(); } diff --git a/src/mbgl/map/transform.cpp b/src/mbgl/map/transform.cpp index 208f9a089a..b8c816ddc2 100644 --- a/src/mbgl/map/transform.cpp +++ b/src/mbgl/map/transform.cpp @@ -465,6 +465,14 @@ void Transform::setScale(double scale, const EdgeInsets& padding, const Duration setScale(scale, center, duration); } +void Transform::setMinZoom(const double minZoom) { + state.setMinZoom(minZoom); +} + +void Transform::setMaxZoom(const double maxZoom) { + state.setMaxZoom(maxZoom); +} + #pragma mark - Angle void Transform::rotateBy(const PrecisionPoint& first, const PrecisionPoint& second, const Duration& duration) { diff --git a/src/mbgl/map/transform.hpp b/src/mbgl/map/transform.hpp index 8c9ea08885..806413058d 100644 --- a/src/mbgl/map/transform.hpp +++ b/src/mbgl/map/transform.hpp @@ -79,6 +79,9 @@ public: /** Returns the scale factor. */ double getScale() const; + void setMinZoom(const double minZoom); + void setMaxZoom(const double maxZoom); + // Angle void rotateBy(const PrecisionPoint& first, const PrecisionPoint& second, const Duration& = Duration::zero()); diff --git a/src/mbgl/map/transform_state.cpp b/src/mbgl/map/transform_state.cpp index c9c904dab9..79f9a19b08 100644 --- a/src/mbgl/map/transform_state.cpp +++ b/src/mbgl/map/transform_state.cpp @@ -168,6 +168,10 @@ double TransformState::getScale() const { return scale; } +void TransformState::setMinZoom(const double minZoom) { + min_scale = zoomScale(minZoom); +} + double TransformState::getMinZoom() const { double test_scale = min_scale; double unused_x = x; @@ -177,6 +181,10 @@ double TransformState::getMinZoom() const { return scaleZoom(test_scale); } +void TransformState::setMaxZoom(const double maxZoom) { + max_scale = zoomScale(maxZoom); +} + double TransformState::getMaxZoom() const { return scaleZoom(max_scale); } diff --git a/src/mbgl/map/transform_state.hpp b/src/mbgl/map/transform_state.hpp index 2911d8624a..9d97bd9d6b 100644 --- a/src/mbgl/map/transform_state.hpp +++ b/src/mbgl/map/transform_state.hpp @@ -52,7 +52,9 @@ public: int32_t getIntegerZoom() const; double getZoomFraction() const; double getScale() const; + void setMinZoom(const double minZoom); double getMinZoom() const; + void setMaxZoom(const double maxZoom); double getMaxZoom() const; // Rotation @@ -83,7 +85,7 @@ private: // Limit the amount of zooming possible on the map. double min_scale = std::pow(2, 0); - double max_scale = std::pow(2, 18); + double max_scale = std::pow(2, 20); NorthOrientation orientation = NorthOrientation::Upwards; -- cgit v1.2.1