| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| v10.10.0-package.zip | 2026-07-27 | 3.2 MB | |
| v10.10.0-site.zip | 2026-07-27 | 20.9 MB | |
| README.md | 2026-07-27 | 15.2 kB | |
| v10.10.0 source code.tar.gz | 2026-07-27 | 28.3 MB | |
| v10.10.0 source code.zip | 2026-07-27 | 29.3 MB | |
| Totals: 5 Items | 81.7 MB | 5 | |
10.10.0
The 10.10 release brings improvements throughout the library — from tile and vector rendering to sources, formats and interactions. The highlights are
- Text support in the WebGL vector renderers, plus stale tile handling for WebGL tile layers
- Smoother tile rendering: instead of clipping and redrawing full tiles, only the remainders of lower zoom levels are drawn
- WMTS and OGC tile grids now honor the advertised tile matrix set limits, so no tiles are requested outside a layer's data extent
- GeoZarr gains selection of non-spatial dimensions, e.g. for time series
- Text along lines honors
offsetXand is split into graphemes, so ligatures are no longer cut apart - Fixes for the Modify interaction's tracing, vector tile resolutions, decluttering z-index order, and text rendering of long lines
Upgrade notes
Usage of Intl.Segmenter
TextPath now relies on Intl.Segmenter (developer.mozilla.org). For support of very old browsers (e.g. Firefox before version 125), a polyfill is available: https://formatjs.github.io/docs/polyfills/intl-segmenter/.
Deprecation of ol/source/BingMaps
Bing Maps for Enterprise is being retired on June 30th, 2028. The BingMaps source
has been deprecated. Use ol/source/ImageTile with the Azure Maps tile API instead.
See the azure-maps example for guidance.
:::js
// Before
new BingMaps({
key: 'YOUR_BING_MAPS_KEY',
imagerySet: 'RoadOnDemand',
})
// After
new ImageTile({
url: `https://atlas.microsoft.com/map/tile?subscription-key=YOUR_AZURE_MAPS_KEY&api-version=2.0&tilesetId=microsoft.base.road&zoom={z}&x={x}&y={y}&tileSize=256`,
attributions: `© ${new Date().getFullYear()} TomTom, Microsoft`,
})
createFromCapabilitiesMatrixSet now respects TileMatrixSetLimits
When a matrixLimits array is passed to createFromCapabilitiesMatrixSet, the returned
tile grid will now restrict tile requests to the MinTileRow/MaxTileRow/MinTileCol/MaxTileCol
bounds advertised for each zoom level. Previously those bounds were ignored and the full
matrix extent was used, causing tile requests outside the layer's data extent.
If you were passing matrixLimits only to filter zoom levels and relied on the full matrix
range being loaded at each level, you can omit the matrixLimits argument or pass an empty
array to restore the previous behavior.
List of all changes
See below for a complete list of features and fixes.
- Reset loader in setParams for image sources (by @hyeonjun-L in https://github.com/openlayers/openlayers/pull/17572)
- Relative css and vite base path for examples (by @ahocevar in https://github.com/openlayers/openlayers/pull/17579)
- Get rid of mocha, use vitest for node tests too (by @ahocevar in https://github.com/openlayers/openlayers/pull/17577)
- Support offsetX for text placed along a line (by @sobol-sudo in https://github.com/openlayers/openlayers/pull/17576)
- Line labels: properly split text by graphemes (by @yohanboniface in https://github.com/openlayers/openlayers/pull/17575)
- Draw lower z remainders only instead of clipping and drawing full tiles (by @ahocevar in https://github.com/openlayers/openlayers/pull/17543)
- Replace webpack with vite (by @tschaub in https://github.com/openlayers/openlayers/pull/17568)
- Add non-spatial dimension selection to the GeoZarr source (by @lhoupert in https://github.com/openlayers/openlayers/pull/17542)
- Fix modify tracing (by @ahocevar in https://github.com/openlayers/openlayers/pull/17544)
- Add support for text in WebGL renderers (by @jahow in https://github.com/openlayers/openlayers/pull/16693)
- Add stale tile handling to the WebGL tile renderer (by @ahocevar in https://github.com/openlayers/openlayers/pull/17559)
- Do not skip transform on rotated maps (by @ahocevar in https://github.com/openlayers/openlayers/pull/17553)
- Add a Vitest browser-mode test setup (by @hyeonjun-L in https://github.com/openlayers/openlayers/pull/17515)
- fix typedef for FilterFunction in Select (by @sguimmara in https://github.com/openlayers/openlayers/pull/17550)
- Fix ZIndexContext instructions desynchronization (by @M393 in https://github.com/openlayers/openlayers/pull/17540)
- Use assert from chai.js (by @tschaub in https://github.com/openlayers/openlayers/pull/17539)
- GeoZarr: add support for proj:projjson and proj:wkt2 (by @ahocevar in https://github.com/openlayers/openlayers/pull/17482)
- Fix incorrect VectorTile source resolution calculation (by @ahocevar in https://github.com/openlayers/openlayers/pull/17490)
- Transparency outside source coverage on reprojected WebGLTile layers (by @ahocevar in https://github.com/openlayers/openlayers/pull/17525)
- WebGL / Use style variables values to determine the type of an expression (by @jahow in https://github.com/openlayers/openlayers/pull/17538)
- Guard WebGL vector layer buffer disposal against a removed helper (by @fredj in https://github.com/openlayers/openlayers/pull/17536)
- Use already calculated canvas size to avoid pixel differences (by @ahocevar in https://github.com/openlayers/openlayers/pull/17535)
- Clip long lines at render extent boundary for text rendering (by @ahocevar in https://github.com/openlayers/openlayers/pull/17527)
- Fix LinearRing extent intersections (by @cyphercodes in https://github.com/openlayers/openlayers/pull/17524)
- Make resize observer cross-realm safe for maps in a separate window (by @ahocevar in https://github.com/openlayers/openlayers/pull/17520)
- Use the correct GeoTIFF alpha band in WebGLTile layer (by @m-mohr in https://github.com/openlayers/openlayers/pull/17516)
- fix(webgl): renderer return null value if buffers not exist (by @n-elhk in https://github.com/openlayers/openlayers/pull/17503)
- Document the background option for canvas-based layers (by @fredj in https://github.com/openlayers/openlayers/pull/17513)
- Deprecate BingMaps source and migrate mobile-full-screen example to OSM (by @fredj in https://github.com/openlayers/openlayers/pull/17512)
- Fix VectorSource#hasFeature to use identity check when feature has an id (by @fredj in https://github.com/openlayers/openlayers/pull/17511)
- Update puppeteer and fix font loading (by @ahocevar in https://github.com/openlayers/openlayers/pull/17506)
- Respect TileMatrixSetLimits when creating WMTS tile grids (by @fredj in https://github.com/openlayers/openlayers/pull/17505)
- Automatically sort images in multi-page geotiffs (by @isti115 in https://github.com/openlayers/openlayers/pull/17488)
- Improve type determination when parsing style expressions (by @jahow in https://github.com/openlayers/openlayers/pull/17498)
- Use configured featureClass in GeoJSON reader to instanciate a new Feature (by @HenFo in https://github.com/openlayers/openlayers/pull/17486)
- docs: add workletjs library to 3rd party resources (by @Jonnytoshen in https://github.com/openlayers/openlayers/pull/17473)
- Add support for setting response format in Sentinelhub (by @zcernigoj in https://github.com/openlayers/openlayers/pull/17418)
- Handle OGC tileMatrixSetLimits with minzoom (by @ahocevar in https://github.com/openlayers/openlayers/pull/17469)
- fix ImageArcGISRest and TileArcGISRest to support ArcREST case sensitivity (by @Ecotrust in https://github.com/openlayers/openlayers/pull/17468)
- VectorSource now removes loaded extents by overlap rather than exact match (by @viktorijasolovjova in https://github.com/openlayers/openlayers/pull/17464)
- Generate API docs for symbols with @override (by @ahocevar in https://github.com/openlayers/openlayers/pull/17462)
- Raster source improvements (by @ahocevar in https://github.com/openlayers/openlayers/pull/17451)
- No offset loop detection for first and last segment of closed ring lines (by @ahocevar in https://github.com/openlayers/openlayers/pull/17459)
- Render dirctly to target canvas, if possible (by @ahocevar in https://github.com/openlayers/openlayers/pull/17455)
- Add sponsor logo and link for Chunk Base (by @ahocevar in https://github.com/openlayers/openlayers/pull/17454)
- Clear target canvas at the beginning of renderFrame() (by @ahocevar in https://github.com/openlayers/openlayers/pull/17453)
- Remove "crs" property from GeoJSON examples (by @pavankguduru in https://github.com/openlayers/openlayers/pull/17452)
- docs: added collapsible functionality to the different sections in the example pages (by @KWangechi in https://github.com/openlayers/openlayers/pull/17446)
- Updates for the 10.9.0 release (by @openlayers in https://github.com/openlayers/openlayers/pull/17440)
Dependency Updates
* chore(deps): bump pbf from 5.1.0 to 5.1.2 in the production-minor-patch group across 1 directory (by @openlayers in https://github.com/openlayers/openlayers/pull/17566) * chore(deps): bump websocket-driver from 0.7.4 to 0.7.5 (by @openlayers in https://github.com/openlayers/openlayers/pull/17563) * chore(deps): bump the actions group with 2 updates (by @openlayers in https://github.com/openlayers/openlayers/pull/17567) * chore(deps): bump github/codeql-action from 4.36.2 to 4.36.3 in the actions group (by @openlayers in https://github.com/openlayers/openlayers/pull/17555) * chore(deps-dev): bump the development-minor-patch group with 3 updates (by @openlayers in https://github.com/openlayers/openlayers/pull/17557) * chore(deps): bump earcut from 3.1.0 to 3.2.3 in the production-minor-patch group (by @openlayers in https://github.com/openlayers/openlayers/pull/17558) * chore(deps-dev): bump the development-minor-patch group across 1 directory with 8 updates (by @openlayers in https://github.com/openlayers/openlayers/pull/17554) * chore(deps): bump earcut from 3.0.2 to 3.1.0 in the production-minor-patch group (by @openlayers in https://github.com/openlayers/openlayers/pull/17549) * chore(deps-dev): bump the development-major group with 2 updates (by @openlayers in https://github.com/openlayers/openlayers/pull/17547) * chore(deps): bump actions/checkout from 6.0.3 to 7.0.0 in the actions group (by @openlayers in https://github.com/openlayers/openlayers/pull/17541) * chore(deps-dev): bump the development-security group across 1 directory with 2 updates (by @openlayers in https://github.com/openlayers/openlayers/pull/17534) * chore(deps-dev): bump sinon from 21.1.2 to 22.0.0 in the development-major group across 1 directory (by @openlayers in https://github.com/openlayers/openlayers/pull/17510) * chore(deps-dev): bump tmp from 0.2.4 to 0.2.7 in the development-security group across 1 directory (by @openlayers in https://github.com/openlayers/openlayers/pull/17496) * chore(deps-dev): bump the development-minor-patch group across 1 directory with 15 updates (by @openlayers in https://github.com/openlayers/openlayers/pull/17533) * chore(deps): bump the actions group across 1 directory with 2 updates (by @openlayers in https://github.com/openlayers/openlayers/pull/17532) * chore(deps): bump pbf from 4.0.1 to 5.1.0 in the production-major group across 1 directory (by @openlayers in https://github.com/openlayers/openlayers/pull/17521) * chore(deps-dev): bump webpack-dev-server from 5.2.3 to 5.2.4 in the development-security group across 1 directory (by @openlayers in https://github.com/openlayers/openlayers/pull/17485) * chore(deps-dev): bump fast-uri from 3.0.2 to 3.1.2 in the development-security group across 1 directory (by @openlayers in https://github.com/openlayers/openlayers/pull/17484) * chore(deps-dev): bump the development-minor-patch group across 1 directory with 11 updates (by @openlayers in https://github.com/openlayers/openlayers/pull/17481) * chore(deps): bump zarrita from 0.7.2 to 0.7.3 in the production-minor-patch group (by @openlayers in https://github.com/openlayers/openlayers/pull/17480) * chore(deps): bump the actions group with 2 updates (by @openlayers in https://github.com/openlayers/openlayers/pull/17477) * chore(deps-dev): bump ip-address from 10.1.0 to 10.2.0 in the development-security group across 1 directory (by @openlayers in https://github.com/openlayers/openlayers/pull/17475) * chore(deps-dev): bump the development-minor-patch group with 2 updates (by @openlayers in https://github.com/openlayers/openlayers/pull/17470) * chore(deps): bump zarrita from 0.7.1 to 0.7.2 in the production-minor-patch group (by @openlayers in https://github.com/openlayers/openlayers/pull/17471) * chore(deps): bump github/codeql-action from 4.35.1 to 4.35.2 in the actions group (by @openlayers in https://github.com/openlayers/openlayers/pull/17460) * chore(deps-dev): bump the development-minor-patch group with 6 updates (by @openlayers in https://github.com/openlayers/openlayers/pull/17461) * chore(deps-dev): bump the development-minor-patch group across 1 directory with 10 updates (by @openlayers in https://github.com/openlayers/openlayers/pull/17458) * chore(deps): bump geotiff from 3.0.5 to 3.1.0-beta.0 in the production-minor-patch group (by @openlayers in https://github.com/openlayers/openlayers/pull/17450) * chore(deps-dev): bump marked from 17.0.6 to 18.0.0 in the development-major group (by @openlayers in https://github.com/openlayers/openlayers/pull/17448) * chore(deps): bump the actions group with 2 updates (by @openlayers in https://github.com/openlayers/openlayers/pull/17447) * chore(deps): bump protocol-buffers-schema from 3.6.0 to 3.6.1 in the production-security group across 1 directory (by @openlayers in https://github.com/openlayers/openlayers/pull/17443) * chore(deps-dev): bump dompurify from 3.3.3 to 3.4.0 in the development-security group across 1 directory (by @openlayers in https://github.com/openlayers/openlayers/pull/17441)New Contributors
- @KWangechi made their first contribution in https://github.com/openlayers/openlayers/pull/17446
- @pavankguduru made their first contribution in https://github.com/openlayers/openlayers/pull/17452
- @rhodges made their first contribution in https://github.com/openlayers/openlayers/pull/17468
- @zcernigoj made their first contribution in https://github.com/openlayers/openlayers/pull/17418
- @HenFo made their first contribution in https://github.com/openlayers/openlayers/pull/17486
- @n-elhk made their first contribution in https://github.com/openlayers/openlayers/pull/17503
- @cyphercodes made their first contribution in https://github.com/openlayers/openlayers/pull/17524
- @sguimmara made their first contribution in https://github.com/openlayers/openlayers/pull/17550
- @lhoupert made their first contribution in https://github.com/openlayers/openlayers/pull/17542
- @yohanboniface made their first contribution in https://github.com/openlayers/openlayers/pull/17575
- @sobol-sudo made their first contribution in https://github.com/openlayers/openlayers/pull/17576
Full Changelog: https://github.com/openlayers/openlayers/compare/v10.9.0...v10.10.0