diff --git a/changelog/upgrade-notes.md b/changelog/upgrade-notes.md index fadc391db7..60bc32d2f6 100644 --- a/changelog/upgrade-notes.md +++ b/changelog/upgrade-notes.md @@ -2,11 +2,9 @@ ### Next release -#### Removed build flags (`@define`) +#### Removal of deprecated methods -The `ol.DEBUG`, `ol.ENABLE_TILE`, `ol.ENABLE_IMAGE`, `ol.ENABLE_VECTOR`, and `ol.ENABLE_VECTOR_TILE` build flags are no longer necessary and have been removed. If you were using these in a `define` array for a custom build, you can remove them. - -If you leave `ol.ENABLE_WEBGL` set to `true` in your build, you should set `ol.DEBUG_WEBGL` to `false` to avoid including debuggable shader sources. +The deprecated `ol.animation` functions and `map.beforeRender()` method have been removed. Use `view.animate()` instead. #### Simplified `ol.View#fit()` API @@ -29,6 +27,13 @@ Advanced use - new API: map.getView().fit(extent, {size: [200, 100], padding 10}); ``` +#### Removed build flags (`@define`) + +The `ol.DEBUG`, `ol.ENABLE_TILE`, `ol.ENABLE_IMAGE`, `ol.ENABLE_VECTOR`, and `ol.ENABLE_VECTOR_TILE` build flags are no longer necessary and have been removed. If you were using these in a `define` array for a custom build, you can remove them. + +If you leave `ol.ENABLE_WEBGL` set to `true` in your build, you should set `ol.DEBUG_WEBGL` to `false` to avoid including debuggable shader sources. + + ### v3.20.0 #### Use `view.animate()` instead of `map.beforeRender()` and `ol.animation` functions diff --git a/src/ol/animation.js b/src/ol/animation.js deleted file mode 100644 index 980d28ee72..0000000000 --- a/src/ol/animation.js +++ /dev/null @@ -1,173 +0,0 @@ -goog.provide('ol.animation'); - -goog.require('ol.ViewHint'); -goog.require('ol.coordinate'); -goog.require('ol.easing'); - - -/** - * Generate an animated transition that will "bounce" the resolution as it - * approaches the final value. - * @param {olx.animation.BounceOptions} options Bounce options. - * @return {ol.PreRenderFunction} Pre-render function. - * @deprecated Use {@link ol.View#animate} instead. - * @api - */ -ol.animation.bounce = function(options) { - var resolution = options.resolution; - var start = options.start ? options.start : Date.now(); - var duration = options.duration !== undefined ? options.duration : 1000; - var easing = options.easing ? - options.easing : ol.easing.upAndDown; - return ( - /** - * @param {ol.Map} map Map. - * @param {?olx.FrameState} frameState Frame state. - * @return {boolean} Run this function in the next frame. - */ - function(map, frameState) { - if (frameState.time < start) { - frameState.animate = true; - frameState.viewHints[ol.ViewHint.ANIMATING] += 1; - return true; - } else if (frameState.time < start + duration) { - var delta = easing((frameState.time - start) / duration); - var deltaResolution = resolution - frameState.viewState.resolution; - frameState.animate = true; - frameState.viewState.resolution += delta * deltaResolution; - frameState.viewHints[ol.ViewHint.ANIMATING] += 1; - return true; - } else { - return false; - } - }); -}; - - -/** - * Generate an animated transition while updating the view center. - * @param {olx.animation.PanOptions} options Pan options. - * @return {ol.PreRenderFunction} Pre-render function. - * @deprecated Use {@link ol.View#animate} instead. - * @api - */ -ol.animation.pan = function(options) { - var source = options.source; - var start = options.start ? options.start : Date.now(); - var sourceX = source[0]; - var sourceY = source[1]; - var duration = options.duration !== undefined ? options.duration : 1000; - var easing = options.easing ? - options.easing : ol.easing.inAndOut; - return ( - /** - * @param {ol.Map} map Map. - * @param {?olx.FrameState} frameState Frame state. - * @return {boolean} Run this function in the next frame. - */ - function(map, frameState) { - if (frameState.time < start) { - frameState.animate = true; - frameState.viewHints[ol.ViewHint.ANIMATING] += 1; - return true; - } else if (frameState.time < start + duration) { - var delta = 1 - easing((frameState.time - start) / duration); - var deltaX = sourceX - frameState.viewState.center[0]; - var deltaY = sourceY - frameState.viewState.center[1]; - frameState.animate = true; - frameState.viewState.center[0] += delta * deltaX; - frameState.viewState.center[1] += delta * deltaY; - frameState.viewHints[ol.ViewHint.ANIMATING] += 1; - return true; - } else { - return false; - } - }); -}; - - -/** - * Generate an animated transition while updating the view rotation. - * @param {olx.animation.RotateOptions} options Rotate options. - * @return {ol.PreRenderFunction} Pre-render function. - * @deprecated Use {@link ol.View#animate} instead. - * @api - */ -ol.animation.rotate = function(options) { - var sourceRotation = options.rotation ? options.rotation : 0; - var start = options.start ? options.start : Date.now(); - var duration = options.duration !== undefined ? options.duration : 1000; - var easing = options.easing ? - options.easing : ol.easing.inAndOut; - var anchor = options.anchor ? - options.anchor : null; - - return ( - /** - * @param {ol.Map} map Map. - * @param {?olx.FrameState} frameState Frame state. - * @return {boolean} Run this function in the next frame. - */ - function(map, frameState) { - if (frameState.time < start) { - frameState.animate = true; - frameState.viewHints[ol.ViewHint.ANIMATING] += 1; - return true; - } else if (frameState.time < start + duration) { - var delta = 1 - easing((frameState.time - start) / duration); - var deltaRotation = - (sourceRotation - frameState.viewState.rotation) * delta; - frameState.animate = true; - frameState.viewState.rotation += deltaRotation; - if (anchor) { - var center = frameState.viewState.center; - ol.coordinate.sub(center, anchor); - ol.coordinate.rotate(center, deltaRotation); - ol.coordinate.add(center, anchor); - } - frameState.viewHints[ol.ViewHint.ANIMATING] += 1; - return true; - } else { - return false; - } - }); -}; - - -/** - * Generate an animated transition while updating the view resolution. - * @param {olx.animation.ZoomOptions} options Zoom options. - * @return {ol.PreRenderFunction} Pre-render function. - * @deprecated Use {@link ol.View#animate} instead. - * @api - */ -ol.animation.zoom = function(options) { - var sourceResolution = options.resolution; - var start = options.start ? options.start : Date.now(); - var duration = options.duration !== undefined ? options.duration : 1000; - var easing = options.easing ? - options.easing : ol.easing.inAndOut; - return ( - /** - * @param {ol.Map} map Map. - * @param {?olx.FrameState} frameState Frame state. - * @return {boolean} Run this function in the next frame. - */ - function(map, frameState) { - if (frameState.time < start) { - frameState.animate = true; - frameState.viewHints[ol.ViewHint.ANIMATING] += 1; - return true; - } else if (frameState.time < start + duration) { - var delta = 1 - easing((frameState.time - start) / duration); - var deltaResolution = - sourceResolution - frameState.viewState.resolution; - frameState.animate = true; - frameState.viewState.resolution += delta * deltaResolution; - frameState.viewHints[ol.ViewHint.ANIMATING] += 1; - return true; - } else { - return false; - } - }); -}; diff --git a/src/ol/animation.jsdoc b/src/ol/animation.jsdoc deleted file mode 100644 index 3c56f28229..0000000000 --- a/src/ol/animation.jsdoc +++ /dev/null @@ -1,13 +0,0 @@ -/** - * The animation static methods are designed to be used with the - * {@link ol.Map#beforeRender} method. For example: - * - * var map = new ol.Map({ ... }); - * var zoom = ol.animation.zoom({ - * resolution: map.getView().getResolution() - * }); - * map.beforeRender(zoom); - * map.getView().setResolution(map.getView().getResolution() * 2); - * - * @namespace ol.animation - */ diff --git a/src/ol/map.js b/src/ol/map.js index 3c235faa03..20cab28afd 100644 --- a/src/ol/map.js +++ b/src/ol/map.js @@ -345,12 +345,6 @@ ol.Map = function(options) { */ this.focus_ = null; - /** - * @private - * @type {Array.} - */ - this.preRenderFunctions_ = []; - /** * @private * @type {Array.} @@ -520,20 +514,6 @@ ol.Map.prototype.addOverlayInternal_ = function(overlay) { }; -/** - * Add functions to be called before rendering. This can be used for attaching - * animations before updating the map's view. The {@link ol.animation} - * namespace provides several static methods for creating prerender functions. - * @param {...ol.PreRenderFunction} var_args Any number of pre-render functions. - * @deprecated Use {@link ol.View#animate} instead. - * @api - */ -ol.Map.prototype.beforeRender = function(var_args) { - this.render(); - Array.prototype.push.apply(this.preRenderFunctions_, arguments); -}; - - /** * * @inheritDoc @@ -1256,16 +1236,6 @@ ol.Map.prototype.renderFrame_ = function(time) { } if (frameState) { - var preRenderFunctions = this.preRenderFunctions_; - var n = 0, preRenderFunction; - for (i = 0, ii = preRenderFunctions.length; i < ii; ++i) { - preRenderFunction = preRenderFunctions[i]; - if (preRenderFunction(this, frameState)) { - preRenderFunctions[n++] = preRenderFunction; - } - } - preRenderFunctions.length = n; - frameState.extent = ol.extent.getForViewAndSize(viewState.center, viewState.resolution, viewState.rotation, frameState.size, extent); } @@ -1280,8 +1250,7 @@ ol.Map.prototype.renderFrame_ = function(time) { Array.prototype.push.apply( this.postRenderFunctions_, frameState.postRenderFunctions); - var idle = this.preRenderFunctions_.length === 0 && - !frameState.viewHints[ol.ViewHint.ANIMATING] && + var idle = !frameState.viewHints[ol.ViewHint.ANIMATING] && !frameState.viewHints[ol.ViewHint.INTERACTING] && !ol.extent.equals(frameState.extent, this.previousExtent_);