Compare commits

..

436 Commits

Author SHA1 Message Date
Andreas Hocevar
edec77dafc Update package version to 6.2.0 2020-02-11 15:43:03 +01:00
Andreas Hocevar
ff6eb89b06 Changelog for v6.2.0 2020-02-11 15:43:03 +01:00
Andreas Hocevar
bb68da2a0a Merge pull request #10613 from mike-000/patch-1
Show KML name labels for Points in MultiGeometry
2020-02-11 15:08:51 +01:00
Olivier Guyot
d5c72f62d5 Merge pull request #10632 from jahow/draw-interaction-append-coords
Draw interaction: Append coordinates to polygons and lines (reworked)
2020-02-11 13:46:01 +01:00
Olivier Guyot
8d4c3b2887 Draw / clearer variable names 2020-02-11 11:19:55 +01:00
Olivier Guyot
6641832621 Improvements to the tracing example
* no embedded geojson
* better behaviour on draw end (no lingering preview line)
* clearer comments
* support for multi polygons to snap to
2020-02-11 11:03:38 +01:00
Andreas Hocevar
fe8f7c04ad Merge pull request #10629 from openlayers/dependabot/npm_and_yarn/ol-mapbox-style-6.0.1
Bump ol-mapbox-style from 6.0.0 to 6.0.1
2020-02-10 22:41:55 +01:00
Andreas Hocevar
07c2b360ce Merge pull request #10628 from openlayers/dependabot/npm_and_yarn/puppeteer-2.1.1
Bump puppeteer from 2.1.0 to 2.1.1
2020-02-10 22:40:23 +01:00
Andreas Hocevar
2ccd9bf6b9 Merge pull request #10627 from openlayers/dependabot/npm_and_yarn/handlebars-4.7.3
Bump handlebars from 4.7.2 to 4.7.3
2020-02-10 22:39:22 +01:00
Andreas Hocevar
0b70a7e165 Merge pull request #10626 from openlayers/dependabot/npm_and_yarn/webpack-dev-server-3.10.3
Bump webpack-dev-server from 3.10.2 to 3.10.3
2020-02-10 22:38:33 +01:00
Olivier Guyot
3c5d0f223e Draw / fix map object in addToDrawing method 2020-02-10 16:55:35 +01:00
Olivier Guyot
8722d16158 Rewrite the example showcasing DrawInteraction#appendCoordinates
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.
2020-02-10 16:48:12 +01:00
Otto Pellinen
02597229e3 Cleanup comments 2020-02-10 16:48:12 +01:00
Otto Pellinen
5ff681563f Update examples to demonstrate typical use case 2020-02-10 16:48:12 +01:00
Otto Pellinen
0b3bd0721e Add dedicated tests for appendCoordinates 2020-02-10 16:48:12 +01:00
Otto Pellinen
bc79d59811 Use private function addToDrawing_ in appendCoordinates 2020-02-10 16:48:12 +01:00
Otto Pellinen
f43bc8d122 Fix comment for appendCoordinates 2020-02-10 16:48:12 +01:00
Otto Pellinen
175695f877 Update function descriptions for clarity 2020-02-10 16:48:12 +01:00
Otto Pellinen
934ad5b882 Rename example files 2020-02-10 16:48:12 +01:00
Otto Pellinen
83c0a258e6 Separate appendCoordinates function from extend 2020-02-10 16:48:12 +01:00
Otto Pellinen
25a5e83910 Fix eslint errors 2020-02-10 16:48:12 +01:00
Otto Pellinen
00261dff54 Add example for using the Draw extend function 2020-02-10 16:48:12 +01:00
Otto Pellinen
12ce4cc82a Add support for extending linear coordinates when drawing Polygons 2020-02-10 16:48:12 +01:00
dependabot-preview[bot]
15800da498 Bump ol-mapbox-style from 6.0.0 to 6.0.1
Bumps [ol-mapbox-style](https://github.com/openlayers/ol-mapbox-style) from 6.0.0 to 6.0.1.
- [Release notes](https://github.com/openlayers/ol-mapbox-style/releases)
- [Changelog](https://github.com/openlayers/ol-mapbox-style/blob/master/CHANGELOG.md)
- [Commits](https://github.com/openlayers/ol-mapbox-style/compare/v6.0.0...v6.0.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-10 08:03:25 +00:00
dependabot-preview[bot]
acb8008644 Bump puppeteer from 2.1.0 to 2.1.1
Bumps [puppeteer](https://github.com/puppeteer/puppeteer) from 2.1.0 to 2.1.1.
- [Release notes](https://github.com/puppeteer/puppeteer/releases)
- [Commits](https://github.com/puppeteer/puppeteer/compare/v2.1.0...v2.1.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-10 08:02:33 +00:00
dependabot-preview[bot]
34fe288c6b Bump handlebars from 4.7.2 to 4.7.3
Bumps [handlebars](https://github.com/wycats/handlebars.js) from 4.7.2 to 4.7.3.
- [Release notes](https://github.com/wycats/handlebars.js/releases)
- [Changelog](https://github.com/wycats/handlebars.js/blob/master/release-notes.md)
- [Commits](https://github.com/wycats/handlebars.js/compare/v4.7.2...v4.7.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-10 08:02:01 +00:00
dependabot-preview[bot]
b90ca8b521 Bump webpack-dev-server from 3.10.2 to 3.10.3
Bumps [webpack-dev-server](https://github.com/webpack/webpack-dev-server) from 3.10.2 to 3.10.3.
- [Release notes](https://github.com/webpack/webpack-dev-server/releases)
- [Changelog](https://github.com/webpack/webpack-dev-server/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack/webpack-dev-server/compare/v3.10.2...v3.10.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-10 08:01:14 +00:00
Andreas Hocevar
35569a8427 Merge pull request #9565 from dbrnz/v6.0.0-beta.7-branch
Make mousewheel zoom behave like trackpad zoom.
2020-02-06 15:54:34 +01:00
mike-000
47a4a63e3e Test name labels for points in MultiGeometry 2020-02-05 23:51:48 +00:00
mike-000
0fb4b62b9b Test name labels for points in MultiGeometry 2020-02-05 23:26:11 +00:00
mike-000
4ce3b3fed1 Show name labels for points in MultiGeometry 2020-02-05 23:18:54 +00:00
Andreas Hocevar
29a434314b Merge pull request #10580 from mike-000/patch-7
Fix KML Polystyle outline 0 conflict with Linestyle for linestrings
2020-02-05 23:22:52 +01:00
Andreas Hocevar
c320b15177 Merge pull request #10612 from ahocevar/ie11
Make examples work in Internet Explorer
2020-02-05 22:35:30 +01:00
mike-000
319b64ed65 Fix for #10611 2020-02-05 20:17:18 +00:00
Andreas Hocevar
65c1575dc9 Make examples work in Internet Explorer 2020-02-05 20:16:14 +01:00
Andreas Hocevar
cc21f92bdb Restore test coverage, fix tests 2020-02-05 13:03:21 +01:00
Andreas Hocevar
c8e340a623 Rename variables now that trackpads are not special any more 2020-02-05 12:58:21 +01:00
David Brooks
03fcf1ca70 Get all mouse wheel tests passing (#9564). 2020-02-05 11:27:10 +01:00
David Brooks
77658e5750 Ensure changes to zoom wheel handling pass tests. 2020-02-05 11:24:48 +01:00
David Brooks
54bae0168f Handle mouse wheel zoom events as if they've come from a trackpad. 2020-02-05 11:21:44 +01:00
Andreas Hocevar
97246daf66 Merge pull request #10587 from jeremy-smith-maco/larger-resolution-constraint
Adds option to View for using larger resolution value when clamping #10586
2020-02-05 11:10:43 +01:00
Jeremy Smith
3082972cce Updates the option to be called showFullExtent 2020-02-05 16:46:45 +10:00
Andreas Hocevar
9eb860f08c Merge pull request #10607 from ahocevar/elm-pep
Update elm-pep to fix builds for IE < 11
2020-02-04 09:03:53 +01:00
Frédéric Junod
062d043e6e Merge pull request #10600 from openlayers/dependabot/npm_and_yarn/puppeteer-2.1.0
Bump puppeteer from 2.0.0 to 2.1.0
2020-02-04 08:47:28 +01:00
Andreas Hocevar
e727a3fe23 Update elm-pep to fix builds for IE < 11 2020-02-04 08:11:29 +01:00
Andreas Hocevar
fe3603dee6 Merge pull request #10598 from ahocevar/refresh-no-inheritdoc
Remove inheritDoc to work around JSDoc issue
2020-02-03 22:32:52 +01:00
Frédéric Junod
2eb0072e8c Merge pull request #10606 from openlayers/dependabot/npm_and_yarn/babel/core-7.8.4
Bump @babel/core from 7.8.3 to 7.8.4
2020-02-03 09:42:55 +01:00
Frédéric Junod
bba2989859 Merge pull request #10605 from openlayers/dependabot/npm_and_yarn/webpack-dev-server-3.10.2
Bump webpack-dev-server from 3.10.1 to 3.10.2
2020-02-03 09:42:20 +01:00
Frédéric Junod
f63c02a57b Merge pull request #10604 from openlayers/dependabot/npm_and_yarn/rollup-1.31.0
Bump rollup from 1.29.1 to 1.31.0
2020-02-03 09:41:03 +01:00
Frédéric Junod
92a0558cf2 Merge pull request #10603 from openlayers/dependabot/npm_and_yarn/babel/preset-env-7.8.4
Bump @babel/preset-env from 7.8.3 to 7.8.4
2020-02-03 09:40:43 +01:00
Frederic Junod
a4915d0ef6 Update expected image for layer-vectortile-rotate-hidpi rendering test 2020-02-03 09:40:05 +01:00
Frédéric Junod
66d9c92f7d Merge pull request #10602 from openlayers/dependabot/npm_and_yarn/url-polyfill-1.1.8
Bump url-polyfill from 1.1.7 to 1.1.8
2020-02-03 09:39:15 +01:00
Frédéric Junod
511d8e8795 Merge pull request #10601 from openlayers/dependabot/npm_and_yarn/terser-webpack-plugin-2.3.4
Bump terser-webpack-plugin from 2.3.2 to 2.3.4
2020-02-03 09:38:47 +01:00
dependabot-preview[bot]
6a5a1f7a72 Bump @babel/core from 7.8.3 to 7.8.4
Bumps [@babel/core](https://github.com/babel/babel) from 7.8.3 to 7.8.4.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.8.3...v7.8.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-03 08:19:24 +00:00
dependabot-preview[bot]
c2bfe76ee5 Bump webpack-dev-server from 3.10.1 to 3.10.2
Bumps [webpack-dev-server](https://github.com/webpack/webpack-dev-server) from 3.10.1 to 3.10.2.
- [Release notes](https://github.com/webpack/webpack-dev-server/releases)
- [Changelog](https://github.com/webpack/webpack-dev-server/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack/webpack-dev-server/compare/v3.10.1...v3.10.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-03 08:18:51 +00:00
dependabot-preview[bot]
cf0b8af356 Bump rollup from 1.29.1 to 1.31.0
Bumps [rollup](https://github.com/rollup/rollup) from 1.29.1 to 1.31.0.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v1.29.1...v1.31.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-03 08:17:49 +00:00
dependabot-preview[bot]
1e08750398 Bump @babel/preset-env from 7.8.3 to 7.8.4
Bumps [@babel/preset-env](https://github.com/babel/babel) from 7.8.3 to 7.8.4.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.8.3...v7.8.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-03 08:17:08 +00:00
dependabot-preview[bot]
f4ef2e15db Bump url-polyfill from 1.1.7 to 1.1.8
Bumps [url-polyfill](https://github.com/lifaon74/url-polyfill) from 1.1.7 to 1.1.8.
- [Release notes](https://github.com/lifaon74/url-polyfill/releases)
- [Commits](https://github.com/lifaon74/url-polyfill/compare/1.1.7...1.1.8)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-03 08:15:52 +00:00
dependabot-preview[bot]
cd3a205803 Bump terser-webpack-plugin from 2.3.2 to 2.3.4
Bumps [terser-webpack-plugin](https://github.com/webpack-contrib/terser-webpack-plugin) from 2.3.2 to 2.3.4.
- [Release notes](https://github.com/webpack-contrib/terser-webpack-plugin/releases)
- [Changelog](https://github.com/webpack-contrib/terser-webpack-plugin/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/terser-webpack-plugin/compare/v2.3.2...v2.3.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-03 08:14:59 +00:00
dependabot-preview[bot]
564af3e4d5 Bump puppeteer from 2.0.0 to 2.1.0
Bumps [puppeteer](https://github.com/puppeteer/puppeteer) from 2.0.0 to 2.1.0.
- [Release notes](https://github.com/puppeteer/puppeteer/releases)
- [Commits](https://github.com/puppeteer/puppeteer/compare/v2.0.0...v2.1.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-03 08:14:11 +00:00
mike-000
3c2dfb511a Fix Polystyle outline 0 conflict with Linestyle
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
2020-02-02 11:28:07 +00:00
Andreas Hocevar
f91ce5692f Remove apidoc annotation to show refresh for ol/source/Cluster 2020-02-01 21:44:10 +01:00
Andreas Hocevar
38abbcbdd6 Remove inheritDoc to work around JSDoc issue 2020-02-01 19:06:37 +01:00
Andreas Hocevar
902f3c2fba Merge pull request #10574 from ahocevar/text-background
Text rendering improvements
2020-01-30 15:57:04 +01:00
Andreas Hocevar
7266f37f85 Remove unused export and variable 2020-01-30 14:56:11 +01:00
Andreas Hocevar
93897d92d5 Merge pull request #10591 from ahocevar/sphere-license
Remove obsolete license notice
2020-01-30 14:03:57 +01:00
Andreas Hocevar
81d14fb636 Remove obsolete license notice 2020-01-30 10:47:53 +01:00
Andreas Hocevar
542b77eef8 Save and restore before rendering labels 2020-01-30 09:14:03 +01:00
Andreas Hocevar
a24c94487c Cache label instructions for better performance 2020-01-30 09:14:02 +01:00
Andreas Hocevar
d87f7b7d35 Merge pull request #10588 from ahocevar/apidoc
Sort doc navigation properly and add missing modules
2020-01-30 08:15:41 +01:00
Jeremy Smith
001cb98990 Updated test to use renamed option 2020-01-30 08:03:02 +10:00
Jeremy Smith
7805768942 Renamed option to constrainOneAxis 2020-01-30 07:40:28 +10:00
Andreas Hocevar
f8f7f83be7 Do not expose static render function of controls 2020-01-29 20:21:08 +01:00
Tim Schaub
af307eb606 Merge pull request #10581 from DanielRuf/ci/use-package-lock-checksum
Use package-lock.json for the checksum calculation
2020-01-29 07:35:51 -08:00
Andreas Hocevar
e3f9e250ab Sort doc navigation properly and add missing modules 2020-01-29 14:04:52 +01:00
Andreas Hocevar
c373a3eafd Merge pull request #10584 from MrSoUndso/dev
fixed issue with version throwing an error if it is null
2020-01-29 12:06:48 +01:00
Jeremy Smith
4151e86c0a Adds option to View for using larger resolution value when clamping 2020-01-29 15:35:48 +10:00
Jakob Gerstmayer
153bd7f5d1 fixed spacing after if 2020-01-28 17:48:45 +01:00
Jakob Gerstmayer
902bdbabdc fixed issue with version throwing an error if it is null 2020-01-28 17:39:21 +01:00
Daniel Ruf
02b1ab71f1 Use package-lock.json for the checksum calculation - closes #10069 2020-01-28 11:13:50 +01:00
Andreas Hocevar
2652c1a30d Merge pull request #10575 from mike-000/patch-8
Fix ol/layer/Graticule rendercomplete problem
2020-01-27 16:46:44 +01:00
Andreas Hocevar
29ea779f66 Merge pull request #10562 from crubier/master
Zoomify: Separate the service pixel ratio and the device pixel ratio
2020-01-27 15:46:11 +01:00
Frédéric Junod
9cf8fe9e05 Merge pull request #10578 from openlayers/dependabot/npm_and_yarn/sinon-8.1.1
Bump sinon from 8.1.0 to 8.1.1
2020-01-27 09:03:56 +01:00
Frédéric Junod
2f7e681c32 Merge pull request #10577 from openlayers/dependabot/npm_and_yarn/mocha-7.0.1
Bump mocha from 7.0.0 to 7.0.1
2020-01-27 09:03:36 +01:00
Frédéric Junod
e391be7de9 Merge pull request #10576 from openlayers/dependabot/npm_and_yarn/rollup-1.29.1
Bump rollup from 1.29.0 to 1.29.1
2020-01-27 09:03:10 +01:00
Frédéric Junod
f2d5b6b116 Merge pull request #10573 from mike-000/patch-7
Replace Bing layer with MapTiler in example
2020-01-27 08:47:25 +01:00
dependabot-preview[bot]
7f6d77d811 Bump sinon from 8.1.0 to 8.1.1
Bumps [sinon](https://github.com/sinonjs/sinon) from 8.1.0 to 8.1.1.
- [Release notes](https://github.com/sinonjs/sinon/releases)
- [Changelog](https://github.com/sinonjs/sinon/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sinonjs/sinon/compare/v8.1.0...v8.1.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-27 07:47:19 +00:00
dependabot-preview[bot]
2205937b2d Bump mocha from 7.0.0 to 7.0.1
Bumps [mocha](https://github.com/mochajs/mocha) from 7.0.0 to 7.0.1.
- [Release notes](https://github.com/mochajs/mocha/releases)
- [Changelog](https://github.com/mochajs/mocha/blob/master/CHANGELOG.md)
- [Commits](https://github.com/mochajs/mocha/compare/v7.0.0...v7.0.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-27 07:46:34 +00:00
dependabot-preview[bot]
bf57a23940 Bump rollup from 1.29.0 to 1.29.1
Bumps [rollup](https://github.com/rollup/rollup) from 1.29.0 to 1.29.1.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v1.29.0...v1.29.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-27 07:45:55 +00:00
mike-000
e820042748 Fix ol/layer/Graticule rendercomplete problem
fix typedef imports
2020-01-26 14:04:05 +00:00
mike-000
a7bdee43b3 Fix ol/layer/Graticule rendercomplete problem
Use custom loading strategy to avoid problems caused by calling removeLoadedExtent in the loader function
2020-01-26 13:51:11 +00:00
Andreas Hocevar
23d441f9f2 Handle tileSize and tilePixelRatio properly 2020-01-25 19:55:30 +01:00
Andreas Hocevar
91b9058582 Merge pull request #10570 from ahocevar/fix-vector-image-ratio
Use correct extent for the vector image
2020-01-24 19:30:45 +01:00
Andreas Hocevar
5ca4af125e Merge pull request #10572 from ahocevar/assert-no-duplicate-layers
Assert each layer is only added to the map once
2020-01-24 18:03:27 +01:00
Andreas Hocevar
1ee03decdd Assert each layer is only added to the map once 2020-01-24 17:52:13 +01:00
mike-000
96ebacca1f Replace Bing layer with MapTiler 2020-01-24 16:34:43 +00:00
mike-000
a9e738c919 Replace Bing layer with MapTiler 2020-01-24 16:33:34 +00:00
mike-000
c9c616bd6f Replace Bing layer with MapTiler 2020-01-24 16:31:08 +00:00
mike-000
1eac18f94a Replace Bing layer with MapTiler 2020-01-24 15:51:41 +00:00
mike-000
e11db6de44 Replace Bing layer with MapTiler 2020-01-24 15:49:08 +00:00
Vincent Lecrubier
8c89ddceca Revert #9489 and solves retina tiles on zoomify apparently. 2020-01-24 15:33:42 +00:00
Andreas Hocevar
89c5364b2f Use correct extent for the vector image 2020-01-24 13:50:02 +01:00
Andreas Hocevar
97cb0bbd77 Merge pull request #10563 from ahocevar/map-to-image
More compatible way of exporting a map as pdf
2020-01-23 12:19:56 +01:00
Vincent Lecrubier
3a5c8d637c Zoomify: Separate the service pixel ratio and the device pixel ratio 2020-01-22 09:32:11 +00:00
Andreas Hocevar
4db204698e More compatible way of exporting a map as pdf 2020-01-21 22:27:28 +01:00
Andreas Hocevar
d1b2dfb669 Merge pull request #10545 from mike-000/patch-7
Make KML point feature styles compatible with declutter
2020-01-20 13:45:52 +01:00
mike-000
5830a36131 Convert any html character codes in labels
fix typedef
2020-01-20 10:37:04 +00:00
mike-000
83d65b61e1 Convert any html character codes in labels
fix typedef
2020-01-20 10:30:44 +00:00
mike-000
c221cc7a46 Convert any html character codes in labels
reuse single textarea element
2020-01-20 10:24:57 +00:00
Andreas Hocevar
a25e10524b Merge pull request #10542 from mike-000/patch-6
Replace Bing layer with MapTiler in KML example
2020-01-20 09:35:29 +01:00
Andreas Hocevar
afba861ab5 Merge pull request #10543 from MoonE/jsdoc-api-mustnothavevalue
@api tag must not have a value.
2020-01-20 09:33:28 +01:00
Andreas Hocevar
d670eba5eb Merge pull request #10547 from MoonE/apidoc-remove-non-api-modules
Only generate module apidoc pages when it contains api tags
2020-01-20 09:22:33 +01:00
Andreas Hocevar
3dff4f73e2 Merge pull request #10551 from openlayers/dependabot/npm_and_yarn/handlebars-4.7.2
Bump handlebars from 4.7.1 to 4.7.2
2020-01-20 09:17:25 +01:00
Andreas Hocevar
f87a7656ce Merge pull request #10550 from openlayers/dependabot/npm_and_yarn/babel/preset-env-7.8.3
Bump @babel/preset-env from 7.8.2 to 7.8.3
2020-01-20 09:16:54 +01:00
Andreas Hocevar
8f7e5ce63c Merge pull request #10549 from openlayers/dependabot/npm_and_yarn/sinon-8.1.0
Bump sinon from 8.0.4 to 8.1.0
2020-01-20 09:16:20 +01:00
Andreas Hocevar
ca944c8ece Merge pull request #10548 from openlayers/dependabot/npm_and_yarn/babel/core-7.8.3
Bump @babel/core from 7.8.0 to 7.8.3
2020-01-20 09:15:44 +01:00
dependabot-preview[bot]
9ce0d6159c Bump handlebars from 4.7.1 to 4.7.2
Bumps [handlebars](https://github.com/wycats/handlebars.js) from 4.7.1 to 4.7.2.
- [Release notes](https://github.com/wycats/handlebars.js/releases)
- [Changelog](https://github.com/wycats/handlebars.js/blob/master/release-notes.md)
- [Commits](https://github.com/wycats/handlebars.js/compare/v4.7.1...v4.7.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-20 07:55:15 +00:00
dependabot-preview[bot]
f2ae509d07 Bump @babel/preset-env from 7.8.2 to 7.8.3
Bumps [@babel/preset-env](https://github.com/babel/babel) from 7.8.2 to 7.8.3.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.8.2...v7.8.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-20 07:54:16 +00:00
dependabot-preview[bot]
e00cfeec06 Bump sinon from 8.0.4 to 8.1.0
Bumps [sinon](https://github.com/sinonjs/sinon) from 8.0.4 to 8.1.0.
- [Release notes](https://github.com/sinonjs/sinon/releases)
- [Changelog](https://github.com/sinonjs/sinon/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sinonjs/sinon/compare/v8.0.4...v8.1.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-20 07:53:02 +00:00
dependabot-preview[bot]
fa9d4586a3 Bump @babel/core from 7.8.0 to 7.8.3
Bumps [@babel/core](https://github.com/babel/babel) from 7.8.0 to 7.8.3.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.8.0...v7.8.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-20 07:52:12 +00:00
Maximilian Krög
e2dc67546e Only generate module apidoc pages when it contains api tags 2020-01-19 15:51:48 +01:00
mike-000
e2b42c100f Include html character code in text style test 2020-01-19 12:02:16 +00:00
mike-000
bf23dca068 Include html character code in text style test 2020-01-19 11:42:59 +00:00
mike-000
23858dc09d Convert any html character codes in labels 2020-01-19 11:28:05 +00:00
mike-000
9493d68217 Make feature styles compatible with declutter
Remove type def relating to deleted line
2020-01-18 20:19:56 +00:00
mike-000
730008cfad Make feature styles compatible with declutter
Update expected result to single style object to reflect change
Remove duplicated test
2020-01-18 20:00:09 +00:00
mike-000
258bfeaecc Make feature styles compatible with declutter
Return a single style object for image and text for point features as concatenating two styles in an array is not compatible with decluttering
2020-01-18 19:37:18 +00:00
Maximilian Krög
9cc7ef4b96 Use correct config for tags which must not have a value. 2020-01-18 20:15:10 +01:00
mike-000
3ac33ee723 Replace Bing layer with MapTiler 2020-01-17 21:53:52 +00:00
mike-000
62cd0cbcc9 Replace Bing layer with MapTiler 2020-01-17 21:47:32 +00:00
Andreas Hocevar
2f094978ca Merge pull request #10502 from walkermatt/stopevent-removed-target
Stop events that originate with a removed target
2020-01-17 21:34:39 +01:00
Andreas Hocevar
de5cd5c664 Merge pull request #10527 from ahocevar/no-label-cache
Remove label cache, render text directly to target canvas
2020-01-16 09:23:41 +01:00
Tim Schaub
8e2adf9955 Merge pull request #10534 from wussup/patch-1
[GeoJSON] Read projection from CRS type EPSG
2020-01-15 15:21:28 -07:00
Andreas Hocevar
adbab7992e Merge pull request #10430 from Razi91/offset-RegularShape
Offset regular shape
2020-01-15 11:26:41 +01:00
jkonieczny
df710e4d6f fix example with displacement 2020-01-15 11:13:45 +01:00
jkonieczny
2112478b6b Added test + jsdoc 2020-01-15 11:13:45 +01:00
jkonieczny
78378f0253 refactor offset to displacement 2020-01-15 11:13:45 +01:00
jkonieczny
4c7f52c8a4 Offset for ImageStyle 2020-01-15 11:13:44 +01:00
jkonieczny
ee1b038714 add example to regularshape 2020-01-15 11:13:44 +01:00
jkonieczny
1506e13b60 use anchor for offsetting 2020-01-15 11:13:44 +01:00
jkonieczny
601bd7bae6 add offset option to RegularShape 2020-01-15 11:13:44 +01:00
wussup
cbdd63a38b Strings must have singlequotes
Strings must have singlequotes
2020-01-15 10:29:14 +01:00
wussup
bc6f34d691 Read projection from CRS type EPSG
CRS also may have type 'EPSG' and then the code is reading from property 'code' in object 'properties'
2020-01-15 10:13:18 +01:00
Andreas Hocevar
fd935bae53 Remove label cache, render text directly to target canvas 2020-01-13 22:12:53 +01:00
Matt Walker
eeec2b9e7d Lint: remove unused imports 2020-01-13 11:32:40 +00:00
Matt Walker
4e599a370b Use document.body to check if an event target is within the page
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
2020-01-13 10:56:41 +00:00
Matt Walker
5ce532e3e4 Mock PointerEvent in tests to include target
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
2020-01-13 10:46:40 +00:00
Frédéric Junod
56a6919d9a Merge pull request #10518 from openlayers/dependabot/npm_and_yarn/front-matter-3.1.0
Bump front-matter from 3.0.2 to 3.1.0
2020-01-13 10:02:48 +01:00
Frédéric Junod
c4eea624f4 Merge pull request #10516 from openlayers/dependabot/npm_and_yarn/handlebars-4.7.1
Bump handlebars from 4.5.3 to 4.7.1
2020-01-13 10:02:26 +01:00
Frédéric Junod
76e81bbc78 Merge pull request #10514 from openlayers/dependabot/npm_and_yarn/terser-webpack-plugin-2.3.2
Bump terser-webpack-plugin from 2.3.1 to 2.3.2
2020-01-13 10:02:08 +01:00
Frédéric Junod
bbadfefc92 Merge pull request #10523 from openlayers/dependabot/npm_and_yarn/sinon-8.0.4
Bump sinon from 8.0.2 to 8.0.4
2020-01-13 09:34:43 +01:00
Frédéric Junod
e4c98c58bd Merge pull request #10513 from fgubler/fgubler/constrain-only-center-flag-fix-notes
fixed flag-name in upgrade notes
2020-01-13 09:34:21 +01:00
dependabot-preview[bot]
6d5602b569 Bump front-matter from 3.0.2 to 3.1.0
Bumps [front-matter](https://github.com/jxson/front-matter) from 3.0.2 to 3.1.0.
- [Release notes](https://github.com/jxson/front-matter/releases)
- [Commits](https://github.com/jxson/front-matter/compare/v3.0.2...v3.1.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-13 08:33:08 +00:00
dependabot-preview[bot]
f79cc24ff3 Bump handlebars from 4.5.3 to 4.7.1
Bumps [handlebars](https://github.com/wycats/handlebars.js) from 4.5.3 to 4.7.1.
- [Release notes](https://github.com/wycats/handlebars.js/releases)
- [Changelog](https://github.com/wycats/handlebars.js/blob/v4.7.1/release-notes.md)
- [Commits](https://github.com/wycats/handlebars.js/compare/v4.5.3...v4.7.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-13 08:33:06 +00:00
Frédéric Junod
b2e81109b4 Merge pull request #10515 from openlayers/dependabot/npm_and_yarn/babel/preset-env-7.8.2
Bump @babel/preset-env from 7.7.7 to 7.8.2
2020-01-13 09:32:43 +01:00
Frédéric Junod
afe97ef04e Merge pull request #10517 from openlayers/dependabot/npm_and_yarn/karma-firefox-launcher-1.3.0
Bump karma-firefox-launcher from 1.2.0 to 1.3.0
2020-01-13 09:32:16 +01:00
Frédéric Junod
ab607eb02a Merge pull request #10519 from openlayers/dependabot/npm_and_yarn/babel/core-7.8.0
Bump @babel/core from 7.7.7 to 7.8.0
2020-01-13 09:31:50 +01:00
Frédéric Junod
86cef49368 Merge pull request #10520 from openlayers/dependabot/npm_and_yarn/globby-11.0.0
Bump globby from 10.0.1 to 11.0.0
2020-01-13 09:31:17 +01:00
Frédéric Junod
8e45a3378a Merge pull request #10521 from openlayers/dependabot/npm_and_yarn/rollup-plugin-terser-5.2.0
Bump rollup-plugin-terser from 5.1.3 to 5.2.0
2020-01-13 09:30:53 +01:00
Frédéric Junod
ec265a04c7 Merge pull request #10522 from openlayers/dependabot/npm_and_yarn/rollup-1.29.0
Bump rollup from 1.28.0 to 1.29.0
2020-01-13 09:30:34 +01:00
dependabot-preview[bot]
ea1070193e Bump sinon from 8.0.2 to 8.0.4
Bumps [sinon](https://github.com/sinonjs/sinon) from 8.0.2 to 8.0.4.
- [Release notes](https://github.com/sinonjs/sinon/releases)
- [Changelog](https://github.com/sinonjs/sinon/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sinonjs/sinon/compare/v8.0.2...v8.0.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-13 08:10:42 +00:00
dependabot-preview[bot]
e9ab684ef3 Bump rollup from 1.28.0 to 1.29.0
Bumps [rollup](https://github.com/rollup/rollup) from 1.28.0 to 1.29.0.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v1.28.0...v1.29.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-13 08:09:49 +00:00
dependabot-preview[bot]
87a953c4ec Bump rollup-plugin-terser from 5.1.3 to 5.2.0
Bumps [rollup-plugin-terser](https://github.com/TrySound/rollup-plugin-terser) from 5.1.3 to 5.2.0.
- [Release notes](https://github.com/TrySound/rollup-plugin-terser/releases)
- [Commits](https://github.com/TrySound/rollup-plugin-terser/compare/v5.1.3...v5.2.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-13 08:09:06 +00:00
dependabot-preview[bot]
e05641b6b8 Bump globby from 10.0.1 to 11.0.0
Bumps [globby](https://github.com/sindresorhus/globby) from 10.0.1 to 11.0.0.
- [Release notes](https://github.com/sindresorhus/globby/releases)
- [Commits](https://github.com/sindresorhus/globby/compare/v10.0.1...v11.0.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-13 08:08:00 +00:00
dependabot-preview[bot]
bacc159fc6 Bump @babel/core from 7.7.7 to 7.8.0
Bumps [@babel/core](https://github.com/babel/babel) from 7.7.7 to 7.8.0.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.7.7...v7.8.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-13 08:07:01 +00:00
dependabot-preview[bot]
8935cb509a Bump karma-firefox-launcher from 1.2.0 to 1.3.0
Bumps [karma-firefox-launcher](https://github.com/karma-runner/karma-firefox-launcher) from 1.2.0 to 1.3.0.
- [Release notes](https://github.com/karma-runner/karma-firefox-launcher/releases)
- [Changelog](https://github.com/karma-runner/karma-firefox-launcher/blob/master/CHANGELOG.md)
- [Commits](https://github.com/karma-runner/karma-firefox-launcher/compare/v1.2.0...v1.3.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-13 08:05:32 +00:00
dependabot-preview[bot]
02931d54b5 Bump @babel/preset-env from 7.7.7 to 7.8.2
Bumps [@babel/preset-env](https://github.com/babel/babel) from 7.7.7 to 7.8.2.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.7.7...v7.8.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-13 08:03:35 +00:00
dependabot-preview[bot]
95a319a670 Bump terser-webpack-plugin from 2.3.1 to 2.3.2
Bumps [terser-webpack-plugin](https://github.com/webpack-contrib/terser-webpack-plugin) from 2.3.1 to 2.3.2.
- [Release notes](https://github.com/webpack-contrib/terser-webpack-plugin/releases)
- [Changelog](https://github.com/webpack-contrib/terser-webpack-plugin/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/terser-webpack-plugin/compare/v2.3.1...v2.3.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-13 08:02:43 +00:00
Gubler, Florian
986e6d940c fixed flag-name in upgrade notes: "constrainOnlyCenter" instead of "constrainCenterOnly" 2020-01-13 08:45:29 +01:00
Andreas Hocevar
080ef7c56e Merge pull request #10504 from mike-000/patch-1
Fix for reset north when rotation is 360 degrees
2020-01-12 13:00:36 +01:00
Andreas Hocevar
810fab54ec Merge pull request #10510 from MoonE/clear-built-apidoc-before-running-jsdoc
Remove build/apidoc before running jsdoc again
2020-01-12 12:55:40 +01:00
Maximilian Krög
3bac2e49d1 Remove build/apidoc before running jsdoc again 2020-01-11 17:40:56 +01:00
mike-000
0512c690f8 Fix for reset north when rotation is 360 degrees
Animated reset north doesn't work and isn't needed if rotation is 360 degrees (or a multiple of 360)
2020-01-10 13:39:29 +00:00
Matt Walker
f3d94b3132 Fix lint error 2020-01-10 11:16:54 +00:00
Matt Walker
34dc538122 Stop events that originate with a removed target
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.
2020-01-10 10:48:15 +00:00
Andreas Hocevar
c851f6c6bf Merge pull request #10498 from gazza0/master
Fixing issue #10497 on behalf of LarryHuang
2020-01-09 14:10:53 +01:00
gazza0
88e3db4928 Merge pull request #1 from gazza0/gazza0-patch-1
Fixing issue #10497 on behalf of LarryHuang
2020-01-09 03:01:20 -08:00
gazza0
420e7d87ae Fixing issue #10497 on behalf of LarryHuang
Since Larry is not able to access github, i'm committing on behalf of him, explanation of the issue and he's original fix can be found https://github.com/openlayers/openlayers/issues/10497
2020-01-09 02:52:21 -08:00
Andreas Hocevar
44fab1000e Merge pull request #10496 from ahocevar/stopevent-dragging
Do not stop events when dragging
2020-01-09 09:52:57 +01:00
Andreas Hocevar
a4735e0700 Merge pull request #10478 from ahocevar/abort-without-dispose
Do not abort and dispose of tiles
2020-01-09 09:52:07 +01:00
Andreas Hocevar
b26f570cb7 Do not stop events when dragging 2020-01-08 21:39:29 +01:00
Andreas Hocevar
e2687da202 Merge pull request #10495 from danielklim/dlim/view-fit-typo
typo in view.fit
2020-01-08 12:57:40 +01:00
Andreas Hocevar
9f4dbd3c35 Reuse existing canvases from vector render tiles 2020-01-08 10:53:43 +01:00
Andreas Hocevar
5a8df1d4e2 We no longer need to increase the cache size 2020-01-08 10:53:42 +01:00
Andreas Hocevar
46d98201c3 Store source tiles on render tile instead of source 2020-01-08 10:53:42 +01:00
Dan Lim
21e9601d7b typo in view.fit 2020-01-07 16:12:06 -08:00
Tim Schaub
8125463e59 Merge pull request #10473 from mike-000/patch-1
Fix for undefined source in Vector layer
2020-01-06 18:25:11 -07:00
mike-000
cb665b7ea7 Simplify to return false if layer has no source 2020-01-06 17:31:38 +00:00
Frédéric Junod
c1c256040e Merge pull request #10484 from fredj/heatmap_gradient_update
Use a function to get the value of the gradient
2020-01-06 11:06:43 +01:00
Frederic Junod
5a1921d7bd Use a function to get the value of the gradient 2020-01-06 10:52:16 +01:00
Frédéric Junod
adea3b48dc Merge pull request #10480 from openlayers/dependabot/npm_and_yarn/mocha-7.0.0
Bump mocha from 6.2.2 to 7.0.0
2020-01-06 10:48:01 +01:00
Frédéric Junod
d60a153ca6 Merge pull request #10482 from openlayers/dependabot/npm_and_yarn/sinon-8.0.2
Bump sinon from 8.0.1 to 8.0.2
2020-01-06 10:47:19 +01:00
Frédéric Junod
d1ef920fab Merge pull request #10481 from openlayers/dependabot/npm_and_yarn/yargs-15.1.0
Bump yargs from 15.0.2 to 15.1.0
2020-01-06 10:46:59 +01:00
Frédéric Junod
ff2a33367d Merge pull request #10479 from openlayers/dependabot/npm_and_yarn/rollup-1.28.0
Bump rollup from 1.27.14 to 1.28.0
2020-01-06 10:46:28 +01:00
Olivier Guyot
6d092cf1a6 Merge pull request #10262 from bjornharrtell/lazy-dom-impl
Rework to make Document and XMLSerializer lazy and injectable
2020-01-06 09:37:17 +01:00
dependabot-preview[bot]
68de72d1cc Bump sinon from 8.0.1 to 8.0.2
Bumps [sinon](https://github.com/sinonjs/sinon) from 8.0.1 to 8.0.2.
- [Release notes](https://github.com/sinonjs/sinon/releases)
- [Changelog](https://github.com/sinonjs/sinon/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sinonjs/sinon/compare/v8.0.1...v8.0.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-06 07:38:58 +00:00
dependabot-preview[bot]
780e4f5fbd Bump yargs from 15.0.2 to 15.1.0
Bumps [yargs](https://github.com/yargs/yargs) from 15.0.2 to 15.1.0.
- [Release notes](https://github.com/yargs/yargs/releases)
- [Changelog](https://github.com/yargs/yargs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/yargs/yargs/compare/v15.0.2...v15.1.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-06 07:38:20 +00:00
dependabot-preview[bot]
77c2c04ae6 Bump mocha from 6.2.2 to 7.0.0
Bumps [mocha](https://github.com/mochajs/mocha) from 6.2.2 to 7.0.0.
- [Release notes](https://github.com/mochajs/mocha/releases)
- [Changelog](https://github.com/mochajs/mocha/blob/master/CHANGELOG.md)
- [Commits](https://github.com/mochajs/mocha/compare/v6.2.2...v7.0.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-06 07:37:44 +00:00
dependabot-preview[bot]
c840d29f9f Bump rollup from 1.27.14 to 1.28.0
Bumps [rollup](https://github.com/rollup/rollup) from 1.27.14 to 1.28.0.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v1.27.14...v1.28.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-06 07:36:59 +00:00
Björn Harrtell
05a5f162d4 Move logic from dom to xml module 2020-01-05 13:12:27 +01:00
Björn Harrtell
5b661ed84c Fix jsdoc 2020-01-05 13:00:44 +01:00
Björn Harrtell
bdc20e0293 Rework to register Document and add XMLSerializer 2020-01-05 13:00:44 +01:00
Björn Harrtell
fc46166821 Fix argument name mixup 2020-01-05 13:00:44 +01:00
Björn Harrtell
90d61033e0 Rework to make DOMImplementation lazy and injectable 2020-01-05 13:00:44 +01:00
Andreas Hocevar
2875685b3c Use TileCache instead of custom structure 2020-01-05 12:25:44 +01:00
Andreas Hocevar
ae1ee192f3 Avoid misleading bind argument 2020-01-05 12:09:46 +01:00
Andreas Hocevar
bec747e513 Remove unused argument and member 2020-01-05 12:08:43 +01:00
Andreas Hocevar
6affeb0beb Do not dispose VectorRenderTiles 2020-01-05 11:52:45 +01:00
Andreas Hocevar
da6eed850c Do not lock label cache entries 2020-01-05 11:24:46 +01:00
Andreas Hocevar
ae336f0a1b Remove disposeInternal of ImageTile and reproj/Tile 2020-01-05 00:13:05 +01:00
Andreas Hocevar
b91e1a893d Do not abort and dispose of tiles 2020-01-05 00:05:24 +01:00
mike-000
f48704cac4 Fix for undefined source in Vector layer
A source left or set undefined is equivalent to an empty source so treat it as such to prevent errors in prepareFrame
2020-01-01 21:04:12 +00:00
Tim Schaub
6063021792 Merge pull request #10461 from MoonE/apidocs-objecttypelink
Fix link in apidocs to ObjectEvent.
2019-12-31 00:27:27 -05:00
Tim Schaub
ada6ff7290 Merge pull request #10466 from openlayers/dependabot/npm_and_yarn/webpack-4.41.5
Bump webpack from 4.41.4 to 4.41.5
2019-12-31 00:25:10 -05:00
Tim Schaub
5b3338b6f7 Merge pull request #10467 from openlayers/dependabot/npm_and_yarn/sinon-8.0.1
Bump sinon from 8.0.0 to 8.0.1
2019-12-31 00:24:38 -05:00
dependabot-preview[bot]
e8a17376b6 Bump sinon from 8.0.0 to 8.0.1
Bumps [sinon](https://github.com/sinonjs/sinon) from 8.0.0 to 8.0.1.
- [Release notes](https://github.com/sinonjs/sinon/releases)
- [Changelog](https://github.com/sinonjs/sinon/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sinonjs/sinon/compare/v8.0.0...v8.0.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-30 07:38:28 +00:00
dependabot-preview[bot]
58482c6c64 Bump webpack from 4.41.4 to 4.41.5
Bumps [webpack](https://github.com/webpack/webpack) from 4.41.4 to 4.41.5.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v4.41.4...v4.41.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-30 07:37:37 +00:00
Maximilian Krög
9622a8ca93 Fix link in apidocs to ObjectEvent. 2019-12-27 23:35:19 +01:00
Olivier Guyot
e4ea272799 Merge pull request #10413 from MoonE/zoomsliderextent
Limit the ZoomSlider's range to the view's constrained resolution.
2019-12-23 14:59:19 +01:00
Olivier Guyot
b68d5e139d Merge pull request #10438 from jahow/prevent-layout-reflow
Avoid accessing the DOM to read the viewport size too often
2019-12-23 10:57:42 +01:00
Olivier Guyot
4440994ec8 Avoid recomputing the viewport size by reading the DOM everytime
Also clarify View#calculateExtent doc & remove the [data-view] attribute
on the viewport element (not needed anymore).
2019-12-23 10:47:54 +01:00
Andreas Hocevar
c66a19c9cc Merge pull request #10450 from openlayers/dependabot/npm_and_yarn/babel/core-7.7.7
Bump @babel/core from 7.7.5 to 7.7.7
2019-12-23 10:43:17 +01:00
Andreas Hocevar
7bcc8fc73e Merge pull request #10449 from openlayers/dependabot/npm_and_yarn/eslint-6.8.0
Bump eslint from 6.7.2 to 6.8.0
2019-12-23 10:42:44 +01:00
Andreas Hocevar
05bc7f00ca Merge pull request #10448 from openlayers/dependabot/npm_and_yarn/rollup-1.27.14
Bump rollup from 1.27.13 to 1.27.14
2019-12-23 10:42:00 +01:00
Olivier Guyot
0d9aec4b6b Merge pull request #10439 from jahow/webgl-add-rotation
WebGL points layer / add support for symbol rotation
2019-12-23 10:32:12 +01:00
dependabot-preview[bot]
3d3fe9f41b Bump rollup from 1.27.13 to 1.27.14
Bumps [rollup](https://github.com/rollup/rollup) from 1.27.13 to 1.27.14.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v1.27.13...v1.27.14)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-23 09:15:54 +00:00
Andreas Hocevar
daf8d0af6c Merge pull request #10447 from openlayers/dependabot/npm_and_yarn/babel/preset-env-7.7.7
Bump @babel/preset-env from 7.7.6 to 7.7.7
2019-12-23 10:14:33 +01:00
Andreas Hocevar
79232ea668 Merge pull request #10446 from openlayers/dependabot/npm_and_yarn/sinon-8.0.0
Bump sinon from 7.5.0 to 8.0.0
2019-12-23 10:13:58 +01:00
Andreas Hocevar
d7a331fc7c Merge pull request #10445 from openlayers/dependabot/npm_and_yarn/webpack-4.41.4
Bump webpack from 4.41.2 to 4.41.4
2019-12-23 09:50:26 +01:00
dependabot-preview[bot]
ada892322a Bump webpack from 4.41.2 to 4.41.4
Bumps [webpack](https://github.com/webpack/webpack) from 4.41.2 to 4.41.4.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v4.41.2...v4.41.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-23 08:22:11 +00:00
Andreas Hocevar
c60fd4decd Merge pull request #10444 from openlayers/dependabot/npm_and_yarn/terser-webpack-plugin-2.3.1
Bump terser-webpack-plugin from 2.3.0 to 2.3.1
2019-12-23 09:21:00 +01:00
Andreas Hocevar
739459f886 Merge pull request #10443 from openlayers/dependabot/npm_and_yarn/webpack-dev-server-3.10.1
Bump webpack-dev-server from 3.9.0 to 3.10.1
2019-12-23 09:20:20 +01:00
dependabot-preview[bot]
bcb78fe3a9 Bump @babel/core from 7.7.5 to 7.7.7
Bumps [@babel/core](https://github.com/babel/babel) from 7.7.5 to 7.7.7.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.7.5...v7.7.7)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-23 07:54:01 +00:00
dependabot-preview[bot]
8496b5b4e0 Bump eslint from 6.7.2 to 6.8.0
Bumps [eslint](https://github.com/eslint/eslint) from 6.7.2 to 6.8.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/master/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v6.7.2...v6.8.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-23 07:53:34 +00:00
dependabot-preview[bot]
dd9643cc07 Bump @babel/preset-env from 7.7.6 to 7.7.7
Bumps [@babel/preset-env](https://github.com/babel/babel) from 7.7.6 to 7.7.7.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.7.6...v7.7.7)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-23 07:52:02 +00:00
dependabot-preview[bot]
28ae21e5dd Bump sinon from 7.5.0 to 8.0.0
Bumps [sinon](https://github.com/sinonjs/sinon) from 7.5.0 to 8.0.0.
- [Release notes](https://github.com/sinonjs/sinon/releases)
- [Changelog](https://github.com/sinonjs/sinon/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sinonjs/sinon/compare/v7.5.0...v8.0.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-23 07:51:13 +00:00
dependabot-preview[bot]
8838565629 Bump terser-webpack-plugin from 2.3.0 to 2.3.1
Bumps [terser-webpack-plugin](https://github.com/webpack-contrib/terser-webpack-plugin) from 2.3.0 to 2.3.1.
- [Release notes](https://github.com/webpack-contrib/terser-webpack-plugin/releases)
- [Changelog](https://github.com/webpack-contrib/terser-webpack-plugin/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/terser-webpack-plugin/compare/v2.3.0...v2.3.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-23 07:49:51 +00:00
dependabot-preview[bot]
a4c3bce3b1 Bump webpack-dev-server from 3.9.0 to 3.10.1
Bumps [webpack-dev-server](https://github.com/webpack/webpack-dev-server) from 3.9.0 to 3.10.1.
- [Release notes](https://github.com/webpack/webpack-dev-server/releases)
- [Changelog](https://github.com/webpack/webpack-dev-server/blob/v3.10.1/CHANGELOG.md)
- [Commits](https://github.com/webpack/webpack-dev-server/compare/v3.9.0...v3.10.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-23 07:49:09 +00:00
Maximilian Krög
33389969ce Limit the ZoomSlider's range to the view's constrained resolution. 2019-12-20 23:13:41 +01:00
Maximilian Krög
d7eaacf923 Small performance improvement by saving the calculated logarithm. 2019-12-20 23:13:19 +01:00
Olivier Guyot
33e24e9ce9 Updated webgl-points-layer example to add a style with rotation
Also made it so that the map re-renders continously, to be able to
use the ["time"] operator.
2019-12-20 21:54:06 +01:00
Olivier Guyot
6c46eb1dd0 Webgl / add support for a rotation parameter in LiteralStyle
The ShaderBuilder can now take a rotation expression.
2019-12-20 17:39:40 +01:00
Olivier Guyot
6f000e3155 Add missing documentation in ol/style/expressions 2019-12-20 17:13:15 +01:00
Andreas Hocevar
f08a2ab3d1 Merge pull request #10434 from mike-000/patch-6
Disable image smoothing for the DEM source in the Sea Level example
2019-12-19 09:39:58 +01:00
mike-000
caefe8c85b Disable image smoothing for the DEM source 2019-12-18 20:49:44 +00:00
mike-000
977b89c99d Disable image smoothing for the DEM source 2019-12-18 20:40:20 +00:00
Tim Schaub
2b45bc054e Merge pull request #10417 from mike-000/patch-3
Replace Bing layer with MapTiler
2019-12-16 19:43:12 -07:00
Frédéric Junod
23251947be Merge pull request #10425 from openlayers/dependabot/npm_and_yarn/elm-pep-1.0.3
Bump elm-pep from 1.0.2 to 1.0.3
2019-12-16 10:35:50 +01:00
Frédéric Junod
3da3339c03 Merge pull request #10427 from openlayers/dependabot/npm_and_yarn/webpack-cli-3.3.10
Bump webpack-cli from 3.3.2 to 3.3.10
2019-12-16 10:35:21 +01:00
Frédéric Junod
0632db0851 Merge pull request #10426 from openlayers/dependabot/npm_and_yarn/copy-webpack-plugin-5.1.1
Bump copy-webpack-plugin from 5.0.5 to 5.1.1
2019-12-16 10:35:05 +01:00
Frédéric Junod
21831fc098 Merge pull request #10424 from openlayers/dependabot/npm_and_yarn/eslint-6.7.2
Bump eslint from 6.7.1 to 6.7.2
2019-12-16 10:34:41 +01:00
Frédéric Junod
5bcfb9c10a Merge pull request #10423 from openlayers/dependabot/npm_and_yarn/marked-0.8.0
Bump marked from 0.7.0 to 0.8.0
2019-12-16 10:34:25 +01:00
Frédéric Junod
e74000fbc0 Merge pull request #10422 from openlayers/dependabot/npm_and_yarn/url-polyfill-1.1.7
Bump url-polyfill from 1.1.5 to 1.1.7
2019-12-16 10:34:00 +01:00
Frédéric Junod
1ab8445d29 Merge pull request #10421 from openlayers/dependabot/npm_and_yarn/rollup-plugin-terser-5.1.3
Bump rollup-plugin-terser from 5.1.2 to 5.1.3
2019-12-16 08:48:13 +01:00
Frédéric Junod
84c2743879 Merge pull request #10420 from openlayers/dependabot/npm_and_yarn/terser-webpack-plugin-2.3.0
Bump terser-webpack-plugin from 2.2.2 to 2.3.0
2019-12-16 08:47:56 +01:00
Frédéric Junod
7649f2484a Merge pull request #10419 from openlayers/dependabot/npm_and_yarn/rollup-1.27.13
Bump rollup from 1.27.9 to 1.27.13
2019-12-16 08:46:40 +01:00
Frédéric Junod
b86ef23c99 Merge pull request #10418 from openlayers/dependabot/npm_and_yarn/babel-loader-8.0.6
Bump babel-loader from 8.0.5 to 8.0.6
2019-12-16 08:46:15 +01:00
dependabot-preview[bot]
1e2f3cbfbb Bump webpack-cli from 3.3.2 to 3.3.10
Bumps [webpack-cli](https://github.com/webpack/webpack-cli) from 3.3.2 to 3.3.10.
- [Release notes](https://github.com/webpack/webpack-cli/releases)
- [Changelog](https://github.com/webpack/webpack-cli/blob/v3.3.10/CHANGELOG.md)
- [Commits](https://github.com/webpack/webpack-cli/compare/v3.3.2...v3.3.10)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-16 07:43:39 +00:00
dependabot-preview[bot]
c04b234be4 Bump copy-webpack-plugin from 5.0.5 to 5.1.1
Bumps [copy-webpack-plugin](https://github.com/webpack-contrib/copy-webpack-plugin) from 5.0.5 to 5.1.1.
- [Release notes](https://github.com/webpack-contrib/copy-webpack-plugin/releases)
- [Changelog](https://github.com/webpack-contrib/copy-webpack-plugin/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/copy-webpack-plugin/compare/v5.0.5...v5.1.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-16 07:42:53 +00:00
dependabot-preview[bot]
6113121d53 Bump elm-pep from 1.0.2 to 1.0.3
Bumps [elm-pep](https://github.com/ahocevar/elm-pep) from 1.0.2 to 1.0.3.
- [Release notes](https://github.com/ahocevar/elm-pep/releases)
- [Commits](https://github.com/ahocevar/elm-pep/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-16 07:42:11 +00:00
dependabot-preview[bot]
e9e6868b5c Bump eslint from 6.7.1 to 6.7.2
Bumps [eslint](https://github.com/eslint/eslint) from 6.7.1 to 6.7.2.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/master/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v6.7.1...v6.7.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-16 07:41:33 +00:00
dependabot-preview[bot]
21fbf29b67 Bump marked from 0.7.0 to 0.8.0
Bumps [marked](https://github.com/markedjs/marked) from 0.7.0 to 0.8.0.
- [Release notes](https://github.com/markedjs/marked/releases)
- [Commits](https://github.com/markedjs/marked/compare/v0.7.0...v0.8.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-16 07:40:44 +00:00
dependabot-preview[bot]
ac7a98933e Bump url-polyfill from 1.1.5 to 1.1.7
Bumps [url-polyfill](https://github.com/lifaon74/url-polyfill) from 1.1.5 to 1.1.7.
- [Release notes](https://github.com/lifaon74/url-polyfill/releases)
- [Commits](https://github.com/lifaon74/url-polyfill/commits/1.1.7)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-16 07:39:51 +00:00
dependabot-preview[bot]
67a8afd4ac Bump rollup-plugin-terser from 5.1.2 to 5.1.3
Bumps [rollup-plugin-terser](https://github.com/TrySound/rollup-plugin-terser) from 5.1.2 to 5.1.3.
- [Release notes](https://github.com/TrySound/rollup-plugin-terser/releases)
- [Commits](https://github.com/TrySound/rollup-plugin-terser/compare/v5.1.2...v5.1.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-16 07:39:02 +00:00
dependabot-preview[bot]
7d90b5ffb7 Bump terser-webpack-plugin from 2.2.2 to 2.3.0
Bumps [terser-webpack-plugin](https://github.com/webpack-contrib/terser-webpack-plugin) from 2.2.2 to 2.3.0.
- [Release notes](https://github.com/webpack-contrib/terser-webpack-plugin/releases)
- [Changelog](https://github.com/webpack-contrib/terser-webpack-plugin/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/terser-webpack-plugin/compare/v2.2.2...v2.3.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-16 07:38:09 +00:00
dependabot-preview[bot]
ad6247fc6a Bump rollup from 1.27.9 to 1.27.13
Bumps [rollup](https://github.com/rollup/rollup) from 1.27.9 to 1.27.13.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v1.27.9...v1.27.13)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-16 07:37:18 +00:00
dependabot-preview[bot]
b39cb7c00e Bump babel-loader from 8.0.5 to 8.0.6
Bumps [babel-loader](https://github.com/babel/babel-loader) from 8.0.5 to 8.0.6.
- [Release notes](https://github.com/babel/babel-loader/releases)
- [Changelog](https://github.com/babel/babel-loader/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel-loader/compare/v8.0.5...v8.0.6)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-16 07:36:32 +00:00
mike-000
3bf1931f39 Replace Bing layer with MapTiler 2019-12-15 16:15:51 +00:00
mike-000
122140e9f0 Replace Bing layer with MapTiler 2019-12-15 16:04:46 +00:00
Andreas Hocevar
4c0bdda8b8 Merge pull request #10415 from mike-000/patch-1
Control button span element pointer events
2019-12-14 23:42:12 +01:00
mike-000
ab8e80fc98 Control button span element pointer events
Prevent pointer events on span elements within control buttons
2019-12-14 13:47:05 +00:00
Olivier Guyot
4a8a7619d5 Merge pull request #10409 from jahow/fix-heatmap-pixelratio
Improve viewport computation in WebGL Postprocessing
2019-12-13 12:13:17 +01:00
Olivier Guyot
cae32edb02 WebGL Postprocess / fix viewport computation with pixelratio != 1 2019-12-13 10:34:31 +01:00
Olivier Guyot
ca0ce4986d Merge pull request #10119 from mike-000/patch-8
Add crossOrigin option to ol/format/KML for icons
2019-12-13 09:26:56 +01:00
Olivier Guyot
6537fecc69 Merge pull request #10181 from roemhildtg/master
add tags to example docs
2019-12-13 09:25:50 +01:00
Gregg Roemhildt
f8b145f82a Using label classes on the anchor
Co-Authored-By: Olivier Guyot <olivier.guyot@camptocamp.com>
2019-12-12 20:03:21 -06:00
mike-000
6596a988c0 Add crossOrigin option for icons
Avoid unnecessary tests by using only one test for the default icon crossOrigin,.  In other cases ensure that the specified option is set.
2019-12-12 17:50:50 +00:00
mike-000
f13ebbee3f Add crossOrigin option for icons
Add  * @this {KML} to functions invoked using .call
2019-12-12 17:21:14 +00:00
Andreas Hocevar
6684bc221a Merge pull request #10407 from ahocevar/renderfeature-extent
Use render feature compatible extent check
2019-12-12 08:42:59 +01:00
Andreas Hocevar
c1857efd81 Use render feature compatible extent check 2019-12-11 22:21:15 +01:00
Andreas Hocevar
8e0a8114d7 Merge pull request #10340 from mike-000/patch-7
Draw circles and custom geometry in user coordinates
2019-12-11 10:07:12 +01:00
mike-000
2e544cb677 Circles and custom geometry in user coordinates
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
2019-12-10 19:47:37 +00:00
Andreas Hocevar
e361391503 Merge pull request #10393 from ahocevar/vectortile-getfeaturesinextent
getFeaturesInExtent function for ol/source/VectorTile
2019-12-10 15:24:54 +01:00
Andreas Hocevar
bbc1de280d getFeaturesInExtent() for VectorTile source 2019-12-10 14:07:37 +01:00
Andreas Hocevar
f460198850 Simpler tileLoadFunction for vector tiles 2019-12-10 13:50:35 +01:00
Andreas Hocevar
f52f72dd96 Merge pull request #10402 from ahocevar/no-preventdefault
Do not preventDefault on pointerdown
2019-12-10 13:40:53 +01:00
Andreas Hocevar
8911b96d3c Do not preventDefault on pointerdown 2019-12-10 12:25:23 +01:00
Andreas Hocevar
38b278339d Merge pull request #10269 from mike-000/patch-2
Replace the BNG layer source in the Raster Reprojection example
2019-12-10 09:20:50 +01:00
Andreas Hocevar
02b34a4c23 Merge pull request #10394 from ahocevar/cleanup-maprenderer
Remove map renderer element when disposing
2019-12-09 09:30:55 +01:00
Andreas Hocevar
ff02dd6653 Merge pull request #10391 from ahocevar/box-shadow
Use box-shadow css instead of filter
2019-12-09 09:29:47 +01:00
Andreas Hocevar
dc3e515c0e Merge pull request #10392 from ahocevar/interim-vectortiles
Fix interim tile handing for vector tiles
2019-12-09 09:29:01 +01:00
Frédéric Junod
9939f082d0 Merge pull request #10399 from openlayers/dependabot/npm_and_yarn/rollup-1.27.9
Bump rollup from 1.25.1 to 1.27.9
2019-12-09 08:57:31 +01:00
Frédéric Junod
36deaf9fd1 Merge pull request #10398 from openlayers/dependabot/npm_and_yarn/terser-webpack-plugin-2.2.2
Bump terser-webpack-plugin from 2.2.1 to 2.2.2
2019-12-09 08:57:05 +01:00
Frédéric Junod
211368436f Merge pull request #10397 from openlayers/dependabot/npm_and_yarn/babel/core-7.7.5
Bump @babel/core from 7.7.4 to 7.7.5
2019-12-09 08:56:38 +01:00
Frédéric Junod
c3773c1419 Merge pull request #10396 from openlayers/dependabot/npm_and_yarn/babel/preset-env-7.7.6
Bump @babel/preset-env from 7.7.4 to 7.7.6
2019-12-09 08:56:10 +01:00
dependabot-preview[bot]
dcadbf374a Bump rollup from 1.25.1 to 1.27.9
Bumps [rollup](https://github.com/rollup/rollup) from 1.25.1 to 1.27.9.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v1.25.1...v1.27.9)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-09 07:33:33 +00:00
dependabot-preview[bot]
29d34b8694 Bump terser-webpack-plugin from 2.2.1 to 2.2.2
Bumps [terser-webpack-plugin](https://github.com/webpack-contrib/terser-webpack-plugin) from 2.2.1 to 2.2.2.
- [Release notes](https://github.com/webpack-contrib/terser-webpack-plugin/releases)
- [Changelog](https://github.com/webpack-contrib/terser-webpack-plugin/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/terser-webpack-plugin/compare/v2.2.1...v2.2.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-09 07:32:31 +00:00
dependabot-preview[bot]
da2d743023 Bump @babel/core from 7.7.4 to 7.7.5
Bumps [@babel/core](https://github.com/babel/babel) from 7.7.4 to 7.7.5.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.7.4...v7.7.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-09 07:31:51 +00:00
dependabot-preview[bot]
c3d31c796f Bump @babel/preset-env from 7.7.4 to 7.7.6
Bumps [@babel/preset-env](https://github.com/babel/babel) from 7.7.4 to 7.7.6.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.7.4...v7.7.6)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-09 07:30:48 +00:00
Andreas Hocevar
cefc57622b Remove map renderer element when disposing 2019-12-08 17:52:28 +01:00
Andreas Hocevar
5f6ea987a5 Merge pull request #10380 from mike-000/patch-5
Adjust examples for layer canvas pixel ratio and rotation
2019-12-07 16:52:26 +01:00
Andreas Hocevar
174dea3232 Fix interim tile handing for vector tiles 2019-12-07 15:18:18 +01:00
Andreas Hocevar
d86d4db813 Use boxe-shadow css instead of filter 2019-12-07 13:53:28 +01:00
Frédéric Junod
f9f8f9c7c5 Merge pull request #10384 from mike-000/patch-4
Include Transform typedef in API
2019-12-06 09:42:00 +01:00
Andreas Hocevar
29c55aacae Merge pull request #10385 from walkermatt/rbush
Import transpiled rbush
2019-12-05 17:06:24 +01:00
Matt Walker
a389903749 Import transpiled rbush. Resolves #10379 2019-12-05 12:09:42 +00:00
mike-000
35b2a92c10 Include Transform typedef in API 2019-12-05 12:06:03 +00:00
mike-000
2790d50660 Adjust for layer canvas rotation
replace missed lines
2019-12-04 23:47:12 +00:00
mike-000
b4ae4ab86f Adjust for layer canvas rotation 2019-12-04 23:08:29 +00:00
mike-000
aaae50e689 Adjust for layer canvas pixel ratio and rotation 2019-12-04 23:04:44 +00:00
mike-000
10f9a70d5f Adjust for layer canvas pixel ratio and rotation 2019-12-04 22:59:16 +00:00
Andreas Hocevar
fb73bbaa00 Merge pull request #10363 from ahocevar/svg-layer
Interactive SVG layer example
2019-12-03 14:51:37 +01:00
Andreas Hocevar
d3b492d175 Interactive SVG layer example 2019-12-03 14:39:44 +01:00
Olivier Guyot
3530b4cf12 Merge pull request #10120 from mike-000/patch-9
Resolve constraints using anchor if following a cancelled animation
2019-12-03 09:37:48 +01:00
Tim Schaub
b1ebd03244 Merge pull request #10365 from openlayers/dependabot/npm_and_yarn/babel/preset-env-7.7.4
Bump @babel/preset-env from 7.6.3 to 7.7.4
2019-12-02 14:37:57 -07:00
Tim Schaub
f6bb0a3ad6 Merge pull request #10366 from openlayers/dependabot/npm_and_yarn/karma-coverage-istanbul-reporter-2.1.1
Bump karma-coverage-istanbul-reporter from 2.1.0 to 2.1.1
2019-12-02 14:37:37 -07:00
Tim Schaub
b1b3544f4d Merge pull request #10367 from openlayers/dependabot/npm_and_yarn/coveralls-3.0.9
Bump coveralls from 3.0.7 to 3.0.9
2019-12-02 14:37:16 -07:00
Tim Schaub
3865a7c23a Merge pull request #10368 from openlayers/dependabot/npm_and_yarn/sinon-7.5.0
Bump sinon from 7.3.2 to 7.5.0
2019-12-02 14:36:48 -07:00
Tim Schaub
3f82a8be77 Merge pull request #10369 from openlayers/dependabot/npm_and_yarn/babel/core-7.7.4
Bump @babel/core from 7.7.2 to 7.7.4
2019-12-02 14:36:21 -07:00
Tim Schaub
611946aa6f Merge pull request #10370 from mike-000/patch-5
Replace Bing layer with MapTiler
2019-12-02 14:35:29 -07:00
mike-000
aaebab2831 Replace Bing layer with MapTiler 2019-12-02 16:40:16 +00:00
dependabot-preview[bot]
66c1112c84 Bump @babel/core from 7.7.2 to 7.7.4
Bumps [@babel/core](https://github.com/babel/babel) from 7.7.2 to 7.7.4.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.7.2...v7.7.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-02 07:31:50 +00:00
dependabot-preview[bot]
45d1e8f032 Bump sinon from 7.3.2 to 7.5.0
Bumps [sinon](https://github.com/sinonjs/sinon) from 7.3.2 to 7.5.0.
- [Release notes](https://github.com/sinonjs/sinon/releases)
- [Changelog](https://github.com/sinonjs/sinon/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sinonjs/sinon/compare/v7.3.2...v7.5.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-02 07:31:23 +00:00
dependabot-preview[bot]
05169ccd1f Bump coveralls from 3.0.7 to 3.0.9
Bumps [coveralls](https://github.com/nickmerwin/node-coveralls) from 3.0.7 to 3.0.9.
- [Release notes](https://github.com/nickmerwin/node-coveralls/releases)
- [Commits](https://github.com/nickmerwin/node-coveralls/commits/3.0.9)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-02 07:30:40 +00:00
dependabot-preview[bot]
bcaf3b5a9b Bump karma-coverage-istanbul-reporter from 2.1.0 to 2.1.1
Bumps [karma-coverage-istanbul-reporter](https://github.com/mattlewis92/karma-coverage-istanbul-reporter) from 2.1.0 to 2.1.1.
- [Release notes](https://github.com/mattlewis92/karma-coverage-istanbul-reporter/releases)
- [Changelog](https://github.com/mattlewis92/karma-coverage-istanbul-reporter/blob/master/CHANGELOG.md)
- [Commits](https://github.com/mattlewis92/karma-coverage-istanbul-reporter/compare/v2.1.0...v2.1.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-02 07:30:08 +00:00
dependabot-preview[bot]
8e9c8e8707 Bump @babel/preset-env from 7.6.3 to 7.7.4
Bumps [@babel/preset-env](https://github.com/babel/babel) from 7.6.3 to 7.7.4.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.6.3...v7.7.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-02 07:29:21 +00:00
Andreas Hocevar
c70e385398 Merge pull request #10362 from ahocevar/leftover-from-10332
Remove line that was accidently added with #10332
2019-12-01 11:34:32 +01:00
Andreas Hocevar
2b6925dc1e Remove line that was accidently added with #10332 2019-11-30 18:16:54 +01:00
Andreas Hocevar
057650fe7d Merge pull request #10309 from ahocevar/vectortile-rendermode-vector
Bring back vector render mode for vector tile layers
2019-11-29 11:51:38 +01:00
Andreas Hocevar
10a6284b0b Merge pull request #10332 from ahocevar/no-touch-action-css
Conditional default prevention instead of touch-action: none
2019-11-29 09:52:29 +01:00
Andreas Hocevar
f0a32e11d5 Fix typo
Co-Authored-By: Frédéric Junod <frederic.junod@camptocamp.com>
2019-11-29 09:46:46 +01:00
Andreas Hocevar
0a319ea2a2 Merge pull request #10301 from ahocevar/getfeatures-fixes
Create hit detection data per layer and without requestAnimationFrame
2019-11-29 09:44:09 +01:00
Andreas Hocevar
75103e08ed Merge pull request #10347 from adube/utfgrid-source-handle-load-state-loaded
Set utfgrid tile as loaded after load instead of empty
2019-11-27 18:14:09 +01:00
Alexandre Dubé
d87caed50f Set utfgrid tile as loaded after load instead of empty 2019-11-27 11:37:52 -05:00
Andreas Hocevar
cda01cfeb9 Merge pull request #10344 from ahocevar/preemptive-tilejson
Fix lazy UTFGrid loading
2019-11-27 10:21:30 +01:00
Andreas Hocevar
79074d31c1 Fix lazy UTFGrid loading 2019-11-27 09:44:43 +01:00
Andreas Hocevar
e2c4670d6a Merge pull request #10321 from greggian/touch-dragbox
Support touch events for DragBox interaction
2019-11-26 18:34:28 +01:00
Andreas Hocevar
e881e4bb99 Merge pull request #10315 from mike-000/patch-5
Replace Bing sources in some examples
2019-11-26 18:32:44 +01:00
mike-000
28818e5b4e Replace Bing layers with MapTiler 2019-11-26 17:06:14 +00:00
Andreas Hocevar
a66734dd20 Merge pull request #10330 from greggian/modify-circle
Fix modifying circle geometries
2019-11-26 17:42:33 +01:00
Andreas Hocevar
7c4c4c47ec Merge pull request #10337 from openlayers/dependabot/npm_and_yarn/fs-extra-8.1.0
Bump fs-extra from 8.0.1 to 8.1.0
2019-11-25 10:23:14 +01:00
Andreas Hocevar
0e18a7007f Merge pull request #10336 from openlayers/dependabot/npm_and_yarn/eslint-6.7.1
Bump eslint from 6.6.0 to 6.7.1
2019-11-25 10:22:45 +01:00
dependabot-preview[bot]
ec7fc3e680 Bump eslint from 6.6.0 to 6.7.1
Bumps [eslint](https://github.com/eslint/eslint) from 6.6.0 to 6.7.1.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/master/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v6.6.0...v6.7.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-25 08:42:51 +00:00
Andreas Hocevar
354d9aea8b Merge pull request #10335 from openlayers/dependabot/npm_and_yarn/yargs-15.0.2
Bump yargs from 14.2.0 to 15.0.2
2019-11-25 09:40:44 +01:00
Andreas Hocevar
3e7d0650b1 Merge pull request #10334 from openlayers/dependabot/npm_and_yarn/webpack-dev-middleware-3.7.2
Bump webpack-dev-middleware from 3.6.2 to 3.7.2
2019-11-25 09:40:09 +01:00
Andreas Hocevar
36586ec4a1 Merge pull request #10333 from openlayers/dependabot/npm_and_yarn/copy-webpack-plugin-5.0.5
Bump copy-webpack-plugin from 5.0.4 to 5.0.5
2019-11-25 09:39:42 +01:00
dependabot-preview[bot]
46f32d2387 Bump fs-extra from 8.0.1 to 8.1.0
Bumps [fs-extra](https://github.com/jprichardson/node-fs-extra) from 8.0.1 to 8.1.0.
- [Release notes](https://github.com/jprichardson/node-fs-extra/releases)
- [Changelog](https://github.com/jprichardson/node-fs-extra/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jprichardson/node-fs-extra/commits/8.1.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-25 07:33:37 +00:00
dependabot-preview[bot]
6e3fd19b89 Bump yargs from 14.2.0 to 15.0.2
Bumps [yargs](https://github.com/yargs/yargs) from 14.2.0 to 15.0.2.
- [Release notes](https://github.com/yargs/yargs/releases)
- [Changelog](https://github.com/yargs/yargs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/yargs/yargs/compare/v14.2.0...v15.0.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-25 07:32:19 +00:00
dependabot-preview[bot]
0d4bbd69fc Bump webpack-dev-middleware from 3.6.2 to 3.7.2
Bumps [webpack-dev-middleware](https://github.com/webpack/webpack-dev-middleware) from 3.6.2 to 3.7.2.
- [Release notes](https://github.com/webpack/webpack-dev-middleware/releases)
- [Changelog](https://github.com/webpack/webpack-dev-middleware/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack/webpack-dev-middleware/compare/v3.6.2...v3.7.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-25 07:31:27 +00:00
dependabot-preview[bot]
6906784319 Bump copy-webpack-plugin from 5.0.4 to 5.0.5
Bumps [copy-webpack-plugin](https://github.com/webpack-contrib/copy-webpack-plugin) from 5.0.4 to 5.0.5.
- [Release notes](https://github.com/webpack-contrib/copy-webpack-plugin/releases)
- [Changelog](https://github.com/webpack-contrib/copy-webpack-plugin/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/copy-webpack-plugin/compare/v5.0.4...v5.0.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-25 07:30:37 +00:00
Andreas Hocevar
88b8b2f7cb Conditional default prevention instead of touch-action: none 2019-11-25 01:09:05 +01:00
Greg Gianforcaro
6bada6ab98 Add test modifying circle with snap enabled 2019-11-23 16:11:27 -05:00
Greg Gianforcaro
93d3ddb033 Fix modifying circle geometries
The Snap interaction may have altered the event coordinate, so Modify
should use the event coordinate whenever available.

Resolves #10316
2019-11-23 00:36:42 -05:00
Greg Gianforcaro
d99c77b992 Update DragBox jsdoc
- 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
2019-11-22 16:35:31 -05:00
Andreas Hocevar
0ed57b8b7c Merge pull request #10318 from ahocevar/elm-pep
Use a minimalist pointer events polyfill
2019-11-21 14:45:34 +01:00
Andreas Hocevar
a990b8e0bf Merge pull request #10322 from mike-000/patch-6
Update tile grid option descriptions
2019-11-21 00:10:27 +01:00
mike-000
8865f22020 Fix trailing space 2019-11-20 18:28:59 +00:00
mike-000
fb7060a4d0 Update tile grid option descriptions
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.
2019-11-20 18:15:31 +00:00
mike-000
c3153075b2 Update tile grid option descriptions
In version 6 coordinate increase downwards.  Add a description for "sizes"
2019-11-20 18:02:42 +00:00
Greg Gianforcaro
2df22af3ca Update DragBox to use only condition for filtering
- Remove mouseOnly and mouseActionButton hardcoded filters
- Default condition to mouseActionButton
2019-11-20 11:01:57 -05:00
Andreas Hocevar
ae1e8b662d Update package-lock.json 2019-11-20 07:59:32 +01:00
Andreas Hocevar
569deddd06 Use elm-pep instead of PEP as pointer events polyfill 2019-11-20 07:59:32 +01:00
Andreas Hocevar
3e31551962 Improved tests 2019-11-20 00:52:18 +01:00
Andreas Hocevar
9317ad850e Create hit detection data per layer and without requestAnimationFrame 2019-11-20 00:50:43 +01:00
Andreas Hocevar
32932a7fd3 Merge pull request #10308 from ahocevar/hitdetect-index
Fix feature lookup after removal of alpha
2019-11-19 08:46:55 +01:00
Olivier Guyot
5d61d556a0 Merge pull request #10310 from brianhelba/overview-rotation
Ensure that OverviewMap respects the initial rotation of attached Maps
2019-11-18 16:40:54 +01:00
Brian Helba
c5ad886d7c Ensure that OverviewMap respects the initial rotation of attached Maps 2019-11-18 05:33:28 -05:00
Andreas Hocevar
cf6cd09f58 Bring back vector render mode for vector tile layers 2019-11-18 10:40:05 +01:00
Andreas Hocevar
3f8164250c Merge pull request #10306 from openlayers/dependabot/npm_and_yarn/puppeteer-2.0.0
Bump puppeteer from 1.20.0 to 2.0.0
2019-11-18 10:33:25 +01:00
Andreas Hocevar
bb6c02ae57 Update reference images 2019-11-18 10:19:53 +01:00
dependabot-preview[bot]
e5f5177969 Bump puppeteer from 1.20.0 to 2.0.0
Bumps [puppeteer](https://github.com/GoogleChrome/puppeteer) from 1.20.0 to 2.0.0.
- [Release notes](https://github.com/GoogleChrome/puppeteer/releases)
- [Commits](https://github.com/GoogleChrome/puppeteer/compare/v1.20.0...v2.0.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-18 08:45:04 +00:00
Andreas Hocevar
b2e5098311 Merge pull request #10307 from openlayers/dependabot/npm_and_yarn/babel/core-7.7.2
Bump @babel/core from 7.6.4 to 7.7.2
2019-11-18 09:43:34 +01:00
Andreas Hocevar
31854fd882 Merge pull request #10305 from openlayers/dependabot/npm_and_yarn/proj4-2.6.0
Bump proj4 from 2.5.0 to 2.6.0
2019-11-18 09:43:03 +01:00
Andreas Hocevar
331dd7e1d7 Merge pull request #10304 from openlayers/dependabot/npm_and_yarn/handlebars-4.5.3
Bump handlebars from 4.4.5 to 4.5.3
2019-11-18 09:42:31 +01:00
Andreas Hocevar
ff17156c8f Merge pull request #10303 from openlayers/dependabot/npm_and_yarn/glob-7.1.6
Bump glob from 7.1.5 to 7.1.6
2019-11-18 09:42:04 +01:00
Andreas Hocevar
a75c18330d Merge pull request #10302 from ahocevar/sign
Do not use Math.sign() to support very old browsers
2019-11-18 08:58:35 +01:00
Andreas Hocevar
d0b4967ec0 Fix feature lookup after removal of alpha 2019-11-18 08:56:20 +01:00
dependabot-preview[bot]
b6185981c0 Bump @babel/core from 7.6.4 to 7.7.2
Bumps [@babel/core](https://github.com/babel/babel) from 7.6.4 to 7.7.2.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.6.4...v7.7.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-18 07:38:30 +00:00
dependabot-preview[bot]
90bb31d81e Bump proj4 from 2.5.0 to 2.6.0
Bumps [proj4](https://github.com/proj4js/proj4js) from 2.5.0 to 2.6.0.
- [Release notes](https://github.com/proj4js/proj4js/releases)
- [Changelog](https://github.com/proj4js/proj4js/blob/master/changelog.md)
- [Commits](https://github.com/proj4js/proj4js/compare/2.5.0...2.6.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-18 07:37:19 +00:00
dependabot-preview[bot]
4aabfb694d Bump handlebars from 4.4.5 to 4.5.3
Bumps [handlebars](https://github.com/wycats/handlebars.js) from 4.4.5 to 4.5.3.
- [Release notes](https://github.com/wycats/handlebars.js/releases)
- [Changelog](https://github.com/wycats/handlebars.js/blob/master/release-notes.md)
- [Commits](https://github.com/wycats/handlebars.js/compare/v4.4.5...v4.5.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-18 07:36:47 +00:00
dependabot-preview[bot]
1641114c6a Bump glob from 7.1.5 to 7.1.6
Bumps [glob](https://github.com/isaacs/node-glob) from 7.1.5 to 7.1.6.
- [Release notes](https://github.com/isaacs/node-glob/releases)
- [Changelog](https://github.com/isaacs/node-glob/blob/master/changelog.md)
- [Commits](https://github.com/isaacs/node-glob/compare/v7.1.5...v7.1.6)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-18 07:35:46 +00:00
Andreas Hocevar
3cca945002 Do not use Math.sign() to support very old browsers 2019-11-18 07:54:20 +01:00
Andreas Hocevar
f784fe6e42 Merge pull request #10295 from ahocevar/hitdetect-no-style
Do not fail when hit detecting  features without style
2019-11-14 16:03:13 +01:00
Andreas Hocevar
fcd98774a0 Do not fail when hit detecting features without style 2019-11-14 14:32:11 +01:00
Andreas Hocevar
54c86b1a04 Merge pull request #10293 from ahocevar/vectortile-getfeatures
Do not hit detect while tile is loading
2019-11-14 11:03:35 +01:00
Andreas Hocevar
818113e3ce Do not hit detect while tile is loading 2019-11-14 10:30:13 +01:00
Frédéric Junod
47216505de Merge pull request #10292 from jomue/patch-1
Fix typo in jsdoc in ol/source/WMTS
2019-11-14 09:11:21 +01:00
Andreas Hocevar
0a4c9edde7 Merge pull request #10291 from ahocevar/tabindex
tabindex without focus condition
2019-11-14 09:07:37 +01:00
Andreas Hocevar
30c4ce51b2 Merge pull request #10286 from ahocevar/passive
Use passive option to avoid Chrome warning
2019-11-14 09:06:50 +01:00
Jonas
5dbd1e4cbb Fix typo in jsdoc 2019-11-14 08:50:35 +01:00
Andreas Hocevar
643a3ad86b tabindex without focux condition 2019-11-13 23:24:53 +01:00
Andreas Hocevar
fab8a449c3 Use passive option to avoid Chrome warning 2019-11-13 11:08:44 +01:00
Tim Schaub
8b036ba96c Merge pull request #10285 from mike-000/patch-3
Fix WMS GetLegendGraphic example codesandbox error
2019-11-12 21:14:11 -07:00
mike-000
4fb301e3e5 Fix codesandbox error
src="" is not needed and causes an error when the example is opened in codesandbox
2019-11-12 16:38:14 +00:00
Frédéric Junod
9478cb1945 Merge pull request #10283 from fredj/targetNotEditable
Use the originalEvent in the targetNotEditable condition
2019-11-12 08:24:20 +01:00
Andreas Hocevar
86b2026f54 Merge pull request #10280 from openlayers/dependabot/npm_and_yarn/rollup-plugin-commonjs-10.1.0
Bump rollup-plugin-commonjs from 10.0.0 to 10.1.0
2019-11-11 20:13:40 +01:00
Andreas Hocevar
c7a0512397 Merge pull request #10279 from openlayers/dependabot/npm_and_yarn/rollup-plugin-terser-5.1.2
Bump rollup-plugin-terser from 5.0.0 to 5.1.2
2019-11-11 20:13:10 +01:00
Andreas Hocevar
e1f707145b Merge pull request #10278 from openlayers/dependabot/npm_and_yarn/eslint-6.6.0
Bump eslint from 6.0.0 to 6.6.0
2019-11-11 20:12:36 +01:00
Andreas Hocevar
434096ed9a Merge pull request #10277 from openlayers/dependabot/npm_and_yarn/karma-webpack-4.0.2
Bump karma-webpack from 4.0.0-rc.6 to 4.0.2
2019-11-11 20:11:59 +01:00
Andreas Hocevar
241e695f7f Merge pull request #10276 from openlayers/dependabot/npm_and_yarn/webpack-dev-server-3.9.0
Bump webpack-dev-server from 3.3.1 to 3.9.0
2019-11-11 20:11:25 +01:00
Frederic Junod
fc7cb5cd51 Use the originalEvent in the targetNotEditable condition 2019-11-11 14:41:39 +01:00
Frédéric Junod
79a3091ba4 Merge pull request #10282 from jansule/patch-1
Fix documentation of Stroke.lineDash default value
2019-11-11 12:41:40 +01:00
Jan Suleiman
2581252f88 Fix documentation of Stroke.lineDash default value
Documentation states that default value of lineDash is `undefined`, but it is `null` actually.
2019-11-11 11:39:26 +01:00
dependabot-preview[bot]
e016af83ee Bump rollup-plugin-commonjs from 10.0.0 to 10.1.0
Bumps [rollup-plugin-commonjs](https://github.com/rollup/rollup-plugin-commonjs) from 10.0.0 to 10.1.0.
- [Release notes](https://github.com/rollup/rollup-plugin-commonjs/releases)
- [Changelog](https://github.com/rollup/rollup-plugin-commonjs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup-plugin-commonjs/compare/v10.0.0...v10.1.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-11 10:17:57 +00:00
dependabot-preview[bot]
b65249326f Bump rollup-plugin-terser from 5.0.0 to 5.1.2
Bumps [rollup-plugin-terser](https://github.com/TrySound/rollup-plugin-terser) from 5.0.0 to 5.1.2.
- [Release notes](https://github.com/TrySound/rollup-plugin-terser/releases)
- [Commits](https://github.com/TrySound/rollup-plugin-terser/compare/v5.0.0...v5.1.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-11 10:16:50 +00:00
dependabot-preview[bot]
5c24fc8514 Bump eslint from 6.0.0 to 6.6.0
Bumps [eslint](https://github.com/eslint/eslint) from 6.0.0 to 6.6.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/master/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v6.0.0...v6.6.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-11 10:15:53 +00:00
dependabot-preview[bot]
0c052bf67c Bump karma-webpack from 4.0.0-rc.6 to 4.0.2
Bumps [karma-webpack](https://github.com/webpack-contrib/karma-webpack) from 4.0.0-rc.6 to 4.0.2.
- [Release notes](https://github.com/webpack-contrib/karma-webpack/releases)
- [Changelog](https://github.com/webpack-contrib/karma-webpack/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/karma-webpack/compare/v4.0.0-rc.6...v4.0.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-11 10:14:56 +00:00
dependabot-preview[bot]
ecb42824f2 Bump webpack-dev-server from 3.3.1 to 3.9.0
Bumps [webpack-dev-server](https://github.com/webpack/webpack-dev-server) from 3.3.1 to 3.9.0.
- [Release notes](https://github.com/webpack/webpack-dev-server/releases)
- [Changelog](https://github.com/webpack/webpack-dev-server/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack/webpack-dev-server/compare/v3.3.1...v3.9.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-11 10:13:46 +00:00
mike-000
cf72a649cc Replace BNG layer source
The MapTiler MiniScale source used for the BNG layer is no longer working.  The data continues to be available via ESRI UK https://www.arcgis.com/home/item.html?id=5b5ff94ca7414a26b75e0d337a023d38
2019-11-08 15:52:39 +00:00
Frédéric Junod
6fe5c88614 Merge pull request #10259 from fredj/abortDrawing
Remove all the sketch features in abortDrawing
2019-11-08 09:35:33 +01:00
Frédéric Junod
6f6551ad75 Merge pull request #10265 from fredj/update_operators_doc_in_example
Update operators doc in WebGL points layer example
2019-11-07 15:31:05 +01:00
Frederic Junod
59faeff1bf Update operators doc in WebGL points layer example
The text is a copy/paste from `ol/style/expressions`
2019-11-07 15:05:57 +01:00
Andreas Hocevar
366d548b91 Merge pull request #10256 from ahocevar/no-measuretextwidth-bypass
Do not bypass measureTextWidth
2019-11-07 10:30:52 +01:00
Frédéric Junod
222a344ae9 Merge pull request #10264 from fredj/webgl_var
Remove unused variable from vertex shader
2019-11-07 09:22:34 +01:00
Olivier Guyot
3d1cef9aa2 Merge pull request #10257 from brianhelba/patch-1
Allow View.adjust* methods to take a null opt_anchor
2019-11-07 09:10:11 +01:00
Olivier Guyot
3850bd1083 Merge pull request #10261 from jahow/webgl-fix-ff-warning
WebGL / do not throw error when shader compilation gives a warning
2019-11-07 09:09:46 +01:00
Frederic Junod
5c023adc08 Remove unused variable from vertex shader 2019-11-07 09:02:50 +01:00
Olivier Guyot
ae66471e78 Webgl renderer / hide shader compile errors
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.
2019-11-06 21:40:39 +01:00
Frederic Junod
51c9b56254 Remove all the sketch features in abortDrawing 2019-11-06 14:18:55 +01:00
Brian Helba
d90a4569da Allow View.adjust* methods to take a null opt_anchor
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)).
2019-11-05 21:30:17 -05:00
Andreas Hocevar
48ec398037 Do not bypass measureTextWidth 2019-11-05 21:08:48 +01:00
Frédéric Junod
77bc6897dd Merge pull request #10255 from fredj/handleMapBrowserEvent_element_type
Don't use instanceof HTMLElement in handleMapBrowserEvent
2019-11-05 13:55:22 +01:00
Frederic Junod
6978c69f20 Don't use instanceof HTMLElement in handleMapBrowserEvent
Because not all elements in the DOM are instance of `HTMLElement`.
For example, SVGs created with `document.createElementNS` are instances of `Element`.
2019-11-05 11:08:14 +01:00
Andreas Hocevar
146e38c7ef Merge pull request #10251 from openlayers/dependabot/npm_and_yarn/babel/preset-env-7.6.3
Bump @babel/preset-env from 7.4.4 to 7.6.3
2019-11-04 17:50:13 +01:00
Andreas Hocevar
17fa323f50 Merge pull request #10250 from openlayers/dependabot/npm_and_yarn/buble-0.19.8
Bump buble from 0.19.7 to 0.19.8
2019-11-04 17:49:44 +01:00
Andreas Hocevar
a053fac728 Merge pull request #10249 from openlayers/dependabot/npm_and_yarn/karma-firefox-launcher-1.2.0
Bump karma-firefox-launcher from 1.1.0 to 1.2.0
2019-11-04 17:48:37 +01:00
Andreas Hocevar
978d620191 Merge pull request #10248 from openlayers/dependabot/npm_and_yarn/html-to-image-0.1.1
Bump html-to-image from 0.1.0 to 0.1.1
2019-11-04 17:47:54 +01:00
Andreas Hocevar
4e0e34e26b Merge pull request #10247 from openlayers/dependabot/npm_and_yarn/terser-webpack-plugin-2.2.1
Bump terser-webpack-plugin from 2.0.1 to 2.2.1
2019-11-04 17:46:59 +01:00
dependabot-preview[bot]
4f46d8ae32 Bump @babel/preset-env from 7.4.4 to 7.6.3
Bumps [@babel/preset-env](https://github.com/babel/babel) from 7.4.4 to 7.6.3.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.4.4...v7.6.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-04 13:58:18 +00:00
dependabot-preview[bot]
7a2671650f Bump buble from 0.19.7 to 0.19.8
Bumps [buble](https://github.com/bublejs/buble) from 0.19.7 to 0.19.8.
- [Release notes](https://github.com/bublejs/buble/releases)
- [Changelog](https://github.com/bublejs/buble/blob/master/CHANGELOG.md)
- [Commits](https://github.com/bublejs/buble/compare/v0.19.7...v0.19.8)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-04 13:57:39 +00:00
dependabot-preview[bot]
2e2fa241fc Bump karma-firefox-launcher from 1.1.0 to 1.2.0
Bumps [karma-firefox-launcher](https://github.com/karma-runner/karma-firefox-launcher) from 1.1.0 to 1.2.0.
- [Release notes](https://github.com/karma-runner/karma-firefox-launcher/releases)
- [Changelog](https://github.com/karma-runner/karma-firefox-launcher/blob/master/CHANGELOG.md)
- [Commits](https://github.com/karma-runner/karma-firefox-launcher/compare/v1.1.0...v1.2.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-04 13:57:02 +00:00
dependabot-preview[bot]
200763bf97 Bump html-to-image from 0.1.0 to 0.1.1
Bumps [html-to-image](https://github.com/bubkoo/html-to-image) from 0.1.0 to 0.1.1.
- [Release notes](https://github.com/bubkoo/html-to-image/releases)
- [Commits](https://github.com/bubkoo/html-to-image/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-04 13:56:21 +00:00
dependabot-preview[bot]
d11cb02af4 Bump terser-webpack-plugin from 2.0.1 to 2.2.1
Bumps [terser-webpack-plugin](https://github.com/webpack-contrib/terser-webpack-plugin) from 2.0.1 to 2.2.1.
- [Release notes](https://github.com/webpack-contrib/terser-webpack-plugin/releases)
- [Changelog](https://github.com/webpack-contrib/terser-webpack-plugin/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/terser-webpack-plugin/compare/v2.0.1...v2.2.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-04 13:55:46 +00:00
mike-000
f47fa8b407 Add crossOrigin option for icons
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
2019-10-24 11:04:47 +01:00
roemhildtg
9908433cfd add tags to example docs
#10022
2019-10-23 22:06:46 -05:00
mike-000
937f7f613e Resolve constraints using anchor
Resolve constraints using anchor if view state is the result of cancelling an animation with anchor
2019-10-12 21:13:34 +01:00
195 changed files with 11976 additions and 2963 deletions

View File

@@ -11,7 +11,7 @@ jobs:
- restore_cache:
keys:
- v1-dependencies-{{ checksum "package.json" }}
- v1-dependencies-{{ checksum "package-lock.json" }}
- v1-dependencies-
- run:
@@ -21,7 +21,7 @@ jobs:
- save_cache:
paths:
- node_modules
key: v1-dependencies-{{ checksum "package.json" }}
key: v1-dependencies-{{ checksum "package-lock.json" }}
- run:
name: Run Tests

View File

@@ -77,7 +77,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.

View File

@@ -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.

196
changelog/v6.2.0.md Normal file
View File

@@ -0,0 +1,196 @@
# 6.2.0
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))
* [#10591](https://github.com/openlayers/openlayers/pull/10591) - Remove obsolete license notice ([@ahocevar](https://github.com/ahocevar))
* [#10588](https://github.com/openlayers/openlayers/pull/10588) - Sort doc navigation properly and add missing modules ([@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))
* [#10430](https://github.com/openlayers/openlayers/pull/10430) - Offset regular shape ([@Razi91](https://github.com/Razi91))
* [#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))
* [#10392](https://github.com/openlayers/openlayers/pull/10392) - Fix interim tile handing for vector tiles ([@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))
* [#10385](https://github.com/openlayers/openlayers/pull/10385) - Import transpiled rbush ([@walkermatt](https://github.com/walkermatt))
* [#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))
* [#10332](https://github.com/openlayers/openlayers/pull/10332) - Conditional default prevention instead of touch-action: none ([@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))
* [#10344](https://github.com/openlayers/openlayers/pull/10344) - Fix lazy UTFGrid loading ([@ahocevar](https://github.com/ahocevar))
* [#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))
* [#10322](https://github.com/openlayers/openlayers/pull/10322) - Update tile grid option descriptions ([@mike-000](https://github.com/mike-000))
* [#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))
</details>

View File

@@ -34,7 +34,7 @@ Interactions for <a href="module-ol_Feature-Feature.html">vector features</a>
<tr><th>Projections</th><th>Observable objects</th><th>Other components</th></tr>
<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>
<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>
<td>
<a href="module-ol_Geolocation.html">ol/Geolocation</a><br>
<a href="module-ol_Overlay-Overlay.html">ol/Overlay</a><br></td>

View File

@@ -4,7 +4,7 @@
*/
exports.defineTags = function(dictionary) {
dictionary.defineTag('api', {
mustHaveValue: false,
mustNotHaveValue: true,
canHaveType: false,
canHaveName: false,
onTagged: function(doclet, tag) {
@@ -119,7 +119,6 @@ exports.handlers = {
api.push(doclet);
}
if (doclet.kind == 'class') {
modules[doclet.longname.split(/[~\.]/).shift()] = true;
if (!(doclet.longname in classes)) {
classes[doclet.longname] = doclet;
} else if ('augments' in doclet) {

View File

@@ -5,7 +5,7 @@
exports.defineTags = function(dictionary) {
dictionary.defineTag('inheritDoc', {
mustHaveValue: false,
mustNotHaveValue: true,
canHaveType: false,
canHaveName: false,
onTagged: function(doclet, tag) {

View File

@@ -188,6 +188,12 @@ function attachModuleSymbols(doclets, modules) {
});
}
function getPrettyName(longname) {
return longname
.split('~')[0]
.replace('module:', '');
}
/**
* Create the navigation sidebar.
* @param {object} members The members that will be used to create the sidebar.
@@ -206,10 +212,12 @@ function buildNav(members) {
// merge namespaces and classes, then sort
const merged = members.modules.concat(members.classes);
merged.sort(function(a, b) {
if (a.longname > b.longname) {
const prettyNameA = getPrettyName(a.longname).toLowerCase();
const prettyNameB = getPrettyName(b.longname).toLowerCase();
if (prettyNameA > prettyNameB) {
return 1;
}
if (a.longname < b.longname) {
if (prettyNameA < prettyNameB) {
return -1;
}
return 0;
@@ -221,9 +229,7 @@ function buildNav(members) {
nav.push({
type: 'class',
longname: v.longname,
prettyname: v.longname
.split('~')[0]
.replace('module:', ''),
prettyname: getPrettyName(v.longname),
name: v.name,
module: find({
kind: 'module',
@@ -268,14 +274,13 @@ function buildNav(members) {
kind: 'event',
memberof: v.longname
});
// only add modules that have more to show than just a single class
if (classes.length !== 1 && (classes.length + members.length + methods.length + typedefs.length + events.length > 0)) {
// only add modules that have more to show than just classes
const numItems = classes.length - 1 + members.length + methods.length + typedefs.length + events.length;
if (!classes.length || (numItems > 0 && numItems !== classes.length)) {
nav.push({
type: 'module',
longname: v.longname,
prettyname: v.longname
.split('~')[0]
.replace('module:', ''),
prettyname: getPrettyName(v.longname),
name: v.name,
members: members,
methods: methods,

View File

@@ -8,7 +8,7 @@
<th>Name</th>
<th>Type</th>
<th>Settable</th>
<th><a href="module-ol_Object-ObjectEvent.html">ol/Object.ObjectEvent</a> type</th>
<th><a href="module-ol_Object.ObjectEvent.html">ol/Object.ObjectEvent</a> type</th>
<th class="last">Description</th>
</tr>
</thead>

View File

@@ -6,7 +6,7 @@ exports.defineTags = function(dictionary) {
const classTag = dictionary.lookUp('class');
dictionary.defineTag('interface', {
mustHaveValue: false,
mustNotHaveValue: true,
onTagged: function(doclet, tag) {
classTag.onTagged.apply(this, arguments);
doclet.virtual = true;

View File

@@ -111,7 +111,7 @@ Features for `updates` must have an id set by the feature reader or `ol.Feature#
### 28
`renderMode` must be `'image'` or `'hybrid'`.
`renderMode` must be `'image'`, `'hybrid'` or `'vector'`.
### 29
@@ -245,3 +245,7 @@ Layer opacity must be a number.
`forEachFeatureAtCoordinate` cannot be used on a WebGL layer if the hit detection logic has not been enabled.
This is done by providing adequate shaders using the `hitVertexShader` and `hitFragmentShader` properties of `WebGLPointsLayerRenderer`.
### 67
A layer can only be added to the map once. Use either `layer.setMap()` or `map.addLayer()`, not both.

5188
examples/data/world.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 3.2 MiB

View File

@@ -4,10 +4,10 @@ title: Drag-and-Drop Image Vector
shortdesc: Example of using the drag-and-drop interaction with image vector rendering.
docs: >
Example of using the drag-and-drop interaction with an `ol/layer/VectorImage` layer. Drag and drop GPX, GeoJSON, IGC, KML, or TopoJSON files on to the map. Each file is rendered to an image on the client.
tags: "drag-and-drop-image-vector, gpx, geojson, igc, kml, topojson, vector, image"
tags: "drag-and-drop-image-vector, gpx, geojson, igc, kml, topojson, maptiler, vector, image"
cloak:
- key: As1HiMj1PvLPlqc_gtM7AqZfBL8ZL3VrjaS3zIb22Uvb9WKhuJObROC-qUpa81U5
value: Your Bing Maps Key from http://www.bingmapsportal.com/ here
- key: get_your_own_D6rA4zTHduk6KOKTXzGB
value: Get your own API key at https://www.maptiler.com/cloud/
---
<div id="map" class="map"></div>
<div id="info">&nbsp;</div>

View File

@@ -3,7 +3,7 @@ import View from '../src/ol/View.js';
import {GPX, GeoJSON, IGC, KML, TopoJSON} from '../src/ol/format.js';
import {defaults as defaultInteractions, DragAndDrop} from '../src/ol/interaction.js';
import {VectorImage as VectorImageLayer, Tile as TileLayer} from '../src/ol/layer.js';
import {BingMaps, Vector as VectorSource} from '../src/ol/source.js';
import {XYZ, Vector as VectorSource} from '../src/ol/source.js';
const dragAndDropInteraction = new DragAndDrop({
formatConstructors: [
@@ -15,13 +15,18 @@ const dragAndDropInteraction = new DragAndDrop({
]
});
const key = 'get_your_own_D6rA4zTHduk6KOKTXzGB';
const attributions = '<a href="https://www.maptiler.com/copyright/" target="_blank">&copy; MapTiler</a> ' +
'<a href="https://www.openstreetmap.org/copyright" target="_blank">&copy; OpenStreetMap contributors</a>';
const map = new Map({
interactions: defaultInteractions().extend([dragAndDropInteraction]),
layers: [
new TileLayer({
source: new BingMaps({
imagerySet: 'Aerial',
key: 'As1HiMj1PvLPlqc_gtM7AqZfBL8ZL3VrjaS3zIb22Uvb9WKhuJObROC-qUpa81U5'
source: new XYZ({
attributions: attributions,
url: 'https://api.maptiler.com/tiles/satellite/{z}/{x}/{y}.jpg?key=' + key,
maxZoom: 20
})
})
],

View File

@@ -4,10 +4,10 @@ title: Drag-and-Drop
shortdesc: Example of using the drag-and-drop interaction.
docs: >
Example of using the drag-and-drop interaction. Drag and drop GPX, GeoJSON, IGC, KML, or TopoJSON files on to the map. There is no projection transform support, so this will only work with data in EPSG:4326 and EPSG:3857.
tags: "drag-and-drop, gpx, geojson, igc, kml, topojson"
tags: "drag-and-drop, gpx, geojson, igc, kml, topojson, maptiler"
cloak:
- key: As1HiMj1PvLPlqc_gtM7AqZfBL8ZL3VrjaS3zIb22Uvb9WKhuJObROC-qUpa81U5
value: Your Bing Maps Key from http://www.bingmapsportal.com/ here
- key: get_your_own_D6rA4zTHduk6KOKTXzGB
value: Get your own API key at https://www.maptiler.com/cloud/
---
<div id="map" class="map"></div>
<div id="info">&nbsp;</div>

View File

@@ -3,7 +3,7 @@ import View from '../src/ol/View.js';
import {GPX, GeoJSON, IGC, KML, TopoJSON} from '../src/ol/format.js';
import {defaults as defaultInteractions, DragAndDrop} from '../src/ol/interaction.js';
import {Tile as TileLayer, Vector as VectorLayer} from '../src/ol/layer.js';
import {BingMaps, Vector as VectorSource} from '../src/ol/source.js';
import {XYZ, Vector as VectorSource} from '../src/ol/source.js';
const dragAndDropInteraction = new DragAndDrop({
formatConstructors: [
@@ -15,13 +15,18 @@ const dragAndDropInteraction = new DragAndDrop({
]
});
const key = 'get_your_own_D6rA4zTHduk6KOKTXzGB';
const attributions = '<a href="https://www.maptiler.com/copyright/" target="_blank">&copy; MapTiler</a> ' +
'<a href="https://www.openstreetmap.org/copyright" target="_blank">&copy; OpenStreetMap contributors</a>';
const map = new Map({
interactions: defaultInteractions().extend([dragAndDropInteraction]),
layers: [
new TileLayer({
source: new BingMaps({
imagerySet: 'Aerial',
key: 'As1HiMj1PvLPlqc_gtM7AqZfBL8ZL3VrjaS3zIb22Uvb9WKhuJObROC-qUpa81U5'
source: new XYZ({
attributions: attributions,
url: 'https://api.maptiler.com/tiles/satellite/{z}/{x}/{y}.jpg?key=' + key,
maxZoom: 20
})
})
],

View File

@@ -4,8 +4,6 @@ import WKT from '../src/ol/format/WKT.js';
import {Tile as TileLayer, Vector as VectorLayer} from '../src/ol/layer.js';
import {OSM, Vector as VectorSource} from '../src/ol/source.js';
import {toJpeg} from 'html-to-image';
const raster = new TileLayer({
source: new OSM()
});
@@ -44,14 +42,6 @@ const dims = {
};
// export options for html-to-image.
// See: https://github.com/bubkoo/html-to-image#options
const exportOptions = {
filter: function(element) {
return element.className.indexOf('ol-control') === -1;
}
};
const exportButton = document.getElementById('export-pdf');
exportButton.addEventListener('click', function() {
@@ -68,18 +58,28 @@ exportButton.addEventListener('click', function() {
const viewResolution = map.getView().getResolution();
map.once('rendercomplete', function() {
exportOptions.width = width;
exportOptions.height = height;
toJpeg(map.getViewport(), exportOptions).then(function(dataUrl) {
const pdf = new jsPDF('landscape', undefined, format);
pdf.addImage(dataUrl, 'JPEG', 0, 0, dim[0], dim[1]);
pdf.save('map.pdf');
// Reset original map size
map.setSize(size);
map.getView().setResolution(viewResolution);
exportButton.disabled = false;
document.body.style.cursor = 'auto';
const mapCanvas = document.createElement('canvas');
mapCanvas.width = width;
mapCanvas.height = height;
const mapContext = mapCanvas.getContext('2d');
document.querySelectorAll('.ol-layer canvas').forEach(function(canvas) {
if (canvas.width > 0) {
const transform = canvas.style.transform;
// Get the transform parameters from the style's transform matrix
const matrix = transform.match(/^matrix\(([^\(]*)\)$/)[1].split(',').map(Number);
// Apply the transform to the export map context
CanvasRenderingContext2D.prototype.setTransform.apply(mapContext, matrix);
mapContext.drawImage(canvas, 0, 0);
}
});
const pdf = new jsPDF('landscape', undefined, format);
pdf.addImage(mapCanvas.toDataURL('image/jpeg'), 'JPEG', 0, 0, dim[0], dim[1]);
pdf.save('map.pdf');
// Reset original map size
map.setSize(size);
map.getView().setResolution(viewResolution);
exportButton.disabled = false;
document.body.style.cursor = 'auto';
});
// Set print size

View File

@@ -6,10 +6,10 @@ docs: >
This example shows how to use <b>postrender</b> events and a <b>vector context</b> to
animate a marker feature along a line. In this example an encoded polyline
is being used.
tags: "animation, feature, postrender, polyline"
tags: "animation, feature, postrender, polyline, maptiler"
cloak:
- key: As1HiMj1PvLPlqc_gtM7AqZfBL8ZL3VrjaS3zIb22Uvb9WKhuJObROC-qUpa81U5
value: Your Bing Maps Key from http://www.bingmapsportal.com/ here
- key: get_your_own_D6rA4zTHduk6KOKTXzGB
value: Get your own API key at https://www.maptiler.com/cloud/
---
<div id="map" class="map"></div>
<label for="speed">

View File

@@ -4,7 +4,7 @@ import View from '../src/ol/View.js';
import Polyline from '../src/ol/format/Polyline.js';
import Point from '../src/ol/geom/Point.js';
import {Tile as TileLayer, Vector as VectorLayer} from '../src/ol/layer.js';
import BingMaps from '../src/ol/source/BingMaps.js';
import XYZ from '../src/ol/source/XYZ.js';
import VectorSource from '../src/ol/source/Vector.js';
import {Circle as CircleStyle, Fill, Icon, Stroke, Style} from '../src/ol/style.js';
import {getVectorContext} from '../src/ol/render.js';
@@ -121,6 +121,10 @@ const vectorLayer = new VectorLayer({
}
});
const key = 'get_your_own_D6rA4zTHduk6KOKTXzGB';
const attributions = '<a href="https://www.maptiler.com/copyright/" target="_blank">&copy; MapTiler</a> ' +
'<a href="https://www.openstreetmap.org/copyright" target="_blank">&copy; OpenStreetMap contributors</a>';
const center = [-5639523.95, -3501274.52];
const map = new Map({
target: document.getElementById('map'),
@@ -132,9 +136,10 @@ const map = new Map({
}),
layers: [
new TileLayer({
source: new BingMaps({
imagerySet: 'AerialWithLabelsOnDemand',
key: 'As1HiMj1PvLPlqc_gtM7AqZfBL8ZL3VrjaS3zIb22Uvb9WKhuJObROC-qUpa81U5'
source: new XYZ({
attributions: attributions,
url: 'https://api.maptiler.com/maps/hybrid/{z}/{x}/{y}.jpg?key=' + key,
tileSize: 512
})
}),
vectorLayer

View File

@@ -5,9 +5,9 @@ shortdesc: Example of drag rotate and zoom control with full screen effect.
docs: >
<p>Hold down <code>Shift+Drag</code> to rotate and zoom. Click the button in the top right corner to go full screen. Then do the <code>Shift+Drag</code> thing again.</p>
<p>If there is no button on the map, your browser does not support the <a href="http://caniuse.com/#feat=fullscreen">Full Screen API</a>.</p>
tags: "full-screen, drag, rotate, zoom, bing, bing-maps"
tags: "full-screen, drag, rotate, zoom, xyz, maptiler"
cloak:
- key: As1HiMj1PvLPlqc_gtM7AqZfBL8ZL3VrjaS3zIb22Uvb9WKhuJObROC-qUpa81U5
value: Your Bing Maps Key from http://www.bingmapsportal.com/ here
- key: get_your_own_D6rA4zTHduk6KOKTXzGB
value: Get your own API key at https://www.maptiler.com/cloud/
---
<div id="map" class="map"></div>

View File

@@ -3,9 +3,13 @@ import View from '../src/ol/View.js';
import {defaults as defaultControls, FullScreen} from '../src/ol/control.js';
import {defaults as defaultInteractions, DragRotateAndZoom} from '../src/ol/interaction.js';
import TileLayer from '../src/ol/layer/Tile.js';
import BingMaps from '../src/ol/source/BingMaps.js';
import XYZ from '../src/ol/source/XYZ.js';
const key = 'get_your_own_D6rA4zTHduk6KOKTXzGB';
const attributions = '<a href="https://www.maptiler.com/copyright/" target="_blank">&copy; MapTiler</a> ' +
'<a href="https://www.openstreetmap.org/copyright" target="_blank">&copy; OpenStreetMap contributors</a>';
const map = new Map({
controls: defaultControls().extend([
new FullScreen()
@@ -15,13 +19,13 @@ const map = new Map({
]),
layers: [
new TileLayer({
source: new BingMaps({
key: 'As1HiMj1PvLPlqc_gtM7AqZfBL8ZL3VrjaS3zIb22Uvb9WKhuJObROC-qUpa81U5',
imagerySet: 'Aerial'
source: new XYZ({
attributions: attributions,
url: 'https://api.maptiler.com/tiles/satellite/{z}/{x}/{y}.jpg?key=' + key,
maxZoom: 20
})
})
],
// Use the canvas renderer because it's currently the fastest
target: 'map',
view: new View({
center: [-33519607, 5616436],

View File

@@ -5,9 +5,9 @@ shortdesc: Example of a full screen control.
docs: >
<p>Click the control in the top right corner to go full screen. Click it again to exit full screen.</p>
<p>If there is no button on the map, your browser does not support the <a href="http://caniuse.com/#feat=fullscreen">Full Screen API</a>.</p>
tags: "full-screen, bing, bing-maps"
tags: "full-screen, xyz, maptiler"
cloak:
- key: As1HiMj1PvLPlqc_gtM7AqZfBL8ZL3VrjaS3zIb22Uvb9WKhuJObROC-qUpa81U5
value: Your Bing Maps Key from http://www.bingmapsportal.com/ here
- key: get_your_own_D6rA4zTHduk6KOKTXzGB
value: Get your own API key at https://www.maptiler.com/cloud/
---
<div id="map" class="map"></div>

View File

@@ -2,7 +2,7 @@ import Map from '../src/ol/Map.js';
import View from '../src/ol/View.js';
import {defaults as defaultControls, FullScreen} from '../src/ol/control.js';
import TileLayer from '../src/ol/layer/Tile.js';
import BingMaps from '../src/ol/source/BingMaps.js';
import XYZ from '../src/ol/source/XYZ.js';
const view = new View({
@@ -10,15 +10,20 @@ const view = new View({
zoom: 14
});
const key = 'get_your_own_D6rA4zTHduk6KOKTXzGB';
const attributions = '<a href="https://www.maptiler.com/copyright/" target="_blank">&copy; MapTiler</a> ' +
'<a href="https://www.openstreetmap.org/copyright" target="_blank">&copy; OpenStreetMap contributors</a>';
const map = new Map({
controls: defaultControls().extend([
new FullScreen()
]),
layers: [
new TileLayer({
source: new BingMaps({
key: 'As1HiMj1PvLPlqc_gtM7AqZfBL8ZL3VrjaS3zIb22Uvb9WKhuJObROC-qUpa81U5',
imagerySet: 'Aerial'
source: new XYZ({
attributions: attributions,
url: 'https://api.maptiler.com/tiles/satellite/{z}/{x}/{y}.jpg?key=' + key,
maxZoom: 20
})
})
],

View File

@@ -4,10 +4,10 @@ title: GPX Data
shortdesc: Example of using the GPX source.
docs: >
Example of using the GPX source.
tags: "GPX"
tags: "GPX, maptiler"
cloak:
- key: As1HiMj1PvLPlqc_gtM7AqZfBL8ZL3VrjaS3zIb22Uvb9WKhuJObROC-qUpa81U5
value: Your Bing Maps Key from http://www.bingmapsportal.com/ here
- key: get_your_own_D6rA4zTHduk6KOKTXzGB
value: Get your own API key at https://www.maptiler.com/cloud/
---
<div id="map" class="map"></div>
<div id="info">&nbsp;</div>

View File

@@ -2,14 +2,19 @@ import Map from '../src/ol/Map.js';
import View from '../src/ol/View.js';
import GPX from '../src/ol/format/GPX.js';
import {Tile as TileLayer, Vector as VectorLayer} from '../src/ol/layer.js';
import BingMaps from '../src/ol/source/BingMaps.js';
import XYZ from '../src/ol/source/XYZ.js';
import VectorSource from '../src/ol/source/Vector.js';
import {Circle as CircleStyle, Fill, Stroke, Style} from '../src/ol/style.js';
const key = 'get_your_own_D6rA4zTHduk6KOKTXzGB';
const attributions = '<a href="https://www.maptiler.com/copyright/" target="_blank">&copy; MapTiler</a> ' +
'<a href="https://www.openstreetmap.org/copyright" target="_blank">&copy; OpenStreetMap contributors</a>';
const raster = new TileLayer({
source: new BingMaps({
imagerySet: 'Aerial',
key: 'As1HiMj1PvLPlqc_gtM7AqZfBL8ZL3VrjaS3zIb22Uvb9WKhuJObROC-qUpa81U5'
source: new XYZ({
attributions: attributions,
url: 'https://api.maptiler.com/tiles/satellite/{z}/{x}/{y}.jpg?key=' + key,
maxZoom: 20
})
});

View File

@@ -6,10 +6,10 @@ docs: >
<p>Layer rendering can be manipulated in <code>prerender</code> and <code>postrender</code> event listeners.
These listeners get an event with a reference to the Canvas rendering context.
In this example, the <code>postrender</code> listener applies a filter to the image data.</p>
tags: "filter, image manipulation"
tags: "filter, image manipulation, maptiler"
cloak:
- key: As1HiMj1PvLPlqc_gtM7AqZfBL8ZL3VrjaS3zIb22Uvb9WKhuJObROC-qUpa81U5
value: Your Bing Maps Key from http://www.bingmapsportal.com/ here
- key: get_your_own_D6rA4zTHduk6KOKTXzGB
value: Get your own API key at https://www.maptiler.com/cloud/
---
<div id="map" class="map"></div>
<select id="kernel" name="kernel">

View File

@@ -2,12 +2,19 @@ import Map from '../src/ol/Map.js';
import View from '../src/ol/View.js';
import TileLayer from '../src/ol/layer/Tile.js';
import {fromLonLat} from '../src/ol/proj.js';
import BingMaps from '../src/ol/source/BingMaps.js';
import XYZ from '../src/ol/source/XYZ.js';
const key = 'As1HiMj1PvLPlqc_gtM7AqZfBL8ZL3VrjaS3zIb22Uvb9WKhuJObROC-qUpa81U5';
const key = 'get_your_own_D6rA4zTHduk6KOKTXzGB';
const attributions = '<a href="https://www.maptiler.com/copyright/" target="_blank">&copy; MapTiler</a> ' +
'<a href="https://www.openstreetmap.org/copyright" target="_blank">&copy; OpenStreetMap contributors</a>';
const imagery = new TileLayer({
source: new BingMaps({key: key, imagerySet: 'Aerial'})
source: new XYZ({
attributions: attributions,
url: 'https://api.maptiler.com/tiles/satellite/{z}/{x}/{y}.jpg?key=' + key,
maxZoom: 20,
crossOrigin: ''
})
});
const map = new Map({

View File

@@ -1,14 +0,0 @@
---
layout: example.html
title: Interaction Options
shortdesc: Shows interaction options for custom scroll and zoom behavior.
docs: >
This example uses a custom `ol/interaction/defaults` configuration:
by default, wheel/trackpad zoom and drag panning is always active, which
can be unexpected on pages with a lot of scrollable content and an embedded
map. To perform wheel/trackpad zoom and drag-pan actions only when the map
has the focus, set `onFocusOnly: true` as option. This requires a map div
with a `tabindex` attribute set.
tags: "trackpad, mousewheel, zoom, scroll, interaction, fractional"
---
<div tabindex="1" id="map" class="map"></div>

View File

@@ -4,10 +4,10 @@ title: KML
shortdesc: Rendering KML with a vector source.
docs: >
This example uses the <code>ol/format/KML</code> to parse KML for rendering with a vector source.
tags: "KML"
tags: "KML, maptiler"
cloak:
- key: As1HiMj1PvLPlqc_gtM7AqZfBL8ZL3VrjaS3zIb22Uvb9WKhuJObROC-qUpa81U5
value: Your Bing Maps Key from http://www.bingmapsportal.com/ here
- key: get_your_own_D6rA4zTHduk6KOKTXzGB
value: Get your own API key at https://www.maptiler.com/cloud/
---
<div id="map" class="map"></div>
<div id="info">&nbsp;</div>

View File

@@ -2,13 +2,18 @@ import Map from '../src/ol/Map.js';
import View from '../src/ol/View.js';
import KML from '../src/ol/format/KML.js';
import {Tile as TileLayer, Vector as VectorLayer} from '../src/ol/layer.js';
import BingMaps from '../src/ol/source/BingMaps.js';
import XYZ from '../src/ol/source/XYZ.js';
import VectorSource from '../src/ol/source/Vector.js';
const key = 'get_your_own_D6rA4zTHduk6KOKTXzGB';
const attributions = '<a href="https://www.maptiler.com/copyright/" target="_blank">&copy; MapTiler</a> ' +
'<a href="https://www.openstreetmap.org/copyright" target="_blank">&copy; OpenStreetMap contributors</a>';
const raster = new TileLayer({
source: new BingMaps({
imagerySet: 'Aerial',
key: 'As1HiMj1PvLPlqc_gtM7AqZfBL8ZL3VrjaS3zIb22Uvb9WKhuJObROC-qUpa81U5'
source: new XYZ({
attributions: attributions,
url: 'https://api.maptiler.com/tiles/satellite/{z}/{x}/{y}.jpg?key=' + key,
maxZoom: 20
})
});

View File

@@ -18,11 +18,17 @@ const map = new Map({
osm.on('prerender', function(event) {
const ctx = event.context;
// calculate the pixel ratio and rotation of the canvas
const matrix = event.inversePixelTransform;
const canvasPixelRatio = Math.sqrt(matrix[0] * matrix[0] + matrix[1] * matrix[1]);
const canvasRotation = -Math.atan2(matrix[1], matrix[0]);
ctx.save();
const pixelRatio = event.frameState.pixelRatio;
const size = map.getSize();
ctx.translate(size[0] / 2 * pixelRatio, size[1] / 2 * pixelRatio);
ctx.scale(3 * pixelRatio, 3 * pixelRatio);
// center the canvas and remove rotation to position clipping
ctx.translate(ctx.canvas.width / 2, ctx.canvas.height / 2);
ctx.rotate(-canvasRotation);
ctx.scale(3 * canvasPixelRatio, 3 * canvasPixelRatio);
ctx.translate(-75, -80);
ctx.beginPath();
ctx.moveTo(75, 40);
@@ -34,8 +40,11 @@ osm.on('prerender', function(event) {
ctx.bezierCurveTo(85, 25, 75, 37, 75, 40);
ctx.clip();
ctx.translate(75, 80);
ctx.scale(1 / 3 / pixelRatio, 1 / 3 / pixelRatio);
ctx.translate(-size[0] / 2 * pixelRatio, -size[1] / 2 * pixelRatio);
ctx.scale(1 / 3 / canvasPixelRatio, 1 / 3 / canvasPixelRatio);
// reapply canvas rotation and position
ctx.rotate(canvasRotation);
ctx.translate(-ctx.canvas.width / 2, -ctx.canvas.height / 2);
});
osm.on('postrender', function(event) {

View File

@@ -8,9 +8,9 @@ docs: >
In this example, the <code>prerender</code> listener sets a clipping mask around the most
recent mouse position, giving you a spyglass effect for viewing one layer over another.</p>
<p>Move around the map to see the effect. Use the ↑ up and ↓ down arrow keys to adjust the spyglass size.</p>
tags: "spy, image manipulation"
tags: "spy, image manipulation, maptiler"
cloak:
- key: As1HiMj1PvLPlqc_gtM7AqZfBL8ZL3VrjaS3zIb22Uvb9WKhuJObROC-qUpa81U5
value: Your Bing Maps Key from http://www.bingmapsportal.com/ here
- key: get_your_own_D6rA4zTHduk6KOKTXzGB
value: Get your own API key at https://www.maptiler.com/cloud/
---
<div id="map" class="map"></div>

View File

@@ -2,16 +2,28 @@ import Map from '../src/ol/Map.js';
import View from '../src/ol/View.js';
import TileLayer from '../src/ol/layer/Tile.js';
import {fromLonLat} from '../src/ol/proj.js';
import BingMaps from '../src/ol/source/BingMaps.js';
import XYZ from '../src/ol/source/XYZ.js';
import {getRenderPixel} from '../src/ol/render.js';
const key = 'As1HiMj1PvLPlqc_gtM7AqZfBL8ZL3VrjaS3zIb22Uvb9WKhuJObROC-qUpa81U5';
const key = 'get_your_own_D6rA4zTHduk6KOKTXzGB';
const attributions = '<a href="https://www.maptiler.com/copyright/" target="_blank">&copy; MapTiler</a> ' +
'<a href="https://www.openstreetmap.org/copyright" target="_blank">&copy; OpenStreetMap contributors</a>';
const roads = new TileLayer({
source: new BingMaps({key: key, imagerySet: 'RoadOnDemand'})
source: new XYZ({
attributions: attributions,
url: 'https://api.maptiler.com/maps/streets/{z}/{x}/{y}.png?key=' + key,
tileSize: 512,
maxZoom: 22
})
});
const imagery = new TileLayer({
source: new BingMaps({key: key, imagerySet: 'Aerial'})
source: new XYZ({
attributions: attributions,
url: 'https://api.maptiler.com/tiles/satellite/{z}/{x}/{y}.jpg?key=' + key,
maxZoom: 20
})
});
const container = document.getElementById('map');
@@ -54,14 +66,15 @@ container.addEventListener('mouseout', function() {
// before rendering the layer, do some clipping
imagery.on('prerender', function(event) {
const ctx = event.context;
const pixelRatio = event.frameState.pixelRatio;
ctx.save();
ctx.beginPath();
if (mousePosition) {
// only show a circle around the mouse
ctx.arc(mousePosition[0] * pixelRatio, mousePosition[1] * pixelRatio,
radius * pixelRatio, 0, 2 * Math.PI);
ctx.lineWidth = 5 * pixelRatio;
const pixel = getRenderPixel(event, mousePosition);
const offset = getRenderPixel(event, [mousePosition[0] + radius, mousePosition[1]]);
const canvasRadius = Math.sqrt(Math.pow(offset[0] - pixel[0], 2) + Math.pow(offset[1] - pixel[1], 2));
ctx.arc(pixel[0], pixel[1], canvasRadius, 0, 2 * Math.PI);
ctx.lineWidth = 5 * canvasRadius / radius;
ctx.strokeStyle = 'rgba(0,0,0,0.5)';
ctx.stroke();
}

View File

@@ -4,10 +4,10 @@ title: Layer Swipe
shortdesc: Example of a Layer swipe map.
docs: >
Example of a Layer swipe map.
tags: "swipe, openstreetmap"
tags: "swipe, openstreetmap, maptiler"
cloak:
- key: As1HiMj1PvLPlqc_gtM7AqZfBL8ZL3VrjaS3zIb22Uvb9WKhuJObROC-qUpa81U5
value: Your Bing Maps Key from http://www.bingmapsportal.com/ here
- key: get_your_own_D6rA4zTHduk6KOKTXzGB
value: Get your own API key at https://www.maptiler.com/cloud/
---
<div id="map" class="map"></div>
<input id="swipe" type="range" style="width: 100%">

View File

@@ -1,21 +1,28 @@
import Map from '../src/ol/Map.js';
import View from '../src/ol/View.js';
import TileLayer from '../src/ol/layer/Tile.js';
import BingMaps from '../src/ol/source/BingMaps.js';
import OSM from '../src/ol/source/OSM.js';
import XYZ from '../src/ol/source/XYZ.js';
import {getRenderPixel} from '../src/ol/render.js';
const osm = new TileLayer({
source: new OSM()
});
const bing = new TileLayer({
source: new BingMaps({
key: 'As1HiMj1PvLPlqc_gtM7AqZfBL8ZL3VrjaS3zIb22Uvb9WKhuJObROC-qUpa81U5',
imagerySet: 'Aerial'
const key = 'get_your_own_D6rA4zTHduk6KOKTXzGB';
const attributions = '<a href="https://www.maptiler.com/copyright/" target="_blank">&copy; MapTiler</a> ' +
'<a href="https://www.openstreetmap.org/copyright" target="_blank">&copy; OpenStreetMap contributors</a>';
const aerial = new TileLayer({
source: new XYZ({
attributions: attributions,
url: 'https://api.maptiler.com/tiles/satellite/{z}/{x}/{y}.jpg?key=' + key,
maxZoom: 20
})
});
const map = new Map({
layers: [osm, bing],
layers: [osm, aerial],
target: 'map',
view: new View({
center: [0, 0],
@@ -25,17 +32,26 @@ const map = new Map({
const swipe = document.getElementById('swipe');
bing.on('prerender', function(event) {
aerial.on('prerender', function(event) {
const ctx = event.context;
const width = ctx.canvas.width * (swipe.value / 100);
const mapSize = map.getSize();
const width = mapSize[0] * (swipe.value / 100);
const tl = getRenderPixel(event, [width, 0]);
const tr = getRenderPixel(event, [mapSize[0], 0]);
const bl = getRenderPixel(event, [width, mapSize[1]]);
const br = getRenderPixel(event, mapSize);
ctx.save();
ctx.beginPath();
ctx.rect(width, 0, ctx.canvas.width - width, ctx.canvas.height);
ctx.moveTo(tl[0], tl[1]);
ctx.lineTo(bl[0], bl[1]);
ctx.lineTo(br[0], br[1]);
ctx.lineTo(tr[0], tr[1]);
ctx.closePath();
ctx.clip();
});
bing.on('postrender', function(event) {
aerial.on('postrender', function(event) {
const ctx = event.context;
ctx.restore();
});

View File

@@ -6,9 +6,9 @@ docs: >
<p>This example makes use of the <code>postrender</code> event listener to
oversample imagery in a circle around the pointer location. Listeners for this event have access to the Canvas context and can manipulate image data.</p>
<p>Move around the map to see the effect. Use the ↑ up and ↓ down arrow keys to adjust the magnified circle size.</p>
tags: "magnify, image manipulation"
tags: "magnify, image manipulation, maptiler"
cloak:
- key: As1HiMj1PvLPlqc_gtM7AqZfBL8ZL3VrjaS3zIb22Uvb9WKhuJObROC-qUpa81U5
value: Your Bing Maps Key from http://www.bingmapsportal.com/ here
- key: get_your_own_D6rA4zTHduk6KOKTXzGB
value: Get your own API key at https://www.maptiler.com/cloud/
---
<div id="map" class="map"></div>

View File

@@ -2,13 +2,20 @@ import Map from '../src/ol/Map.js';
import View from '../src/ol/View.js';
import TileLayer from '../src/ol/layer/Tile.js';
import {fromLonLat} from '../src/ol/proj.js';
import BingMaps from '../src/ol/source/BingMaps.js';
import XYZ from '../src/ol/source/XYZ.js';
import {getRenderPixel} from '../src/ol/render.js';
const key = 'As1HiMj1PvLPlqc_gtM7AqZfBL8ZL3VrjaS3zIb22Uvb9WKhuJObROC-qUpa81U5';
const key = 'get_your_own_D6rA4zTHduk6KOKTXzGB';
const attributions = '<a href="https://www.maptiler.com/copyright/" target="_blank">&copy; MapTiler</a> ' +
'<a href="https://www.openstreetmap.org/copyright" target="_blank">&copy; OpenStreetMap contributors</a>';
const imagery = new TileLayer({
source: new BingMaps({key: key, imagerySet: 'Aerial'})
source: new XYZ({
attributions: attributions,
url: 'https://api.maptiler.com/tiles/satellite/{z}/{x}/{y}.jpg?key=' + key,
maxZoom: 20,
crossOrigin: ''
})
});
const container = document.getElementById('map');

View File

@@ -18,6 +18,7 @@ cloak:
<meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width">
<title>Mapbox Style objects with ol-mapbox-style</title>
<link rel="stylesheet" href="../css/ol.css" type="text/css">
<script src="https://cdn.polyfill.io/v2/polyfill.min.js?features=fetch,String.prototype.startsWith,Object.assign"></script>
<style type="text/css">
html, body, .map {
margin: 0;

10
examples/page-scroll.html Normal file
View File

@@ -0,0 +1,10 @@
---
layout: example.html
title: Page Scrolling
shortdesc: Shows a map that does not interrupt page scrolling.
docs: >
To perform wheel/trackpad zoom and drag-pan actions only when the map
has the focus, configure your map div with a `tabindex` attribute.
tags: "trackpad, mousewheel, zoom, scroll, page"
---
<div tabindex="1" id="map" class="map"></div>

View File

@@ -1,14 +1,10 @@
import Map from '../src/ol/Map.js';
import View from '../src/ol/View.js';
import {defaults as defaultInteractions} from '../src/ol/interaction.js';
import TileLayer from '../src/ol/layer/Tile.js';
import OSM from '../src/ol/source/OSM.js';
const map = new Map({
interactions: defaultInteractions({
onFocusOnly: true
}),
layers: [
new TileLayer({
source: new OSM()

View File

@@ -1,8 +1,7 @@
.ol-popup {
position: absolute;
background-color: white;
-webkit-filter: drop-shadow(0 1px 4px rgba(0,0,0,0.2));
filter: drop-shadow(0 1px 4px rgba(0,0,0,0.2));
box-shadow: 0 1px 4px rgba(0,0,0,0.2);
padding: 15px;
border-radius: 10px;
border: 1px solid #cccccc;

View File

@@ -18,12 +18,12 @@ docs: >
those pixels based on a threshold value (values above the
threshold are green and those below are transparent).
</p>
tags: "raster, pixel"
tags: "raster, pixel, maptiler"
resources:
- https://unpkg.com/d3@4.12.0/build/d3.js
cloak:
- key: As1HiMj1PvLPlqc_gtM7AqZfBL8ZL3VrjaS3zIb22Uvb9WKhuJObROC-qUpa81U5
value: Your Bing Maps Key from http://www.bingmapsportal.com/ here
- key: get_your_own_D6rA4zTHduk6KOKTXzGB
value: Get your own API key at https://www.maptiler.com/cloud/
---
<div class="rel">
<div id="map" class="map"></div>

View File

@@ -1,7 +1,7 @@
import Map from '../src/ol/Map.js';
import View from '../src/ol/View.js';
import {Image as ImageLayer, Tile as TileLayer} from '../src/ol/layer.js';
import BingMaps from '../src/ol/source/BingMaps.js';
import XYZ from '../src/ol/source/XYZ.js';
import RasterSource from '../src/ol/source/Raster.js';
const minVgi = 0;
@@ -46,9 +46,16 @@ function summarize(value, counts) {
/**
* Use aerial imagery as the input data for the raster source.
*/
const bing = new BingMaps({
key: 'As1HiMj1PvLPlqc_gtM7AqZfBL8ZL3VrjaS3zIb22Uvb9WKhuJObROC-qUpa81U5',
imagerySet: 'Aerial'
const key = 'get_your_own_D6rA4zTHduk6KOKTXzGB';
const attributions = '<a href="https://www.maptiler.com/copyright/" target="_blank">&copy; MapTiler</a> ' +
'<a href="https://www.openstreetmap.org/copyright" target="_blank">&copy; OpenStreetMap contributors</a>';
const aerial = new XYZ({
attributions: attributions,
url: 'https://api.maptiler.com/tiles/satellite/{z}/{x}/{y}.jpg?key=' + key,
maxZoom: 20,
crossOrigin: ''
});
@@ -57,7 +64,7 @@ const bing = new BingMaps({
* be colored green.
*/
const raster = new RasterSource({
sources: [bing],
sources: [aerial],
/**
* Run calculations on pixel data.
* @param {Array} pixels List of pixels (one per source).
@@ -110,7 +117,7 @@ raster.on('afteroperations', function(event) {
const map = new Map({
layers: [
new TileLayer({
source: bing
source: aerial
}),
new ImageLayer({
source: raster

View File

@@ -23,10 +23,10 @@ docs: >
This example also shows how an additional function can be made available
to the operation.
</p>
tags: "raster, region growing"
tags: "raster, region growing, maptiler"
cloak:
- key: As1HiMj1PvLPlqc_gtM7AqZfBL8ZL3VrjaS3zIb22Uvb9WKhuJObROC-qUpa81U5
value: Your Bing Maps Key from http://www.bingmapsportal.com/ here
- key: get_your_own_D6rA4zTHduk6KOKTXzGB
value: Get your own API key at https://www.maptiler.com/cloud/
---
<div id="map" class="map" style="cursor: pointer"></div>
<table class="controls">

View File

@@ -2,7 +2,7 @@ import Map from '../src/ol/Map.js';
import View from '../src/ol/View.js';
import {Image as ImageLayer, Tile as TileLayer} from '../src/ol/layer.js';
import {fromLonLat} from '../src/ol/proj.js';
import BingMaps from '../src/ol/source/BingMaps.js';
import XYZ from '../src/ol/source/XYZ.js';
import RasterSource from '../src/ol/source/Raster.js';
function growRegion(inputs, data) {
@@ -72,10 +72,17 @@ function next4Edges(edge) {
];
}
const key = 'As1HiMj1PvLPlqc_gtM7AqZfBL8ZL3VrjaS3zIb22Uvb9WKhuJObROC-qUpa81U5';
const key = 'get_your_own_D6rA4zTHduk6KOKTXzGB';
const attributions = '<a href="https://www.maptiler.com/copyright/" target="_blank">&copy; MapTiler</a> ' +
'<a href="https://www.openstreetmap.org/copyright" target="_blank">&copy; OpenStreetMap contributors</a>';
const imagery = new TileLayer({
source: new BingMaps({key: key, imagerySet: 'Aerial'})
source: new XYZ({
attributions: attributions,
url: 'https://api.maptiler.com/tiles/satellite/{z}/{x}/{y}.jpg?key=' + key,
maxZoom: 20,
crossOrigin: ''
})
});
const raster = new RasterSource({

View File

@@ -5,7 +5,9 @@ shortdesc: Example of some Regular Shape styles.
docs: >
This example shows how several regular shapes
or symbols (representing `x`, `cross`, `star`,
`triangle` and `square`) can be created.
`triangle`, `square` and `stacked`) can be created.
Style `stacked` represents possility to stack multiple shapes with offset
tags: "vector, symbol, regularshape, style, square, cross, star, triangle, x"
---
<div id="map" class="map"></div>

View File

@@ -59,18 +59,39 @@ const styles = {
radius2: 0,
angle: Math.PI / 4
})
})
}),
'stacked': [
new Style({
image: new RegularShape({
fill: fill,
stroke: stroke,
points: 4,
radius: 5,
angle: Math.PI / 4,
displacement: [0, 10]
})
}),
new Style({
image: new RegularShape({
fill: fill,
stroke: stroke,
points: 4,
radius: 10,
angle: Math.PI / 4
})
})
]
};
const styleKeys = ['x', 'cross', 'star', 'triangle', 'square'];
const styleKeys = ['x', 'cross', 'star', 'triangle', 'square', 'stacked'];
const count = 250;
const features = new Array(count);
const e = 4500000;
for (let i = 0; i < count; ++i) {
const coordinates = [2 * e * Math.random() - e, 2 * e * Math.random() - e];
features[i] = new Feature(new Point(coordinates));
features[i].setStyle(styles[styleKeys[Math.floor(Math.random() * 5)]]);
features[i].setStyle(styles[styleKeys[Math.floor(Math.random() * 6)]]);
}
const source = new VectorSource({

View File

@@ -55,15 +55,6 @@ proj54009.setExtent([-18e6, -9e6, 18e6, 9e6]);
const layers = {};
layers['bng'] = new TileLayer({
source: new XYZ({
projection: 'EPSG:27700',
url: 'https://tileserver.maptiler.com/miniscale/{z}/{x}/{y}.png',
crossOrigin: '',
maxZoom: 6
})
});
layers['osm'] = new TileLayer({
source: new OSM()
});
@@ -95,9 +86,11 @@ layers['wms21781'] = new TileLayer({
});
const parser = new WMTSCapabilities();
const url = 'https://map1.vis.earthdata.nasa.gov/wmts-arctic/' +
layers['wmts3413'] = new TileLayer();
const urlA = 'https://map1.vis.earthdata.nasa.gov/wmts-arctic/' +
'wmts.cgi?SERVICE=WMTS&request=GetCapabilities';
fetch(url).then(function(response) {
fetch(urlA).then(function(response) {
return response.text();
}).then(function(text) {
const result = parser.read(text);
@@ -108,9 +101,23 @@ fetch(url).then(function(response) {
options.crossOrigin = '';
options.projection = 'EPSG:3413';
options.wrapX = false;
layers['wmts3413'] = new TileLayer({
source: new WMTS(options)
layers['wmts3413'].setSource(new WMTS(options));
});
layers['bng'] = new TileLayer();
const urlB = 'https://tiles.arcgis.com/tiles/qHLhLQrcvEnxjtPr/arcgis/rest/services/OS_Open_Raster/MapServer/WMTS';
fetch(urlB).then(function(response) {
return response.text();
}).then(function(text) {
const result = parser.read(text);
const options = optionsFromCapabilities(result, {
layer: 'OS_Open_Raster'
});
options.attributions = 'Contains OS data © Crown Copyright and database right 2019';
options.crossOrigin = '';
options.projection = 'EPSG:27700';
options.wrapX = false;
layers['bng'].setSource(new WMTS(options));
});
layers['grandcanyon'] = new TileLayer({

View File

@@ -8,6 +8,11 @@ docs: >
<a href="https://www.mapbox.com/blog/terrain-rgb/">Mapbox Terrain-RGB tiles</a>
to "flood" areas below the elevation shown on the sea level slider.
</p>
<p>
<code>ol/source/Raster</code> can take either a tile source or layer.
In this case a layer is used to allow disabling at the <code>prerender</code> event
of image smoothing which would change the precise elevation values set in the pixels.
</p>
tags: "raster, pixel operation, flood"
cloak:
- key: pk.eyJ1IjoidHNjaGF1YiIsImEiOiJjaW5zYW5lNHkxMTNmdWttM3JyOHZtMmNtIn0.CDIBD8H-G2Gf-cPkIuWtRg

View File

@@ -22,9 +22,15 @@ function flood(pixels, data) {
}
const key = 'pk.eyJ1IjoidHNjaGF1YiIsImEiOiJjaW5zYW5lNHkxMTNmdWttM3JyOHZtMmNtIn0.CDIBD8H-G2Gf-cPkIuWtRg';
const elevation = new XYZ({
url: 'https://api.mapbox.com/v4/mapbox.terrain-rgb/{z}/{x}/{y}.pngraw?access_token=' + key,
crossOrigin: 'anonymous'
const elevation = new TileLayer({
source: new XYZ({
url: 'https://api.mapbox.com/v4/mapbox.terrain-rgb/{z}/{x}/{y}.pngraw?access_token=' + key,
crossOrigin: 'anonymous'
})
});
elevation.on('prerender', function(evt) {
evt.context.imageSmoothingEnabled = false;
evt.context.msImageSmoothingEnabled = false;
});
const raster = new RasterSource({

View File

@@ -4,10 +4,10 @@ title: Shared Views
shortdesc: Two maps share view properties
docs: >
Two maps (one Road, one Aerial) share the same center, resolution and rotation.
tags: "side-by-side, bing, bing-maps"
tags: "side-by-side, xyz, maptiler"
cloak:
- key: As1HiMj1PvLPlqc_gtM7AqZfBL8ZL3VrjaS3zIb22Uvb9WKhuJObROC-qUpa81U5
value: Your Bing Maps Key from http://www.bingmapsportal.com/ here
- key: get_your_own_D6rA4zTHduk6KOKTXzGB
value: Get your own API key at https://www.maptiler.com/cloud/
---
<div class="wrapper">
<div class="half">

View File

@@ -1,21 +1,26 @@
import Map from '../src/ol/Map.js';
import View from '../src/ol/View.js';
import TileLayer from '../src/ol/layer/Tile.js';
import BingMaps from '../src/ol/source/BingMaps.js';
import XYZ from '../src/ol/source/XYZ.js';
const key = 'get_your_own_D6rA4zTHduk6KOKTXzGB';
const attributions = '<a href="https://www.maptiler.com/copyright/" target="_blank">&copy; MapTiler</a> ' +
'<a href="https://www.openstreetmap.org/copyright" target="_blank">&copy; OpenStreetMap contributors</a>';
const roadLayer = new TileLayer({
source: new BingMaps({
key: 'As1HiMj1PvLPlqc_gtM7AqZfBL8ZL3VrjaS3zIb22Uvb9WKhuJObROC-qUpa81U5',
imagerySet: 'RoadOnDemand',
maxZoom: 19
source: new XYZ({
attributions: attributions,
url: 'https://api.maptiler.com/maps/streets/{z}/{x}/{y}.png?key=' + key,
tileSize: 512,
maxZoom: 22
})
});
const aerialLayer = new TileLayer({
source: new BingMaps({
key: 'As1HiMj1PvLPlqc_gtM7AqZfBL8ZL3VrjaS3zIb22Uvb9WKhuJObROC-qUpa81U5',
imagerySet: 'Aerial',
maxZoom: 19
source: new XYZ({
attributions: attributions,
url: 'https://api.maptiler.com/tiles/satellite/{z}/{x}/{y}.jpg?key=' + key,
maxZoom: 20
})
});

View File

@@ -4,9 +4,9 @@ title: Street Labels
shortdesc: Render street names.
docs: >
Example showing the use of a text style with `placement: 'line'` to render text along a path.
tags: "vector, label, streets"
tags: "vector, label, streets, maptiler"
cloak:
- key: As1HiMj1PvLPlqc_gtM7AqZfBL8ZL3VrjaS3zIb22Uvb9WKhuJObROC-qUpa81U5
value: Your Bing Maps Key from http://www.bingmapsportal.com/ here
- key: get_your_own_D6rA4zTHduk6KOKTXzGB
value: Get your own API key at https://www.maptiler.com/cloud/
---
<div id="map" class="map"></div>

View File

@@ -3,7 +3,7 @@ import View from '../src/ol/View.js';
import {getCenter} from '../src/ol/extent.js';
import GeoJSON from '../src/ol/format/GeoJSON.js';
import {Tile as TileLayer, Vector as VectorLayer} from '../src/ol/layer.js';
import BingMaps from '../src/ol/source/BingMaps.js';
import XYZ from '../src/ol/source/XYZ.js';
import VectorSource from '../src/ol/source/Vector.js';
import {Fill, Style, Text} from '../src/ol/style.js';
@@ -17,12 +17,17 @@ const style = new Style({
})
});
const key = 'get_your_own_D6rA4zTHduk6KOKTXzGB';
const attributions = '<a href="https://www.maptiler.com/copyright/" target="_blank">&copy; MapTiler</a> ' +
'<a href="https://www.openstreetmap.org/copyright" target="_blank">&copy; OpenStreetMap contributors</a>';
const viewExtent = [1817379, 6139595, 1827851, 6143616];
const map = new Map({
layers: [new TileLayer({
source: new BingMaps({
key: 'As1HiMj1PvLPlqc_gtM7AqZfBL8ZL3VrjaS3zIb22Uvb9WKhuJObROC-qUpa81U5',
imagerySet: 'Aerial'
source: new XYZ({
attributions: attributions,
url: 'https://api.maptiler.com/tiles/satellite/{z}/{x}/{y}.jpg?key=' + key,
maxZoom: 20
})
}), new VectorLayer({
declutter: true,

7
examples/svg-layer.css Normal file
View File

@@ -0,0 +1,7 @@
#map {
background: black;
}
.svg-layer path:hover {
opacity: 0.4;
}

9
examples/svg-layer.html Normal file
View File

@@ -0,0 +1,9 @@
---
layout: example.html
title: SVG Layer
shortdesc: Example of a map with an interactive svg layer.
docs: >
With a plain `ol/Layer` and a `render` function, we can use an interactive svg as layer. Hover over countries to see the interactivity that is defined purely with a css `:hover` pseudo-class.
tags: "svg, layer, render, transform"
---
<div id="map" class="map"></div>

48
examples/svg-layer.js Normal file
View File

@@ -0,0 +1,48 @@
import Map from '../src/ol/Map.js';
import View from '../src/ol/View.js';
import Layer from '../src/ol/layer/Layer.js';
import {composeCssTransform} from '../src/ol/transform.js';
const map = new Map({
target: 'map',
view: new View({
center: [0, 0],
extent: [-180, -90, 180, 90],
projection: 'EPSG:4326',
zoom: 2
})
});
const svgContainer = document.createElement('div');
const xhr = new XMLHttpRequest();
xhr.open('GET', 'data/world.svg');
xhr.addEventListener('load', function() {
const svg = xhr.responseXML.documentElement;
svgContainer.ownerDocument.importNode(svg);
svgContainer.appendChild(svg);
});
xhr.send();
const width = 2560;
const height = 1280;
const svgResolution = 360 / width;
svgContainer.style.width = width + 'px';
svgContainer.style.height = height + 'px';
svgContainer.style.transformOrigin = 'top left';
svgContainer.className = 'svg-layer';
map.addLayer(new Layer({
render: function(frameState) {
const scale = svgResolution / frameState.viewState.resolution;
const center = frameState.viewState.center;
const size = frameState.size;
const cssTransform = composeCssTransform(
size[0] / 2, size[1] / 2,
scale, scale,
frameState.viewState.rotation,
-center[0] / svgResolution - width / 2, center[1] / svgResolution - height / 2);
svgContainer.style.transform = cssTransform;
svgContainer.style.opacity = this.getOpacity();
return svgContainer;
}
}));

View File

@@ -108,7 +108,14 @@
<div class="row-fluid">
<a class="codepen-button pull-right"><i class="fa fa-codepen"></i> Edit</a>
<div class="span12">
<h4 id="title">{{ title }}</h4>
<h4 id="title">
{{ title }}
</h4>
<p class="tags">
{{#each tags}}
<a href="./index.html?q={{.}}" class="label label-primary">{{.}}</a>
{{/each}}
</p>
{{{ contents }}}
</div>
<form method="POST" id="codepen-form" target="_blank" action="https://codesandbox.io/api/v1/sandboxes/define">
@@ -132,7 +139,7 @@
&lt;head&gt;
&lt;title&gt;{{ title }}&lt;/title&gt;
&lt;!-- The line below is only needed for old environments like Internet Explorer and Android 4.x --&gt;
&lt;script src="https://cdn.polyfill.io/v2/polyfill.min.js?features=requestAnimationFrame,Element.prototype.classList,URL"&gt;&lt;/script&gt;{{#if extraHead.remote}}
&lt;script src="https://cdn.polyfill.io/v2/polyfill.min.js?features=fetch,requestAnimationFrame,Element.prototype.classList,URL"&gt;&lt;/script&gt;{{#if extraHead.remote}}
{{ indent extraHead.remote spaces=4 }}{{/if}}
&lt;style&gt;
.map {

22
examples/tracing.html Normal file
View File

@@ -0,0 +1,22 @@
---
layout: example.html
title: Tracing around a polygon
shortdesc: Example of setting up a draw interaction to easily snap to an existing feature.
docs: >
This example showcases how the draw interaction API can be set up to make snapping along
an existing geometry easier while preserving topology, which is sometimes called "tracing".
When the user clicks on two different points on the Idaho state border,
the part of the border comprised between these two points is added to
the currently drawn feature.
This leverages the `appendCoordinates` method of the `ol/interaction/Draw` interaction.
tags: "draw, trace, snap, vector, topology"
---
<div id="map" class="map"></div>
<form class="form-inline">
<label>Geometry type &nbsp;</label>
<select id="type">
<option value="Polygon">Polygon</option>
<option value="LineString">LineString</option>
<option value="None">None</option>
</select>
</form>

253
examples/tracing.js Normal file
View File

@@ -0,0 +1,253 @@
import Map from '../src/ol/Map.js';
import View from '../src/ol/View.js';
import Draw from '../src/ol/interaction/Draw.js';
import Snap from '../src/ol/interaction/Snap.js';
import Style from '../src/ol/style/Style.js';
import Stroke from '../src/ol/style/Stroke.js';
import Fill from '../src/ol/style/Fill.js';
import GeoJSON from '../src/ol/format/GeoJSON.js';
import {Tile as TileLayer, Vector as VectorLayer} from '../src/ol/layer.js';
import {OSM, Vector as VectorSource} from '../src/ol/source.js';
import LineString from '../src/ol/geom/LineString.js';
import Feature from '../src/ol/Feature.js';
// math utilities
// coordinates; will return the length of the [a, b] segment
function length(a, b) {
return Math.sqrt((b[0] - a[0]) * (b[0] - a[0]) + (b[1] - a[1]) * (b[1] - a[1]));
}
// coordinates; will return true if c is on the [a, b] segment
function isOnSegment(c, a, b) {
const lengthAc = length(a, c);
const lengthAb = length(a, b);
const dot = ((c[0] - a[0]) * (b[0] - a[0]) + (c[1] - a[1]) * (b[1] - a[1])) / lengthAb;
return Math.abs(lengthAc - dot) < 1e-6 && lengthAc < lengthAb;
}
// modulo for negative values, eg: mod(-1, 4) returns 3
function mod(a, b) {
return ((a % b) + b) % b;
}
// returns a coordinates array which contains the segments of the feature's
// outer ring between the start and end points
// Note: this assumes the base feature is a single polygon
function getPartialRingCoords(feature, startPoint, endPoint) {
let polygon = feature.getGeometry();
if (polygon.getType() === 'MultiPolygon') {
polygon = polygon.getPolygon(0);
}
const ringCoords = polygon.getLinearRing().getCoordinates();
let i, pointA, pointB, startSegmentIndex = -1;
for (i = 0; i < ringCoords.length; i++) {
pointA = ringCoords[i];
pointB = ringCoords[mod(i + 1, ringCoords.length)];
// check if this is the start segment dot product
if (isOnSegment(startPoint, pointA, pointB)) {
startSegmentIndex = i;
break;
}
}
const cwCoordinates = [];
let cwLength = 0;
const ccwCoordinates = [];
let ccwLength = 0;
// build clockwise coordinates
for (i = 0; i < ringCoords.length; i++) {
pointA = i === 0 ? startPoint : ringCoords[mod(i + startSegmentIndex, ringCoords.length)];
pointB = ringCoords[mod(i + startSegmentIndex + 1, ringCoords.length)];
cwCoordinates.push(pointA);
if (isOnSegment(endPoint, pointA, pointB)) {
cwCoordinates.push(endPoint);
cwLength += length(pointA, endPoint);
break;
} else {
cwLength += length(pointA, pointB);
}
}
// build counter-clockwise coordinates
for (i = 0; i < ringCoords.length; i++) {
pointA = ringCoords[mod(startSegmentIndex - i, ringCoords.length)];
pointB = i === 0 ? startPoint : ringCoords[mod(startSegmentIndex - i + 1, ringCoords.length)];
ccwCoordinates.push(pointB);
if (isOnSegment(endPoint, pointA, pointB)) {
ccwCoordinates.push(endPoint);
ccwLength += length(endPoint, pointB);
break;
} else {
ccwLength += length(pointA, pointB);
}
}
// keep the shortest path
return ccwLength < cwLength ? ccwCoordinates : cwCoordinates;
}
// layers definition
const raster = new TileLayer({
source: new OSM()
});
// features in this layer will be snapped to
const baseVector = new VectorLayer({
source: new VectorSource({
format: new GeoJSON(),
url: 'https://ahocevar.com/geoserver/wfs?service=wfs&request=getfeature&typename=topp:states&cql_filter=STATE_NAME=\'Idaho\'&outputformat=application/json'
})
});
// this is were the drawn features go
const drawVector = new VectorLayer({
source: new VectorSource(),
style: new Style({
stroke: new Stroke({
color: 'rgba(100, 255, 0, 1)',
width: 2
}),
fill: new Fill({
color: 'rgba(100, 255, 0, 0.3)'
})
})
});
// this line only appears when we're tracing a feature outer ring
const previewLine = new Feature({
geometry: new LineString([])
});
const previewVector = new VectorLayer({
source: new VectorSource({
features: [previewLine]
}),
style: new Style({
stroke: new Stroke({
color: 'rgba(255, 0, 0, 1)',
width: 2
})
})
});
const map = new Map({
layers: [raster, baseVector, drawVector, previewVector],
target: 'map',
view: new View({
center: [-12986427, 5678422],
zoom: 5
})
});
let drawInteraction, tracingFeature, startPoint, endPoint;
let drawing = false;
const getFeatureOptions = {
hitTolerance: 10,
layerFilter: (layer) => {
return layer === baseVector;
}
};
// the click event is used to start/end tracing around a feature
map.on('click', (event) => {
if (!drawing) {
return;
}
let hit = false;
map.forEachFeatureAtPixel(
event.pixel,
(feature) => {
if (tracingFeature && feature !== tracingFeature) {
return;
}
hit = true;
const coord = map.getCoordinateFromPixel(event.pixel);
// second click on the tracing feature: append the ring coordinates
if (feature === tracingFeature) {
endPoint = tracingFeature.getGeometry().getClosestPoint(coord);
const appendCoords = getPartialRingCoords(tracingFeature, startPoint, endPoint);
drawInteraction.removeLastPoint();
drawInteraction.appendCoordinates(appendCoords);
tracingFeature = null;
}
// start tracing on the feature ring
tracingFeature = feature;
startPoint = tracingFeature.getGeometry().getClosestPoint(coord);
},
getFeatureOptions
);
if (!hit) {
// clear current tracing feature & preview
previewLine.getGeometry().setCoordinates([]);
tracingFeature = null;
}
});
// the pointermove event is used to show a preview of the result of the tracing
map.on('pointermove', (event) => {
if (tracingFeature && drawing) {
let coord = null;
map.forEachFeatureAtPixel(
event.pixel,
(feature) => {
if (tracingFeature === feature) {
coord = map.getCoordinateFromPixel(event.pixel);
}
},
getFeatureOptions
);
let previewCoords = [];
if (coord) {
endPoint = tracingFeature.getGeometry().getClosestPoint(coord);
previewCoords = getPartialRingCoords(tracingFeature, startPoint, endPoint);
}
previewLine.getGeometry().setCoordinates(previewCoords);
}
});
const snapInteraction = new Snap({
source: baseVector.getSource()
});
const typeSelect = document.getElementById('type');
function addInteraction() {
const value = typeSelect.value;
if (value !== 'None') {
drawInteraction = new Draw({
source: drawVector.getSource(),
type: typeSelect.value
});
drawInteraction.on('drawstart', () => {
drawing = true;
});
drawInteraction.on('drawend', () => {
drawing = false;
previewLine.getGeometry().setCoordinates([]);
tracingFeature = null;
});
map.addInteraction(drawInteraction);
map.addInteraction(snapInteraction);
}
}
typeSelect.onchange = function() {
map.removeInteraction(drawInteraction);
map.removeInteraction(snapInteraction);
addInteraction();
};
addInteraction();

View File

@@ -0,0 +1,12 @@
---
layout: example.html
title: Panning and page scrolling
shortdesc: Shows a map that allows page scrolling unless two fingers or Cmd/Ctrl are used to pan the map.
docs: >
This example shows a common behavior for page scrolling: on touch devices, when one finger
is placed on the map, it can be used to scroll the page. Only two fingers will perform drag pan.
For mouse or trackpad devices, the platform modifier key (Cmd or Ctrl) will enable drag pan on
the map, otherwise the page will scroll.
tags: "trackpad, mousewheel, zoom, scroll, page"
---
<div id="map" class="map"></div>

View File

@@ -0,0 +1,29 @@
import Map from '../src/ol/Map.js';
import View from '../src/ol/View.js';
import TileLayer from '../src/ol/layer/Tile.js';
import OSM from '../src/ol/source/OSM.js';
import {defaults, DragPan, MouseWheelZoom} from '../src/ol/interaction.js';
import {platformModifierKeyOnly} from '../src/ol/events/condition.js';
const map = new Map({
interactions: defaults({dragPan: false, mouseWheelZoom: false}).extend([
new DragPan({
condition: function(event) {
return this.getPointerCount() === 2 || platformModifierKeyOnly(event);
}
}),
new MouseWheelZoom({
condition: platformModifierKeyOnly
})
]),
layers: [
new TileLayer({
source: new OSM()
})
],
target: 'map',
view: new View({
center: [0, 0],
zoom: 2
})
});

View File

@@ -5,7 +5,11 @@ shortdesc: Select features from vector tiles.
docs: >
<p>
Click a rendered vector-tile feature to highlight it on the map. Click on an empty spot (ocean) to reset the selection.
By changing the action type to "Multi Select" you can select multiple features at a time.
By changing the action type to "Multi Select" you can select multiple features at a time. With "Single Select on hover",
features will be higlighted when the pointer is above them.
</p><p>
The selection layer is configured with `renderMode: 'vector'` for better performance on frequent redraws,
i.e. when 'Single select on hover' is selected.
</p>
tags: "vector tiles, selection"
---
@@ -15,5 +19,6 @@ tags: "vector tiles, selection"
<select id="type" class="form-control">
<option value="singleselect" selected>Single Select</option>
<option value="multiselect">Multi Select</option>
<option value="singleselect-hover">Single Select on hover</option>
</select>
</form>

View File

@@ -8,6 +8,25 @@ import {Fill, Stroke, Style} from '../src/ol/style.js';
// lookup for selection objects
let selection = {};
const country = new Style({
stroke: new Stroke({
color: 'gray',
width: 1
}),
fill: new Fill({
color: 'rgba(20,20,20,0.9)'
})
});
const selectedCountry = new Style({
stroke: new Stroke({
color: 'rgba(200,20,20,0.8)',
width: 2
}),
fill: new Fill({
color: 'rgba(200,20,20,0.4)'
})
});
const vtLayer = new VectorTileLayer({
declutter: true,
source: new VectorTileSource({
@@ -18,18 +37,7 @@ const vtLayer = new VectorTileLayer({
url: 'https://ahocevar.com/geoserver/gwc/service/tms/1.0.0/' +
'ne:ne_10m_admin_0_countries@EPSG%3A900913@pbf/{z}/{x}/{-y}.pbf'
}),
style: function(feature) {
const selected = !!selection[feature.getId()];
return new Style({
stroke: new Stroke({
color: selected ? 'rgba(200,20,20,0.8)' : 'gray',
width: selected ? 2 : 1
}),
fill: new Fill({
color: selected ? 'rgba(200,20,20,0.2)' : 'rgba(20,20,20,0.9)'
})
});
}
style: country
});
const map = new Map({
@@ -39,18 +47,34 @@ const map = new Map({
target: 'map',
view: new View({
center: [0, 0],
zoom: 2
zoom: 2,
multiWorld: true
})
});
// Selection
const selectionLayer = new VectorTileLayer({
map: map,
renderMode: 'vector',
source: vtLayer.getSource(),
style: function(feature) {
if (feature.getId() in selection) {
return selectedCountry;
}
}
});
const selectElement = document.getElementById('type');
map.on('click', function(event) {
map.on(['click', 'pointermove'], function(event) {
if (selectElement.value === 'singleselect-hover' && event.type !== 'pointermove' ||
selectElement.value !== 'singleselect-hover' && event.type === 'pointermove') {
return;
}
vtLayer.getFeatures(event.pixel).then(function(features) {
if (!features.length) {
selection = {};
// force redraw of layer style
vtLayer.setStyle(vtLayer.getStyle());
selectionLayer.changed();
return;
}
const feature = features[0];
@@ -59,14 +83,12 @@ map.on('click', function(event) {
}
const fid = feature.getId();
if (selectElement.value === 'singleselect') {
if (selectElement.value.startsWith('singleselect')) {
selection = {};
}
// add selected feature to lookup
selection[fid] = feature;
// force redraw of layer style
vtLayer.setStyle(vtLayer.getStyle());
selectionLayer.changed();
});
});

View File

@@ -6,6 +6,8 @@ docs: >
Example showing vector tiles in EPSG:4326 (styled using `ol-mapbox-style`) loaded from maptiler.com.
**Note**: Make sure to get your own API key at https://www.maptiler.com/cloud/ when using this example. No map will be visible when the API key has expired.
tags: "vector tiles, epsg4326, mapbox style, ol-mapbox-style, maptiler"
resources:
- https://cdn.polyfill.io/v2/polyfill.min.js?features=String.prototype.startsWith,Object.assign"
cloak:
- key: get_your_own_D6rA4zTHduk6KOKTXzGB
value: Get your own API key at https://www.maptiler.com/cloud/

View File

@@ -4,7 +4,7 @@ import VectorTileSource from '../src/ol/source/VectorTile.js';
import TileGrid from '../src/ol/tilegrid/TileGrid.js';
import olms from 'ol-mapbox-style';
import {defaultResolutions} from 'ol-mapbox-style/util.js';
import {defaultResolutions} from 'ol-mapbox-style/dist/util.js';
const key = 'get_your_own_D6rA4zTHduk6KOKTXzGB';

View File

@@ -3,19 +3,67 @@ layout: example.html
title: WebGL points layer
shortdesc: Using a WebGL-optimized layer to render a large quantities of points
docs: >
<p>This example shows how to use a <code>WebGLPointsLayer</code> to show a large amount of points on the map.</p>
<p>The layer is given a style in JSON format which allows a certain level of customization of the final reprensentation.</p>
<p>
The following operators can be used for numerical values:
<ul>
<li><code>["get", "attributeName"]</code> fetches a numeric attribute value for each feature</li>
<li><code>["+", value, value]</code> adds two values (which an either be numeric, or the result of another operator)</li>
<li><code>["*", value, value]</code> multiplies two values</li>
<li><code>["clamp", value, min, max]</code> outputs a value between <code>min</code> and <code>max</code></li>
<li><code>["stretch", value, low1, high1, low2, high2]</code> outputs a value which has been mapped from the
<code>low1..high1</code> range to the <code>low2..high2</code> range</li>
</ul>
</p>
This example shows how to use a `WebGLPointsLayer` to show a large amount of points on the map.
The layer is given a style in JSON format which allows a certain level of customization of the final reprensentation.
The following operators can be used:
* Reading operators:
* `['get', 'attributeName']` fetches a feature attribute (it will be prefixed by `a_` in the shader)
Note: those will be taken from the attributes provided to the renderer
* `['var', 'varName']` fetches a value from the style variables, or 0 if undefined
* `['time']` returns the time in seconds since the creation of the layer
* `['zoom']` returns the current zoom level
* `['resolution']` returns the current resolution
* Math operators:
* `['*', value1, value2]` multiplies `value1` by `value2`
* `['/', value1, value2]` divides `value1` by `value2`
* `['+', value1, value2]` adds `value1` and `value2`
* `['-', value1, value2]` subtracts `value2` from `value1`
* `['clamp', value, low, high]` clamps `value` between `low` and `high`
* `['%', value1, value2]` returns the result of `value1 % value2` (modulo)
* `['^', value1, value2]` returns the value of `value1` raised to the `value2` power
* Transform operators:
* `['case', condition1, output1, ...conditionN, outputN, fallback]` selects the first output whose corresponding
condition evaluates to `true`. If no match is found, returns the `fallback` value.
All conditions should be `boolean`, output and fallback can be any kind.
* `['match', input, match1, output1, ...matchN, outputN, fallback]` compares the `input` value against all
provided `matchX` values, returning the output associated with the first valid match. If no match is found,
returns the `fallback` value.
`input` and `matchX` values must all be of the same type, and can be `number` or `string`. `outputX` and
`fallback` values must be of the same type, and can be of any kind.
* `['interpolate', interpolation, input, stop1, output1, ...stopN, outputN]` returns a value by interpolating between
pairs of inputs and outputs; `interpolation` can either be `['linear']` or `['exponential', base]` where `base` is
the rate of increase from stop A to stop B (i.e. power to which the interpolation ratio is raised); a value
of 1 is equivalent to `['linear']`.
`input` and `stopX` values must all be of type `number`. `outputX` values can be `number` or `color` values.
Note: `input` will be clamped between `stop1` and `stopN`, meaning that all output values will be comprised
between `output1` and `outputN`.
* Logical operators:
* `['<', value1, value2]` returns `true` if `value1` is strictly lower than `value2`, or `false` otherwise.
* `['<=', value1, value2]` returns `true` if `value1` is lower than or equals `value2`, or `false` otherwise.
* `['>', value1, value2]` returns `true` if `value1` is strictly greater than `value2`, or `false` otherwise.
* `['>=', value1, value2]` returns `true` if `value1` is greater than or equals `value2`, or `false` otherwise.
* `['==', value1, value2]` returns `true` if `value1` equals `value2`, or `false` otherwise.
* `['!=', value1, value2]` returns `true` if `value1` does not equal `value2`, or `false` otherwise.
* `['!', value1]` returns `false` if `value1` is `true` or greater than `0`, or `true` otherwise.
* `['between', value1, value2, value3]` returns `true` if `value1` is contained between `value2` and `value3`
(inclusively), or `false` otherwise.
* Conversion operators:
* `['array', value1, ...valueN]` creates a numerical array from `number` values; please note that the amount of
values can currently only be 2, 3 or 4.
* `['color', red, green, blue, alpha]` creates a `color` value from `number` values; the `alpha` parameter is
optional; if not specified, it will be set to 1.
Note: `red`, `green` and `blue` components must be values between 0 and 255; `alpha` between 0 and 1.
Values can either be literals or another operator, as they will be evaluated recursively.
Literal values can be of the following types:
* `boolean`
* `number`
* `string`
tags: "webgl, point, layer, feature"
experimental: true
@@ -29,6 +77,7 @@ experimental: true
<option value="triangles-latitude">Triangles, color related to latitude</option>
<option value="circles">Circles, size related to population</option>
<option value="circles-zoom">Circles, size related to zoom</option>
<option value="rotating-bars">Rotating bars</option>
</select>
<textarea style="width: 100%; height: 20rem; font-family: monospace; font-size: small;" id="style-editor"></textarea>
<small>

View File

@@ -95,6 +95,35 @@ const predefinedStyles = {
offset: [0, 0],
opacity: 0.95
}
},
'rotating-bars': {
symbol: {
symbolType: 'square',
rotation: ['*', [
'time'
], 0.1],
size: ['array', 4, [
'interpolate',
['linear'],
['get', 'population'],
20000, 4,
300000, 28]
],
color: [
'interpolate',
['linear'],
['get', 'population'],
20000, '#ffdc00',
300000, '#ff5b19'
],
offset: ['array', 0, [
'interpolate',
['linear'],
['get', 'population'],
20000, 2,
300000, 14]
]
}
}
};
@@ -167,3 +196,10 @@ function onSelectChange() {
}
onSelectChange();
select.addEventListener('change', onSelectChange);
// animate the map
function animate() {
map.render();
window.requestAnimationFrame(animate);
}
animate();

View File

@@ -138,9 +138,13 @@ ExampleBuilder.prototype.apply = function(compiler) {
.filter(chunk => chunk.names[0] !== this.common);
const exampleData = [];
const uniqueTags = new Set();
const promises = chunks.map(async chunk => {
const [assets, data] = await this.render(compiler.context, chunk);
// collect tags for main page... TODO: implement index tag links
data.tags.forEach(tag => uniqueTags.add(tag));
exampleData.push({
link: data.filename,
example: data.filename,
@@ -158,7 +162,8 @@ ExampleBuilder.prototype.apply = function(compiler) {
const info = {
examples: exampleData,
index: createWordIndex(exampleData)
index: createWordIndex(exampleData),
tags: Array.from(uniqueTags)
};
const indexSource = `var info = ${JSON.stringify(info)}`;
@@ -182,6 +187,13 @@ ExampleBuilder.prototype.render = async function(dir, chunk) {
data.olVersion = pkg.version;
data.filename = htmlName;
// process tags
if (data.tags) {
data.tags = data.tags.replace(/[\s"]+/g, '').split(',');
} else {
data.tags = [];
}
// add in script tag
const jsName = `${name}.js`;
let jsSource = getJsSource(chunk, path.join('.', jsName));

View File

@@ -12,4 +12,4 @@ tags: "GetLegendGraphic, getLegendUrl, WMS"
---
<div id="map" class="map"></div>
Legend:
<div><img id="legend" src=""/></div>
<div><img id="legend"/></div>

View File

@@ -4,9 +4,9 @@ title: Constrained Zoom
shortdesc: Example of a zoom constrained view.
docs: >
This map has a view that is constrained between zoom levels 9 and 13. This is done using the `minZoom` and `maxZoom` view options.
tags: "bing, zoom, minZoom, maxZoom"
tags: "maptiler, zoom, minZoom, maxZoom"
cloak:
- key: As1HiMj1PvLPlqc_gtM7AqZfBL8ZL3VrjaS3zIb22Uvb9WKhuJObROC-qUpa81U5
value: Your Bing Maps Key from http://www.bingmapsportal.com/ here
- key: get_your_own_D6rA4zTHduk6KOKTXzGB
value: Get your own API key at https://www.maptiler.com/cloud/
---
<div id="map" class="map"></div>

View File

@@ -1,16 +1,20 @@
import Map from '../src/ol/Map.js';
import View from '../src/ol/View.js';
import TileLayer from '../src/ol/layer/Tile.js';
import BingMaps from '../src/ol/source/BingMaps.js';
import XYZ from '../src/ol/source/XYZ.js';
const key = 'get_your_own_D6rA4zTHduk6KOKTXzGB';
const attributions = '<a href="https://www.maptiler.com/copyright/" target="_blank">&copy; MapTiler</a> ' +
'<a href="https://www.openstreetmap.org/copyright" target="_blank">&copy; OpenStreetMap contributors</a>';
const map = new Map({
target: 'map',
layers: [
new TileLayer({
source: new BingMaps({
key: 'As1HiMj1PvLPlqc_gtM7AqZfBL8ZL3VrjaS3zIb22Uvb9WKhuJObROC-qUpa81U5',
imagerySet: 'Aerial'
source: new XYZ({
attributions: attributions,
url: 'https://api.maptiler.com/tiles/satellite/{z}/{x}/{y}.jpg?key=' + key
})
})
],

View File

@@ -10,7 +10,6 @@ tags: "zoomify, deep zoom, IIP, pixel, projection"
<div class="controls">
<select id="zoomifyProtocol">
<option value="zoomify">Zoomify</option>
<option value="iip">IIP</option>
<option value="zoomifyretina">Zoomify Retina</option>
</select>
</div>

View File

@@ -3,36 +3,42 @@ import View from '../src/ol/View.js';
import TileLayer from '../src/ol/layer/Tile.js';
import Zoomify from '../src/ol/source/Zoomify.js';
const imgWidth = 9911;
const imgHeight = 6100;
const imgWidth = 4000;
const imgHeight = 3000;
const zoomifyUrl = 'http://vips.vtech.fr/cgi-bin/iipsrv.fcgi?zoomify=' +
'/mnt/MD1/AD00/plan_CHU-4HD-01/FOND.TIF/';
const iipUrl = 'http://vips.vtech.fr/cgi-bin/iipsrv.fcgi?FIF=' + '/mnt/MD1/AD00/plan_CHU-4HD-01/FOND.TIF' + '&JTL={z},{tileIndex}';
const zoomifyUrl = 'https://ol-zoomify.surge.sh/zoomify/';
const layer = new TileLayer({
source: new Zoomify({
tileSize: 256,
tilePixelRatio: 1,
url: zoomifyUrl,
size: [imgWidth, imgHeight],
crossOrigin: 'anonymous'
})
const source = new Zoomify({
url: zoomifyUrl,
size: [imgWidth, imgHeight],
crossOrigin: 'anonymous',
zDirection: -1 // Ensure we get a tile with the screen resolution or higher
});
const extent = source.getTileGrid().getExtent();
const retinaPixelRatio = 2;
const retinaSource = new Zoomify({
url: zoomifyUrl,
size: [imgWidth, imgHeight],
crossOrigin: 'anonymous',
zDirection: -1, // Ensure we get a tile with the screen resolution or higher
tilePixelRatio: retinaPixelRatio, // Display retina tiles
tileSize: 256 / retinaPixelRatio // from a higher zoom level
});
const extent = [0, -imgHeight, imgWidth, 0];
const resolutions = layer.getSource().getTileGrid().getResolutions();
const layer = new TileLayer({
source: source
});
const map = new Map({
layers: [layer],
target: 'map',
view: new View({
// adjust zoom levels to those provided by the source
minResolution: resolutions[resolutions.length - 1],
maxResolution: resolutions[0],
resolutions: layer.getSource().getTileGrid().getResolutions(),
// constrain the center: center cannot be set outside this extent
extent: extent
extent: extent,
constrainOnlyCenter: true
})
});
map.getView().fit(extent);
@@ -40,74 +46,11 @@ map.getView().fit(extent);
const control = document.getElementById('zoomifyProtocol');
control.addEventListener('change', function(event) {
const value = event.currentTarget.value;
if (value === 'iip') {
const extent = [0, -imgHeight, imgWidth, 0];
layer.setSource(
new Zoomify({
tileSize: 256,
tilePixelRatio: 1,
url: iipUrl,
size: [imgWidth, imgHeight],
crossOrigin: 'anonymous'
})
);
const resolutions = layer.getSource().getTileGrid().getResolutions();
map.setView(
new View({
// adjust zoom levels to those provided by the source
minResolution: resolutions[resolutions.length - 1],
maxResolution: resolutions[0],
// constrain the center: center cannot be set outside this extent
extent: extent
})
);
map.getView().fit(extent);
} else if (value === 'zoomify') {
const extent = [0, -imgHeight, imgWidth, 0];
layer.setSource(
new Zoomify({
tileSize: 256,
tilePixelRatio: 1,
url: zoomifyUrl,
size: [imgWidth, imgHeight],
crossOrigin: 'anonymous'
})
);
const resolutions = layer.getSource().getTileGrid().getResolutions();
map.setView(
new View({
// adjust zoom levels to those provided by the source
minResolution: resolutions[resolutions.length - 1],
maxResolution: resolutions[0],
// constrain the center: center cannot be set outside this extent
extent: extent
})
);
map.getView().fit(extent);
if (value === 'zoomify') {
layer.setSource(source);
} else if (value === 'zoomifyretina') {
const pixelRatio = 4;
// Be careful! Image extent will be modified by pixel ratio
const extent = [0, -imgHeight / pixelRatio, imgWidth / pixelRatio, 0];
layer.setSource(
new Zoomify({
tileSize: 256 / pixelRatio,
tilePixelRatio: pixelRatio,
url: zoomifyUrl,
size: [imgWidth / pixelRatio, imgHeight / pixelRatio],
crossOrigin: 'anonymous'
})
);
const resolutions = layer.getSource().getTileGrid().getResolutions();
map.setView(
new View({
// adjust zoom levels to those provided by the source
minResolution: resolutions[resolutions.length - 1] / pixelRatio,
maxResolution: resolutions[0],
// constrain the center: center cannot be set outside this extent
extent: extent
})
);
map.getView().fit(extent);
layer.setSource(retinaSource);
}
});

4590
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
{
"name": "ol",
"version": "6.1.1",
"version": "6.2.0",
"description": "OpenLayers mapping library",
"keywords": [
"map",
@@ -24,7 +24,7 @@
"copy-css": "shx cp src/ol/ol.css build/ol/ol.css",
"transpile": "shx rm -rf build/ol && shx mkdir -p build/ol && shx cp -rf src/ol build/ol/src && node tasks/serialize-workers && tsc --project config/tsconfig-build.json",
"typecheck": "tsc --pretty",
"apidoc": "jsdoc -R config/jsdoc/api/index.md -c config/jsdoc/api/conf.json -P package.json -d build/apidoc"
"apidoc": "shx rm -rf build/apidoc && jsdoc -R config/jsdoc/api/index.md -c config/jsdoc/api/conf.json -P package.json -d build/apidoc"
},
"main": "index.js",
"repository": {
@@ -36,7 +36,7 @@
"url": "https://github.com/openlayers/openlayers/issues"
},
"dependencies": {
"@openlayers/pepjs": "^0.5.3",
"elm-pep": "^1.0.4",
"pbf": "3.2.1",
"pixelworks": "1.1.0",
"rbush": "^3.0.1"
@@ -55,15 +55,15 @@
"chaikin-smooth": "^1.0.4",
"clean-css-cli": "4.3.0",
"copy-webpack-plugin": "^5.0.4",
"coveralls": "3.0.7",
"coveralls": "3.0.9",
"eslint": "^6.0.0",
"eslint-config-openlayers": "^13.0.0",
"expect.js": "0.3.1",
"front-matter": "^3.0.2",
"fs-extra": "^8.0.0",
"glob": "^7.1.5",
"globby": "^10.0.0",
"handlebars": "4.4.5",
"globby": "^11.0.0",
"handlebars": "4.7.3",
"html-to-image": "^0.1.0",
"istanbul": "0.4.5",
"istanbul-instrumenter-loader": "^3.0.1",
@@ -79,13 +79,13 @@
"karma-sourcemap-loader": "^0.3.7",
"karma-webpack": "^4.0.0-rc.2",
"loglevelnext": "^3.0.1",
"marked": "0.7.0",
"mocha": "6.2.2",
"ol-mapbox-style": "^5.0.2",
"marked": "0.8.0",
"mocha": "7.0.1",
"ol-mapbox-style": "^6.0.0",
"pixelmatch": "^5.1.0",
"pngjs": "^3.4.0",
"proj4": "2.5.0",
"puppeteer": "~1.20.0",
"proj4": "2.6.0",
"puppeteer": "~2.1.0",
"rollup": "^1.25.1",
"rollup-plugin-babel": "^4.3.3",
"rollup-plugin-commonjs": "^10.0.0",
@@ -93,16 +93,16 @@
"rollup-plugin-terser": "^5.0.0",
"serve-static": "^1.14.0",
"shx": "^0.3.2",
"sinon": "^7.3.2",
"sinon": "^8.0.0",
"terser-webpack-plugin": "^2.0.1",
"typescript": "3.5.3",
"url-polyfill": "^1.1.5",
"walk": "^2.3.9",
"webpack": "4.41.2",
"webpack": "4.41.5",
"webpack-cli": "^3.3.2",
"webpack-dev-middleware": "^3.6.2",
"webpack-dev-server": "^3.3.1",
"yargs": "^14.2.0"
"yargs": "^15.0.2"
},
"eslintConfig": {
"extends": "openlayers",

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.2 KiB

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.7 KiB

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 139 KiB

View File

@@ -0,0 +1,31 @@
import Map from '../../../src/ol/Map.js';
import View from '../../../src/ol/View.js';
import VectorTileSource from '../../../src/ol/source/VectorTile.js';
import MVT from '../../../src/ol/format/MVT.js';
import {createXYZ} from '../../../src/ol/tilegrid.js';
import VectorTileLayer from '../../../src/ol/layer/VectorTile.js';
import VectorTileRenderType from '../../../src/ol/layer/VectorTileRenderType.js';
new Map({
layers: [
new VectorTileLayer({
renderMode: VectorTileRenderType.VECTOR,
source: new VectorTileSource({
format: new MVT(),
tileGrid: createXYZ(),
url: '/data/tiles/mapbox-streets-v6/{z}/{x}/{y}.vector.pbf',
transition: 0
})
})
],
target: 'map',
view: new View({
center: [1825927.7316762917, 6143091.089223046],
zoom: 14
})
});
render({
message: 'Vector tile layer renders with vector render mode',
tolerance: 0.01
});

Binary file not shown.

Before

Width:  |  Height:  |  Size: 135 KiB

After

Width:  |  Height:  |  Size: 134 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 138 KiB

After

Width:  |  Height:  |  Size: 144 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 138 KiB

After

Width:  |  Height:  |  Size: 145 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 123 KiB

After

Width:  |  Height:  |  Size: 139 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 101 KiB

After

Width:  |  Height:  |  Size: 101 KiB

View File

@@ -13,16 +13,17 @@ const vectorSource = new VectorSource();
function createFeatures(stroke, fill, offSet = [0, 0]) {
let feature;
feature = new Feature({
geometry: new Point([-15 + offSet[0], 15 + offSet[1]])
geometry: new Point([offSet[0], offSet[1]])
});
// square
// square with offset
feature.setStyle(new Style({
image: new RegularShape({
fill: fill,
stroke: stroke,
points: 4,
radius: 10,
angle: Math.PI / 4
angle: Math.PI / 4,
displacement: [-15, 15]
})
}));
vectorSource.addFeature(feature);

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 23 KiB

View File

@@ -58,20 +58,6 @@ class ImageTile extends Tile {
}
/**
* @inheritDoc
*/
disposeInternal() {
if (this.state == TileState.LOADING) {
this.unlistenImage_();
this.image_ = getBlankImage();
}
if (this.interimTile) {
this.interimTile.dispose();
}
super.disposeInternal();
}
/**
* Get the HTML image element for this tile (may be a Canvas, Image, or Video).
* @return {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} Image.

View File

@@ -2,13 +2,14 @@
* @module ol/MapBrowserEventHandler
*/
import '@openlayers/pepjs';
import {DEVICE_PIXEL_RATIO} from './has.js';
import 'elm-pep';
import {DEVICE_PIXEL_RATIO, PASSIVE_EVENT_LISTENERS} from './has.js';
import MapBrowserEventType from './MapBrowserEventType.js';
import MapBrowserPointerEvent from './MapBrowserPointerEvent.js';
import {listen, unlistenByKey} from './events.js';
import EventTarget from './events/Target.js';
import PointerEventType from './pointer/EventType.js';
import EventType from './events/EventType.js';
class MapBrowserEventHandler extends EventTarget {
@@ -84,6 +85,12 @@ class MapBrowserEventHandler extends EventTarget {
PointerEventType.POINTERDOWN,
this.handlePointerDown_, this);
/**
* @type {PointerEvent}
* @private
*/
this.originalPointerMoveEvent_;
/**
* @type {?import("./events.js").EventsKey}
* @private
@@ -92,6 +99,13 @@ class MapBrowserEventHandler extends EventTarget {
PointerEventType.POINTERMOVE,
this.relayEvent_, this);
/**
* @private
*/
this.boundHandleTouchMove_ = this.handleTouchMove_.bind(this);
this.element_.addEventListener(EventType.TOUCHMOVE, this.boundHandleTouchMove_,
PASSIVE_EVENT_LISTENERS ? {passive: false} : false);
}
/**
@@ -246,11 +260,26 @@ class MapBrowserEventHandler extends EventTarget {
* @private
*/
relayEvent_(pointerEvent) {
this.originalPointerMoveEvent_ = pointerEvent;
const dragging = !!(this.down_ && this.isMoving_(pointerEvent));
this.dispatchEvent(new MapBrowserPointerEvent(
pointerEvent.type, this.map_, pointerEvent, dragging));
}
/**
* Flexible handling of a `touch-action: none` css equivalent: because calling
* `preventDefault()` on a `pointermove` event does not stop native page scrolling
* and zooming, we also listen for `touchmove` and call `preventDefault()` on it
* when an interaction (currently `DragPan` handles the event.
* @param {TouchEvent} event Event.
* @private
*/
handleTouchMove_(event) {
if (this.originalPointerMoveEvent_.defaultPrevented) {
event.preventDefault();
}
}
/**
* @param {PointerEvent} pointerEvent Pointer
* event.
@@ -271,6 +300,8 @@ class MapBrowserEventHandler extends EventTarget {
unlistenByKey(this.relayedListenerKey_);
this.relayedListenerKey_ = null;
}
this.element_.removeEventListener(EventType.TOUCHMOVE, this.boundHandleTouchMove_);
if (this.pointerdownListenerKey_) {
unlistenByKey(this.pointerdownListenerKey_);
this.pointerdownListenerKey_ = null;

View File

@@ -1,7 +1,6 @@
/**
* @module ol/PluggableMap
*/
import {getUid} from './util.js';
import Collection from './Collection.js';
import CollectionEventType from './CollectionEventType.js';
import MapBrowserEvent from './MapBrowserEvent.js';
@@ -22,7 +21,7 @@ import {listen, unlistenByKey} from './events.js';
import EventType from './events/EventType.js';
import {clone, createOrUpdateEmpty, equals, getForViewAndSize, isEmpty} from './extent.js';
import {TRUE} from './functions.js';
import {DEVICE_PIXEL_RATIO, IMAGE_DECODE} from './has.js';
import {DEVICE_PIXEL_RATIO, IMAGE_DECODE, PASSIVE_EVENT_LISTENERS} from './has.js';
import LayerGroup from './layer/Group.js';
import {hasArea} from './size.js';
import {DROP} from './structs/PriorityQueue.js';
@@ -131,17 +130,6 @@ import {toUserCoordinate, fromUserCoordinate} from './proj.js';
*/
/**
* @param {HTMLElement} element Element.
* @param {string} touchAction Value for `touch-action'.
*/
function setTouchAction(element, touchAction) {
element.style.msTouchAction = touchAction;
element.style.touchAction = touchAction;
element.setAttribute('touch-action', touchAction);
}
/**
* @fires import("./MapBrowserEvent.js").MapBrowserEvent
* @fires import("./MapEvent.js").MapEvent
@@ -305,15 +293,10 @@ class PluggableMap extends BaseObject {
*/
this.keyHandlerKeys_ = null;
/**
* @private
* @type {?Array<import("./events.js").EventsKey>}
*/
this.focusHandlerKeys_ = null;
const handleBrowserEvent = this.handleBrowserEvent.bind(this);
this.viewport_.addEventListener(EventType.CONTEXTMENU, handleBrowserEvent, false);
this.viewport_.addEventListener(EventType.WHEEL, handleBrowserEvent, false);
this.viewport_.addEventListener(EventType.WHEEL, handleBrowserEvent,
PASSIVE_EVENT_LISTENERS ? {passive: false} : false);
/**
* @type {Collection<import("./control/Control.js").default>}
@@ -949,12 +932,16 @@ class PluggableMap extends BaseObject {
// coordinates so interactions cannot be used.
return;
}
let target = mapBrowserEvent.originalEvent.target;
while (target instanceof HTMLElement) {
if (target.parentElement === this.overlayContainerStopEvent_) {
const target = /** @type {Node} */ (mapBrowserEvent.originalEvent.target);
if (!mapBrowserEvent.dragging) {
if (this.overlayContainerStopEvent_.contains(target) || !document.body.contains(target)) {
// Abort if the event target is a child of the container that doesn't allow
// event propagation or is no longer in the page. It's possible for the target to no longer
// be in the page if it has been removed in an event listener, this might happen in a Control
// that recreates it's content based on user interaction either manually or via a render
// in something like https://reactjs.org/
return;
}
target = target.parentElement;
}
mapBrowserEvent.frameState = this.frameState_;
const interactionsArray = this.getInteractions().getArray();
@@ -1043,12 +1030,6 @@ class PluggableMap extends BaseObject {
targetElement = this.getTargetElement();
}
if (this.focusHandlerKeys_) {
for (let i = 0, ii = this.focusHandlerKeys_.length; i < ii; ++i) {
unlistenByKey(this.focusHandlerKeys_[i]);
}
this.focusHandlerKeys_ = null;
}
if (this.keyHandlerKeys_) {
for (let i = 0, ii = this.keyHandlerKeys_.length; i < ii; ++i) {
unlistenByKey(this.keyHandlerKeys_[i]);
@@ -1077,15 +1058,6 @@ class PluggableMap extends BaseObject {
if (!this.renderer_) {
this.renderer_ = this.createRenderer();
}
let hasFocus = true;
if (targetElement.hasAttribute('tabindex')) {
hasFocus = document.activeElement === targetElement;
this.focusHandlerKeys_ = [
listen(targetElement, EventType.FOCUS, setTouchAction.bind(this, this.viewport_, 'none')),
listen(targetElement, EventType.BLUR, setTouchAction.bind(this, this.viewport_, 'auto'))
];
}
setTouchAction(this.viewport_, hasFocus ? 'none' : 'auto');
const keyboardEventTarget = !this.keyboardEventTarget_ ?
targetElement : this.keyboardEventTarget_;
@@ -1133,7 +1105,8 @@ class PluggableMap extends BaseObject {
}
const view = this.getView();
if (view) {
this.viewport_.setAttribute('data-view', getUid(view));
this.updateViewportSize_();
this.viewPropertyListenerKey_ = listen(
view, ObjectEventType.PROPERTYCHANGE,
this.handleViewPropertyChanged_, this);
@@ -1391,6 +1364,27 @@ class PluggableMap extends BaseObject {
parseFloat(computedStyle['borderBottomWidth'])
]);
}
this.updateViewportSize_();
}
/**
* Recomputes the viewport size and save it on the view object (if any)
* @private
*/
updateViewportSize_() {
const view = this.getView();
if (view) {
let size = undefined;
const computedStyle = getComputedStyle(this.viewport_);
if (computedStyle.width && computedStyle.height) {
size = [
parseInt(computedStyle.width, 10),
parseInt(computedStyle.height, 10)
];
}
view.setViewportSize(size);
}
}
}

View File

@@ -145,10 +145,9 @@ class Tile extends EventTarget {
}
/**
* @inheritDoc
* Called by the tile cache when the tile is removed from the cache due to expiry
*/
disposeInternal() {
this.setState(TileState.ABORT);
release() {
}
/**

View File

@@ -6,15 +6,6 @@ import {fromKey, getKey} from './tilecoord.js';
class TileCache extends LRUCache {
/**
* @param {number=} opt_highWaterMark High water mark.
*/
constructor(opt_highWaterMark) {
super(opt_highWaterMark);
}
/**
* @param {!Object<string, import("./TileRange.js").default>} usedTiles Used tiles.
*/
@@ -24,7 +15,7 @@ class TileCache extends LRUCache {
if (tile.getKey() in usedTiles) {
break;
} else {
this.pop().dispose();
this.pop().release();
}
}
}
@@ -42,7 +33,7 @@ class TileCache extends LRUCache {
this.forEach(function(tile) {
if (tile.tileCoord[0] !== z) {
this.remove(getKey(tile.tileCoord));
tile.dispose();
tile.release();
}
}.bind(this));
}

View File

@@ -84,8 +84,7 @@ class TileQueue extends PriorityQueue {
handleTileChange(event) {
const tile = /** @type {import("./Tile.js").default} */ (event.target);
const state = tile.getState();
if (tile.hifi && state === TileState.LOADED || state === TileState.ERROR ||
state === TileState.EMPTY || state === TileState.ABORT) {
if (tile.hifi && state === TileState.LOADED || state === TileState.ERROR || state === TileState.EMPTY) {
tile.removeEventListener(EventType.CHANGE, this.boundHandleTileChange_);
const tileKey = tile.getKey();
if (tileKey in this.tilesLoadingKeys_) {
@@ -102,27 +101,19 @@ class TileQueue extends PriorityQueue {
*/
loadMoreTiles(maxTotalLoading, maxNewLoads) {
let newLoads = 0;
let abortedTiles = false;
let state, tile, tileKey;
while (this.tilesLoading_ < maxTotalLoading && newLoads < maxNewLoads &&
this.getCount() > 0) {
tile = /** @type {import("./Tile.js").default} */ (this.dequeue()[0]);
tileKey = tile.getKey();
state = tile.getState();
if (state === TileState.ABORT) {
abortedTiles = true;
} else if (state === TileState.IDLE && !(tileKey in this.tilesLoadingKeys_)) {
if (state === TileState.IDLE && !(tileKey in this.tilesLoadingKeys_)) {
this.tilesLoadingKeys_[tileKey] = true;
++this.tilesLoading_;
++newLoads;
tile.load();
}
}
if (newLoads === 0 && abortedTiles) {
// Do not stop the render loop when all wanted tiles were aborted due to
// a small, saturated tile cache.
this.tileChangeCallback_();
}
}
}

View File

@@ -14,6 +14,5 @@ export default {
* @type {number}
*/
ERROR: 3,
EMPTY: 4,
ABORT: 5
EMPTY: 4
};

View File

@@ -4,7 +4,6 @@
import {getUid} from './util.js';
import Tile from './Tile.js';
import {createCanvasContext2D} from './dom.js';
import {unlistenByKey} from './events.js';
/**
@@ -19,6 +18,10 @@ import {unlistenByKey} from './events.js';
* @property {number} renderedTileZ
*/
/**
* @type {Array<HTMLCanvasElement>}
*/
const canvasPool = [];
class VectorRenderTile extends Tile {
@@ -26,13 +29,10 @@ class VectorRenderTile extends Tile {
* @param {import("./tilecoord.js").TileCoord} tileCoord Tile coordinate.
* @param {import("./TileState.js").default} state State.
* @param {import("./tilecoord.js").TileCoord} urlTileCoord Wrapped tile coordinate for source urls.
* @param {import("./tilegrid/TileGrid.js").default} sourceTileGrid Tile grid of the source.
* @param {function(VectorRenderTile):Array<import("./VectorTile").default>} getSourceTiles Function
* to get an source tiles for this tile.
* @param {function(VectorRenderTile):void} removeSourceTiles Function to remove this tile from its
* source tiles's consumer count.
* to get source tiles for this tile.
*/
constructor(tileCoord, state, urlTileCoord, sourceTileGrid, getSourceTiles, removeSourceTiles) {
constructor(tileCoord, state, urlTileCoord, getSourceTiles) {
super(tileCoord, state, {transition: 0});
@@ -61,9 +61,9 @@ class VectorRenderTile extends Tile {
this.errorSourceTileKeys = {};
/**
* @type {ImageData}
* @type {Object<number, ImageData>}
*/
this.hitDetectionImageData = null;
this.hitDetectionImageData = {};
/**
* @private
@@ -71,6 +71,11 @@ class VectorRenderTile extends Tile {
*/
this.replayState_ = {};
/**
* @type {Array<import("./VectorTile.js").default>}
*/
this.sourceTiles = null;
/**
* @type {number}
*/
@@ -79,23 +84,7 @@ class VectorRenderTile extends Tile {
/**
* @type {!function():Array<import("./VectorTile.js").default>}
*/
this.getSourceTiles = getSourceTiles.bind(this, this);
/**
* @type {!function(import("./VectorRenderTile.js").default):void}
*/
this.removeSourceTiles_ = removeSourceTiles;
/**
* @private
* @type {import("./tilegrid/TileGrid.js").default}
*/
this.sourceTileGrid_ = sourceTileGrid;
/**
* @type {Array<import("./events.js").EventsKey>}
*/
this.sourceTileListenerKeys = [];
this.getSourceTiles = getSourceTiles.bind(undefined, this);
/**
* z of the source tiles of the last getSourceTiles call.
@@ -115,27 +104,6 @@ class VectorRenderTile extends Tile {
this.wrappedTileCoord = urlTileCoord;
}
/**
* @inheritDoc
*/
disposeInternal() {
this.sourceTileListenerKeys.forEach(unlistenByKey);
this.sourceTileListenerKeys.length = 0;
this.removeSourceTiles_(this);
for (const key in this.context_) {
const canvas = this.context_[key].canvas;
canvas.width = 0;
canvas.height = 0;
}
for (const key in this.executorGroups) {
const executorGroups = this.executorGroups[key];
for (let i = 0, ii = executorGroups.length; i < ii; ++i) {
executorGroups[i].disposeInternal();
}
}
super.disposeInternal();
}
/**
* @param {import("./layer/Layer.js").default} layer Layer.
* @return {CanvasRenderingContext2D} The rendering context.
@@ -143,7 +111,7 @@ class VectorRenderTile extends Tile {
getContext(layer) {
const key = getUid(layer);
if (!(key in this.context_)) {
this.context_[key] = createCanvasContext2D();
this.context_[key] = createCanvasContext2D(1, 1, canvasPool);
}
return this.context_[key];
}
@@ -192,6 +160,16 @@ class VectorRenderTile extends Tile {
load() {
this.getSourceTiles();
}
/**
* @inheritDoc
*/
release() {
for (const key in this.context_) {
canvasPool.push(this.context_[key].canvas);
}
super.release();
}
}

View File

@@ -18,11 +18,6 @@ class VectorTile extends Tile {
super(tileCoord, state, opt_options);
/**
* @type {number}
*/
this.consumers = 0;
/**
* Extent of this tile; set by the source.
* @type {import("./extent.js").Extent}
@@ -105,7 +100,9 @@ class VectorTile extends Tile {
if (this.state == TileState.IDLE) {
this.setState(TileState.LOADING);
this.tileLoadFunction_(this, this.url_);
this.loader_(this.extent, this.resolution, this.projection);
if (this.loader_) {
this.loader_(this.extent, this.resolution, this.projection);
}
}
}

View File

@@ -2,7 +2,6 @@
* @module ol/View
*/
import {DEFAULT_TILE_SIZE} from './tilegrid/common.js';
import {getUid} from './util.js';
import {VOID} from './functions.js';
import {createExtent, none as centerNone} from './centerconstraint.js';
import BaseObject from './Object.js';
@@ -130,6 +129,14 @@ import {createMinMaxResolution} from './resolutionconstraint.js';
* @property {boolean} [smoothResolutionConstraint=true] If true, the resolution
* min/max values will be applied smoothly, i. e. allow the view to exceed slightly
* the given resolution or zoom bounds.
* @property {boolean} [showFullExtent=false] Allow the view to be zoomed out to
* show the full configured extent. By default, when a view is configured with an
* extent, users will not be able to zoom out so the viewport exceeds the extent in
* either dimension. This means the full extent may not be visible if the viewport
* is taller or wider than the aspect ratio of the configured extent. If
* showFullExtent is true, the user will be able to zoom out so that the viewport
* exceeds the height or width of the configured extent, but not both, allowing the
* full extent to be shown.
* @property {import("./proj.js").ProjectionLike} [projection='EPSG:3857'] The
* projection. The default is Spherical Mercator.
* @property {number} [resolution] The initial resolution for the view. The
@@ -294,6 +301,12 @@ class View extends BaseObject {
*/
this.projection_ = createProjection(options.projection, 'EPSG:3857');
/**
* @private
* @type {import("./size.js").Size}
*/
this.viewportSize_ = [100, 100];
/**
* @private
* @type {import("./coordinate.js").Coordinate|undefined}
@@ -312,6 +325,12 @@ class View extends BaseObject {
*/
this.targetRotation_;
/**
* @private
* @type {import("./coordinate.js").Coordinate|undefined}
*/
this.cancelAnchor_ = undefined;
if (options.center) {
options.center = fromUserCoordinate(options.center, this.projection_);
}
@@ -584,13 +603,19 @@ class View extends BaseObject {
*/
cancelAnimations() {
this.setHint(ViewHint.ANIMATING, -this.hints_[ViewHint.ANIMATING]);
let anchor;
for (let i = 0, ii = this.animations_.length; i < ii; ++i) {
const series = this.animations_[i];
if (series[0].callback) {
animationCallback(series[0].callback, false);
}
anchor = anchor ||
series.filter(function(animation) {
return !animation.complete;
})[0].anchor;
}
this.animations_.length = 0;
this.cancelAnchor_ = anchor;
}
/**
@@ -637,7 +662,7 @@ class View extends BaseObject {
animation.targetResolution :
animation.sourceResolution + progress * (animation.targetResolution - animation.sourceResolution);
if (animation.anchor) {
const size = this.getSizeFromViewport_(this.getRotation());
const size = this.getViewportSize_(this.getRotation());
const constrainedResolution = this.constraints_.resolution(resolution, 0, size, true);
this.targetCenter_ = this.calculateCenterZoom(constrainedResolution, animation.anchor);
}
@@ -710,26 +735,33 @@ class View extends BaseObject {
}
/**
* Returns the current viewport size.
* @private
* @param {number=} opt_rotation Take into account the rotation of the viewport when giving the size
* @return {import("./size.js").Size} Viewport size or `[100, 100]` when no viewport is found.
*/
getSizeFromViewport_(opt_rotation) {
const size = [100, 100];
const selector = '.ol-viewport[data-view="' + getUid(this) + '"]';
const element = document.querySelector(selector);
if (element) {
const metrics = getComputedStyle(element);
size[0] = parseInt(metrics.width, 10);
size[1] = parseInt(metrics.height, 10);
}
getViewportSize_(opt_rotation) {
const size = this.viewportSize_;
if (opt_rotation) {
const w = size[0];
const h = size[1];
size[0] = Math.abs(w * Math.cos(opt_rotation)) + Math.abs(h * Math.sin(opt_rotation));
size[1] = Math.abs(w * Math.sin(opt_rotation)) + Math.abs(h * Math.cos(opt_rotation));
return [
Math.abs(w * Math.cos(opt_rotation)) + Math.abs(h * Math.sin(opt_rotation)),
Math.abs(w * Math.sin(opt_rotation)) + Math.abs(h * Math.cos(opt_rotation))
];
} else {
return size;
}
return size;
}
/**
* Stores the viewport size on the view. The viewport size is not read every time from the DOM
* to avoid performance hit and layout reflow.
* This should be done on map size change.
* @param {import("./size.js").Size=} opt_size Viewport size; if undefined, [100, 100] is assumed
*/
setViewportSize(opt_size) {
this.viewportSize_ = Array.isArray(opt_size) ? opt_size.slice() : [100, 100];
}
/**
@@ -780,8 +812,8 @@ class View extends BaseObject {
* The size is the pixel dimensions of the box into which the calculated extent
* should fit. In most cases you want to get the extent of the entire map,
* that is `map.getSize()`.
* @param {import("./size.js").Size=} opt_size Box pixel size. If not provided, the size of the
* first map that uses this view will be used.
* @param {import("./size.js").Size=} opt_size Box pixel size. If not provided, the size
* of the map that uses this view will be used.
* @return {import("./extent.js").Extent} Extent.
* @api
*/
@@ -796,7 +828,7 @@ class View extends BaseObject {
* @return {import("./extent.js").Extent} Extent.
*/
calculateExtentInternal(opt_size) {
const size = opt_size || this.getSizeFromViewport_();
const size = opt_size || this.getViewportSize_();
const center = /** @type {!import("./coordinate.js").Coordinate} */ (this.getCenterInternal());
assert(center, 1); // The view center is not defined
const resolution = /** @type {!number} */ (this.getResolution());
@@ -919,7 +951,7 @@ class View extends BaseObject {
* the given size.
*/
getResolutionForExtentInternal(extent, opt_size) {
const size = opt_size || this.getSizeFromViewport_();
const size = opt_size || this.getViewportSize_();
const xResolution = getWidth(extent) / size[0];
const yResolution = getHeight(extent) / size[1];
return Math.max(xResolution, yResolution);
@@ -933,7 +965,7 @@ class View extends BaseObject {
*/
getResolutionForValueFunction(opt_power) {
const power = opt_power || 2;
const maxResolution = this.maxResolution_;
const maxResolution = this.getConstrainedResolution(this.maxResolution_);
const minResolution = this.minResolution_;
const max = Math.log(maxResolution / minResolution) / Math.log(power);
return (
@@ -964,17 +996,17 @@ class View extends BaseObject {
* @return {function(number): number} Value for resolution function.
*/
getValueForResolutionFunction(opt_power) {
const power = opt_power || 2;
const maxResolution = this.maxResolution_;
const logPower = Math.log(opt_power || 2);
const maxResolution = this.getConstrainedResolution(this.maxResolution_);
const minResolution = this.minResolution_;
const max = Math.log(maxResolution / minResolution) / Math.log(power);
const max = Math.log(maxResolution / minResolution) / logPower;
return (
/**
* @param {number} resolution Resolution.
* @return {number} Value.
*/
function(resolution) {
const value = (Math.log(maxResolution / resolution) / Math.log(power)) / max;
const value = (Math.log(maxResolution / resolution) / logPower) / max;
return value;
});
}
@@ -1067,7 +1099,7 @@ class View extends BaseObject {
* @api
*/
fit(geometryOrExtent, opt_options) {
const options = assign({size: this.getSizeFromViewport_()}, opt_options || {});
const options = assign({size: this.getViewportSize_()}, opt_options || {});
/** @type {import("./geom/SimpleGeometry.js").default} */
let geometry;
@@ -1085,7 +1117,7 @@ class View extends BaseObject {
} else {
const userProjection = getUserProjection();
if (userProjection) {
geometry = /** @type {import("./geom/SimpleGeometry.js").default} */ (geometry.clone().transform(userProjection, this.getProjection()));
geometry = /** @type {import("./geom/SimpleGeometry.js").default} */ (geometryOrExtent.clone().transform(userProjection, this.getProjection()));
} else {
geometry = geometryOrExtent;
}
@@ -1102,7 +1134,7 @@ class View extends BaseObject {
const options = opt_options || {};
let size = options.size;
if (!size) {
size = this.getSizeFromViewport_();
size = this.getViewportSize_();
}
const padding = options.padding !== undefined ? options.padding : [0, 0, 0, 0];
const nearest = options.nearest !== undefined ? options.nearest : false;
@@ -1249,10 +1281,10 @@ class View extends BaseObject {
*/
adjustResolutionInternal(ratio, opt_anchor) {
const isMoving = this.getAnimating() || this.getInteracting();
const size = this.getSizeFromViewport_(this.getRotation());
const size = this.getViewportSize_(this.getRotation());
const newResolution = this.constraints_.resolution(this.targetResolution_ * ratio, 0, size, isMoving);
if (opt_anchor !== undefined) {
if (opt_anchor) {
this.targetCenter_ = this.calculateCenterZoom(newResolution, opt_anchor);
}
@@ -1292,7 +1324,7 @@ class View extends BaseObject {
adjustRotationInternal(delta, opt_anchor) {
const isMoving = this.getAnimating() || this.getInteracting();
const newRotation = this.constraints_.rotation(this.targetRotation_ + delta, isMoving);
if (opt_anchor !== undefined) {
if (opt_anchor) {
this.targetCenter_ = this.calculateCenterRotate(newRotation, opt_anchor);
}
this.targetRotation_ += delta;
@@ -1373,7 +1405,7 @@ class View extends BaseObject {
// compute rotation
const newRotation = this.constraints_.rotation(this.targetRotation_, isMoving);
const size = this.getSizeFromViewport_(newRotation);
const size = this.getViewportSize_(newRotation);
const newResolution = this.constraints_.resolution(this.targetResolution_, 0, size, isMoving);
const newCenter = this.constraints_.center(this.targetCenter_, newResolution, size, isMoving);
@@ -1390,6 +1422,7 @@ class View extends BaseObject {
if (this.getAnimating() && !opt_doNotCancelAnims) {
this.cancelAnimations();
}
this.cancelAnchor_ = undefined;
}
/**
@@ -1406,11 +1439,11 @@ class View extends BaseObject {
const direction = opt_resolutionDirection || 0;
const newRotation = this.constraints_.rotation(this.targetRotation_);
const size = this.getSizeFromViewport_(newRotation);
const size = this.getViewportSize_(newRotation);
const newResolution = this.constraints_.resolution(this.targetResolution_, direction, size);
const newCenter = this.constraints_.center(this.targetCenter_, newResolution, size);
if (duration === 0) {
if (duration === 0 && !this.cancelAnchor_) {
this.targetResolution_ = newResolution;
this.targetRotation_ = newRotation;
this.targetCenter_ = newCenter;
@@ -1418,6 +1451,9 @@ class View extends BaseObject {
return;
}
const anchor = opt_anchor || (duration === 0 ? this.cancelAnchor_ : undefined);
this.cancelAnchor_ = undefined;
if (this.getResolution() !== newResolution ||
this.getRotation() !== newRotation ||
!this.getCenterInternal() ||
@@ -1433,7 +1469,7 @@ class View extends BaseObject {
resolution: newResolution,
duration: duration,
easing: easeOut,
anchor: opt_anchor
anchor: anchor
});
}
}
@@ -1484,7 +1520,7 @@ class View extends BaseObject {
* @return {import("./coordinate.js").Coordinate|undefined} Valid center position.
*/
getConstrainedCenter(targetCenter, opt_targetResolution) {
const size = this.getSizeFromViewport_(this.getRotation());
const size = this.getViewportSize_(this.getRotation());
return this.constraints_.center(targetCenter, opt_targetResolution || this.getResolution(), size);
}
@@ -1513,7 +1549,7 @@ class View extends BaseObject {
*/
getConstrainedResolution(targetResolution, opt_direction) {
const direction = opt_direction || 0;
const size = this.getSizeFromViewport_(this.getRotation());
const size = this.getViewportSize_(this.getRotation());
return this.constraints_.resolution(targetResolution, direction, size);
}
@@ -1583,6 +1619,9 @@ export function createResolutionConstraint(options) {
const smooth =
options.smoothResolutionConstraint !== undefined ? options.smoothResolutionConstraint : true;
const showFullExtent =
options.showFullExtent !== undefined ? options.showFullExtent : false;
const projection = createProjection(options.projection, 'EPSG:3857');
const projExtent = projection.getExtent();
let constrainOnlyCenter = options.constrainOnlyCenter;
@@ -1600,10 +1639,10 @@ export function createResolutionConstraint(options) {
if (options.constrainResolution) {
resolutionConstraint = createSnapToResolutions(resolutions, smooth,
!constrainOnlyCenter && extent);
!constrainOnlyCenter && extent, showFullExtent);
} else {
resolutionConstraint = createMinMaxResolution(maxResolution, minResolution, smooth,
!constrainOnlyCenter && extent);
!constrainOnlyCenter && extent, showFullExtent);
}
} else {
// calculate the default min and max resolution
@@ -1649,10 +1688,10 @@ export function createResolutionConstraint(options) {
if (options.constrainResolution) {
resolutionConstraint = createSnapToPower(
zoomFactor, maxResolution, minResolution, smooth,
!constrainOnlyCenter && extent);
!constrainOnlyCenter && extent, showFullExtent);
} else {
resolutionConstraint = createMinMaxResolution(maxResolution, minResolution, smooth,
!constrainOnlyCenter && extent);
!constrainOnlyCenter && extent, showFullExtent);
}
}
return {constraint: resolutionConstraint, maxResolution: maxResolution,

View File

@@ -325,7 +325,6 @@ class Attribution extends Control {
* Update the attribution element.
* @param {import("../MapEvent.js").default} mapEvent Map event.
* @this {Attribution}
* @api
*/
export function render(mapEvent) {
this.updateElement_(mapEvent.frameState);

View File

@@ -79,9 +79,10 @@ class Control extends BaseObject {
this.listenerKeys = [];
/**
* @private
* @type {function(import("../MapEvent.js").default): void}
*/
this.render = options.render ? options.render : VOID;
this.render_ = options.render ? options.render : VOID;
if (options.target) {
this.setTarget(options.target);
@@ -134,6 +135,16 @@ class Control extends BaseObject {
}
}
/**
* Update the projection. Rendering of the coordinates is done in
* `handleMouseMove` and `handleMouseUp`.
* @param {import("../MapEvent.js").default} mapEvent Map event.
* @api
*/
render(mapEvent) {
this.render_.call(this, mapEvent);
}
/**
* This function is used to set a target element for the control. It has no
* effect if it is called after the control has been added to the map (i.e.

View File

@@ -1,12 +1,13 @@
/**
* @module ol/control/MousePosition
*/
import 'elm-pep';
import {listen} from '../events.js';
import EventType from '../pointer/EventType.js';
import {getChangeEventType} from '../Object.js';
import Control from './Control.js';
import {getTransformFromProjections, identityTransform, get as getProjection, getUserProjection} from '../proj.js';
import '@openlayers/pepjs';
/**
@@ -247,7 +248,6 @@ class MousePosition extends Control {
* `handleMouseMove` and `handleMouseUp`.
* @param {import("../MapEvent.js").default} mapEvent Map event.
* @this {MousePosition}
* @api
*/
export function render(mapEvent) {
const frameState = mapEvent.frameState;

Some files were not shown because too many files have changed in this diff Show More