diff --git a/src/map/Map.js b/src/map/Map.js index 5fa9ead1e..6f66ab845 100644 --- a/src/map/Map.js +++ b/src/map/Map.js @@ -783,9 +783,10 @@ class Map extends Handlerable(Eventable(Renderable(Class))) { /** * Caculate the zoom level that contains the given extent with the maximum zoom level possible. * @param {Extent} extent - * @return {Number} zoom fit for the extent + * @param {Boolean} isFraction - can return fractional zoom + * @return {Number} zoom fit for scale starting from fromZoom */ - getFitZoom(extent) { + getFitZoom(extent, isFraction) { if (!extent || !(extent instanceof Extent)) { return this._zoomLevel; } @@ -801,7 +802,7 @@ class Map extends Handlerable(Eventable(Renderable(Class))) { scaleY = size['height'] / h; const scale = this.getSpatialReference().getZoomDirection() < 0 ? Math.max(scaleX, scaleY) : Math.min(scaleX, scaleY); - const zoom = this.getZoomForScale(scale); + const zoom = this.getZoomForScale(scale, null, isFraction); return zoom; } diff --git a/test/map/MapSpec.js b/test/map/MapSpec.js index 0e57a072e..4be2dd38d 100644 --- a/test/map/MapSpec.js +++ b/test/map/MapSpec.js @@ -330,6 +330,14 @@ describe('Map.Spec', function () { expect(fitZoom).to.eql(zoom + 3); }); + it('getFitZoom return fractional', function () { + var extent = map.getExtent(); + var zoom = map.getZoom(); + var fitZoom = map.getFitZoom(extent, null, true); + + expect(fitZoom).to.eql(zoom); + }); + it('fit to extent without animation', function () { var extent = new maptalks.Marker(map.getCenter()).getExtent(); var maxZoom = map.getMaxZoom();