summaryrefslogtreecommitdiff
path: root/src/mbgl/map/transform_state.cpp
diff options
context:
space:
mode:
authorBruno de Oliveira Abinader <bruno@mapbox.com>2017-06-01 00:58:03 +0300
committerBruno de Oliveira Abinader <bruno@mapbox.com>2017-06-01 17:04:09 +0300
commit99cfbacdfba642e042132660b0201db0984b6d22 (patch)
tree65a2606947ab083550f46db93d800a982829dbcf /src/mbgl/map/transform_state.cpp
parent893584517182c270b7238a2fddb616a8a0e657d6 (diff)
downloadqtlocation-mapboxgl-99cfbacdfba642e042132660b0201db0984b6d22.tar.gz
[core] Make TransformState LatLngBounds optional
Diffstat (limited to 'src/mbgl/map/transform_state.cpp')
-rw-r--r--src/mbgl/map/transform_state.cpp17
1 files changed, 11 insertions, 6 deletions
diff --git a/src/mbgl/map/transform_state.cpp b/src/mbgl/map/transform_state.cpp
index 8c3c70feec..bbf7e22b31 100644
--- a/src/mbgl/map/transform_state.cpp
+++ b/src/mbgl/map/transform_state.cpp
@@ -142,12 +142,14 @@ double TransformState::getZoomFraction() const {
#pragma mark - Bounds
-void TransformState::setLatLngBounds(const LatLngBounds& bounds_) {
- bounds = bounds_;
- setLatLngZoom(getLatLng(LatLng::Unwrapped), getZoom());
+void TransformState::setLatLngBounds(optional<LatLngBounds> bounds_) {
+ if (bounds_ != bounds) {
+ bounds = bounds_;
+ setLatLngZoom(getLatLng(LatLng::Unwrapped), getZoom());
+ }
}
-LatLngBounds TransformState::getLatLngBounds() const {
+optional<LatLngBounds> TransformState::getLatLngBounds() const {
return bounds;
}
@@ -350,8 +352,11 @@ void TransformState::moveLatLng(const LatLng& latLng, const ScreenCoordinate& an
setLatLngZoom(Projection::unproject(centerCoord + latLngCoord - anchorCoord, scale), getZoom());
}
-void TransformState::setLatLngZoom(const LatLng &latLng, double zoom) {
- const LatLng constrained = bounds.constrain(latLng);
+void TransformState::setLatLngZoom(const LatLng& latLng, double zoom) {
+ LatLng constrained = latLng;
+ if (bounds) {
+ constrained = bounds->constrain(latLng);
+ }
double newScale = zoomScale(zoom);
const double newWorldSize = newScale * util::tileSize;