diff options
-rw-r--r-- | include/mbgl/util/constants.hpp | 3 | ||||
-rw-r--r-- | src/mbgl/map/transform_state.hpp | 2 | ||||
-rw-r--r-- | src/mbgl/util/tile_cover.cpp | 3 |
3 files changed, 5 insertions, 3 deletions
diff --git a/include/mbgl/util/constants.hpp b/include/mbgl/util/constants.hpp index ffdc4b2b30..1c703b45e2 100644 --- a/include/mbgl/util/constants.hpp +++ b/include/mbgl/util/constants.hpp @@ -35,11 +35,12 @@ constexpr double LONGITUDE_MAX = 180; constexpr double DEGREES_MAX = 360; constexpr double PITCH_MIN = 0.0; constexpr double PITCH_MAX = M_PI / 3; -constexpr double MIN_ZOOM = 0.0; +constexpr double MIN_ZOOM = -2; constexpr double MAX_ZOOM = 25.5; constexpr float MIN_ZOOM_F = MIN_ZOOM; constexpr float MAX_ZOOM_F = MAX_ZOOM; constexpr uint8_t DEFAULT_MAX_ZOOM = 22; +constexpr int8_t DEFAULT_MIN_ZOOM = -2; // ONE_EM constant used to go between "em" units used in style spec and "points" used internally for layout. constexpr float ONE_EM = 24.0f; diff --git a/src/mbgl/map/transform_state.hpp b/src/mbgl/map/transform_state.hpp index edc7f3b9cf..d1f6d24b0c 100644 --- a/src/mbgl/map/transform_state.hpp +++ b/src/mbgl/map/transform_state.hpp @@ -221,7 +221,7 @@ private: LatLngBounds bounds; // Limit the amount of zooming possible on the map. - double min_scale = std::pow(2, 0); + double min_scale = std::pow(2, util::DEFAULT_MIN_ZOOM); double max_scale = std::pow(2, util::DEFAULT_MAX_ZOOM); NorthOrientation orientation = NorthOrientation::Upwards; diff --git a/src/mbgl/util/tile_cover.cpp b/src/mbgl/util/tile_cover.cpp index 9e2451e1af..c7ef73c4ba 100644 --- a/src/mbgl/util/tile_cover.cpp +++ b/src/mbgl/util/tile_cover.cpp @@ -131,7 +131,8 @@ std::vector<UnwrappedTileID> tileCover(const Point<double>& tl, } // namespace int32_t coveringZoomLevel(double zoom, style::SourceType type, uint16_t size) { - zoom += util::log2(util::tileSize / size); + // At negative zoom levels load tiles from z0 because negative tile zoom levels don't exist. + zoom = ::fmax(0.0, zoom + util::log2(util::tileSize / size)); if (type == style::SourceType::Raster || type == style::SourceType::Video) { return ::round(zoom); } else { |