Creating the cached canvases is expensive and they may never be used.
E. g. the hit detect canvas is not needed with the Immediate renderer
and if a feature is never in the viewport the image is not needed either.
- remove jitter when using RegularShape size in animation, size should
always be an integer
- canvas may have been too small for miter line join
- canvas was at least one stroke width too large for round line join
- reduce canvas size even more for bevel line join
Canvas now precisely fits the shape including stroke, The angle of the
shape is ignored for the calculation.
Fixes missing miter/bevel line join because path was not closed before
stroking.
Reduce canvas context calls, skip beginPath, and instead of drawing the
last point use closePath
Browsers already handle the scaling, no need to multiply this again.
This now also allows setting a moveTolerance of zero which was not
possible before. In the isMoving_ method the condition is
distance > tolerance so this will work.
The build process failed because webpack does not allow failed imports
when it is run as a module.
This detects modules with default exports and only generates import
statements for default exports where they are available.
When overflow is false and some of a MultiPolygon's polygons are
outside the rendered extent the coordinates and geometryWidths arrays are
not kept in sync. Therefore the width check will filter on wrong data and
some texts may not be rendered.
Openlayers classes use an underscore suffix convention to mark class
members as private. These are undocumented implementation details and
presumably unsafe for code outside the class to rely on.
Allowing javascript minimisation to change these names gives 5% bundle
size reduction to the library.
This makes it possible to pickup new examples and prevents compilation
errors when an example is removed. This is especially handy when switching
branches. Otherwise the dev server has to be restarted each time.
The button should not change its position when the collapsed state changes.
The overview map had a somewhat larger padding at the bottom due to being an
inline-block element and the configured line-height of 1.5.
Due to rounding the hitdetection may have been off by one pixel.
At map edge the pixel coordinate may exceed the map's dimensions if an
decimal pixel ratio is used, this is fixed by clamping to the canvas
dimensions.
- Pass click events on measure tooltips through to the map
- Put the tooltip for the currently drawn geometry on top
- Disable text selection in the tooltips so clicking to draw does not select
Removed test that asserted the cloned renderer would not reference the same object as the original.
Replaced tests that stringified the renderer function with tests that compare the original with the clone by reference.
Make predefined geometry functions compatible with removeLastPoint
Add undo to example
Make geometry function for Star compatible with use of removeLastPoint
Additional createRegularPolygon tests
Add a possibility to provide one specific bbox per feature type
on WFS writeGetFeature. This option results to one query node
per featureTypesBbox item. One query node, for one feature type,
will have a specific bbox filter and every query node will share
the same others filters (if a filter option is defined).
Copy LICENSE.md as well as README.md to build when preparing package.
These files are useful for tools that inspect node_modules for
dependency details.
Drag-and-Drop support for formats that read arraybuffer sources
Add TextDecoder to polyfills
Add custom Drag-and-Drop examples for KMZ and MVT
Add sample download and KML styles option to existing example
Test arraybuffer and constructed formats
When using ol.render.Feature there was a mandatory geometry transform.
With this change it is now easy to read features directly in the native tile projection.
Since there is no needed transform, there is no need either to define an extent and a world extent, for that use-case.
Fix nullpointer error when a matrixSet is not found in the matrixsetobj when matrix limits exist.
Also check for match by prepending matrixSetObj.Identifier which is supported by some wmts services.
Add rotation and rotateWithView to options and clone
Add rotation and rotateWithView to clone test
Also check that scale and displacement arrays are cloned
The test for the prerender and postrender events now uses a WebGLPointsLayer instead of a VectorLayer.
This is less confusing and probably closer to practical usage, too.
Use latest version of prism, add json formatter, copy to clipboard plugin,
and line-numbers.
Now the clipboard js is automatically loaded by prism it it not included
and the buttons are automatically initialized. Though I added some css to
match the previous style.
With bootstrap js always included there is no need to add own js to dismiss it.
Only generate the notice for experimental pages, no need to have js for that.
If a space character is at either end of the input string splitting it
procuces an empty string that matches everything.
Allow single character words as there are is a single character tag: `x`
Also use the `input` event instead of `keyup` and addEventlistener instead
of setting the onload / onchange properties.
And handle space character encoded as `+` in query string correctly.
add getScaleArray() method
test two dimension scale icons
test two dimension scale text
add example of icon and label scaling
use smaller icon and larger interval
test two dimensional scale icons
test two dimensional scale icons
Sometimes we may have the functionality to set scale/resolution provided by a user and it can be any number (so constrainResolution in View class is not useful), but we would like to have constrainResolution in mouse wheel zoom event.
The next step in debugging our periodic rendering test failures is to use a new cache key. This change also removes the less specific key, so we will no longer get partial cache restores. If we don't see test failures after this change, we may try adding the v2-dependencies- as a key.
This updates ESLint and our shared eslint-config-openlayers to use Prettier. Most formatting changes were automatically applied with this:
npm run lint -- --fix
A few manual changes were required:
* In `examples/offscreen-canvas.js`, the `//eslint-disable-line` comment needed to be moved to the appropriate line to disable the error about the `'worker-loader!./offscreen-canvas.worker.js'` import.
* In `examples/webpack/exapmle-builder.js`, spaces could not be added after a couple `function`s for some reason. While editing this, I reworked `ExampleBuilder` to be a class.
* In `src/ol/format/WMSGetFeatureInfo.js`, the `// @ts-ignore` comment needed to be moved down one line so it applied to the `parsersNS` argument.
with coordinates that are outside the source. Chrome appears to draw the
piece of the image that is within the area specified on the drawImage and within
the source. Safari bails and draws nothing if (I think) any of the corners are outside
the source.
* Auto-pan settings currently only activate when the position of the
Overlay is set and the Overlay is already on a Map.
* The consequence of this is that creating an Overlay with position
set and then adding to a Map results in no auto-pan being performed -
it is necessary to first create the Overlay, then add to a Map and
finally set the position in order for the Map to auto-pan.
* This commit changes this behaviour so that the auto-pan settings are
also considered when the map property of the Overlay is set and not
only when the position property is set, leading to a more intuitive
behaviour.
* Fixes Issue #10843
* If panIntoView is an API method, it may now be called when the
position of the overlay has not yet been set.
* Adds a check for a set position to the panIntoView() method,
and removes the now unneccessary check in handlePositionChanged()
* Follow the suggestion from @ahocevar to use the existing
autoPan constructor option instead of creating a new autoPanOptions
option
* Internally also store the autoPanOptions in autoPan
This was introduced to `npm` recently and allows users of the ol
package to e.g. type `npm fund ol` and our opencollective page
opens in a browser. Just typing `npm fund` in a npm package will list
the funding options of the dependencies of the current project.
* animation and margin encapsulated in a single object to allow
easier extension in future
* Constructor options extended to allow single object for
autoPan; separate options still allowed but deprecated
* Protected fields for animation and margin replaced with single
field
Previously the expression was parsed in the fragment shader context, which
meant in case the expression used an attributes the resulting GLSL code
would be wrong.
Fragment shader context:
`float angle = v_heading; // we're using the varying: not OK`
Vertex shader context:
`float angle = a_heading; // we're using the attribute: OK`
No need to sort beforehand and therefore sorting can be done at last too.
Also forEach is just fine, no need for underscore.
This changes the navigation default order for modules to be after classes
when the name is the same.
Handle NaN latitude transform results at void centers of some projections (e.g. Pole LAEA).
Clamp latitudes to not go beyond the poles when calculating intervals.
Further improve polar projections by checking if extent contains max and min intersection coordinates when calculating max and min.
For some projections (e.g. polar) the maximum or minimum values may be at the center.
To improve the display for polar projections take validated center values into account when calculating max and min.
Use custom toLonLat transform to return wrapped longitudes for extents if view projection crosses the dateline.
Enhance the validation for center and extents to avoid proj4 errors.
Add optional extra stops to refine some non-parallel transforms
Refine extent transforms use by Gratucule by using 32 points (8 per side) instead of the standard corners only transform
Update Graticule class description with current limitations
Correct projection extent in Mollweide example and revise opening zoom level correspondingly
... to improve search speed.
Instead of marking all items as hidden, and then marking the matched
ones again, this keeps track of all matched items and only
removes those that no longer match and adds those that previously did
not match.
++++ Full match from start to end
+++ Full match between word boundaries
++ Begin matches at word boundary, multiple matches are better
+ Matches somewhere
Classes with (multiple) members matching at the beginning are
weighted higher.
Currently the search term is matched against the longname of members.
Because of this most members are matched when searching for a
class / module and also searching for 'mod' matches everything as
all longnames start with 'module:'
Write styles based on style objects appropriate for geometry.
Write fill and outline in PolyStyle if false (i.e. non-default)
Handle MultiLineString, MultiPoint and MultiPolygon within heterogenous MultiGeometry when writing features
Add getGeometriesArrayRecursive method to ol/geom/GeometryCollection to allow for nested MultiGeometry
Enhanced write GeometryCollection geometries test
A more rigorous write GeometryCollection geometries test including nested collections (the output is simplified to a single MultiGeomtry)
Add writeFeatures to outline and fill tests, setting geometry for geometry specific tests
Add <fill>0</fill> and <outline>0</outline> to some existing tests
The example is now focused on showing how a kind of "tracing" mode
can be achieved using the Draw interaction, making it easier
for the user to snap to an existing geometry while preserving
topology.
- Add a function that is used to generate all four types of member lists.
- Only use one line per list item.
- Don't generate empty `class=""` attributes when item is stable.
- Remove closing `</li>` tag, as is allowed by the html 5 standard.
Overall this reduces the filesize for the generated html pages by ~33%.
Return separate style objects for polygon geometries (including multipolygon and polygons in geometry collections) and other geometries if Polystyle outline is defined as 0
Rearrange code to reduce cloning of styles in createNameStyleFunction
Update Polystyle outline 0 tests
Check for separate style objects applying to LineString and Polygon geometries
Test LineString and Polygon geometries in a collection
Some events will originate outside the map viewport such as keyboard
events which originate with the element specified by keyboardEventTarget
which could be document.body
The `target` Event property is readonly as it is set internally when an
event is dispatched. This change uses a plain object with the essential
properties that a PointerEvent has which is sufficent for map event handling
As discussed in https://github.com/openlayers/openlayers/issues/6948#issuecomment-565375694
The check to see if the target is within the "page" uses the viewport as
the MapBrowserEventHandler instance adds it's listeners to the viewport.
Using Node.contains appears to have a slight performance benefit
over manually walking the DOM.
Correct modify interaction at center and at drawn circle circumference
Correct snap interaction at drawn circle circumference
Test circle geometry in a user projection
Pass the view projection to the geometry function so circles and other custom geometry can be given the expected shape/size in the view while being defined in user coordinates.
Add tests to draw circles in a user projection and along both axes
Draw regular polygon in a user projection
Draw box in a user projection
- update the typedef to change the condition default value to {@link ol/events/condition~mouseActionButton}
- remove 'This interaction is only supported for mouse devices' comment
In version 6 coordinate increase downwards. Revise the description for "sizes" to better distinguish zoom level and overall grid extents. Remove reference to the "widths" options which was deprecated over 4 years ago.
Turns out there are sometimes errors that will not prevent the
shader from functioning normally. As such, it is not possible
to simply throw when there are errors/warnings.
Since we are not logging to the console, these errors will have to stay hidden
unless the user requests them explicitly.
The methods `View.adjustRotation`, `View.adjustZoom` and `View.adjustResolution`
optionally take an `opt_anchor` parameter. When `opt_anchor` is `undefined`, the
methods work properly. When it is `null`, they currently attempt to access the
`null` value as though it is a `Coordinate` object, and throw:
```
TypeError: Cannot read property '0' of null
```
This change allows `opt_anchor` to safely be `null`.
Existing code paths already expect this to be supported. For example, when
`MouseWheelZoom.useAnchor_` is `false`, then
[`MouseWheelZoom.lastAnchor_` remains `null`](77bc6897dd/src/ol/interaction/MouseWheelZoom.js (L166));
thus, this `null` value
[is passed to `View.adjustZoom` as `opt_anchor`](77bc6897dd/src/ol/interaction/MouseWheelZoom.js (L209)).
Because not all elements in the DOM are instance of `HTMLElement`.
For example, SVGs created with `document.createElementNS` are instances of `Element`.
The hit detection render is now done against a canvas with half the
width/height of the main render. This still provides sufficient precision
while requiring a much smaller memory allocation (especially for
retina devices).
This would happen when WebGLPointsLayerRenderer.forEachFeatureAtCoordinate
is called on "warped" worlds at -360/+360 degrees, and may produce false
positives.
Various references were kept, preventing the layer and underlying
renderer and webgl context to be garbage collected.
Also, the Helper was simplified because it turns out deleting manually
all Webgl objects is useless: these objects will be released when
the context is garbage collected anyway.
Note: this touches the Layer and BaseLayer classes, as the following were
preventing the layer from being garbage collected:
* layer reference in the `state_` object in BaseLayer
* dangling listener for source change in Layer
Now values which are not mentioned in the style are still added to
the string literals mapping.
Also an error will be thrown if a style references a missing variable.
This operator is now able to map numbers to output ranges as well as colors,
making the stretch operator unnecessary. Also allows giving multiple stops,
like in Mapbox style spec.
It is now possible to specify a type hint when parsing an expression, which
helps determine the output value type.
When no single output type can be inferred, an error is thrown.
For strings, every literal value will be replaced by a number and a map of
these associations will be kept in the parsing context, which is passed
recursively.
Make the crossOrigin setting for icons configurable to avoid errors when KML files reference images when are not CORS enabled
Pass scope in readPlacemark_
and to handle IconStyle in a placemark style map
Test crossOrigin option for icons
Add tests for IconStyle in style maps and shared styles
Type checking is done either against a literal value (number, string...)
or against the operator in case of an expression.
Sometimes it is not possible to infer only one type, for example
the value 'transparent' could either be a color or a string. This
is covered by the fact that all operators expect exactly one type
for their arguments.
These variables are accessed using the `var` operator, and are meant
to be mutated directly in the style object. When doing so,
the new value will always be used for the render.
This is intended to be used for modifying the style through external
parameters such as an input field, a slider, mouse position etc.
There is now a ShaderBuilder class with chainable methods
to specify more easily the contents of the final shaders.
This is to avoid passing around large objects to different functions,
and allow for a richer API.
The documentation has also been corrected and clarified.
* As described in #10158, Control uses the property target_ for
a custom parent HTMLElement, leading to Events on the Control being
dispatched with that as the target and not the Control itself.
* Solved by renaming the target_ property on Target to eventTarget_
Revise the description of applyTransform and transformFn (loosely based on that used in ol/extent) to avoid any misunderstanding that the function is called inside a forEach method.
Thanks for your interest in contributing to OpenLayers.
Thanks for your interest in contributing to OpenLayers. Please see the project's [Code of Conduct](https://github.com/openlayers/openlayers/blob/main/CODE_OF_CONDUCT.md) before proceeding.
## Asking Questions
Please ask questions about using the library on [Stack Overflow using the tag 'openlayers'](http://stackoverflow.com/questions/tagged/openlayers).
Please ask questions about using the library on [Stack Overflow using the tag 'openlayers'](https://stackoverflow.com/questions/tagged/openlayers).
When you want to get involved and discuss new features or changes, please use [the mailing list](https://groups.google.com/forum/#!forum/openlayers-dev).
@@ -21,7 +21,7 @@ Look for `readme.md` files! Several directories contain a `readme.md` file that
## Contributing Code
See [`DEVELOPING.md`](https://github.com/openlayers/openlayers/blob/master/DEVELOPING.md) to learn how to get started developing.
See [`DEVELOPING.md`](https://github.com/openlayers/openlayers/blob/main/DEVELOPING.md) to learn how to get started developing.
Our preferred means of receiving contributions is through [pull requests](https://help.github.com/articles/using-pull-requests). Make sure
that your pull request follows our pull request guidelines below before submitting it.
@@ -31,7 +31,7 @@ This page describes what you need to know to contribute code to OpenLayers as a
## Contributor License Agreement
Your contribution will be under our [license](https://raw.githubusercontent.com/openlayers/openlayers/master/LICENSE.md) as per [GitHub's terms of service](https://help.github.com/articles/github-terms-of-service/#6-contributions-under-repository-license).
Your contribution will be under our [license](https://raw.githubusercontent.com/openlayers/openlayers/main/LICENSE.md) as per [GitHub's terms of service](https://help.github.com/articles/github-terms-of-service/#6-contributions-under-repository-license).
## Pull request guidelines
@@ -42,8 +42,7 @@ Your pull request must:
* Follow OpenLayers's coding style.
* Pass the integration tests run automatically by the CircleCI Continuous
Integration system.
* Pass the integration tests run automatically by the Continuous Integration system.
* Address a single issue or add a single item of functionality.
@@ -69,12 +68,12 @@ easily-understandable chunks. Any individual commit should not add more than
one new class or one new function. Do not submit commits that change thousands
of lines or that contain more than one distinct logical change. Trivial
commits, e.g. to fix lint errors, should be merged into the commit that
introduced the error. See the [Atomic Commit Convention on Wikipedia](http://en.wikipedia.org/wiki/Atomic_commit#Atomic_Commit_Convention) for more detail.
introduced the error. See the [Atomic Commit Convention on Wikipedia](https://en.wikipedia.org/wiki/Atomic_commit#Atomic_Commit_Convention) for more detail.
`git apply --patch` and `git rebase` can help you create a clean commit
@@ -41,14 +41,51 @@ See the following examples for more detail on bundling OpenLayers with your appl
* Using [Parcel](https://github.com/openlayers/ol-parcel)
* Using [Browserify](https://github.com/openlayers/ol-browserify)
## IntelliSense support and type checking for VS Code
## Sponsors
The `ol` package contains a `src/` folder with JSDoc annotated sources. TypeScript can get type definitions from these sources with a `jsconfig.json` config file in the project root:
```js
OpenLayers appreciates contributions of all kinds. We especially want to thank our fiscal sponsors who contribute to ongoing project maintenance.
> Your one-stop-shop for geospatial open source software.
> https://www.geosolutionsgroup.com/
<br>
See our [GitHub sponsors page](https://github.com/sponsors/openlayers) or [Open Collective](https://opencollective.com/openlayers/contribute/sponsors-214/checkout) if you too are interested in becoming a regular sponsor.
## ES Modules
The `ol` package contains a `src/` folder with the sources, authored as [ES Modules](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules). To use these untranspiled sources, either import modules from `ol/src` instead of `ol`, or configure your bundler with an alias pointing to `ol/src` for the `ol` package.
## IntelliSense (VS Code) support
The untranspiled sources in the `src/` folder are JSDoc type annotated. For applications authored in JavaScript, VS Code can get type definitions from these sources with a properly configured `jsconfig.json` in the project root:
<details><summary>jsconfig.json</summary>
```json
{
"compilerOptions":{
"checkJs":true,
// Point to the JSDoc typed sources when using modules from the ol package
"baseUrl":"./",
"paths":{
"ol":["node_modules/ol/src"],
@@ -58,16 +95,31 @@ The `ol` package contains a `src/` folder with JSDoc annotated sources. TypeScri
"include":[
"**/*.js",
"node_modules/ol/**/*.js"
]
],
"typeAcquisition":{
"exclude":["ol"]
}
}
```
Project template with this configuration: https://gist.github.com/9a7253cb4712e8bf38d75d8ac898e36c.
</details>
Note that the above only works when authoring in plain JavaScript. For similar configurations with a `tsconfig.json` in TypeScript projects, your mileage may vary.
## TypeScript support
The [ol package](https://npmjs.com/package/ol) includes auto-generated TypeScript declarations as `*.d.ts` files.
## Supported Browsers
OpenLayers runs on all modern browsers that support [HTML5](https://html.spec.whatwg.org/multipage/) and [ECMAScript 5](http://www.ecma-international.org/ecma-262/5.1/). This includes Chrome, Firefox, Safari and Edge. For older browsers and platforms like Internet Explorer (down to version 9) and Android 4.x, [polyfills](http://polyfill.io) for `requestAnimationFrame` and `Element.prototype.classList` are required, and using the KML format requires a polyfill for `URL`.
OpenLayers runs on all modern browsers that support [HTML5](https://html.spec.whatwg.org/multipage/) and [ECMAScript 5](https://262.ecma-international.org/5.1/). This includes Chrome, Firefox, Safari and Edge.
For older browsers and platforms (Internet Explorer, Android 4.x, iOS v12 and older, Safari v12 and older), polyfills may be needed for the following browser features:
* [`fetch`](https://caniuse.com/fetch): Available from [polyfill.io](https://polyfill.io/).
* [`requestAnimationFrame`](https://caniuse.com/requestanimationframe): Available from [polyfill.io](https://polyfill.io/).
* [`element.prototype.classList` (`add`/`remove`)](https://caniuse.com/classlist): Available from [polyfill.io](https://polyfill.io/).
* [`URL` API](https://caniuse.com/url): Available from [polyfill.io](https://polyfill.io/).
* [`TextDecoder`](https://caniuse.com/textencoder): Available from [polyfill.io](https://polyfill.io/).
* [`Number.isInteger`](https://caniuse.com/isInteger): Available from [polyfill.io](https://polyfill.io/).
* [Pointer events](https://caniuse.com/pointer): Use [elm-pep](https://npmjs.com/package/elm-pep) (lightweight) or [pepjs](https://npmjs.com/package/pepjs) (for really, really old browsers).
## Documentation
@@ -83,7 +135,7 @@ Please see our guide on [contributing](CONTRIBUTING.md) if you're interested in
## Community
- Need help? Find it on [Stack Overflow using the tag 'openlayers'](http://stackoverflow.com/questions/tagged/openlayers)
- Need help? Find it on [Stack Overflow using the tag 'openlayers'](https://stackoverflow.com/questions/tagged/openlayers)
- Follow [@openlayers](https://twitter.com/openlayers) on Twitter
The [ol package](https://npmjs.com/package/ol) now includes TypeScript declarations as `*.d.ts` files.
If desired, e.g. when you don't want to adjust your code after upgrading from a previous version where you used `@types/ol`, you can opt out of the included types and use third-party types by specifying aliases in the `compilerOptions` section of `tsconfig.json`, e.g.
```json
"baseUrl":"./",
"paths":{
"ol":["node_modules/@types/ol"],
"ol/*":["node_modules/@types/ol/*"]
},
```
#### Deprecation of `undefinedHTML` option for the MousePosition control
The `undefinedHTML` option for the MousePosition control has been deprecated and will be removed in a future release. Use the new `placeholder` option instead.
#### New `placeholder` option for the MousePosition control
When the mouse position is not available, the control renders a non-breaking space. To render somthing else instead,
set the `placeholder` option. If you want to retain the last position when the mouse leaves the viewport, set
`placeholder: false`. This will be the default behavior in a future release.
The `placeholder` option has no effect if the deprecated `undefinedHTML` option is also used. You should use the `placeholder` option instead of `undefinedHTML`.
#### Deprecation of `image` render mode for vector tile layers
`renderMode: 'image'` for vector tile layers has been deprecated. Applications continue to work, but a warning will be issued to the console. To get rid of the warning, simply remove the `renderMode` option.
### v6.5.0
#### Units of the `hitTolerance` option fixed
Previously, the `hitTolerance` option of the map's `getFeaturesAtPixel()`, `forEachFeatureAtPixel()` and `hasFeatureAtPixel()` methods behaved differently depending on the `devicePixelRatio` (or the `pixelRatio` of the map), because the original value was internally multiplied by the device pixel ratio twice instead of just once. Now this is fixed. **Note**: The `hitTolerance`'s units are css pixels. The documentation was updated to reflect this.
If your application adjusts for that with code like
```js
{hitTolerance:10/devicePixelRatio,}
```
you'll have to change that code to
```js
{hitTolerance:10,}
```
### v6.4.0
#### Pointer events polyfill removed
Now that all major browsers support Pointer events natively, we removed the [elm-pep](https://npmjs.com/package/elm-pep) dependency. If you are targeting older browsers that do not support Pointer events, you now need to include a pointer events polyfill ([elm-pep](https://npmjs.com/package/elm-pep) or [pepjs](https://www.npmjs.com/package/@openlayers/pepjs)) in your application.
### v6.3.2
#### Backwards incompatible changes
##### Geolocation no longer stop tracking after an error
Previously, when the Geolocation class encounter an error the tracking was stopped. It now continues to track.
To get the previous behavior, use the following code:
```js
geolocation.on('error',function(error){
geolocation.setTracking(false);
});
```
### v6.3.0
#### Vector source loading when extent crosses +/-180
Previously, when an extent crossed the date line, vector source loaders were called with an extent with 540 degrees of longitude. Now, two loader calls with the visible extent on both sides of the projection extent are issued. This should not require any application code changes, but may affect custom loaders.
### v6.0.0
#### Backwards incompatible changes
@@ -77,7 +150,7 @@ Generally, the responsibility of applying center/rotation/resolutions constraint
##### The view `extent` option now applies to the whole viewport
Previously, this options only constrained the view *center*. This behaviour can still be obtained by specifying `constrainCenterOnly` in the view options.
Previously, this options only constrained the view *center*. This behaviour can still be obtained by specifying `constrainOnlyCenter` in the view options.
As a side effect, the view `rotate` method is gone and has been replaced with `adjustRotation` which takes a delta as input.
@@ -1422,7 +1495,7 @@ now specify an `extent` instead of `widths`. These settings are used to restrict
});
```
See https://openlayers.org/en/master/examples/vector-layer.html for a real example.
See https://openlayers.org/en/latest/examples/vector-layer.html for a real example.
Note that you no longer need to set a `projection` on the source!
@@ -1444,7 +1517,7 @@ now specify an `extent` instead of `widths`. These settings are used to restrict
The above code uses jQuery to send an Ajax request, but you can obviously use any Ajax library.
See https://openlayers.org/en/master/examples/igc.html for a real example.
See https://openlayers.org/en/latest/examples/igc.html for a real example.
* Note about KML
@@ -1502,9 +1575,9 @@ now specify an `extent` instead of `widths`. These settings are used to restrict
});
```
See https://openlayers.org/en/master/examples/vector-osm.html for a real example.
See https://openlayers.org/en/latest/examples/vector-osm.html for a real example.
* The experimental `ol.loadingstrategy.createTile` function has been renamed to `ol.loadingstrategy.tile`. The signature of the function hasn't changed. See https://openlayers.org/en/master/examples/vector-osm.html for an example.
* The experimental `ol.loadingstrategy.createTile` function has been renamed to `ol.loadingstrategy.tile`. The signature of the function hasn't changed. See https://openlayers.org/en/latest/examples/vector-osm.html for an example.
@@ -53,7 +53,7 @@ The 3.5.0 release includes features and fixes from a whopping 129 pull requests
});
```
See https://openlayers.org/en/master/examples/vector-layer.html for a real example.
See https://openlayers.org/en/latest/examples/vector-layer.html for a real example.
Note that you no longer need to set a `projection` on the source!
@@ -75,7 +75,7 @@ The 3.5.0 release includes features and fixes from a whopping 129 pull requests
The above code uses jQuery to send an Ajax request, but you can obviously use any Ajax library.
See https://openlayers.org/en/master/examples/igc.html for a real example.
See https://openlayers.org/en/latest/examples/igc.html for a real example.
* Note about KML
@@ -133,9 +133,9 @@ The 3.5.0 release includes features and fixes from a whopping 129 pull requests
});
```
See https://openlayers.org/en/master/examples/vector-osm.html for a real example.
See https://openlayers.org/en/latest/examples/vector-osm.html for a real example.
* The experimental `ol.loadingstrategy.createTile` function has been renamed to `ol.loadingstrategy.tile`. The signature of the function hasn't changed. See https://openlayers.org/en/master/examples/vector-osm.html for an example.
* The experimental `ol.loadingstrategy.createTile` function has been renamed to `ol.loadingstrategy.tile`. The signature of the function hasn't changed. See https://openlayers.org/en/latest/examples/vector-osm.html for an example.
@@ -83,7 +83,7 @@ Generally, the responsibility of applying center/rotation/resolutions constraint
##### The view `extent` option now applies to the whole viewport
Previously, this options only constrained the view *center*. This behaviour can still be obtained by specifying `constrainCenterOnly` in the view options.
Previously, this options only constrained the view *center*. This behaviour can still be obtained by specifying `constrainOnlyCenter` in the view options.
As a side effect, the view `rotate` method is gone and has been replaced with `adjustRotation` which takes a delta as input.
With 47 pull requests, this release keeps up the momentum of the v6.x effort and brings several bug fixes, performance improvements and new features. In addition to that, we added some missing documentation to our API docs and gave them some usability improvements.
## New features
* A new, performance optimized hit detection API on the layer level, `Layer#getFeatures(pixel)` has been introduced. At this point it is implemented for vector, vector tile and image vector layers, and is recommended when performance is critical, e.g. for hit detection on mouseover.
* For the WebGLPoints layer, we made several additions to the style expressions system. This includes a `case` operator, support for array and string types, and type checking.
* [#10198](https://github.com/openlayers/openlayers/pull/10198) - WebGL renderer / use the specified loading strategy for the vector data ([@jahow](https://github.com/jahow))
* [#10212](https://github.com/openlayers/openlayers/pull/10212) - Add config file for dependabot ([@fredj](https://github.com/fredj))
* [#10187](https://github.com/openlayers/openlayers/pull/10187) - Set touch-action to allow native touch gestures ([@ahocevar](https://github.com/ahocevar))
* [#10194](https://github.com/openlayers/openlayers/pull/10194) - Added check to make sure extent array has four objects. ([@MrSoUndso](https://github.com/MrSoUndso))
* [#10204](https://github.com/openlayers/openlayers/pull/10204) - Avoid scrolling over navigation ([@tschaub](https://github.com/tschaub))
* [#10205](https://github.com/openlayers/openlayers/pull/10205) - Add the default to the type column ([@tschaub](https://github.com/tschaub))
* [#10178](https://github.com/openlayers/openlayers/pull/10178) - Make ol/interaction/Select#handleEvent return always true. ([@TieSKey](https://github.com/TieSKey))
* [#10203](https://github.com/openlayers/openlayers/pull/10203) - Keep issues assigned to a milestone from going stale ([@tschaub](https://github.com/tschaub))
* [#10200](https://github.com/openlayers/openlayers/pull/10200) - Carbon add on API docs ([@tschaub](https://github.com/tschaub))
* [#10196](https://github.com/openlayers/openlayers/pull/10196) - Webgl / add support for string and arrays in style expressions ([@jahow](https://github.com/jahow))
* [#10195](https://github.com/openlayers/openlayers/pull/10195) - Treat hsl/hsla as named colors ([@mike-000](https://github.com/mike-000))
* [#10188](https://github.com/openlayers/openlayers/pull/10188) - Document that map render events do not have a context set ([@ahocevar](https://github.com/ahocevar))
* [#10184](https://github.com/openlayers/openlayers/pull/10184) - Clamp the weight value between 0 and 1 ([@fredj](https://github.com/fredj))
* [#10175](https://github.com/openlayers/openlayers/pull/10175) - Remove description from type tag ([@tschaub](https://github.com/tschaub))
* [#10176](https://github.com/openlayers/openlayers/pull/10176) - Avoid toggling when clicking the title ([@tschaub](https://github.com/tschaub))
* [#10172](https://github.com/openlayers/openlayers/pull/10172) - Ensure inherited docs are shown ([@ahocevar](https://github.com/ahocevar))
* [#10171](https://github.com/openlayers/openlayers/pull/10171) - Open default attributions links in a new tab or window ([@mike-000](https://github.com/mike-000))
* [#10161](https://github.com/openlayers/openlayers/pull/10161) - Implement getFeatures() for ol/layer/VectorImage ([@ahocevar](https://github.com/ahocevar))
* [#10168](https://github.com/openlayers/openlayers/pull/10168) - Webgl / Add support for filtering and color interpolation in style expressions ([@jahow](https://github.com/jahow))
* [#10170](https://github.com/openlayers/openlayers/pull/10170) - Add back html from select-features example ([@openlayers](https://github.com/openlayers))
* [#10093](https://github.com/openlayers/openlayers/pull/10093) - Set label text for Graticule option styles ([@mike-000](https://github.com/mike-000))
* [#10160](https://github.com/openlayers/openlayers/pull/10160) - Improve test in case of async call ([@ejn](https://github.com/ejn))
* [#10159](https://github.com/openlayers/openlayers/pull/10159) - Fix target name collision in event.Target and Control ([@ejn](https://github.com/ejn))
* [#10138](https://github.com/openlayers/openlayers/pull/10138) - Should be able to ovveride defaultvalue of style in selection. ([@wirdehall](https://github.com/wirdehall))
* [#10135](https://github.com/openlayers/openlayers/pull/10135) - Revise the description of applyTransform for geometries ([@mike-000](https://github.com/mike-000))
* [#10094](https://github.com/openlayers/openlayers/pull/10094) - New Layer#getFeatures method with fast hit detection ([@ahocevar](https://github.com/ahocevar))
* [#10104](https://github.com/openlayers/openlayers/pull/10104) - Remove font sizing from the attribution control ([@openlayers](https://github.com/openlayers))
* [#10108](https://github.com/openlayers/openlayers/pull/10108) - Fix documentation for handleMoveEvent ([@notnotse](https://github.com/notnotse))
* [#10118](https://github.com/openlayers/openlayers/pull/10118) - Document the OSM crossOrigin default ([@mike-000](https://github.com/mike-000))
* [#10112](https://github.com/openlayers/openlayers/pull/10112) - No ERROR state for render tiles ([@ahocevar](https://github.com/ahocevar))
* [#10115](https://github.com/openlayers/openlayers/pull/10115) - Improve Heatmap hit detection test ([@jahow](https://github.com/jahow))
* [#10111](https://github.com/openlayers/openlayers/pull/10111) - Correct the defaulting of ol/source/VectorTile maxZoom ([@mike-000](https://github.com/mike-000))
* [#10102](https://github.com/openlayers/openlayers/pull/10102) - Cosmetic type fixes ([@KlausBenndorf](https://github.com/KlausBenndorf))
* [#10107](https://github.com/openlayers/openlayers/pull/10107) - Update Vector Tile Info example test for no features ([@mike-000](https://github.com/mike-000))
* [#10097](https://github.com/openlayers/openlayers/pull/10097) - Align layer canvas to the left ([@fredj](https://github.com/fredj))
* [#10101](https://github.com/openlayers/openlayers/pull/10101) - Add hit detection support on the Heatmap layer ([@jahow](https://github.com/jahow))
* [#10087](https://github.com/openlayers/openlayers/pull/10087) - Add example showing vector tiles in EPSG:4326 ([@petrsloup](https://github.com/petrsloup))
* [#10086](https://github.com/openlayers/openlayers/pull/10086) - Update mapbox-style example ([@petrsloup](https://github.com/petrsloup))
* [#10083](https://github.com/openlayers/openlayers/pull/10083) - webgl points layer example fixes ([@MoonE](https://github.com/MoonE))
* [#10074](https://github.com/openlayers/openlayers/pull/10074) - Remove offsets from mouse position calculation ([@mike-000](https://github.com/mike-000))
* [#10208](https://github.com/openlayers/openlayers/pull/10208) - Bump pixelmatch from 5.0.2 to 5.1.0 ([@openlayers](https://github.com/openlayers))
* [#10210](https://github.com/openlayers/openlayers/pull/10210) - Bump glob from 7.1.4 to 7.1.5 ([@openlayers](https://github.com/openlayers))
* [#10209](https://github.com/openlayers/openlayers/pull/10209) - Bump karma from 4.1.0 to 4.4.1 ([@openlayers](https://github.com/openlayers))
* [#10207](https://github.com/openlayers/openlayers/pull/10207) - Bump ol-mapbox-style from 5.0.0-beta.3 to 5.0.2 ([@openlayers](https://github.com/openlayers))
* [#10157](https://github.com/openlayers/openlayers/pull/10157) - Bump karma-coverage-istanbul-reporter from 2.0.5 to 2.1.0 ([@openlayers](https://github.com/openlayers))
* [#10155](https://github.com/openlayers/openlayers/pull/10155) - Bump @types/pbf from 3.0.1 to 3.0.2 ([@openlayers](https://github.com/openlayers))
* [#10153](https://github.com/openlayers/openlayers/pull/10153) - Bump yargs from 14.0.0 to 14.2.0 ([@openlayers](https://github.com/openlayers))
* [#10154](https://github.com/openlayers/openlayers/pull/10154) - Bump @babel/core from 7.4.4 to 7.6.4 ([@openlayers](https://github.com/openlayers))
* [#10151](https://github.com/openlayers/openlayers/pull/10151) - Bump rollup-plugin-babel from 4.3.2 to 4.3.3 ([@openlayers](https://github.com/openlayers))
* [#10148](https://github.com/openlayers/openlayers/pull/10148) - Bump rollup-plugin-node-resolve from 5.0.0 to 5.2.0 ([@openlayers](https://github.com/openlayers))
* [#10150](https://github.com/openlayers/openlayers/pull/10150) - Bump copy-webpack-plugin from 5.0.3 to 5.0.4 ([@openlayers](https://github.com/openlayers))
* [#10149](https://github.com/openlayers/openlayers/pull/10149) - Bump rbush from 3.0.0 to 3.0.1 ([@openlayers](https://github.com/openlayers))
* [#10147](https://github.com/openlayers/openlayers/pull/10147) - Bump rollup from 1.12.0 to 1.25.1 ([@openlayers](https://github.com/openlayers))
* [#10132](https://github.com/openlayers/openlayers/pull/10132) - Update webpack to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#10143](https://github.com/openlayers/openlayers/pull/10143) - Update mocha to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#10117](https://github.com/openlayers/openlayers/pull/10117) - Update pbf to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#10114](https://github.com/openlayers/openlayers/pull/10114) - Update coveralls to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#10116](https://github.com/openlayers/openlayers/pull/10116) - Update webpack to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#10105](https://github.com/openlayers/openlayers/pull/10105) - Update jsdoc-plugin-typescript to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
Hot on the heels of OpenLayers 6.x, this patch release includes a few fixes for existing functionality. There should be nothing special needed to upgrade an application from 6.x to 6.1.1. See the 6.0.0 release notes for details on upgrading from an older version.
## Changes
* [#10235](https://github.com/openlayers/openlayers/pull/10235) - Various optimizations and fixes for the WebGL points renderer ([@jahow](https://github.com/jahow))
* [#10244](https://github.com/openlayers/openlayers/pull/10244) - Update to new eslint config with no-multi-assign ([@ahocevar](https://github.com/ahocevar))
* [#10243](https://github.com/openlayers/openlayers/pull/10243) - Store correct font value ([@ahocevar](https://github.com/ahocevar))
* [#10237](https://github.com/openlayers/openlayers/pull/10237) - Fix layer zIndex test with falsy values ([@fredj](https://github.com/fredj))
* [#10221](https://github.com/openlayers/openlayers/pull/10221) - Fix for undefined Source ([@Kai-W](https://github.com/Kai-W))
* [#10228](https://github.com/openlayers/openlayers/pull/10228) - Use render tiles instead of source tiles for hit detection ([@ahocevar](https://github.com/ahocevar))
With almost 90 pull requests, this release brings several new features, performance improvements and bug fixes. In addition to that, we once again improved the API documentation and the example pages.
## New features and improvements
* Mousewheel zooming now brings the same user experience as trackpad zooming. One click on the wheel no longer means a jump of a whole zoom level. Instead, depending on the speed of moving the wheel, the user has fine-grained control over zoom increments/decrements.
* Users now have better control over the initial map viewport when the aspect ratio of the map is different from a specified initial extent.
* Text rendering has been optimized for decluttering and improved for rotated views. This means lower memory footprint and no more blurry text when the map is rotated. **Note:** Whit this change, the label cache has been deprecated.
* A new `displacement` option for icon, circle and regular shape styles makes positioning of point symbolizers more flexible.
* Several improvements have been made to the KML parser for reading styles, bringing the rendered result much closer to Google Earth.
* OpenLayers is now less aggressive on stopping events and preventing event default behavior. This means that users have more control over events, making it easier to use interactive SVGs as layers and to embed maps on scrollable pages.
* Vector tile layers now have a `vector` render mode, which brings improved zooming experience for sources with not too much data.
* We replaced the previous pointer events polyfill to elm-pep, which should work better in web components.
## List of all changes
* [#10613](https://github.com/openlayers/openlayers/pull/10613) - Show KML name labels for Points in MultiGeometry ([@mike-000](https://github.com/mike-000))
* [#10632](https://github.com/openlayers/openlayers/pull/10632) - Draw interaction: Append coordinates to polygons and lines (reworked) ([@jahow](https://github.com/jahow))
* [#9565](https://github.com/openlayers/openlayers/pull/9565) - Make mousewheel zoom behave like trackpad zoom. ([@dbrnz](https://github.com/dbrnz))
* [#10580](https://github.com/openlayers/openlayers/pull/10580) - Fix KML Polystyle outline 0 conflict with Linestyle for linestrings ([@mike-000](https://github.com/mike-000))
* [#10612](https://github.com/openlayers/openlayers/pull/10612) - Make examples work in Internet Explorer ([@ahocevar](https://github.com/ahocevar))
* [#10587](https://github.com/openlayers/openlayers/pull/10587) - Adds option to View for using larger resolution value when clamping #10586 ([@jeremy-smith-maco](https://github.com/jeremy-smith-maco))
* [#10607](https://github.com/openlayers/openlayers/pull/10607) - Update elm-pep to fix builds for IE < 11 ([@ahocevar](https://github.com/ahocevar))
* [#10598](https://github.com/openlayers/openlayers/pull/10598) - Remove inheritDoc to work around JSDoc issue ([@ahocevar](https://github.com/ahocevar))
* [#10574](https://github.com/openlayers/openlayers/pull/10574) - Text rendering improvements ([@ahocevar](https://github.com/ahocevar))
* [#10581](https://github.com/openlayers/openlayers/pull/10581) - Use package-lock.json for the checksum calculation ([@DanielRuf](https://github.com/DanielRuf))
* [#10584](https://github.com/openlayers/openlayers/pull/10584) - fixed issue with version throwing an error if it is null ([@MrSoUndso](https://github.com/MrSoUndso))
* [#10575](https://github.com/openlayers/openlayers/pull/10575) - Fix ol/layer/Graticule rendercomplete problem ([@mike-000](https://github.com/mike-000))
* [#10562](https://github.com/openlayers/openlayers/pull/10562) - Zoomify: Separate the service pixel ratio and the device pixel ratio ([@crubier](https://github.com/crubier))
* [#10573](https://github.com/openlayers/openlayers/pull/10573) - Replace Bing layer with MapTiler in example ([@mike-000](https://github.com/mike-000))
* [#10570](https://github.com/openlayers/openlayers/pull/10570) - Use correct extent for the vector image ([@ahocevar](https://github.com/ahocevar))
* [#10572](https://github.com/openlayers/openlayers/pull/10572) - Assert each layer is only added to the map once ([@ahocevar](https://github.com/ahocevar))
* [#10563](https://github.com/openlayers/openlayers/pull/10563) - More compatible way of exporting a map as pdf ([@ahocevar](https://github.com/ahocevar))
* [#10545](https://github.com/openlayers/openlayers/pull/10545) - Make KML point feature styles compatible with declutter ([@mike-000](https://github.com/mike-000))
* [#10542](https://github.com/openlayers/openlayers/pull/10542) - Replace Bing layer with MapTiler in KML example ([@mike-000](https://github.com/mike-000))
* [#10543](https://github.com/openlayers/openlayers/pull/10543) - @api tag must not have a value. ([@MoonE](https://github.com/MoonE))
* [#10547](https://github.com/openlayers/openlayers/pull/10547) - Only generate module apidoc pages when it contains api tags ([@MoonE](https://github.com/MoonE))
* [#10502](https://github.com/openlayers/openlayers/pull/10502) - Stop events that originate with a removed target ([@walkermatt](https://github.com/walkermatt))
* [#10527](https://github.com/openlayers/openlayers/pull/10527) - Remove label cache, render text directly to target canvas ([@ahocevar](https://github.com/ahocevar))
* [#10534](https://github.com/openlayers/openlayers/pull/10534) - [GeoJSON] Read projection from CRS type EPSG ([@wussup](https://github.com/wussup))
* [#10513](https://github.com/openlayers/openlayers/pull/10513) - fixed flag-name in upgrade notes ([@fgubler](https://github.com/fgubler))
* [#10504](https://github.com/openlayers/openlayers/pull/10504) - Fix for reset north when rotation is 360 degrees ([@mike-000](https://github.com/mike-000))
* [#10510](https://github.com/openlayers/openlayers/pull/10510) - Remove build/apidoc before running jsdoc again ([@MoonE](https://github.com/MoonE))
* [#10498](https://github.com/openlayers/openlayers/pull/10498) - Fixing issue #10497 on behalf of LarryHuang ([@gazza0](https://github.com/gazza0))
* [#10496](https://github.com/openlayers/openlayers/pull/10496) - Do not stop events when dragging ([@ahocevar](https://github.com/ahocevar))
* [#10478](https://github.com/openlayers/openlayers/pull/10478) - Do not abort and dispose of tiles ([@ahocevar](https://github.com/ahocevar))
* [#10495](https://github.com/openlayers/openlayers/pull/10495) - typo in view.fit ([@danielklim](https://github.com/danielklim))
* [#10473](https://github.com/openlayers/openlayers/pull/10473) - Fix for undefined source in Vector layer ([@mike-000](https://github.com/mike-000))
* [#10484](https://github.com/openlayers/openlayers/pull/10484) - Use a function to get the value of the gradient ([@fredj](https://github.com/fredj))
* [#10262](https://github.com/openlayers/openlayers/pull/10262) - Rework to make Document and XMLSerializer lazy and injectable ([@bjornharrtell](https://github.com/bjornharrtell))
* [#10461](https://github.com/openlayers/openlayers/pull/10461) - Fix link in apidocs to ObjectEvent. ([@MoonE](https://github.com/MoonE))
* [#10413](https://github.com/openlayers/openlayers/pull/10413) - Limit the ZoomSlider's range to the view's constrained resolution. ([@MoonE](https://github.com/MoonE))
* [#10438](https://github.com/openlayers/openlayers/pull/10438) - Avoid accessing the DOM to read the viewport size too often ([@jahow](https://github.com/jahow))
* [#10439](https://github.com/openlayers/openlayers/pull/10439) - WebGL points layer / add support for symbol rotation ([@jahow](https://github.com/jahow))
* [#10434](https://github.com/openlayers/openlayers/pull/10434) - Disable image smoothing for the DEM source in the Sea Level example ([@mike-000](https://github.com/mike-000))
* [#10417](https://github.com/openlayers/openlayers/pull/10417) - Replace Bing layer with MapTiler ([@mike-000](https://github.com/mike-000))
* [#10415](https://github.com/openlayers/openlayers/pull/10415) - Control button span element pointer events ([@mike-000](https://github.com/mike-000))
* [#10409](https://github.com/openlayers/openlayers/pull/10409) - Improve viewport computation in WebGL Postprocessing ([@jahow](https://github.com/jahow))
* [#10119](https://github.com/openlayers/openlayers/pull/10119) - Add crossOrigin option to ol/format/KML for icons ([@mike-000](https://github.com/mike-000))
* [#10181](https://github.com/openlayers/openlayers/pull/10181) - add tags to example docs ([@roemhildtg](https://github.com/roemhildtg))
* [#10407](https://github.com/openlayers/openlayers/pull/10407) - Use render feature compatible extent check ([@ahocevar](https://github.com/ahocevar))
* [#10340](https://github.com/openlayers/openlayers/pull/10340) - Draw circles and custom geometry in user coordinates ([@mike-000](https://github.com/mike-000))
* [#10393](https://github.com/openlayers/openlayers/pull/10393) - getFeaturesInExtent function for ol/source/VectorTile ([@ahocevar](https://github.com/ahocevar))
* [#10402](https://github.com/openlayers/openlayers/pull/10402) - Do not preventDefault on pointerdown ([@ahocevar](https://github.com/ahocevar))
* [#10269](https://github.com/openlayers/openlayers/pull/10269) - Replace the BNG layer source in the Raster Reprojection example ([@mike-000](https://github.com/mike-000))
* [#10394](https://github.com/openlayers/openlayers/pull/10394) - Remove map renderer element when disposing ([@ahocevar](https://github.com/ahocevar))
* [#10391](https://github.com/openlayers/openlayers/pull/10391) - Use box-shadow css instead of filter ([@ahocevar](https://github.com/ahocevar))
* [#10380](https://github.com/openlayers/openlayers/pull/10380) - Adjust examples for layer canvas pixel ratio and rotation ([@mike-000](https://github.com/mike-000))
* [#10384](https://github.com/openlayers/openlayers/pull/10384) - Include Transform typedef in API ([@mike-000](https://github.com/mike-000))
* [#10363](https://github.com/openlayers/openlayers/pull/10363) - Interactive SVG layer example ([@ahocevar](https://github.com/ahocevar))
* [#10120](https://github.com/openlayers/openlayers/pull/10120) - Resolve constraints using anchor if following a cancelled animation ([@mike-000](https://github.com/mike-000))
* [#10370](https://github.com/openlayers/openlayers/pull/10370) - Replace Bing layer with MapTiler ([@mike-000](https://github.com/mike-000))
* [#10362](https://github.com/openlayers/openlayers/pull/10362) - Remove line that was accidently added with #10332 ([@ahocevar](https://github.com/ahocevar))
* [#10309](https://github.com/openlayers/openlayers/pull/10309) - Bring back vector render mode for vector tile layers ([@ahocevar](https://github.com/ahocevar))
* [#10301](https://github.com/openlayers/openlayers/pull/10301) - Create hit detection data per layer and without requestAnimationFrame ([@ahocevar](https://github.com/ahocevar))
* [#10347](https://github.com/openlayers/openlayers/pull/10347) - Set utfgrid tile as loaded after load instead of empty ([@adube](https://github.com/adube))
* [#10321](https://github.com/openlayers/openlayers/pull/10321) - Support touch events for DragBox interaction ([@greggian](https://github.com/greggian))
* [#10315](https://github.com/openlayers/openlayers/pull/10315) - Replace Bing sources in some examples ([@mike-000](https://github.com/mike-000))
* [#10330](https://github.com/openlayers/openlayers/pull/10330) - Fix modifying circle geometries ([@greggian](https://github.com/greggian))
* [#10318](https://github.com/openlayers/openlayers/pull/10318) - Use a minimalist pointer events polyfill ([@ahocevar](https://github.com/ahocevar))
* [#10308](https://github.com/openlayers/openlayers/pull/10308) - Fix feature lookup after removal of alpha ([@ahocevar](https://github.com/ahocevar))
* [#10310](https://github.com/openlayers/openlayers/pull/10310) - Ensure that OverviewMap respects the initial rotation of attached Maps ([@brianhelba](https://github.com/brianhelba))
* [#10302](https://github.com/openlayers/openlayers/pull/10302) - Do not use Math.sign() to support very old browsers ([@ahocevar](https://github.com/ahocevar))
* [#10295](https://github.com/openlayers/openlayers/pull/10295) - Do not fail when hit detecting features without style ([@ahocevar](https://github.com/ahocevar))
* [#10293](https://github.com/openlayers/openlayers/pull/10293) - Do not hit detect while tile is loading ([@ahocevar](https://github.com/ahocevar))
* [#10292](https://github.com/openlayers/openlayers/pull/10292) - Fix typo in jsdoc in ol/source/WMTS ([@jomue](https://github.com/jomue))
* [#10291](https://github.com/openlayers/openlayers/pull/10291) - tabindex without focus condition ([@ahocevar](https://github.com/ahocevar))
* [#10286](https://github.com/openlayers/openlayers/pull/10286) - Use passive option to avoid Chrome warning ([@ahocevar](https://github.com/ahocevar))
* [#10285](https://github.com/openlayers/openlayers/pull/10285) - Fix WMS GetLegendGraphic example codesandbox error ([@mike-000](https://github.com/mike-000))
* [#10283](https://github.com/openlayers/openlayers/pull/10283) - Use the originalEvent in the targetNotEditable condition ([@fredj](https://github.com/fredj))
* [#10282](https://github.com/openlayers/openlayers/pull/10282) - Fix documentation of Stroke.lineDash default value ([@jansule](https://github.com/jansule))
* [#10259](https://github.com/openlayers/openlayers/pull/10259) - Remove all the sketch features in abortDrawing ([@fredj](https://github.com/fredj))
* [#10265](https://github.com/openlayers/openlayers/pull/10265) - Update operators doc in WebGL points layer example ([@fredj](https://github.com/fredj))
* [#10256](https://github.com/openlayers/openlayers/pull/10256) - Do not bypass measureTextWidth ([@ahocevar](https://github.com/ahocevar))
* [#10264](https://github.com/openlayers/openlayers/pull/10264) - Remove unused variable from vertex shader ([@fredj](https://github.com/fredj))
* [#10257](https://github.com/openlayers/openlayers/pull/10257) - Allow View.adjust* methods to take a null opt_anchor ([@brianhelba](https://github.com/brianhelba))
* [#10261](https://github.com/openlayers/openlayers/pull/10261) - WebGL / do not throw error when shader compilation gives a warning ([@jahow](https://github.com/jahow))
* [#10255](https://github.com/openlayers/openlayers/pull/10255) - Don't use instanceof HTMLElement in handleMapBrowserEvent ([@fredj](https://github.com/fredj))
<details>
<summary>Dependency Updates</summary>
* [#10629](https://github.com/openlayers/openlayers/pull/10629) - Bump ol-mapbox-style from 6.0.0 to 6.0.1 ([@openlayers](https://github.com/openlayers))
* [#10628](https://github.com/openlayers/openlayers/pull/10628) - Bump puppeteer from 2.1.0 to 2.1.1 ([@openlayers](https://github.com/openlayers))
* [#10627](https://github.com/openlayers/openlayers/pull/10627) - Bump handlebars from 4.7.2 to 4.7.3 ([@openlayers](https://github.com/openlayers))
* [#10626](https://github.com/openlayers/openlayers/pull/10626) - Bump webpack-dev-server from 3.10.2 to 3.10.3 ([@openlayers](https://github.com/openlayers))
* [#10600](https://github.com/openlayers/openlayers/pull/10600) - Bump puppeteer from 2.0.0 to 2.1.0 ([@openlayers](https://github.com/openlayers))
* [#10606](https://github.com/openlayers/openlayers/pull/10606) - Bump @babel/core from 7.8.3 to 7.8.4 ([@openlayers](https://github.com/openlayers))
* [#10605](https://github.com/openlayers/openlayers/pull/10605) - Bump webpack-dev-server from 3.10.1 to 3.10.2 ([@openlayers](https://github.com/openlayers))
* [#10604](https://github.com/openlayers/openlayers/pull/10604) - Bump rollup from 1.29.1 to 1.31.0 ([@openlayers](https://github.com/openlayers))
* [#10603](https://github.com/openlayers/openlayers/pull/10603) - Bump @babel/preset-env from 7.8.3 to 7.8.4 ([@openlayers](https://github.com/openlayers))
* [#10602](https://github.com/openlayers/openlayers/pull/10602) - Bump url-polyfill from 1.1.7 to 1.1.8 ([@openlayers](https://github.com/openlayers))
* [#10601](https://github.com/openlayers/openlayers/pull/10601) - Bump terser-webpack-plugin from 2.3.2 to 2.3.4 ([@openlayers](https://github.com/openlayers))
* [#10578](https://github.com/openlayers/openlayers/pull/10578) - Bump sinon from 8.1.0 to 8.1.1 ([@openlayers](https://github.com/openlayers))
* [#10577](https://github.com/openlayers/openlayers/pull/10577) - Bump mocha from 7.0.0 to 7.0.1 ([@openlayers](https://github.com/openlayers))
* [#10576](https://github.com/openlayers/openlayers/pull/10576) - Bump rollup from 1.29.0 to 1.29.1 ([@openlayers](https://github.com/openlayers))
* [#10551](https://github.com/openlayers/openlayers/pull/10551) - Bump handlebars from 4.7.1 to 4.7.2 ([@openlayers](https://github.com/openlayers))
* [#10550](https://github.com/openlayers/openlayers/pull/10550) - Bump @babel/preset-env from 7.8.2 to 7.8.3 ([@openlayers](https://github.com/openlayers))
* [#10549](https://github.com/openlayers/openlayers/pull/10549) - Bump sinon from 8.0.4 to 8.1.0 ([@openlayers](https://github.com/openlayers))
* [#10548](https://github.com/openlayers/openlayers/pull/10548) - Bump @babel/core from 7.8.0 to 7.8.3 ([@openlayers](https://github.com/openlayers))
* [#10518](https://github.com/openlayers/openlayers/pull/10518) - Bump front-matter from 3.0.2 to 3.1.0 ([@openlayers](https://github.com/openlayers))
* [#10516](https://github.com/openlayers/openlayers/pull/10516) - Bump handlebars from 4.5.3 to 4.7.1 ([@openlayers](https://github.com/openlayers))
* [#10514](https://github.com/openlayers/openlayers/pull/10514) - Bump terser-webpack-plugin from 2.3.1 to 2.3.2 ([@openlayers](https://github.com/openlayers))
* [#10523](https://github.com/openlayers/openlayers/pull/10523) - Bump sinon from 8.0.2 to 8.0.4 ([@openlayers](https://github.com/openlayers))
* [#10515](https://github.com/openlayers/openlayers/pull/10515) - Bump @babel/preset-env from 7.7.7 to 7.8.2 ([@openlayers](https://github.com/openlayers))
* [#10517](https://github.com/openlayers/openlayers/pull/10517) - Bump karma-firefox-launcher from 1.2.0 to 1.3.0 ([@openlayers](https://github.com/openlayers))
* [#10519](https://github.com/openlayers/openlayers/pull/10519) - Bump @babel/core from 7.7.7 to 7.8.0 ([@openlayers](https://github.com/openlayers))
* [#10520](https://github.com/openlayers/openlayers/pull/10520) - Bump globby from 10.0.1 to 11.0.0 ([@openlayers](https://github.com/openlayers))
* [#10521](https://github.com/openlayers/openlayers/pull/10521) - Bump rollup-plugin-terser from 5.1.3 to 5.2.0 ([@openlayers](https://github.com/openlayers))
* [#10522](https://github.com/openlayers/openlayers/pull/10522) - Bump rollup from 1.28.0 to 1.29.0 ([@openlayers](https://github.com/openlayers))
* [#10480](https://github.com/openlayers/openlayers/pull/10480) - Bump mocha from 6.2.2 to 7.0.0 ([@openlayers](https://github.com/openlayers))
* [#10482](https://github.com/openlayers/openlayers/pull/10482) - Bump sinon from 8.0.1 to 8.0.2 ([@openlayers](https://github.com/openlayers))
* [#10481](https://github.com/openlayers/openlayers/pull/10481) - Bump yargs from 15.0.2 to 15.1.0 ([@openlayers](https://github.com/openlayers))
* [#10479](https://github.com/openlayers/openlayers/pull/10479) - Bump rollup from 1.27.14 to 1.28.0 ([@openlayers](https://github.com/openlayers))
* [#10466](https://github.com/openlayers/openlayers/pull/10466) - Bump webpack from 4.41.4 to 4.41.5 ([@openlayers](https://github.com/openlayers))
* [#10467](https://github.com/openlayers/openlayers/pull/10467) - Bump sinon from 8.0.0 to 8.0.1 ([@openlayers](https://github.com/openlayers))
* [#10450](https://github.com/openlayers/openlayers/pull/10450) - Bump @babel/core from 7.7.5 to 7.7.7 ([@openlayers](https://github.com/openlayers))
* [#10449](https://github.com/openlayers/openlayers/pull/10449) - Bump eslint from 6.7.2 to 6.8.0 ([@openlayers](https://github.com/openlayers))
* [#10448](https://github.com/openlayers/openlayers/pull/10448) - Bump rollup from 1.27.13 to 1.27.14 ([@openlayers](https://github.com/openlayers))
* [#10447](https://github.com/openlayers/openlayers/pull/10447) - Bump @babel/preset-env from 7.7.6 to 7.7.7 ([@openlayers](https://github.com/openlayers))
* [#10446](https://github.com/openlayers/openlayers/pull/10446) - Bump sinon from 7.5.0 to 8.0.0 ([@openlayers](https://github.com/openlayers))
* [#10445](https://github.com/openlayers/openlayers/pull/10445) - Bump webpack from 4.41.2 to 4.41.4 ([@openlayers](https://github.com/openlayers))
* [#10444](https://github.com/openlayers/openlayers/pull/10444) - Bump terser-webpack-plugin from 2.3.0 to 2.3.1 ([@openlayers](https://github.com/openlayers))
* [#10443](https://github.com/openlayers/openlayers/pull/10443) - Bump webpack-dev-server from 3.9.0 to 3.10.1 ([@openlayers](https://github.com/openlayers))
* [#10425](https://github.com/openlayers/openlayers/pull/10425) - Bump elm-pep from 1.0.2 to 1.0.3 ([@openlayers](https://github.com/openlayers))
* [#10427](https://github.com/openlayers/openlayers/pull/10427) - Bump webpack-cli from 3.3.2 to 3.3.10 ([@openlayers](https://github.com/openlayers))
* [#10426](https://github.com/openlayers/openlayers/pull/10426) - Bump copy-webpack-plugin from 5.0.5 to 5.1.1 ([@openlayers](https://github.com/openlayers))
* [#10424](https://github.com/openlayers/openlayers/pull/10424) - Bump eslint from 6.7.1 to 6.7.2 ([@openlayers](https://github.com/openlayers))
* [#10423](https://github.com/openlayers/openlayers/pull/10423) - Bump marked from 0.7.0 to 0.8.0 ([@openlayers](https://github.com/openlayers))
* [#10422](https://github.com/openlayers/openlayers/pull/10422) - Bump url-polyfill from 1.1.5 to 1.1.7 ([@openlayers](https://github.com/openlayers))
* [#10421](https://github.com/openlayers/openlayers/pull/10421) - Bump rollup-plugin-terser from 5.1.2 to 5.1.3 ([@openlayers](https://github.com/openlayers))
* [#10420](https://github.com/openlayers/openlayers/pull/10420) - Bump terser-webpack-plugin from 2.2.2 to 2.3.0 ([@openlayers](https://github.com/openlayers))
* [#10419](https://github.com/openlayers/openlayers/pull/10419) - Bump rollup from 1.27.9 to 1.27.13 ([@openlayers](https://github.com/openlayers))
* [#10418](https://github.com/openlayers/openlayers/pull/10418) - Bump babel-loader from 8.0.5 to 8.0.6 ([@openlayers](https://github.com/openlayers))
* [#10399](https://github.com/openlayers/openlayers/pull/10399) - Bump rollup from 1.25.1 to 1.27.9 ([@openlayers](https://github.com/openlayers))
* [#10398](https://github.com/openlayers/openlayers/pull/10398) - Bump terser-webpack-plugin from 2.2.1 to 2.2.2 ([@openlayers](https://github.com/openlayers))
* [#10397](https://github.com/openlayers/openlayers/pull/10397) - Bump @babel/core from 7.7.4 to 7.7.5 ([@openlayers](https://github.com/openlayers))
* [#10396](https://github.com/openlayers/openlayers/pull/10396) - Bump @babel/preset-env from 7.7.4 to 7.7.6 ([@openlayers](https://github.com/openlayers))
* [#10365](https://github.com/openlayers/openlayers/pull/10365) - Bump @babel/preset-env from 7.6.3 to 7.7.4 ([@openlayers](https://github.com/openlayers))
* [#10366](https://github.com/openlayers/openlayers/pull/10366) - Bump karma-coverage-istanbul-reporter from 2.1.0 to 2.1.1 ([@openlayers](https://github.com/openlayers))
* [#10367](https://github.com/openlayers/openlayers/pull/10367) - Bump coveralls from 3.0.7 to 3.0.9 ([@openlayers](https://github.com/openlayers))
* [#10368](https://github.com/openlayers/openlayers/pull/10368) - Bump sinon from 7.3.2 to 7.5.0 ([@openlayers](https://github.com/openlayers))
* [#10369](https://github.com/openlayers/openlayers/pull/10369) - Bump @babel/core from 7.7.2 to 7.7.4 ([@openlayers](https://github.com/openlayers))
* [#10337](https://github.com/openlayers/openlayers/pull/10337) - Bump fs-extra from 8.0.1 to 8.1.0 ([@openlayers](https://github.com/openlayers))
* [#10336](https://github.com/openlayers/openlayers/pull/10336) - Bump eslint from 6.6.0 to 6.7.1 ([@openlayers](https://github.com/openlayers))
* [#10335](https://github.com/openlayers/openlayers/pull/10335) - Bump yargs from 14.2.0 to 15.0.2 ([@openlayers](https://github.com/openlayers))
* [#10334](https://github.com/openlayers/openlayers/pull/10334) - Bump webpack-dev-middleware from 3.6.2 to 3.7.2 ([@openlayers](https://github.com/openlayers))
* [#10333](https://github.com/openlayers/openlayers/pull/10333) - Bump copy-webpack-plugin from 5.0.4 to 5.0.5 ([@openlayers](https://github.com/openlayers))
* [#10306](https://github.com/openlayers/openlayers/pull/10306) - Bump puppeteer from 1.20.0 to 2.0.0 ([@openlayers](https://github.com/openlayers))
* [#10307](https://github.com/openlayers/openlayers/pull/10307) - Bump @babel/core from 7.6.4 to 7.7.2 ([@openlayers](https://github.com/openlayers))
* [#10305](https://github.com/openlayers/openlayers/pull/10305) - Bump proj4 from 2.5.0 to 2.6.0 ([@openlayers](https://github.com/openlayers))
* [#10304](https://github.com/openlayers/openlayers/pull/10304) - Bump handlebars from 4.4.5 to 4.5.3 ([@openlayers](https://github.com/openlayers))
* [#10303](https://github.com/openlayers/openlayers/pull/10303) - Bump glob from 7.1.5 to 7.1.6 ([@openlayers](https://github.com/openlayers))
* [#10280](https://github.com/openlayers/openlayers/pull/10280) - Bump rollup-plugin-commonjs from 10.0.0 to 10.1.0 ([@openlayers](https://github.com/openlayers))
* [#10279](https://github.com/openlayers/openlayers/pull/10279) - Bump rollup-plugin-terser from 5.0.0 to 5.1.2 ([@openlayers](https://github.com/openlayers))
* [#10278](https://github.com/openlayers/openlayers/pull/10278) - Bump eslint from 6.0.0 to 6.6.0 ([@openlayers](https://github.com/openlayers))
* [#10277](https://github.com/openlayers/openlayers/pull/10277) - Bump karma-webpack from 4.0.0-rc.6 to 4.0.2 ([@openlayers](https://github.com/openlayers))
* [#10276](https://github.com/openlayers/openlayers/pull/10276) - Bump webpack-dev-server from 3.3.1 to 3.9.0 ([@openlayers](https://github.com/openlayers))
* [#10251](https://github.com/openlayers/openlayers/pull/10251) - Bump @babel/preset-env from 7.4.4 to 7.6.3 ([@openlayers](https://github.com/openlayers))
* [#10250](https://github.com/openlayers/openlayers/pull/10250) - Bump buble from 0.19.7 to 0.19.8 ([@openlayers](https://github.com/openlayers))
* [#10249](https://github.com/openlayers/openlayers/pull/10249) - Bump karma-firefox-launcher from 1.1.0 to 1.2.0 ([@openlayers](https://github.com/openlayers))
* [#10248](https://github.com/openlayers/openlayers/pull/10248) - Bump html-to-image from 0.1.0 to 0.1.1 ([@openlayers](https://github.com/openlayers))
* [#10247](https://github.com/openlayers/openlayers/pull/10247) - Bump terser-webpack-plugin from 2.0.1 to 2.2.1 ([@openlayers](https://github.com/openlayers))
This is a bugfix release which resolves bundler issues due to a circular dependency, and brings a few documentation and example fixes.
## List of all changes
* [#10656](https://github.com/openlayers/openlayers/pull/10656) - Fix for export PDF example compatibility issues, and layer opacity handling. ([@mike-000](https://github.com/mike-000))
* [#10653](https://github.com/openlayers/openlayers/pull/10653) - More reliable check for module content beyond classes ([@ahocevar](https://github.com/ahocevar))
With more than 70 pull requests, this release not only brings significant improvements to the API documentation. It also fixes some old bugs and brings frequently requested improvements. And good news for TypeScript users: OpenLayers now ships with type definitions in `.d.ts` files.
## New features and improvements
* Several improvements to the Graticule layer, like consistent labeling, no more missing graticule lines, and it now works for views that cross the date line.
* Better support for KML icon colors, as well as fills and outlines in PolyStyle
* Better `ol/Overlay` performance and support for panning off-screen overlays into view
* Most of the rendering code can now be run in web workers, e.g. to render to an OffscreenCanvas
* OpenLayers now works fine in web components with shadow root
* WebGL point layers now support rotation based on feature attributes
* [#10531](https://github.com/openlayers/openlayers/pull/10531) - Dynamically chose the number of subdivisions based on the size of the Image to reproject ([@pjsg](https://github.com/pjsg))
* [#10618](https://github.com/openlayers/openlayers/pull/10618) - Add apidoc-debug task to debug the apidoc generation process ([@MoonE](https://github.com/MoonE))
* [#10343](https://github.com/openlayers/openlayers/pull/10343) - Correct interactions with circle geometries when using user coordinates ([@mike-000](https://github.com/mike-000))
* [#10859](https://github.com/openlayers/openlayers/pull/10859) - Add an example of clipping layer based on a vector source ([@SDaron](https://github.com/SDaron))
* [#10850](https://github.com/openlayers/openlayers/pull/10850) - API docs for enums ([@ahocevar](https://github.com/ahocevar))
* [#10857](https://github.com/openlayers/openlayers/pull/10857) - Make OSM XML example work at dateline and replace Bing with MapTiler ([@mike-000](https://github.com/mike-000))
* [#10858](https://github.com/openlayers/openlayers/pull/10858) - Perform auto-pan when adding an Overlay to a Map ([@ejn](https://github.com/ejn))
* [#10646](https://github.com/openlayers/openlayers/pull/10646) - Write fill and outline in KML PolyStyle ([@mike-000](https://github.com/mike-000))
* [#10800](https://github.com/openlayers/openlayers/pull/10800) - Make Overlay.panIntoView an API method ([@ejn](https://github.com/ejn))
* [#10805](https://github.com/openlayers/openlayers/pull/10805) - make ImageSourceEventType available for consumers ([@regileeso](https://github.com/regileeso))
* [#10822](https://github.com/openlayers/openlayers/pull/10822) - parsing color from IconStyle in KML files ([@lysek](https://github.com/lysek))
* [#10848](https://github.com/openlayers/openlayers/pull/10848) - Speed up Overlay element positioning using CSS translate() ([@horsenit](https://github.com/horsenit))
* [#9590](https://github.com/openlayers/openlayers/pull/9590) - Calculate tile grid extent from extent of bottom-level tile matrix ([@mloskot](https://github.com/mloskot))
* [#10845](https://github.com/openlayers/openlayers/pull/10845) - Fix createHitDetectionImageData error for features with no size ([@gedaiu](https://github.com/gedaiu))
* [#10842](https://github.com/openlayers/openlayers/pull/10842) - Fix custom symbol example short description ([@mike-000](https://github.com/mike-000))
* [#10828](https://github.com/openlayers/openlayers/pull/10828) - Offscreen canvas example ([@ahocevar](https://github.com/ahocevar))
* [#10816](https://github.com/openlayers/openlayers/pull/10816) - Add 'funding' field to `package.json` ([@marcjansen](https://github.com/marcjansen))
* [#10813](https://github.com/openlayers/openlayers/pull/10813) - Add sponsors section to the readme ([@tschaub](https://github.com/tschaub))
* [#10474](https://github.com/openlayers/openlayers/pull/10474) - Fix for undefined source in Image layer ([@mike-000](https://github.com/mike-000))
* [#10787](https://github.com/openlayers/openlayers/pull/10787) - Improved projection extent in the "Reprojection with EPSG.io Search" example ([@mike-000](https://github.com/mike-000))
* [#10792](https://github.com/openlayers/openlayers/pull/10792) - Add support for EventListener Object ([@flexjoly](https://github.com/flexjoly))
* [#10777](https://github.com/openlayers/openlayers/pull/10777) - Keep the render loop running during simulation ([@ahocevar](https://github.com/ahocevar))
* [#10791](https://github.com/openlayers/openlayers/pull/10791) - iOS 12 touchmove: Prevent touchmove event default when no preceding pointer event ([@sosmo](https://github.com/sosmo))
* [#10786](https://github.com/openlayers/openlayers/pull/10786) - Resolve constraints when updating size ([@ahocevar](https://github.com/ahocevar))
* [#10788](https://github.com/openlayers/openlayers/pull/10788) - Add safeguard to handleTouchMove ([@sosmo](https://github.com/sosmo))
* [#10722](https://github.com/openlayers/openlayers/pull/10722) - fix: handle layer clear event in case clear(true) called ([@jellyedwards](https://github.com/jellyedwards))
* [#10723](https://github.com/openlayers/openlayers/pull/10723) - Improve the extent transforms used by Graticule and handle extents crossing the dateline ([@mike-000](https://github.com/mike-000))
* [#10744](https://github.com/openlayers/openlayers/pull/10744) - Ensure the Modify Features Test example opens at correct zoom ([@mike-000](https://github.com/mike-000))
* [#10767](https://github.com/openlayers/openlayers/pull/10767) - Replace Bing layer with MapTiler in examples ([@mike-000](https://github.com/mike-000))
* [#10751](https://github.com/openlayers/openlayers/pull/10751) - Sort events / observables in all cases ([@MoonE](https://github.com/MoonE))
* [#10763](https://github.com/openlayers/openlayers/pull/10763) - TypeScript: Fix inconsistent optionality in various APIs ([@jumpinjackie](https://github.com/jumpinjackie))
* [#10758](https://github.com/openlayers/openlayers/pull/10758) - Allow using feature attributes for symbol rotation in WebGL layers ([@jahow](https://github.com/jahow))
* [#10748](https://github.com/openlayers/openlayers/pull/10748) - Fix "Cannot read property 'anchor' of undefined" in ol/View ([@mike-000](https://github.com/mike-000))
* [#10746](https://github.com/openlayers/openlayers/pull/10746) - Fix building apidoc on windows ([@MoonE](https://github.com/MoonE))
* [#10743](https://github.com/openlayers/openlayers/pull/10743) - Ignore user provided tile cache size when too small ([@ahocevar](https://github.com/ahocevar))
* [#10736](https://github.com/openlayers/openlayers/pull/10736) - Allow cluster source to unlisten from its source ([@M393](https://github.com/M393))
* [#10739](https://github.com/openlayers/openlayers/pull/10739) - Fix typo in trackpad timeout ([@ahocevar](https://github.com/ahocevar))
* [#10740](https://github.com/openlayers/openlayers/pull/10740) - Document tabindex behavior for MouseWheelZoom and DragPan ([@matthias-ccri](https://github.com/matthias-ccri))
* [#10738](https://github.com/openlayers/openlayers/pull/10738) - Fix text background decluttering ([@ahocevar](https://github.com/ahocevar))
* [#10715](https://github.com/openlayers/openlayers/pull/10715) - Fix disappearing graticule labels when rotation returns to 0 ([@mike-000](https://github.com/mike-000))
* [#10713](https://github.com/openlayers/openlayers/pull/10713) - Draw graticule labels in a postrender function ([@mike-000](https://github.com/mike-000))
* [#10711](https://github.com/openlayers/openlayers/pull/10711) - Make sure that optional args are typed accordingly ([@ahocevar](https://github.com/ahocevar))
* [#10710](https://github.com/openlayers/openlayers/pull/10710) - Fix stylefunction return type ([@ahocevar](https://github.com/ahocevar))
* [#10709](https://github.com/openlayers/openlayers/pull/10709) - Fix type and documentation of style function ([@ahocevar](https://github.com/ahocevar))
* [#10707](https://github.com/openlayers/openlayers/pull/10707) - Get default projection for overview map from main map. ([@AugustusKling](https://github.com/AugustusKling))
* [#10699](https://github.com/openlayers/openlayers/pull/10699) - Make Select interaction work when there are multiple instances ([@ahocevar](https://github.com/ahocevar))
* [#10694](https://github.com/openlayers/openlayers/pull/10694) - Draw image with configured opacity ([@M393](https://github.com/M393))
* [#10703](https://github.com/openlayers/openlayers/pull/10703) - CI and test fixes ([@ahocevar](https://github.com/ahocevar))
* [#10688](https://github.com/openlayers/openlayers/pull/10688) - Publish type definition files ([@ahocevar](https://github.com/ahocevar))
* [#10691](https://github.com/openlayers/openlayers/pull/10691) - Do not exceed color range ([@ahocevar](https://github.com/ahocevar))
* [#10683](https://github.com/openlayers/openlayers/pull/10683) - Dispatch enterfullscreen and leavefullscreen from the FullScreen control ([@fredj](https://github.com/fredj))
* [#10676](https://github.com/openlayers/openlayers/pull/10676) - Document that overviewmap view must use same projection as main map ([@mike-000](https://github.com/mike-000))
* [#10678](https://github.com/openlayers/openlayers/pull/10678) - Add maxResolution option to ol/tilegrid.createXYZ() and ol/source/XYZ ([@mike-000](https://github.com/mike-000))
* [#10690](https://github.com/openlayers/openlayers/pull/10690) - Document minZoom and maxZoom options for all layers ([@mike-000](https://github.com/mike-000))
* [#10672](https://github.com/openlayers/openlayers/pull/10672) - Nicer mousewheel and trackpad zooming ([@ahocevar](https://github.com/ahocevar))
* [#10687](https://github.com/openlayers/openlayers/pull/10687) - Increase timeout in listenImage test ([@fredj](https://github.com/fredj))
* [#10684](https://github.com/openlayers/openlayers/pull/10684) - perf: only do expensive reload when texture changes ([@jellyedwards](https://github.com/jellyedwards))
* [#10669](https://github.com/openlayers/openlayers/pull/10669) - More browser compatible Export Map example ([@mike-000](https://github.com/mike-000))
* [#10667](https://github.com/openlayers/openlayers/pull/10667) - Do not render label with the current linedash ([@ahocevar](https://github.com/ahocevar))
* [#10666](https://github.com/openlayers/openlayers/pull/10666) - Load polyfill before example specific scripts in examples template ([@mike-000](https://github.com/mike-000))
* [#10657](https://github.com/openlayers/openlayers/pull/10657) - Changelog for v6.2.1 ([@openlayers](https://github.com/openlayers))
<details>
<summary>Dependency Updates</summary>
* [#10855](https://github.com/openlayers/openlayers/pull/10855) - Bump rollup from 2.1.0 to 2.3.0 ([@openlayers](https://github.com/openlayers))
* [#10854](https://github.com/openlayers/openlayers/pull/10854) - Bump ol-mapbox-style from 6.1.0 to 6.1.1 ([@openlayers](https://github.com/openlayers))
* [#10853](https://github.com/openlayers/openlayers/pull/10853) - Bump buble from 0.19.8 to 0.20.0 ([@openlayers](https://github.com/openlayers))
* [#10852](https://github.com/openlayers/openlayers/pull/10852) - Bump webpack from 4.42.0 to 4.42.1 ([@openlayers](https://github.com/openlayers))
* [#10837](https://github.com/openlayers/openlayers/pull/10837) - Bump ol-mapbox-style from 6.0.1 to 6.1.0 ([@openlayers](https://github.com/openlayers))
* [#10836](https://github.com/openlayers/openlayers/pull/10836) - Bump coveralls from 3.0.9 to 3.0.11 ([@openlayers](https://github.com/openlayers))
* [#10835](https://github.com/openlayers/openlayers/pull/10835) - Bump @babel/preset-env from 7.8.7 to 7.9.0 ([@openlayers](https://github.com/openlayers))
* [#10834](https://github.com/openlayers/openlayers/pull/10834) - Bump rollup from 1.32.1 to 2.1.0 ([@openlayers](https://github.com/openlayers))
* [#10833](https://github.com/openlayers/openlayers/pull/10833) - Bump fs-extra from 8.1.0 to 9.0.0 ([@openlayers](https://github.com/openlayers))
* [#10832](https://github.com/openlayers/openlayers/pull/10832) - Bump @babel/core from 7.8.7 to 7.9.0 ([@openlayers](https://github.com/openlayers))
* [#10831](https://github.com/openlayers/openlayers/pull/10831) - Bump babel-loader from 8.0.6 to 8.1.0 ([@openlayers](https://github.com/openlayers))
* [#10830](https://github.com/openlayers/openlayers/pull/10830) - Bump mocha from 7.1.0 to 7.1.1 ([@openlayers](https://github.com/openlayers))
* [#10829](https://github.com/openlayers/openlayers/pull/10829) - Bump marked from 0.8.0 to 0.8.2 ([@openlayers](https://github.com/openlayers))
* [#10811](https://github.com/openlayers/openlayers/pull/10811) - Bump sinon from 9.0.0 to 9.0.1 ([@openlayers](https://github.com/openlayers))
* [#10810](https://github.com/openlayers/openlayers/pull/10810) - Bump rollup-plugin-terser from 5.2.0 to 5.3.0 ([@openlayers](https://github.com/openlayers))
* [#10809](https://github.com/openlayers/openlayers/pull/10809) - Bump yargs from 15.3.0 to 15.3.1 ([@openlayers](https://github.com/openlayers))
* [#10806](https://github.com/openlayers/openlayers/pull/10806) - [Security] Bump acorn from 6.1.1 to 6.4.1 ([@openlayers](https://github.com/openlayers))
* [#10755](https://github.com/openlayers/openlayers/pull/10755) - Bump rollup from 1.31.1 to 1.32.0 ([@openlayers](https://github.com/openlayers))
* [#10754](https://github.com/openlayers/openlayers/pull/10754) - Bump @babel/preset-env from 7.8.4 to 7.8.6 ([@openlayers](https://github.com/openlayers))
* [#10753](https://github.com/openlayers/openlayers/pull/10753) - Bump mocha from 7.0.1 to 7.1.0 ([@openlayers](https://github.com/openlayers))
* [#10752](https://github.com/openlayers/openlayers/pull/10752) - Bump @babel/core from 7.8.4 to 7.8.6 ([@openlayers](https://github.com/openlayers))
* [#10725](https://github.com/openlayers/openlayers/pull/10725) - Bump elm-pep from 1.0.4 to 1.0.6 ([@openlayers](https://github.com/openlayers))
* [#10726](https://github.com/openlayers/openlayers/pull/10726) - Bump sinon from 8.1.1 to 9.0.0 ([@openlayers](https://github.com/openlayers))
* [#10680](https://github.com/openlayers/openlayers/pull/10680) - Bump terser-webpack-plugin from 2.3.4 to 2.3.5 ([@openlayers](https://github.com/openlayers))
* [#10682](https://github.com/openlayers/openlayers/pull/10682) - Bump webpack from 4.41.5 to 4.41.6 ([@openlayers](https://github.com/openlayers))
* [#10681](https://github.com/openlayers/openlayers/pull/10681) - Bump webpack-cli from 3.3.10 to 3.3.11 ([@openlayers](https://github.com/openlayers))
* [#10679](https://github.com/openlayers/openlayers/pull/10679) - Bump rollup from 1.31.0 to 1.31.1 ([@openlayers](https://github.com/openlayers))
This is a bugfix release which removes the auto-generated `.d.ts` TypeScript type files from the published package.
## List of all changes
* [#10877](https://github.com/openlayers/openlayers/pull/10877) - Remove .d.ts files from the package ([@ahocevar](https://github.com/ahocevar))
* [#10872](https://github.com/openlayers/openlayers/pull/10872) - Use TypeScript 3.9 for type generation for better enums ([@ahocevar](https://github.com/ahocevar))
With more than 120 pull requests, this release brings a facelift of the website, as well as many bug fixes and several exciting new features.
## Upgrade notes
### Pointer events polyfill removed
Now that all major browsers support Pointer events natively, we removed the [elm-pep](https://npmjs.com/package/elm-pep) dependency. If you are targeting older browsers that do not support Pointer events, you now need to include a pointer events polyfill ([elm-pep](https://npmjs.com/package/elm-pep) or [pepjs](https://www.npmjs.com/package/@openlayers/pepjs)) in your application.
## New features and improvements
* Several event handling fixes and improvements for seamless integration into scrollable web pages and improved support for maps in web components.
* Map interactions work again when `ol.css` is not included in the build.
* More stable map views with decluttered labels during panning.
* Image smoothing can be disabled, so raster cells can have sharp edges in image layers now.
* Better cache management for tile layers.
* Retina/HiDPI support for regular shape and svg icon styles.
## List of all changes
* [#11322](https://github.com/openlayers/openlayers/pull/11322) - same dropdown hover than the site ([@jipexu](https://github.com/jipexu))
* [#11318](https://github.com/openlayers/openlayers/pull/11318) - Mark active nav item ([@ahocevar](https://github.com/ahocevar))
* [#11317](https://github.com/openlayers/openlayers/pull/11317) - Make header and menu navigation consistent with web site ([@ahocevar](https://github.com/ahocevar))
* [#11277](https://github.com/openlayers/openlayers/pull/11277) - Have high resolution regular shape ([@sbrunner](https://github.com/sbrunner))
* [#11313](https://github.com/openlayers/openlayers/pull/11313) - Add direct link to other examples to tags ([@MoonE](https://github.com/MoonE))
* [#11310](https://github.com/openlayers/openlayers/pull/11310) - Update bootstrap, cleanup css, make pages more responsive ([@ahocevar](https://github.com/ahocevar))
* [#11309](https://github.com/openlayers/openlayers/pull/11309) - Do not extract comments to avoid asset name conflicts ([@ahocevar](https://github.com/ahocevar))
* [#11306](https://github.com/openlayers/openlayers/pull/11306) - Replace/remove usage of tileserver.maptiler.com ([@petrsloup](https://github.com/petrsloup))
* [#11270](https://github.com/openlayers/openlayers/pull/11270) - Fix handling of events originating from overlayContainerStopEvent children ([@ahocevar](https://github.com/ahocevar))
* [#11269](https://github.com/openlayers/openlayers/pull/11269) - Register and unregister events in set target handler ([@ahocevar](https://github.com/ahocevar))
* [#11300](https://github.com/openlayers/openlayers/pull/11300) - Drag and Drop to update source and fire event only if features added ([@mike-000](https://github.com/mike-000))
* [#11286](https://github.com/openlayers/openlayers/pull/11286) - Allow line breaks before slashes in apidoc navigation ([@MoonE](https://github.com/MoonE))
* [#11287](https://github.com/openlayers/openlayers/pull/11287) - Examples index page fixes ([@MoonE](https://github.com/MoonE))
* [#11197](https://github.com/openlayers/openlayers/pull/11197) - Added '&&' logical operator to expressions ([@RydingM](https://github.com/RydingM))
* [#11283](https://github.com/openlayers/openlayers/pull/11283) - Remove update while interacting/animating from VectorImage ([@yonzmeer](https://github.com/yonzmeer))
* [#11267](https://github.com/openlayers/openlayers/pull/11267) - Fix upright labels on vector tiles ([@ahocevar](https://github.com/ahocevar))
* [#11263](https://github.com/openlayers/openlayers/pull/11263) - Fix rotation reset in Mapbox-gl Layer example ([@mike-000](https://github.com/mike-000))
* [#11271](https://github.com/openlayers/openlayers/pull/11271) - Make style override CSS compatible with importing ol.css and with IE ([@mike-000](https://github.com/mike-000))
* [#11253](https://github.com/openlayers/openlayers/pull/11253) - Only clamp to source extent for safe transforms ([@ahocevar](https://github.com/ahocevar))
* [#11258](https://github.com/openlayers/openlayers/pull/11258) - Replace ol tag with openlayers ([@ahocevar](https://github.com/ahocevar))
* [#11256](https://github.com/openlayers/openlayers/pull/11256) - Add dispose API docs to raster source (#10856) ([@EvertEt](https://github.com/EvertEt))
* [#11226](https://github.com/openlayers/openlayers/pull/11226) - By modifying the common vertex, not all geometries were changed when … ([@michalzielanski](https://github.com/michalzielanski))
* [#11225](https://github.com/openlayers/openlayers/pull/11225) - Use 'source-over' to render reprojection edges ([@mike-000](https://github.com/mike-000))
* [#11224](https://github.com/openlayers/openlayers/pull/11224) - Quote . in RegExp ([@mohawk2](https://github.com/mohawk2))
* [#11219](https://github.com/openlayers/openlayers/pull/11219) - Make proj4 transforms behave like built-in transforms ([@ahocevar](https://github.com/ahocevar))
* [#11217](https://github.com/openlayers/openlayers/pull/11217) - Additional test coverage for serializing GeoJSON ([@tschaub](https://github.com/tschaub))
* [#11215](https://github.com/openlayers/openlayers/pull/11215) - Fix MVT multipolygons with featureClass: Feature ([@ahocevar](https://github.com/ahocevar))
* [#11193](https://github.com/openlayers/openlayers/pull/11193) - Fix VectorImage layer clipping with rotation ([@mike-000](https://github.com/mike-000))
* [#11195](https://github.com/openlayers/openlayers/pull/11195) - getExtent() to return getEmpty() if geometry is unprojectable ([@mike-000](https://github.com/mike-000))
* [#11188](https://github.com/openlayers/openlayers/pull/11188) - Late object initialization ([@michalzielanski](https://github.com/michalzielanski))
* [#11194](https://github.com/openlayers/openlayers/pull/11194) - ol/geom/LineString#getCoordinateAt() to return Z and M values if available ([@mike-000](https://github.com/mike-000))
* [#11198](https://github.com/openlayers/openlayers/pull/11198) - Add condition option to Extent interaction ([@mike-000](https://github.com/mike-000))
* [#11202](https://github.com/openlayers/openlayers/pull/11202) - Branch name changes ([@tschaub](https://github.com/tschaub))
* [#11192](https://github.com/openlayers/openlayers/pull/11192) - Use pepjs in examples to support more old/exotic browsers ([@ahocevar](https://github.com/ahocevar))
* [#11190](https://github.com/openlayers/openlayers/pull/11190) - Correct vector layer clipping with rotation ([@mike-000](https://github.com/mike-000))
* [#11037](https://github.com/openlayers/openlayers/pull/11037) - Allow icon and text styles to be scaled in two dimensions ([@mike-000](https://github.com/mike-000))
* [#11165](https://github.com/openlayers/openlayers/pull/11165) - Use drag-pan default condition with onFocusOnly ([@ahocevar](https://github.com/ahocevar))
* [#11172](https://github.com/openlayers/openlayers/pull/11172) - Use cross-browser find ([@ahocevar](https://github.com/ahocevar))
* [#11171](https://github.com/openlayers/openlayers/pull/11171) - Allow using un() for events registered with once() ([@ahocevar](https://github.com/ahocevar))
* [#11174](https://github.com/openlayers/openlayers/pull/11174) - Improve types and docs for getStyle/setStyle ([@ahocevar](https://github.com/ahocevar))
* [#11146](https://github.com/openlayers/openlayers/pull/11146) - Update JSTS example to use JSTS 2.3.0 ([@bjornharrtell](https://github.com/bjornharrtell))
* [#11135](https://github.com/openlayers/openlayers/pull/11135) - Re-enable onFocusOnly option for interaction defaults ([@ahocevar](https://github.com/ahocevar))
* [#11106](https://github.com/openlayers/openlayers/pull/11106) - Defer ZoomSlider initialization until its size is available ([@M393](https://github.com/M393))
* [#11116](https://github.com/openlayers/openlayers/pull/11116) - No search autocomplete ([@ahocevar](https://github.com/ahocevar))
* [#11088](https://github.com/openlayers/openlayers/pull/11088) - Transform without axis order in proj4 ([@ahocevar](https://github.com/ahocevar))
* [#11089](https://github.com/openlayers/openlayers/pull/11089) - Use assign function instead of Object.assign ([@ahocevar](https://github.com/ahocevar))
* [#11048](https://github.com/openlayers/openlayers/pull/11048) - Run tests as a GitHub CI workflow ([@openlayers](https://github.com/openlayers))
* [#11047](https://github.com/openlayers/openlayers/pull/11047) - Include processor from pixelworks and terminate workers before creating new ones ([@tschaub](https://github.com/tschaub))
* [#11044](https://github.com/openlayers/openlayers/pull/11044) - Remove personal Mapbox key ([@tschaub](https://github.com/tschaub))
* [#11042](https://github.com/openlayers/openlayers/pull/11042) - Fix legacy build by defining ol alias ([@ahocevar](https://github.com/ahocevar))
* [#11041](https://github.com/openlayers/openlayers/pull/11041) - Fix custom controls with user-provided element ([@ahocevar](https://github.com/ahocevar))
* [#11025](https://github.com/openlayers/openlayers/pull/11025) - Get rid of MapBrowserPointerEvent ([@ahocevar](https://github.com/ahocevar))
* [#11024](https://github.com/openlayers/openlayers/pull/11024) - Make events work when inside a web component ([@ahocevar](https://github.com/ahocevar))
* [#11019](https://github.com/openlayers/openlayers/pull/11019) - Option to disable image smoothing for Image layer sources ([@mike-000](https://github.com/mike-000))
* [#11023](https://github.com/openlayers/openlayers/pull/11023) - Add MapBrowserPointerEvent to apidoc ([@MoonE](https://github.com/MoonE))
* [#11017](https://github.com/openlayers/openlayers/pull/11017) - Don't stop geolocation tracking on error ([@fredj](https://github.com/fredj))
* [#11011](https://github.com/openlayers/openlayers/pull/11011) - Set background fill style for each declutter label ([@mike-000](https://github.com/mike-000))
* [#10977](https://github.com/openlayers/openlayers/pull/10977) - Only render vector tile when there are executor groups ([@ahocevar](https://github.com/ahocevar))
* [#10990](https://github.com/openlayers/openlayers/pull/10990) - Include context options in tile cache key ([@mike-000](https://github.com/mike-000))
* [#10987](https://github.com/openlayers/openlayers/pull/10987) - Use brokenDiagonalRendering reprojection processing if image smoothing is disabled ([@mike-000](https://github.com/mike-000))
* [#10981](https://github.com/openlayers/openlayers/pull/10981) - Calculate WMTS TileGrid extent using TileMatrixSetLimit when available ([@nielsmeijer](https://github.com/nielsmeijer))
* [#10993](https://github.com/openlayers/openlayers/pull/10993) - Do not rely on custom type overrides ([@ahocevar](https://github.com/ahocevar))
* [#10989](https://github.com/openlayers/openlayers/pull/10989) - Add log2 function to ol/math ([@mike-000](https://github.com/mike-000))
* [#10986](https://github.com/openlayers/openlayers/pull/10986) - Correct bold font tag closure in example description ([@mike-000](https://github.com/mike-000))
* [#10983](https://github.com/openlayers/openlayers/pull/10983) - Trying to fix CI ([@ahocevar](https://github.com/ahocevar))
* [#10976](https://github.com/openlayers/openlayers/pull/10976) - Apply projection.getMetersPerUnit() to calculated WMTS resolution ([@nielsmeijer](https://github.com/nielsmeijer))
* [#10960](https://github.com/openlayers/openlayers/pull/10960) - Improve Vector Clipping Layer example with a background layer and intersect ([@SDaron](https://github.com/SDaron))
* [#10956](https://github.com/openlayers/openlayers/pull/10956) - Add undefined check for navigator.userAgent ([@pmulholland42](https://github.com/pmulholland42))
* [#10936](https://github.com/openlayers/openlayers/pull/10936) - Set pointerEvents style programmatically instead of relying on ol.css ([@ahocevar](https://github.com/ahocevar))
* [#10941](https://github.com/openlayers/openlayers/pull/10941) - Always prevent default after handleDragEvent ([@ahocevar](https://github.com/ahocevar))
* [#10939](https://github.com/openlayers/openlayers/pull/10939) - Losen listener type ([@ahocevar](https://github.com/ahocevar))
* [#10935](https://github.com/openlayers/openlayers/pull/10935) - Fix calling Overlay.panIntoView with no options ([@ejn](https://github.com/ejn))
* [#10937](https://github.com/openlayers/openlayers/pull/10937) - Use the tile coordinate as a tile pseudo URL in geojson-vt example ([@mike-000](https://github.com/mike-000))
* [#10934](https://github.com/openlayers/openlayers/pull/10934) - Update TypeScript to v3.8 ([@ahocevar](https://github.com/ahocevar))
* [#10931](https://github.com/openlayers/openlayers/pull/10931) - Use a new cache key in hopes of fixing test failures ([@tschaub](https://github.com/tschaub))
* [#10930](https://github.com/openlayers/openlayers/pull/10930) - Better test for uniform colors ([@ahocevar](https://github.com/ahocevar))
* [#10929](https://github.com/openlayers/openlayers/pull/10929) - Fix typo in 6.3.0 release doc ([@nikolas](https://github.com/nikolas))
* [#10917](https://github.com/openlayers/openlayers/pull/10917) - Fix the IGN WMTS example dead links and attribution ([@sambakk](https://github.com/sambakk))
* [#10911](https://github.com/openlayers/openlayers/pull/10911) - Remove link for fullscreen event from navigation ([@MoonE](https://github.com/MoonE))
* [#10916](https://github.com/openlayers/openlayers/pull/10916) - Store additional artifacts to debug test failures ([@tschaub](https://github.com/tschaub))
* [#10902](https://github.com/openlayers/openlayers/pull/10902) - Move readFromDocument implementation to the base class ([@fredj](https://github.com/fredj))
* [#10899](https://github.com/openlayers/openlayers/pull/10899) - Do not scroll page during feature translation ([@ahocevar](https://github.com/ahocevar))
* [#10862](https://github.com/openlayers/openlayers/pull/10862) - Use prettier ([@tschaub](https://github.com/tschaub))
* [#10895](https://github.com/openlayers/openlayers/pull/10895) - Fix dependency source management for examples ([@ahocevar](https://github.com/ahocevar))
* [#10882](https://github.com/openlayers/openlayers/pull/10882) - Apidoc - Fix toggle state when there are no hidden members ([@MoonE](https://github.com/MoonE))
* [#10878](https://github.com/openlayers/openlayers/pull/10878) - Avoid page scrolling when freehand drawing on mobile ([@ahocevar](https://github.com/ahocevar))
* [#10879](https://github.com/openlayers/openlayers/pull/10879) - Do not append hit canvas to document body ([@ahocevar](https://github.com/ahocevar))
* [#10877](https://github.com/openlayers/openlayers/pull/10877) - Remove .d.ts files from the package ([@ahocevar](https://github.com/ahocevar))
* [#10874](https://github.com/openlayers/openlayers/pull/10874) - fix return type ([@mike-000](https://github.com/mike-000))
* [#10872](https://github.com/openlayers/openlayers/pull/10872) - Use TypeScript 3.9 for type generation for better enums ([@ahocevar](https://github.com/ahocevar))
* [#10537](https://github.com/openlayers/openlayers/pull/10537) - Correct resolution used for scale bar and add dpi option ([@mike-000](https://github.com/mike-000))
* [#10463](https://github.com/openlayers/openlayers/pull/10463) - Fix issue with reprojection and double drawing pixels. ([@pjsg](https://github.com/pjsg))
* [#10429](https://github.com/openlayers/openlayers/pull/10429) - Option to disable image smoothing for Tile layer sources (including reprojected sources) ([@mike-000](https://github.com/mike-000))
* [#10865](https://github.com/openlayers/openlayers/pull/10865) - View / avoid solving constraints related to map size during animation ([@jahow](https://github.com/jahow))
<details>
<summary>Dependency Updates</summary>
* [#11298](https://github.com/openlayers/openlayers/pull/11298) - Bump @babel/core from 7.10.4 to 7.10.5 ([@openlayers](https://github.com/openlayers))
* [#11297](https://github.com/openlayers/openlayers/pull/11297) - Bump puppeteer from 5.1.0 to 5.2.0 ([@openlayers](https://github.com/openlayers))
* [#11296](https://github.com/openlayers/openlayers/pull/11296) - Bump typescript from 3.9.6 to 3.9.7 ([@openlayers](https://github.com/openlayers))
* [#11295](https://github.com/openlayers/openlayers/pull/11295) - Bump eslint from 7.4.0 to 7.5.0 ([@openlayers](https://github.com/openlayers))
* [#11294](https://github.com/openlayers/openlayers/pull/11294) - Bump rollup from 2.21.0 to 2.22.1 ([@openlayers](https://github.com/openlayers))
* [#11293](https://github.com/openlayers/openlayers/pull/11293) - Bump terser-webpack-plugin from 3.0.6 to 3.0.7 ([@openlayers](https://github.com/openlayers))
* [#11292](https://github.com/openlayers/openlayers/pull/11292) - Bump url-polyfill from 1.1.9 to 1.1.10 ([@openlayers](https://github.com/openlayers))
* [#11291](https://github.com/openlayers/openlayers/pull/11291) - Bump marked from 1.1.0 to 1.1.1 ([@openlayers](https://github.com/openlayers))
* [#11288](https://github.com/openlayers/openlayers/pull/11288) - Bump lodash from 4.17.15 to 4.17.19 ([@openlayers](https://github.com/openlayers))
* [#11275](https://github.com/openlayers/openlayers/pull/11275) - Bump puppeteer from 5.0.0 to 5.1.0 ([@openlayers](https://github.com/openlayers))
* [#11274](https://github.com/openlayers/openlayers/pull/11274) - Bump rollup from 2.19.0 to 2.21.0 ([@openlayers](https://github.com/openlayers))
* [#11273](https://github.com/openlayers/openlayers/pull/11273) - Bump yargs from 15.4.0 to 15.4.1 ([@openlayers](https://github.com/openlayers))
* [#11244](https://github.com/openlayers/openlayers/pull/11244) - Bump rollup from 2.18.0 to 2.19.0 ([@openlayers](https://github.com/openlayers))
* [#11245](https://github.com/openlayers/openlayers/pull/11245) - Bump @babel/core from 7.10.3 to 7.10.4 ([@openlayers](https://github.com/openlayers))
* [#11243](https://github.com/openlayers/openlayers/pull/11243) - Bump pixelmatch from 5.2.0 to 5.2.1 ([@openlayers](https://github.com/openlayers))
* [#11248](https://github.com/openlayers/openlayers/pull/11248) - Bump eslint from 7.3.0 to 7.4.0 ([@openlayers](https://github.com/openlayers))
* [#11247](https://github.com/openlayers/openlayers/pull/11247) - Bump @babel/preset-env from 7.10.3 to 7.10.4 ([@openlayers](https://github.com/openlayers))
* [#11249](https://github.com/openlayers/openlayers/pull/11249) - Bump copy-webpack-plugin from 6.0.2 to 6.0.3 ([@openlayers](https://github.com/openlayers))
* [#11246](https://github.com/openlayers/openlayers/pull/11246) - Bump yargs from 15.3.1 to 15.4.0 ([@openlayers](https://github.com/openlayers))
* [#11242](https://github.com/openlayers/openlayers/pull/11242) - Bump typescript from 3.9.5 to 3.9.6 ([@openlayers](https://github.com/openlayers))
* [#11241](https://github.com/openlayers/openlayers/pull/11241) - Bump puppeteer from 4.0.0 to 5.0.0 ([@openlayers](https://github.com/openlayers))
* [#11210](https://github.com/openlayers/openlayers/pull/11210) - Bump puppeteer from 3.3.0 to 4.0.0 ([@openlayers](https://github.com/openlayers))
* [#11209](https://github.com/openlayers/openlayers/pull/11209) - Bump rollup from 2.16.1 to 2.18.0 ([@openlayers](https://github.com/openlayers))
* [#11208](https://github.com/openlayers/openlayers/pull/11208) - Bump webpack-cli from 3.3.11 to 3.3.12 ([@openlayers](https://github.com/openlayers))
* [#11207](https://github.com/openlayers/openlayers/pull/11207) - Bump eslint from 7.2.0 to 7.3.0 ([@openlayers](https://github.com/openlayers))
* [#11206](https://github.com/openlayers/openlayers/pull/11206) - Bump @babel/preset-env from 7.10.2 to 7.10.3 ([@openlayers](https://github.com/openlayers))
* [#11205](https://github.com/openlayers/openlayers/pull/11205) - Bump terser-webpack-plugin from 3.0.4 to 3.0.6 ([@openlayers](https://github.com/openlayers))
* [#11204](https://github.com/openlayers/openlayers/pull/11204) - Bump @babel/core from 7.10.2 to 7.10.3 ([@openlayers](https://github.com/openlayers))
* [#11183](https://github.com/openlayers/openlayers/pull/11183) - Bump mocha from 7.2.0 to 8.0.1 ([@openlayers](https://github.com/openlayers))
* [#11181](https://github.com/openlayers/openlayers/pull/11181) - Bump terser-webpack-plugin from 3.0.3 to 3.0.4 ([@openlayers](https://github.com/openlayers))
* [#11182](https://github.com/openlayers/openlayers/pull/11182) - Bump rollup from 2.15.0 to 2.16.1 ([@openlayers](https://github.com/openlayers))
* [#11180](https://github.com/openlayers/openlayers/pull/11180) - Bump karma from 5.0.9 to 5.1.0 ([@openlayers](https://github.com/openlayers))
* [#11158](https://github.com/openlayers/openlayers/pull/11158) - Bump globby from 11.0.0 to 11.0.1 ([@openlayers](https://github.com/openlayers))
* [#11157](https://github.com/openlayers/openlayers/pull/11157) - Bump copy-webpack-plugin from 6.0.1 to 6.0.2 ([@openlayers](https://github.com/openlayers))
* [#11151](https://github.com/openlayers/openlayers/pull/11151) - Bump terser-webpack-plugin from 3.0.2 to 3.0.3 ([@openlayers](https://github.com/openlayers))
* [#11156](https://github.com/openlayers/openlayers/pull/11156) - Bump typescript from 3.9.3 to 3.9.5 ([@openlayers](https://github.com/openlayers))
* [#11155](https://github.com/openlayers/openlayers/pull/11155) - Bump fs-extra from 9.0.0 to 9.0.1 ([@openlayers](https://github.com/openlayers))
* [#11152](https://github.com/openlayers/openlayers/pull/11152) - Bump puppeteer from 3.2.0 to 3.3.0 ([@openlayers](https://github.com/openlayers))
* [#11153](https://github.com/openlayers/openlayers/pull/11153) - Bump eslint from 6.8.0 to 7.2.0 ([@openlayers](https://github.com/openlayers))
* [#11150](https://github.com/openlayers/openlayers/pull/11150) - Bump rollup from 2.12.0 to 2.15.0 ([@openlayers](https://github.com/openlayers))
* [#11154](https://github.com/openlayers/openlayers/pull/11154) - Bump ol-mapbox-style from 6.1.1 to 6.1.2 ([@openlayers](https://github.com/openlayers))
* [#11143](https://github.com/openlayers/openlayers/pull/11143) - [Security] Bump websocket-extensions from 0.1.3 to 0.1.4 ([@openlayers](https://github.com/openlayers))
* [#11123](https://github.com/openlayers/openlayers/pull/11123) - Bump @babel/core from 7.9.6 to 7.10.2 ([@openlayers](https://github.com/openlayers))
* [#11122](https://github.com/openlayers/openlayers/pull/11122) - Bump karma-coverage-istanbul-reporter from 3.0.2 to 3.0.3 ([@openlayers](https://github.com/openlayers))
* [#11125](https://github.com/openlayers/openlayers/pull/11125) - Bump terser-webpack-plugin from 3.0.1 to 3.0.2 ([@openlayers](https://github.com/openlayers))
* [#11126](https://github.com/openlayers/openlayers/pull/11126) - Bump front-matter from 4.0.0 to 4.0.2 ([@openlayers](https://github.com/openlayers))
* [#11124](https://github.com/openlayers/openlayers/pull/11124) - Bump rollup from 2.10.9 to 2.12.0 ([@openlayers](https://github.com/openlayers))
* [#11127](https://github.com/openlayers/openlayers/pull/11127) - Bump @babel/preset-env from 7.9.6 to 7.10.2 ([@openlayers](https://github.com/openlayers))
* [#11121](https://github.com/openlayers/openlayers/pull/11121) - Bump puppeteer from 3.1.0 to 3.2.0 ([@openlayers](https://github.com/openlayers))
* [#11096](https://github.com/openlayers/openlayers/pull/11096) - Bump rollup-plugin-terser from 5.3.0 to 6.1.0 ([@openlayers](https://github.com/openlayers))
* [#11095](https://github.com/openlayers/openlayers/pull/11095) - Bump front-matter from 3.2.1 to 4.0.0 ([@openlayers](https://github.com/openlayers))
* [#11094](https://github.com/openlayers/openlayers/pull/11094) - Bump rollup from 2.10.2 to 2.10.9 ([@openlayers](https://github.com/openlayers))
* [#11099](https://github.com/openlayers/openlayers/pull/11099) - Bump mocha from 7.1.2 to 7.2.0 ([@openlayers](https://github.com/openlayers))
* [#11093](https://github.com/openlayers/openlayers/pull/11093) - Bump karma from 5.0.7 to 5.0.9 ([@openlayers](https://github.com/openlayers))
* [#11098](https://github.com/openlayers/openlayers/pull/11098) - Bump typescript from 3.9.2 to 3.9.3 ([@openlayers](https://github.com/openlayers))
* [#11097](https://github.com/openlayers/openlayers/pull/11097) - Bump puppeteer from 3.0.4 to 3.1.0 ([@openlayers](https://github.com/openlayers))
* [#11062](https://github.com/openlayers/openlayers/pull/11062) - Bump typescript from 3.8.3 to 3.9.2 ([@openlayers](https://github.com/openlayers))
* [#11057](https://github.com/openlayers/openlayers/pull/11057) - Bump copy-webpack-plugin from 5.1.1 to 6.0.1 ([@openlayers](https://github.com/openlayers))
* [#11060](https://github.com/openlayers/openlayers/pull/11060) - Bump karma from 5.0.5 to 5.0.7 ([@openlayers](https://github.com/openlayers))
* [#11059](https://github.com/openlayers/openlayers/pull/11059) - Bump rollup from 2.9.1 to 2.10.2 ([@openlayers](https://github.com/openlayers))
* [#11058](https://github.com/openlayers/openlayers/pull/11058) - Bump marked from 1.0.0 to 1.1.0 ([@openlayers](https://github.com/openlayers))
* [#11064](https://github.com/openlayers/openlayers/pull/11064) - Bump front-matter from 3.1.0 to 3.2.1 ([@openlayers](https://github.com/openlayers))
* [#11061](https://github.com/openlayers/openlayers/pull/11061) - Bump url-polyfill from 1.1.8 to 1.1.9 ([@openlayers](https://github.com/openlayers))
* [#11063](https://github.com/openlayers/openlayers/pull/11063) - Bump proj4 from 2.6.1 to 2.6.2 ([@openlayers](https://github.com/openlayers))
* [#11030](https://github.com/openlayers/openlayers/pull/11030) - Bump karma-coverage-istanbul-reporter from 3.0.0 to 3.0.2 ([@openlayers](https://github.com/openlayers))
* [#11031](https://github.com/openlayers/openlayers/pull/11031) - Bump karma from 5.0.4 to 5.0.5 ([@openlayers](https://github.com/openlayers))
* [#11032](https://github.com/openlayers/openlayers/pull/11032) - Bump puppeteer from 3.0.2 to 3.0.4 ([@openlayers](https://github.com/openlayers))
* [#11029](https://github.com/openlayers/openlayers/pull/11029) - Bump jquery from 3.5.0 to 3.5.1 ([@openlayers](https://github.com/openlayers))
* [#11028](https://github.com/openlayers/openlayers/pull/11028) - Bump rollup from 2.7.6 to 2.9.1 ([@openlayers](https://github.com/openlayers))
* [#11027](https://github.com/openlayers/openlayers/pull/11027) - Bump terser-webpack-plugin from 3.0.0 to 3.0.1 ([@openlayers](https://github.com/openlayers))
* [#11026](https://github.com/openlayers/openlayers/pull/11026) - Bump webpack-dev-server from 3.10.3 to 3.11.0 ([@openlayers](https://github.com/openlayers))
* [#11006](https://github.com/openlayers/openlayers/pull/11006) - Bump karma-mocha from 2.0.0 to 2.0.1 ([@openlayers](https://github.com/openlayers))
* [#11005](https://github.com/openlayers/openlayers/pull/11005) - Bump karma from 5.0.2 to 5.0.4 ([@openlayers](https://github.com/openlayers))
* [#11003](https://github.com/openlayers/openlayers/pull/11003) - Bump rollup from 2.7.2 to 2.7.6 ([@openlayers](https://github.com/openlayers))
* [#11002](https://github.com/openlayers/openlayers/pull/11002) - Bump puppeteer from 2.1.1 to 3.0.2 ([@openlayers](https://github.com/openlayers))
* [#10999](https://github.com/openlayers/openlayers/pull/10999) - Bump @babel/core from 7.9.0 to 7.9.6 ([@openlayers](https://github.com/openlayers))
* [#11004](https://github.com/openlayers/openlayers/pull/11004) - Bump @babel/preset-env from 7.9.5 to 7.9.6 ([@openlayers](https://github.com/openlayers))
* [#11001](https://github.com/openlayers/openlayers/pull/11001) - Bump karma-coverage-istanbul-reporter from 2.1.1 to 3.0.0 ([@openlayers](https://github.com/openlayers))
* [#11000](https://github.com/openlayers/openlayers/pull/11000) - Bump terser-webpack-plugin from 2.3.6 to 3.0.0 ([@openlayers](https://github.com/openlayers))
* [#10971](https://github.com/openlayers/openlayers/pull/10971) - Bump webpack from 4.42.1 to 4.43.0 ([@openlayers](https://github.com/openlayers))
* [#10972](https://github.com/openlayers/openlayers/pull/10972) - Bump marked from 0.8.2 to 1.0.0 ([@openlayers](https://github.com/openlayers))
* [#10970](https://github.com/openlayers/openlayers/pull/10970) - Bump mocha from 7.1.1 to 7.1.2 ([@openlayers](https://github.com/openlayers))
* [#10969](https://github.com/openlayers/openlayers/pull/10969) - Bump puppeteer from 3.0.0 to 3.0.1 ([@openlayers](https://github.com/openlayers))
* [#10968](https://github.com/openlayers/openlayers/pull/10968) - Bump coveralls from 3.0.11 to 3.1.0 ([@openlayers](https://github.com/openlayers))
* [#10967](https://github.com/openlayers/openlayers/pull/10967) - Bump terser-webpack-plugin from 2.3.5 to 2.3.6 ([@openlayers](https://github.com/openlayers))
* [#10966](https://github.com/openlayers/openlayers/pull/10966) - Bump rollup from 2.6.1 to 2.7.2 ([@openlayers](https://github.com/openlayers))
* [#10945](https://github.com/openlayers/openlayers/pull/10945) - Bump karma-mocha from 1.3.0 to 2.0.0 ([@openlayers](https://github.com/openlayers))
* [#10943](https://github.com/openlayers/openlayers/pull/10943) - Bump pngjs from 4.0.0 to 5.0.0 ([@openlayers](https://github.com/openlayers))
* [#10946](https://github.com/openlayers/openlayers/pull/10946) - Bump pixelmatch from 5.1.0 to 5.2.0 ([@openlayers](https://github.com/openlayers))
* [#10944](https://github.com/openlayers/openlayers/pull/10944) - Bump loglevelnext from 3.0.1 to 4.0.1 ([@openlayers](https://github.com/openlayers))
* [#10942](https://github.com/openlayers/openlayers/pull/10942) - Bump puppeteer from 2.1.1 to 3.0.0 ([@openlayers](https://github.com/openlayers))
* [#10947](https://github.com/openlayers/openlayers/pull/10947) - Bump karma from 5.0.1 to 5.0.2 ([@openlayers](https://github.com/openlayers))
* [#10918](https://github.com/openlayers/openlayers/pull/10918) - Bump @babel/preset-env from 7.9.0 to 7.9.5 ([@openlayers](https://github.com/openlayers))
* [#10921](https://github.com/openlayers/openlayers/pull/10921) - Bump pngjs from 3.4.0 to 4.0.0 ([@openlayers](https://github.com/openlayers))
* [#10923](https://github.com/openlayers/openlayers/pull/10923) - Bump sinon from 9.0.1 to 9.0.2 ([@openlayers](https://github.com/openlayers))
* [#10922](https://github.com/openlayers/openlayers/pull/10922) - Bump karma from 4.4.1 to 5.0.1 ([@openlayers](https://github.com/openlayers))
* [#10920](https://github.com/openlayers/openlayers/pull/10920) - Bump jsdoc from 3.6.3 to 3.6.4 ([@openlayers](https://github.com/openlayers))
* [#10919](https://github.com/openlayers/openlayers/pull/10919) - Bump rollup from 2.3.3 to 2.6.1 ([@openlayers](https://github.com/openlayers))
* [#10924](https://github.com/openlayers/openlayers/pull/10924) - Bump jquery from 3.4.1 to 3.5.0 ([@openlayers](https://github.com/openlayers))
* [#10889](https://github.com/openlayers/openlayers/pull/10889) - Bump rollup from 2.3.0 to 2.3.3 ([@openlayers](https://github.com/openlayers))
* [#10891](https://github.com/openlayers/openlayers/pull/10891) - Bump handlebars from 4.7.4 to 4.7.6 ([@openlayers](https://github.com/openlayers))
This is a bugfix release which removes a few regressions that were introduced by v6.4.0, and fixes a few issues in examples caused by the website facelift.
## List of all changes
* [#11346](https://github.com/openlayers/openlayers/pull/11346) - Fix text instruction flat coordinates when stride is not 2 ([@ahocevar](https://github.com/ahocevar))
* [#11348](https://github.com/openlayers/openlayers/pull/11348) - Add all layers to layer export ([@M393](https://github.com/M393))
* [#11337](https://github.com/openlayers/openlayers/pull/11337) - Do not rely on old value for target ([@ahocevar](https://github.com/ahocevar))
* [#11345](https://github.com/openlayers/openlayers/pull/11345) - Fix the popup in the geographic example ([@MoonE](https://github.com/MoonE))
* [#11336](https://github.com/openlayers/openlayers/pull/11336) - Hit detect with pixelRatio of 1 ([@ahocevar](https://github.com/ahocevar))
* [#11341](https://github.com/openlayers/openlayers/pull/11341) - update link to BS doc ([@jipexu](https://github.com/jipexu))
This is a bugfix release which removes a few regressions that were introduced by v6.4.0, and fixes a few issues in examples.
See the [v6.4.0 release notes](https://github.com/openlayers/openlayers/releases/tag/v6.4.0) for a complete list of changes and upgrade notes when upgrading from v6.3.x.
## List of all changes
* [#11364](https://github.com/openlayers/openlayers/pull/11364) - Load pointer events polyfill - before other polyfills ([@ahocevar](https://github.com/ahocevar))
* [#11365](https://github.com/openlayers/openlayers/pull/11365) - Revert to original method proposed in #11193 ([@mike-000](https://github.com/mike-000))
* [#11359](https://github.com/openlayers/openlayers/pull/11359) - check projection can wrap before getting width ([@mike-000](https://github.com/mike-000))
* [#11355](https://github.com/openlayers/openlayers/pull/11355) - Cloak API key with instructions where to get one ([@ahocevar](https://github.com/ahocevar))
* [#11354](https://github.com/openlayers/openlayers/pull/11354) - Fix line breaks in changelog ([@ahocevar](https://github.com/ahocevar))
This is a bugfix release which fixes a performance regression, a rendering issue, and adds improvements to a few examples.
See the [v6.4.0 release notes](https://github.com/openlayers/openlayers/releases/tag/v6.4.0) for a complete list of changes and upgrade notes when upgrading from v6.3.x.
## List of all changes
* [#11379](https://github.com/openlayers/openlayers/pull/11379) - tooltip bs on fullscreen ([@jipexu](https://github.com/jipexu))
* [#11378](https://github.com/openlayers/openlayers/pull/11378) - Fix imageSmoothing: false when ImageStatic is stretched to fit extent ([@mike-000](https://github.com/mike-000))
* [#11367](https://github.com/openlayers/openlayers/pull/11367) - Use https for mapbox tiles ([@MoonE](https://github.com/MoonE))
* [#11377](https://github.com/openlayers/openlayers/pull/11377) - Only include renderBuffer when decluttering ([@ahocevar](https://github.com/ahocevar))
* [#11376](https://github.com/openlayers/openlayers/pull/11376) - Overlay Eample - Show the popup in front of the other overlays ([@MoonE](https://github.com/MoonE))
<details>
<summary>Dependency Updates</summary>
* [#11381](https://github.com/openlayers/openlayers/pull/11381) - Bump karma from 5.1.0 to 5.1.1 ([@openlayers](https://github.com/openlayers))
* [#11383](https://github.com/openlayers/openlayers/pull/11383) - Bump worker-loader from 2.0.0 to 3.0.0 ([@openlayers](https://github.com/openlayers))
* [#11386](https://github.com/openlayers/openlayers/pull/11386) - Bump webpack from 4.44.0 to 4.44.1 ([@openlayers](https://github.com/openlayers))
* [#11384](https://github.com/openlayers/openlayers/pull/11384) - Bump @babel/core from 7.10.5 to 7.11.0 ([@openlayers](https://github.com/openlayers))
* [#11382](https://github.com/openlayers/openlayers/pull/11382) - Bump mocha from 8.0.1 to 8.1.0 ([@openlayers](https://github.com/openlayers))
* [#11385](https://github.com/openlayers/openlayers/pull/11385) - Bump @babel/preset-env from 7.10.4 to 7.11.0 ([@openlayers](https://github.com/openlayers))
* [#11387](https://github.com/openlayers/openlayers/pull/11387) - Bump eslint from 7.5.0 to 7.6.0 ([@openlayers](https://github.com/openlayers))
* [#11388](https://github.com/openlayers/openlayers/pull/11388) - Bump terser-webpack-plugin from 3.0.7 to 3.0.8 ([@openlayers](https://github.com/openlayers))
With more than 110 pull requests, this release not only brings WFS 2.0 support and improved touch support for drawing geometries and querying features. In addition to that, several improvements, many bugs fixes, and nicer API docs and examples have found their way into the 6.5.0 release.
## Upgrade notes
### Units of the `hitTolerance` option fixed
Previously, the `hitTolerance` option of the map's `getFeaturesAtPixel()`, `forEachFeatureAtPixel()` and `hasFeatureAtPixel()` methods behaved differently depending on the `devicePixelRatio` (or the `pixelRatio` of the map), because the original value was internally multiplied by the device pixel ratio twice instead of just once. Now this is fixed. **Note**: The `hitTolerance`'s units are css pixels. The documentation was updated to reflect this.
If your application adjusts for that with code like
```js
{hitTolerance:10/devicePixelRatio,}
```
you'll have to change that code to
```js
{hitTolerance:10,}
```
## New features and improvements
* New scale option in `RegularShape` and `Circle` style constructors
* WFS 2.0.0 support
* Added `preRender` and `postRender` methods to `WebGLLayerRenderer`
* Added `className` constructor option in `ol/layer/Heatmap`
* Added load events for `ol/source/Vector`
* New `iconUrlFunction` option for `ol/format/KML`
* Added `transition` option to `OSM` and `CartoDB` sources
*`DragAndDrop` interaction support for formats that read ArrayBuffer sources
* New `padding` option for `ol/View`
* New `cancel` event for the `DragBox` interaction
* When using `hitTolerance`, detect closest features first
* Ability to draw `Circle` geometries with a custom renderer
## List of all changes
* [#11859](https://github.com/openlayers/openlayers/pull/11859) - Do not fire duplicate postrender events ([@MoonE](https://github.com/MoonE))
* [#11858](https://github.com/openlayers/openlayers/pull/11858) - Correct documented event names for VectorSourceEvent ([@MoonE](https://github.com/MoonE))
* [#11838](https://github.com/openlayers/openlayers/pull/11838) - Custom circle render ([@changqingom](https://github.com/changqingom))
* [#11811](https://github.com/openlayers/openlayers/pull/11811) - Better getPointResolution default when no transform available ([@mike-000](https://github.com/mike-000))
* [#11821](https://github.com/openlayers/openlayers/pull/11821) - Call the finishCondition when drawing points / circles ([@MoonE](https://github.com/MoonE))
* [#11824](https://github.com/openlayers/openlayers/pull/11824) - Add Units back to API docs ([@ahocevar](https://github.com/ahocevar))
* [#11817](https://github.com/openlayers/openlayers/pull/11817) - stopPropagation support for PluggableMap ([@greggian](https://github.com/greggian))
* [#11815](https://github.com/openlayers/openlayers/pull/11815) - Remove unnecessary line that breaks drawing with multi-touch ([@ahocevar](https://github.com/ahocevar))
* [#11800](https://github.com/openlayers/openlayers/pull/11800) - Fix removeLastPoint when removing last point ([@ahocevar](https://github.com/ahocevar))
* [#11783](https://github.com/openlayers/openlayers/pull/11783) - Cache hit detect indexes and check closest pixels first. ([@MoonE](https://github.com/MoonE))
* [#11791](https://github.com/openlayers/openlayers/pull/11791) - Now that pepjs was updated, we can point to the official package ([@ahocevar](https://github.com/ahocevar))
* [#11790](https://github.com/openlayers/openlayers/pull/11790) - Fix attributions links for WMS layers from swisstopo ([@openlayers](https://github.com/openlayers))
* [#11781](https://github.com/openlayers/openlayers/pull/11781) - Pass geometry to forEachFeatureAtPixel callback ([@ahocevar](https://github.com/ahocevar))
* [#11778](https://github.com/openlayers/openlayers/pull/11778) - No need to adjust hitTolerance for pixel ratio twice ([@ahocevar](https://github.com/ahocevar))
* [#11780](https://github.com/openlayers/openlayers/pull/11780) - Add a cancel event to the DragBox interaction ([@M393](https://github.com/M393))
* [#11779](https://github.com/openlayers/openlayers/pull/11779) - Restore Mode.CIRCLE in Draw interaction ([@mike-000](https://github.com/mike-000))
* [#11753](https://github.com/openlayers/openlayers/pull/11753) - Use Mode.LINE_STRING in Draw interaction for Circle geometries ([@mike-000](https://github.com/mike-000))
* [#11767](https://github.com/openlayers/openlayers/pull/11767) - Improve documentation of geometry rotation ([@mike-000](https://github.com/mike-000))
* [#11755](https://github.com/openlayers/openlayers/pull/11755) - Add padding option for View ([@ahocevar](https://github.com/ahocevar))
* [#11754](https://github.com/openlayers/openlayers/pull/11754) - Fix typo that prevents Rotate icon from indicating the view rotation ([@ahocevar](https://github.com/ahocevar))
* [#11719](https://github.com/openlayers/openlayers/pull/11719) - Clamp EPSG:3857 y to lowest/highest possible value instead of validity extent ([@ahocevar](https://github.com/ahocevar))
* [#11737](https://github.com/openlayers/openlayers/pull/11737) - Write the correct SRS code in EsriJSON ([@ahocevar](https://github.com/ahocevar))
* [#11749](https://github.com/openlayers/openlayers/pull/11749) - Document that snapTolerance must be greater than 0 ([@ahocevar](https://github.com/ahocevar))
* [#11750](https://github.com/openlayers/openlayers/pull/11750) - Update TMS tileUrlFunction example in ol/source/XYZ documentation ([@mike-000](https://github.com/mike-000))
* [#11739](https://github.com/openlayers/openlayers/pull/11739) - Fix: Check for layer extent in CanvasLayerRenderer.getDataAtPixel ([@boeckMt](https://github.com/boeckMt))
* [#11748](https://github.com/openlayers/openlayers/pull/11748) - Add fetch and TextDecoder to polyfill list in README ([@mike-000](https://github.com/mike-000))
* [#11740](https://github.com/openlayers/openlayers/pull/11740) - Wfs bbox per feature type ([@ger-benjamin](https://github.com/ger-benjamin))
* [#11722](https://github.com/openlayers/openlayers/pull/11722) - Correct meaning of 'start' and 'end' text align for LTR text ([@ahocevar](https://github.com/ahocevar))
* [#11741](https://github.com/openlayers/openlayers/pull/11741) - Include LICENSE.md in built package ([@bz2](https://github.com/bz2))
* [#11718](https://github.com/openlayers/openlayers/pull/11718) - Initialize sketch point on Draw#extend() ([@ahocevar](https://github.com/ahocevar))
* [#11732](https://github.com/openlayers/openlayers/pull/11732) - Replace readURI with readStyleURL for KML StyleURLs ([@mike-000](https://github.com/mike-000))
* [#11723](https://github.com/openlayers/openlayers/pull/11723) - Drag and Drop Interaction support for formats that read ArrayBuffer sources ([@mike-000](https://github.com/mike-000))
* [#11724](https://github.com/openlayers/openlayers/pull/11724) - Add transition option to OSM and CartoDB sources, document default ([@MoonE](https://github.com/MoonE))
* [#11721](https://github.com/openlayers/openlayers/pull/11721) - Handle empty Z coordinates in KML ([@mike-000](https://github.com/mike-000))
* [#11587](https://github.com/openlayers/openlayers/pull/11587) - Determine orientation by actual text start and end x ([@MoonE](https://github.com/MoonE))
* [#11720](https://github.com/openlayers/openlayers/pull/11720) - Return to simpler and less efficient winding order algorithm ([@ahocevar](https://github.com/ahocevar))
* [#11715](https://github.com/openlayers/openlayers/pull/11715) - Add all symbols to the legacy build ([@ahocevar](https://github.com/ahocevar))
* [#11716](https://github.com/openlayers/openlayers/pull/11716) - Treat svg as binary resource ([@mike-000](https://github.com/mike-000))
* [#11691](https://github.com/openlayers/openlayers/pull/11691) - Use Parcel v2 in copy/paste example code ([@ahocevar](https://github.com/ahocevar))
* [#11673](https://github.com/openlayers/openlayers/pull/11673) - Do not emulate dblclick and slingleclick on multi-touch ([@ahocevar](https://github.com/ahocevar))
* [#11676](https://github.com/openlayers/openlayers/pull/11676) - Fix countries.geojson Antarctica polygon so it wraps correctly ([@mike-000](https://github.com/mike-000))
* [#11646](https://github.com/openlayers/openlayers/pull/11646) - Ensure a unique tile key for each tile coordinate ([@ahocevar](https://github.com/ahocevar))
* [#11655](https://github.com/openlayers/openlayers/pull/11655) - Fix documentation of image render mode for vector tile layers ([@ahocevar](https://github.com/ahocevar))
* [#11668](https://github.com/openlayers/openlayers/pull/11668) - Don't try to get image data for zero sized images ([@tapioko](https://github.com/tapioko))
* [#11658](https://github.com/openlayers/openlayers/pull/11658) - Make webpack dev server run with current version ([@MoonE](https://github.com/MoonE))
* [#11590](https://github.com/openlayers/openlayers/pull/11590) - Export all the Event sub class ([@sbrunner](https://github.com/sbrunner))
* [#11594](https://github.com/openlayers/openlayers/pull/11594) - Display current OS copyright date in the Raster Reprojection example ([@mike-000](https://github.com/mike-000))
* [#11657](https://github.com/openlayers/openlayers/pull/11657) - Use https to avoid security warnings ([@mike-000](https://github.com/mike-000))
* [#11649](https://github.com/openlayers/openlayers/pull/11649) - Deal with undefined units from proj4 longlat projections ([@ahocevar](https://github.com/ahocevar))
* [#11403](https://github.com/openlayers/openlayers/pull/11403) - #11402 add CSS class name support for control buttons ([@cazacugmihai](https://github.com/cazacugmihai))
* [#11592](https://github.com/openlayers/openlayers/pull/11592) - New decluttering implementation ([@ahocevar](https://github.com/ahocevar))
* [#11618](https://github.com/openlayers/openlayers/pull/11618) - Update the Marker Animation example ([@mike-000](https://github.com/mike-000))
* [#11620](https://github.com/openlayers/openlayers/pull/11620) - Add charset to the examples html below the map ([@MoonE](https://github.com/MoonE))
* [#11613](https://github.com/openlayers/openlayers/pull/11613) - Allow mouse input if map is rendered in an other window ([@elnabo](https://github.com/elnabo))
* [#11597](https://github.com/openlayers/openlayers/pull/11597) - Improved performance when removing feature with only one Select ([@MoonE](https://github.com/MoonE))
* [#11607](https://github.com/openlayers/openlayers/pull/11607) - Reset attributions control to collapsible when no uncollapsible sources are visible ([@mike-000](https://github.com/mike-000))
* [#11609](https://github.com/openlayers/openlayers/pull/11609) - Modify interaction insert only one vertex ([@M393](https://github.com/M393))
* [#11605](https://github.com/openlayers/openlayers/pull/11605) - Remove context references when releasing tiles ([@ahocevar](https://github.com/ahocevar))
* [#11591](https://github.com/openlayers/openlayers/pull/11591) - Make permalink example less complex ([@kannes](https://github.com/kannes))
* [#11569](https://github.com/openlayers/openlayers/pull/11569) - Fix binary data exports to codesandbox in examples ([@mike-000](https://github.com/mike-000))
* [#11579](https://github.com/openlayers/openlayers/pull/11579) - Replace Animated GIF example globe gif ([@mike-000](https://github.com/mike-000))
* [#11565](https://github.com/openlayers/openlayers/pull/11565) - Animated GIF example ([@mike-000](https://github.com/mike-000))
* [#11571](https://github.com/openlayers/openlayers/pull/11571) - Replace countryflags.io with flagcdn.com in the Style Renderer example ([@mike-000](https://github.com/mike-000))
* [#11568](https://github.com/openlayers/openlayers/pull/11568) - Fix raster source crash bug when using multiple threads ([@rgroothuijsen](https://github.com/rgroothuijsen))
* [#11563](https://github.com/openlayers/openlayers/pull/11563) - Fix end world calculation if projection is not symmetric ([@MoonE](https://github.com/MoonE))
* [#11561](https://github.com/openlayers/openlayers/pull/11561) - Constrain resolution when fit called without duration ([@M393](https://github.com/M393))
* [#11559](https://github.com/openlayers/openlayers/pull/11559) - Only draw visible worlds ([@MoonE](https://github.com/MoonE))
* [#11519](https://github.com/openlayers/openlayers/pull/11519) - Do not draw multipoints outside render extent ([@MoonE](https://github.com/MoonE))
* [#11532](https://github.com/openlayers/openlayers/pull/11532) - Make TileGrid behave as documented with extent and sizes options ([@ahocevar](https://github.com/ahocevar))
* [#11545](https://github.com/openlayers/openlayers/pull/11545) - Use the className param in ol.layer.Heatmap ([@fredj](https://github.com/fredj))
* [#11548](https://github.com/openlayers/openlayers/pull/11548) - Bind tileUrlFunction before returning it from getTileUrlFunction ([@ahocevar](https://github.com/ahocevar))
* [#11549](https://github.com/openlayers/openlayers/pull/11549) - Only use elementFromPoint with ShadowRoot ([@ahocevar](https://github.com/ahocevar))
* [#11502](https://github.com/openlayers/openlayers/pull/11502) - Fix issue with WMS Capabilities containing a single layer ([@jbelien](https://github.com/jbelien))
* [#11540](https://github.com/openlayers/openlayers/pull/11540) - Avoid unnecessary transform in the MVT format ([@gberaudo](https://github.com/gberaudo))
* [#11537](https://github.com/openlayers/openlayers/pull/11537) - Add rotation and rotateWithView to ol/style/Circle clone method and options ([@mike-000](https://github.com/mike-000))
* [#11543](https://github.com/openlayers/openlayers/pull/11543) - wmts matrixset null pointer fix and improved handling of Identifier ([@sweco-dkjesh](https://github.com/sweco-dkjesh))
* [#11509](https://github.com/openlayers/openlayers/pull/11509) - Add urn:x-ogc:def:crs:EPSG:6.6:4326 as WGS84 proj identifier ([@fgravin](https://github.com/fgravin))
* [#11521](https://github.com/openlayers/openlayers/pull/11521) - Do not use fractional pixel ratio for rendering vector tiles ([@ahocevar](https://github.com/ahocevar))
* [#11517](https://github.com/openlayers/openlayers/pull/11517) - Make clockwise check work when coordinates are duplicated ([@ahocevar](https://github.com/ahocevar))
* [#11501](https://github.com/openlayers/openlayers/pull/11501) - Empty this.canvas_ for all pixel ratios when render() is called ([@mike-000](https://github.com/mike-000))
* [#11471](https://github.com/openlayers/openlayers/pull/11471) - Feature: added preRender and postRender methods to WebGLLayerRenderer… ([@MichaelLangbein](https://github.com/MichaelLangbein))
* [#11488](https://github.com/openlayers/openlayers/pull/11488) - "Layer Z-Index" example bugfix ([@michalzielanski](https://github.com/michalzielanski))
* [#11486](https://github.com/openlayers/openlayers/pull/11486) - guard for null ([@davidiamaf](https://github.com/davidiamaf))
* [#11481](https://github.com/openlayers/openlayers/pull/11481) - Adding original properties to cloned geometry ([@michalzielanski](https://github.com/michalzielanski))
* [#11454](https://github.com/openlayers/openlayers/pull/11454) - VectorTile source projection has to match the view projection ([@ahocevar](https://github.com/ahocevar))
* [#11438](https://github.com/openlayers/openlayers/pull/11438) - Better scroll behaviour for apidocs ([@MoonE](https://github.com/MoonE))
* [#11446](https://github.com/openlayers/openlayers/pull/11446) - Checks before calling handleEvent on interactions ([@ahocevar](https://github.com/ahocevar))
* [#11305](https://github.com/openlayers/openlayers/pull/11305) - PluggableMap: avoid crash when multiple interactions are removed ([@megawac](https://github.com/megawac))
* [#11433](https://github.com/openlayers/openlayers/pull/11433) - Fix typo in module name ([@fredj](https://github.com/fredj))
* [#11419](https://github.com/openlayers/openlayers/pull/11419) - WFS 2.0.0 support ([@bjornharrtell](https://github.com/bjornharrtell))
* [#11418](https://github.com/openlayers/openlayers/pull/11418) - Icon color default to composite operation ([@MoonE](https://github.com/MoonE))
* [#11416](https://github.com/openlayers/openlayers/pull/11416) - Examples add labels to inputs ([@MoonE](https://github.com/MoonE))
* [#11417](https://github.com/openlayers/openlayers/pull/11417) - Fix sort order of examples search results ([@ahocevar](https://github.com/ahocevar))
* [#11413](https://github.com/openlayers/openlayers/pull/11413) - Include scale option in RegularShape and Circle style constructors ([@mike-000](https://github.com/mike-000))
* [#11401](https://github.com/openlayers/openlayers/pull/11401) - Ensure image extent is valid when scale is negative ([@mike-000](https://github.com/mike-000))
* [#11395](https://github.com/openlayers/openlayers/pull/11395) - Correct inchesPerMeter and add tests for ScaleBar text ([@mike-000](https://github.com/mike-000))
* [#11407](https://github.com/openlayers/openlayers/pull/11407) - Support deprecated coordinates element for GML3+ formats ([@bjornharrtell](https://github.com/bjornharrtell))
* [#11398](https://github.com/openlayers/openlayers/pull/11398) - Fix link to workshop / download ([@MoonE](https://github.com/MoonE))
* [#11391](https://github.com/openlayers/openlayers/pull/11391) - Simplify scale calculation used for WMS getLegendUrl() ([@mike-000](https://github.com/mike-000))
<details>
<summary>Dependency Updates</summary>
* [#11851](https://github.com/openlayers/openlayers/pull/11851) - Bump @babel/preset-env from 7.12.10 to 7.12.11 ([@openlayers](https://github.com/openlayers))
* [#11850](https://github.com/openlayers/openlayers/pull/11850) - Bump marked from 1.2.6 to 1.2.7 ([@openlayers](https://github.com/openlayers))
* [#11852](https://github.com/openlayers/openlayers/pull/11852) - Bump rollup from 2.35.0 to 2.35.1 ([@openlayers](https://github.com/openlayers))
* [#11853](https://github.com/openlayers/openlayers/pull/11853) - Bump copy-webpack-plugin from 6.4.0 to 6.4.1 ([@openlayers](https://github.com/openlayers))
* [#11849](https://github.com/openlayers/openlayers/pull/11849) - Bump eslint from 7.15.0 to 7.16.0 ([@openlayers](https://github.com/openlayers))
* [#11848](https://github.com/openlayers/openlayers/pull/11848) - Bump ol-mapbox-style from 6.2.1 to 6.3.0 ([@openlayers](https://github.com/openlayers))
* [#11828](https://github.com/openlayers/openlayers/pull/11828) - Bump ol-mapbox-style from 6.1.4 to 6.2.1 ([@openlayers](https://github.com/openlayers))
* [#11830](https://github.com/openlayers/openlayers/pull/11830) - Bump jsdoc-plugin-typescript from 2.0.5 to 2.0.6 ([@openlayers](https://github.com/openlayers))
* [#11829](https://github.com/openlayers/openlayers/pull/11829) - Bump typescript from 4.1.2 to 4.1.3 ([@openlayers](https://github.com/openlayers))
* [#11833](https://github.com/openlayers/openlayers/pull/11833) - Bump rollup from 2.34.2 to 2.35.0 ([@openlayers](https://github.com/openlayers))
* [#11834](https://github.com/openlayers/openlayers/pull/11834) - Bump copy-webpack-plugin from 6.3.2 to 6.4.0 ([@openlayers](https://github.com/openlayers))
* [#11832](https://github.com/openlayers/openlayers/pull/11832) - Bump @babel/preset-env from 7.12.7 to 7.12.10 ([@openlayers](https://github.com/openlayers))
* [#11835](https://github.com/openlayers/openlayers/pull/11835) - Bump sinon from 9.2.1 to 9.2.2 ([@openlayers](https://github.com/openlayers))
* [#11831](https://github.com/openlayers/openlayers/pull/11831) - Bump marked from 1.2.5 to 1.2.6 ([@openlayers](https://github.com/openlayers))
* [#11827](https://github.com/openlayers/openlayers/pull/11827) - Bump @babel/core from 7.12.9 to 7.12.10 ([@openlayers](https://github.com/openlayers))
* [#11820](https://github.com/openlayers/openlayers/pull/11820) - [Security] Bump ini from 1.3.5 to 1.3.7 ([@openlayers](https://github.com/openlayers))
* [#11809](https://github.com/openlayers/openlayers/pull/11809) - Bump yargs from 16.1.1 to 16.2.0 ([@openlayers](https://github.com/openlayers))
* [#11808](https://github.com/openlayers/openlayers/pull/11808) - Bump worker-loader from 3.0.5 to 3.0.6 ([@openlayers](https://github.com/openlayers))
* [#11807](https://github.com/openlayers/openlayers/pull/11807) - Bump eslint from 7.14.0 to 7.15.0 ([@openlayers](https://github.com/openlayers))
* [#11806](https://github.com/openlayers/openlayers/pull/11806) - Bump rollup from 2.34.0 to 2.34.2 ([@openlayers](https://github.com/openlayers))
* [#11786](https://github.com/openlayers/openlayers/pull/11786) - Bump rollup from 2.33.3 to 2.34.0 ([@openlayers](https://github.com/openlayers))
* [#11787](https://github.com/openlayers/openlayers/pull/11787) - Bump babel-loader from 8.2.1 to 8.2.2 ([@openlayers](https://github.com/openlayers))
* [#11785](https://github.com/openlayers/openlayers/pull/11785) - Bump @babel/core from 7.12.7 to 7.12.9 ([@openlayers](https://github.com/openlayers))
* [#11762](https://github.com/openlayers/openlayers/pull/11762) - Bump typescript from 4.0.5 to 4.1.2 ([@openlayers](https://github.com/openlayers))
* [#11764](https://github.com/openlayers/openlayers/pull/11764) - Bump copy-webpack-plugin from 6.3.1 to 6.3.2 ([@openlayers](https://github.com/openlayers))
* [#11758](https://github.com/openlayers/openlayers/pull/11758) - Bump rollup from 2.33.2 to 2.33.3 ([@openlayers](https://github.com/openlayers))
* [#11761](https://github.com/openlayers/openlayers/pull/11761) - Bump @babel/core from 7.12.3 to 7.12.7 ([@openlayers](https://github.com/openlayers))
* [#11760](https://github.com/openlayers/openlayers/pull/11760) - Bump proj4 from 2.6.2 to 2.6.3 ([@openlayers](https://github.com/openlayers))
* [#11763](https://github.com/openlayers/openlayers/pull/11763) - Bump eslint from 7.13.0 to 7.14.0 ([@openlayers](https://github.com/openlayers))
* [#11759](https://github.com/openlayers/openlayers/pull/11759) - Bump @babel/preset-env from 7.12.1 to 7.12.7 ([@openlayers](https://github.com/openlayers))
* [#11757](https://github.com/openlayers/openlayers/pull/11757) - Bump marked from 1.2.4 to 1.2.5 ([@openlayers](https://github.com/openlayers))
* [#11756](https://github.com/openlayers/openlayers/pull/11756) - Bump puppeteer from 5.4.1 to 5.5.0 ([@openlayers](https://github.com/openlayers))
* [#11747](https://github.com/openlayers/openlayers/pull/11747) - Bump rollup from 2.33.1 to 2.33.2 ([@openlayers](https://github.com/openlayers))
* [#11746](https://github.com/openlayers/openlayers/pull/11746) - Bump babel-loader from 8.1.0 to 8.2.1 ([@openlayers](https://github.com/openlayers))
* [#11745](https://github.com/openlayers/openlayers/pull/11745) - Bump yargs from 16.1.0 to 16.1.1 ([@openlayers](https://github.com/openlayers))
* [#11744](https://github.com/openlayers/openlayers/pull/11744) - Bump webpack-dev-middleware from 4.0.0 to 4.0.2 ([@openlayers](https://github.com/openlayers))
* [#11743](https://github.com/openlayers/openlayers/pull/11743) - Bump copy-webpack-plugin from 6.3.0 to 6.3.1 ([@openlayers](https://github.com/openlayers))
* [#11742](https://github.com/openlayers/openlayers/pull/11742) - Bump marked from 1.2.3 to 1.2.4 ([@openlayers](https://github.com/openlayers))
* [#11731](https://github.com/openlayers/openlayers/pull/11731) - Bump mocha from 8.2.0 to 8.2.1 ([@openlayers](https://github.com/openlayers))
* [#11730](https://github.com/openlayers/openlayers/pull/11730) - Bump marked from 1.2.2 to 1.2.3 ([@openlayers](https://github.com/openlayers))
* [#11729](https://github.com/openlayers/openlayers/pull/11729) - Bump eslint from 7.12.1 to 7.13.0 ([@openlayers](https://github.com/openlayers))
* [#11728](https://github.com/openlayers/openlayers/pull/11728) - Bump webpack-cli from 4.1.0 to 4.2.0 ([@openlayers](https://github.com/openlayers))
* [#11727](https://github.com/openlayers/openlayers/pull/11727) - Bump karma-firefox-launcher from 2.0.0 to 2.1.0 ([@openlayers](https://github.com/openlayers))
* [#11726](https://github.com/openlayers/openlayers/pull/11726) - Bump copy-webpack-plugin from 6.2.1 to 6.3.0 ([@openlayers](https://github.com/openlayers))
* [#11708](https://github.com/openlayers/openlayers/pull/11708) - Bump rollup from 2.32.1 to 2.33.1 ([@openlayers](https://github.com/openlayers))
* [#11705](https://github.com/openlayers/openlayers/pull/11705) - Bump webpack-dev-middleware from 3.7.2 to 4.0.0 ([@openlayers](https://github.com/openlayers))
* [#11706](https://github.com/openlayers/openlayers/pull/11706) - Bump url-polyfill from 1.1.11 to 1.1.12 ([@openlayers](https://github.com/openlayers))
* [#11707](https://github.com/openlayers/openlayers/pull/11707) - Bump typescript from 4.0.3 to 4.0.5 ([@openlayers](https://github.com/openlayers))
* [#11709](https://github.com/openlayers/openlayers/pull/11709) - Bump sinon from 9.2.0 to 9.2.1 ([@openlayers](https://github.com/openlayers))
* [#11710](https://github.com/openlayers/openlayers/pull/11710) - Bump puppeteer from 5.4.0 to 5.4.1 ([@openlayers](https://github.com/openlayers))
* [#11711](https://github.com/openlayers/openlayers/pull/11711) - Bump eslint from 7.12.0 to 7.12.1 ([@openlayers](https://github.com/openlayers))
* [#11689](https://github.com/openlayers/openlayers/pull/11689) - Bump pngjs from 5.0.0 to 6.0.0 ([@openlayers](https://github.com/openlayers))
* [#11686](https://github.com/openlayers/openlayers/pull/11686) - Bump shx from 0.3.2 to 0.3.3 ([@openlayers](https://github.com/openlayers))
* [#11683](https://github.com/openlayers/openlayers/pull/11683) - Bump puppeteer from 5.3.1 to 5.4.0 ([@openlayers](https://github.com/openlayers))
* [#11682](https://github.com/openlayers/openlayers/pull/11682) - Bump karma-firefox-launcher from 1.3.0 to 2.0.0 ([@openlayers](https://github.com/openlayers))
* [#11684](https://github.com/openlayers/openlayers/pull/11684) - Bump marked from 1.2.0 to 1.2.2 ([@openlayers](https://github.com/openlayers))
* [#11685](https://github.com/openlayers/openlayers/pull/11685) - Bump rollup from 2.32.0 to 2.32.1 ([@openlayers](https://github.com/openlayers))
* [#11688](https://github.com/openlayers/openlayers/pull/11688) - Bump webpack-cli from 4.0.0 to 4.1.0 ([@openlayers](https://github.com/openlayers))
* [#11687](https://github.com/openlayers/openlayers/pull/11687) - Bump eslint from 7.11.0 to 7.12.0 ([@openlayers](https://github.com/openlayers))
* [#11666](https://github.com/openlayers/openlayers/pull/11666) - Bump worker-loader from 3.0.4 to 3.0.5 ([@openlayers](https://github.com/openlayers))
* [#11665](https://github.com/openlayers/openlayers/pull/11665) - Bump url-polyfill from 1.1.10 to 1.1.11 ([@openlayers](https://github.com/openlayers))
* [#11664](https://github.com/openlayers/openlayers/pull/11664) - Bump @babel/core from 7.11.6 to 7.12.3 ([@openlayers](https://github.com/openlayers))
* [#11663](https://github.com/openlayers/openlayers/pull/11663) - Bump yargs from 16.0.3 to 16.1.0 ([@openlayers](https://github.com/openlayers))
* [#11662](https://github.com/openlayers/openlayers/pull/11662) - Bump mocha from 8.1.3 to 8.2.0 ([@openlayers](https://github.com/openlayers))
* [#11661](https://github.com/openlayers/openlayers/pull/11661) - Bump rollup from 2.29.0 to 2.32.0 ([@openlayers](https://github.com/openlayers))
* [#11660](https://github.com/openlayers/openlayers/pull/11660) - Bump @babel/preset-env from 7.11.5 to 7.12.1 ([@openlayers](https://github.com/openlayers))
* [#11643](https://github.com/openlayers/openlayers/pull/11643) - Bump terser-webpack-plugin from 4.2.2 to 4.2.3 ([@openlayers](https://github.com/openlayers))
* [#11645](https://github.com/openlayers/openlayers/pull/11645) - Bump webpack-cli from 3.3.12 to 4.0.0 ([@openlayers](https://github.com/openlayers))
* [#11644](https://github.com/openlayers/openlayers/pull/11644) - Bump copy-webpack-plugin from 6.2.0 to 6.2.1 ([@openlayers](https://github.com/openlayers))
* [#11642](https://github.com/openlayers/openlayers/pull/11642) - Bump sinon from 9.1.0 to 9.2.0 ([@openlayers](https://github.com/openlayers))
* [#11641](https://github.com/openlayers/openlayers/pull/11641) - Bump rollup from 2.28.2 to 2.29.0 ([@openlayers](https://github.com/openlayers))
* [#11640](https://github.com/openlayers/openlayers/pull/11640) - Bump worker-loader from 3.0.3 to 3.0.4 ([@openlayers](https://github.com/openlayers))
* [#11639](https://github.com/openlayers/openlayers/pull/11639) - Bump eslint from 7.10.0 to 7.11.0 ([@openlayers](https://github.com/openlayers))
* [#11622](https://github.com/openlayers/openlayers/pull/11622) - Bump sinon from 9.0.3 to 9.1.0 ([@openlayers](https://github.com/openlayers))
* [#11623](https://github.com/openlayers/openlayers/pull/11623) - Bump copy-webpack-plugin from 6.1.1 to 6.2.0 ([@openlayers](https://github.com/openlayers))
* [#11603](https://github.com/openlayers/openlayers/pull/11603) - Bump rollup from 2.28.1 to 2.28.2 ([@openlayers](https://github.com/openlayers))
* [#11602](https://github.com/openlayers/openlayers/pull/11602) - Bump marked from 1.1.1 to 1.2.0 ([@openlayers](https://github.com/openlayers))
* [#11601](https://github.com/openlayers/openlayers/pull/11601) - Bump puppeteer from 5.3.0 to 5.3.1 ([@openlayers](https://github.com/openlayers))
* [#11600](https://github.com/openlayers/openlayers/pull/11600) - Bump eslint from 7.9.0 to 7.10.0 ([@openlayers](https://github.com/openlayers))
* [#11599](https://github.com/openlayers/openlayers/pull/11599) - Bump worker-loader from 3.0.2 to 3.0.3 ([@openlayers](https://github.com/openlayers))
* [#11598](https://github.com/openlayers/openlayers/pull/11598) - Bump karma from 5.2.2 to 5.2.3 ([@openlayers](https://github.com/openlayers))
* [#11578](https://github.com/openlayers/openlayers/pull/11578) - Bump rollup from 2.26.11 to 2.28.1 ([@openlayers](https://github.com/openlayers))
* [#11576](https://github.com/openlayers/openlayers/pull/11576) - Bump terser-webpack-plugin from 4.2.0 to 4.2.2 ([@openlayers](https://github.com/openlayers))
* [#11575](https://github.com/openlayers/openlayers/pull/11575) - Bump typescript from 4.0.2 to 4.0.3 ([@openlayers](https://github.com/openlayers))
* [#11577](https://github.com/openlayers/openlayers/pull/11577) - Bump copy-webpack-plugin from 6.1.0 to 6.1.1 ([@openlayers](https://github.com/openlayers))
* [#11574](https://github.com/openlayers/openlayers/pull/11574) - Bump jsdoc from 3.6.5 to 3.6.6 ([@openlayers](https://github.com/openlayers))
* [#11573](https://github.com/openlayers/openlayers/pull/11573) - Bump webpack from 4.44.1 to 4.44.2 ([@openlayers](https://github.com/openlayers))
* [#11558](https://github.com/openlayers/openlayers/pull/11558) - Bump yargs from 15.4.1 to 16.0.3 ([@openlayers](https://github.com/openlayers))
* [#11557](https://github.com/openlayers/openlayers/pull/11557) - Bump eslint from 7.8.1 to 7.9.0 ([@openlayers](https://github.com/openlayers))
* [#11556](https://github.com/openlayers/openlayers/pull/11556) - Bump puppeteer from 5.2.1 to 5.3.0 ([@openlayers](https://github.com/openlayers))
* [#11555](https://github.com/openlayers/openlayers/pull/11555) - Bump karma from 5.2.1 to 5.2.2 ([@openlayers](https://github.com/openlayers))
* [#11554](https://github.com/openlayers/openlayers/pull/11554) - Bump terser-webpack-plugin from 4.1.0 to 4.2.0 ([@openlayers](https://github.com/openlayers))
* [#11553](https://github.com/openlayers/openlayers/pull/11553) - Bump rollup from 2.26.10 to 2.26.11 ([@openlayers](https://github.com/openlayers))
* [#11531](https://github.com/openlayers/openlayers/pull/11531) - Bump rollup from 2.26.8 to 2.26.10 ([@openlayers](https://github.com/openlayers))
* [#11530](https://github.com/openlayers/openlayers/pull/11530) - Bump @babel/preset-env from 7.11.0 to 7.11.5 ([@openlayers](https://github.com/openlayers))
* [#11529](https://github.com/openlayers/openlayers/pull/11529) - Bump rollup-plugin-terser from 7.0.1 to 7.0.2 ([@openlayers](https://github.com/openlayers))
* [#11528](https://github.com/openlayers/openlayers/pull/11528) - Bump @babel/core from 7.11.4 to 7.11.6 ([@openlayers](https://github.com/openlayers))
* [#11526](https://github.com/openlayers/openlayers/pull/11526) - Bump eslint from 7.7.0 to 7.8.1 ([@openlayers](https://github.com/openlayers))
* [#11527](https://github.com/openlayers/openlayers/pull/11527) - Bump karma from 5.1.1 to 5.2.1 ([@openlayers](https://github.com/openlayers))
* [#11525](https://github.com/openlayers/openlayers/pull/11525) - Bump copy-webpack-plugin from 6.0.4 to 6.1.0 ([@openlayers](https://github.com/openlayers))
* [#11515](https://github.com/openlayers/openlayers/pull/11515) - [Security] Bump http-proxy from 1.17.0 to 1.18.1 ([@openlayers](https://github.com/openlayers))
* [#11504](https://github.com/openlayers/openlayers/pull/11504) - [Security] Bump bl from 4.0.2 to 4.0.3 ([@openlayers](https://github.com/openlayers))
* [#11496](https://github.com/openlayers/openlayers/pull/11496) - Bump mocha from 8.1.1 to 8.1.3 ([@openlayers](https://github.com/openlayers))
* [#11495](https://github.com/openlayers/openlayers/pull/11495) - Bump rollup-plugin-terser from 7.0.0 to 7.0.1 ([@openlayers](https://github.com/openlayers))
* [#11494](https://github.com/openlayers/openlayers/pull/11494) - Bump copy-webpack-plugin from 6.0.3 to 6.0.4 ([@openlayers](https://github.com/openlayers))
* [#11493](https://github.com/openlayers/openlayers/pull/11493) - Bump rollup from 2.26.5 to 2.26.8 ([@openlayers](https://github.com/openlayers))
* [#11462](https://github.com/openlayers/openlayers/pull/11462) - Bump rollup from 2.26.3 to 2.26.5 ([@openlayers](https://github.com/openlayers))
* [#11460](https://github.com/openlayers/openlayers/pull/11460) - Bump karma-sourcemap-loader from 0.3.7 to 0.3.8 ([@openlayers](https://github.com/openlayers))
* [#11459](https://github.com/openlayers/openlayers/pull/11459) - Bump ol-mapbox-style from 6.1.3 to 6.1.4 ([@openlayers](https://github.com/openlayers))
* [#11458](https://github.com/openlayers/openlayers/pull/11458) - Bump worker-loader from 3.0.1 to 3.0.2 ([@openlayers](https://github.com/openlayers))
* [#11457](https://github.com/openlayers/openlayers/pull/11457) - Bump @babel/core from 7.11.1 to 7.11.4 ([@openlayers](https://github.com/openlayers))
* [#11443](https://github.com/openlayers/openlayers/pull/11443) - Bump eslint from 7.6.0 to 7.7.0 ([@openlayers](https://github.com/openlayers))
* [#11441](https://github.com/openlayers/openlayers/pull/11441) - Bump terser-webpack-plugin from 4.0.0 to 4.1.0 ([@openlayers](https://github.com/openlayers))
* [#11440](https://github.com/openlayers/openlayers/pull/11440) - Bump rollup from 2.23.1 to 2.26.3 ([@openlayers](https://github.com/openlayers))
* [#11439](https://github.com/openlayers/openlayers/pull/11439) - Bump sinon from 9.0.2 to 9.0.3 ([@openlayers](https://github.com/openlayers))
* [#11442](https://github.com/openlayers/openlayers/pull/11442) - Bump ol-mapbox-style from 6.1.2 to 6.1.3 ([@openlayers](https://github.com/openlayers))
* [#11426](https://github.com/openlayers/openlayers/pull/11426) - Bump @babel/core from 7.11.0 to 7.11.1 ([@openlayers](https://github.com/openlayers))
* [#11425](https://github.com/openlayers/openlayers/pull/11425) - Bump rollup from 2.23.0 to 2.23.1 ([@openlayers](https://github.com/openlayers))
* [#11424](https://github.com/openlayers/openlayers/pull/11424) - Bump rollup-plugin-terser from 6.1.0 to 7.0.0 ([@openlayers](https://github.com/openlayers))
* [#11423](https://github.com/openlayers/openlayers/pull/11423) - Bump worker-loader from 3.0.0 to 3.0.1 ([@openlayers](https://github.com/openlayers))
* [#11422](https://github.com/openlayers/openlayers/pull/11422) - Bump terser-webpack-plugin from 3.0.8 to 4.0.0 ([@openlayers](https://github.com/openlayers))
* [#11421](https://github.com/openlayers/openlayers/pull/11421) - Bump mocha from 8.1.0 to 8.1.1 ([@openlayers](https://github.com/openlayers))
With more than 160 pull requests from 14 contributors, this release brings improved support for using OpenLayers in Node.js enviromnents, a new WKB (well knowm binary) format, TypeScript declarations in the ol package, and more efficient vector tile rendering. In addition, several examples were added or improved, and many bugs were fixed.
## Upgrade notes
#### Included TypeScript declarations
The [ol package](https://npmjs.com/package/ol) now includes TypeScript declarations as `*.d.ts` files.
If desired, e.g. when you don't want to adjust your code after upgrading from a previous version where you used `@types/ol`, you can opt out of the included types and use third-party types by specifying aliases in the `compilerOptions` section of `tsconfig.json`, e.g.
```json
"baseUrl":"./",
"paths":{
"ol":["node_modules/@types/ol"],
"ol/*":["node_modules/@types/ol/*"]
},
```
#### Deprecation of `undefinedHTML` option for the MousePosition control
The `undefinedHTML` option for the MousePosition control has been deprecated and will be removed in a future release. Use the new `placeholder` option instead.
#### New `placeholder` option for the MousePosition control
When the mouse position is not available, the control renders a non-breaking space. To render somthing else instead,
set the `placeholder` option. If you want to retain the last position when the mouse leaves the viewport, set
`placeholder: false`. This will be the default behavior in a future release.
The `placeholder` option has no effect if the deprecated `undefinedHTML` option is also used. You should use the `placeholder` option instead of `undefinedHTML`.
#### Deprecation of `image` render mode for vector tile layers
`renderMode: 'image'` for vector tile layers has been deprecated. Applications continue to work, but a warning will be issued to the console. To get rid of the warning, simply remove the `renderMode` option.
## New features and improvements
* New [create-ol-app](https://www.npmjs.com/package/create-ol-app) package to create a new app with an OpenLayers map.
* Improved rendering quality of regular shapes and circles.
* New `placeholder` option for better control of the `MousePosition` control's output.
* TypeScript generated `.d.ts` files are now included in the [ol](https://npmjs.com/package/ol) package.
* Improved `zDirection` option on tile sources to control when the tile z changes on fractional zoom levels.
* Template mode for the `TileDebug` source for better debugging of tile coordinate issues.
* More efficient vector tile rendering to save battery on mobile devices and memory.
* New 'properties' option on layers for easier use of arbitrary properties in typed environments.
* Hit detection support when using OffscreenCanvas and workers for rendering.
* The [ol](https://npmjs.com/package/ol) now uses `"type": "module"` in `package.json` for easier use of OpenLayers in Node.js.
* New WKB (Well-Known Binary) format parser and serializer.
* Console warning when map container's width or height are zero.
* New `snapToPointer` option on the `Modify` interaction to control user experience when clicking a vertex far away from its center.
## List of all changes
* [#12442](https://github.com/openlayers/openlayers/pull/12442) - Fix layer render extent when it is not at all in view ([@MoonE](https://github.com/MoonE))
* [#12492](https://github.com/openlayers/openlayers/pull/12492) - Use create-ol-app to create a new app ([@tschaub](https://github.com/tschaub))
* [#12467](https://github.com/openlayers/openlayers/pull/12467) - Fixes / improvements for RegularShape ([@MoonE](https://github.com/MoonE))
* [#12491](https://github.com/openlayers/openlayers/pull/12491) - Add a new placeholder option and deprecate undefinedHTML for the mouse position control ([@tschaub](https://github.com/tschaub))
* [#12488](https://github.com/openlayers/openlayers/pull/12488) - MousePosition: allow rendering of empty string ([@JakobMiksch](https://github.com/JakobMiksch))
* [#12464](https://github.com/openlayers/openlayers/pull/12464) - Make zDirection option available for all tile sources ([@mike-000](https://github.com/mike-000))
* [#12489](https://github.com/openlayers/openlayers/pull/12489) - Update ol-mapbox-style to v6.4.0 ([@ahocevar](https://github.com/ahocevar))
* [#12484](https://github.com/openlayers/openlayers/pull/12484) - Add GeoSolutions as a monthly sponsor ([@tschaub](https://github.com/tschaub))
* [#12480](https://github.com/openlayers/openlayers/pull/12480) - Fix gap in tiles due to floating point math ([@MoonE](https://github.com/MoonE))
* [#12453](https://github.com/openlayers/openlayers/pull/12453) - Allow multiple LinearRings per innerBoundaryIs ([@MoonE](https://github.com/MoonE))
* [#12466](https://github.com/openlayers/openlayers/pull/12466) - Fix getVectorContext on TileLayer with pixelRatio != 1 ([@MoonE](https://github.com/MoonE))
* [#12459](https://github.com/openlayers/openlayers/pull/12459) - Fix documentation for GML class. ([@simonseyock](https://github.com/simonseyock))
* [#12455](https://github.com/openlayers/openlayers/pull/12455) - Consistent use of quotes in example description ([@mike-000](https://github.com/mike-000))
* [#12373](https://github.com/openlayers/openlayers/pull/12373) - Rework TileDebug to allow TMS coordinates and to fix reprojection ([@mike-000](https://github.com/mike-000))
* [#12441](https://github.com/openlayers/openlayers/pull/12441) - Style-based measure example ([@mike-000](https://github.com/mike-000))
* [#12431](https://github.com/openlayers/openlayers/pull/12431) - Add tsc-generated type definitions for opt-in ([@ahocevar](https://github.com/ahocevar))
* [#12417](https://github.com/openlayers/openlayers/pull/12417) - Use html2canvas instead of dom-to-image ([@ahocevar](https://github.com/ahocevar))
* [#12409](https://github.com/openlayers/openlayers/pull/12409) - Fix WMTS wrapX detection if WGS84BoundingBox is not set ([@M393](https://github.com/M393))
* [#12237](https://github.com/openlayers/openlayers/pull/12237) - Fix Modify interaction with hitDetection ([@M393](https://github.com/M393))
* [#12416](https://github.com/openlayers/openlayers/pull/12416) - Use generics to limit event types in on(), once() and un() ([@ahocevar](https://github.com/ahocevar))
* [#12408](https://github.com/openlayers/openlayers/pull/12408) - Do not fire modifystart when nothing is being modified ([@ahocevar](https://github.com/ahocevar))
* [#12414](https://github.com/openlayers/openlayers/pull/12414) - Replace getChangeEventType() with add/removeChangeListener methods ([@ahocevar](https://github.com/ahocevar))
* [#12194](https://github.com/openlayers/openlayers/pull/12194) - Respect pixel ratio with immediate render ([@MoonE](https://github.com/MoonE))
* [#12231](https://github.com/openlayers/openlayers/pull/12231) - Move tolerance should not increase with higher pixel ratio ([@MoonE](https://github.com/MoonE))
* [#12282](https://github.com/openlayers/openlayers/pull/12282) - Fix DragZoom with view padding ([@M393](https://github.com/M393))
* [#12223](https://github.com/openlayers/openlayers/pull/12223) - generic source parameters for options ([@simonseyock](https://github.com/simonseyock))
* [#12219](https://github.com/openlayers/openlayers/pull/12219) - Add 'properties' to Layer constructors ([@ahocevar](https://github.com/ahocevar))
* [#12284](https://github.com/openlayers/openlayers/pull/12284) - Layers should inherit group z-index ([@MoonE](https://github.com/MoonE))
* [#12304](https://github.com/openlayers/openlayers/pull/12304) - New example: Scale and Rotate using Modify Interaction ([@mike-000](https://github.com/mike-000))
* [#12378](https://github.com/openlayers/openlayers/pull/12378) - Correct .split() calls to only split numeric srid for ArcgisRest ([@mike-000](https://github.com/mike-000))
* [#12393](https://github.com/openlayers/openlayers/pull/12393) - Scale up static Image and round to nearest pixel to avoid rounding errors ([@mike-000](https://github.com/mike-000))
* [#12394](https://github.com/openlayers/openlayers/pull/12394) - Ensure VectorSource getUrl() corresponds to last setUrl() ([@mike-000](https://github.com/mike-000))
* [#12357](https://github.com/openlayers/openlayers/pull/12357) - Use calculateElevation function in Shaded Relief example ([@mike-000](https://github.com/mike-000))
* [#12375](https://github.com/openlayers/openlayers/pull/12375) - Fix Vector Tile Selection example on old browsers ([@mike-000](https://github.com/mike-000))
* [#12364](https://github.com/openlayers/openlayers/pull/12364) - Simpler and faster VectorTile loading ([@ahocevar](https://github.com/ahocevar))
* [#12359](https://github.com/openlayers/openlayers/pull/12359) - Fix broken link in docs ([@mike-000](https://github.com/mike-000))
* [#12330](https://github.com/openlayers/openlayers/pull/12330) - Do not require PointerEvent constructor ([@ahocevar](https://github.com/ahocevar))
* [#12355](https://github.com/openlayers/openlayers/pull/12355) - document descending order of resolutions array ([@simonseyock](https://github.com/simonseyock))
* [#12349](https://github.com/openlayers/openlayers/pull/12349) - Document the input to an attribution function ([@mike-000](https://github.com/mike-000))
* [#12340](https://github.com/openlayers/openlayers/pull/12340) - Fix raster example tooltips ([@MoonE](https://github.com/MoonE))
* [#12338](https://github.com/openlayers/openlayers/pull/12338) - Do not use __proto__ to restore instances after main thread - worker transfer ([@ahocevar](https://github.com/ahocevar))
* [#12339](https://github.com/openlayers/openlayers/pull/12339) - Fix confusing import in Mapbox Style example ([@mike-000](https://github.com/mike-000))
* [#12334](https://github.com/openlayers/openlayers/pull/12334) - More consistent example for ol/layer/MapboxVector ([@MoonE](https://github.com/MoonE))
* [#12297](https://github.com/openlayers/openlayers/pull/12297) - Add condition option to Translate interaction ([@mike-000](https://github.com/mike-000))
* [#12283](https://github.com/openlayers/openlayers/pull/12283) - Add link to yey'maps as a sponsor ([@tschaub](https://github.com/tschaub))
* [#12277](https://github.com/openlayers/openlayers/pull/12277) - Lint the index file after generating the legacy build ([@tschaub](https://github.com/tschaub))
* [#12273](https://github.com/openlayers/openlayers/pull/12273) - Use lowercase module names for modules without a default export ([@tschaub](https://github.com/tschaub))
* [#12264](https://github.com/openlayers/openlayers/pull/12264) - Run selected format tests in Node ([@tschaub](https://github.com/tschaub))
* [#12263](https://github.com/openlayers/openlayers/pull/12263) - Fix the next-dev-version.js script ([@tschaub](https://github.com/tschaub))
* [#12241](https://github.com/openlayers/openlayers/pull/12241) - Use modules everywhere ([@tschaub](https://github.com/tschaub))
* [#12250](https://github.com/openlayers/openlayers/pull/12250) - Do not set projection extent in WMTS optionsFromCapabilities ([@mike-000](https://github.com/mike-000))
* [#12259](https://github.com/openlayers/openlayers/pull/12259) - Make it clearer what fails in webgl point layer test ([@tschaub](https://github.com/tschaub))
* [#12258](https://github.com/openlayers/openlayers/pull/12258) - Following the recommendation to run on a merge commit ([@tschaub](https://github.com/tschaub))
* [#12251](https://github.com/openlayers/openlayers/pull/12251) - Test reorganization ([@tschaub](https://github.com/tschaub))
* [#12249](https://github.com/openlayers/openlayers/pull/12249) - Update the name of the build job ([@tschaub](https://github.com/tschaub))
* [#12248](https://github.com/openlayers/openlayers/pull/12248) - Avoid naming required checks with a changing version ([@tschaub](https://github.com/tschaub))
* [#12238](https://github.com/openlayers/openlayers/pull/12238) - Use proxy url as interim fix for mixed content in the MapGuide example ([@mike-000](https://github.com/mike-000))
* [#12239](https://github.com/openlayers/openlayers/pull/12239) - Add example showing how to Draw and Modify geodesic circles ([@mike-000](https://github.com/mike-000))
* [#12247](https://github.com/openlayers/openlayers/pull/12247) - Build on Node 16 and update dev dependencies ([@tschaub](https://github.com/tschaub))
* [#12230](https://github.com/openlayers/openlayers/pull/12230) - Fix @types/estree version and remove skipLibCheck: false from tsconfig ([@ahocevar](https://github.com/ahocevar))
* [#11952](https://github.com/openlayers/openlayers/pull/11952) - Draw 800km circles around both poles in Tissot example ([@mike-000](https://github.com/mike-000))
* [#12229](https://github.com/openlayers/openlayers/pull/12229) - Prevent TypeScript Compiler from erroring out due to lib checks ([@ahocevar](https://github.com/ahocevar))
* [#12224](https://github.com/openlayers/openlayers/pull/12224) - Use a better maintained loader for test coverage ([@ahocevar](https://github.com/ahocevar))
* [#12227](https://github.com/openlayers/openlayers/pull/12227) - Fix event handling for map in shadow root ([@MoonE](https://github.com/MoonE))
* [#12214](https://github.com/openlayers/openlayers/pull/12214) - Do not set invalid style ([@ahocevar](https://github.com/ahocevar))
* [#12217](https://github.com/openlayers/openlayers/pull/12217) - Fix building of examples with latest copy-webpack-plugin ([@MoonE](https://github.com/MoonE))
* [#12198](https://github.com/openlayers/openlayers/pull/12198) - Add attributionsCollapsible option to source/TileWMS and source/WMTS ([@sbx320](https://github.com/sbx320))
* [#12176](https://github.com/openlayers/openlayers/pull/12176) - Allow private class members to be mangled ([@bz2](https://github.com/bz2))
* [#12178](https://github.com/openlayers/openlayers/pull/12178) - Add WKB (Well-Known Binary) format ([@kikuchan](https://github.com/kikuchan))
* [#12180](https://github.com/openlayers/openlayers/pull/12180) - Fix rendering of MultiPolygon text styles ([@MoonE](https://github.com/MoonE))
* [#12185](https://github.com/openlayers/openlayers/pull/12185) - MapBrowserEvent#preventDefault() behaves the same as with native events ([@ahocevar](https://github.com/ahocevar))
* [#12181](https://github.com/openlayers/openlayers/pull/12181) - Build for ie11 again ([@MoonE](https://github.com/MoonE))
* [#12028](https://github.com/openlayers/openlayers/pull/12028) - Overview map no initial target ([@MoonE](https://github.com/MoonE))
* [#12175](https://github.com/openlayers/openlayers/pull/12175) - Refresh available examples before each compilation ([@MoonE](https://github.com/MoonE))
* [#12170](https://github.com/openlayers/openlayers/pull/12170) - Link to GitHub sponsors page ([@tschaub](https://github.com/tschaub))
* [#12168](https://github.com/openlayers/openlayers/pull/12168) - VectorSource#getFeatures() consistently returns a new array ([@ahocevar](https://github.com/ahocevar))
* [#12164](https://github.com/openlayers/openlayers/pull/12164) - Fix offscreen-canvas example ([@ahocevar](https://github.com/ahocevar))
* [#12163](https://github.com/openlayers/openlayers/pull/12163) - Fix how renderMode is derived from options ([@ahocevar](https://github.com/ahocevar))
* [#12137](https://github.com/openlayers/openlayers/pull/12137) - Load less tiles when low on frame budget ([@ahocevar](https://github.com/ahocevar))
* [#12143](https://github.com/openlayers/openlayers/pull/12143) - Fix singleclick and doubleclick events ([@ahocevar](https://github.com/ahocevar))
* [#12141](https://github.com/openlayers/openlayers/pull/12141) - call the success callback after the features are added ([@kikitte](https://github.com/kikitte))
* [#12089](https://github.com/openlayers/openlayers/pull/12089) - Fix common misspellings ([@marcjansen](https://github.com/marcjansen))
* [#12062](https://github.com/openlayers/openlayers/pull/12062) - Fix kml-timezone example tooltip ([@M393](https://github.com/M393))
* [#12088](https://github.com/openlayers/openlayers/pull/12088) - Fix broken url/description of ImageArcGISRest documentation ([@dbretschneider](https://github.com/dbretschneider))
* [#12083](https://github.com/openlayers/openlayers/pull/12083) - Simplify event handling for custom elements ([@ahocevar](https://github.com/ahocevar))
* [#12080](https://github.com/openlayers/openlayers/pull/12080) - Add a minimum distance config to the cluster source ([@MoonE](https://github.com/MoonE))
* [#12084](https://github.com/openlayers/openlayers/pull/12084) - Only preventDefault when event is cancelable ([@ahocevar](https://github.com/ahocevar))
* [#12079](https://github.com/openlayers/openlayers/pull/12079) - Change IGN WMTS example to use PLANIGNV2 layer ([@mike-000](https://github.com/mike-000))
* [#11845](https://github.com/openlayers/openlayers/pull/11845) - Call finishCondition for all types for Draw interaction ([@MoonE](https://github.com/MoonE))
* [#12066](https://github.com/openlayers/openlayers/pull/12066) - Always return Promise from getFeatures ([@M393](https://github.com/M393))
* [#12057](https://github.com/openlayers/openlayers/pull/12057) - TileQueue tests with events instead of setTimeout ([@ahocevar](https://github.com/ahocevar))
* [#12058](https://github.com/openlayers/openlayers/pull/12058) - Fix map loading for basemap.at and add attributions ([@M393](https://github.com/M393))
* [#12024](https://github.com/openlayers/openlayers/pull/12024) - Add a tile grid method for getting a tile range given a tile coord and zoom level ([@tschaub](https://github.com/tschaub))
* [#12023](https://github.com/openlayers/openlayers/pull/12023) - Avoid collisions between user variables and internal names in WebGL shaders ([@tschaub](https://github.com/tschaub))
* [#12021](https://github.com/openlayers/openlayers/pull/12021) - Allow source projection to be set after construction ([@tschaub](https://github.com/tschaub))
* [#12022](https://github.com/openlayers/openlayers/pull/12022) - Throw when WebGL style parsing encounters an unexpected type ([@tschaub](https://github.com/tschaub))
* [#12007](https://github.com/openlayers/openlayers/pull/12007) - Report all features being modified ([@ahocevar](https://github.com/ahocevar))
* [#11991](https://github.com/openlayers/openlayers/pull/11991) - Fix some typings in format and format/WKT ([@simonseyock](https://github.com/simonseyock))
* [#11992](https://github.com/openlayers/openlayers/pull/11992) - Improve measure example ux ([@MoonE](https://github.com/MoonE))
* [#11987](https://github.com/openlayers/openlayers/pull/11987) - Respect opacity for vector instructions ([@ahocevar](https://github.com/ahocevar))
* [#11989](https://github.com/openlayers/openlayers/pull/11989) - Correct pixel ratio descriptions ([@mike-000](https://github.com/mike-000))
* [#11988](https://github.com/openlayers/openlayers/pull/11988) - Warn when map container's width or height are zero ([@ahocevar](https://github.com/ahocevar))
* [#11967](https://github.com/openlayers/openlayers/pull/11967) - Simplify popup positioning in Icon Scale example ([@mike-000](https://github.com/mike-000))
* [#11954](https://github.com/openlayers/openlayers/pull/11954) - Simplify icon example ([@ahocevar](https://github.com/ahocevar))
* [#11965](https://github.com/openlayers/openlayers/pull/11965) - Handle view rotation in d3 Integration example ([@mike-000](https://github.com/mike-000))
* [#11950](https://github.com/openlayers/openlayers/pull/11950) - Make polygons in the GeoJSON example comply to GeoJSON specification ([@mike-000](https://github.com/mike-000))
* [#11955](https://github.com/openlayers/openlayers/pull/11955) - Fix URLs in ol/source/CartoDB pointing to CartoDB API docs ([@geraldo](https://github.com/geraldo))
* [#11947](https://github.com/openlayers/openlayers/pull/11947) - Demonstrates how to get the coordinates been clustered. ([@yukihiratype2](https://github.com/yukihiratype2))
* [#11938](https://github.com/openlayers/openlayers/pull/11938) - Take view padding into account for calculateExtent() ([@ahocevar](https://github.com/ahocevar))
* [#11941](https://github.com/openlayers/openlayers/pull/11941) - Fix loading flag for vector loading strategies ([@ahocevar](https://github.com/ahocevar))
* [#11925](https://github.com/openlayers/openlayers/pull/11925) - Mention unit of radius for Polygon.circular() ([@kannes](https://github.com/kannes))
* [#11914](https://github.com/openlayers/openlayers/pull/11914) - Fix image with text decluttering ([@ahocevar](https://github.com/ahocevar))
* [#11911](https://github.com/openlayers/openlayers/pull/11911) - Do not clip declutter executor groups ([@ahocevar](https://github.com/ahocevar))
* [#11856](https://github.com/openlayers/openlayers/pull/11856) - Use tilegrid extent as default attributionExtent for TileJSON ([@mike-000](https://github.com/mike-000))
* [#11900](https://github.com/openlayers/openlayers/pull/11900) - Update pratique key to choisirgeoportail in the IGN WMTS example ([@mike-000](https://github.com/mike-000))
* [#11913](https://github.com/openlayers/openlayers/pull/11913) - Handle null geometry in TopoJSON ([@mike-000](https://github.com/mike-000))
* [#11893](https://github.com/openlayers/openlayers/pull/11893) - Pass the renderer function to the cloned style ([@mjjurkoic](https://github.com/mjjurkoic))
* [#11901](https://github.com/openlayers/openlayers/pull/11901) - Fix handling of VectorTile renderBuffer ([@ahocevar](https://github.com/ahocevar))
* [#11899](https://github.com/openlayers/openlayers/pull/11899) - Update HERE Map Tile API example to use API key ([@mike-000](https://github.com/mike-000))
* [#11882](https://github.com/openlayers/openlayers/pull/11882) - Improved documentation for feature load events. ([@simonseyock](https://github.com/simonseyock))
* [#11886](https://github.com/openlayers/openlayers/pull/11886) - Throw an error if shaders fail to compile or program fails to link ([@tschaub](https://github.com/tschaub))
* [#11874](https://github.com/openlayers/openlayers/pull/11874) - Hit lines even if they are dashed ([@tschaub](https://github.com/tschaub))
* [#11873](https://github.com/openlayers/openlayers/pull/11873) - Update Mapbox-gl Layer example to mapbox-gl-js version 1.13.0 and add note about why an old version is used ([@mike-000](https://github.com/mike-000))
* [#11865](https://github.com/openlayers/openlayers/pull/11865) - Use ol/array#includes instead of Array.prototype.includes() ([@mike-000](https://github.com/mike-000))
* [#11872](https://github.com/openlayers/openlayers/pull/11872) - Legacy build for legacy browsers ([@ahocevar](https://github.com/ahocevar))
* [#11871](https://github.com/openlayers/openlayers/pull/11871) - Fix examples and build for ie11 ([@MoonE](https://github.com/MoonE))
<details>
<summary>Dependency Updates</summary>
* [#12470](https://github.com/openlayers/openlayers/pull/12470) - Bump loglevelnext from 4.0.1 to 5.0.5 ([@openlayers](https://github.com/openlayers))
* [#12472](https://github.com/openlayers/openlayers/pull/12472) - Bump eslint from 7.29.0 to 7.30.0 ([@openlayers](https://github.com/openlayers))
* [#12471](https://github.com/openlayers/openlayers/pull/12471) - Bump coveralls from 3.1.0 to 3.1.1 ([@openlayers](https://github.com/openlayers))
* [#12473](https://github.com/openlayers/openlayers/pull/12473) - Bump mocha from 9.0.1 to 9.0.2 ([@openlayers](https://github.com/openlayers))
* [#12476](https://github.com/openlayers/openlayers/pull/12476) - Bump @types/topojson-specification from 1.0.1 to 1.0.2 ([@openlayers](https://github.com/openlayers))
* [#12469](https://github.com/openlayers/openlayers/pull/12469) - Bump puppeteer from 10.0.0 to 10.1.0 ([@openlayers](https://github.com/openlayers))
* [#12474](https://github.com/openlayers/openlayers/pull/12474) - Bump typescript from 4.3.4 to 4.3.5 ([@openlayers](https://github.com/openlayers))
* [#12475](https://github.com/openlayers/openlayers/pull/12475) - Bump rollup from 2.52.3 to 2.52.7 ([@openlayers](https://github.com/openlayers))
* [#12468](https://github.com/openlayers/openlayers/pull/12468) - Bump webpack from 5.40.0 to 5.42.0 ([@openlayers](https://github.com/openlayers))
* [#12443](https://github.com/openlayers/openlayers/pull/12443) - Bump marked from 2.1.2 to 2.1.3 ([@openlayers](https://github.com/openlayers))
* [#12444](https://github.com/openlayers/openlayers/pull/12444) - Bump terser-webpack-plugin from 5.1.3 to 5.1.4 ([@openlayers](https://github.com/openlayers))
* [#12445](https://github.com/openlayers/openlayers/pull/12445) - Bump @babel/preset-env from 7.14.5 to 7.14.7 ([@openlayers](https://github.com/openlayers))
* [#12446](https://github.com/openlayers/openlayers/pull/12446) - Bump rollup from 2.52.2 to 2.52.3 ([@openlayers](https://github.com/openlayers))
* [#12447](https://github.com/openlayers/openlayers/pull/12447) - Bump eslint-config-openlayers from 15.0.0 to 15.1.0 ([@openlayers](https://github.com/openlayers))
* [#12448](https://github.com/openlayers/openlayers/pull/12448) - Bump copy-webpack-plugin from 9.0.0 to 9.0.1 ([@openlayers](https://github.com/openlayers))
* [#12449](https://github.com/openlayers/openlayers/pull/12449) - Bump @babel/eslint-parser from 7.14.5 to 7.14.7 ([@openlayers](https://github.com/openlayers))
* [#12423](https://github.com/openlayers/openlayers/pull/12423) - Bump globby from 11.0.3 to 11.0.4 ([@openlayers](https://github.com/openlayers))
* [#12435](https://github.com/openlayers/openlayers/pull/12435) - Bump marked from 2.0.7 to 2.1.2 ([@openlayers](https://github.com/openlayers))
* [#12426](https://github.com/openlayers/openlayers/pull/12426) - Bump @babel/core from 7.14.5 to 7.14.6 ([@openlayers](https://github.com/openlayers))
* [#12427](https://github.com/openlayers/openlayers/pull/12427) - Bump typescript from 4.3.2 to 4.3.4 ([@openlayers](https://github.com/openlayers))
* [#12421](https://github.com/openlayers/openlayers/pull/12421) - Bump eslint from 7.28.0 to 7.29.0 ([@openlayers](https://github.com/openlayers))
* [#12420](https://github.com/openlayers/openlayers/pull/12420) - Bump mocha from 9.0.0 to 9.0.1 ([@openlayers](https://github.com/openlayers))
* [#12425](https://github.com/openlayers/openlayers/pull/12425) - Bump rollup from 2.51.2 to 2.52.2 ([@openlayers](https://github.com/openlayers))
* [#12428](https://github.com/openlayers/openlayers/pull/12428) - Bump proj4 from 2.7.2 to 2.7.4 ([@openlayers](https://github.com/openlayers))
* [#12433](https://github.com/openlayers/openlayers/pull/12433) - Bump webpack from 5.38.1 to 5.40.0 ([@openlayers](https://github.com/openlayers))
* [#12397](https://github.com/openlayers/openlayers/pull/12397) - Bump @babel/eslint-parser from 7.14.4 to 7.14.5 ([@openlayers](https://github.com/openlayers))
* [#12398](https://github.com/openlayers/openlayers/pull/12398) - Bump karma from 6.3.3 to 6.3.4 ([@openlayers](https://github.com/openlayers))
* [#12400](https://github.com/openlayers/openlayers/pull/12400) - Bump webpack-cli from 4.7.0 to 4.7.2 ([@openlayers](https://github.com/openlayers))
* [#12401](https://github.com/openlayers/openlayers/pull/12401) - Bump @babel/preset-env from 7.14.4 to 7.14.5 ([@openlayers](https://github.com/openlayers))
* [#12402](https://github.com/openlayers/openlayers/pull/12402) - Bump rollup from 2.51.0 to 2.51.2 ([@openlayers](https://github.com/openlayers))
* [#12403](https://github.com/openlayers/openlayers/pull/12403) - Bump @babel/core from 7.14.3 to 7.14.5 ([@openlayers](https://github.com/openlayers))
* [#12399](https://github.com/openlayers/openlayers/pull/12399) - Bump mocha from 8.4.0 to 9.0.0 ([@openlayers](https://github.com/openlayers))
* [#12386](https://github.com/openlayers/openlayers/pull/12386) - Bump rollup from 2.50.5 to 2.51.0 ([@openlayers](https://github.com/openlayers))
* [#12384](https://github.com/openlayers/openlayers/pull/12384) - Bump karma-firefox-launcher from 2.1.0 to 2.1.1 ([@openlayers](https://github.com/openlayers))
* [#12385](https://github.com/openlayers/openlayers/pull/12385) - Bump marked from 2.0.6 to 2.0.7 ([@openlayers](https://github.com/openlayers))
* [#12383](https://github.com/openlayers/openlayers/pull/12383) - Bump webpack-dev-middleware from 4.3.0 to 5.0.0 ([@openlayers](https://github.com/openlayers))
* [#12379](https://github.com/openlayers/openlayers/pull/12379) - Bump karma from 6.3.2 to 6.3.3 ([@openlayers](https://github.com/openlayers))
* [#12381](https://github.com/openlayers/openlayers/pull/12381) - Bump terser-webpack-plugin from 5.1.2 to 5.1.3 ([@openlayers](https://github.com/openlayers))
* [#12382](https://github.com/openlayers/openlayers/pull/12382) - Bump eslint from 7.27.0 to 7.28.0 ([@openlayers](https://github.com/openlayers))
* [#12380](https://github.com/openlayers/openlayers/pull/12380) - Bump puppeteer from 9.1.1 to 10.0.0 ([@openlayers](https://github.com/openlayers))
* [#12368](https://github.com/openlayers/openlayers/pull/12368) - Bump typescript from 4.2.4 to 4.3.2 ([@openlayers](https://github.com/openlayers))
* [#12365](https://github.com/openlayers/openlayers/pull/12365) - Bump rollup from 2.49.0 to 2.50.5 ([@openlayers](https://github.com/openlayers))
* [#12371](https://github.com/openlayers/openlayers/pull/12371) - Bump marked from 2.0.5 to 2.0.6 ([@openlayers](https://github.com/openlayers))
* [#12366](https://github.com/openlayers/openlayers/pull/12366) - Bump @babel/eslint-parser from 7.14.3 to 7.14.4 ([@openlayers](https://github.com/openlayers))
* [#12367](https://github.com/openlayers/openlayers/pull/12367) - Bump @babel/preset-env from 7.14.2 to 7.14.4 ([@openlayers](https://github.com/openlayers))
* [#12369](https://github.com/openlayers/openlayers/pull/12369) - Bump webpack from 5.37.1 to 5.38.1 ([@openlayers](https://github.com/openlayers))
* [#12370](https://github.com/openlayers/openlayers/pull/12370) - Bump webpack-sources from 2.2.0 to 2.3.0 ([@openlayers](https://github.com/openlayers))
* [#12372](https://github.com/openlayers/openlayers/pull/12372) - Bump sinon from 10.0.0 to 11.1.1 ([@openlayers](https://github.com/openlayers))
* [#12341](https://github.com/openlayers/openlayers/pull/12341) - Bump webpack-dev-middleware from 4.2.0 to 4.3.0 ([@openlayers](https://github.com/openlayers))
* [#12321](https://github.com/openlayers/openlayers/pull/12321) - Bump webpack-dev-server from 4.0.0-beta.2 to 4.0.0-beta.3 ([@openlayers](https://github.com/openlayers))
* [#12345](https://github.com/openlayers/openlayers/pull/12345) - Bump eslint from 7.26.0 to 7.27.0 ([@openlayers](https://github.com/openlayers))
* [#12342](https://github.com/openlayers/openlayers/pull/12342) - Bump copy-webpack-plugin from 8.1.1 to 9.0.0 ([@openlayers](https://github.com/openlayers))
* [#12343](https://github.com/openlayers/openlayers/pull/12343) - Bump rollup from 2.48.0 to 2.49.0 ([@openlayers](https://github.com/openlayers))
* [#12344](https://github.com/openlayers/openlayers/pull/12344) - Bump marked from 2.0.3 to 2.0.5 ([@openlayers](https://github.com/openlayers))
* [#12346](https://github.com/openlayers/openlayers/pull/12346) - Bump @babel/core from 7.14.2 to 7.14.3 ([@openlayers](https://github.com/openlayers))
* [#12347](https://github.com/openlayers/openlayers/pull/12347) - Bump @babel/eslint-parser from 7.14.2 to 7.14.3 ([@openlayers](https://github.com/openlayers))
* [#12348](https://github.com/openlayers/openlayers/pull/12348) - Bump webpack from 5.37.0 to 5.37.1 ([@openlayers](https://github.com/openlayers))
* [#12326](https://github.com/openlayers/openlayers/pull/12326) - Bump webpack from 5.36.2 to 5.37.0 ([@openlayers](https://github.com/openlayers))
* [#12323](https://github.com/openlayers/openlayers/pull/12323) - Bump @babel/core from 7.14.0 to 7.14.2 ([@openlayers](https://github.com/openlayers))
* [#12322](https://github.com/openlayers/openlayers/pull/12322) - Bump jsdoc from 3.6.6 to 3.6.7 ([@openlayers](https://github.com/openlayers))
* [#12324](https://github.com/openlayers/openlayers/pull/12324) - Bump rollup from 2.47.0 to 2.48.0 ([@openlayers](https://github.com/openlayers))
* [#12325](https://github.com/openlayers/openlayers/pull/12325) - Bump terser-webpack-plugin from 5.1.1 to 5.1.2 ([@openlayers](https://github.com/openlayers))
* [#12327](https://github.com/openlayers/openlayers/pull/12327) - Bump @babel/eslint-parser from 7.13.14 to 7.14.2 ([@openlayers](https://github.com/openlayers))
* [#12328](https://github.com/openlayers/openlayers/pull/12328) - Bump @babel/preset-env from 7.14.0 to 7.14.2 ([@openlayers](https://github.com/openlayers))
* [#12320](https://github.com/openlayers/openlayers/pull/12320) - Bump webpack-dev-middleware from 4.1.0 to 4.2.0 ([@openlayers](https://github.com/openlayers))
* [#12288](https://github.com/openlayers/openlayers/pull/12288) - Bump @rollup/plugin-node-resolve from 11.2.1 to 13.0.0 ([@openlayers](https://github.com/openlayers))
* [#12286](https://github.com/openlayers/openlayers/pull/12286) - Bump fs-extra from 9.1.0 to 10.0.0 ([@openlayers](https://github.com/openlayers))
* [#12287](https://github.com/openlayers/openlayers/pull/12287) - Bump webpack-cli from 4.6.0 to 4.7.0 ([@openlayers](https://github.com/openlayers))
* [#12293](https://github.com/openlayers/openlayers/pull/12293) - Bump yargs from 17.0.0 to 17.0.1 ([@openlayers](https://github.com/openlayers))
* [#12289](https://github.com/openlayers/openlayers/pull/12289) - Bump @rollup/plugin-commonjs from 18.0.0 to 19.0.0 ([@openlayers](https://github.com/openlayers))
* [#12290](https://github.com/openlayers/openlayers/pull/12290) - Bump rollup from 2.46.0 to 2.47.0 ([@openlayers](https://github.com/openlayers))
* [#12291](https://github.com/openlayers/openlayers/pull/12291) - Bump puppeteer from 9.0.0 to 9.1.1 ([@openlayers](https://github.com/openlayers))
* [#12292](https://github.com/openlayers/openlayers/pull/12292) - Bump eslint from 7.25.0 to 7.26.0 ([@openlayers](https://github.com/openlayers))
* [#12294](https://github.com/openlayers/openlayers/pull/12294) - Bump mocha from 8.3.2 to 8.4.0 ([@openlayers](https://github.com/openlayers))
* [#12295](https://github.com/openlayers/openlayers/pull/12295) - Bump glob from 7.1.6 to 7.1.7 ([@openlayers](https://github.com/openlayers))
* [#12269](https://github.com/openlayers/openlayers/pull/12269) - Bump webpack from 5.36.1 to 5.36.2 ([@openlayers](https://github.com/openlayers))
* [#12268](https://github.com/openlayers/openlayers/pull/12268) - Bump rollup from 2.45.2 to 2.46.0 ([@openlayers](https://github.com/openlayers))
* [#12270](https://github.com/openlayers/openlayers/pull/12270) - Bump @babel/preset-env from 7.13.15 to 7.14.0 ([@openlayers](https://github.com/openlayers))
* [#12271](https://github.com/openlayers/openlayers/pull/12271) - Bump yargs from 16.2.0 to 17.0.0 ([@openlayers](https://github.com/openlayers))
* [#12272](https://github.com/openlayers/openlayers/pull/12272) - Bump @babel/core from 7.13.16 to 7.14.0 ([@openlayers](https://github.com/openlayers))
* [#12256](https://github.com/openlayers/openlayers/pull/12256) - Bump clean-css-cli from 5.2.2 to 5.3.0 ([@openlayers](https://github.com/openlayers))
* [#12255](https://github.com/openlayers/openlayers/pull/12255) - Bump webpack from 5.35.1 to 5.36.1 ([@openlayers](https://github.com/openlayers))
* [#12254](https://github.com/openlayers/openlayers/pull/12254) - Upgrade to GitHub-native Dependabot ([@openlayers](https://github.com/openlayers))
* [#12245](https://github.com/openlayers/openlayers/pull/12245) - Bump webpack from 5.33.2 to 5.35.1 ([@openlayers](https://github.com/openlayers))
* [#12244](https://github.com/openlayers/openlayers/pull/12244) - Bump @babel/core from 7.13.15 to 7.13.16 ([@openlayers](https://github.com/openlayers))
* [#12243](https://github.com/openlayers/openlayers/pull/12243) - Bump puppeteer from 8.0.0 to 9.0.0 ([@openlayers](https://github.com/openlayers))
* [#12242](https://github.com/openlayers/openlayers/pull/12242) - Bump eslint from 7.24.0 to 7.25.0 ([@openlayers](https://github.com/openlayers))
* [#12206](https://github.com/openlayers/openlayers/pull/12206) - Bump rollup from 2.44.0 to 2.45.1 ([@openlayers](https://github.com/openlayers))
* [#12205](https://github.com/openlayers/openlayers/pull/12205) - Bump typescript from 4.2.3 to 4.2.4 ([@openlayers](https://github.com/openlayers))
* [#12204](https://github.com/openlayers/openlayers/pull/12204) - Bump @babel/preset-env from 7.13.12 to 7.13.15 ([@openlayers](https://github.com/openlayers))
* [#12203](https://github.com/openlayers/openlayers/pull/12203) - Bump marked from 2.0.1 to 2.0.3 ([@openlayers](https://github.com/openlayers))
* [#12202](https://github.com/openlayers/openlayers/pull/12202) - Bump copy-webpack-plugin from 8.1.0 to 8.1.1 ([@openlayers](https://github.com/openlayers))
* [#12201](https://github.com/openlayers/openlayers/pull/12201) - Bump @babel/core from 7.13.14 to 7.13.15 ([@openlayers](https://github.com/openlayers))
* [#12200](https://github.com/openlayers/openlayers/pull/12200) - Bump webpack from 5.30.0 to 5.31.2 ([@openlayers](https://github.com/openlayers))
* [#12199](https://github.com/openlayers/openlayers/pull/12199) - Bump eslint from 7.23.0 to 7.24.0 ([@openlayers](https://github.com/openlayers))
* [#12184](https://github.com/openlayers/openlayers/pull/12184) - Bump karma from 6.3.1 to 6.3.2 ([@openlayers](https://github.com/openlayers))
* [#12183](https://github.com/openlayers/openlayers/pull/12183) - Bump @babel/core from 7.13.13 to 7.13.14 ([@openlayers](https://github.com/openlayers))
* [#12182](https://github.com/openlayers/openlayers/pull/12182) - Bump copy-webpack-plugin from 8.0.0 to 8.1.0 ([@openlayers](https://github.com/openlayers))
* [#12155](https://github.com/openlayers/openlayers/pull/12155) - Bump eslint from 7.22.0 to 7.23.0 ([@openlayers](https://github.com/openlayers))
* [#12158](https://github.com/openlayers/openlayers/pull/12158) - Bump @babel/preset-env from 7.13.10 to 7.13.12 ([@openlayers](https://github.com/openlayers))
* [#12156](https://github.com/openlayers/openlayers/pull/12156) - Bump @rollup/plugin-node-resolve from 11.2.0 to 11.2.1 ([@openlayers](https://github.com/openlayers))
* [#12159](https://github.com/openlayers/openlayers/pull/12159) - Bump @babel/core from 7.13.10 to 7.13.13 ([@openlayers](https://github.com/openlayers))
* [#12174](https://github.com/openlayers/openlayers/pull/12174) - Bump rollup from 2.42.3 to 2.44.0 ([@openlayers](https://github.com/openlayers))
* [#12157](https://github.com/openlayers/openlayers/pull/12157) - Bump karma from 6.2.0 to 6.3.1 ([@openlayers](https://github.com/openlayers))
* [#12173](https://github.com/openlayers/openlayers/pull/12173) - Bump webpack from 5.27.2 to 5.30.0 ([@openlayers](https://github.com/openlayers))
* [#12153](https://github.com/openlayers/openlayers/pull/12153) - Bump webpack-cli from 4.5.0 to 4.6.0 ([@openlayers](https://github.com/openlayers))
* [#12151](https://github.com/openlayers/openlayers/pull/12151) - Bump @rollup/plugin-commonjs from 17.1.0 to 18.0.0 ([@openlayers](https://github.com/openlayers))
* [#12150](https://github.com/openlayers/openlayers/pull/12150) - Bump sinon from 9.2.4 to 10.0.0 ([@openlayers](https://github.com/openlayers))
* [#12130](https://github.com/openlayers/openlayers/pull/12130) - Bump clean-css-cli from 5.2.1 to 5.2.2 ([@openlayers](https://github.com/openlayers))
* [#12131](https://github.com/openlayers/openlayers/pull/12131) - Bump rollup from 2.41.2 to 2.42.2 ([@openlayers](https://github.com/openlayers))
* [#12108](https://github.com/openlayers/openlayers/pull/12108) - Bump @babel/preset-env from 7.13.9 to 7.13.10 ([@openlayers](https://github.com/openlayers))
* [#12109](https://github.com/openlayers/openlayers/pull/12109) - Bump mocha from 8.3.1 to 8.3.2 ([@openlayers](https://github.com/openlayers))
* [#12110](https://github.com/openlayers/openlayers/pull/12110) - Bump rollup from 2.40.0 to 2.41.2 ([@openlayers](https://github.com/openlayers))
* [#12111](https://github.com/openlayers/openlayers/pull/12111) - Bump @babel/core from 7.13.8 to 7.13.10 ([@openlayers](https://github.com/openlayers))
* [#12107](https://github.com/openlayers/openlayers/pull/12107) - Bump eslint from 7.21.0 to 7.22.0 ([@openlayers](https://github.com/openlayers))
* [#12112](https://github.com/openlayers/openlayers/pull/12112) - Bump karma from 6.1.1 to 6.2.0 ([@openlayers](https://github.com/openlayers))
* [#12099](https://github.com/openlayers/openlayers/pull/12099) - [Security] Bump elliptic from 6.5.3 to 6.5.4 ([@openlayers](https://github.com/openlayers))
* [#12097](https://github.com/openlayers/openlayers/pull/12097) - Bump ol-mapbox-style from 6.3.1 to 6.3.2 ([@openlayers](https://github.com/openlayers))
* [#12096](https://github.com/openlayers/openlayers/pull/12096) - Bump @babel/preset-env from 7.13.8 to 7.13.9 ([@openlayers](https://github.com/openlayers))
* [#12095](https://github.com/openlayers/openlayers/pull/12095) - Bump clean-css-cli from 5.2.0 to 5.2.1 ([@openlayers](https://github.com/openlayers))
* [#12094](https://github.com/openlayers/openlayers/pull/12094) - Bump jquery from 3.5.1 to 3.6.0 ([@openlayers](https://github.com/openlayers))
* [#12093](https://github.com/openlayers/openlayers/pull/12093) - Bump typescript from 4.2.2 to 4.2.3 ([@openlayers](https://github.com/openlayers))
* [#12092](https://github.com/openlayers/openlayers/pull/12092) - Bump proj4 from 2.7.0 to 2.7.2 ([@openlayers](https://github.com/openlayers))
* [#12091](https://github.com/openlayers/openlayers/pull/12091) - Bump mocha from 8.3.0 to 8.3.1 ([@openlayers](https://github.com/openlayers))
* [#12077](https://github.com/openlayers/openlayers/pull/12077) - Bump rollup from 2.39.0 to 2.40.0 ([@openlayers](https://github.com/openlayers))
* [#12076](https://github.com/openlayers/openlayers/pull/12076) - Bump typescript from 4.1.5 to 4.2.2 ([@openlayers](https://github.com/openlayers))
* [#12075](https://github.com/openlayers/openlayers/pull/12075) - Bump eslint from 7.20.0 to 7.21.0 ([@openlayers](https://github.com/openlayers))
* [#12074](https://github.com/openlayers/openlayers/pull/12074) - Bump marked from 2.0.0 to 2.0.1 ([@openlayers](https://github.com/openlayers))
* [#12073](https://github.com/openlayers/openlayers/pull/12073) - Bump @babel/preset-env from 7.12.17 to 7.13.8 ([@openlayers](https://github.com/openlayers))
* [#12072](https://github.com/openlayers/openlayers/pull/12072) - Bump puppeteer from 7.1.0 to 8.0.0 ([@openlayers](https://github.com/openlayers))
* [#12071](https://github.com/openlayers/openlayers/pull/12071) - Bump @babel/core from 7.12.17 to 7.13.8 ([@openlayers](https://github.com/openlayers))
* [#12056](https://github.com/openlayers/openlayers/pull/12056) - Bump @babel/preset-env from 7.12.16 to 7.12.17 ([@openlayers](https://github.com/openlayers))
* [#12055](https://github.com/openlayers/openlayers/pull/12055) - Bump handlebars from 4.7.6 to 4.7.7 ([@openlayers](https://github.com/openlayers))
* [#12054](https://github.com/openlayers/openlayers/pull/12054) - Bump @babel/core from 7.12.16 to 7.12.17 ([@openlayers](https://github.com/openlayers))
* [#12053](https://github.com/openlayers/openlayers/pull/12053) - Bump clean-css-cli from 5.1.0 to 5.2.0 ([@openlayers](https://github.com/openlayers))
* [#12036](https://github.com/openlayers/openlayers/pull/12036) - Bump clean-css-cli from 4.3.0 to 5.1.0 ([@openlayers](https://github.com/openlayers))
* [#12035](https://github.com/openlayers/openlayers/pull/12035) - Bump karma from 6.1.0 to 6.1.1 ([@openlayers](https://github.com/openlayers))
* [#12031](https://github.com/openlayers/openlayers/pull/12031) - Bump puppeteer from 7.0.1 to 7.1.0 ([@openlayers](https://github.com/openlayers))
* [#12033](https://github.com/openlayers/openlayers/pull/12033) - Bump typescript from 4.1.3 to 4.1.5 ([@openlayers](https://github.com/openlayers))
* [#12030](https://github.com/openlayers/openlayers/pull/12030) - Bump worker-loader from 3.0.7 to 3.0.8 ([@openlayers](https://github.com/openlayers))
* [#12032](https://github.com/openlayers/openlayers/pull/12032) - Bump rollup from 2.38.5 to 2.39.0 ([@openlayers](https://github.com/openlayers))
* [#12034](https://github.com/openlayers/openlayers/pull/12034) - Bump eslint from 7.19.0 to 7.20.0 ([@openlayers](https://github.com/openlayers))
* [#12037](https://github.com/openlayers/openlayers/pull/12037) - Bump mocha from 8.2.1 to 8.3.0 ([@openlayers](https://github.com/openlayers))
* [#12038](https://github.com/openlayers/openlayers/pull/12038) - Bump @babel/core from 7.12.13 to 7.12.16 ([@openlayers](https://github.com/openlayers))
* [#12039](https://github.com/openlayers/openlayers/pull/12039) - Bump @babel/preset-env from 7.12.13 to 7.12.16 ([@openlayers](https://github.com/openlayers))
* [#12004](https://github.com/openlayers/openlayers/pull/12004) - Bump rollup from 2.38.3 to 2.38.5 ([@openlayers](https://github.com/openlayers))
* [#12001](https://github.com/openlayers/openlayers/pull/12001) - Bump karma from 6.0.3 to 6.1.0 ([@openlayers](https://github.com/openlayers))
* [#11999](https://github.com/openlayers/openlayers/pull/11999) - Bump @babel/preset-env from 7.12.11 to 7.12.13 ([@openlayers](https://github.com/openlayers))
* [#12000](https://github.com/openlayers/openlayers/pull/12000) - Bump @babel/core from 7.12.10 to 7.12.13 ([@openlayers](https://github.com/openlayers))
* [#12003](https://github.com/openlayers/openlayers/pull/12003) - Bump puppeteer from 5.5.0 to 7.0.1 ([@openlayers](https://github.com/openlayers))
* [#12005](https://github.com/openlayers/openlayers/pull/12005) - Bump webpack-cli from 4.4.0 to 4.5.0 ([@openlayers](https://github.com/openlayers))
* [#12002](https://github.com/openlayers/openlayers/pull/12002) - [Security] Bump marked from 1.2.8 to 2.0.0 ([@openlayers](https://github.com/openlayers))
* [#11971](https://github.com/openlayers/openlayers/pull/11971) - Bump marked from 1.2.7 to 1.2.8 ([@openlayers](https://github.com/openlayers))
* [#11970](https://github.com/openlayers/openlayers/pull/11970) - Bump eslint from 7.18.0 to 7.19.0 ([@openlayers](https://github.com/openlayers))
* [#11969](https://github.com/openlayers/openlayers/pull/11969) - Bump rollup from 2.38.0 to 2.38.3 ([@openlayers](https://github.com/openlayers))
* [#11968](https://github.com/openlayers/openlayers/pull/11968) - Bump karma from 6.0.1 to 6.0.3 ([@openlayers](https://github.com/openlayers))
* [#11943](https://github.com/openlayers/openlayers/pull/11943) - Bump fs-extra from 9.0.1 to 9.1.0 ([@openlayers](https://github.com/openlayers))
* [#11944](https://github.com/openlayers/openlayers/pull/11944) - Bump webpack-cli from 4.3.1 to 4.4.0 ([@openlayers](https://github.com/openlayers))
* [#11945](https://github.com/openlayers/openlayers/pull/11945) - Bump sinon from 9.2.3 to 9.2.4 ([@openlayers](https://github.com/openlayers))
* [#11942](https://github.com/openlayers/openlayers/pull/11942) - Bump rollup from 2.36.2 to 2.38.0 ([@openlayers](https://github.com/openlayers))
* [#11933](https://github.com/openlayers/openlayers/pull/11933) - Bump karma from 5.2.3 to 6.0.1 ([@openlayers](https://github.com/openlayers))
* [#11930](https://github.com/openlayers/openlayers/pull/11930) - [Security] Bump socket.io from 2.3.0 to 2.4.1 ([@openlayers](https://github.com/openlayers))
* [#11919](https://github.com/openlayers/openlayers/pull/11919) - Bump webpack-dev-server from 3.11.1 to 3.11.2 ([@openlayers](https://github.com/openlayers))
* [#11922](https://github.com/openlayers/openlayers/pull/11922) - Bump eslint from 7.17.0 to 7.18.0 ([@openlayers](https://github.com/openlayers))
* [#11921](https://github.com/openlayers/openlayers/pull/11921) - Bump rollup from 2.36.1 to 2.36.2 ([@openlayers](https://github.com/openlayers))
* [#11918](https://github.com/openlayers/openlayers/pull/11918) - Bump webpack from 4.45.0 to 4.46.0 ([@openlayers](https://github.com/openlayers))
* [#11915](https://github.com/openlayers/openlayers/pull/11915) - Bump webpack-dev-middleware from 4.0.2 to 4.1.0 ([@openlayers](https://github.com/openlayers))
* [#11920](https://github.com/openlayers/openlayers/pull/11920) - Bump proj4 from 2.6.3 to 2.7.0 ([@openlayers](https://github.com/openlayers))
* [#11916](https://github.com/openlayers/openlayers/pull/11916) - Bump ol-mapbox-style from 6.3.0 to 6.3.1 ([@openlayers](https://github.com/openlayers))
* [#11905](https://github.com/openlayers/openlayers/pull/11905) - Bump globby from 11.0.1 to 11.0.2 ([@openlayers](https://github.com/openlayers))
* [#11904](https://github.com/openlayers/openlayers/pull/11904) - Bump webpack from 4.44.2 to 4.45.0 ([@openlayers](https://github.com/openlayers))
* [#11903](https://github.com/openlayers/openlayers/pull/11903) - Bump rollup from 2.35.1 to 2.36.1 ([@openlayers](https://github.com/openlayers))
* [#11902](https://github.com/openlayers/openlayers/pull/11902) - Bump sinon from 9.2.2 to 9.2.3 ([@openlayers](https://github.com/openlayers))
* [#11877](https://github.com/openlayers/openlayers/pull/11877) - Bump webpack-cli from 4.3.0 to 4.3.1 ([@openlayers](https://github.com/openlayers))
* [#11878](https://github.com/openlayers/openlayers/pull/11878) - Bump webpack-dev-server from 3.11.0 to 3.11.1 ([@openlayers](https://github.com/openlayers))
* [#11879](https://github.com/openlayers/openlayers/pull/11879) - Bump eslint from 7.16.0 to 7.17.0 ([@openlayers](https://github.com/openlayers))
* [#11868](https://github.com/openlayers/openlayers/pull/11868) - Bump worker-loader from 3.0.6 to 3.0.7 ([@openlayers](https://github.com/openlayers))
* [#11867](https://github.com/openlayers/openlayers/pull/11867) - Bump webpack-cli from 4.2.0 to 4.3.0 ([@openlayers](https://github.com/openlayers))
<td><p>A <a href="module-ol_Map-Map.html">map</a> is made of <a href="module-ol_layer_Base-BaseLayer.html">layers</a>, a <a href="module-ol_View-View.html">view</a> to visualize them, <a href="module-ol_interaction_Interaction-Interaction.html">interactions</a> to modify map content and <a href="module-ol_control_Control-Control.html">controls</a> with UI components.</p>
<tr><td><p>All coordinates and extents need to be provided in view projection (default: EPSG:3857). To transform, use <a href="module-ol_proj.html#.transform">ol/proj#transform()</a> and <a href="module-ol_proj.html#.transformExtent">ol/proj#transformExtent()</a>.</p>
<a href="module-ol_proj.html">ol/proj</a></td>
<td><p>Changes to all <a href="module-ol_Object-BaseObject.html">ol/Object</a>s can be observed by calling the <a href="module-ol_Object-BaseObject.html#on">object.on('propertychange')</a> method. Listeners receive an <a href="module-ol_Object-ObjectEvent.html">ol/Object.ObjectEvent</a> with information on the changed property and old value.</p>
<p>A <a href="module-ol_Map-Map.html">map</a> is made of <a href="module-ol_layer_Base-BaseLayer.html">layers</a>, a <a href="module-ol_View-View.html">view</a> to visualize them, <a href="module-ol_interaction_Interaction-Interaction.html">interactions</a> to modify map content and <a href="module-ol_control_Control-Control.html">controls</a> with UI components.</p>
<p>All coordinates and extents need to be provided in view projection (default: EPSG:3857). To transform, use <a href="module-ol_proj.html#.transform">ol/proj#transform()</a> and <a href="module-ol_proj.html#.transformExtent">ol/proj#transformExtent()</a>.</p>
<a href="module-ol_proj.html">ol/proj</a>
</div>
</div>
</div>
<div class="col-xl-4 col-lg-6 py-3">
<div class="card h-100 bg-light">
<div class="card-body">
<h4 class="card-title">Observable objects</h4>
<p>Changes to all <a href="module-ol_Object-BaseObject.html">ol/Object</a>s can be observed by calling the <a href="module-ol_Object-BaseObject.html#on">object.on('propertychange')</a> method. Listeners receive an <a href="module-ol_Object.ObjectEvent.html">ol/Object.ObjectEvent</a> with information on the changed property and old value.</p>
*names and signatures of instance methods and properties
*names and signatures of functions
* names of constants
Within a major release series, the API will not be changed. Any changes to the API will be accompanied by a new major release.
*Note*: The API change policy does not cover CSS class names that are used to style the OpenLayers UI. It also does not cover any typedefs and enums.
<ul>
<li>names and signatures of constructors</li>
<li>names and signatures of instance methods and properties</li>
<li>names and signatures of functions</li>
<li>names of constants</li>
</ul>
<p>Within a major release series, the API will not be changed. Any changes to the API will be accompanied by a new major release.</p>
<p class="text-danger">Note: The API change policy does not cover CSS class names that are used to style the OpenLayers UI. It also does not cover any typedefs and enums.</p>
This directory contains configuration (`conf.json`), static content (`index.md`), template (`template/`) and plugins (`plugins/`) for the [JSDoc3](http://usejsdoc.org/) API generator.
This directory contains configuration (`conf.json`), static content (`index.md`), template (`template/`) and plugins (`plugins/`) for the [JSDoc3](https://jsdoc.app/) API generator.
## Documenting the source code
@@ -24,7 +24,7 @@ The second line tells the Closure compiler the type of the argument.
The third line (`@api`) marks the method as part of the api and thus exportable. Without such an api annotation, the method will not be documented in the generated API documentation. Symbols without an api annotation will also not be exportable.
The `@api` annotation can be used in conjunction with the `@inheritDoc` annotation to export a symbol that is documented on a parent class (where the method may be abstract). In general, `@api` annotations should never be used on abstract methods (only on their implementations).
In general, `@api` annotations should never be used on abstract methods (only on their implementations).
This template is based on the [Jaguar](https://github.com/davidshimjs/jaguarjs/tree/master/docs/templates/jaguar) template. [JaguarJS](https://github.com/davidshimjs/jaguarjs) is licensed under the [LGPL license](https://github.com/davidshimjs/jaguarjs/tree/master/LICENSE).
The default template for JSDoc 3 uses: [the Taffy Database library](http://taffydb.com/) and the [Underscore Template library](http://documentcloud.github.com/underscore/#template).
The default template for JSDoc 3 uses: [the Taffy Database library](https://taffydb.com/) and the [Underscore Template library](https://underscorejs.org/#template).
Certain questions arise more often than others when users ask for help. This
document tries to list some of the common questions that frequently get asked,
e.g. on [Stack Overflow](http://stackoverflow.com/questions/tagged/openlayers).
e.g. on [Stack Overflow](https://stackoverflow.com/questions/tagged/openlayers).
If you think a question (and naturally its answer) should be added here, feel
free to ping us or to send a pull request enhancing this document.
@@ -75,7 +75,7 @@ import {register} from 'ol/proj/proj4';
import{getasgetProjection}from'ol/proj';
// To use other projections, you have to register the projection in OpenLayers.
// This can easily be done with [https://proj4js.org](proj4)
// This can easily be done with [http://proj4js.org/](proj4)
//
// By default OpenLayers does not know about the EPSG:21781 (Swiss) projection.
// So we create a projection instance for EPSG:21781 and pass it to
@@ -198,8 +198,8 @@ for English, `en`, as a mnemonic: East before North.
So you want to center your map on a certain place on the earth and obviously you
need to have its coordinates for this. Let's assume you want your map centered
on Schladming, a beautiful place in Austria. Head over to the wikipedia
page for [Schladming](http://en.wikipedia.org/wiki/Schladming). In the top-right
corner there is a link to [GeoHack](http://tools.wmflabs.org/geohack/geohack.php?pagename=Schladming¶ms=47_23_39_N_13_41_21_E_type:city(4565)_region:AT-6),
page for [Schladming](https://en.wikipedia.org/wiki/Schladming). In the top-right
corner there is a link to [GeoHack](https://geohack.toolforge.org/geohack.php?pagename=Schladming¶ms=47_23_39_N_13_41_21_E_type:city(4565)_region:AT-6),
@@ -19,4 +19,4 @@ We have put together a document that lists [Frequently Asked Questions (FAQ)](fa
# More questions?
If you cannot find an answer in the documentation or the FAQ, you can search [Stack Overflow](http://stackoverflow.com/questions/tagged/openlayers). If you cannot find an answer there, ask a new question there, using the tag 'openlayers'.
If you cannot find an answer in the documentation or the FAQ, you can search [Stack Overflow](https://stackoverflow.com/questions/tagged/openlayers). If you cannot find an answer there, ask a new question there, using the tag 'openlayers'.
@@ -78,7 +78,7 @@ The first part is to include the JavaScript library. For the purpose of this tut
<div id="map" class="map"></div>
```
The map in the application is contained in a [`<div>` HTML element](http://en.wikipedia.org/wiki/Span_and_div). Through this `<div>` the map properties like width, height and border can be controlled through CSS. Here's the CSS element used to make the map 400 pixels high and as wide as the browser window.
The map in the application is contained in a [`<div>` HTML element](https://en.wikipedia.org/wiki/Span_and_div). Through this `<div>` the map properties like width, height and border can be controlled through CSS. Here's the CSS element used to make the map 400 pixels high and as wide as the browser window.
@@ -19,7 +19,7 @@ OpenLayers is available as [`ol` npm package](https://npmjs.com/package/ol), whi
By default, OpenLayers uses a performance optimized Canvas renderer.
OpenLayers runs on all modern browsers that support [HTML5](https://html.spec.whatwg.org/multipage/) and [ECMAScript 5](http://www.ecma-international.org/ecma-262/5.1/). This includes Chrome, Firefox, Safari and Edge. For older browsers and platforms like Internet Explorer (down to version 9) and Android 4.x, [polyfills](http://polyfill.io), the application bundle needs to be transpiled (e.g. using [Babel](https://babeljs.io)) and bundled with polyfills for `requestAnimationFrame`, `Element.prototype.classList` and `URL`.
OpenLayers runs on all modern browsers that support [HTML5](https://html.spec.whatwg.org/multipage/) and [ECMAScript 5](https://262.ecma-international.org/5.1/). This includes Chrome, Firefox, Safari and Edge. For older browsers and platforms like Internet Explorer (down to version 9) and Android 4.x, [polyfills](https://polyfill.io/), the application bundle needs to be transpiled (e.g. using [Babel](https://babeljs.io/)) and bundled with polyfills for `fetch`, `requestAnimationFrame`, `Element.prototype.classList`, `URL`, `TextDecoder` and `Number.isInteger`.
The library is intended for use on both desktop/laptop and mobile devices, and supports pointer and touch interactions.
@@ -9,92 +9,19 @@ Modern JavaScript works best when using and authoring modules. The recommended w
In this tutorial, we will be using [Parcel](https://parceljs.org) to bundle our application. There are several other options, some of which are linked from the [README](https://npmjs.com/package/ol).
## Initial steps
## Application setup
Create a new empty directory for your project and navigate to it by running `mkdir new-project && cd new-project`. Initialize your project with
npm init
npx create-ol-app
This will create a `package.json` file in your working directory. Add OpenLayers as dependency to your application with
This will install the `ol` package, set up a development environment with additional dependencies, and give you an `index.html` and `main.js` starting point for your application. By default, [Parcel](https://parceljs.org) will be used as a module loader and bundler. See the [`create-ol-app`](https://github.com/openlayers/create-ol-app) documentation for details on using another bundler.
npm install ol
At this point you can ask NPM to add required development dependencies by running
npm install --save-dev parcel-bundler
## Application code and index.html
Place your application code in `index.js`. Here is a simple starting point:
```js
import'ol/ol.css';
import{Map,View}from'ol';
importTileLayerfrom'ol/layer/Tile';
importOSMfrom'ol/source/OSM';
constmap=newMap({
target:'map',
layers:[
newTileLayer({
source:newOSM()
})
],
view:newView({
center:[0,0],
zoom:0
})
});
```
You will also need an `index.html` file that will use your bundle. Here is a simple example:
```html
<!DOCTYPE html>
<html>
<head>
<metacharset="utf-8">
<title>Using Parcel with OpenLayers</title>
<style>
#map{
width:400px;
height:250px;
}
</style>
</head>
<body>
<divid="map"></div>
<scriptsrc="./index.js"></script>
</body>
</html>
```
## Creating a bundle
With two additional lines in `package.json` you can introduce the commands `npm run build` and `npm start` to manually build your bundle and watch for changes, respectively. The final `package.json` with the two additional commands `"start"` and `"build"` should look like this:
```json
{
"name":"test",
"version":"1.0.0",
"description":"",
"main":"index.js",
"scripts":{
"test":"echo \"Error: no test specified\" && exit 1",
"start":"parcel index.html",
"build":"parcel build --public-url . index.html"
},
"author":"",
"license":"ISC"
}
```
That's it. Now to run your application, enter
To start the development server
npm start
in your console. To test your application, open http://localhost:1234/ in your browser. Whenever you change something, the page will reload automatically to show the result of your changes.
Note that a single JavaScript file with all your application code and all dependencies used in your application has been created. From the OpenLayers package, it only contains the required components.
You can now visit http://localhost:1234/ to view your application. Begin making changes to the `index.html` and `main.js` files to add additional functionality.
To create a production bundle of your application, simply type
projection:'EPSG:4326',//HERE IS THE DATA SOURCE PROJECTION
url:'http://demo.boundlessgeo.com/geoserver/wms',
url:'https://ahocevar.com/geoserver/wms',
params:{
'LAYERS':'ne:NE1_HR_LC_SR_W_DR'
}
@@ -39,10 +39,10 @@ var map = new Map({
If a source (based on `ol/source/TileImage` or `ol/source/Image`) has a projection different from the current `ol/View`’s projection then the reprojection happens automatically under the hood.
The easiest way to use a custom projection is to add the [Proj4js](http://proj4js.org/) library to your project and then define the projection using a proj4 definition string. It can be installed with
@@ -125,7 +125,7 @@ Although this is mathematically correct behavior of the inverse transformation,
A possible general solution would be to calculate the forward transformation for every vertex as well - but this would significantly decrease performance (especially for computationally expensive transformations).
Therefore a recommended workaround is to define a proper visibility extent on the `ol.layer.Tile` in the view projection.
Setting such a limit is demonstrated in the [reprojection demo example](https://openlayers.org/en/master/examples/reprojection.html).
Setting such a limit is demonstrated in the [reprojection demo example](https://openlayers.org/en/latest/examples/reprojection.html).
### Resolution calculation
When determining source tiles to load, the ideal source resolution needs to be calculated.
<p>When the Bing Maps tile service doesn't have tiles for a given resolution and region it returns "placeholder" tiles indicating that. Zoom the map beyond level 19 to see the "placeholder" tiles. If you want OpenLayers to display stretched tiles in place of "placeholder" tiles beyond zoom level 19 then set <code>maxZoom</code> to <code>19</code> in the options passed to <code>ol/source/BingMaps</code>.</p>
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.