diff options
author | Justin R. Miller <incanus@users.noreply.github.com> | 2015-04-03 09:38:47 -0700 |
---|---|---|
committer | Justin R. Miller <incanus@users.noreply.github.com> | 2015-04-03 09:38:47 -0700 |
commit | 999ebb371e98bb9ee5876cfad336426c5abae7a8 (patch) | |
tree | 65e61fdb6b4fe93408a908d791a10bb864e03305 | |
parent | 841fba352b5aab1ebba01b0de46204621b2f1fcd (diff) | |
parent | c253232473b82c5e3ae2fcb937301581c89bab50 (diff) | |
download | qtlocation-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.mm | 20 | ||||
-rw-r--r-- | src/mbgl/map/map.cpp | 2 |
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() { |