summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustin R. Miller <incanus@users.noreply.github.com>2015-04-03 09:38:47 -0700
committerJustin R. Miller <incanus@users.noreply.github.com>2015-04-03 09:38:47 -0700
commit999ebb371e98bb9ee5876cfad336426c5abae7a8 (patch)
tree65e61fdb6b4fe93408a908d791a10bb864e03305
parent841fba352b5aab1ebba01b0de46204621b2f1fcd (diff)
parentc253232473b82c5e3ae2fcb937301581c89bab50 (diff)
downloadqtlocation-mapboxgl-999ebb371e98bb9ee5876cfad336426c5abae7a8.tar.gz
Merge pull request #1194 from mapbox/fix-lat-lon-zoom-order
fixes #1181: fix lat/lng & zoom ordering problems
-rw-r--r--platform/ios/MGLMapView.mm20
-rw-r--r--src/mbgl/map/map.cpp2
2 files changed, 16 insertions, 6 deletions
diff --git a/platform/ios/MGLMapView.mm b/platform/ios/MGLMapView.mm
index 962e3a1126..d486949175 100644
--- a/platform/ios/MGLMapView.mm
+++ b/platform/ios/MGLMapView.mm
@@ -46,8 +46,9 @@ NSString *const MGLDefaultStyleName = @"Emerald";
NSString *const MGLStyleVersion = @"v7";
NSString *const MGLDefaultStyleMarkerSymbolName = @"default_marker";
-NSTimeInterval const MGLAnimationDuration = 0.3;
+const NSTimeInterval MGLAnimationDuration = 0.3;
const CGSize MGLAnnotationUpdateViewportOutset = {150, 150};
+const CGFloat MGLMinimumZoom = 3;
NSString *const MGLAnnotationIDKey = @"MGLAnnotationIDKey";
@@ -1129,7 +1130,9 @@ mbgl::DefaultFileSource *mbglFileSource = nullptr;
{
CGFloat duration = (animated ? MGLAnimationDuration : 0);
- mbglMap->setLatLng(coordinateToLatLng(coordinate), secondsAsDuration(duration));
+ mbglMap->setLatLngZoom(coordinateToLatLng(coordinate),
+ fmaxf(mbglMap->getZoom(), self.currentMinimumZoom),
+ secondsAsDuration(duration));
[self notifyMapChange:@(animated ? mbgl::MapChangeRegionDidChangeAnimated : mbgl::MapChangeRegionDidChange)];
}
@@ -1168,7 +1171,9 @@ mbgl::DefaultFileSource *mbglFileSource = nullptr;
CGFloat duration = (animated ? MGLAnimationDuration : 0);
- mbglMap->setZoom(zoomLevel, secondsAsDuration(duration));
+ mbglMap->setLatLngZoom(mbglMap->getLatLng(),
+ fmaxf(zoomLevel, self.currentMinimumZoom),
+ secondsAsDuration(duration));
[self unrotateIfNeededAnimated:animated];
@@ -1738,7 +1743,7 @@ CLLocationCoordinate2D latLngToCoordinate(mbgl::LatLng latLng)
{
self.showsUserLocation = YES;
- if (self.zoomLevel < 3) [self setZoomLevel:3 animated:YES];
+ if (self.zoomLevel < self.currentMinimumZoom) [self setZoomLevel:self.currentMinimumZoom animated:YES];
if (self.userLocationAnnotationView)
{
@@ -1947,9 +1952,14 @@ CLLocationCoordinate2D latLngToCoordinate(mbgl::LatLng latLng)
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delay * NSEC_PER_SEC)), dispatch_get_main_queue(), animations);
}
+- (CGFloat)currentMinimumZoom
+{
+ return fmaxf(mbglMap->getMinZoom(), MGLMinimumZoom);
+}
+
- (BOOL)isRotationAllowed
{
- return (self.zoomLevel > 3);
+ return (self.zoomLevel >= self.currentMinimumZoom);
}
// correct rotations to north as needed
diff --git a/src/mbgl/map/map.cpp b/src/mbgl/map/map.cpp
index 509986a6d2..09e6b08a1e 100644
--- a/src/mbgl/map/map.cpp
+++ b/src/mbgl/map/map.cpp
@@ -470,7 +470,7 @@ void Map::setLatLng(LatLng latLng, Duration duration) {
}
LatLng Map::getLatLng() const {
- return state.getLatLng();
+ return transform.getLatLng();
}
void Map::resetPosition() {