diff options
author | Minh Nguyễn <mxn@1ec5.org> | 2016-02-24 09:06:43 -0800 |
---|---|---|
committer | Minh Nguyễn <mxn@1ec5.org> | 2016-02-24 09:06:43 -0800 |
commit | 17f44d7bd99f2c44e45eadc36d671dc29c88c64d (patch) | |
tree | 6b6b534e0d4ca0c06cc9fbfdc17aada2d60870b0 /src/mbgl/map | |
parent | 662edea0202b296874894d6df6817f0993ec24a7 (diff) | |
parent | f74900e7046d31721cc4b3e0c0678e85a989cf12 (diff) | |
download | qtlocation-mapboxgl-17f44d7bd99f2c44e45eadc36d671dc29c88c64d.tar.gz |
Merge branch 'release-ios-v3.1.0'
Diffstat (limited to 'src/mbgl/map')
-rw-r--r-- | src/mbgl/map/map.cpp | 10 | ||||
-rw-r--r-- | src/mbgl/map/transform.cpp | 11 | ||||
-rw-r--r-- | src/mbgl/map/transform.hpp | 4 | ||||
-rw-r--r-- | src/mbgl/map/transform_state.cpp | 12 | ||||
-rw-r--r-- | src/mbgl/map/transform_state.hpp | 3 |
5 files changed, 38 insertions, 2 deletions
diff --git a/src/mbgl/map/map.cpp b/src/mbgl/map/map.cpp index cfbdbafb6e..c3123fb3be 100644 --- a/src/mbgl/map/map.cpp +++ b/src/mbgl/map/map.cpp @@ -395,6 +395,16 @@ NorthOrientation Map::getNorthOrientation() const { return transform->getNorthOrientation(); } +#pragma mark - Constrain mode + +void Map::setConstrainMode(mbgl::ConstrainMode mode) { + transform->setConstrainMode(mode); + update(Update::Repaint); +} + +ConstrainMode Map::getConstrainMode() const { + return transform->getConstrainMode(); +} #pragma mark - Projection diff --git a/src/mbgl/map/transform.cpp b/src/mbgl/map/transform.cpp index b8c816ddc2..0f7af8c9e9 100644 --- a/src/mbgl/map/transform.cpp +++ b/src/mbgl/map/transform.cpp @@ -560,6 +560,17 @@ NorthOrientation Transform::getNorthOrientation() const { return state.getNorthOrientation(); } +#pragma mark - Constrain mode + +void Transform::setConstrainMode(mbgl::ConstrainMode mode) { + state.constrainMode = mode; + state.constrain(state.scale, state.x, state.y); +} + +ConstrainMode Transform::getConstrainMode() const { + return state.getConstrainMode(); +} + #pragma mark - Transition void Transform::startTransition(const CameraOptions& camera, diff --git a/src/mbgl/map/transform.hpp b/src/mbgl/map/transform.hpp index 806413058d..48615421fe 100644 --- a/src/mbgl/map/transform.hpp +++ b/src/mbgl/map/transform.hpp @@ -119,6 +119,10 @@ public: // North Orientation void setNorthOrientation(NorthOrientation); NorthOrientation getNorthOrientation() const; + + // Constrain mode + void setConstrainMode(ConstrainMode); + ConstrainMode getConstrainMode() const; // Transitions bool inTransition() const; diff --git a/src/mbgl/map/transform_state.cpp b/src/mbgl/map/transform_state.cpp index 42fbd9af87..087defabda 100644 --- a/src/mbgl/map/transform_state.cpp +++ b/src/mbgl/map/transform_state.cpp @@ -81,6 +81,12 @@ double TransformState::getNorthOrientationAngle() const { return angleOrientation; } +#pragma mark - Constrain mode + +ConstrainMode TransformState::getConstrainMode() const { + return constrainMode; +} + #pragma mark - Position LatLng TransformState::getLatLng() const { @@ -354,8 +360,10 @@ void TransformState::constrain(double& scale_, double& x_, double& y_) const { x_ = std::max(-max_x, std::min(x_, max_x)); } - double max_y = (scale_ * util::tileSize - (rotatedNorth() ? width : height)) / 2; - y_ = std::max(-max_y, std::min(y_, max_y)); + if (constrainMode != ConstrainMode::None) { + double max_y = (scale_ * util::tileSize - (rotatedNorth() ? width : height)) / 2; + y_ = std::max(-max_y, std::min(y_, max_y)); + } } void TransformState::moveLatLng(const LatLng& latLng, const PrecisionPoint& anchor) { diff --git a/src/mbgl/map/transform_state.hpp b/src/mbgl/map/transform_state.hpp index a276c08868..0fb1f2304b 100644 --- a/src/mbgl/map/transform_state.hpp +++ b/src/mbgl/map/transform_state.hpp @@ -34,6 +34,9 @@ public: // North Orientation NorthOrientation getNorthOrientation() const; double getNorthOrientationAngle() const; + + // Constrain mode + ConstrainMode getConstrainMode() const; // Position LatLng getLatLng() const; |