Releases: openlayers/openlayers
v3.14.2
Summary
The v3.14.2 release is a patch release that addresses a few regressions in the v3.14.1 release. See the v3.14.0 release notes for details on upgrading from v3.13.x.
Fixes
v3.14.1
Summary
The v3.14.1 release is a patch release that addresses a few regressions in the v3.14.0 release. See the v3.14.0 release notes for details on upgrading from v3.13.x.
Fixes
v3.14.0
Summary
The v3.14.0 release includes features and fixes from 93 pull requests since the v3.13.1 release. New features and improvements include:
- New
source
option for theol.control.FullScreen
, to allow including other elements besides the map in a full screen view (#4679). - New
target
property for the Drag&Drop interaction allows using a different drop target than the map viewport (#4876). ol.style.RegularShape
has a newrotateWithView
option, for controlling how regular shape symbols are rendered on rotated views (#4698).- New
layers
option forol.format.WMSGetFeatureInfo
format, to selectively only read features from specific layers (#4700). - New
precision
parameter for formatting coordinates withol.coordinate.toStringHDMS
(#4787). - Smarter tile queue for improved tile loading user experience when more than one tile layer is used (#4794).
- Improved rendering performance for tile layers by rendering tiles directly to the map canvas (#4597).
- The
goog.events
event system was replaced with our own lightweight event system. This significally reduces the build size (#4711). Replacement of othergoog.*
components with ES5 features or custom code marks a huge step towards the complete removal of the Closure Library dependency.
Upgrade notes
Internet Explorer 9 support
As of this release, OpenLayers requires a requestAnimationFrame
/cancelAnimationFrame
polyfill for IE 9 support. See http://cdn.polyfill.io/v2/docs/features/#requestAnimationFrame.
Layer pre-/postcompose event changes
It is the responsibility of the application to undo any canvas transform changes at the end of a layer 'precompose' or 'postcompose' handler. Previously, it was ok to set a null transform. The API now guarantees a device pixel coordinate system on the canvas with its origin in the top left corner of the map. However, applications should not rely on the underlying canvas being the same size as the visible viewport.
Old code:
layer.on('precompose', function(e) {
// rely on canvas dimensions to move coordinate origin to center
e.context.translate(e.context.canvas.width / 2, e.context.canvas.height / 2);
e.context.scale(3, 3);
// draw an x in the center of the viewport
e.context.moveTo(-20, -20);
e.context.lineTo(20, 20);
e.context.moveTo(-20, 20);
e.context.lineTo(20, -20);
// rely on the canvas having a null transform
e.context.setTransform(1, 0, 0, 1, 0, 0);
});
New code:
layer.on('precompose', function(e) {
// use map size and pixel ratio to move coordinate origin to center
var size = map.getSize();
var pixelRatio = e.frameState.pixelRatio;
e.context.translate(size[0] / 2 * pixelRatio, size[1] / 2 * pixelRatio);
e.context.scale(3, 3);
// draw an x in the center of the viewport
e.context.moveTo(-20, -20);
e.context.lineTo(20, 20);
e.context.moveTo(-20, 20);
e.context.lineTo(20, -20);
// undo all transforms
e.context.scale(1 / 3, 1 / 3);
e.context.translate(-size[0] / 2 * pixelRatio, -size[1] / 2 * pixelRatio);
});
Full list of changes
- #4896 - Ignore XML sequence when comparing GML (@ahocevar)
- #4890 - ol.format.KML cleanup (@fredj)
- #4894 - Only run raster operations after image sources have loaded. (@tschaub)
- #4892 - Stricter check for ImageData constructor (@ahocevar)
- #4891 - Fix tests so they all pass in IE9 (@ahocevar)
- #4889 - Use requestAnimation polyfill for examples and update release notes (@ahocevar)
- #4887 - Use less aggressive DOM function overrides (@ahocevar)
- #4885 - Mark overlayContainer and overlayContainerStopEvent as non-nullable (@fredj)
- #4884 - Remove use of goog.math.isFiniteNumber() (@fredj)
- #4881 - Update jquery to version 2.2.1 🚀 (@openlayers)
- #4780 - Adapt the code for the new closure-compiler version (@fredj)
- #3453 - Consider multi in add/remove/toggle select logic (@bjornharrtell)
- #4876 - Add
target
property to Drag&Drop interaction (@tsauerwein) - #4854 - Always report skipped feature hits for the original layer (@ahocevar)
- #4877 - Update eslint to version 2.2.0 🚀 (@openlayers)
- #4870 - Reuse dragListenerKeys_ local variable (@fredj)
- #4721 - Fix reprojection of raster sources with gutter (@klokantech)
- #4874 - Assert we have a feature id (@bartvde)
- #4869 - Improve precision of ol.reproj.render (@klokantech)
- #4866 - Use requestAnimationFrame polyfill (for IE9) (@ahocevar)
- #4863 - Remove use of goog.dom.createElement (@fredj)
- #4864 - Use querySelectorAll instead of goog.dom.getElementsByClass (@fredj)
- #4597 - Render tiles directly to the map canvas (@ahocevar)
- #4862 - Add OSGeo badge (@ahocevar)
- #4845 - Fix geolocation error cast (@gberaudo)
- #4851 - Don't use goog.isBoolean() (@marcjansen)
- #4852 - Don't use goog.isString() (@marcjansen)
- #4849 - Fix docs of LogoOptions.prototype.src (@openlayers)
- #4794 - Make tile loading count no longer depend on source count (@ahocevar)
- #4843 - Remove use of goog.dom.getParentElement (@fredj)
- #4839 - Add template type to ol.Collection (@fredj)
- #4847 - Update eslint to version 2.1.0 🚀 (@openlayers)
- #4632 - Overloading fill color (polygon or text) with CanvasPattern and CanvasGradient (@bjnsn)
- #4842 - Remove use of goog.dom.createDom (@fredj)
- #4808 - Type cleanup (@fredj)
- #4737 - Use olx.format.ReadOptions in ol.interaction.DragAndDrop (@fredj)
- #4830 - Make sure window.proj4 is always restored in tests (@ahocevar)
- #4838 - Use regular expression instead of String#endsWith() check (@ahocevar)
- #4837 - Update metalsmith-layouts to version 1.5.4 🚀 (@openlayers)
- #4836 - Use lowercase for all user agent checks (@ahocevar)
- #4833 - Upgrade linter and config. (@tschaub)
- #4831 - Add navigation header to examples page (@jonataswalker)
- #4824 - Don't use goog.string.newlines.* (@marcjansen)
- #4825 - Don't use goog.string.isEmpty (@marcjansen)
- #4823 - Fix type for layers option on ol.interaction.Select (@ahocevar)
- #4815 - wrapX false in synthetic examples (@fredj)
- #4810 - Add checks for undefined in controls (@gberaudo)
- #4787 - Add precision parameter for HDMS coordinate (@pfanguin)
- #4811 - Make ol.style.Style a @struct (@fredj)
- [#4...
v3.13.1
Summary
The v3.13.1 release is a patch release that addresses a few regressions in the v3.13.0 release. See the v3.13.0 release notes for details on upgrading from v3.12.
Fixes
v3.13.0
v3.13.0
Summary
The v3.13.0 release includes features and fixes from 68 pull requests since the v3.12.1 release. New features and improvements include:
- Improved tiles rendering for the canvas renderer
- Improved MapQuest rendering
- Add color option to ol.style.Icon
- Load TileJSON sources via XMLHttpRequest by default
- Add new ol.geom.LineString#getCoordinateAt function
- Simplify meters per unit handling
- Use ESLint as a replacement for gjslint.py and jshint
Upgrade notes
proj4js
integration
Before this release, OpenLayers depended on the global proj4 namespace. When using a module loader like Browserify, you might not want to depend on the global proj4
namespace. You can use the ol.proj.setProj4
function to set the proj4 function object. For example in a browserify ES6 environment:
import ol from 'openlayers';
import proj4 from 'proj4';
ol.proj.setProj4(proj4);
ol.source.TileJSON
changes
The ol.source.TileJSON
now uses XMLHttpRequest
to load the TileJSON instead of JSONP with callback.
When using server without proper CORS support, jsonp: true
option can be passed to the constructor to get the same behavior as before:
new ol.source.TileJSON({
url: 'http://serverwithoutcors.com/tilejson.json',
jsonp: true
})
Also for Mapbox v3, make sure you use urls ending with .json
(which are able to handle both XMLHttpRequest
and JSONP) instead of .jsonp
.
Full list of changes
- #4694 - Fix eslint errors in wms-time example (@fredj)
- #4527 - Add support for smooth TileWMS dimensions (@bartvde)
- #4691 - Updated Bing Maps key. (@tschaub)
- #4673 - Respect fixed tile url functions when setting url(s) (@ahocevar)
- #4689 - Revert "Do not render in handleDownEvent" (@openlayers)
- #4688 - Give map a focus-outline in accessible-example (@marcjansen)
- #4642 - Move the icon style color to its own example (@alexbrault)
- #4685 - Remove bin/check-whitespace.py (@fredj)
- #4684 - Update eslint-config-openlayers to version 3.0.0 🚀 (@openlayers)
- #4677 - Make pixel projection handling work in compiled mode (@ahocevar)
- #4639 - Remove use of goog.bind and use ES5 .bind. (@nicholas-l)
- #4655 - Update browserify to version 13.0.0 🚀 (@openlayers)
- #4666 - Add a 'boxdrag' event to ol.interaction.DragBox. Resolves #4563 . (@WeaveTeam)
- #4669 - Remove reference to Closure Linter in CONTRIBUTING.md (@fredj)
- #4665 - Update istanbul to version 0.4.2 🚀 (@openlayers)
- #4663 - Update glob to version 6.0.4 🚀 (@openlayers)
- #4667 - Fix rendering of transparent MapQuest layer type (@klokantech)
- #4661 - Fixes #4654 Developer Documentation Updated (@gaf-ag)
- #4658 - Update jquery to version 2.2.0 🚀 (@openlayers)
- #4659 - Make sure icons show up in Safari (@bartvde)
- #4652 - Use map.getTargetElement instead of map.getTarget (@fredj)
- #4649 - Missing parameter description for ol.source.Tile#getOpaque (@klokantech)
- #4602 - Use ESLint. (@tschaub)
- #4628 - Fix for reprojecting opaque tile sources (@klokantech)
- #4618 - Update resemblejs to version 2.1.0 🚀 (@openlayers)
- #4647 - Proper rounding for possibly negative numbers (@ahocevar)
- #4641 - Remove extra options from icon example. (@tschaub)
- #4629 - Simplify scaleline calculation (@ahocevar)
- #4457 - Add color option to ol.style.Icon (@alexbrault)
- #4638 - Do not rely on projection extent (@ahocevar)
- #4635 - Update async to version 1.5.2 🚀 (@openlayers)
- #4581 - Do not render in handleDownEvent (@ahocevar)
- #4541 - Add new ol.geom.LineString#getCoordinateAt function (@fredj)
- #4489 - Update phantomjs to version 1.9.19 🚀 (@openlayers)
- #4625 - Use XHR by default to load TileJSON in ol.source.TileJSON (@klokantech)
- #4622 - Update fs-extra to version 0.26.4 🚀 (@openlayers)
- #4630 - Simplify meters per unit handling (@ahocevar)
- #4490 - Update istanbul to version 0.4.1 🚀 (@openlayers)
- #4574 - Added boxEndCondition to DragBoxOptions to replace the hardcoded chec… (@WeaveTeam)
- #4553 - Update mustache to version 2.2.1 🚀 (@openlayers)
- #4626 - Fixed documentation error (@simonseyock)
- #4606 - Include originating MapBrowserEvent in ol.DragBoxEvent (@fredj)
- #4614 - Remove checksum interface. (@tschaub)
- #4613 - Include own layer in layerFilter and only select unselected features (@ahocevar)
- #4612 - Set oli.source.VectorEvent#feature to ol.Feature|undefined (@fredj)
- #4620 - Fix olx.format.PolylineOptions#factor type (@fredj)
- #4621 - Fix olx.format.GPXOptions#readExtensions type (@fredj)
- #4619 - Add option to load TileJSON via XHR (@klokantech)
- #4617 - Add missing return type to GeoJSON format (@gberaudo)
- #4615 - Adjust copyright to include 2016 (@marcjansen)
- #4616 - Update closure-util to version 1.10.0 🚀 (@openlayers)
- #4596 - Use consistent tile coordinate keys (@ahocevar)
- #4609 - Add ol.proj.setProj4 function (@bartvde)
- #4603 - Update async to version 1.5.1 🚀 (@openlayers)
- #4604 - Update clean-css to version 3.4.9 🚀 (@openlayers)
- #4600 - Update glob to version 6.0.3 🚀 (@openlayers)
- #4595 - Pass 'opaque' option on to superclass (@ahocevar)
- #4598 - Make ol.source.Tile#getTilePixelRatio work correctly for all sources (@klokantech)
- #4594 - Fix for TileQueue gradually choking up when using raster reprojection (@klokantech)
- #4557 - Conditionally render tiles to a separate ti...
v3.12.1
v3.12.1
Summary
The v3.12.1 release is a patch release that addresses a few regressions in the v3.12.0 release. See the v3.12.0 release notes for details on upgrading from v3.11.
Fixes
v3.12.0
v3.12.0
Summary
The v3.12.0 release includes features and fixes from 71 pull requests since the v3.11.2 release. New features and improvements include:
- Tile coordinate wrapping for raster reprojection.
- Support for multi-line labels.
- Allow rendering geometries to an arbitrary canvas (useful for vector legends).
Upgrade notes
ol.Map#forEachFeatureAtPixel
changes
The optional layerFilter
function is now also called for unmanaged layers. To get the same behaviour as before, wrap your layer filter code in an if block like this:
function layerFilter(layer) {
if (map.getLayers().getArray().indexOf(layer) !== -1) {
// existing layer filter code
}
}
Full list of changes
- #4559 - Fix up failing KML test in Firefox (@bartvde)
- #4561 - Exclude feature loader MVT test from IE9 (@bartvde)
- #4552 - Make sure compiled code calls ol.VectorTile#setProjection (@ahocevar)
- #4551 - Handle tile coordinate wrapping when reprojecting raster tiles (@klokantech)
- #4544 - Update vector-tile to version 1.2.0 🚀 (@openlayers)
- #4537 - Allow specifying non default DPI on ol.source.TileArcGISRest (@bartvde)
- #4548 - Improve vector tile related docs (@ahocevar)
- #4549 - Update vector label example (@tsauerwein)
- #4512 - Support for multi-line labels (improved) (@flightaware)
- #4546 - Update coveralls to version 2.11.6 🚀 (@openlayers)
- #4539 - Ignore index.html in example list (@fredj)
- #4536 - Register the change callback when the tile is enqueued (@fredj)
- #4528 - Remove redundant code from ol.featureloader.tile (@ahocevar)
- #4535 - Do not use an array for a single style (@ahocevar)
- #4532 - Mark olx.source.WMTSOptions#dimensions as not null (@fredj)
- #4530 - Remove use of goog.isNull (@fredj)
- #4529 - Update coding style rules (@fredj)
- #4518 - Add support for OSM vector tiles (@ahocevar)
- #4524 - Add example for rendering custom point symbols (@ahocevar)
- #4523 - Allow rendering geometries to an arbitrary canvas (@ahocevar)
- #4525 - Make render tests work on more devices (@ahocevar)
- #4515 - Accept HTMLCanvasElement for an icon's img (@ahocevar)
- #4521 - Fix imagestyle docs (@ahocevar)
- #4508 - Remove unused files (@fredj)
- #4487 - Remove fallback css color (@fredj)
- #4502 - Improve ol.source.WMTS.optionsFromCapabilities jsdoc layout (@fredj)
- #4511 - Minor code cleanup (@fredj)
- #4510 - Adding a check just in case the projection is not defined/supported (@GeoCat)
- #4505 - Remove use of goog.object.getKeys (@fredj)
- #4472 - Do not ignore layer filter for unmanaged layers (@ahocevar)
- #4476 - Remove use of goog.functions.constant (@fredj)
- #4484 - Remove use of goog.dom.createDom (@fredj)
- #4486 - Remove note about DragZoom and vector support (@fredj)
- #4483 - Remove use of goog.object.containsKey (@fredj)
- #4475 - Fix up failing tests in Internet Explorer (@bartvde)
- #4485 - Use appendChild instead of goog.dom.append (@fredj)
- #4481 - Remove blur workaround in ol.control.Attribution (@fredj)
- #4479 - Export ol.interaction.Interaction#getMap function (@fredj)
- #4478 - Fix olx.control.FullScreenOptions#label apidoc (@fredj)
- #4477 - Replace goog.nullFunction with ol.nullFunction (@fredj)
- #4474 - Remove use of goog.dom.createElement and goog.dom.createTextNode (@fredj)
- #4469 - Upgrade to JSTS 0.17.0 in example (@bjornharrtell)
- #4465 - Update handlebars to version 4.0.5 🚀 (@openlayers)
- #4464 - Merge in changes from the 3.11.2 release. (@openlayers)
- #4463 - Remove use of goog.array.sort (@fredj)
- #4450 - Fix select interaction regression caused by #4391 (@ahocevar)
- #4458 - Remove extra space in type annotation (@fredj)
- #4420 - Remove Bootstrap and jQuery from example snippets. (@openlayers)
- #4442 - Use [email protected]. (@tschaub)
- #4449 - Change the label of the full screen button to be more intuitive (@bartvde)
- #4448 - Check ol.source.UrlTile#urls property for null value (@fredj)
- #4440 - Raster reprojection tutorial (@klokantech)
- #4439 - Allow '' for crossOrigin (as Anonymous alias) (@ahocevar)
- #4429 - Dispatch a change event only if the value changes (@fredj)
- #4435 - Remove unnecessary cast (@fredj)
- #4434 - Remove unused local variables (@fredj)
- #4433 - Remove unused local variables (@fredj)
- #4140 - Add flight animation example (@tsauerwein)
- #4428 - Add imageSize regression test for ol.source.ImageWMS (@ahocevar)
- #4426 - Improve ol.source.StaticImage (@ahocevar)
- #4425 - Test number property with !== undefined (@fredj)
- #4423 - Update mocha to version 2.3.4 🚀 (@openlayers)
- #4416 - Update clean-css to version 3.4.8 🚀 (@openlayers)
- #4415 - Scale StaticImage image to imageExtent (@ahocevar)
- #4414 - Remove ol.ImageUrlFunction (@ahocevar)
- #4389 - Smooth transitions on parameter changes (@elemoine)
- #4410 - Merge in changes from the 3.11.1 release. ([@openlayers](https://githu...
v3.11.2
Summary
The v3.11.2 release is a patch release that addresses a few regressions in the v3.11.1 release. See the v3.11.0 release notes for details on upgrading from v3.10.
Fixes
v3.11.1
Summary
The v3.11.1 release is a patch release that addresses a few regressions in the v3.11.0 release. See the v3.11.0 release notes for details on upgrading from v3.10.
Fixes
v3.11.0
Summary
The v3.11.0 release includes features and fixes from 73 pull requests since the v3.10.1 release. New features and improvements include:
- Support for raster reprojection - load raster sources in one projection and view them in another.
- Support for Mapbox Vector Tiles!
- Improved KML support, GeoJSON & TopoJSON fixes, and much more. See below for the full list.
Upgrade notes
ol.format.KML
changes
KML icons are scaled 50% so that the rendering better matches Google Earth rendering.
If a KML placemark has a name and is a point, an ol.style.Text
is created with the name displayed to the right of the icon (if there is an icon).
This can be controlled with the showPointNames option which defaults to true.
To disable rendering of the point names for placemarks, use the option:
new ol.format.KML({ showPointNames: false });
ol.interaction.DragBox
and ol.interaction.DragZoom
changes
Styling is no longer done with ol.Style
, but with pure CSS. The style
constructor option is no longer required, and no longer available. Instead, there is a className
option for the CSS selector. The default for ol.interaction.DragBox
is ol-dragbox
, and ol.interaction.DragZoom
uses ol-dragzoom
. If you previously had
new ol.interaction.DragZoom({
style: new ol.style.Style({
stroke: new ol.style.Stroke({
color: 'red',
width: 3
}),
fill: new ol.style.Fill({
color: [255, 255, 255, 0.4]
})
})
});
you'll now just need
new ol.interaction.DragZoom();
but with additional css:
.ol-dragzoom {
border-color: red;
border-width: 3px;
background-color: rgba(255,255,255,0.4);
}
Removal of ol.source.TileVector
With the introduction of true vector tile support, ol.source.TileVector
becomes obsolete. Change your code to use ol.layer.VectorTile
and ol.source.VectorTile
instead of ol.layer.Vector
and ol.source.TileVector
.
ol.Map#forEachFeatureAtPixel
changes for unmanaged layers
ol.Map#forEachFeatureAtPixel
will still be called for unmanaged layers, but the 2nd argument to the callback function will be null
instead of a reference to the unmanaged layer. This brings back the behavior of the abandoned ol.FeatureOverlay
that was replaced by unmanaged layers.
If you are affected by this change, please change your unmanaged layer to a regular layer by using e.g. ol.Map#addLayer
instead of ol.layer.Layer#setMap
.
Full list of changes
- #4394 - Allow ol.Object property update without notification. (@DavidHequet)
- #4395 - Flag ol.style.Text setOffsetX and Y as @api. (@adube)
- #4393 - Faster vector tiles (@ahocevar)
- #4392 - Update clean-css to version 3.4.7 🚀 (@openlayers)
- #4391 - Pass null as forEachFeatureAtPixel layer arg for unmanaged layers (@ahocevar)
- #4390 - Fix usage of mocha-phantomjs-core after update (@ahocevar)
- #4387 - Add default argument to getRendererFromQueryString (@ahocevar)
- #4376 - Make KML format ignore image styles that aren't icons (@elemoine)
- #4385 - Don't transform the scale specified by the user (@oterral)
- #4388 - Quick-fix running tests with PhantomJS (@ahocevar)
- #4378 - Add a writeStyles option to KML format (@elemoine)
- #4375 - Fixed documentation typo (ol.source.ImageWMS) (@simonseyock)
- #4371 - Fix typo in closure compilation tutorial (@dtreiter)
- #4370 - Improve ol.interaction.Select#getLayer documentation. (@jonataswalker)
- #4365 - Update fs-extra to version 0.26.2 🚀 (@openlayers)
- #4366 - Update resemblejs to version 2.0.1 🚀 (@openlayers)
- #4368 - Append KML placemark text style to existing styles (@marcjansen)
- #4361 - Make GPX format not fail on unsupported geometries (@elemoine)
- #4360 - Update getExtent return value jsdoc tag (@fredj)
- #4359 - Update closure-util to version 1.9.0 🚀 (@openlayers)
- #4357 - Update all dependencies. (@openlayers)
- #4356 - Update Metalsmith and layouts plugin. (@tschaub)
- #4355 - Update PhantomJS. (@tschaub)
- #4353 - Resolve path to jsdoc-fork. (@tschaub)
- #3627 - Make package.json compatible for npm frontend use. (@ThomasG77)
- #4163 - Fixes for building with Node 4.x. (@tschaub)
- #4347 - Use require.resolve() to find jsdoc. (@tschaub)
- #4291 - Add 'Move a feature along a line' example. (@jonataswalker)
- #4344 - Allow different resolutions in x and y direction for ol.source.ImageStatic (@bartvde)
- #4339 - Make sure drawImage width and height are not too big (@bartvde)
- #4334 - Check view extent within image extent (@ahocevar)
- #4332 - Fix write out GeoJSON features with id equal to 0 (@fredj)
- #4331 - Allow TopoJSON features with id equal to 0 (@fredj)
- #4330 - ol.format.TopoJSON is read only, update the jsdoc (@openlayers)
- #4327 - Allow GeoJSON features with id equal to 0 (@fredj)
- #4219 - Support tiled vector data and Mapbox vector tiles (@ahocevar)
- #4322 - Add wrapX override support for ol.source.Cluster (@FRizZL)
- #4316 - Render name labels if the geometry is a point in KML format (@tamarmot)
- #4313 - Align logos nicely with attribution text (@ahocevar)
- #4297 - Create standalone versions of ol.ext packages (@ahocevar)
- #4302 - scale icons by 0.5 so they are not huge (@tamarmot)
- #4301 - Remove jshint -W069 tags in source code (@fredj)
- #4273 - Expand docs on ol.source url prop. (@Barryrowe)
- #4293 - Refine the pull request process (@ahocevar)
- #4289 - Restrict maxZoom of the static-image example (@ahocevar)
- #4275 - Fix ol.events.condition.mouseOnly parameter type (@fredj)
- #4248 - Use Math.cosh of ES6/2015 if available (@marcjansen)
- #4286 - Add a color manipulation example. (@tschaub)
- #4122 - Raster reprojection (@klokantech)
- #4283 - Flag ol.tilegrid.TileGrid getTileCoordExtent as @api (@adube)
- #4280 - Use overlay container instead of viewport for ol.render.Box (@ahocevar)
- #4278 - Use DOM instead of map canvas for ol.render.Box (@ahocevar)
- [#4277](https://github.com/openlay...