From eaa5af2c7aaa7714be8aeecfbf20c3bae855f25d Mon Sep 17 00:00:00 2001 From: mike-000 <49240900+mike-000@users.noreply.github.com> Date: Sun, 29 Sep 2019 12:00:08 +0100 Subject: [PATCH] Fix for #10054 Ensure zoom level is not less than minimum integer zoom level for extent --- src/ol/resolutionconstraint.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/ol/resolutionconstraint.js b/src/ol/resolutionconstraint.js index 72594e9730..0134bde876 100644 --- a/src/ol/resolutionconstraint.js +++ b/src/ol/resolutionconstraint.js @@ -127,10 +127,14 @@ export function createSnapToPower(power, maxResolution, opt_minResolution, opt_s return getSmoothClampedResolution(resolution, cappedMaxRes, minResolution); } - const offset = -direction * (0.5 - 1e-9) + 0.5; + const tolerance = 1e-9; + const minZoomLevel = Math.ceil( + Math.log(maxResolution / cappedMaxRes) / Math.log(power) - tolerance); + const offset = -direction * (0.5 - tolerance) + 0.5; const capped = Math.min(cappedMaxRes, resolution); - const zoomLevel = Math.floor( + const cappedZoomLevel = Math.floor( Math.log(maxResolution / capped) / Math.log(power) + offset); + const zoomLevel = Math.max(minZoomLevel, cappedZoomLevel); const newResolution = maxResolution / Math.pow(power, zoomLevel); return clamp(newResolution, minResolution, cappedMaxRes); } else {