Compare commits

...

549 Commits

Author SHA1 Message Date
Andreas Hocevar
3902759595 Update package version to 6.1.0 2019-10-28 21:44:02 +01:00
Andreas Hocevar
d71c733d9b Changelog for v6.1.0 2019-10-28 21:44:01 +01:00
Andreas Hocevar
90e1819d76 Merge pull request #10214 from jahow/webgl-layer-boolean-operators
WebGL / Add 'case' operator for style expressions
2019-10-28 21:11:47 +01:00
Olivier Guyot
f84fae8f70 Merge pull request #10198 from jahow/fix-webgl-renderer-loading-extent
WebGL renderer / use the specified loading strategy for the vector data
2019-10-28 16:19:52 +01:00
Olivier Guyot
6c0dd6152d Modified the icon-sprite-webgl example to allow filtering on a string attribute 2019-10-28 15:55:15 +01:00
Olivier Guyot
b96e70e952 Expressions / renamed mod to % to be more in line with MB style spec 2019-10-28 15:55:15 +01:00
Olivier Guyot
501c90b0a2 Expressions / introduced the case operator
This operator is used for if/else control flow
2019-10-28 15:52:31 +01:00
Olivier Guyot
2a2783c086 ShaderBuilder / better handling of strings variables/attributes
Now values which are not mentioned in the style are still added to
the string literals mapping.

Also an error will be thrown if a style references a missing variable.
2019-10-28 15:21:44 +01:00
Olivier Guyot
2f49876180 Expressions / add != operator & slightly better doc 2019-10-28 15:13:43 +01:00
Frédéric Junod
c7161acb6a Merge pull request #10212 from fredj/dependabot_config
Add config file for dependabot
2019-10-28 13:53:07 +01:00
Andreas Hocevar
db6314b6b2 Merge pull request #10187 from ahocevar/tabindex-scrollover
Set touch-action to allow native touch gestures
2019-10-28 13:49:44 +01:00
Tim Schaub
65eb24da68 Merge pull request #10194 from MrSoUndso/dev
Added check to make sure extent array has four objects.
2019-10-28 06:39:11 -06:00
Jakob Gerstmayer
6652192647 fixed spacing issues (again) 2019-10-28 12:55:26 +01:00
Jakob Gerstmayer
bc34fe5b71 incorporated suggestions 2019-10-28 12:51:40 +01:00
Olivier Guyot
80b4473180 Simplify the heatmap example
Use a weight function instead of manually edditing the features.
2019-10-28 10:27:29 +01:00
Olivier Guyot
cd3b222467 Specify an actual extent when loading features in the Webgl points renderer
This means any specified loading strategy will be taken into account.

Also added some tests to make sure the interaction with the source is
correct.
2019-10-28 10:26:31 +01:00
Andreas Hocevar
6e4259359b Merge pull request #10208 from openlayers/dependabot/npm_and_yarn/pixelmatch-5.1.0
Bump pixelmatch from 5.0.2 to 5.1.0
2019-10-28 09:24:39 +01:00
Frederic Junod
a2e6119da1 Add config file for dependabot 2019-10-28 09:24:35 +01:00
dependabot-preview[bot]
c992cea9a4 Bump pixelmatch from 5.0.2 to 5.1.0
Bumps [pixelmatch](https://github.com/mapbox/pixelmatch) from 5.0.2 to 5.1.0.
- [Release notes](https://github.com/mapbox/pixelmatch/releases)
- [Commits](https://github.com/mapbox/pixelmatch/compare/v5.0.2...v5.1.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-10-28 08:14:17 +00:00
Andreas Hocevar
ced327e9a0 Merge pull request #10210 from openlayers/dependabot/npm_and_yarn/glob-7.1.5
Bump glob from 7.1.4 to 7.1.5
2019-10-28 09:14:06 +01:00
Andreas Hocevar
df1fcc0d90 Merge pull request #10209 from openlayers/dependabot/npm_and_yarn/karma-4.4.1
Bump karma from 4.1.0 to 4.4.1
2019-10-28 09:13:19 +01:00
Andreas Hocevar
b13cbe8cb8 Merge pull request #10207 from openlayers/dependabot/npm_and_yarn/ol-mapbox-style-5.0.2
Bump ol-mapbox-style from 5.0.0-beta.3 to 5.0.2
2019-10-28 09:12:19 +01:00
dependabot-preview[bot]
2abc88d41c Bump glob from 7.1.4 to 7.1.5
Bumps [glob](https://github.com/isaacs/node-glob) from 7.1.4 to 7.1.5.
- [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.4...v7.1.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-10-28 07:55:53 +00:00
dependabot-preview[bot]
3e0494aa9e Bump karma from 4.1.0 to 4.4.1
Bumps [karma](https://github.com/karma-runner/karma) from 4.1.0 to 4.4.1.
- [Release notes](https://github.com/karma-runner/karma/releases)
- [Changelog](https://github.com/karma-runner/karma/blob/master/CHANGELOG.md)
- [Commits](https://github.com/karma-runner/karma/compare/v4.1.0...v4.4.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-10-28 07:55:02 +00:00
dependabot-preview[bot]
aa5487b67b Bump ol-mapbox-style from 5.0.0-beta.3 to 5.0.2
Bumps [ol-mapbox-style](https://github.com/openlayers/ol-mapbox-style) from 5.0.0-beta.3 to 5.0.2.
- [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/v5.0.0-beta.3...v5.0.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-10-28 07:52:59 +00:00
Tim Schaub
76333f72ba Merge pull request #10204 from tschaub/doc-layout
Avoid scrolling over navigation
2019-10-27 17:05:39 -06:00
Tim Schaub
3ac08bcbef Merge pull request #10205 from tschaub/inline-default
Add the default to the type column
2019-10-27 17:04:17 -06:00
Andreas Hocevar
15a64e657d Merge pull request #10178 from TieSKey/master
Make ol/interaction/Select#handleEvent return always true.
2019-10-27 22:58:39 +01:00
TigerShark
4f0431edd5 Restore pointerMove in condition.js and example.
Wrongly removed on previous commit as pointed by @ahocevar.
2019-10-27 11:45:53 -03:00
Tim Schaub
0f87df0ade Add the default to the type column 2019-10-26 17:27:04 -06:00
Tim Schaub
1c21853269 Avoid scrolling over navigation 2019-10-26 16:56:14 -06:00
Tim Schaub
1cd9256771 Merge pull request #10203 from tschaub/exempt-milestones
Keep issues assigned to a milestone from going stale
2019-10-26 16:29:28 -06:00
Tim Schaub
fcb95ced5f Merge pull request #10200 from tschaub/carbon
Carbon add on API docs
2019-10-26 13:11:21 -06:00
Tim Schaub
ffab886964 Keep issues assigned to a milestone from going stale 2019-10-26 13:10:16 -06:00
Tim Schaub
27cbbaf97b Less jumpy 2019-10-26 12:30:38 -06:00
Tim Schaub
c0831cc64b Carbon add on API docs 2019-10-26 11:11:04 -06:00
Olivier Guyot
c40263c38b Merge pull request #10196 from jahow/webgl-add-string-operators
Webgl / add support for string and arrays in style expressions
2019-10-25 17:27:39 +02:00
Frederic Junod
daaf9695ff Add assertNumbers function in ol/style/expressions 2019-10-25 15:46:49 +02:00
Andreas Hocevar
5d358a7367 Merge pull request #10197 from ahocevar/restore-node8-compatibility
Restore node v8 compatibility
2019-10-25 15:21:23 +02:00
Andreas Hocevar
80abb8fb15 Merge pull request #10195 from mike-000/patch-2
Treat hsl/hsla as named colors
2019-10-25 15:17:30 +02:00
Olivier Guyot
e63bb45e6f Webgl points layer / allow disabling hit detection
Having hit detection enabled has an overhead as it means
continously generating additional render instructions and rendering
to an offscreen canvas
2019-10-25 15:11:37 +02:00
Andreas Hocevar
edc02dbde2 Restore node v8 compatibility 2019-10-25 15:11:11 +02:00
Olivier Guyot
4462608991 Expressions / adds color and array conversion operators
Also fixes existing error throwingtests which were essentially doing nothing.
2019-10-25 14:55:44 +02:00
Olivier Guyot
ff3cc9b4d0 Expressions / renamed operator pow to ^
To be more in line with Mapbox style spec
2019-10-25 14:55:44 +02:00
Olivier Guyot
a844691d7b Added new example styles in the webgl points layer example 2019-10-25 14:55:44 +02:00
Olivier Guyot
acf973751b Webgl / added time and resolution as default uniforms
Also added the `zoom` and `resolution` style operators
2019-10-25 14:55:44 +02:00
Olivier Guyot
e843b2cfc0 Expressions / adaptation and cleanup after stretch operator removal
The examples have been fixed as well.
2019-10-25 14:55:44 +02:00
Olivier Guyot
719495587c Expressions / rework the interpolate operator
This operator is now able to map numbers to output ranges as well as colors,
making the stretch operator unnecessary. Also allows giving multiple stops,
like in Mapbox style spec.
2019-10-25 14:55:44 +02:00
Olivier Guyot
9e010631c1 Expressions / refactor operators to avoid linting errors
Previously the utilities used the Operators dict before its definition.
2019-10-25 14:55:44 +02:00
Olivier Guyot
a64f2eb720 Update the icon-sprite-webgl example to use a WebGLPoints layer 2019-10-25 14:55:44 +02:00
Olivier Guyot
d643951a74 Shader Builder / add option to generate hit detection shaders 2019-10-25 14:55:44 +02:00
Olivier Guyot
a39f751981 Shader Builder / adapt logic & test to the new expression types
Also fixes a sneaky bug where the two last texture coordinates were inverted.
2019-10-25 14:55:44 +02:00
Olivier Guyot
fc98704bcb Expressions / adds a test for a complex combination of operators 2019-10-25 14:55:44 +02:00
Olivier Guyot
27c530ec64 Expressions / introduce the match operator
This operator allows mapping from input values to output values of different
kinds and handles variable arguments count.
2019-10-25 14:55:44 +02:00
Olivier Guyot
e3f7d29bb2 Expressions / add utilities for using strings in GLSL & more type checking
It is now possible to specify a type hint when parsing an expression, which
helps determine the output value type.

When no single output type can be inferred, an error is thrown.

For strings, every literal value will be replaced by a number and a map of
these associations will be kept in the parsing context, which is passed
recursively.
2019-10-25 14:55:44 +02:00
Olivier Guyot
44347a9ed3 Adapt the icon-sprite-webgl example to the new expressions module 2019-10-25 14:55:44 +02:00
Olivier Guyot
31dae929f5 ShaderBuilder / adapt logic & tests to new expressions module 2019-10-25 14:55:44 +02:00
Olivier Guyot
5712792772 Expressions / add more tests for conversion to GLSL 2019-10-25 14:55:44 +02:00
Olivier Guyot
bcf7649b9a Expressions / store the variables & attributes in the context 2019-10-25 14:55:44 +02:00
Olivier Guyot
7e4119d580 Expressions / restored the parsing logic with better type checking
Converting expressions to GLSL is now done in ol/style/expressions, with the
same logic as before in ol/webgl/ShaderBuilder.
2019-10-25 14:55:44 +02:00
Olivier Guyot
72903d6454 Expressions / added operator declarations & type checking logic 2019-10-25 14:55:44 +02:00
Olivier Guyot
35af80b433 Style / add an ol/style/expressions module
This module will contain the utilities and operator declarations
for literal style expressions, boh for type checking and parsing
2019-10-25 14:55:44 +02:00
mike-000
ad6d91b9ae Treat hsl/hsla as named colors
hsl/hsla values produce an assertion error in fromStringInternal_  This simplest solution is to treat them as named colors.
2019-10-25 13:31:18 +01:00
Jakob Gerstmayer
37cbb8e43e fixed spacing issues 2019-10-25 12:06:15 +02:00
Jakob Gerstmayer
e0329febc4 Added check to make sure extent array has four objects. 2019-10-25 11:43:18 +02:00
Andreas Hocevar
cff00f1c3b Merge pull request #10188 from ahocevar/renderevent-docs
Document that map render events do not have a context set
2019-10-24 17:14:40 +02:00
Andreas Hocevar
61c4fa8cd6 Document that map render events do not have a context set 2019-10-24 16:32:04 +02:00
Andreas Hocevar
cc24ec1be6 Set touch-action to allow page scrolling 2019-10-24 16:18:40 +02:00
Frédéric Junod
2b0256140e Merge pull request #10184 from fredj/heatmap_weight
Clamp the weight value between 0 and 1
2019-10-24 15:34:17 +02:00
Frederic Junod
88bbb8c1ae Clamp the weight value between 0 and 1 2019-10-24 13:52:59 +02:00
TigerShark
e60dc93e0e Make ol/interaction/Select#handleEvent return always true.
Previously it was returning true only if the event was a pointerMove
which prevented multiple Select objects with other event types from
working.
2019-10-23 17:30:56 -03:00
Tim Schaub
599835e818 Merge pull request #10175 from tschaub/untagged
Remove description from type tag
2019-10-23 13:57:15 -06:00
Tim Schaub
afa688273b Merge pull request #10176 from tschaub/toggle
Avoid toggling when clicking the title
2019-10-23 13:56:58 -06:00
Tim Schaub
6b4e00e6ac Remove description from type tag 2019-10-23 10:27:56 -06:00
Tim Schaub
10379920d2 Avoid toggling when clicking the title 2019-10-23 10:26:21 -06:00
Andreas Hocevar
ebae0386bd Merge pull request #10172 from ahocevar/apidoc-geometry-inherited
Ensure inherited docs are shown
2019-10-23 15:40:08 +02:00
Andreas Hocevar
bf7af07657 Ensure inherited docs are shown 2019-10-23 14:40:27 +02:00
Andreas Hocevar
327fe11344 Merge pull request #10171 from mike-000/patch-1
Open default attributions links in a new tab or window
2019-10-23 13:48:05 +02:00
Andreas Hocevar
319efedb14 Merge pull request #10047 from KaiVolland/apidoc-changes
Apidoc changes
2019-10-23 13:41:03 +02:00
Andreas Hocevar
4fe16d0281 Tidy up navigation 2019-10-23 13:26:56 +02:00
mike-000
ce8b63a67e Open default attributions links in new tab/window 2019-10-23 12:10:55 +01:00
mike-000
6b25f713cd Open default attributions links in new tab/window 2019-10-23 12:08:40 +01:00
mike-000
4b79818797 Open default attributions links in new tab/window 2019-10-23 12:03:01 +01:00
Andreas Hocevar
062614388c Merge pull request #10161 from ahocevar/vectorimage-getfeatures
Implement getFeatures() for ol/layer/VectorImage
2019-10-23 11:26:08 +02:00
Olivier Guyot
8c5be52462 Merge pull request #10168 from jahow/webgl-style-add-filter
Webgl / Add support for filtering and color interpolation in style expressions
2019-10-23 09:45:16 +02:00
Frédéric Junod
b6d694050e Merge pull request #10170 from openlayers/select-feature_html
Add back html from select-features example
2019-10-23 09:24:43 +02:00
Olivier Guyot
fc555241ea ShaderBuilder / simplify check/parse code a bit 2019-10-23 09:22:12 +02:00
Frederic Junod
33b0f88771 Add back html from select-features example
The example was removed and added back in 38124d770b but the html file was missing
2019-10-23 09:03:19 +02:00
Olivier Guyot
1fe5a68e16 Fix the triangles style in the wbegl-points-layer example 2019-10-22 23:27:26 +02:00
Olivier Guyot
948003ff27 Rewrite to filter-points-webgl example to use a Webgl points layer
The demonstrated features have been recreated using a literal
style (filtering, pulse animation).
2019-10-22 23:17:00 +02:00
Olivier Guyot
d837166a1b Literal Style / add new math operators 2019-10-22 23:17:00 +02:00
Olivier Guyot
c659c05de8 ShaderBuilder / fix stretch operator GLSL expression 2019-10-22 23:17:00 +02:00
Olivier Guyot
485ade42b5 Literal Style / add support for color interpolation 2019-10-22 23:17:00 +02:00
Olivier Guyot
85c3aae454 ShaderBuilder / add support for color interpolation in parse 2019-10-22 23:17:00 +02:00
Olivier Guyot
a29fc016f5 ShaderBuilder / formatColor/Array utilities now output vecX(...) 2019-10-22 23:17:00 +02:00
Olivier Guyot
19eadaea24 Shader Builder / add type checking in expressions parsing
All expressions will now be type checked before actually being parsed.
2019-10-22 23:17:00 +02:00
Olivier Guyot
b8e8d30df0 Shader Builder / add utilities for checking an expression type
Type checking is done either against a literal value (number, string...)
or against the operator in case of an expression.

Sometimes it is not possible to infer only one type, for example
the value 'transparent' could either be a color or a string. This
is covered by the fact that all operators expect exactly one type
for their arguments.
2019-10-22 23:17:00 +02:00
Olivier Guyot
f43637cc33 Shader Builder / support strings in formatColor 2019-10-22 23:17:00 +02:00
Olivier Guyot
56faf4c3ad Color / add an isStringColor utility function 2019-10-22 23:17:30 +02:00
Olivier Guyot
a0b271a812 Literal Style / add support for variables in the style
These variables are accessed using the `var` operator, and are meant
to be mutated directly in the style object. When doing so,
the new value will always be used for the render.

This is intended to be used for modifying the style through external
parameters such as an input field, a slider, mouse position etc.
2019-10-22 23:17:00 +02:00
Olivier Guyot
a1c00744d1 Webgl points renderer / throw if shader compilation fails
This should only happen if providing handcrafted shaders to the renderer.
2019-10-22 23:17:00 +02:00
Olivier Guyot
94b8cf6af3 Webgl / add support for a time operator in literal styles
This required adding `u_time` as one of the default uniforms provided by the
webgl helper.
2019-10-22 23:17:23 +02:00
Olivier Guyot
0c0c8c5d56 Literal Style / add support for a filter property 2019-10-22 23:17:00 +02:00
Andreas Hocevar
fef4d4e9b7 Merge pull request #10093 from mike-000/patch-3
Set label text for Graticule option styles
2019-10-22 15:23:01 +02:00
Tim Schaub
8e4fbe3e74 Merge pull request #10160 from ejn/minor/improve-test-10158
Improve test in case of async call
2019-10-22 07:06:36 -06:00
mike-000
110c17cf9e Remove label style caches 2019-10-22 12:04:06 +01:00
Olivier Guyot
e38250ee14 ShaderBuilder / add fragment discard expression in shader params 2019-10-22 11:39:30 +02:00
Andreas Hocevar
39012a58f8 Implement getFeatures() for ol/layer/VectorImage 2019-10-22 11:27:26 +02:00
Olivier Guyot
7b66b294a8 ShaderBuilder / attempt to clarify the way attributes are handled in parseSymbolStyle 2019-10-22 11:18:39 +02:00
Olivier Guyot
9ee93cd2cf ShaderBuilder / refactoring to use an actual builder pattern
There is now a ShaderBuilder class with chainable methods
to specify more easily the contents of the final shaders.
This is to avoid passing around large objects to different functions,
and allow for a richer API.

The documentation has also been corrected and clarified.
2019-10-22 11:12:06 +02:00
Edward Nash
ed18310136 Improve test in case of async call 2019-10-22 10:21:52 +02:00
Andreas Hocevar
a3c137cff1 Merge pull request #10159 from ejn/bugfix/10158-target-name-collision
Fix target name collision in event.Target and Control
2019-10-22 09:53:19 +02:00
Edward Nash
9eb4816b27 Fix property name collision target_ with Control
* As described in #10158, Control uses the property target_ for
   a custom parent HTMLElement, leading to Events on the Control being
   dispatched with that as the target and not the Control itself.

 * Solved by renaming the target_ property on Target to eventTarget_
2019-10-22 09:37:05 +02:00
Edward Nash
ee653a8e0d Add regression test for event target on Control
* Check possible name collision of target element with EventTarget
2019-10-22 09:37:05 +02:00
mike-000
7edd10d66f Test that label text is set in styles 2019-10-21 16:00:54 +01:00
Frédéric Junod
e0cab3d3ba Merge pull request #10157 from openlayers/dependabot/npm_and_yarn/karma-coverage-istanbul-reporter-2.1.0
Bump karma-coverage-istanbul-reporter from 2.0.5 to 2.1.0
2019-10-21 16:01:30 +02:00
Frédéric Junod
34ed3c684e Merge pull request #10155 from openlayers/dependabot/npm_and_yarn/types/pbf-3.0.2
Bump @types/pbf from 3.0.1 to 3.0.2
2019-10-21 15:42:55 +02:00
Frédéric Junod
d0811ea286 Merge pull request #10153 from openlayers/dependabot/npm_and_yarn/yargs-14.2.0
Bump yargs from 14.0.0 to 14.2.0
2019-10-21 15:42:37 +02:00
Frédéric Junod
54c5330203 Merge pull request #10154 from openlayers/dependabot/npm_and_yarn/babel/core-7.6.4
Bump @babel/core from 7.4.4 to 7.6.4
2019-10-21 15:42:03 +02:00
dependabot-preview[bot]
09768c6634 Bump karma-coverage-istanbul-reporter from 2.0.5 to 2.1.0
Bumps [karma-coverage-istanbul-reporter](https://github.com/mattlewis92/karma-coverage-istanbul-reporter) from 2.0.5 to 2.1.0.
- [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.0.5...v2.1.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-10-21 13:33:34 +00:00
dependabot-preview[bot]
dfdb498d0d Bump @types/pbf from 3.0.1 to 3.0.2
Bumps [@types/pbf](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/pbf) from 3.0.1 to 3.0.2.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/pbf)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-10-21 13:32:16 +00:00
dependabot-preview[bot]
d1aec83ca2 Bump @babel/core from 7.4.4 to 7.6.4
Bumps [@babel/core](https://github.com/babel/babel) from 7.4.4 to 7.6.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.4.4...v7.6.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-10-21 13:31:44 +00:00
dependabot-preview[bot]
2937513cb3 Bump yargs from 14.0.0 to 14.2.0
Bumps [yargs](https://github.com/yargs/yargs) from 14.0.0 to 14.2.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/v14.0.0...v14.2.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-10-21 13:31:06 +00:00
Frédéric Junod
b46e985af0 Merge pull request #10151 from openlayers/dependabot/npm_and_yarn/rollup-plugin-babel-4.3.3
Bump rollup-plugin-babel from 4.3.2 to 4.3.3
2019-10-21 15:05:07 +02:00
dependabot-preview[bot]
e50662f0a1 Bump rollup-plugin-babel from 4.3.2 to 4.3.3
Bumps [rollup-plugin-babel](https://github.com/rollup/rollup-plugin-babel) from 4.3.2 to 4.3.3.
- [Release notes](https://github.com/rollup/rollup-plugin-babel/releases)
- [Changelog](https://github.com/rollup/rollup-plugin-babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup-plugin-babel/compare/v4.3.2...v4.3.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-10-21 12:22:12 +00:00
Frédéric Junod
bcdb191de2 Merge pull request #10148 from openlayers/dependabot/npm_and_yarn/rollup-plugin-node-resolve-5.2.0
Bump rollup-plugin-node-resolve from 5.0.0 to 5.2.0
2019-10-21 14:19:56 +02:00
dependabot-preview[bot]
775bf82631 Bump rollup-plugin-node-resolve from 5.0.0 to 5.2.0
Bumps [rollup-plugin-node-resolve](https://github.com/rollup/rollup-plugin-node-resolve) from 5.0.0 to 5.2.0.
- [Release notes](https://github.com/rollup/rollup-plugin-node-resolve/releases)
- [Changelog](https://github.com/rollup/rollup-plugin-node-resolve/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup-plugin-node-resolve/compare/v5.0.0...v5.2.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-10-21 12:06:29 +00:00
Frédéric Junod
fc9123947d Merge pull request #10150 from openlayers/dependabot/npm_and_yarn/copy-webpack-plugin-5.0.4
Bump copy-webpack-plugin from 5.0.3 to 5.0.4
2019-10-21 14:06:22 +02:00
Frédéric Junod
636c65da69 Merge pull request #10149 from openlayers/dependabot/npm_and_yarn/rbush-3.0.1
Bump rbush from 3.0.0 to 3.0.1
2019-10-21 14:05:08 +02:00
Frédéric Junod
adcbd0bb50 Merge pull request #10147 from openlayers/dependabot/npm_and_yarn/rollup-1.25.1
Bump rollup from 1.12.0 to 1.25.1
2019-10-21 14:04:18 +02:00
dependabot-preview[bot]
89c0eaef8d Bump copy-webpack-plugin from 5.0.3 to 5.0.4
Bumps [copy-webpack-plugin](https://github.com/webpack-contrib/copy-webpack-plugin) from 5.0.3 to 5.0.4.
- [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.3...v5.0.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-10-21 11:55:42 +00:00
dependabot-preview[bot]
889eef66c1 Bump rbush from 3.0.0 to 3.0.1
Bumps [rbush](https://github.com/mourner/rbush) from 3.0.0 to 3.0.1.
- [Release notes](https://github.com/mourner/rbush/releases)
- [Commits](https://github.com/mourner/rbush/compare/v3.0.0...v3.0.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-10-21 11:55:03 +00:00
dependabot-preview[bot]
de851e9b29 Bump rollup from 1.12.0 to 1.25.1
Bumps [rollup](https://github.com/rollup/rollup) from 1.12.0 to 1.25.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.12.0...v1.25.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-10-21 11:53:47 +00:00
Andreas Hocevar
cb6b716b98 Merge pull request #10145 from openlayers/greenkeeper/handlebars-4.4.5
Greenkeeper/handlebars 4.4.5
2019-10-21 12:02:35 +02:00
greenkeeper[bot]
2980a0a168 chore(package): update lockfile package-lock.json 2019-10-20 21:11:28 +00:00
greenkeeper[bot]
829aac1860 chore(package): update handlebars to version 4.4.5
Closes #10081
2019-10-20 21:11:23 +00:00
Andreas Hocevar
3d351a53e6 Merge pull request #10142 from ahocevar/fix-tilechange-events
Fix tilechange events
2019-10-19 09:06:12 +02:00
Tim Schaub
a0ceebfb2f Merge pull request #10132 from openlayers/greenkeeper/webpack-4.41.2
Update webpack to the latest version 🚀
2019-10-18 21:46:42 -06:00
Tim Schaub
a9d93fe151 Merge pull request #10143 from openlayers/greenkeeper/mocha-6.2.2
Update mocha to the latest version 🚀
2019-10-18 21:46:17 -06:00
greenkeeper[bot]
b4257779f1 chore(package): update lockfile package-lock.json 2019-10-18 21:17:40 +00:00
greenkeeper[bot]
0f3778ce00 chore(package): update mocha to version 6.2.2 2019-10-18 21:17:31 +00:00
Andreas Hocevar
36a366bfeb Do not stop event propagation in prepareTile 2019-10-18 20:50:01 +02:00
Olivier Guyot
95bcb574b7 Merge pull request #10138 from wirdehall/master
Should be able to ovveride defaultvalue of style in selection.
2019-10-18 09:57:55 +02:00
wirdehall
bd5510b62a Updated docs for Select style.
Updated docs for Select style with new option of false.
2019-10-18 00:20:05 +02:00
wirdehall
a34e7ddd99 Should be able to ovveride defaultvalue of style in selection.
null or false should be able to prevent overriding the style.
As discussed here: https://github.com/openlayers/openlayers/issues/10131
2019-10-17 15:05:30 +02:00
Tim Schaub
1de0d09acb Merge pull request #10135 from mike-000/patch-1
Revise the description of applyTransform for geometries
2019-10-16 12:54:32 -06:00
mike-000
2b1417df3f Revise the description of applyTransform
Revise the description of applyTransform and transformFn (loosely based on that used in ol/extent) to avoid any misunderstanding that the function is called inside a forEach method.
2019-10-16 13:59:38 +01:00
Andreas Hocevar
cfac31799b Merge pull request #10133 from ahocevar/unlisten-source-change
Properly unregister source tile change listeners
2019-10-15 23:16:18 +02:00
Andreas Hocevar
61fc71c30f Properly unregister source tile change listeners 2019-10-15 21:23:37 +02:00
greenkeeper[bot]
9f3052211b chore(package): update lockfile package-lock.json 2019-10-15 13:46:36 +00:00
greenkeeper[bot]
4450981b0d chore(package): update webpack to version 4.41.2 2019-10-15 13:46:30 +00:00
Andreas Hocevar
54884314ee Merge pull request #10094 from ahocevar/immediate-hitdetection
New Layer#getFeatures method with fast hit detection
2019-10-14 22:21:08 +02:00
Frédéric Junod
a75ea2cc6b Merge pull request #10117 from openlayers/greenkeeper/pbf-3.2.1
Update pbf to the latest version 🚀
2019-10-14 15:35:22 +02:00
Frédéric Junod
aba93e7b9c Merge pull request #10104 from openlayers/attribution_font_size
Remove font sizing from the attribution control
2019-10-14 15:28:02 +02:00
Andreas Hocevar
90d6a6f441 Move hit detection to its own module 2019-10-14 14:40:06 +02:00
Andreas Hocevar
7454df0c2f Resolve empty when tile not loaded yet 2019-10-14 14:13:57 +02:00
Frederic Junod
a126702e95 Add back max-width for the attribution control in examples 2019-10-14 09:24:18 +02:00
Tim Schaub
dd788b406c Merge pull request #10114 from openlayers/greenkeeper/coveralls-3.0.7
Update coveralls to the latest version 🚀
2019-10-13 08:02:53 -06:00
Tim Schaub
c97a26ae26 Merge pull request #10116 from openlayers/greenkeeper/webpack-4.41.1
Update webpack to the latest version 🚀
2019-10-13 08:02:06 -06:00
Tim Schaub
f475387d39 Merge pull request #10108 from notnotse/issue/9814-fix-documentation-for-handlemoveevent
Fix documentation for handleMoveEvent
2019-10-12 08:14:39 -06:00
Tim Schaub
5af4dfa623 Merge pull request #10118 from mike-000/patch-7
Document the OSM crossOrigin default
2019-10-12 08:13:17 -06:00
Andreas Hocevar
e3666f18da Merge pull request #10112 from ahocevar/rendertile-no-error
No ERROR state for render tiles
2019-10-11 21:52:12 +02:00
mike-000
046b78cca7 Document the OSM crossOrigin default 2019-10-11 18:16:19 +01:00
greenkeeper[bot]
b349058c58 chore(package): update lockfile package-lock.json 2019-10-11 14:50:07 +00:00
greenkeeper[bot]
8a53947f44 fix(package): update pbf to version 3.2.1 2019-10-11 14:50:02 +00:00
Olivier Guyot
9acba8f82a Merge pull request #10115 from jahow/improve-heatmap-test
Improve Heatmap hit detection test
2019-10-11 16:40:07 +02:00
Andreas Hocevar
0cb9d73848 No ERROR state for render tiles 2019-10-11 14:58:22 +02:00
greenkeeper[bot]
7069e2688d chore(package): update lockfile package-lock.json 2019-10-11 12:26:52 +00:00
greenkeeper[bot]
0c72fce1ff chore(package): update webpack to version 4.41.1 2019-10-11 12:26:47 +00:00
Olivier Guyot
87414256e2 Heatmap / use worker events instead of timeout for test 2019-10-11 14:06:27 +02:00
greenkeeper[bot]
9e7e15ed5c chore(package): update lockfile package-lock.json 2019-10-10 23:19:36 +00:00
greenkeeper[bot]
68850c7ddc chore(package): update coveralls to version 3.0.7 2019-10-10 23:19:29 +00:00
Frédéric Junod
f277206631 Merge pull request #10111 from mike-000/patch-6
Correct the defaulting of ol/source/VectorTile maxZoom
2019-10-10 16:05:51 +02:00
mike-000
2a2cc40d42 Correct the defaulting of maxZoom
Only default if undefined as maxZoom: 0 should be valid as it is for all other tile sources
2019-10-10 14:08:10 +01:00
Bobo Häggström
395b59c01e Fix documentation for handleMoveEvent
This fixes #9814
2019-10-10 10:40:47 +02:00
Frédéric Junod
58b4b6eeea Merge pull request #10102 from KlausBenndorf/type-fixes
Cosmetic type fixes
2019-10-10 09:43:53 +02:00
Simon Seyock
5b1106ac23 some type corrections 2019-10-10 09:07:35 +02:00
Frédéric Junod
2483fbd26b Merge pull request #10107 from mike-000/patch-5
Update Vector Tile Info example test for no features
2019-10-10 08:47:40 +02:00
Frédéric Junod
736ef88473 Merge pull request #10097 from fredj/text-align
Align layer canvas to the left
2019-10-10 08:31:36 +02:00
Andreas Hocevar
873999ec7d Merge pull request #10105 from openlayers/greenkeeper/jsdoc-plugin-typescript-2.0.4
Update jsdoc-plugin-typescript to the latest version 🚀
2019-10-09 20:19:51 +02:00
mike-000
cbf0ecfd75 Update test for no features 2019-10-09 18:25:04 +01:00
Frederic Junod
97ded06ee4 Remove attribution control custom style in examples 2019-10-09 16:48:19 +02:00
greenkeeper[bot]
782ff6e9f5 chore(package): update lockfile package-lock.json 2019-10-09 14:45:37 +00:00
greenkeeper[bot]
dc2137b622 chore(package): update jsdoc-plugin-typescript to version 2.0.4 2019-10-09 14:45:32 +00:00
Frederic Junod
c5eb80e610 Remove font sizing from the attribution control 2019-10-09 14:19:24 +02:00
Olivier Guyot
d1ee300968 Merge pull request #10101 from jahow/add-heatmap-hit-detection
Add hit detection support on the Heatmap layer
2019-10-08 14:45:53 +02:00
Olivier Guyot
b44a6ab26a Heatmap / add hit detection shaders 2019-10-08 13:27:31 +02:00
Kai Volland
3cb0aae796 Removes modulelink 2019-10-08 10:12:29 +02:00
Kai Volland
490bef8d40 Readds modules without classes to navigation 2019-10-08 10:12:12 +02:00
Andreas Hocevar
f477fc18f2 Add tests 2019-10-08 08:23:38 +02:00
Andreas Hocevar
3c243b0236 getFeature() for VectorTile layer 2019-10-08 08:23:38 +02:00
Andreas Hocevar
e9785317eb Move hit detection code to Immediate.js 2019-10-08 08:23:38 +02:00
Andreas Hocevar
315695eeb8 New Layer#getFeatures method with fast hit detection for VectorLayer 2019-10-08 08:23:38 +02:00
Frederic Junod
f20db28901 Align layer canvas to the left
So that the position is not affected by the `text-align` css rule.
2019-10-07 13:48:32 +02:00
Frederic Junod
2ce14a50a1 Add a rendering test case for text-align css property 2019-10-07 13:25:04 +02:00
Andreas Hocevar
057cc92716 Merge pull request #10087 from petrsloup/vector-tiles-4326-example
Add example showing vector tiles in EPSG:4326
2019-10-07 10:07:30 +02:00
Kai Volland
5786121cd5 Adapts linktext to module 2019-10-07 09:50:14 +02:00
mike-000
b727e4f45e Set label text for option styles
Set label text for lonLabelStyle and latLabelStyle options
2019-10-04 22:00:20 +01:00
Andreas Hocevar
fb9673465a Simpler way to use EPSG:4326 as projection 2019-10-04 14:07:13 +02:00
Andreas Hocevar
babdce4819 Merge pull request #10086 from petrsloup/update-mapbox-style-example
Update mapbox-style example
2019-10-03 20:39:47 +02:00
Petr Sloup
684e305bc8 Minor mapbox-style example docs update 2019-10-03 19:16:19 +02:00
Olivier Guyot
deb541791a Merge pull request #10083 from MoonE/example-webgl
webgl points layer example fixes
2019-10-03 17:43:22 +02:00
Maximilian Krög
db49842f63 Display error message instead of 'style not valid yet...' 2019-10-03 17:06:39 +02:00
Maximilian Krög
8fe8302dc2 Remove duplicate type definition for style 2019-10-03 15:45:35 +02:00
Maximilian Krög
b1a9f765fc Parse the style in the constructor.
This detects errors earlier and allows the caller to handle the thrown exception.
Remove assertion 65 as it should no longer be needed.
2019-10-03 14:36:48 +02:00
Petr Sloup
db583be0f9 Add example showing vector tiles in EPSG:4326 2019-10-03 13:00:47 +02:00
Maximilian Krög
d0cd1064ff Also check predefined styles for validity. 2019-10-03 03:02:58 +02:00
Maximilian Krög
b4a996e760 Catch errors in style definition
Do not replace the layer if the style is invalid.
Thrown errors are caught and the layer will not be changed.
2019-10-03 01:59:42 +02:00
Maximilian Krög
dee114d4c4 Guard against JSON.parse errors.
Also show successful style parse status after a style error was corrected
but it is the same style as previously.
2019-10-03 01:59:42 +02:00
Maximilian Krög
db34a338d6 Reset status message when selecting from select element. 2019-10-03 01:59:21 +02:00
Maximilian Krög
0eac5007e8 Reserve the height for the style parse messages. 2019-10-03 01:59:00 +02:00
Maximilian Krög
c1921a6b16 Preselect the 'circles' style in the select input
The text in the editor element already is from the circles style..
2019-10-03 01:57:49 +02:00
Maximilian Krög
dc28590cff Remove invalid option from style select
When this option was selected the text field contained 'undefined'
as it is not one of the predefined styles.
2019-10-03 01:48:45 +02:00
Frédéric Junod
3ab32ff744 Merge pull request #10076 from fredj/rm_typecast
Remove unnecessary typecast
2019-10-02 14:57:55 +02:00
Frederic Junod
daaaff5ac7 Remove unnecessary typecast
Remove typecast where typescript is able to correctly deduce the type.
2019-10-02 10:44:06 +02:00
Tim Schaub
fa0258a323 Merge pull request #10074 from mike-000/patch-2
Remove offsets from mouse position calculation
2019-10-01 09:29:47 -06:00
mike-000
4f83392b76 Remove offsets from mouse position calculation
and remove space
2019-10-01 15:55:30 +01:00
mike-000
8a04f5059d Remove offsets from mouse position calculation
Fixes #10073

Remove unneeded offsets from mouse position calculation as box position was centered in #9919
2019-10-01 15:47:36 +01:00
Frédéric Junod
92f70c225f Merge pull request #10072 from fredj/better_typing
Better typing
2019-10-01 15:27:27 +02:00
Frederic Junod
41b7893523 Mark properties as nullable 2019-10-01 10:47:07 +02:00
Frederic Junod
89becd4c6d Remove unused variables 2019-10-01 08:34:00 +02:00
Tim Schaub
7eb60fae23 Merge pull request #10070 from openlayers/release-v6.0.1
Changes for 6.0.1
2019-09-30 12:44:56 -06:00
Tim Schaub
d7acbc40d5 Changes for 6.0.1 2019-09-30 12:35:08 -06:00
Olivier Guyot
176dccd6df Merge pull request #10060 from mike-000/patch-1
Ensure zoom level is not less than minimum integer zoom level for extent
2019-09-30 17:34:45 +02:00
Tim Schaub
526679433e Merge pull request #10045 from tschaub/immediate-geographic
Make the immediate API work with a user projection
2019-09-30 09:27:40 -06:00
Tim Schaub
b64ab8a6b2 Rendering test for immediate API with geographic coordinates 2019-09-30 08:52:07 -06:00
Tim Schaub
6c6c4ab1df Mark example as experimental 2019-09-30 08:45:44 -06:00
Tim Schaub
d3b47c794e Make the immediate API work with a user projection 2019-09-30 08:28:50 -06:00
Andreas Hocevar
8aa4a59fcf Merge pull request #10068 from ahocevar/jsdoc-plugin
Update jsdoc-plugin-typescript to 2.0.3
2019-09-30 08:47:07 +02:00
Andreas Hocevar
61e8b39626 Update jsdoc-plugin-typescript to 2.0.3 2019-09-29 21:46:50 +02:00
Tim Schaub
8c7aafd4df Merge pull request #10063 from tschaub/does-not-throw
Use the same spelling used elsewhere
2019-09-29 14:38:48 -05:00
Andreas Hocevar
37f9a6a6e9 Merge pull request #10067 from KlausBenndorf/jsdoc-event-annotations
fixed jsdoc type annotations
2019-09-29 20:02:24 +02:00
Simon Seyock
2e1dee1994 fixed jsdoc type annotations 2019-09-29 19:35:11 +02:00
Tim Schaub
ec9dcbee88 Merge pull request #10065 from openlayers/greenkeeper/mocha-6.2.1
Update mocha to the latest version 🚀
2019-09-29 10:36:09 -05:00
Tim Schaub
211c2ee531 Merge pull request #10064 from openlayers/greenkeeper/handlebars-4.4.0
Update handlebars to the latest version 🚀
2019-09-29 09:21:00 -05:00
greenkeeper[bot]
e1d3560dbf chore(package): update lockfile package-lock.json 2019-09-29 14:14:51 +00:00
greenkeeper[bot]
1d6284725d chore(package): update mocha to version 6.2.1 2019-09-29 14:14:39 +00:00
greenkeeper[bot]
c69201d5ad chore(package): update lockfile package-lock.json 2019-09-29 13:32:46 +00:00
greenkeeper[bot]
92e025b8e5 chore(package): update handlebars to version 4.4.0 2019-09-29 13:32:42 +00:00
Tim Schaub
7c8b2215d4 Remove unused code 2019-09-29 07:05:48 -06:00
Tim Schaub
d2b25533c2 Use the same spelling used elsewhere 2019-09-29 07:37:45 -05:00
mike-000
733b883ac0 Correct expected result to reflect #10054
Correct world extent constrained resolution test to expect integer zoom level
2019-09-29 12:19:42 +01:00
mike-000
eaa5af2c7a Fix for #10054
Ensure zoom level is not less than minimum integer zoom level for extent
2019-09-29 12:00:08 +01:00
Tim Schaub
1260dfc153 Merge pull request #10057 from tschaub/fewer-extensions
Remove unused test extensions
2019-09-28 19:02:02 -05:00
Tim Schaub
76df721b98 Merge pull request #10056 from tschaub/uncalled
Remove called assert extension
2019-09-28 19:01:15 -05:00
Andreas Hocevar
a55fec2759 Merge pull request #10055 from ahocevar/ensure-tile-load-sequence
Ensure proper tile load sequence
2019-09-29 01:34:59 +02:00
Tim Schaub
c984b28752 Remove unused test extensions 2019-09-28 12:02:48 -05:00
Tim Schaub
3b02f5597e Remove called assert extension 2019-09-28 18:55:38 +02:00
Andreas Hocevar
40f8510083 Merge pull request #10052 from openlayers/greenkeeper/handlebars-4.3.4
Update handlebars to the latest version 🚀
2019-09-28 15:33:38 +02:00
Andreas Hocevar
7f8fdd6219 Ensure proper tile load sequence 2019-09-28 15:24:37 +02:00
greenkeeper[bot]
ea0e1bff29 chore(package): update lockfile package-lock.json 2019-09-28 11:39:45 +00:00
greenkeeper[bot]
9b2089bc8f chore(package): update handlebars to version 4.3.4 2019-09-28 11:39:41 +00:00
Tim Schaub
32644c7ba9 Merge pull request #10051 from tschaub/unchained
Simplify the assertion
2019-09-28 08:17:09 +02:00
Tim Schaub
80b4f51d6e Merge pull request #10050 from tschaub/expect-fail
Use expect().fail() instead of expect.fail()
2019-09-28 08:15:42 +02:00
Tim Schaub
c8456868bd Simplify the assertion 2019-09-27 23:49:57 +02:00
Tim Schaub
239f5745c1 Correct fail 2019-09-27 23:23:24 +02:00
Andreas Hocevar
70706443f5 Merge pull request #10048 from ahocevar/early-empty-state
Early EMPTY state for VectorRenderTile
2019-09-27 22:29:42 +02:00
Andreas Hocevar
47dd60104d Set EMPTY state of VectorRenderTile early 2019-09-27 19:04:21 +02:00
Kai Volland
d08c0baff9 Introduces apidoc changes
- Removes modules from the apidoc navigation
- Adds a weight paramater to the search to be
more accurate on searchresults
2019-09-27 17:25:01 +02:00
Tim Schaub
80cf76e783 Merge pull request #10043 from tschaub/snap-geographic
User coordinates during snapping
2019-09-27 17:20:16 +02:00
Kai Volland
b045e4ee5b Removes unused *.less files 2019-09-27 17:19:19 +02:00
Frédéric Junod
a7605c7447 Merge pull request #10042 from fredj/better_typing
Better typing
2019-09-27 16:39:26 +02:00
Andreas Hocevar
76af2b6466 Revert "Handle empty source tiles and queue them properly"
This reverts commit 818bdc411c.
2019-09-27 16:09:27 +02:00
Tim Schaub
a996d62d46 Test snap with geographic coordinates 2019-09-27 14:12:10 +02:00
Frederic Junod
f67476dd8f Mark properties as nullable 2019-09-27 13:57:59 +02:00
Frederic Junod
0e402073da Add more typecast for typescript 2019-09-27 13:11:30 +02:00
Tim Schaub
07678d960a User coordinates during snapping 2019-09-27 11:55:48 +02:00
Andreas Hocevar
a47025b9c9 Merge pull request #10040 from ahocevar/test-getclosestpoint
Additional tests for LineString
2019-09-27 11:22:29 +02:00
Andreas Hocevar
99c56a1f08 Additional tests for LineString 2019-09-27 11:10:14 +02:00
Frederic Junod
701dc3b54a Use the right variable to get the hitTolerance value 2019-09-27 11:03:21 +02:00
Frederic Junod
ea88e6cbd4 Remove invalid undefined type in params 2019-09-27 11:01:50 +02:00
Tim Schaub
b40709ea5b Merge pull request #10041 from openlayers/greenkeeper/handlebars-4.3.2
Update handlebars to the latest version 🚀
2019-09-27 09:07:09 +02:00
greenkeeper[bot]
20de880d2b chore(package): update lockfile package-lock.json 2019-09-26 22:21:37 +00:00
greenkeeper[bot]
1827d7a0d9 chore(package): update handlebars to version 4.3.2 2019-09-26 22:21:32 +00:00
Tim Schaub
400667fe95 Merge pull request #10038 from KlausBenndorf/stalebot
do not stale issues with `bug` or `pull request accepted` labels
2019-09-26 23:48:57 +02:00
Tim Schaub
d0a1fdc1d2 Merge pull request #10039 from openlayers/release-v6.0.0
🚀 Release 6
2019-09-26 23:33:42 +02:00
Tim Schaub
55adb4ee33 6.0 notes and version bump 2019-09-26 23:14:56 +02:00
Simon Seyock
dd1243db73 do not stale issues with bug or pull request accepted labels 2019-09-26 22:31:37 +02:00
Andreas Hocevar
7a28457518 Merge pull request #10036 from KlausBenndorf/codesandbox-edit-data
uploading local resources to codesandbox
2019-09-26 22:28:11 +02:00
Simon Seyock
42d8ea3a9a uploading local resources to codesandbox 2019-09-26 22:17:18 +02:00
Tim Schaub
76955d74a7 Merge pull request #10035 from tschaub/legacy-windows-build-support
Support building the legacy build on windows
2019-09-26 21:39:05 +02:00
Tim Schaub
3f21bc5265 Replace without the newline 2019-09-26 21:25:58 +02:00
Tim Schaub
4f44280ec7 Merge pull request #10034 from openlayers/experiment
Mark experimental examples as experimental
2019-09-26 21:21:34 +02:00
Andreas Hocevar
a33bd0dea1 Add experimental examples 2019-09-26 20:37:40 +02:00
Olivier Guyot
13147e0b82 Add experimental tags to a few examples & added doc in the README
Plus some typos.
2019-09-26 20:19:23 +02:00
Tim Schaub
9efb6b07eb Collide less 2019-09-26 20:08:50 +02:00
Tim Schaub
443213e175 Show notice when using experimental features 2019-09-26 20:06:28 +02:00
Tim Schaub
6a5f6e4363 Merge pull request #10009 from tschaub/modified
Geometry editing with a user projection
2019-09-26 20:01:19 +02:00
Andreas Hocevar
ac8f8f4e88 Merge pull request #10024 from ahocevar/focus-condition-target
Allow EventTarget to use a different default target
2019-09-26 19:59:27 +02:00
Andreas Hocevar
346130065e Merge pull request #10031 from flexjoly/upstream
Cache starting coordinates and add mapBrowserEvent to translateEvent
2019-09-26 19:41:44 +02:00
Andreas Hocevar
8c3bf06dfa Merge pull request #10029 from ahocevar/default-controls-link
Fix link to map default controls
2019-09-26 19:37:24 +02:00
Andreas Hocevar
8b7d68676b Merge pull request #10032 from ahocevar/safe-listener-removal
Do not remove listeners that do not exist
2019-09-26 19:35:02 +02:00
flexJoly
391bae35f2 minor fixes
and keep original parameters in TranslateEvent the same
2019-09-26 19:30:24 +02:00
Tim Schaub
3c7b129106 User coordinates during drawing 2019-09-26 19:29:19 +02:00
Tim Schaub
596c9617ed Merge pull request #10030 from tschaub/no-exclusive-tests
Add a rule to disallow describe.only() and it.only() in tests
2019-09-26 19:18:32 +02:00
Marc Jansen
70af56e200 Merge pull request #10023 from marcjansen/reg-shape-docs
Enhance regular shape example docs
2019-09-26 19:18:13 +02:00
Andreas Hocevar
e19d5d8412 Merge pull request #10025 from KaiVolland/vector-tile-example-bugfix
Bugfix for vector-tile-selection example
2019-09-26 19:12:09 +02:00
Andreas Hocevar
fd594c2001 Do not remove listeners that do not exist 2019-09-26 19:02:06 +02:00
flexJoly
180e1c86fc Cache starting coordinates and add mapBrowserEvent to translateEvent 2019-09-26 18:48:51 +02:00
Tim Schaub
e0d24d3af0 User coordinates during modification 2019-09-26 18:46:55 +02:00
Andreas Hocevar
3a10476c1c Merge pull request #10007 from mike-000/patch-1
Changes for #9395 CircleStyle inconsistency
2019-09-26 18:46:24 +02:00
Tim Schaub
8253c646b3 Add a rule to disallow describe.only() and it.only() in tests 2019-09-26 18:41:50 +02:00
Tim Schaub
b56c8b6630 Merge pull request #10027 from tschaub/fix-test
Confirm zoomByDelta calls view.animate()
2019-09-26 18:39:36 +02:00
Andreas Hocevar
3eaeef9b93 Fix link to map default controls 2019-09-26 18:31:24 +02:00
Tim Schaub
53e2f432e7 Confirm zoomByDelta calls view.animate() 2019-09-26 18:30:16 +02:00
Olivier Guyot
8c19399d0b Merge pull request #10016 from jahow/webgl-attribute-link
WebGL Points Layer: allow expressions in literal style
2019-09-26 18:02:26 +02:00
Andreas Hocevar
899af3e5c7 Allow EventTarget to use a different default target 2019-09-26 17:56:51 +02:00
Andreas Hocevar
86d99fa35c Merge pull request #10017 from KlausBenndorf/jsdoc-plugin-typescript
updated jsdoc-plugin-typescript
2019-09-26 17:55:48 +02:00
Kai Volland
8c7fc7d964 Bugfix for vector-tile-selection example
Checks if a feature exists before accessing his idProp.
2019-09-26 17:55:42 +02:00
Tim Schaub
dc5a25b96b Merge pull request #10012 from tschaub/more-geographic
Use the user projection for the map event coordinate
2019-09-26 17:40:05 +02:00
Marc Jansen
697d717613 Enhance regular shape example docs 2019-09-26 17:30:26 +02:00
Tim Schaub
5d4e77151c Handle event coordinate in the user projection 2019-09-26 17:24:58 +02:00
Tim Schaub
1e27846d6d Use user projection for event coordinate 2019-09-26 17:23:39 +02:00
Andreas Hocevar
d8f55ea3f1 Merge pull request #10018 from ahocevar/recover-from-skipfeature-removal
Recover from skip feature removal regressions
2019-09-26 17:23:25 +02:00
Tim Schaub
56b03f06f7 Merge pull request #10013 from tschaub/modify-interaction-tweaks
Minor reworking of the modify interaction
2019-09-26 17:00:57 +02:00
Simon Seyock
09cad9b5f9 fixed jsdoc problems 2019-09-26 17:00:46 +02:00
Simon Seyock
b629c25f5d updated jsdoc-plugin-typescript 2019-09-26 17:00:26 +02:00
Andreas Hocevar
838edfa369 Recover from skip feature removal regressions 2019-09-26 16:56:38 +02:00
Olivier Guyot
09134a6091 Shader builder / typecheck fix for parse fn 2019-09-26 16:30:19 +02:00
Olivier Guyot
858f0fc0cc Update the webgl-points-layer example to reflect new possibilities 2019-09-26 16:30:19 +02:00
Olivier Guyot
28d157af56 Shader builder / add circle and triangle shapes for symbols 2019-09-26 16:30:19 +02:00
Olivier Guyot
9b3a9b5eca Shader builder / add logic for transforming a style into shader params
This was previously handled by the WebGLPointsLayer class, but is now
externalized and tested.
2019-09-26 16:20:35 +02:00
Olivier Guyot
d5caabbbfc Shader builder / add basic expression parsing
Only a handful of expressions for now, very loosely based on the
mapbox style spec. Also only work on numerical values.
2019-09-26 16:20:35 +02:00
Tim Schaub
6ec69abdf6 Fewer type casts, minor changes 2019-09-26 16:15:08 +02:00
Olivier Guyot
1e93ede0b2 Merge pull request #10015 from jahow/fix-wrapped-hit-test
Fix hit detection test for wrapped geometries
2019-09-26 16:11:54 +02:00
Olivier Guyot
02e5e1776c Hit detection / fix test for wrapped geometries hit detection
Also restores the whole unit test suite.
2019-09-26 15:59:14 +02:00
Olivier Guyot
687808cf2a Merge pull request #10011 from jahow/fix-webgl-typecheck
Fix a type checking error on the WebGL points renderer
2019-09-26 15:46:32 +02:00
Olivier Guyot
b89c1255f7 Canvas vector / Avoid modifying the coordinates array in place 2019-09-26 15:34:31 +02:00
Olivier Guyot
7e4383f554 Webgl renderer / now accepts any kind of layer (not just vector) 2019-09-26 15:33:54 +02:00
Andreas Hocevar
28fb7c5590 Merge pull request #10010 from ahocevar/require-type-and-listener
Require type and listener for addEventListener/removeEventListener
2019-09-26 15:29:50 +02:00
mike-000
e28fa56edd Changes for the CircleStyle inconsistency seen in #9395
Change hit detection test to reflect fix for #9395 CircleStyle inconsistency

Update ol/style/Circle and ol/style/RegularShapen tests
Revise test for no fill
Add test for transparent fill

Update Upgrade notes
Changes to hit detection with unfilled styles
2019-09-26 14:27:31 +01:00
Andreas Hocevar
d2e33a0df0 Add a test that shows the fixed issue 2019-09-26 15:20:29 +02:00
Andreas Hocevar
25d9fa1efe Require type and listener for addEventListener/removeEventListener 2019-09-26 14:58:18 +02:00
Olivier Guyot
607f2f0746 Merge pull request #9994 from jahow/add-webgl-layer-type
Add a new layer type: WebGLPointsLayer
2019-09-26 14:55:09 +02:00
Olivier Guyot
7da3b60061 Webgl Layer / rename literalStyle property to style 2019-09-26 14:44:32 +02:00
Olivier Guyot
0732f17fd3 Webgl layer / remove @api tag & better doc
Also the webgl layer now only inherits from the Layer class,
not the VectorLayer one.
2019-09-26 14:42:04 +02:00
Tim Schaub
14a9002ee2 Merge pull request #10006 from KlausBenndorf/check-wrapped
Check hits for wrapped around geometries
2019-09-26 14:07:02 +02:00
Simon Seyock
edc95abc3b added test for off-world geometries 2019-09-26 11:46:10 +02:00
Simon Seyock
54cbe14f88 Check hits for wrapped around geometries 2019-09-26 11:46:10 +02:00
Tim Schaub
965d0541f2 Merge pull request #10004 from tschaub/revisions
Return a new simplified geometry after modification
2019-09-26 09:22:12 +02:00
Andreas Hocevar
e1d9f8dd59 Merge pull request #10005 from tkohr/select-interaction-corrections
Fix some cosmetics on Select interaction
2019-09-25 19:36:13 +02:00
Tobias Kohr
347f5df32e Fix some cosmetics on Select interaction 2019-09-25 17:34:26 +02:00
Tim Schaub
680372ac3f Return a new simplified geometry after modification 2019-09-25 17:26:22 +02:00
Olivier Guyot
9e9aa66f5f Webgl points renderer / restore check for hit detection readiness 2019-09-25 17:22:36 +02:00
Olivier Guyot
34572da17b Webgl shader builder / expanded functionality
Now takes in a custom object with attributes, uniforms etc.
The WebGLPointsLayer uses this to handle image icons.
2019-09-25 17:22:36 +02:00
Olivier Guyot
b8564d503a Webgl icon example / restore texture for icons 2019-09-25 17:22:36 +02:00
Olivier Guyot
9e55a8b2f0 Webgl / linting & test fixes 2019-09-25 17:22:36 +02:00
Olivier Guyot
610a846149 Webgl points renderer / make the hit detection optional 2019-09-25 17:22:36 +02:00
Andreas Hocevar
a493ff7e93 Merge pull request #10003 from tkohr/select-interaction
Add back Select interaction without overlay
2019-09-25 17:17:56 +02:00
Tobias Kohr
2ccaed0ace Add back Select interaction without Overlay 2019-09-25 16:37:28 +02:00
Tobias Kohr
38124d770b Revert delete Select interaction commit 3838b68427 2019-09-25 16:37:28 +02:00
Tim Schaub
14b931371d Merge pull request #10000 from KaiVolland/jsdoc-changes
Adopt JSDoc annotations to allow '.d.ts' generation
2019-09-25 16:26:24 +02:00
Olivier Guyot
24b4779bb6 Merge pull request #10001 from KlausBenndorf/typescript-fixes
reduced typecasts in layerrenderer
2019-09-25 16:19:34 +02:00
Kai Volland
68c052c9d5 Quote keys of TEXT_ALIGN to avoid minifcation 2019-09-25 15:40:24 +02:00
Olivier Guyot
4ad582ff01 Merge pull request #9986 from mike-000/patch-2
Make Circle geometry hit detection consistent with Polygon
2019-09-25 15:38:50 +02:00
Simon Seyock
6b5c2f47bb reduced typecasts in layerrenderer 2019-09-25 15:24:37 +02:00
Kai Volland
8611475477 Transforms TEXT_ALIGN enum
This transforms the TEXT_ALIGN enum to
avoid "empty enum" warning when running jsdoc.
2019-09-25 15:05:39 +02:00
Kai Volland
7c5f144cf4 Removes @fires annotation from LabelCache 2019-09-25 15:04:49 +02:00
Kai Volland
4fe157e7fb Removes invalid description on @type annotation 2019-09-25 15:03:37 +02:00
Tim Schaub
426cd754cd Merge pull request #9999 from KlausBenndorf/typescript-fixes
fixed typescript issues
2019-09-25 14:19:16 +02:00
Simon Seyock
bb0b94fedf fixed typescript issues 2019-09-25 14:10:05 +02:00
Tim Schaub
ff4006f8d6 Merge pull request #9997 from tschaub/tsc-fix
Avoid error from tsc
2019-09-25 14:08:56 +02:00
Tim Schaub
8f7f76188a Avoid error from tsc 2019-09-25 12:16:16 +02:00
Olivier Guyot
23c2999cab Webgl points renderer / fix hit detection
Due to the fact that the points renderer does not know for sure
which attributes will be used for rendering, it is now mandatory
to provide both vertex/fragment shaders for rendering AND hit
detection.

The hit detection shaders should expect having an `a_hitColor`
that they should return to allow matching the feature uid.

This will be all one eventually by shader builders under the hood.
2019-09-25 12:11:09 +02:00
Olivier Guyot
109f9718f9 Webgl renderer / fix existing examples
The shaders were rewritten manually for those, althoughj eventually they
should use the shader builder utilities as well.
2019-09-25 11:09:07 +02:00
Tim Schaub
b7ae47c4b7 Merge pull request #9993 from tschaub/more-map-tests
Add geographic tests for hasFeatureAtPixel and getFeaturesAtPixel
2019-09-25 10:42:29 +02:00
Tim Schaub
bd7a31544d Merge pull request #9992 from tschaub/rendering-readme
Rendering test instructions
2019-09-25 10:41:43 +02:00
Tim Schaub
f4ba9dd9dc Add geographic tests for hasFeatureAtPixel and getFeaturesAtPixel 2019-09-25 10:18:46 +02:00
Olivier Guyot
2b36445ecc Webgl / Adapt the points renderer to use custom attributes
Now most attributes will be custom ones defined by the user of the renderer.
The hit detection is broken for now and still has to be fixed.
Also it is not possible anymore to give a texture to the renderer,
this will have to be fixed as well.
2019-09-25 10:11:27 +02:00
Tim Schaub
4a37483294 Rendering test instructions 2019-09-25 09:26:03 +02:00
Tim Schaub
b5519a317e Merge pull request #9990 from openlayers/greenkeeper/handlebars-4.3.1
Update handlebars to the latest version 🚀
2019-09-25 09:09:53 +02:00
Frédéric Junod
0c8775b3c8 Merge pull request #9982 from fredj/css_vendor
Don't use vendor prefixes for the transform property
2019-09-25 08:26:11 +02:00
greenkeeper[bot]
e88c964db3 chore(package): update lockfile package-lock.json 2019-09-25 00:55:35 +00:00
greenkeeper[bot]
0e4645e713 chore(package): update handlebars to version 4.3.1 2019-09-25 00:55:32 +00:00
Andreas Hocevar
9cb96b23db Merge pull request #9989 from mike-000/patch-3
Correct getFeaturesAtPixel spelling and grammar
2019-09-25 00:19:32 +02:00
mike-000
678f9136c6 Make Circle hit detection consistent with Polygon
Fixes one of the inconsistencies seen in #9395

Add hit detection for no fill and transparent fill

Based on the example used in #9395  The tests expect consistency between Polygon and Circle geometries but currently expect the inconsistent behaviour seen when using CircleStyle
2019-09-24 22:06:28 +01:00
mike-000
6927cb4328 Correct getFeaturesAtPixel spelling and grammar 2019-09-24 20:58:29 +01:00
Tim Schaub
b21961102f Merge pull request #9988 from tschaub/overlay-geographic
Additional changes to work with user projection
2019-09-24 21:19:47 +02:00
Tim Schaub
b1f0b6997b Additional changes to work with user projection 2019-09-24 19:58:53 +02:00
Olivier Guyot
076b674d6f Webgl helper / easier utility for binding attributes
also a bit of improvement on the doc
2019-09-24 19:10:07 +02:00
Andreas Hocevar
57c30b8d6d Merge pull request #9987 from openlayers/greenkeeper/webpack-4.41.0
Update webpack to the latest version 🚀
2019-09-24 18:54:27 +02:00
greenkeeper[bot]
6204b9d3bf chore(package): update lockfile package-lock.json 2019-09-24 16:29:28 +00:00
greenkeeper[bot]
924255fafd chore(package): update webpack to version 4.41.0 2019-09-24 16:29:24 +00:00
Tim Schaub
7be4835144 Merge pull request #9973 from tkohr/user-projection-map
Make map work with user projected coordinates
2019-09-24 18:21:56 +02:00
Tobias Kohr
8c4937170b rename external methods to API names 2019-09-24 18:13:57 +02:00
Tim Schaub
c071c749eb Merge pull request #9981 from KlausBenndorf/replace-geometry-cache
Remove simplified geometry cache
2019-09-24 18:11:33 +02:00
Tim Schaub
fed6aef057 Merge pull request #9980 from tschaub/use-geographic-geom
Get simplified transformed geometry
2019-09-24 18:07:06 +02:00
Andreas Hocevar
45b257d6ac Merge pull request #9984 from ahocevar/no-source-no-render
Don't attempt to render when there is no source
2019-09-24 18:01:56 +02:00
Olivier Guyot
30f19f8317 Webgl points renderer / terminates worker & dispose helper 2019-09-24 17:59:21 +02:00
Olivier Guyot
cb2c596a6d Add an example for the WebGLPointsLayer with editable style 2019-09-24 17:59:21 +02:00
Tobias Kohr
182ed012e2 review corrections 2019-09-24 17:58:56 +02:00
Tobias Kohr
a0df485736 add tests for modified methods 2019-09-24 17:58:56 +02:00
Tobias Kohr
b1196e7601 fix linting 2019-09-24 17:58:56 +02:00
Tobias Kohr
5711cd30d0 Seperate getEventCoordinate into internal/external method 2019-09-24 17:58:56 +02:00
Tobias Kohr
686c185de3 Call internal method in MousePosition 2019-09-24 17:58:56 +02:00
Tobias Kohr
d4c1589a01 Seperate internal and API methods for the map 2019-09-24 17:58:56 +02:00
Simon Seyock
04738f494f Removed tests for simplified geometry cache 2019-09-24 17:47:32 +02:00
Tim Schaub
30cbbfea9d Get simplified transformed geometry and load features in user projection 2019-09-24 17:45:04 +02:00
Andreas Hocevar
3ed1a433fb Don't attempt to render when there is no source 2019-09-24 17:37:22 +02:00
Tim Schaub
66746a61bb Merge pull request #9983 from KlausBenndorf/get-features-returns-array
getFeaturesAtPixel always returns array
2019-09-24 17:32:45 +02:00
Olivier Guyot
4d7562fca2 Add a new WebGLPointsLayer type using the shader builder utilities
This required adding a `a_index` attribute in the points layer renderer
to be able to make the precomputed shaders to work.
2019-09-24 17:24:56 +02:00
Simon Seyock
82486899df getFeatureAtPixel always returns array 2019-09-24 17:16:25 +02:00
Frederic Junod
75a553b37c Don't use vendor prefixes for the transform property
We are already not using the prefixes in other part of the library.
For example:
https://github.com/openlayers/openlayers/blob/v6.0.0-beta.15/src/ol/renderer/canvas/TileLayer.js#L356
2019-09-24 16:58:49 +02:00
Simon Seyock
6866f06375 Remove simplified geometry cache 2019-09-24 16:55:33 +02:00
Andreas Hocevar
f21d698915 Merge pull request #9960 from ahocevar/lazy-event-calculations
Always dispatch pointermove events, but calculate event pixel and coordinate lazily
2019-09-24 16:11:17 +02:00
Andreas Hocevar
ebecdc4a4c Merge pull request #9978 from ahocevar/tilequeue-loading
Handle empty source tiles and queue them properly
2019-09-24 16:05:05 +02:00
Andreas Hocevar
60c2c4e088 Get rid of map focus 2019-09-24 16:02:36 +02:00
Andreas Hocevar
a139b01f8e Always dispatch pointermove, but calculate coordinates lazily 2019-09-24 16:02:36 +02:00
Olivier Guyot
a6b8d920b7 Webgl / add a fixed fragment shader builder for symbols 2019-09-24 15:49:07 +02:00
Olivier Guyot
4de0c0b082 Webgl / add a very simple vertex shader builder utility
This only allows including hardcoded values in the shader,
and only for symbols.
2019-09-24 15:43:26 +02:00
Andreas Hocevar
818bdc411c Handle empty source tiles and queue them properly 2019-09-24 15:18:59 +02:00
Marc Jansen
3992aede9d Merge pull request #9974 from KaiVolland/9865-xhr
Introduces the _withCredentials flag
2019-09-24 14:37:25 +02:00
Kai Volland
87e63ee4df Introduces the _withCredentials flag
This introduces the _withCredentials flag and the
corresponding setter to the featureloader.

Co-authored-by: mstenta <mike@mstenta.net>
2019-09-24 14:18:37 +02:00
Olivier Guyot
b97647d39b Merge pull request #9966 from jahow/allow-disable-canvas-reuse
Document how to circumvent the canvas reuse optimization
2019-09-24 11:16:45 +02:00
Olivier Guyot
167fa6b8a0 Add property to all layers api doc 2019-09-24 10:58:55 +02:00
Tim Schaub
3c38a38570 Merge pull request #9961 from KlausBenndorf/remove-select-interaction
SelectInteraction removal
2019-09-24 10:27:20 +02:00
Simon Seyock
acac7a9403 remove skipFeature logic 2019-09-24 10:12:30 +02:00
Simon Seyock
3838b68427 Removed SelectInteraction 2019-09-24 10:12:30 +02:00
Simon Seyock
c65e802c71 Feature selecting examples 2019-09-24 10:05:45 +02:00
Olivier Guyot
449686527b Document how to avoid canvas reuse for layers
This restores the `map.forEachLayerAtPixel` functionality.

This is intended to help with openlayers#9720
2019-09-24 09:46:32 +02:00
Tim Schaub
16cc22371b Merge pull request #9972 from openlayers/greenkeeper/handlebars-4.3.0
Update handlebars to the latest version 🚀
2019-09-24 09:33:29 +02:00
greenkeeper[bot]
0b89a88f22 chore(package): update lockfile package-lock.json 2019-09-24 06:13:38 +00:00
greenkeeper[bot]
ae82d4f2b1 chore(package): update handlebars to version 4.3.0 2019-09-24 06:13:34 +00:00
Andreas Hocevar
db529a0d49 Merge pull request #9957 from ahocevar/vectortile-labels
Get hasOverlay from child element count
2019-09-23 23:20:17 +02:00
Tim Schaub
cf5b568cf8 Merge pull request #9969 from tschaub/next-dev-version
Dev version based on time
2019-09-23 19:49:00 +02:00
Tim Schaub
5290486e23 Dev version based on time 2019-09-23 19:48:30 +02:00
Tim Schaub
f1f8568068 Merge pull request #9965 from tschaub/layer-extent
Transform the layer extent when a user projection is set
2019-09-23 19:29:26 +02:00
Olivier Guyot
60378f2089 Merge pull request #9967 from jahow/enable-https-webgl-example
Enable HTTPS on Mapbox tile layer in webgl sprite example
2019-09-23 18:02:04 +02:00
Marc Jansen
9daba2bb7d Merge pull request #9964 from marcjansen/mapbox-api-change
Update various examples to use the Mapbox v4-API
2019-09-23 17:58:05 +02:00
Olivier Guyot
cae8c333f2 Enable https on tile layer in webgl sprite example 2019-09-23 17:51:32 +02:00
Tim Schaub
54d3af40dd Transform the layer extent when a user projection is set 2019-09-23 17:23:20 +02:00
Marc Jansen
57822aa6ff Update various examples to use the Mapbox v4-API 2019-09-23 17:20:12 +02:00
Tim Schaub
6525906a70 Merge pull request #9963 from tschaub/rendering-tests
Update to work with globby@10
2019-09-23 16:57:54 +02:00
Tim Schaub
773ae437e4 Small tolerance by default 2019-09-23 16:48:22 +02:00
Olivier Guyot
4abb9c2fd0 Merge pull request #9962 from mike-000/patch-1
Improve the API description for "multiWorld"
2019-09-23 16:36:48 +02:00
Olivier Guyot
5cb99d0f84 Merge pull request #9710 from jahow/fix-typings
Additional Typescript compliance fixes
2019-09-23 16:36:23 +02:00
Marc Jansen
560dae7c45 Merge pull request #9400 from KaiVolland/kml-fixes
Changes to parsing of KML displayName
2019-09-23 16:12:17 +02:00
Olivier Guyot
5b5a3657f0 Fix typings in workers
The worker self object is simply cast to any to make sure typescript
does not complain.
Actual typecheck may be restored once the following issue is fixed:
https://github.com/microsoft/TypeScript/issues/20595
2019-09-23 15:37:48 +02:00
Tim Schaub
295c720645 Update to work with globby@10
With the globby v10 release, the shape of the file info object changed when requesting stats.

See https://github.com/mrmlnc/fast-glob#stats for details.
2019-09-23 15:34:24 +02:00
Tim Schaub
e3d83598ad Merge pull request #9959 from tschaub/frame-extent
Set frame state extent when creating frame state
2019-09-23 15:17:36 +02:00
mike-000
d749e244ed Improve the API description for "multiWorld"
The API description for multiWorld seems very vague compared with other view option descriptions and the upgrade notes.
2019-09-23 14:15:51 +01:00
Olivier Guyot
0bb5a07dee Merge pull request #9899 from LevN0/hidpi_TileArcGISRest
Add hidpi option for ol.source.TileArcGISRest
2019-09-23 15:05:45 +02:00
Frédéric Junod
5630e278b9 Merge pull request #9723 from fredj/pass_param
Pass the opt_direction value to the getConstrainedResolution function
2019-09-23 14:24:31 +02:00
Tim Schaub
2f498c9f58 Set frame state extent when creating frame state 2019-09-23 13:57:48 +02:00
Olivier Guyot
90d38b428c Merge pull request #9903 from mike-000/patch-1
Respect multiWorld: false when an explicit extent constraint would be respected
2019-09-23 13:46:04 +02:00
mike-000
9d125ee340 Respect mutiWorld: false same as explicit extent
Fixes #9577

The multiWorld: false constraint is currently not taken into account when constrainResolution is set or when an explicit resolutions array is specified, while an explicit extent constraint is respected in the same situations.  This pull request takes a global projection extent into consideration in that same situations that an explicit extent would be.

Add multiWorld tests with resolution constraints

includes fix for #9937
2019-09-23 11:48:25 +01:00
Frederic Junod
e780f2e3a3 Better description for the opt_direction parameter 2019-09-23 12:47:40 +02:00
Frederic Junod
4b35b920a1 Pass the opt_direction value to the getConstrainedResolution function 2019-09-23 12:47:27 +02:00
Tim Schaub
800dbe72ad Merge pull request #9846 from tschaub/user
Make API work with user projected coordinates
2019-09-23 11:25:00 +02:00
Andreas Hocevar
6a53ed3a68 Get hasOverlay from child element count 2019-09-23 08:40:00 +02:00
Tim Schaub
b58c78c546 Merge pull request #9952 from openlayers/greenkeeper/handlebars-4.2.1
Update handlebars to the latest version
2019-09-21 11:31:25 -06:00
Tim Schaub
c03c359a20 Separate internal and API methods for the view 2019-09-21 11:30:14 -06:00
Tim Schaub
f73d0b16ec Support for a user projection 2019-09-21 11:21:05 -06:00
Tim Schaub
38978eb23f Merge pull request #9935 from Abdullah0991/master
Add missing import for LinearRing
2019-09-21 11:16:51 -06:00
Tim Schaub
9f9fdd018f Merge pull request #9931 from mike-000/patch-4
Custom Overview Map CSS fix and rotateWithView option
2019-09-21 11:14:50 -06:00
Tim Schaub
c548593197 Merge pull request #9951 from mike-000/patch-5
New test for Image layer with extent and rotation
2019-09-21 11:08:59 -06:00
mike-000
dd9e2e1f0c second attempt 2019-09-21 10:08:21 +01:00
mike-000
52125e7d9c New test for Image layer with extent and rotation
Follow up for #9585/#9930
2019-09-21 00:26:53 +01:00
mike-000
e782f906ae New test for Image layer with extent and rotation
Follow up for #9585/#9930
2019-09-21 00:20:41 +01:00
greenkeeper[bot]
c6d8db8cba chore(package): update lockfile package-lock.json 2019-09-20 18:15:09 +00:00
greenkeeper[bot]
a41f2fb82a chore(package): update handlebars to version 4.2.1
Closes #9901
2019-09-20 18:14:59 +00:00
Tim Schaub
745fa43aa7 Merge pull request #9831 from KlausBenndorf/get-legend-request
Support a LAYER param in getLegendUrl
2019-09-19 10:17:29 -06:00
simonseyock
89e8d6d693 getGetLegendRequestUrl accepts a LAYER parameter now 2019-09-19 14:21:07 +02:00
Tim Schaub
c09ab8de69 Merge pull request #9942 from KlausBenndorf/renaming-get-feature-info-url
Renaming getGetFeatureInfoUrl
2019-09-18 05:11:14 -06:00
Simon Seyock
b2885e86fb Renaming of getGetFeatureInfoUrl and getGetLegendGraphicUrl 2019-09-18 10:48:18 +02:00
Simon Seyock
10326d0e81 Fixed headlines in Upgrade Notes 2019-09-18 10:32:26 +02:00
Tim Schaub
33d2cc8cf1 Merge pull request #9930 from mike-000/patch-3
Correct extent clipping in ImageLayer
2019-09-17 09:44:39 -06:00
AllTastesDev
55d556f743 Add missing import for LinearRing 2019-09-16 10:26:20 +03:00
Andreas Hocevar
a1df3ceb31 Merge pull request #9932 from openlayers/greenkeeper/webpack-4.40.2
Greenkeeper/webpack 4.40.2
2019-09-13 20:28:06 +02:00
Andreas Hocevar
2ec513e883 Merge pull request #9928 from openlayers/greenkeeper/puppeteer-1.20.0
Update puppeteer to the latest version 🚀
2019-09-13 19:31:09 +02:00
greenkeeper[bot]
85fd6f65bc chore(package): update lockfile package-lock.json 2019-09-13 14:52:37 +00:00
greenkeeper[bot]
4b9a89104d chore(package): update webpack to version 4.40.2
Closes #9927
2019-09-13 14:52:20 +00:00
mike-000
ae132643c7 Add Rotate with view option
Use a checkbox to demonstrate the rotateWithView option
2019-09-13 13:41:45 +01:00
mike-000
763cc15c52 Add container div for CSS and a rotate checkbox
Wrap the map div in a container to facilitate CSS and add a Rotate with view checkbox
2019-09-13 13:34:07 +01:00
mike-000
5c2e92191a Update CSS to work outside the examples template
The existing CSS doesn't work in CodeSandBox etc where ol/ol.css is imported in the JavaScript
2019-09-13 13:20:55 +01:00
Andreas Hocevar
9a0decf592 Merge pull request #9923 from ahocevar/cancel-postrender
Cancel postrender before disposing renderer
2019-09-13 14:06:42 +02:00
mike-000
50be36fc43 Correct clipping error seen in #9585
Clipping does not need to consider view rotation
2019-09-13 12:06:03 +01:00
greenkeeper[bot]
1307068be3 chore(package): update lockfile package-lock.json 2019-09-13 07:47:27 +00:00
greenkeeper[bot]
abc6bfa521 chore(package): update puppeteer to version 1.20.0 2019-09-13 07:47:21 +00:00
Andreas Hocevar
accb55a165 Merge pull request #9926 from openlayers/greenkeeper/webpack-4.40.0
Update webpack to the latest version 🚀
2019-09-13 00:14:04 +02:00
greenkeeper[bot]
cacf8ce695 chore(package): update lockfile package-lock.json 2019-09-12 19:16:55 +00:00
greenkeeper[bot]
43483ada19 chore(package): update webpack to version 4.40.0 2019-09-12 19:16:40 +00:00
Tim Schaub
c5b7b20967 Merge pull request #9925 from openlayers/publish-dev
Workflow to publish a dev release
2019-09-12 12:59:49 -06:00
Tim Schaub
5dfa96d552 Workflow to publish a dev release 2019-09-12 12:40:28 -06:00
Andreas Hocevar
f0cbc44860 Cancel postrender before disposing renderer 2019-09-12 12:11:07 +02:00
Tim Schaub
6f09197a7b Merge pull request #9919 from mike-000/patch-2
Revise and correct OverviewMap rotation
2019-09-11 17:38:53 -06:00
mike-000
d1cf45f767 Update rotation tests to use rotatable controls
#9919 make rotateWithView optional so controls used for rotation tests must be made rotatable
2019-09-11 13:03:36 +01:00
mike-000
61f49c2764 Revise and correct OverviewMap rotation
Correct the box display when the main map view is rotated and add an option to rotate either the box or the overview map view
2019-09-10 18:50:54 +01:00
Andreas Hocevar
ee06688bb6 Merge pull request #9914 from openlayers/greenkeeper/terser-webpack-plugin-2.0.1
Greenkeeper/terser webpack plugin 2.0.1
2019-09-09 10:54:34 +02:00
greenkeeper[bot]
6e05fa123b chore(package): update lockfile package-lock.json 2019-09-06 15:20:30 +00:00
greenkeeper[bot]
2951022614 chore(package): update terser-webpack-plugin to version 2.0.1
Closes #9906
2019-09-06 15:20:19 +00:00
Tim Schaub
f43098a94a Merge pull request #9908 from mike-000/patch-3
LineString.forEachSegment callback API description
2019-09-06 07:19:47 -06:00
Tim Schaub
120108c8da Merge pull request #9909 from oterral/padding
Clone the text's padding
2019-09-06 07:19:00 -06:00
Olivier Terral
7c9ebf8b1b Clone the text's padding 2019-09-06 12:16:04 +02:00
Andreas Hocevar
5bff4c051e Merge pull request #9907 from mike-000/patch-2
Prevent endless cycles observed in OverviewMap
2019-09-06 09:45:12 +02:00
mike-000
a4a0414eeb LineString.forEachSegment callback description
Include API description of the LineString.forEachSegment callback arguments.
2019-09-05 22:53:54 +01:00
mike-000
dc420c53a4 Prevent endless cycles as observed in #9796
Guard against endless cycle of attempts to reset extent which can occur if there is a constraint conflict
2019-09-05 21:03:21 +01:00
Andreas Hocevar
4161831e29 Merge pull request #9897 from ahocevar/more-pointer-events
Use pointer events everywhere
2019-09-04 23:33:58 +02:00
ahocevar
c897089119 Update package-lock.json 2019-09-04 21:37:53 +02:00
ahocevar
9366dee233 Use fixed fork of pepjs 2019-09-04 21:37:38 +02:00
ahocevar
ebfb20440a Simplify events and store listeners only in one place 2019-09-04 16:48:43 +02:00
Lev Nagdimunov
ac646f8434 Add hidpi option for ol.source.TileArcGISRest 2019-09-02 04:39:46 -04:00
ahocevar
d416866108 Use pointer events everywhere 2019-08-31 23:40:11 +02:00
Andreas Hocevar
1f5dfef200 Merge pull request #9888 from ahocevar/pep
Use PointerEvent polyfill instead of our own abstraction
2019-08-31 21:07:02 +02:00
ahocevar
1aeebf09aa Remove unused disposeInternal function 2019-08-31 20:56:18 +02:00
Olivier Guyot
d34b6772f2 Merge pull request #9896 from jahow/fix-webgl-warnings
Misc. WebGL fixes
2019-08-31 14:57:22 +02:00
Olivier Guyot
05a0600fe5 Webgl icon example / render map when texture ready 2019-08-31 08:59:34 +02:00
Olivier Guyot
732b383b53 Webgl points / re-render when buffers have been built offthread 2019-08-31 08:41:04 +02:00
Andreas Hocevar
76da5c469c Merge pull request #9889 from ahocevar/event-performance
Event performance improvements
2019-08-30 19:51:40 +02:00
Olivier Guyot
29d07ada54 Webgl helper / skip binding texture if underlying image is not ready 2019-08-30 11:02:31 +02:00
Olivier Guyot
5c1191dd5c Webgl points / skip hit detection render when out of sync
This happens when the indices buffer has been generated by the
worker but not the hit detection vertices buffer.
2019-08-30 10:38:41 +02:00
Olivier Guyot
c48350b666 Webgl buffer / add utility getSize function
Saves checking whether the buffer was initialized with
an array already
2019-08-30 10:38:02 +02:00
Olivier Guyot
e57e660819 Webgl points / use default vertex shader for hit detection
Otherwise we were getting errors if the custom
vertex shader was missing varyings expected by
HIT_FRAGMENT_SHADER.
2019-08-30 10:16:55 +02:00
ahocevar
20df00a4e8 Only create pointermove when someone listens 2019-08-30 09:16:27 +02:00
ahocevar
fe83d1b32c Only bind listeners when necessary 2019-08-30 09:16:27 +02:00
ahocevar
685d1e67cf Update package-lock.json 2019-08-29 18:59:44 +02:00
ahocevar
74e8e013cf Use pepjs instead of our own pointerevent polyfill 2019-08-29 18:58:53 +02:00
Olivier Guyot
d933e7cb41 Merge pull request #9882 from mike-000/patch-1
Handle rotation in the Box Selection example
2019-08-29 17:53:49 +02:00
Tim Schaub
64d1b0e151 Merge pull request #9886 from openlayers/greenkeeper/webpack-4.39.3
Update webpack to the latest version 🚀
2019-08-27 16:58:11 +02:00
greenkeeper[bot]
5d5dd5f4dd chore(package): update lockfile package-lock.json 2019-08-27 14:20:37 +00:00
greenkeeper[bot]
c498f73546 chore(package): update webpack to version 4.39.3 2019-08-27 14:19:56 +00:00
mike-000
654f78388b Handle rotation in the Box Selection example
oblique rotations (i.e. not 0, 90, 180 or 270 degrees) require additional filtering of features intersecting the extent of the rotated box
2019-08-26 22:11:41 +01:00
ahocevar
aca4a39863 Update package-lock.json 2019-08-24 14:49:16 +02:00
Andreas Hocevar
bf3abf5157 Merge pull request #9880 from openlayers/greenkeeper/karma-coverage-2.0.1
Greenkeeper/karma coverage 2.0.1
2019-08-21 10:45:49 +02:00
Andreas Hocevar
053bbbf520 Merge pull request #9877 from ahocevar/pixel-buffer
Fix -1 pixel buffer for vector tile extent
2019-08-21 10:27:13 +02:00
greenkeeper[bot]
bc8ef1f7c5 chore(package): update lockfile package-lock.json 2019-08-20 23:51:11 +00:00
greenkeeper[bot]
538f6b5c61 chore(package): update karma-coverage to version 2.0.1
Closes #9878
2019-08-20 23:51:00 +00:00
ahocevar
92931c336c Use source tile resolution for pixel buffer 2019-08-20 18:27:13 +02:00
ahocevar
a8b5dfa981 6.0.0-beta.15 2019-08-20 11:18:27 +02:00
Andreas Hocevar
42f1a7ed30 Merge pull request #9873 from ahocevar/another-vectortile-load-fix
Only check extent when a url tile coordinate is available
2019-08-20 11:08:04 +02:00
Andreas Hocevar
f3d6456876 Merge pull request #9876 from openlayers/greenkeeper/yargs-14.0.0
Update yargs to the latest version 🚀
2019-08-20 08:36:49 +02:00
greenkeeper[bot]
2ca13de4de chore(package): update lockfile package-lock.json 2019-08-19 23:21:53 +00:00
greenkeeper[bot]
87ae93ca2d chore(package): update yargs to version 14.0.0 2019-08-19 23:21:44 +00:00
ahocevar
5da32dbc5b More tests 2019-08-19 11:39:39 +02:00
ahocevar
6be2818f14 Handle empty url tile coord (no wrapx) 2019-08-19 11:01:03 +02:00
Andreas Hocevar
b602a6b33a Merge pull request #9871 from ahocevar/tile-load-key-change
Properly handle tile source key change
2019-08-19 08:08:31 +02:00
Andreas Hocevar
20a81ceb2f Merge pull request #9870 from ahocevar/declutter-multi-geometries
Declutter multi geometries per geometry instead of per feature
2019-08-19 08:06:39 +02:00
Andreas Hocevar
3d6cf24c26 Merge pull request #9872 from ahocevar/wrapx-extent
Check extent for wrapped tile coordinate
2019-08-18 18:10:24 +02:00
ahocevar
6a741d0504 Check extent for wrapped tile coordinate 2019-08-18 16:21:46 +02:00
ahocevar
aa55cce3ba Add rendering test for decluttered multipolygons 2019-08-18 15:43:41 +02:00
ahocevar
a5fbbef970 Always go through source tile change logic 2019-08-18 11:44:20 +02:00
ahocevar
25c8d93eba Fix test 2019-08-18 11:44:20 +02:00
Tim Schaub
eb294c78d1 Failing test 2019-08-18 08:58:59 +02:00
ahocevar
bd3f35eef0 Declutter multi geometries per geometry instead of per feature 2019-08-17 23:55:20 +02:00
Tim Schaub
f839b34594 Merge pull request #9869 from MoonE/master
Only get squared tolerance once per render
2019-08-17 07:23:22 -06:00
Tim Schaub
99462d3b53 Only get squared tolerance once per render 2019-08-17 07:10:10 -06:00
Maximilian Krög
200392785d Squared tolerance does not change for each style. 2019-08-17 11:15:06 +02:00
ahocevar
6252e92555 Make this a non-breaking change 2019-08-08 13:23:03 +02:00
Kai Volland
bebd7b6b26 Changes to parsing of KML displayName
To avoid loss of information the behaviour
of parsing the displayName (if a name attribute is
also given) is changed.
2019-08-08 13:14:39 +02:00
330 changed files with 11575 additions and 6484 deletions

7
.dependabot/config.yml Normal file
View File

@@ -0,0 +1,7 @@
# See https://dependabot.com/docs/config-file/
version: 1
update_configs:
- package_manager: "javascript"
directory: "/"
update_schedule: "weekly"
version_requirement_updates: "increase_versions_if_necessary"

4
.github/stale.yml vendored
View File

@@ -6,6 +6,10 @@ daysUntilClose: 7
exemptLabels:
- blocker
- regression
- bug
- 'pull request accepted'
# Issues assigned to a milestone will not go stale
exemptMilestones: true
# Label to use when marking an issue as stale
staleLabel: stale
# Comment to post when marking an issue as stale. Set to `false` to disable

27
.github/workflows/publish.yml vendored Normal file
View File

@@ -0,0 +1,27 @@
name: Publish
on:
push:
branches:
- master
jobs:
publish-npm:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- uses: actions/setup-node@v1
with:
node-version: 12
registry-url: https://registry.npmjs.org/
- name: Install dependencies
run: npm ci
- name: Publish
run: |
VERSION=$(node tasks/next-dev-version.js)
npm --no-git-tag-version version ${VERSION}
npm run build-package
cd build/ol
npm publish --tag dev
env:
NODE_AUTH_TOKEN: ${{secrets.npm_token}}

View File

@@ -1,10 +1,27 @@
## Upgrade notes
### Next version
### v6.0.0
#### Backwards incompatible changes
#### Removal of `TOUCH` constant from `ol/has`
##### Usage of `map.forEachLayerAtPixel`
Due to performance considerations, the layers in a map will sometimes be rendered into one
single canvas instead of separate elements.
This means `map.forEachLayerAtPixel` will bring up false positives.
The easiest solution to avoid that is to assign different `className` properties to each layer like so:
```js
new Layer({
// ...
className: 'my-layer'
})
```
Please note that this may incur a significant performance loss when dealing with many layers and/or
targetting mobile devices.
##### Removal of `TOUCH` constant from `ol/has`
If you were previously using this constant, you can check if `'ontouchstart'` is defined in `window` instead.
@@ -14,7 +31,7 @@ if ('ontouchstart' in window) {
}
```
#### Removal of `GEOLOCATION` constant from `ol/has`
##### Removal of `GEOLOCATION` constant from `ol/has`
If you were previously using this constant, you can check if `'geolocation'` is defined in `navigator` instead.
@@ -24,7 +41,7 @@ if ('geolocation' in navigator) {
}
```
#### Removal of CSS print rules
##### Removal of CSS print rules
The CSS media print rules were removed from the `ol.css` file. To get the previous behavior, use the following CSS:
@@ -36,7 +53,7 @@ The CSS media print rules were removed from the `ol.css` file. To get the previo
}
```
#### Removal of optional this arguments
##### Removal of optional this arguments
The optional this (i.e. opt_this) arguments were removed from the following methods.
Please use closures, the es6 arrow function or the bind method to achieve this effect (Bind is explained here:
@@ -254,6 +271,18 @@ The `ol/source/Vector#clear()` method no longer triggers a reload of the data fr
The `ol/source/Vector#refresh()` method now removes all features from the source and triggers a reload of the data from the server. If you were previously using the `refresh()` method to re-render a vector layer, you should instead call `ol/layer/Vector#changed()`.
##### Renaming of `getGetFeatureInfoUrl` to `getFeatureInfoUrl`
The `getGetFeatureInfoUrl` of `ol/source/ImageWMS` and `ol/source/TileWMS` is now called `getFeatureInfoUrl`.
##### `getFeaturesAtPixel` always returns an array
`getFeaturesAtPixel` now returns an empty array instead of null if no features were found.
##### Hit detection with unfilled styles
Hit detection over styled Circle geometry and Circle and RegularShape styles is now consistent with that for styled Polygon geometry. There is no hit detection over the interior of unfilled shapes. To get the previous behavior, specify a Fill style with transparent color.
#### Other changes
##### Allow declutter in image render mode

857
changelog/v6.0.0.md Normal file
View File

@@ -0,0 +1,857 @@
# 6.0.0
Wow. The 6.0 release includes changes from 1780 commits in 544 pull requests since the 5.3 release. Thanks to all who contributed to this effort.
A major feature in this release is the ability to compose layers with different renderer types. Previously, the map used a single rendering strategy, and all layers in your map had to implement that strategy. Now it is possible to have a map with layers that use different rendering technologies. This makes it possible, for example, to have Canvas (2D) layer composed together with a WebGL based layer in the same map. It is also possible to create layers with custom renderers. So you could have a map that uses another library (like d3) to render one layer and use OpenLayers to render the other layers. We will continue to take advantage of this new flexibility in future releases.
In addition, the 6.0 release includes a number of vector tile rendering improvements, and should have a lower memory footprint overall. The release also includes a number of experimental features that are not yet part of the stable API. Take a look through the examples for a new WebGL based renderer and the experimental `useGeographic()` function. Watch upcoming releases for more detail on these.
This release includes a number of backwards incompatible changes. Take a careful look at the notes below when upgrading your application from the 5.3 release.
#### Backwards incompatible changes
##### Usage of `map.forEachLayerAtPixel`
Due to performance considerations, the layers in a map will sometimes be rendered into one
single canvas instead of separate elements.
This means `map.forEachLayerAtPixel` will bring up false positives.
The easiest solution to avoid that is to assign different `className` properties to each layer like so:
```js
new Layer({
// ...
className: 'my-layer'
})
```
Please note that this may incur a significant performance loss when dealing with many layers and/or
targetting mobile devices.
##### Removal of `TOUCH` constant from `ol/has`
If you were previously using this constant, you can check if `'ontouchstart'` is defined in `window` instead.
```js
if ('ontouchstart' in window) {
// ...
}
```
##### Removal of `GEOLOCATION` constant from `ol/has`
If you were previously using this constant, you can check if `'geolocation'` is defined in `navigator` instead.
```js
if ('geolocation' in navigator) {
// ...
}
```
##### Removal of CSS print rules
The CSS media print rules were removed from the `ol.css` file. To get the previous behavior, use the following CSS:
```css
@media print {
.ol-control {
display: none;
}
}
```
##### Removal of optional this arguments
The optional this (i.e. opt_this) arguments were removed from the following methods.
Please use closures, the es6 arrow function or the bind method to achieve this effect (Bind is explained here:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind).
* `forEachCorner` in `ol/extent`
* `LRUCache#forEach`
* `RBush#forEach` and `RBush#forEachInExtent`
##### The `setCenter`, `setZoom`, `setResolution` and `setRotation` methods on `ol/View` do not bypass constraints anymore
Previously, these methods allowed setting values that were inconsistent with the given view constraints.
This is no longer the case and all changes to the view state now follow the same logic:
target values are provided and constraints are applied on these to determine the actual values to be used.
##### Removal of the `constrainResolution` option on `View.fit`, `PinchZoom`, `MouseWheelZoom` and `ol/interaction.js`
The `constrainResolution` option is now only supported by the `View` class. A `View.setConstrainResolution` method was added as well.
Generally, the responsibility of applying center/rotation/resolutions constraints was moved from interactions and controls to the `View` class.
##### 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.
As a side effect, the view `rotate` method is gone and has been replaced with `adjustRotation` which takes a delta as input.
##### The view is constrained so only one world is visible
Previously, maps showed multiple worlds at low zoom levels. In addition, it used to be possible to pan off the north or south edge of the world. Now, the view is restricted to show only one world, and you cannot pan off the edge. To get the previous behavior, configure the `ol/View` with `multiWorld: true`.
##### Removal of deprecated methods
The `inherits` function that was used to inherit the prototype methods from one constructor into another has been removed.
The standard ECMAScript classes should be used instead.
The deprecated `getSnapToPixel` and `setSnapToPixel` functions from the `ImageStyle` class have been removed.
##### New internal tile coordinates
Previously, the internal tile coordinates used in the library had an unusual row order the origin of the tile coordinate system was at the top left as expected, but the rows increased upwards. This meant that all tile coordinates within a tile grid's extent had negative `y` values.
Now, the internal tile coordinates used in the library have the same row order as standard (e.g. XYZ) tile coordinates. The origin is at the top left (as before), and rows or `y` values increase downward. So the top left tile of a tile grid is now `0, 0`, whereas it was `0, -1` before.
```
x, y values for tile coordinates
origin
*__________________________
| | | |
| 0, 0 | 1, 0 | 2, 0 |
|________|________|________|
| | | |
| 0, 1 | 1, 1 | 2, 1 |
|________|________|________|
| | | |
| 0, 2 | 1, 2 | 2, 2 |
|________|________|________|
```
This change should only affect you if you were using a custom `tileLoadFunction` or `tileUrlFunction`. For example, if you used to have a `tileUrlFunction` that looked like this:
```js
// before
function tileUrlFunction(tileCoord) {
const z = tileCoord[0];
const x = tileCoord[1];
const y = -tileCoord[2] - 1;
// do something with z, x, y
}
```
You would now do something like this:
```js
// after
function tileUrlFunction(tileCoord) {
const z = tileCoord[0];
const x = tileCoord[1];
const y = tileCoord[2];
// do something with z, x, y
}
```
In addition (this should be exceedingly rare), if you previously created a `ol/tilegrid/WMTS` by hand and you were providing an array of `sizes`, you no longer have to provide a negative height if your tile origin is the top-left corner (the common case). On the other hand, if you are providing a custom array of `sizes` and your origin is the bottom of the grid (this is uncommon), your height values must now be negative.
##### Removal of the "vector" render mode for vector tile layers
If you were previously using `VectorTile` layers with `renderMode: 'vector'`, you have to remove this configuration option. That mode was removed. `'hybrid'` (default) and `'image'` are still available.
##### Removal of the "renderMode" option for vector layers
If you were previously using `Vector` layers with `renderMode: 'image'`, you have to remove this configuration option. Instead, use the new `ol/layer/VectorImage` layer with your `ol/source/Vector`.
##### New declutter behavior
If a map has more than one layer with `declutter` set to true, decluttering now considers all `Vector` and `VectorTile` layers, instead of decluttering each layer separately. Only `VectorImage` layers continue to be decluttered separately. The higher the z-index of a layer, the higher the priority of its decluttered items.
Within a layer, the declutter order has changed. Previously, styles with a lower `zIndex` were prioritized over those with a higher `zIndex`. Now the opposite order is used.
On vector layers, even if decluttered images or texts have a lower z-Index than polygons or lines, they will now be rendered on top of the polygons or lines. For vector tile layers, this was the case already in previous releases.
##### New `prerender` and `postrender` layer events replace old `precompose`, `render` and `postcompose` events
If you were previously registering for `precompose` and `postcompose` events, you should now register for `prerender` and `postrender` events on layers. Instead of the previous `render` event, you should now listen for `postrender`. Layers are no longer composed to a single Canvas element. Instead, they are added to the map viewport as individual elements.
##### New `getVectorContext` function provides access to the immediate vector rendering API
Previously, render events included a `vectorContext` property that allowed you to render features or geometries directly to the map. This is still possible, but you now have to explicitly create a vector context with the `getVectorContext` function. This change makes the immediate rendering API an explicit dependency if your application uses it. If you don't use this API, your application bundle will not include the vector rendering modules (as it did before).
Here is an abbreviated example of how to use the `getVectorContext` function:
```js
import {getVectorContext} from 'ol/render';
// construct your map and layers as usual
layer.on('postrender', function(event) {
const vectorContext = getVectorContext(event);
// use any of the drawing methods on the vector context
});
```
##### Layers can only be added to a single map
Previously, it was possible to render a single layer in two maps. Now, each layer can only belong to a single map (in the same way that a single DOM element can only have one parent).
##### The `OverviewMap` requires a list of layers.
Due to the constraint above (layers can only be added to a single map), the overview map needs to be constructed with a list of layers.
##### The `ol/Graticule` has been replaced by `ol/layer/Graticule`
Previously, a graticule was not a layer. Now it is. See the graticule example for details on how to add a graticule layer to your map.
##### `ol/format/Feature` API change
The `getLastExtent()` method, which was required for custom `tileLoadFunction`s in `ol/source/Vector`, has been removed because it is no longer needed (see below).
##### `ol/VectorTile` API changes
* Removal of the `getProjection()` and `setProjection()` methods. These were used in custom `tileLoadFunction`s on `ol/source/VectorTile`, which work differently now (see below).
* Removal of the `getExtent()` and `setExtent()` methods. These were used in custom `tileLoadFunction`s on `ol/source/VectorTile`, which work differently now (see below).
##### Custom tileLoadFunction on a VectorTile source needs changes
Previously, applications needed to call `setProjection()` and `setExtent()` on the tile in a custom `tileLoadFunction` on `ol/source/VectorTile`. The format's `getLastExtent()` method was used to get the extent. All this is no longer needed. Instead, the `extent` (first argument to the loader function) and `projection` (third argument to the loader function) are simply passed as `extent` and `featureProjection` options to the format's `readFeatures()` method.
Example for an old `tileLoadFunction`:
```js
function(tile, url) {
tile.setLoader(function() {
fetch(url).then(function(response) {
response.arrayBuffer().then(function(data) {
var format = tile.getFormat();
tile.setProjection(format.readProjection(data));
tile.setFeatures(format.readFeatures(data, {
// featureProjection is not required for ol/format/MVT
featureProjection: map.getView().getProjection()
}));
tile.setExtent(format.getLastExtent());
})
})
}
});
```
This function needs to be changed to:
```js
function(tile, url) {
tile.setLoader(function(extent, resolution, projection) {
fetch(url).then(function(response) {
response.arrayBuffer().then(function(data) {
var format = tile.getFormat();
tile.setFeatures(format.readFeatures(data, {
// extent is only required for ol/format/MVT
extent: extent,
featureProjection: projection
}));
})
})
}
});
```
##### Drop of support for the experimental WebGL renderer
The WebGL map and layers renderers are gone, replaced by a `WebGLHelper` function that provides a lightweight,
low-level access to the WebGL API. This is implemented in a new `WebGLPointsLayer` which does simple rendering of large number
of points with custom shaders.
This is now used in the `Heatmap` layer.
The removed classes and components are:
* `WebGLMap` and `WebGLMapRenderer`
* `WebGLLayerRenderer`
* `WebGLImageLayer` and `WebGLImageLayerRenderer`
* `WebGLTileLayer` and `WebGLTileLayerRenderer`
* `WebGLVectorLayer` and `WebGLVectorLayerRenderer`
* `WebGLReplay` and derived classes, along with associated shaders
* `WebGLReplayGroup`
* `WebGLImmediateRenderer`
* `WebGLMap`
* The shader build process using `mustache` and the `Makefile` at the root
##### Removal of the AtlasManager
Following the removal of the experimental WebGL renderer, the AtlasManager has been removed as well. The atlas was only used by this renderer.
The non API `getChecksum` functions of the style is also removed.
##### Change of the behavior of the vector source's clear() and refresh() methods
The `ol/source/Vector#clear()` method no longer triggers a reload of the data from the server. If you were previously using `clear()` to refetch from the server, you now have to use `refresh()`.
The `ol/source/Vector#refresh()` method now removes all features from the source and triggers a reload of the data from the server. If you were previously using the `refresh()` method to re-render a vector layer, you should instead call `ol/layer/Vector#changed()`.
##### Renaming of `getGetFeatureInfoUrl` to `getFeatureInfoUrl`
The `getGetFeatureInfoUrl` of `ol/source/ImageWMS` and `ol/source/TileWMS` is now called `getFeatureInfoUrl`.
##### `getFeaturesAtPixel` always returns an array
`getFeaturesAtPixel` now returns an empty array instead of null if no features were found.
##### Hit detection with unfilled styles
Hit detection over styled Circle geometry and Circle and RegularShape styles is now consistent with that for styled Polygon geometry. There is no hit detection over the interior of unfilled shapes. To get the previous behavior, specify a Fill style with transparent color.
#### Other changes
##### Allow declutter in image render mode
It is now possible to configure vector tile layers with `declutter: true` and `renderMode: 'image'`. However, note that decluttering will be done per tile, resulting in labels and point symbols getting cut off at tile boundaries.
Until now, using both options forced the render mode to be `hybrid`.
##### Always load tiles while animating or interacting
`ol/PluggableMap` and subclasses no longer support the `loadTilesWhileAnimating` and `loadTilesWhileInteracting` options. These options were used to enable tile loading during animations and interactions. With the new DOM composition render strategy, it is no longer necessary to postpone tile loading until after animations or interactions.
## Changes
* [#10036](https://github.com/openlayers/openlayers/pull/10036) - uploading local resources to codesandbox ([@KlausBenndorf](https://github.com/KlausBenndorf))
* [#10035](https://github.com/openlayers/openlayers/pull/10035) - Support building the legacy build on windows ([@tschaub](https://github.com/tschaub))
* [#10034](https://github.com/openlayers/openlayers/pull/10034) - Mark experimental examples as experimental ([@openlayers](https://github.com/openlayers))
* [#10009](https://github.com/openlayers/openlayers/pull/10009) - Geometry editing with a user projection ([@tschaub](https://github.com/tschaub))
* [#10024](https://github.com/openlayers/openlayers/pull/10024) - Allow EventTarget to use a different default target ([@ahocevar](https://github.com/ahocevar))
* [#10031](https://github.com/openlayers/openlayers/pull/10031) - Cache starting coordinates and add mapBrowserEvent to translateEvent ([@flexjoly](https://github.com/flexjoly))
* [#10029](https://github.com/openlayers/openlayers/pull/10029) - Fix link to map default controls ([@ahocevar](https://github.com/ahocevar))
* [#10032](https://github.com/openlayers/openlayers/pull/10032) - Do not remove listeners that do not exist ([@ahocevar](https://github.com/ahocevar))
* [#10030](https://github.com/openlayers/openlayers/pull/10030) - Add a rule to disallow describe.only() and it.only() in tests ([@tschaub](https://github.com/tschaub))
* [#10023](https://github.com/openlayers/openlayers/pull/10023) - Enhance regular shape example docs ([@marcjansen](https://github.com/marcjansen))
* [#10025](https://github.com/openlayers/openlayers/pull/10025) - Bugfix for vector-tile-selection example ([@KaiVolland](https://github.com/KaiVolland))
* [#10007](https://github.com/openlayers/openlayers/pull/10007) - Changes for #9395 CircleStyle inconsistency ([@mike-000](https://github.com/mike-000))
* [#10027](https://github.com/openlayers/openlayers/pull/10027) - Confirm zoomByDelta calls view.animate() ([@tschaub](https://github.com/tschaub))
* [#10016](https://github.com/openlayers/openlayers/pull/10016) - WebGL Points Layer: allow expressions in literal style ([@jahow](https://github.com/jahow))
* [#10017](https://github.com/openlayers/openlayers/pull/10017) - updated jsdoc-plugin-typescript ([@KlausBenndorf](https://github.com/KlausBenndorf))
* [#10012](https://github.com/openlayers/openlayers/pull/10012) - Use the user projection for the map event coordinate ([@tschaub](https://github.com/tschaub))
* [#10018](https://github.com/openlayers/openlayers/pull/10018) - Recover from skip feature removal regressions ([@ahocevar](https://github.com/ahocevar))
* [#10013](https://github.com/openlayers/openlayers/pull/10013) - Minor reworking of the modify interaction ([@tschaub](https://github.com/tschaub))
* [#10015](https://github.com/openlayers/openlayers/pull/10015) - Fix hit detection test for wrapped geometries ([@jahow](https://github.com/jahow))
* [#10011](https://github.com/openlayers/openlayers/pull/10011) - Fix a type checking error on the WebGL points renderer ([@jahow](https://github.com/jahow))
* [#10010](https://github.com/openlayers/openlayers/pull/10010) - Require type and listener for addEventListener/removeEventListener ([@ahocevar](https://github.com/ahocevar))
* [#9994](https://github.com/openlayers/openlayers/pull/9994) - Add a new layer type: WebGLPointsLayer ([@jahow](https://github.com/jahow))
* [#10006](https://github.com/openlayers/openlayers/pull/10006) - Check hits for wrapped around geometries ([@KlausBenndorf](https://github.com/KlausBenndorf))
* [#10004](https://github.com/openlayers/openlayers/pull/10004) - Return a new simplified geometry after modification ([@tschaub](https://github.com/tschaub))
* [#10005](https://github.com/openlayers/openlayers/pull/10005) - Fix some cosmetics on Select interaction ([@tkohr](https://github.com/tkohr))
* [#10003](https://github.com/openlayers/openlayers/pull/10003) - Add back Select interaction without overlay ([@tkohr](https://github.com/tkohr))
* [#10000](https://github.com/openlayers/openlayers/pull/10000) - Adopt JSDoc annotations to allow '.d.ts' generation ([@KaiVolland](https://github.com/KaiVolland))
* [#10001](https://github.com/openlayers/openlayers/pull/10001) - reduced typecasts in layerrenderer ([@KlausBenndorf](https://github.com/KlausBenndorf))
* [#9986](https://github.com/openlayers/openlayers/pull/9986) - Make Circle geometry hit detection consistent with Polygon ([@mike-000](https://github.com/mike-000))
* [#9999](https://github.com/openlayers/openlayers/pull/9999) - fixed typescript issues ([@KlausBenndorf](https://github.com/KlausBenndorf))
* [#9997](https://github.com/openlayers/openlayers/pull/9997) - Avoid error from tsc ([@tschaub](https://github.com/tschaub))
* [#9993](https://github.com/openlayers/openlayers/pull/9993) - Add geographic tests for hasFeatureAtPixel and getFeaturesAtPixel ([@tschaub](https://github.com/tschaub))
* [#9992](https://github.com/openlayers/openlayers/pull/9992) - Rendering test instructions ([@tschaub](https://github.com/tschaub))
* [#9982](https://github.com/openlayers/openlayers/pull/9982) - Don't use vendor prefixes for the transform property ([@fredj](https://github.com/fredj))
* [#9989](https://github.com/openlayers/openlayers/pull/9989) - Correct getFeaturesAtPixel spelling and grammar ([@mike-000](https://github.com/mike-000))
* [#9988](https://github.com/openlayers/openlayers/pull/9988) - Additional changes to work with user projection ([@tschaub](https://github.com/tschaub))
* [#9973](https://github.com/openlayers/openlayers/pull/9973) - Make map work with user projected coordinates ([@tkohr](https://github.com/tkohr))
* [#9981](https://github.com/openlayers/openlayers/pull/9981) - Remove simplified geometry cache ([@KlausBenndorf](https://github.com/KlausBenndorf))
* [#9980](https://github.com/openlayers/openlayers/pull/9980) - Get simplified transformed geometry ([@tschaub](https://github.com/tschaub))
* [#9984](https://github.com/openlayers/openlayers/pull/9984) - Don't attempt to render when there is no source ([@ahocevar](https://github.com/ahocevar))
* [#9983](https://github.com/openlayers/openlayers/pull/9983) - getFeaturesAtPixel always returns array ([@KlausBenndorf](https://github.com/KlausBenndorf))
* [#9960](https://github.com/openlayers/openlayers/pull/9960) - Always dispatch pointermove events, but calculate event pixel and coordinate lazily ([@ahocevar](https://github.com/ahocevar))
* [#9978](https://github.com/openlayers/openlayers/pull/9978) - Handle empty source tiles and queue them properly ([@ahocevar](https://github.com/ahocevar))
* [#9974](https://github.com/openlayers/openlayers/pull/9974) - Introduces the _withCredentials flag ([@KaiVolland](https://github.com/KaiVolland))
* [#9966](https://github.com/openlayers/openlayers/pull/9966) - Document how to circumvent the canvas reuse optimization ([@jahow](https://github.com/jahow))
* [#9961](https://github.com/openlayers/openlayers/pull/9961) - SelectInteraction removal ([@KlausBenndorf](https://github.com/KlausBenndorf))
* [#9957](https://github.com/openlayers/openlayers/pull/9957) - Get hasOverlay from child element count ([@ahocevar](https://github.com/ahocevar))
* [#9969](https://github.com/openlayers/openlayers/pull/9969) - Dev version based on time ([@tschaub](https://github.com/tschaub))
* [#9965](https://github.com/openlayers/openlayers/pull/9965) - Transform the layer extent when a user projection is set ([@tschaub](https://github.com/tschaub))
* [#9967](https://github.com/openlayers/openlayers/pull/9967) - Enable HTTPS on Mapbox tile layer in webgl sprite example ([@jahow](https://github.com/jahow))
* [#9964](https://github.com/openlayers/openlayers/pull/9964) - Update various examples to use the Mapbox v4-API ([@marcjansen](https://github.com/marcjansen))
* [#9963](https://github.com/openlayers/openlayers/pull/9963) - Update to work with globby@10 ([@tschaub](https://github.com/tschaub))
* [#9962](https://github.com/openlayers/openlayers/pull/9962) - Improve the API description for "multiWorld" ([@mike-000](https://github.com/mike-000))
* [#9710](https://github.com/openlayers/openlayers/pull/9710) - Additional Typescript compliance fixes ([@jahow](https://github.com/jahow))
* [#9400](https://github.com/openlayers/openlayers/pull/9400) - Changes to parsing of KML displayName ([@KaiVolland](https://github.com/KaiVolland))
* [#9959](https://github.com/openlayers/openlayers/pull/9959) - Set frame state extent when creating frame state ([@tschaub](https://github.com/tschaub))
* [#9899](https://github.com/openlayers/openlayers/pull/9899) - Add hidpi option for ol.source.TileArcGISRest ([@LevN0](https://github.com/LevN0))
* [#9723](https://github.com/openlayers/openlayers/pull/9723) - Pass the opt_direction value to the getConstrainedResolution function ([@fredj](https://github.com/fredj))
* [#9903](https://github.com/openlayers/openlayers/pull/9903) - Respect multiWorld: false when an explicit extent constraint would be respected ([@mike-000](https://github.com/mike-000))
* [#9846](https://github.com/openlayers/openlayers/pull/9846) - Make API work with user projected coordinates ([@tschaub](https://github.com/tschaub))
* [#9935](https://github.com/openlayers/openlayers/pull/9935) - Add missing import for LinearRing ([@Abdullah0991](https://github.com/Abdullah0991))
* [#9931](https://github.com/openlayers/openlayers/pull/9931) - Custom Overview Map CSS fix and rotateWithView option ([@mike-000](https://github.com/mike-000))
* [#9951](https://github.com/openlayers/openlayers/pull/9951) - New test for Image layer with extent and rotation ([@mike-000](https://github.com/mike-000))
* [#9831](https://github.com/openlayers/openlayers/pull/9831) - Support a LAYER param in getLegendUrl ([@KlausBenndorf](https://github.com/KlausBenndorf))
* [#9942](https://github.com/openlayers/openlayers/pull/9942) - Renaming getGetFeatureInfoUrl ([@KlausBenndorf](https://github.com/KlausBenndorf))
* [#9930](https://github.com/openlayers/openlayers/pull/9930) - Correct extent clipping in ImageLayer ([@mike-000](https://github.com/mike-000))
* [#9923](https://github.com/openlayers/openlayers/pull/9923) - Cancel postrender before disposing renderer ([@ahocevar](https://github.com/ahocevar))
* [#9925](https://github.com/openlayers/openlayers/pull/9925) - Workflow to publish a dev release ([@openlayers](https://github.com/openlayers))
* [#9919](https://github.com/openlayers/openlayers/pull/9919) - Revise and correct OverviewMap rotation ([@mike-000](https://github.com/mike-000))
* [#9908](https://github.com/openlayers/openlayers/pull/9908) - LineString.forEachSegment callback API description ([@mike-000](https://github.com/mike-000))
* [#9909](https://github.com/openlayers/openlayers/pull/9909) - Clone the text's padding ([@oterral](https://github.com/oterral))
* [#9907](https://github.com/openlayers/openlayers/pull/9907) - Prevent endless cycles observed in OverviewMap ([@mike-000](https://github.com/mike-000))
* [#9897](https://github.com/openlayers/openlayers/pull/9897) - Use pointer events everywhere ([@ahocevar](https://github.com/ahocevar))
* [#9888](https://github.com/openlayers/openlayers/pull/9888) - Use PointerEvent polyfill instead of our own abstraction ([@ahocevar](https://github.com/ahocevar))
* [#9896](https://github.com/openlayers/openlayers/pull/9896) - Misc. WebGL fixes ([@jahow](https://github.com/jahow))
* [#9889](https://github.com/openlayers/openlayers/pull/9889) - Event performance improvements ([@ahocevar](https://github.com/ahocevar))
* [#9882](https://github.com/openlayers/openlayers/pull/9882) - Handle rotation in the Box Selection example ([@mike-000](https://github.com/mike-000))
* [#9877](https://github.com/openlayers/openlayers/pull/9877) - Fix -1 pixel buffer for vector tile extent ([@ahocevar](https://github.com/ahocevar))
* [#9873](https://github.com/openlayers/openlayers/pull/9873) - Only check extent when a url tile coordinate is available ([@ahocevar](https://github.com/ahocevar))
* [#9871](https://github.com/openlayers/openlayers/pull/9871) - Properly handle tile source key change ([@ahocevar](https://github.com/ahocevar))
* [#9870](https://github.com/openlayers/openlayers/pull/9870) - Declutter multi geometries per geometry instead of per feature ([@ahocevar](https://github.com/ahocevar))
* [#9872](https://github.com/openlayers/openlayers/pull/9872) - Check extent for wrapped tile coordinate ([@ahocevar](https://github.com/ahocevar))
* [#9869](https://github.com/openlayers/openlayers/pull/9869) - Only get squared tolerance once per render ([@MoonE](https://github.com/MoonE))
* [#9389](https://github.com/openlayers/openlayers/pull/9389) - Replaces listener test in tile.tests.js and removes artifacts ([@KaiVolland](https://github.com/KaiVolland))
* [#9855](https://github.com/openlayers/openlayers/pull/9855) - Make sure vector tile load handler is called ([@tschaub](https://github.com/tschaub))
* [#9864](https://github.com/openlayers/openlayers/pull/9864) - Properly update frameState.animate and deal with non-numeric layer opacity ([@tschaub](https://github.com/tschaub))
* [#9858](https://github.com/openlayers/openlayers/pull/9858) - Run npm audit fix ([@tschaub](https://github.com/tschaub))
* [#9844](https://github.com/openlayers/openlayers/pull/9844) - Set initial tile state to EMPTY when outside source extent ([@ahocevar](https://github.com/ahocevar))
* [#9839](https://github.com/openlayers/openlayers/pull/9839) - Enable correct display of side-by-side example when not using the examples template ([@mike-000](https://github.com/mike-000))
* [#9838](https://github.com/openlayers/openlayers/pull/9838) - Make WMSServerType appear in API docs ([@ahocevar](https://github.com/ahocevar))
* [#9754](https://github.com/openlayers/openlayers/pull/9754) - Export PDF example extent corrections ([@mike-000](https://github.com/mike-000))
* [#9834](https://github.com/openlayers/openlayers/pull/9834) - Use nextzen for osm-vector-tiles example ([@ahocevar](https://github.com/ahocevar))
* [#9833](https://github.com/openlayers/openlayers/pull/9833) - Remove accidentally added package-lock.json ([@ahocevar](https://github.com/ahocevar))
* [#9826](https://github.com/openlayers/openlayers/pull/9826) - Accept additional args when publishing ([@tschaub](https://github.com/tschaub))
* [#9812](https://github.com/openlayers/openlayers/pull/9812) - Make zDirection configurable on tile source ([@ahocevar](https://github.com/ahocevar))
* [#9824](https://github.com/openlayers/openlayers/pull/9824) - Support zoom limits for layers ([@tschaub](https://github.com/tschaub))
* [#9804](https://github.com/openlayers/openlayers/pull/9804) - Replacement for the Shared Views example ([@mike-000](https://github.com/mike-000))
* [#9803](https://github.com/openlayers/openlayers/pull/9803) - Remove unused variable in MousePosition control ([@openlayers](https://github.com/openlayers))
* [#9802](https://github.com/openlayers/openlayers/pull/9802) - Introduce EMPTY image state to deal with images outside the view extent ([@ahocevar](https://github.com/ahocevar))
* [#9797](https://github.com/openlayers/openlayers/pull/9797) - Avoid false positives for line and polygon hit detection ([@ahocevar](https://github.com/ahocevar))
* [#9794](https://github.com/openlayers/openlayers/pull/9794) - Fix linting error (import extension missing) ([@marcjansen](https://github.com/marcjansen))
* [#9792](https://github.com/openlayers/openlayers/pull/9792) - Improve documentation of getGetLegendGraphicUrl ([@marcjansen](https://github.com/marcjansen))
* [#9375](https://github.com/openlayers/openlayers/pull/9375) - Replaces reproj image.tests.js and tile.tests.js ([@KaiVolland](https://github.com/KaiVolland))
* [#9762](https://github.com/openlayers/openlayers/pull/9762) - Get legend request ([@KlausBenndorf](https://github.com/KlausBenndorf))
* [#9789](https://github.com/openlayers/openlayers/pull/9789) - Use Image.prototype.decode only when src is already set ([@ahocevar](https://github.com/ahocevar))
* [#9778](https://github.com/openlayers/openlayers/pull/9778) - Return existing source tiles if at target resolution ([@ahocevar](https://github.com/ahocevar))
* [#9622](https://github.com/openlayers/openlayers/pull/9622) - Avoid mutating input in EsriJSON format ([@kekel87](https://github.com/kekel87))
* [#9755](https://github.com/openlayers/openlayers/pull/9755) - Font loading improvements ([@ahocevar](https://github.com/ahocevar))
* [#9767](https://github.com/openlayers/openlayers/pull/9767) - Fix hit detection for webgl layers on retina devices ([@jahow](https://github.com/jahow))
* [#9774](https://github.com/openlayers/openlayers/pull/9774) - Fix observable properties documentation ([@ahocevar](https://github.com/ahocevar))
* [#9757](https://github.com/openlayers/openlayers/pull/9757) - Use CanvasLineJoin and CanvasLienCap types instead of string ([@fredj](https://github.com/fredj))
* [#9745](https://github.com/openlayers/openlayers/pull/9745) - Simplify heatmap's shaders ([@fredj](https://github.com/fredj))
* [#9748](https://github.com/openlayers/openlayers/pull/9748) - Remove hit detection transforms from ol/renderer/webgl/PointsLayer ([@fredj](https://github.com/fredj))
* [#9752](https://github.com/openlayers/openlayers/pull/9752) - Custom Animation example and the multiWorld view constraint ([@mike-000](https://github.com/mike-000))
* [#9751](https://github.com/openlayers/openlayers/pull/9751) - Add minArea typedef and ctor prop in DragZoom ([@logan-bounet](https://github.com/logan-bounet))
* [#9747](https://github.com/openlayers/openlayers/pull/9747) - Set world projection only for tile-pixels units ([@ahocevar](https://github.com/ahocevar))
* [#9743](https://github.com/openlayers/openlayers/pull/9743) - Finalize IIIF Image API version 3 ([@lutzhelm](https://github.com/lutzhelm))
* [#9733](https://github.com/openlayers/openlayers/pull/9733) - Get rid of JSDoc warnings and fix fires arguments ([@ahocevar](https://github.com/ahocevar))
* [#9732](https://github.com/openlayers/openlayers/pull/9732) - Fix EMPTY state and source key handling ([@ahocevar](https://github.com/ahocevar))
* [#9724](https://github.com/openlayers/openlayers/pull/9724) - Fix wrong import in tutorial ([@fredj](https://github.com/fredj))
* [#9722](https://github.com/openlayers/openlayers/pull/9722) - Remove unused param in getState function ([@fredj](https://github.com/fredj))
* [#9655](https://github.com/openlayers/openlayers/pull/9655) - Add hit detection on the WebGL points renderer ([@jahow](https://github.com/jahow))
* [#9728](https://github.com/openlayers/openlayers/pull/9728) - Remove accidently added package-lock.json ([@ahocevar](https://github.com/ahocevar))
* [#9719](https://github.com/openlayers/openlayers/pull/9719) - Use special MapTiler API key dedicated for OpenLayers examples ([@petrsloup](https://github.com/petrsloup))
* [#9714](https://github.com/openlayers/openlayers/pull/9714) - Update the circle style after setRadius calls ([@fredj](https://github.com/fredj))
* [#9718](https://github.com/openlayers/openlayers/pull/9718) - Remove unused variable in ol/renderer/webgl/PointsLayer ([@fredj](https://github.com/fredj))
* [#9711](https://github.com/openlayers/openlayers/pull/9711) - Remove extra space for the 'viewParams' attribute ([@fredj](https://github.com/fredj))
* [#9712](https://github.com/openlayers/openlayers/pull/9712) - Allow an arbitrary tag to be used as feature id ([@tschaub](https://github.com/tschaub))
* [#9709](https://github.com/openlayers/openlayers/pull/9709) - Try to make rendering tests run again in puppeteer ([@ahocevar](https://github.com/ahocevar))
* [#9705](https://github.com/openlayers/openlayers/pull/9705) - Vector tile renderer optimizations and fixes ([@ahocevar](https://github.com/ahocevar))
* [#9706](https://github.com/openlayers/openlayers/pull/9706) - Do not use self to check browser features ([@ahocevar](https://github.com/ahocevar))
* [#9704](https://github.com/openlayers/openlayers/pull/9704) - Handle container reuse properly when layers are added/removed ([@ahocevar](https://github.com/ahocevar))
* [#9701](https://github.com/openlayers/openlayers/pull/9701) - Remove will-change CSS rule for Overlay container ([@fredj](https://github.com/fredj))
* [#9702](https://github.com/openlayers/openlayers/pull/9702) - Fix several TypeScript type check problems ([@lutzhelm](https://github.com/lutzhelm))
* [#9700](https://github.com/openlayers/openlayers/pull/9700) - Solves typescript related issues ([@KaiVolland](https://github.com/KaiVolland))
* [#9699](https://github.com/openlayers/openlayers/pull/9699) - Fix MapTiler API usage ([@petrsloup](https://github.com/petrsloup))
* [#9636](https://github.com/openlayers/openlayers/pull/9636) - Remove and move code from ol/webgl ([@fredj](https://github.com/fredj))
* [#9684](https://github.com/openlayers/openlayers/pull/9684) - List complete classes in doc navigation ([@ahocevar](https://github.com/ahocevar))
* [#9685](https://github.com/openlayers/openlayers/pull/9685) - Remove glContext from RenderEvent ([@fredj](https://github.com/fredj))
* [#9681](https://github.com/openlayers/openlayers/pull/9681) - Remove duplicates from api docs and make navigation more usable ([@ahocevar](https://github.com/ahocevar))
* [#9677](https://github.com/openlayers/openlayers/pull/9677) - Add support for tile pixel projection in feature formats ([@ahocevar](https://github.com/ahocevar))
* [#9679](https://github.com/openlayers/openlayers/pull/9679) - Set pixelTransform and inversePixelTransform as protected ([@fredj](https://github.com/fredj))
* [#9678](https://github.com/openlayers/openlayers/pull/9678) - Update geography class urls ([@ahocevar](https://github.com/ahocevar))
* [#9658](https://github.com/openlayers/openlayers/pull/9658) - Don't use HTMLImageElement.decode method on Safari ([@fredj](https://github.com/fredj))
* [#9657](https://github.com/openlayers/openlayers/pull/9657) - Better documentation for getFeaturesInExtent function ([@fredj](https://github.com/fredj))
* [#9562](https://github.com/openlayers/openlayers/pull/9562) - Optimize the WebGL points renderer using a worker ([@jahow](https://github.com/jahow))
* [#9394](https://github.com/openlayers/openlayers/pull/9394) - Introduces import snippets for static functions ([@KaiVolland](https://github.com/KaiVolland))
* [#9638](https://github.com/openlayers/openlayers/pull/9638) - #9625: Add filter function to translate interaction ([@agpixdev](https://github.com/agpixdev))
* [#9644](https://github.com/openlayers/openlayers/pull/9644) - Use compose function from ol/transform ([@fredj](https://github.com/fredj))
* [#9645](https://github.com/openlayers/openlayers/pull/9645) - Handle case of no used tiles ([@ahocevar](https://github.com/ahocevar))
* [#9640](https://github.com/openlayers/openlayers/pull/9640) - Import options directly instead of importing a typedef ([@ahocevar](https://github.com/ahocevar))
* [#9641](https://github.com/openlayers/openlayers/pull/9641) - Only import what's needed from projections ([@ahocevar](https://github.com/ahocevar))
* [#9637](https://github.com/openlayers/openlayers/pull/9637) - Detach label cache on Map#setTarget() ([@ahocevar](https://github.com/ahocevar))
* [#9633](https://github.com/openlayers/openlayers/pull/9633) - Mark the `layers` property as optional in OverviewMap constructor ([@fredj](https://github.com/fredj))
* [#9634](https://github.com/openlayers/openlayers/pull/9634) - Remove old Android workaround ([@ahocevar](https://github.com/ahocevar))
* [#9629](https://github.com/openlayers/openlayers/pull/9629) - Clear overlay canvas when reusing containers ([@ahocevar](https://github.com/ahocevar))
* [#9626](https://github.com/openlayers/openlayers/pull/9626) - Remove TOUCH, POINTER and MSPOINTER from ol/has ([@fredj](https://github.com/fredj))
* [#9624](https://github.com/openlayers/openlayers/pull/9624) - Remove typecasts in ol/control/OverviewMap ([@fredj](https://github.com/fredj))
* [#9615](https://github.com/openlayers/openlayers/pull/9615) - Include full filename in import specifier ([@tschaub](https://github.com/tschaub))
* [#9592](https://github.com/openlayers/openlayers/pull/9592) - Remove `layerState` param from `prepareFrame` and `renderFrame` function ([@fredj](https://github.com/fredj))
* [#9289](https://github.com/openlayers/openlayers/pull/9289) - Vector source geom ([@sbrunner](https://github.com/sbrunner))
* [#9608](https://github.com/openlayers/openlayers/pull/9608) - Use markdown link syntax in jsdoc ([@fredj](https://github.com/fredj))
* [#9596](https://github.com/openlayers/openlayers/pull/9596) - Vector source / prevent adding features with duplicate id in the collection ([@jahow](https://github.com/jahow))
* [#9604](https://github.com/openlayers/openlayers/pull/9604) - Use window instead of global in addEventListener ([@bartvde](https://github.com/bartvde))
* [#9599](https://github.com/openlayers/openlayers/pull/9599) - Create FUNDING.yml ([@openlayers](https://github.com/openlayers))
* [#9601](https://github.com/openlayers/openlayers/pull/9601) - Use global addEventListener in PluggableMap ([@bartvde](https://github.com/bartvde))
* [#9584](https://github.com/openlayers/openlayers/pull/9584) - Reuse render target ([@ahocevar](https://github.com/ahocevar))
* [#6217](https://github.com/openlayers/openlayers/pull/6217) - Add primaryAction condition to DragPan ([@fredj](https://github.com/fredj))
* [#9569](https://github.com/openlayers/openlayers/pull/9569) - Fix for change in Zoomify.js/CustomTile signature ([@engsterhold](https://github.com/engsterhold))
* [#9582](https://github.com/openlayers/openlayers/pull/9582) - Add app to mark inactive issues as stale ([@tschaub](https://github.com/tschaub))
* [#9581](https://github.com/openlayers/openlayers/pull/9581) - Update webpack and use mode in the loader ([@tschaub](https://github.com/tschaub))
* [#9576](https://github.com/openlayers/openlayers/pull/9576) - Remove geolocation detection from ol/has ([@fredj](https://github.com/fredj))
* [#9575](https://github.com/openlayers/openlayers/pull/9575) - Rework exports for getUid and control defaults ([@tschaub](https://github.com/tschaub))
* [#9574](https://github.com/openlayers/openlayers/pull/9574) - Update OL MapGuide example to point to my demo MapGuide Server. ([@jumpinjackie](https://github.com/jumpinjackie))
* [#9571](https://github.com/openlayers/openlayers/pull/9571) - Small examples improvements ([@fredj](https://github.com/fredj))
* [#9572](https://github.com/openlayers/openlayers/pull/9572) - Add a note about CSS removal in upgrade-notes.md ([@fredj](https://github.com/fredj))
* [#9570](https://github.com/openlayers/openlayers/pull/9570) - Remove CSS print rules in ol.css ([@fredj](https://github.com/fredj))
* [#9563](https://github.com/openlayers/openlayers/pull/9563) - Fix @abstract and @module annotations ([@tschaub](https://github.com/tschaub))
* [#9560](https://github.com/openlayers/openlayers/pull/9560) - Simplify loading detection loop ([@ahocevar](https://github.com/ahocevar))
* [#9561](https://github.com/openlayers/openlayers/pull/9561) - Remove memory leak caused by label cache listeners ([@ahocevar](https://github.com/ahocevar))
* [#9559](https://github.com/openlayers/openlayers/pull/9559) - Minify worker ([@tschaub](https://github.com/tschaub))
* [#9558](https://github.com/openlayers/openlayers/pull/9558) - Stop listening for image decoding ([@tschaub](https://github.com/tschaub))
* [#9550](https://github.com/openlayers/openlayers/pull/9550) - Setup for building workers ([@tschaub](https://github.com/tschaub))
* [#9555](https://github.com/openlayers/openlayers/pull/9555) - Remove unused roundUpToPowerOfTwo function ([@fredj](https://github.com/fredj))
* [#9551](https://github.com/openlayers/openlayers/pull/9551) - Use HTMLImageElement.decode if available ([@fredj](https://github.com/fredj))
* [#9500](https://github.com/openlayers/openlayers/pull/9500) - KML string validation with extendedData ([@edellucien](https://github.com/edellucien))
* [#9534](https://github.com/openlayers/openlayers/pull/9534) - Remove unnecessary parts from the Mapbox layer example ([@tschaub](https://github.com/tschaub))
* [#9548](https://github.com/openlayers/openlayers/pull/9548) - Avoid cut off labels for italic fonts ([@ahocevar](https://github.com/ahocevar))
* [#9549](https://github.com/openlayers/openlayers/pull/9549) - Remove unused getReplayTransform_ function in VectorTileLayer ([@fredj](https://github.com/fredj))
* [#9545](https://github.com/openlayers/openlayers/pull/9545) - Avoid panning off the edge of the world ([@tschaub](https://github.com/tschaub))
* [#9539](https://github.com/openlayers/openlayers/pull/9539) - Document existing error event type ([@tschaub](https://github.com/tschaub))
* [#9541](https://github.com/openlayers/openlayers/pull/9541) - Upgrade to rbush@3 ([@tschaub](https://github.com/tschaub))
* [#9543](https://github.com/openlayers/openlayers/pull/9543) - Update jsdoc-plugin-typescript to version 2.0.1 ([@tschaub](https://github.com/tschaub))
* [#9536](https://github.com/openlayers/openlayers/pull/9536) - More font cache hits ([@ahocevar](https://github.com/ahocevar))
* [#9537](https://github.com/openlayers/openlayers/pull/9537) - WebGL / Points renderer refactoring ([@jahow](https://github.com/jahow))
* [#9546](https://github.com/openlayers/openlayers/pull/9546) - Lazily create the hit detection context ([@fredj](https://github.com/fredj))
* [#9533](https://github.com/openlayers/openlayers/pull/9533) - Canvas optimizations ([@fredj](https://github.com/fredj))
* [#9538](https://github.com/openlayers/openlayers/pull/9538) - Correct the module annotation for the vector image layer renderer ([@tschaub](https://github.com/tschaub))
* [#9532](https://github.com/openlayers/openlayers/pull/9532) - Remove unused 'container' property in mapbox-layer example ([@fredj](https://github.com/fredj))
* [#9530](https://github.com/openlayers/openlayers/pull/9530) - Fix spelling ([@fredj](https://github.com/fredj))
* [#9489](https://github.com/openlayers/openlayers/pull/9489) - Fix Zoomify to display retina tiles ([@crubier](https://github.com/crubier))
* [#9525](https://github.com/openlayers/openlayers/pull/9525) - Support a custom render function for the Layer class ([@jahow](https://github.com/jahow))
* [#9522](https://github.com/openlayers/openlayers/pull/9522) - Use https urls for mapbox.com ([@fredj](https://github.com/fredj))
* [#9520](https://github.com/openlayers/openlayers/pull/9520) - [WIP] Improve IIIF tile source and parser documentation ([@lutzhelm](https://github.com/lutzhelm))
* [#9523](https://github.com/openlayers/openlayers/pull/9523) - Make the code simpler in the Mapbox example ([@jahow](https://github.com/jahow))
* [#9519](https://github.com/openlayers/openlayers/pull/9519) - Use synchronous render in Mapbox example ([@jahow](https://github.com/jahow))
* [#9518](https://github.com/openlayers/openlayers/pull/9518) - Fix hit detection for multiple layers when decluttering is off ([@ahocevar](https://github.com/ahocevar))
* [#9516](https://github.com/openlayers/openlayers/pull/9516) - Upgrade ol-mapbox-style to v5 ([@ahocevar](https://github.com/ahocevar))
* [#9505](https://github.com/openlayers/openlayers/pull/9505) - Avoid blurry vector tiles ([@ahocevar](https://github.com/ahocevar))
* [#9430](https://github.com/openlayers/openlayers/pull/9430) - Adds IIIF Image API tile source ([@lutzhelm](https://github.com/lutzhelm))
* [#9512](https://github.com/openlayers/openlayers/pull/9512) - Mapbox layer example improvement ([@fredj](https://github.com/fredj))
* [#9511](https://github.com/openlayers/openlayers/pull/9511) - Update devDependencies ([@fredj](https://github.com/fredj))
* [#9504](https://github.com/openlayers/openlayers/pull/9504) - Minor examples fixes ([@fredj](https://github.com/fredj))
* [#9466](https://github.com/openlayers/openlayers/pull/9466) - Declutter in correct order and for all layers ([@ahocevar](https://github.com/ahocevar))
* [#9497](https://github.com/openlayers/openlayers/pull/9497) - Fix earth radius in documentation ([@simonseyock](https://github.com/simonseyock))
* [#9493](https://github.com/openlayers/openlayers/pull/9493) - Upgrade jsdoc to v3.6.1 ([@ahocevar](https://github.com/ahocevar))
* [#9490](https://github.com/openlayers/openlayers/pull/9490) - Misc. API doc improvements ([@jahow](https://github.com/jahow))
* [#9492](https://github.com/openlayers/openlayers/pull/9492) - Fix zIndex handling for unmanaged layers ([@ahocevar](https://github.com/ahocevar))
* [#9388](https://github.com/openlayers/openlayers/pull/9388) - Restore code coverage report ([@jahow](https://github.com/jahow))
* [#9487](https://github.com/openlayers/openlayers/pull/9487) - Avoid header expanding over examples ([@tschaub](https://github.com/tschaub))
* [#9488](https://github.com/openlayers/openlayers/pull/9488) - Set the 'lang' attribute to the html tag in examples ([@openlayers](https://github.com/openlayers))
* [#9484](https://github.com/openlayers/openlayers/pull/9484) - Build API docs in CI job ([@tschaub](https://github.com/tschaub))
* [#9476](https://github.com/openlayers/openlayers/pull/9476) - Document events fired by interactions ([@tschaub](https://github.com/tschaub))
* [#9475](https://github.com/openlayers/openlayers/pull/9475) - Call the color callback once per feature ([@tschaub](https://github.com/tschaub))
* [#9477](https://github.com/openlayers/openlayers/pull/9477) - Tidy up the JSDoc events plugin ([@tschaub](https://github.com/tschaub))
* [#9469](https://github.com/openlayers/openlayers/pull/9469) - Use nearest lower resolution of vector tiles ([@ahocevar](https://github.com/ahocevar))
* [#9452](https://github.com/openlayers/openlayers/pull/9452) - Fewer calls to the WebGL color callback ([@tschaub](https://github.com/tschaub))
* [#9453](https://github.com/openlayers/openlayers/pull/9453) - Remove unnecessary closure and fix uniform type ([@tschaub](https://github.com/tschaub))
* [#9459](https://github.com/openlayers/openlayers/pull/9459) - Use html-to-image instead of dom-to-image-more ([@fredj](https://github.com/fredj))
* [#9450](https://github.com/openlayers/openlayers/pull/9450) - Set the interacting flag on pointerdrag instead of pointerdown ([@ahocevar](https://github.com/ahocevar))
* [#9439](https://github.com/openlayers/openlayers/pull/9439) - Add attributionsCollapsible option to source/VectorTile ([@ahocevar](https://github.com/ahocevar))
* [#9440](https://github.com/openlayers/openlayers/pull/9440) - Skip the header and bad data in CSV parsing ([@tschaub](https://github.com/tschaub))
* [#9442](https://github.com/openlayers/openlayers/pull/9442) - Disable opacity transition for raster source sources ([@ahocevar](https://github.com/ahocevar))
* [#9441](https://github.com/openlayers/openlayers/pull/9441) - Do not round view center to pixels ([@ahocevar](https://github.com/ahocevar))
* [#9435](https://github.com/openlayers/openlayers/pull/9435) - Set the default values after the property name ([@fredj](https://github.com/fredj))
* [#9433](https://github.com/openlayers/openlayers/pull/9433) - Remove unused private variables, remove trailing whitespace ([@fredj](https://github.com/fredj))
* [#9416](https://github.com/openlayers/openlayers/pull/9416) - Implement rotate and translate functions for circle geometry ([@fredj](https://github.com/fredj))
* [#9429](https://github.com/openlayers/openlayers/pull/9429) - Update all devDependencies ([@fredj](https://github.com/fredj))
* [#9425](https://github.com/openlayers/openlayers/pull/9425) - Remove unused ol/render/webgl module ([@fredj](https://github.com/fredj))
* [#9418](https://github.com/openlayers/openlayers/pull/9418) - Re-export GeometryCollection in ol/geom ([@ahocevar](https://github.com/ahocevar))
* [#9411](https://github.com/openlayers/openlayers/pull/9411) - Fix tile state condition in raster layer test ([@fredj](https://github.com/fredj))
* [#9410](https://github.com/openlayers/openlayers/pull/9410) - Add new maxDelta property to MouseWheelZoom constructor ([@fredj](https://github.com/fredj))
* [#9409](https://github.com/openlayers/openlayers/pull/9409) - Remove more opt_this parameters ([@fredj](https://github.com/fredj))
* [#9286](https://github.com/openlayers/openlayers/pull/9286) - Disable transition when an interim tile is available ([@ahocevar](https://github.com/ahocevar))
* [#9404](https://github.com/openlayers/openlayers/pull/9404) - View / apply constraints when an interaction starts ([@jahow](https://github.com/jahow))
* [#9390](https://github.com/openlayers/openlayers/pull/9390) - Add a new WebGL example for filtering features ([@jahow](https://github.com/jahow))
* [#9385](https://github.com/openlayers/openlayers/pull/9385) - PointsLayer added clear of the render Buffers on Source Change ([@Kai-W](https://github.com/Kai-W))
* [#9379](https://github.com/openlayers/openlayers/pull/9379) - Fix typo in vector tile source docs ([@openlayers](https://github.com/openlayers))
* [#9368](https://github.com/openlayers/openlayers/pull/9368) - Show only one world ([@ahocevar](https://github.com/ahocevar))
* [#9362](https://github.com/openlayers/openlayers/pull/9362) - Use local font "Ubuntu Regular" for rendering tests ([@KaiVolland](https://github.com/KaiVolland))
* [#9357](https://github.com/openlayers/openlayers/pull/9357) - Render vector tiles at the view resolution ([@ahocevar](https://github.com/ahocevar))
* [#9374](https://github.com/openlayers/openlayers/pull/9374) - Fix view initialization with min/max resolution constraint ([@jahow](https://github.com/jahow))
* [#9364](https://github.com/openlayers/openlayers/pull/9364) - Replace clip.test.js with new tests ([@KaiVolland](https://github.com/KaiVolland))
* [#9360](https://github.com/openlayers/openlayers/pull/9360) - Enables attributions for the RasterSource ([@KaiVolland](https://github.com/KaiVolland))
* [#9365](https://github.com/openlayers/openlayers/pull/9365) - Fix View method name in upgrade notes ([@jahow](https://github.com/jahow))
* [#9361](https://github.com/openlayers/openlayers/pull/9361) - Add a zDirection option for Zoomify - implements #9343 ([@lutzhelm](https://github.com/lutzhelm))
* [#9333](https://github.com/openlayers/openlayers/pull/9333) - Unify rendering tests ([@KaiVolland](https://github.com/KaiVolland))
* [#9350](https://github.com/openlayers/openlayers/pull/9350) - Remove unnecessary css in examples ([@fredj](https://github.com/fredj))
* [#9351](https://github.com/openlayers/openlayers/pull/9351) - More efficient default styles ([@ahocevar](https://github.com/ahocevar))
* [#9346](https://github.com/openlayers/openlayers/pull/9346) - Remove tilePixelRatio options from ol.source.VectorTile ([@fredj](https://github.com/fredj))
* [#9345](https://github.com/openlayers/openlayers/pull/9345) - Update all dev dependencies ([@fredj](https://github.com/fredj))
* [#9341](https://github.com/openlayers/openlayers/pull/9341) - Remove unused ExecutorGroup methods ([@ahocevar](https://github.com/ahocevar))
* [#9337](https://github.com/openlayers/openlayers/pull/9337) - Set map div size in example send to codesandbox ([@fredj](https://github.com/fredj))
* [#9335](https://github.com/openlayers/openlayers/pull/9335) - Create codesandbox using the 'parcel' template ([@openlayers](https://github.com/openlayers))
* [#9329](https://github.com/openlayers/openlayers/pull/9329) - Don't refresh the layer after addFeatures call ([@fredj](https://github.com/fredj))
* [#9328](https://github.com/openlayers/openlayers/pull/9328) - Mark layerFilter in AtPixelOptions as optional ([@fredj](https://github.com/fredj))
* [#9325](https://github.com/openlayers/openlayers/pull/9325) - Create a more accurate origin for tile positioning ([@ahocevar](https://github.com/ahocevar))
* [#9320](https://github.com/openlayers/openlayers/pull/9320) - enhance tile-debug readability ([@RobertOrthofer](https://github.com/RobertOrthofer))
* [#9318](https://github.com/openlayers/openlayers/pull/9318) - Smart cache size ([@ahocevar](https://github.com/ahocevar))
* [#9322](https://github.com/openlayers/openlayers/pull/9322) - Use closest lower source resolution for render tiles ([@ahocevar](https://github.com/ahocevar))
* [#9321](https://github.com/openlayers/openlayers/pull/9321) - Fixes #9294 (missing documention for methods with `@inheritDoc`) ([@KaiVolland](https://github.com/KaiVolland))
* [#9319](https://github.com/openlayers/openlayers/pull/9319) - Add title to license to clarify that it is BSD 2-Clause ([@tschaub](https://github.com/tschaub))
* [#9300](https://github.com/openlayers/openlayers/pull/9300) - Fix documentation about zoomDelta for ol.interaction.default function ([@fredj](https://github.com/fredj))
* [#9305](https://github.com/openlayers/openlayers/pull/9305) - Fixes failing tests for Chrome v74 ([@KaiVolland](https://github.com/KaiVolland))
* [#9315](https://github.com/openlayers/openlayers/pull/9315) - Change CSS class for tooltips in measure example ([@fredj](https://github.com/fredj))
* [#9137](https://github.com/openlayers/openlayers/pull/9137) - Refactor the way view constraints are handled & add a view extent constraint ([@jahow](https://github.com/jahow))
* [#9313](https://github.com/openlayers/openlayers/pull/9313) - Re-enable and fix disabled tests ([@ahocevar](https://github.com/ahocevar))
* [#9314](https://github.com/openlayers/openlayers/pull/9314) - Fix transpilation ([@ahocevar](https://github.com/ahocevar))
* [#9308](https://github.com/openlayers/openlayers/pull/9308) - Simplify vector tile projection handling ([@ahocevar](https://github.com/ahocevar))
* [#9312](https://github.com/openlayers/openlayers/pull/9312) - Update zoom levels for Stamen source ([@bartvde](https://github.com/bartvde))
* [#9310](https://github.com/openlayers/openlayers/pull/9310) - Add transition options to Stamen source ([@fredj](https://github.com/fredj))
* [#9307](https://github.com/openlayers/openlayers/pull/9307) - Take line-height into account when measuring text height ([@ahocevar](https://github.com/ahocevar))
* [#9306](https://github.com/openlayers/openlayers/pull/9306) - Set the canvas size to 0 on dispose ([@fredj](https://github.com/fredj))
* [#9295](https://github.com/openlayers/openlayers/pull/9295) - Update ol-mapbox-style to fix broken mapbox-style example ([@ahocevar](https://github.com/ahocevar))
* [#9292](https://github.com/openlayers/openlayers/pull/9292) - Downgrades puppeteer to `~1.11.0` ([@KaiVolland](https://github.com/KaiVolland))
* [#9266](https://github.com/openlayers/openlayers/pull/9266) - Full type definition for image vector layer options ([@tschaub](https://github.com/tschaub))
* [#9278](https://github.com/openlayers/openlayers/pull/9278) - Update Bing's imagerySet used in examples ([@fredj](https://github.com/fredj))
* [#9270](https://github.com/openlayers/openlayers/pull/9270) - Update faq.md ([@bvx89](https://github.com/bvx89))
* [#9277](https://github.com/openlayers/openlayers/pull/9277) - Rotate API token ([@ahocevar](https://github.com/ahocevar))
* [#9276](https://github.com/openlayers/openlayers/pull/9276) - Use the constructor options instead of changing the private variables ([@fredj](https://github.com/fredj))
* [#9275](https://github.com/openlayers/openlayers/pull/9275) - Remove setDeclutter function ([@fredj](https://github.com/fredj))
* [#9273](https://github.com/openlayers/openlayers/pull/9273) - Fix WMS GetFeatureInfo examples ([@chrismayer](https://github.com/chrismayer))
* [#9246](https://github.com/openlayers/openlayers/pull/9246) - Add missing ol.css in mobile-full-screen example ([@openlayers](https://github.com/openlayers))
* [#9264](https://github.com/openlayers/openlayers/pull/9264) - add question about resizing map element ([@tpluscode](https://github.com/tpluscode))
* [#9260](https://github.com/openlayers/openlayers/pull/9260) - Remove unused 'geometry' param from ol/render/canvas/Builder ([@fredj](https://github.com/fredj))
* [#9254](https://github.com/openlayers/openlayers/pull/9254) - Add tileSize option to ol/source/TileJSON ([@petrsloup](https://github.com/petrsloup))
* [#9250](https://github.com/openlayers/openlayers/pull/9250) - Clearer behaviour of clear() and refresh() on sources ([@ahocevar](https://github.com/ahocevar))
* [#9251](https://github.com/openlayers/openlayers/pull/9251) - Fix cache size calculation ([@ahocevar](https://github.com/ahocevar))
* [#9110](https://github.com/openlayers/openlayers/pull/9110) - Add TilePixelRatio to Zoomify ([@crubier](https://github.com/crubier))
* [#9244](https://github.com/openlayers/openlayers/pull/9244) - add stylus only and touch only mode to drawing a shape ([@huyngkh](https://github.com/huyngkh))
* [#9240](https://github.com/openlayers/openlayers/pull/9240) - Add setRotateWithView function to ol/style/Text ([@fredj](https://github.com/fredj))
* [#9230](https://github.com/openlayers/openlayers/pull/9230) - Consider all tiles for hit detection when decluttering ([@ahocevar](https://github.com/ahocevar))
* [#9237](https://github.com/openlayers/openlayers/pull/9237) - Fix zoom after export to PDF is done ([@umbe1987](https://github.com/umbe1987))
* [#9239](https://github.com/openlayers/openlayers/pull/9239) - Run tests in Puppeteer and non headless mode ([@ahocevar](https://github.com/ahocevar))
* [#9236](https://github.com/openlayers/openlayers/pull/9236) - Move params list to the constructor function ([@fredj](https://github.com/fredj))
* [#9233](https://github.com/openlayers/openlayers/pull/9233) - Remove deprecated {get,set}SnapToPixel functions ([@fredj](https://github.com/fredj))
* [#9231](https://github.com/openlayers/openlayers/pull/9231) - Set vector tile extent earlier ([@ahocevar](https://github.com/ahocevar))
* [#9224](https://github.com/openlayers/openlayers/pull/9224) - Remove vendor prefix for the 'transform' CSS property and fullscreen api ([@fredj](https://github.com/fredj))
* [#9222](https://github.com/openlayers/openlayers/pull/9222) - Update all dev dependencies ([@fredj](https://github.com/fredj))
* [#9221](https://github.com/openlayers/openlayers/pull/9221) - Remove unused sortByZIndex function ([@ahocevar](https://github.com/ahocevar))
* [#9220](https://github.com/openlayers/openlayers/pull/9220) - Don't resize/clear the vector renderer canvas ([@fredj](https://github.com/fredj))
* [#9217](https://github.com/openlayers/openlayers/pull/9217) - Don't use loadImage function to avoid infinite loading loop ([@fredj](https://github.com/fredj))
* [#9212](https://github.com/openlayers/openlayers/pull/9212) - Remove unnecessary type cast ([@fredj](https://github.com/fredj))
* [#9201](https://github.com/openlayers/openlayers/pull/9201) - Only consider child range with drawable tiles ([@ahocevar](https://github.com/ahocevar))
* [#9204](https://github.com/openlayers/openlayers/pull/9204) - Add missing 'include' section ([@ahocevar](https://github.com/ahocevar))
* [#9203](https://github.com/openlayers/openlayers/pull/9203) - Only promise what we can deliver regarding IntelliSense ([@ahocevar](https://github.com/ahocevar))
* [#9200](https://github.com/openlayers/openlayers/pull/9200) - Add upgrade note about renderMode: 'image' for vector layers ([@ahocevar](https://github.com/ahocevar))
* [#9197](https://github.com/openlayers/openlayers/pull/9197) - Remove unused opt_this param ([@fredj](https://github.com/fredj))
* [#9196](https://github.com/openlayers/openlayers/pull/9196) - getPointResolution returns resolution in projection units ([@ahocevar](https://github.com/ahocevar))
* [#9190](https://github.com/openlayers/openlayers/pull/9190) - Fix MultiPolygon area calculation ([@romanzoller](https://github.com/romanzoller))
* [#9179](https://github.com/openlayers/openlayers/pull/9179) - Allow declutter with image render mode ([@gberaudo](https://github.com/gberaudo))
* [#9187](https://github.com/openlayers/openlayers/pull/9187) - Remove unnecessary type cast ([@fredj](https://github.com/fredj))
* [#9186](https://github.com/openlayers/openlayers/pull/9186) - Simplify typing in EsriJSON format ([@fredj](https://github.com/fredj))
* [#9161](https://github.com/openlayers/openlayers/pull/9161) - Use type template for the source type of layers ([@fredj](https://github.com/fredj))
* [#9184](https://github.com/openlayers/openlayers/pull/9184) - Update all dev dependencies ([@fredj](https://github.com/fredj))
* [#9178](https://github.com/openlayers/openlayers/pull/9178) - Sources in npm package for TypeScript support ([@ahocevar](https://github.com/ahocevar))
* [#9181](https://github.com/openlayers/openlayers/pull/9181) - Add test to verify that removefeature is triggered ([@ahocevar](https://github.com/ahocevar))
* [#9173](https://github.com/openlayers/openlayers/pull/9173) - Document the correct render events ([@ahocevar](https://github.com/ahocevar))
* [#9167](https://github.com/openlayers/openlayers/pull/9167) - JSDoc fixes ([@ahocevar](https://github.com/ahocevar))
* [#9164](https://github.com/openlayers/openlayers/pull/9164) - event chain documentation ([@KlausBenndorf](https://github.com/KlausBenndorf))
* [#9157](https://github.com/openlayers/openlayers/pull/9157) - Remove deprecated inherits function ([@fredj](https://github.com/fredj))
* [#9152](https://github.com/openlayers/openlayers/pull/9152) - Vector tile optimizations ([@ahocevar](https://github.com/ahocevar))
* [#9154](https://github.com/openlayers/openlayers/pull/9154) - Safer check for window.screen ([@ahocevar](https://github.com/ahocevar))
* [#9150](https://github.com/openlayers/openlayers/pull/9150) - Avoid clipping when rendering to tiles that don't exceed the clip extent ([@ahocevar](https://github.com/ahocevar))
* [#9149](https://github.com/openlayers/openlayers/pull/9149) - Keep track of used labels ([@ahocevar](https://github.com/ahocevar))
* [#9131](https://github.com/openlayers/openlayers/pull/9131) - Don't use strict comparison with style.opacity ([@fredj](https://github.com/fredj))
* [#9013](https://github.com/openlayers/openlayers/pull/9013) - Added scalebar option to ol.control.scaleline ([@weskamm](https://github.com/weskamm))
* [#9133](https://github.com/openlayers/openlayers/pull/9133) - Reduce memory footprint of tiles and labels ([@ahocevar](https://github.com/ahocevar))
* [#9129](https://github.com/openlayers/openlayers/pull/9129) - Reduce garbage generation ([@fredj](https://github.com/fredj))
* [#9128](https://github.com/openlayers/openlayers/pull/9128) - Use less render cycles for vector tile layers ([@ahocevar](https://github.com/ahocevar))
* [#9120](https://github.com/openlayers/openlayers/pull/9120) - Update all dev dependencies ([@fredj](https://github.com/fredj))
* [#9118](https://github.com/openlayers/openlayers/pull/9118) - Don't dispatch change events when reading features ([@fredj](https://github.com/fredj))
* [#9114](https://github.com/openlayers/openlayers/pull/9114) - Faster extent calculation with less garbage ([@ahocevar](https://github.com/ahocevar))
* [#9109](https://github.com/openlayers/openlayers/pull/9109) - Make package.json valid json object ([@JosephSamela](https://github.com/JosephSamela))
* [#9112](https://github.com/openlayers/openlayers/pull/9112) - Properly unregister prepareTile listeners ([@ahocevar](https://github.com/ahocevar))
* [#9103](https://github.com/openlayers/openlayers/pull/9103) - Make examples more user friendly ([@ahocevar](https://github.com/ahocevar))
* [#9107](https://github.com/openlayers/openlayers/pull/9107) - Fix cgiar csi URL due to #9106 ([@webgeodatavore](https://github.com/webgeodatavore))
* [#9058](https://github.com/openlayers/openlayers/pull/9058) - Move all tile loading from the VectorImageTile to the source ([@ahocevar](https://github.com/ahocevar))
* [#9102](https://github.com/openlayers/openlayers/pull/9102) - Use dom-to-image library in export-pdf example ([@openlayers](https://github.com/openlayers))
* [#9072](https://github.com/openlayers/openlayers/pull/9072) - Remove 'layerStates' property from the FrameState ([@fredj](https://github.com/fredj))
* [#9101](https://github.com/openlayers/openlayers/pull/9101) - Always load tiles while animating and interacting ([@ahocevar](https://github.com/ahocevar))
* [#9099](https://github.com/openlayers/openlayers/pull/9099) - Allow users to opt out of tracking ([@ahocevar](https://github.com/ahocevar))
* [#9098](https://github.com/openlayers/openlayers/pull/9098) - External types bugfix for jsdoc-plugin-typescript ([@ahocevar](https://github.com/ahocevar))
* [#9083](https://github.com/openlayers/openlayers/pull/9083) - Reset lastDragTime when condition is not met ([@ahocevar](https://github.com/ahocevar))
* [#9090](https://github.com/openlayers/openlayers/pull/9090) - Add texture & color to the WebGL points renderer ([@jahow](https://github.com/jahow))
* [#9091](https://github.com/openlayers/openlayers/pull/9091) - Fix heatmap example in IE ([@jahow](https://github.com/jahow))
* [#9089](https://github.com/openlayers/openlayers/pull/9089) - Replace rawgit with jsdelivr due to #9082 comment ([@ThomasG77](https://github.com/ThomasG77))
* [#9079](https://github.com/openlayers/openlayers/pull/9079) - Listen to all fullscreen event types ([@ahocevar](https://github.com/ahocevar))
* [#9070](https://github.com/openlayers/openlayers/pull/9070) - Modify.removePoint returns true only when a vertex was removed ([@ludvigeriksson](https://github.com/ludvigeriksson))
* [#9068](https://github.com/openlayers/openlayers/pull/9068) - Use 'PBF' type instead of 'Object' in ol/format/MVT ([@fredj](https://github.com/fredj))
* [#9066](https://github.com/openlayers/openlayers/pull/9066) - Rework transformWithOptions ([@fredj](https://github.com/fredj))
* [#9064](https://github.com/openlayers/openlayers/pull/9064) - Remove Atlas, AtlasManager and getChecksum functions ([@fredj](https://github.com/fredj))
* [#9060](https://github.com/openlayers/openlayers/pull/9060) - Avoid unexpected behavior when passing string coordinates ([@ahocevar](https://github.com/ahocevar))
* [#9063](https://github.com/openlayers/openlayers/pull/9063) - Fix module name ([@oterral](https://github.com/oterral))
* [#9056](https://github.com/openlayers/openlayers/pull/9056) - Remove typecast for object literals ([@fredj](https://github.com/fredj))
* [#9057](https://github.com/openlayers/openlayers/pull/9057) - Use FeatureLike typedef ([@fredj](https://github.com/fredj))
* [#9055](https://github.com/openlayers/openlayers/pull/9055) - Remove type cast in ol.View ([@fredj](https://github.com/fredj))
* [#9008](https://github.com/openlayers/openlayers/pull/9008) - Decouple render instruction creation from rendering ([@ahocevar](https://github.com/ahocevar))
* [#9045](https://github.com/openlayers/openlayers/pull/9045) - Remove CANVAS_LINE_DASH from ol/has ([@openlayers](https://github.com/openlayers))
* [#9044](https://github.com/openlayers/openlayers/pull/9044) - Fix comments indentation ([@openlayers](https://github.com/openlayers))
* [#9043](https://github.com/openlayers/openlayers/pull/9043) - Fix type notation in examples ([@openlayers](https://github.com/openlayers))
* [#9041](https://github.com/openlayers/openlayers/pull/9041) - Reworked the Webgl Heatmap layer & associated utilities ([@jahow](https://github.com/jahow))
* [#9042](https://github.com/openlayers/openlayers/pull/9042) - Change onBoxEnd property in DragBox options to optional ([@openlayers](https://github.com/openlayers))
* [#9039](https://github.com/openlayers/openlayers/pull/9039) - Add ': void' to non returning functions (error TS7014) ([@OSHistory](https://github.com/OSHistory))
* [#9024](https://github.com/openlayers/openlayers/pull/9024) - Add prerender and postrender events for Image layer ([@ahocevar](https://github.com/ahocevar))
* [#9028](https://github.com/openlayers/openlayers/pull/9028) - Specify the return array as coordinates ([@OSHistory](https://github.com/OSHistory))
* [#9036](https://github.com/openlayers/openlayers/pull/9036) - Remove drag segments of removed features ([@ahocevar](https://github.com/ahocevar))
* [#9031](https://github.com/openlayers/openlayers/pull/9031) - Call insertVertexCondition only when a vertex acually can be inserted ([@ludvigeriksson](https://github.com/ludvigeriksson))
* [#9029](https://github.com/openlayers/openlayers/pull/9029) - Use camel-cased inheritDoc for consistency ([@OSHistory](https://github.com/OSHistory))
* [#9026](https://github.com/openlayers/openlayers/pull/9026) - Update ol-mapbox-style and jsdoc-plugin-typescript ([@ahocevar](https://github.com/ahocevar))
* [#9025](https://github.com/openlayers/openlayers/pull/9025) - Remove unused render event ([@ahocevar](https://github.com/ahocevar))
* [#9023](https://github.com/openlayers/openlayers/pull/9023) - Fix webgl PointsLayer not rendering anything ([@jahow](https://github.com/jahow))
* [#9022](https://github.com/openlayers/openlayers/pull/9022) - Use WebGL even with major performance caveat ([@ahocevar](https://github.com/ahocevar))
* [#9020](https://github.com/openlayers/openlayers/pull/9020) - Remove superfluous setTileUrlFunction call ([@ahocevar](https://github.com/ahocevar))
* [#9018](https://github.com/openlayers/openlayers/pull/9018) - Duplicate @property for style and renderOrder ([@OSHistory](https://github.com/OSHistory))
* [#9012](https://github.com/openlayers/openlayers/pull/9012) - Change projection and urls properties in sources options to optional ([@fredj](https://github.com/fredj))
* [#9010](https://github.com/openlayers/openlayers/pull/9010) - Fix ExecutorGroup.js file location in comments ([@fredj](https://github.com/fredj))
* [#9009](https://github.com/openlayers/openlayers/pull/9009) - Revert "Simplify import path in examples" ([@fredj](https://github.com/fredj))
* [#9005](https://github.com/openlayers/openlayers/pull/9005) - Simplify import path in examples ([@fredj](https://github.com/fredj))
* [#9003](https://github.com/openlayers/openlayers/pull/9003) - Remove unused Builder/Executor functions and members ([@ahocevar](https://github.com/ahocevar))
* [#9002](https://github.com/openlayers/openlayers/pull/9002) - Fix module path ([@openlayers](https://github.com/openlayers))
* [#8996](https://github.com/openlayers/openlayers/pull/8996) - Add imageRatio option for VectorImage layers ([@fredj](https://github.com/fredj))
* [#8995](https://github.com/openlayers/openlayers/pull/8995) - Remove leftover comments and code for 'vector' render mode ([@fredj](https://github.com/fredj))
* [#8992](https://github.com/openlayers/openlayers/pull/8992) - Use standard tile coords ([@tschaub](https://github.com/tschaub))
* [#8994](https://github.com/openlayers/openlayers/pull/8994) - Set projection property in sources options to optional ([@fredj](https://github.com/fredj))
* [#8977](https://github.com/openlayers/openlayers/pull/8977) - Add WebGL rendering tests & improve the WebGLHelper API ([@jahow](https://github.com/jahow))
* [#8990](https://github.com/openlayers/openlayers/pull/8990) - [Client] Remove renderFrame ([@nicholas-l](https://github.com/nicholas-l))
* [#8988](https://github.com/openlayers/openlayers/pull/8988) - Pass along the ability to measure and cache text width ([@tschaub](https://github.com/tschaub))
* [#8987](https://github.com/openlayers/openlayers/pull/8987) - Rendering test updates ([@tschaub](https://github.com/tschaub))
* [#8983](https://github.com/openlayers/openlayers/pull/8983) - Add issue templates ([@openlayers](https://github.com/openlayers))
* [#8982](https://github.com/openlayers/openlayers/pull/8982) - Stacking context for layers, overlays, and controls ([@tschaub](https://github.com/tschaub))
* [#8980](https://github.com/openlayers/openlayers/pull/8980) - Change travis references to circleci in doc ([@fredj](https://github.com/fredj))
* [#8976](https://github.com/openlayers/openlayers/pull/8976) - Scale tiles instead of canvas ([@ahocevar](https://github.com/ahocevar))
* [#8970](https://github.com/openlayers/openlayers/pull/8970) - Fix zIndex positioning ([@ahocevar](https://github.com/ahocevar))
* [#8968](https://github.com/openlayers/openlayers/pull/8968) - Use Object.values if available ([@fredj](https://github.com/fredj))
* [#8972](https://github.com/openlayers/openlayers/pull/8972) - Remove unused rollup dependency ([@ahocevar](https://github.com/ahocevar))
* [#8967](https://github.com/openlayers/openlayers/pull/8967) - Fix webgl types in ol/webgl/PostProcessingPass ([@fredj](https://github.com/fredj))
* [#8969](https://github.com/openlayers/openlayers/pull/8969) - Create and use inverse pixel transforms during render ([@tschaub](https://github.com/tschaub))
* [#8964](https://github.com/openlayers/openlayers/pull/8964) - Add index to the Collection events ([@fredj](https://github.com/fredj))
* [#8915](https://github.com/openlayers/openlayers/pull/8915) - Use CSS z-index to order layers ([@fredj](https://github.com/fredj))
* [#8923](https://github.com/openlayers/openlayers/pull/8923) - Use the composite renderer ([@tschaub](https://github.com/tschaub))
* [#8951](https://github.com/openlayers/openlayers/pull/8951) - Remove legacy WebGL code & implement a lightweight API for point rendering ([@jahow](https://github.com/jahow))
* [#8926](https://github.com/openlayers/openlayers/pull/8926) - Uncouple replay creation and rendering ([@gberaudo](https://github.com/gberaudo))
* [#8952](https://github.com/openlayers/openlayers/pull/8952) - Port polygon-style rendering test ([@fredj](https://github.com/fredj))
* [#8939](https://github.com/openlayers/openlayers/pull/8939) - Use ol/layer/Layer instead of ol/source/ImageCanvas in d3 example ([@fredj](https://github.com/fredj))
* [#8957](https://github.com/openlayers/openlayers/pull/8957) - Fix JSdoc type cast format ([@fredj](https://github.com/fredj))
* [#8934](https://github.com/openlayers/openlayers/pull/8934) - Port layer tiles rendering tests ([@fgravin](https://github.com/fgravin))
* [#8944](https://github.com/openlayers/openlayers/pull/8944) - Use a layer for the graticule instead of a control ([@jahow](https://github.com/jahow))
* [#8948](https://github.com/openlayers/openlayers/pull/8948) - Add rotation in mapbox-gl example ([@fgravin](https://github.com/fgravin))
* [#8953](https://github.com/openlayers/openlayers/pull/8953) - Store rendering artifacts immediately after run tests ([@fredj](https://github.com/fredj))
* [#8950](https://github.com/openlayers/openlayers/pull/8950) - Use shx to run unix commands in package.json ([@fredj](https://github.com/fredj))
* [#8946](https://github.com/openlayers/openlayers/pull/8946) - Make the map renderer tolerant of layers without renderers ([@tschaub](https://github.com/tschaub))
* [#8943](https://github.com/openlayers/openlayers/pull/8943) - Port text style rendering tests ([@fredj](https://github.com/fredj))
* [#8940](https://github.com/openlayers/openlayers/pull/8940) - Make layers mandatory in the OverviewMap control ([@jahow](https://github.com/jahow))
* [#8938](https://github.com/openlayers/openlayers/pull/8938) - Port render-toContext rendering test ([@fredj](https://github.com/fredj))
* [#8941](https://github.com/openlayers/openlayers/pull/8941) - Rendering tests render message ([@fredj](https://github.com/fredj))
* [#8933](https://github.com/openlayers/openlayers/pull/8933) - Port icon-symbol-svg rendering test ([@fredj](https://github.com/fredj))
* [#8931](https://github.com/openlayers/openlayers/pull/8931) - Add Mapbox-gl-js example ([@fgravin](https://github.com/fgravin))
* [#8937](https://github.com/openlayers/openlayers/pull/8937) - Make the tile debug source useful for understanding tiles ([@tschaub](https://github.com/tschaub))
* [#8930](https://github.com/openlayers/openlayers/pull/8930) - Give the layers container a CSS class name ([@fredj](https://github.com/fredj))
* [#8914](https://github.com/openlayers/openlayers/pull/8914) - Add new className property to ol/layer/Base ([@fredj](https://github.com/fredj))
* [#8910](https://github.com/openlayers/openlayers/pull/8910) - Implements containsXY for all geometries ([@fredj](https://github.com/fredj))
* [#8922](https://github.com/openlayers/openlayers/pull/8922) - Layer is reponsible for its renderer ([@fgravin](https://github.com/fgravin))
* [#8936](https://github.com/openlayers/openlayers/pull/8936) - Serve sourcemaps from webpack during rendering tests ([@tschaub](https://github.com/tschaub))
* [#8932](https://github.com/openlayers/openlayers/pull/8932) - Add pbf TypeScript type definitions ([@fredj](https://github.com/fredj))
* [#8924](https://github.com/openlayers/openlayers/pull/8924) - Reuse vector tile replays for interim tiles ([@ahocevar](https://github.com/ahocevar))
* [#8918](https://github.com/openlayers/openlayers/pull/8918) - Use dom-to-image-more library in export-map ([@fredj](https://github.com/fredj))
* [#8928](https://github.com/openlayers/openlayers/pull/8928) - Add vector tile example using ol-mapbox-style ([@ahocevar](https://github.com/ahocevar))
* [#8925](https://github.com/openlayers/openlayers/pull/8925) - Don't compute value more that once, remove unneeded type cast ([@fredj](https://github.com/fredj))
* [#8927](https://github.com/openlayers/openlayers/pull/8927) - Use local data for rendering tests ([@tschaub](https://github.com/tschaub))
* [#8920](https://github.com/openlayers/openlayers/pull/8920) - Remove unneeded 'relative' positioning ([@fredj](https://github.com/fredj))
* [#8913](https://github.com/openlayers/openlayers/pull/8913) - Implement renderFrame function for intermediate canvas renderer ([@fgravin](https://github.com/fgravin))
* [#8916](https://github.com/openlayers/openlayers/pull/8916) - Move canvas creation to intermediate canvas renderer constructor ([@tschaub](https://github.com/tschaub))
* [#8917](https://github.com/openlayers/openlayers/pull/8917) - Apply all transforms in the layer renderer ([@tschaub](https://github.com/tschaub))
* [#8912](https://github.com/openlayers/openlayers/pull/8912) - Rotation support in the composite renderer ([@tschaub](https://github.com/tschaub))
* [#8908](https://github.com/openlayers/openlayers/pull/8908) - Handle layer opacity in the composite renderer ([@tschaub](https://github.com/tschaub))
* [#8848](https://github.com/openlayers/openlayers/pull/8848) - Make layer renderers explicit layer dependencies ([@tschaub](https://github.com/tschaub))
* [#8892](https://github.com/openlayers/openlayers/pull/8892) - Use the right device orientation property in example ([@fredj](https://github.com/fredj))
* [#8904](https://github.com/openlayers/openlayers/pull/8904) - Add support for a default index page in the rendering tests ([@tschaub](https://github.com/tschaub))
* [#8903](https://github.com/openlayers/openlayers/pull/8903) - Additional render tests ([@tschaub](https://github.com/tschaub))
* [#8895](https://github.com/openlayers/openlayers/pull/8895) - New rendering tests ([@tschaub](https://github.com/tschaub))
* [#8893](https://github.com/openlayers/openlayers/pull/8893) - Add proj.js to the sideEffects list ([@fredj](https://github.com/fredj))
* [#8887](https://github.com/openlayers/openlayers/pull/8887) - Changes for 5.3.0 ([@openlayers](https://github.com/openlayers))
<details>
<summary>Dependency Updates</summary>
* [#9990](https://github.com/openlayers/openlayers/pull/9990) - Update handlebars to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#9987](https://github.com/openlayers/openlayers/pull/9987) - Update webpack to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#9972](https://github.com/openlayers/openlayers/pull/9972) - Update handlebars to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#9952](https://github.com/openlayers/openlayers/pull/9952) - Update handlebars to the latest version ([@openlayers](https://github.com/openlayers))
* [#9932](https://github.com/openlayers/openlayers/pull/9932) - Greenkeeper/webpack 4.40.2 ([@openlayers](https://github.com/openlayers))
* [#9928](https://github.com/openlayers/openlayers/pull/9928) - Update puppeteer to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#9926](https://github.com/openlayers/openlayers/pull/9926) - Update webpack to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#9914](https://github.com/openlayers/openlayers/pull/9914) - Greenkeeper/terser webpack plugin 2.0.1 ([@openlayers](https://github.com/openlayers))
* [#9886](https://github.com/openlayers/openlayers/pull/9886) - Update webpack to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#9880](https://github.com/openlayers/openlayers/pull/9880) - Greenkeeper/karma coverage 2.0.1 ([@openlayers](https://github.com/openlayers))
* [#9876](https://github.com/openlayers/openlayers/pull/9876) - Update yargs to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#9856](https://github.com/openlayers/openlayers/pull/9856) - Update webpack to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#9857](https://github.com/openlayers/openlayers/pull/9857) - Update karma-chrome-launcher to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#9817](https://github.com/openlayers/openlayers/pull/9817) - Update webpack to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#9827](https://github.com/openlayers/openlayers/pull/9827) - Update coveralls to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#9816](https://github.com/openlayers/openlayers/pull/9816) - Update webpack to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#9801](https://github.com/openlayers/openlayers/pull/9801) - Update webpack to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#9795](https://github.com/openlayers/openlayers/pull/9795) - Update webpack to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#9793](https://github.com/openlayers/openlayers/pull/9793) - Update puppeteer to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#9787](https://github.com/openlayers/openlayers/pull/9787) - Update mocha to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#9786](https://github.com/openlayers/openlayers/pull/9786) - chore(package): update webpack to version 4.36.1 ([@openlayers](https://github.com/openlayers))
* [#9775](https://github.com/openlayers/openlayers/pull/9775) - Update jsdoc to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#9772](https://github.com/openlayers/openlayers/pull/9772) - Update karma-chrome-launcher to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#9769](https://github.com/openlayers/openlayers/pull/9769) - Update coveralls to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#9759](https://github.com/openlayers/openlayers/pull/9759) - Update marked to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#9763](https://github.com/openlayers/openlayers/pull/9763) - Update webpack to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#9744](https://github.com/openlayers/openlayers/pull/9744) - chore(package): update webpack to version 4.35.2 ([@openlayers](https://github.com/openlayers))
* [#9738](https://github.com/openlayers/openlayers/pull/9738) - Update marked to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#9737](https://github.com/openlayers/openlayers/pull/9737) - Update globby to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#9703](https://github.com/openlayers/openlayers/pull/9703) - Update eslint to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#9698](https://github.com/openlayers/openlayers/pull/9698) - Update puppeteer to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#9695](https://github.com/openlayers/openlayers/pull/9695) - Update webpack to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#9673](https://github.com/openlayers/openlayers/pull/9673) - Update webpack to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#9660](https://github.com/openlayers/openlayers/pull/9660) - Update pixelmatch to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#9653](https://github.com/openlayers/openlayers/pull/9653) - Update coveralls to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#9649](https://github.com/openlayers/openlayers/pull/9649) - Update webpack to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#9598](https://github.com/openlayers/openlayers/pull/9598) - Update puppeteer to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#9594](https://github.com/openlayers/openlayers/pull/9594) - Update webpack to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#9589](https://github.com/openlayers/openlayers/pull/9589) - Update webpack to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#9586](https://github.com/openlayers/openlayers/pull/9586) - Update rollup-plugin-terser to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#9553](https://github.com/openlayers/openlayers/pull/9553) - chore(package): update ol-mapbox-style to version 5.0.0-beta.2 ([@openlayers](https://github.com/openlayers))
* [#9528](https://github.com/openlayers/openlayers/pull/9528) - Update puppeteer to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#9517](https://github.com/openlayers/openlayers/pull/9517) - Update jsdoc to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#9515](https://github.com/openlayers/openlayers/pull/9515) - Update fs-extra to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#9508](https://github.com/openlayers/openlayers/pull/9508) - Update webpack to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#9486](https://github.com/openlayers/openlayers/pull/9486) - Update jquery to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#9468](https://github.com/openlayers/openlayers/pull/9468) - Update puppeteer to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#9444](https://github.com/openlayers/openlayers/pull/9444) - Update mocha to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#9432](https://github.com/openlayers/openlayers/pull/9432) - Update handlebars to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#9431](https://github.com/openlayers/openlayers/pull/9431) - Update webpack to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#9427](https://github.com/openlayers/openlayers/pull/9427) - Update mocha to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#9420](https://github.com/openlayers/openlayers/pull/9420) - Update jquery to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#9412](https://github.com/openlayers/openlayers/pull/9412) - Update mocha to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#9408](https://github.com/openlayers/openlayers/pull/9408) - chore(package): update mocha to version 6.1.1 ([@openlayers](https://github.com/openlayers))
* [#9406](https://github.com/openlayers/openlayers/pull/9406) - Update clean-css-cli to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#9405](https://github.com/openlayers/openlayers/pull/9405) - Update marked to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#9387](https://github.com/openlayers/openlayers/pull/9387) - Update puppeteer to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#9342](https://github.com/openlayers/openlayers/pull/9342) - Update handlebars to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#9311](https://github.com/openlayers/openlayers/pull/9311) - Update pbf to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#9285](https://github.com/openlayers/openlayers/pull/9285) - Update globby to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#9280](https://github.com/openlayers/openlayers/pull/9280) - Update ol-mapbox-style to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#9279](https://github.com/openlayers/openlayers/pull/9279) - Update webpack to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#9268](https://github.com/openlayers/openlayers/pull/9268) - Update mocha to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#9261](https://github.com/openlayers/openlayers/pull/9261) - Update coveralls to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#9256](https://github.com/openlayers/openlayers/pull/9256) - Update mocha to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#9247](https://github.com/openlayers/openlayers/pull/9247) - Update copy-webpack-plugin to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#9242](https://github.com/openlayers/openlayers/pull/9242) - Update marked to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#9238](https://github.com/openlayers/openlayers/pull/9238) - Update mocha to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#9232](https://github.com/openlayers/openlayers/pull/9232) - Update webpack to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#9225](https://github.com/openlayers/openlayers/pull/9225) - Update webpack to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#9207](https://github.com/openlayers/openlayers/pull/9207) - Update yargs to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#9195](https://github.com/openlayers/openlayers/pull/9195) - Update handlebars to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#9194](https://github.com/openlayers/openlayers/pull/9194) - chore(package): update webpack to version 4.29.3 ([@openlayers](https://github.com/openlayers))
* [#9185](https://github.com/openlayers/openlayers/pull/9185) - Update webpack to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#9148](https://github.com/openlayers/openlayers/pull/9148) - Update karma to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#9124](https://github.com/openlayers/openlayers/pull/9124) - Update sinon to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#9127](https://github.com/openlayers/openlayers/pull/9127) - Update webpack to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#9108](https://github.com/openlayers/openlayers/pull/9108) - Update webpack to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#9095](https://github.com/openlayers/openlayers/pull/9095) - Update marked to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#9092](https://github.com/openlayers/openlayers/pull/9092) - Update webpack to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#9085](https://github.com/openlayers/openlayers/pull/9085) - Update webpack to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#9080](https://github.com/openlayers/openlayers/pull/9080) - Update webpack to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#9076](https://github.com/openlayers/openlayers/pull/9076) - Update webpack to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#9037](https://github.com/openlayers/openlayers/pull/9037) - Update webpack to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#9032](https://github.com/openlayers/openlayers/pull/9032) - Update webpack to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#9004](https://github.com/openlayers/openlayers/pull/9004) - Update webpack to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#8989](https://github.com/openlayers/openlayers/pull/8989) - Update marked to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#8978](https://github.com/openlayers/openlayers/pull/8978) - Update webpack to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#8966](https://github.com/openlayers/openlayers/pull/8966) - Update rollup to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#8963](https://github.com/openlayers/openlayers/pull/8963) - Update rollup to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#8905](https://github.com/openlayers/openlayers/pull/8905) - Update rollup to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#8902](https://github.com/openlayers/openlayers/pull/8902) - Update rollup to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
</details>

34
changelog/v6.0.1.md Normal file
View File

@@ -0,0 +1,34 @@
# 6.0.1
Hot on the heels of the 6.0 release, this patch release includes a few fixes for existing functionality. There should be nothing special needed to upgrade an application from 6.0.0 to 6.0.1. See the 6.0.0 release notes for details on upgrading from an older version.
## Changes
* [#10060](https://github.com/openlayers/openlayers/pull/10060) - Ensure zoom level is not less than minimum integer zoom level for extent ([@mike-000](https://github.com/mike-000))
* [#10045](https://github.com/openlayers/openlayers/pull/10045) - Make the immediate API work with a user projection ([@tschaub](https://github.com/tschaub))
* [#10068](https://github.com/openlayers/openlayers/pull/10068) - Update jsdoc-plugin-typescript to 2.0.3 ([@ahocevar](https://github.com/ahocevar))
* [#10063](https://github.com/openlayers/openlayers/pull/10063) - Use the same spelling used elsewhere ([@tschaub](https://github.com/tschaub))
* [#10067](https://github.com/openlayers/openlayers/pull/10067) - fixed jsdoc type annotations ([@KlausBenndorf](https://github.com/KlausBenndorf))
* [#10057](https://github.com/openlayers/openlayers/pull/10057) - Remove unused test extensions ([@tschaub](https://github.com/tschaub))
* [#10056](https://github.com/openlayers/openlayers/pull/10056) - Remove called assert extension ([@tschaub](https://github.com/tschaub))
* [#10055](https://github.com/openlayers/openlayers/pull/10055) - Ensure proper tile load sequence ([@ahocevar](https://github.com/ahocevar))
* [#10051](https://github.com/openlayers/openlayers/pull/10051) - Simplify the assertion ([@tschaub](https://github.com/tschaub))
* [#10050](https://github.com/openlayers/openlayers/pull/10050) - Use expect().fail() instead of expect.fail() ([@tschaub](https://github.com/tschaub))
* [#10048](https://github.com/openlayers/openlayers/pull/10048) - Early EMPTY state for VectorRenderTile ([@ahocevar](https://github.com/ahocevar))
* [#10043](https://github.com/openlayers/openlayers/pull/10043) - User coordinates during snapping ([@tschaub](https://github.com/tschaub))
* [#10042](https://github.com/openlayers/openlayers/pull/10042) - Better typing ([@fredj](https://github.com/fredj))
* [#10040](https://github.com/openlayers/openlayers/pull/10040) - Additional tests for LineString ([@ahocevar](https://github.com/ahocevar))
* [#10038](https://github.com/openlayers/openlayers/pull/10038) - do not stale issues with `bug` or `pull request accepted` labels ([@KlausBenndorf](https://github.com/KlausBenndorf))
* [#10039](https://github.com/openlayers/openlayers/pull/10039) - 🚀 Release 6 ([@openlayers](https://github.com/openlayers))
<details>
<summary>Dependency Updates</summary>
* [#10065](https://github.com/openlayers/openlayers/pull/10065) - Update mocha to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#10064](https://github.com/openlayers/openlayers/pull/10064) - Update handlebars to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#10052](https://github.com/openlayers/openlayers/pull/10052) - Update handlebars to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#10041](https://github.com/openlayers/openlayers/pull/10041) - Update handlebars to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
</details>

86
changelog/v6.1.0.md Normal file
View File

@@ -0,0 +1,86 @@
# 6.1.0
With 47 pull requests, this release keeps up the momentum of the v6.x effort and brings several bug fixes, performance improvements and new features. In addition to that, we added some missing documentation to our API docs and gave them some usability improvements.
## New features
* A new, performance optimized hit detection API on the layer level, `Layer#getFeatures(pixel)` has been introduced. At this point it is implemented for vector, vector tile and image vector layers, and is recommended when performance is critical, e.g. for hit detection on mouseover.
* For the WebGLPoints layer, we made several additions to the style expressions system. This includes a `case` operator, support for array and string types, and type checking.
## List of all changes
* [#10214](https://github.com/openlayers/openlayers/pull/10214) - WebGL / Add 'case' operator for style expressions ([@jahow](https://github.com/jahow))
* [#10198](https://github.com/openlayers/openlayers/pull/10198) - WebGL renderer / use the specified loading strategy for the vector data ([@jahow](https://github.com/jahow))
* [#10212](https://github.com/openlayers/openlayers/pull/10212) - Add config file for dependabot ([@fredj](https://github.com/fredj))
* [#10187](https://github.com/openlayers/openlayers/pull/10187) - Set touch-action to allow native touch gestures ([@ahocevar](https://github.com/ahocevar))
* [#10194](https://github.com/openlayers/openlayers/pull/10194) - Added check to make sure extent array has four objects. ([@MrSoUndso](https://github.com/MrSoUndso))
* [#10204](https://github.com/openlayers/openlayers/pull/10204) - Avoid scrolling over navigation ([@tschaub](https://github.com/tschaub))
* [#10205](https://github.com/openlayers/openlayers/pull/10205) - Add the default to the type column ([@tschaub](https://github.com/tschaub))
* [#10178](https://github.com/openlayers/openlayers/pull/10178) - Make ol/interaction/Select#handleEvent return always true. ([@TieSKey](https://github.com/TieSKey))
* [#10203](https://github.com/openlayers/openlayers/pull/10203) - Keep issues assigned to a milestone from going stale ([@tschaub](https://github.com/tschaub))
* [#10200](https://github.com/openlayers/openlayers/pull/10200) - Carbon add on API docs ([@tschaub](https://github.com/tschaub))
* [#10196](https://github.com/openlayers/openlayers/pull/10196) - Webgl / add support for string and arrays in style expressions ([@jahow](https://github.com/jahow))
* [#10197](https://github.com/openlayers/openlayers/pull/10197) - Restore node v8 compatibility ([@ahocevar](https://github.com/ahocevar))
* [#10195](https://github.com/openlayers/openlayers/pull/10195) - Treat hsl/hsla as named colors ([@mike-000](https://github.com/mike-000))
* [#10188](https://github.com/openlayers/openlayers/pull/10188) - Document that map render events do not have a context set ([@ahocevar](https://github.com/ahocevar))
* [#10184](https://github.com/openlayers/openlayers/pull/10184) - Clamp the weight value between 0 and 1 ([@fredj](https://github.com/fredj))
* [#10175](https://github.com/openlayers/openlayers/pull/10175) - Remove description from type tag ([@tschaub](https://github.com/tschaub))
* [#10176](https://github.com/openlayers/openlayers/pull/10176) - Avoid toggling when clicking the title ([@tschaub](https://github.com/tschaub))
* [#10172](https://github.com/openlayers/openlayers/pull/10172) - Ensure inherited docs are shown ([@ahocevar](https://github.com/ahocevar))
* [#10171](https://github.com/openlayers/openlayers/pull/10171) - Open default attributions links in a new tab or window ([@mike-000](https://github.com/mike-000))
* [#10047](https://github.com/openlayers/openlayers/pull/10047) - Apidoc changes ([@KaiVolland](https://github.com/KaiVolland))
* [#10161](https://github.com/openlayers/openlayers/pull/10161) - Implement getFeatures() for ol/layer/VectorImage ([@ahocevar](https://github.com/ahocevar))
* [#10168](https://github.com/openlayers/openlayers/pull/10168) - Webgl / Add support for filtering and color interpolation in style expressions ([@jahow](https://github.com/jahow))
* [#10170](https://github.com/openlayers/openlayers/pull/10170) - Add back html from select-features example ([@openlayers](https://github.com/openlayers))
* [#10093](https://github.com/openlayers/openlayers/pull/10093) - Set label text for Graticule option styles ([@mike-000](https://github.com/mike-000))
* [#10160](https://github.com/openlayers/openlayers/pull/10160) - Improve test in case of async call ([@ejn](https://github.com/ejn))
* [#10159](https://github.com/openlayers/openlayers/pull/10159) - Fix target name collision in event.Target and Control ([@ejn](https://github.com/ejn))
* [#10142](https://github.com/openlayers/openlayers/pull/10142) - Fix tilechange events ([@ahocevar](https://github.com/ahocevar))
* [#10138](https://github.com/openlayers/openlayers/pull/10138) - Should be able to ovveride defaultvalue of style in selection. ([@wirdehall](https://github.com/wirdehall))
* [#10135](https://github.com/openlayers/openlayers/pull/10135) - Revise the description of applyTransform for geometries ([@mike-000](https://github.com/mike-000))
* [#10133](https://github.com/openlayers/openlayers/pull/10133) - Properly unregister source tile change listeners ([@ahocevar](https://github.com/ahocevar))
* [#10094](https://github.com/openlayers/openlayers/pull/10094) - New Layer#getFeatures method with fast hit detection ([@ahocevar](https://github.com/ahocevar))
* [#10104](https://github.com/openlayers/openlayers/pull/10104) - Remove font sizing from the attribution control ([@openlayers](https://github.com/openlayers))
* [#10108](https://github.com/openlayers/openlayers/pull/10108) - Fix documentation for handleMoveEvent ([@notnotse](https://github.com/notnotse))
* [#10118](https://github.com/openlayers/openlayers/pull/10118) - Document the OSM crossOrigin default ([@mike-000](https://github.com/mike-000))
* [#10112](https://github.com/openlayers/openlayers/pull/10112) - No ERROR state for render tiles ([@ahocevar](https://github.com/ahocevar))
* [#10115](https://github.com/openlayers/openlayers/pull/10115) - Improve Heatmap hit detection test ([@jahow](https://github.com/jahow))
* [#10111](https://github.com/openlayers/openlayers/pull/10111) - Correct the defaulting of ol/source/VectorTile maxZoom ([@mike-000](https://github.com/mike-000))
* [#10102](https://github.com/openlayers/openlayers/pull/10102) - Cosmetic type fixes ([@KlausBenndorf](https://github.com/KlausBenndorf))
* [#10107](https://github.com/openlayers/openlayers/pull/10107) - Update Vector Tile Info example test for no features ([@mike-000](https://github.com/mike-000))
* [#10097](https://github.com/openlayers/openlayers/pull/10097) - Align layer canvas to the left ([@fredj](https://github.com/fredj))
* [#10101](https://github.com/openlayers/openlayers/pull/10101) - Add hit detection support on the Heatmap layer ([@jahow](https://github.com/jahow))
* [#10087](https://github.com/openlayers/openlayers/pull/10087) - Add example showing vector tiles in EPSG:4326 ([@petrsloup](https://github.com/petrsloup))
* [#10086](https://github.com/openlayers/openlayers/pull/10086) - Update mapbox-style example ([@petrsloup](https://github.com/petrsloup))
* [#10083](https://github.com/openlayers/openlayers/pull/10083) - webgl points layer example fixes ([@MoonE](https://github.com/MoonE))
* [#10076](https://github.com/openlayers/openlayers/pull/10076) - Remove unnecessary typecast ([@fredj](https://github.com/fredj))
* [#10074](https://github.com/openlayers/openlayers/pull/10074) - Remove offsets from mouse position calculation ([@mike-000](https://github.com/mike-000))
* [#10072](https://github.com/openlayers/openlayers/pull/10072) - Better typing ([@fredj](https://github.com/fredj))
<details>
<summary>Dependency Updates</summary>
* [#10208](https://github.com/openlayers/openlayers/pull/10208) - Bump pixelmatch from 5.0.2 to 5.1.0 ([@openlayers](https://github.com/openlayers))
* [#10210](https://github.com/openlayers/openlayers/pull/10210) - Bump glob from 7.1.4 to 7.1.5 ([@openlayers](https://github.com/openlayers))
* [#10209](https://github.com/openlayers/openlayers/pull/10209) - Bump karma from 4.1.0 to 4.4.1 ([@openlayers](https://github.com/openlayers))
* [#10207](https://github.com/openlayers/openlayers/pull/10207) - Bump ol-mapbox-style from 5.0.0-beta.3 to 5.0.2 ([@openlayers](https://github.com/openlayers))
* [#10157](https://github.com/openlayers/openlayers/pull/10157) - Bump karma-coverage-istanbul-reporter from 2.0.5 to 2.1.0 ([@openlayers](https://github.com/openlayers))
* [#10155](https://github.com/openlayers/openlayers/pull/10155) - Bump @types/pbf from 3.0.1 to 3.0.2 ([@openlayers](https://github.com/openlayers))
* [#10153](https://github.com/openlayers/openlayers/pull/10153) - Bump yargs from 14.0.0 to 14.2.0 ([@openlayers](https://github.com/openlayers))
* [#10154](https://github.com/openlayers/openlayers/pull/10154) - Bump @babel/core from 7.4.4 to 7.6.4 ([@openlayers](https://github.com/openlayers))
* [#10151](https://github.com/openlayers/openlayers/pull/10151) - Bump rollup-plugin-babel from 4.3.2 to 4.3.3 ([@openlayers](https://github.com/openlayers))
* [#10148](https://github.com/openlayers/openlayers/pull/10148) - Bump rollup-plugin-node-resolve from 5.0.0 to 5.2.0 ([@openlayers](https://github.com/openlayers))
* [#10150](https://github.com/openlayers/openlayers/pull/10150) - Bump copy-webpack-plugin from 5.0.3 to 5.0.4 ([@openlayers](https://github.com/openlayers))
* [#10149](https://github.com/openlayers/openlayers/pull/10149) - Bump rbush from 3.0.0 to 3.0.1 ([@openlayers](https://github.com/openlayers))
* [#10147](https://github.com/openlayers/openlayers/pull/10147) - Bump rollup from 1.12.0 to 1.25.1 ([@openlayers](https://github.com/openlayers))
* [#10145](https://github.com/openlayers/openlayers/pull/10145) - Greenkeeper/handlebars 4.4.5 ([@openlayers](https://github.com/openlayers))
* [#10132](https://github.com/openlayers/openlayers/pull/10132) - Update webpack to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#10143](https://github.com/openlayers/openlayers/pull/10143) - Update mocha to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#10117](https://github.com/openlayers/openlayers/pull/10117) - Update pbf to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#10114](https://github.com/openlayers/openlayers/pull/10114) - Update coveralls to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#10116](https://github.com/openlayers/openlayers/pull/10116) - Update webpack to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#10105](https://github.com/openlayers/openlayers/pull/10105) - Update jsdoc-plugin-typescript to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
</details>

View File

@@ -15,7 +15,7 @@
</tr><tr>
<th>Controls</th><th>Interactions</th><th>Sources and formats</th>
</tr><tr>
<td><a href="module-ol_control_util.html#.defaults">Map default controls</a><br>
<td><a href="module-ol_control.html#.defaults">Map default controls</a><br>
<a href="module-ol_control_Control-Control.html">All controls</a>
</td>
<td>

View File

@@ -1,9 +0,0 @@
@navWidth: 250px;
@colorSubtitle: rgb(119, 156, 52);
@colorRed: rgb(238, 125, 125);
@colorLink: #2a6496;
@colorBgNavi: #2a2a2a;
.font-description () {
font-family: "freight-text-pro",Georgia,Cambria,"Times New Roman",Times,serif
}

View File

@@ -1,10 +0,0 @@
@import "common.less";
footer {
margin: 15px 0;
padding-top: 15px;
border-top: 1px solid #e1e1e1;
.font-description();
font-size: 0.8em;
color: gray;
}

View File

@@ -1,22 +0,0 @@
@import "common.less";
// normalize
html, body {
font: 1em "jaf-bernino-sans","Lucida Grande","Lucida Sans Unicode","Lucida Sans",Geneva,Verdana,sans-serif;
background-color: #fff;
}
ul, ol {
margin: 0;
padding: 0;
}
li {
list-style-type: none;
}
#wrap {
position: relative;
}
@import "navigation.less";
@import "main.less";
@import "footer.less";

View File

@@ -1,288 +0,0 @@
@import "common.less";
.main {
padding: 20px 20px;
margin-left: @navWidth;
.page-title {
display: none;
}
h1 {
font-weight: bold;
font-size: 1.6em;
margin: 0;
}
h2 {
font-weight: bold;
font-size: 1.5em;
margin: 0;
}
h3 {
font-weight: bold;
font-size: 12px;
margin: 5px 0;
}
h4 {
font-weight: bold;
font-size: 1em;
}
h5 {
font-weight: bold;
font-size: 12px;
}
dd {
font-size: 12px;
}
h4.name {
span.type-signature {
display: inline-block;
border-radius: 3px;
background-color: gray;
color: #fff;
font-size: 0.7em;
padding: 2px 4px;
}
span.type {
margin-left: 5px;
}
span.glyphicon {
display: inline-block;
vertical-align: middle;
color: #e1e1e1;
margin-left: 7px;
}
span.returnType {
margin-left: 3px;
background-color: transparent!important;
color: gray!important;
}
}
span.static {
display: inline-block;
border-radius: 3px;
background-color: @colorSubtitle!important;
color: #fff;
font-size: 0.7em;
padding: 2px 4px;
margin-right: 8px;
}
span.number {
background-color: #ccc!important;
color: #2fa2b1!important;
}
span.string {
background-color: #ccc!important;
color: #2fa2b1!important;
}
span.object {
background-color: #ccc!important;
color: #2fa2b1!important;
}
span.array {
background-color: #ccc!important;
color: #2fa2b1!important;
}
span.boolean {
background-color: #ccc!important;
color: #2fa2b1!important;
}
.subsection-title {
font-size: 14px;
margin-top: 30px;
color: @colorSubtitle;
}
.description {
margin-top: 10px;
// .font-description();
font-size: 13px;
p {
font-size: 13px;
}
}
.tag-source {
font-size: 12px;
}
dt.tag-source {
margin-top: 5px;
}
dt.tag-todo {
font-size: 10px;
display: inline-block;
background-color: @colorLink;
color: #fff;
padding: 2px 4px;
border-radius: 5px;
}
.type-signature {
font-size: 12px;
}
.tag-deprecated {
display: inline-block;
font-size: 10px;
}
.important {
background-color: @colorRed;
color: #fff;
padding: 2px 4px;
border-radius: 5px;
}
.nameContainer {
position: relative;
margin-top: 20px;
padding-top: 5px;
border-top: 1px solid #e1e1e1;
.inherited {
display: inline-block;
border-radius: 3px;
background-color: #888!important;
font-size: 0.7em;
padding: 2px 4px;
margin-right: 5px;
a {
color: #fff;
}
}
.tag-source {
position: absolute;
top: 17px;
right: 0;
font-size: 10px;
a {
color: gray;
}
}
&.inherited {
color: gray;
}
h4 {
margin-right: 150px;
line-height: 1.3;
.signature {
font-size: 13px;
font-weight: normal;
font-family: Menlo,Monaco,Consolas,"Courier New",monospace;
}
}
}
pre {
font-size: 11px;
}
table {
width: 100%;
margin-bottom: 15px;
th {
padding: 3px 3px;
}
td {
vertical-align: top;
padding: 5px 3px;
}
.name {
width: 110px;
}
.type {
width: 60px;
color: #aaa;
font-size: 11px;
}
.attributes {
width: 80px;
color: #aaa;
font-size: 11px;
}
.description {
font-size: 12px;
p {
margin: 0;
}
}
.optional {
float: left;
border-radius: 3px;
background-color: #ddd!important;
font-size: 0.7em;
padding: 2px 4px;
margin-right: 5px;
color: gray;
}
}
.readme {
p {
margin-top: 15px;
line-height: 1.2;
font-size: 0.85em;
}
h1 {
font-size: 1.7em;
}
h2 {
margin-top: 30px;
margin-bottom: 10px;
padding-bottom: 10px;
border-bottom: 1px solid #e1e1e1;
}
li {
font-size: 0.9em;
margin-bottom: 10px;
}
}
article {
ol, ul {
margin-left: 25px;
}
ol > li {
list-style-type: decimal;
margin-bottom: 5px;
}
ul > li {
margin-bottom: 5px;
list-style-type: disc;
}
}
}

View File

@@ -1,103 +0,0 @@
@import "common.less";
::-webkit-scrollbar {
width: 8px;
background-color: transparent;
}
::-webkit-scrollbar-thumb {
background-color: gray;
border-radius: 4px;
}
.navigation {
position: fixed;
float: left;
width: @navWidth;
height: 100%;
background-color: @colorBgNavi;
.applicationName {
margin: 0;
margin-top: 15px;
padding: 10px 15px;
font: bold 1.25em Helvetica;
color: #fff;
a {
color: #fff;
}
}
.search {
padding: 10px 15px;
input {
background-color: #333;
color: #fff;
border-color: #555;
}
}
.list {
padding: 10px 15px 0 15px;
position: relative;
overflow: auto;
width: 100%;
}
li.item {
margin-bottom: 8px;
padding-bottom: 8px;
border-bottom: 1px solid #333;
a {
color: #bbb;
&:hover {
color: #fff;
}
}
.title {
cursor: pointer;
position: relative;
a {
color: #e1e1e1;
&:hover {
color: #fff;
}
}
display: block;
font-size: 0.8em;
.static {
display: block;
border-radius: 3px;
background-color: @colorSubtitle;
color: #000;
font-size: 0.7em;
padding: 2px 4px;
float: right;
}
}
.subtitle {
margin-top: 10px;
font: bold 0.65em Helvetica;
color: @colorSubtitle;
display: block;
}
ul {
& > li {
font-size: 0.7em;
padding-left: 8px;
margin-top: 2px;
}
}
.itemMembers {
display: none;
}
}
}

View File

@@ -215,15 +215,20 @@ function buildNav(members) {
return 0;
});
function createEntry(type, v) {
return {
type: type,
_.each(merged, function(v) {
// exclude interfaces from sidebar
if (v.interface !== true && v.kind === 'class') {
nav.push({
type: 'class',
longname: v.longname,
prettyname: v.longname
.split('~')[0]
.replace('module:', ''),
name: v.name,
classes: find({
kind: 'class',
memberof: v.longname
}).map(createEntry.bind(this, 'class')),
module: find({
kind: 'module',
longname: v.memberof
})[0],
members: find({
kind: 'member',
memberof: v.longname
@@ -236,17 +241,48 @@ function buildNav(members) {
kind: 'typedef',
memberof: v.longname
}),
fires: v.fires,
events: find({
kind: 'event',
memberof: v.longname
})
};
}
_.each(merged, function(v) {
// exclude interfaces from sidebar
if (v.interface !== true) {
if (v.kind == 'module') {
nav.push(createEntry('module', v));
});
} else if (v.kind == 'module') {
const classes = find({
kind: 'class',
memberof: v.longname
});
const members = find({
kind: 'member',
memberof: v.longname
});
const methods = find({
kind: 'function',
memberof: v.longname
});
const typedefs = find({
kind: 'typedef',
memberof: v.longname
});
const events = find({
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)) {
nav.push({
type: 'module',
longname: v.longname,
prettyname: v.longname
.split('~')[0]
.replace('module:', ''),
name: v.name,
members: members,
methods: methods,
typedefs: typedefs,
fires: v.fires,
events: events
});
}
}
});

View File

@@ -1,37 +1,74 @@
$(function () {
// Search Items
$('#include_modules').change(function (e) {
console.log('change');
if ($(this).is(':checked')) {
} else {
}
});
var getSearchWeight = function (searchTerm, $matchedItem) {
let weight = 0;
// We could get smarter on the weight here
if ($matchedItem.data('shortname')
&& $matchedItem.data('shortname').toLowerCase() === searchTerm.toLowerCase()) {
weight++;
}
return weight;
};
// sort function callback
var weightSorter = function (a, b) {
var aW = $(a).data('weight') || 0;
var bW = $(b).data('weight') || 0;
return bW - aW;
};
// Search Items
$('#search').on('keyup', function (e) {
var value = $(this).val();
var $el = $('.navigation');
if (value) {
if (value && value.length > 1) {
var regexp = new RegExp(value, 'i');
$el.find('li, .itemMembers').hide();
$el.find('li').each(function (i, v) {
var $item = $(v);
const $item = $(v);
const name = $item.data('name');
if ($item.data('name') && regexp.test($item.data('name'))) {
const container = $item.parent().parent().parent();
container.show();
container.closest('.itemMembers').show();
container.closest('.item').show();
if (name && regexp.test(name)) {
const $classEntry = $item.closest('.item');
const $members = $item.closest('.itemMembers');
// Do the weight thing
$classEntry.removeData('weight');
$classEntry.show();
const weight = getSearchWeight(value, $classEntry);
$classEntry.data('weight', weight);
$members.show();
$classEntry.show();
$item.show();
$item.closest('.itemMembers').show();
$item.closest('.item').show();
}
});
$(".navigation ul.list li.item:visible")
.sort(weightSorter) // sort elements
.appendTo(".navigation ul.list"); // append again to the list
} else {
$el.find('.item, .itemMembers').hide();
$('.navigation>ul>li').show();
$el.find('.item, .itemMembers').show();
}
$el.find('.list').scrollTop(0);
});
// Toggle when click an item element
$('.navigation').on('click', '.title', function (e) {
$(this).parent().find('.itemMembers').toggle();
$('.navigation').on('click', '.toggle', function (e) {
$(this).parent().parent().find('.itemMembers').toggle();
});
// Show an item related a current documentation automatically
@@ -75,7 +112,7 @@ $(function () {
var branchSearch = url.match(/\/([^\/]*)\/apidoc\//);
var cookieText = 'dismissed=-' + latestVersion + '-';
var dismissed = document.cookie.indexOf(cookieText) != -1;
if (!dismissed && /^v[0-9\.]*$/.test(branchSearch[1]) && currentVersion != latestVersion) {
if (branchSearch && !dismissed && /^v[0-9\.]*$/.test(branchSearch[1]) && currentVersion != latestVersion) {
var link = url.replace(branchSearch[0], '/latest/apidoc/');
fetch(link, {method: 'head'}).then(function(response) {
var a = document.getElementById('latest-link');

View File

@@ -36,7 +36,7 @@
.navbar-inverse .navbar-nav>li>a:hover,
.navbar-inverse .navbar-nav>li>a:focus,
.navbar-inverse .navbar-nav>li>a.active
{
{
outline:0;
color: #fff;
background-color: #268591;
@@ -106,6 +106,15 @@ li {
.navigation .applicationName a {
color: #fff;
}
.navigation .include-modules {
color: #e1e1e1;
float: right;
font-size: 0.75em;
padding: 5px 15px;
}
.navigation .include-modules input {
vertical-align: text-bottom;
}
.navigation .search {
padding: 10px 15px;
}
@@ -125,6 +134,11 @@ li {
padding-bottom: 8px;
border-bottom: 1px solid #333;
}
.navigation li.perfect-match {
border: 5px solid orange;
}
.navigation li.item a {
color: #bbb;
}
@@ -158,6 +172,12 @@ li {
color: #1F6B75;
display: block;
}
.navigation li.item .modulelink {
position: relative;
font-size: 0.75em;
padding-left: 5px;
top: -5px;
}
.navigation li.item ul > li {
font-size: 0.75em;
padding-left: 8px;
@@ -165,6 +185,7 @@ li {
}
.navigation li.item .itemMembers {
display: none;
padding-left: 8px;
}
.main {
padding: 20px 20px;

View File

@@ -0,0 +1,81 @@
/* Carbon adds (see https://sell.buysellads.com) */
#ad {
margin-left: 1em;
float: right;
width: 330px;
min-height: 125px;
}
#carbonads {
font-family: "Quattrocento Sans", "Lucida Grande", "Lucida Sans Unicode", "Lucida Sans", Geneva, Verdana, sans-serif;
}
#carbonads {
display: flex;
}
#carbonads a {
color: inherit;
text-decoration: none;
}
#carbonads a:hover {
color: inherit;
}
#carbonads span {
position: relative;
display: block;
overflow: hidden;
}
#carbonads .carbon-wrap {
display: flex;
}
.carbon-img {
display: block;
margin: 0;
line-height: 1;
}
.carbon-img img {
display: block;
}
.carbon-text {
font-size: 13px;
padding: 10px;
line-height: 1.5;
text-align: left;
}
.carbon-poweredby {
display: block;
padding: 8px 10px;
text-align: center;
text-transform: uppercase;
letter-spacing: .5px;
font-weight: 600;
font-size: 9px;
line-height: 1;
}
#carbonads a.carbon-poweredby {
color: #aaa;
}
/* Clear the float after the advertisement. */
.container-overview {
clear: both;
}
pre.source {
clear: both;
}
section.content {
overflow-y: auto;
}

View File

@@ -9,7 +9,7 @@
<?js= self.partial('source.tmpl', doc) ?>
<?js } else { ?>
<section>
<section class="content">
<header>
<h2><?js if (doc.ancestors && doc.ancestors.length) { ?>
@@ -41,6 +41,9 @@
<pre class="prettyprint source"><code>import <?js= doc.name ?> from '<?js= importPath ?>';</code></pre>
<?js } ?>
<?js } ?>
<div id="ad">
<script async type="text/javascript" src="https://cdn.carbonads.com/carbon.js?serve=CE7DV53U&placement=openlayersorg" id="_carbonads_js"></script>
</div>
<?js if (doc.classdesc) { ?>
<div class="class-description"><?js= doc.classdesc ?></div>
<?js } ?>

View File

@@ -73,6 +73,7 @@ var version = obj.packageInfo.version;
<link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
<link type="text/css" rel="stylesheet" href="styles/bootstrap.min.css">
<link type="text/css" rel="stylesheet" href="styles/jaguar.css">
<link type="text/css" rel="stylesheet" href="styles/site.css">
</head>
<body>

View File

@@ -10,12 +10,16 @@ function toShortName(name) {
</div>
<ul class="list">
<?js
let navbuilder;
this.nav.forEach(navbuilder = function (item) {
this.nav.forEach(function (item) {
?>
<li class="item" data-name="<?js= item.longname ?>">
<li class="item" data-name="<?js= item.longname ?>" data-shortname="<?js= item.name.toLowerCase() ?>">
<span class="title">
<?js= self.linkto(item.longname, item.type === 'module' ? item.longname.replace('module:', '') : item.name) ?>
<?js if (item.type === 'module') { ?>
<span class="glyphicon glyphicon-plus toggle"></span>
<?js } else if (item.type === 'class') { ?>
<span class="glyphicon glyphicon-chevron-right toggle"></span>
<?js } ?>
<?js= self.linkto(item.longname, item.prettyname) ?>
<?js if (item.type === 'namespace' &&
(item.members.length + item.typedefs.length + item.methods.length +
item.events.length > 0)) { ?>
@@ -23,18 +27,6 @@ function toShortName(name) {
</span>
<ul class="members itemMembers">
<?js
if (item.classes.length) {
?>
<span class="subtitle">Classes</span>
<?js
item.classes.forEach(function (v) {
navbuilder(v);
});
}
?>
</ul>
<ul class="members itemMembers">
<?js
if (item.members.length) {
?>
<span class="subtitle">Members</span>

View File

@@ -16,9 +16,8 @@
}
});
/* determine if we need extra columns, "attributes" and "default" */
/* determine if we need extra "attributes" column */
params.hasAttributes = false;
params.hasDefault = false;
params.hasName = false;
var colspan = 2;
@@ -40,10 +39,6 @@
params.hasName = true;
}
if (typeof param.defaultvalue !== 'undefined') {
++colspan;
params.hasDefault = true;
}
});
?>
@@ -56,10 +51,6 @@
<th>Type</th>
<?js if (params.hasDefault) {?>
<th>Default</th>
<?js } ?>
<th class="last">Description</th>
</tr>
</thead>
@@ -80,16 +71,12 @@
<td class="type">
<?js if (param.type && param.type.names) {?>
<?js= self.partial('type.tmpl', param.type.names) ?>
<?js if (typeof param.defaultvalue !== 'undefined') { ?>
(defaults to <?js= self.htmlsafe(param.defaultvalue) ?>)
<?js } ?>
<?js } ?>
</td>
<?js if (params.hasDefault) {?>
<td class="default">
<?js if (typeof param.defaultvalue !== 'undefined') { ?>
<?js= self.htmlsafe(param.defaultvalue) ?>
<?js } ?>
</td>
<?js } ?>
<?js } ?>
<td<?js= (param.subparams ? ' colspan=' + colspan : ' ') ?> class="description last">

View File

@@ -240,3 +240,8 @@ Support for the `OES_element_index_uint` WebGL extension is mandatory for WebGL
### 64
Layer opacity must be a number.
### 66
`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`.

View File

@@ -25,7 +25,8 @@ const map = new Map({
target: 'map',
view: new View({
center: [0, 0],
zoom: 2
zoom: 2,
constrainRotation: 16
})
});
@@ -43,12 +44,39 @@ const dragBox = new DragBox({
map.addInteraction(dragBox);
dragBox.on('boxend', function() {
// features that intersect the box are added to the collection of
// selected features
// features that intersect the box geometry are added to the
// collection of selected features
// if the view is not obliquely rotated the box geometry and
// its extent are equalivalent so intersecting features can
// be added directly to the collection
const rotation = map.getView().getRotation();
const oblique = rotation % (Math.PI / 2) !== 0;
const candidateFeatures = oblique ? [] : selectedFeatures;
const extent = dragBox.getGeometry().getExtent();
vectorSource.forEachFeatureIntersectingExtent(extent, function(feature) {
selectedFeatures.push(feature);
candidateFeatures.push(feature);
});
// when the view is obliquely rotated the box extent will
// exceed its geometry so both the box and the candidate
// feature geometries are rotated around a common anchor
// to confirm that, with the box geometry aligned with its
// extent, the geometries intersect
if (oblique) {
const anchor = [0, 0];
const geometry = dragBox.getGeometry().clone();
geometry.rotate(-rotation, anchor);
const extent = geometry.getExtent();
candidateFeatures.forEach(function(feature) {
const geometry = feature.getGeometry().clone();
geometry.rotate(-rotation, anchor);
if (geometry.intersectsExtent(extent)) {
selectedFeatures.push(feature);
}
});
}
});
// clear selection when drawing a new box and when clicking on the map

View File

@@ -6,5 +6,8 @@ docs: >
This example demonstrates creating a custom interaction by subclassing `ol/interaction/Pointer`.
Note that the built in interaction `ol/interaction/Translate` might be a better option for moving features.
tags: "drag, feature, vector, editing, custom, interaction"
cloak:
- key: pk.eyJ1IjoiYWhvY2V2YXIiLCJhIjoiY2pzbmg0Nmk5MGF5NzQzbzRnbDNoeHJrbiJ9.7_-_gL8ur7ZtEiNwRfCy7Q
value: Your Mapbox access token from https://mapbox.com/ here
---
<div id="map" class="map"></div>

View File

@@ -123,13 +123,14 @@ const polygonFeature = new Feature(
new Polygon([[[-3e6, -1e6], [-3e6, 1e6],
[-1e6, 1e6], [-1e6, -1e6], [-3e6, -1e6]]]));
const key = 'pk.eyJ1IjoiYWhvY2V2YXIiLCJhIjoiY2pzbmg0Nmk5MGF5NzQzbzRnbDNoeHJrbiJ9.7_-_gL8ur7ZtEiNwRfCy7Q';
const map = new Map({
interactions: defaultInteractions().extend([new Drag()]),
layers: [
new TileLayer({
source: new TileJSON({
url: 'https://a.tiles.mapbox.com/v3/aj.1x1-degrees.json'
url: 'https://a.tiles.mapbox.com/v4/aj.1x1-degrees.json?access_token=' + key
})
}),
new VectorLayer({

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,16 @@
---
layout: example.html
title: Geographic Editing
shortdesc: Editing geometries with geographic coordinates.
docs: >
Calling the <code>useGeographic</code> function in the <code>'ol/proj'</code> module
makes it so the map view uses geographic coordinates (even if the view projection is
not geographic).
tags: "geographic"
experimental: true
---
<div id="map" class="map"></div>
<select id="mode">
<option value="modify">select a feature to modify</option>
<option value="draw">draw new features</option>
</select>

View File

@@ -0,0 +1,74 @@
import {Map, View} from '../src/ol/index.js';
import GeoJSON from '../src/ol/format/GeoJSON.js';
import {Modify, Select, Draw, Snap} from '../src/ol/interaction.js';
import {Tile as TileLayer, Vector as VectorLayer} from '../src/ol/layer.js';
import {OSM, Vector as VectorSource} from '../src/ol/source.js';
import {useGeographic} from '../src/ol/proj.js';
useGeographic();
const source = new VectorSource({
url: 'data/geojson/countries.geojson',
format: new GeoJSON()
});
const map = new Map({
target: 'map',
layers: [
new TileLayer({
source: new OSM()
}),
new VectorLayer({
source: source
})
],
view: new View({
center: [0, 0],
zoom: 2
})
});
const select = new Select();
const modify = new Modify({
features: select.getFeatures()
});
const draw = new Draw({
type: 'Polygon',
source: source
});
const snap = new Snap({
source: source
});
function removeInteractions() {
map.removeInteraction(modify);
map.removeInteraction(select);
map.removeInteraction(draw);
map.removeInteraction(select);
}
const mode = document.getElementById('mode');
function onChange() {
removeInteractions();
switch (mode.value) {
case 'draw': {
map.addInteraction(draw);
map.addInteraction(snap);
break;
}
case 'modify': {
map.addInteraction(select);
map.addInteraction(modify);
map.addInteraction(snap);
break;
}
default: {
// pass
}
}
}
mode.addEventListener('change', onChange);
onChange();

View File

@@ -3,16 +3,17 @@ layout: example.html
title: Filtering features with WebGL
shortdesc: Using WebGL to filter large quantities of features
docs: >
This example shows how to use `ol/renderer/webgl/PointsLayer` to dynamically filter a large amount
This example shows how to use `ol/layer/WebGLPoints` with a literal style to dynamically filter a large amount
of point geometries. The above map is based on a dataset from the NASA containing 45k recorded meteorite
landing sites. Each meteorite is marked by a circle on the map (the bigger the circle, the heavier
the object). A pulse effect has been added, which is slightly offset by the year of the impact.
Adjusting the sliders causes the objects outside of the date range to be filtered out of the map. This is done using
a custom fragment shader on the layer renderer, and by using the `v_opacity` attribute of the rendered objects
to store the year of impact.
Adjusting the sliders causes the objects outside of the date range to be filtered out of the map. This is done
by mutating the variables in the `style` object provided to the WebGL layer. Also note that the last snippet
of code is necessary to make sure the map refreshes itself every frame.
tags: "webgl, icon, sprite, filter, feature"
experimental: true
---
<div id="map" class="map"></div>
<form>

View File

@@ -3,110 +3,89 @@ import View from '../src/ol/View.js';
import TileLayer from '../src/ol/layer/Tile.js';
import Feature from '../src/ol/Feature.js';
import Point from '../src/ol/geom/Point.js';
import VectorLayer from '../src/ol/layer/Vector.js';
import {Vector} from '../src/ol/source.js';
import {fromLonLat} from '../src/ol/proj.js';
import WebGLPointsLayerRenderer from '../src/ol/renderer/webgl/PointsLayer.js';
import {clamp, lerp} from '../src/ol/math.js';
import Stamen from '../src/ol/source/Stamen.js';
import WebGLPointsLayer from '../src/ol/layer/WebGLPoints.js';
const vectorSource = new Vector({
attributions: 'NASA'
});
const oldColor = [180, 140, 140];
const newColor = [255, 80, 80];
const oldColor = 'rgba(242,56,22,0.61)';
const newColor = '#ffe52c';
const period = 12; // animation period in seconds
const animRatio =
['^',
['/',
['%',
['+',
['time'],
[
'interpolate',
['linear'],
['get', 'year'],
1850, 0,
2015, period
]
],
period
],
period
],
0.5
];
const startTime = Date.now() * 0.001;
const style = {
variables: {
minYear: 1850,
maxYear: 2015
},
filter: ['between', ['get', 'year'], ['var', 'minYear'], ['var', 'maxYear']],
symbol: {
symbolType: 'circle',
size: ['*',
['interpolate', ['linear'], ['get', 'mass'], 0, 8, 200000, 26],
['-', 1.75, ['*', animRatio, 0.75]]
],
color: ['interpolate',
['linear'],
animRatio,
0, newColor,
1, oldColor
],
opacity: ['-', 1.0, ['*', animRatio, 0.75]]
}
};
// hanle input values & events
// handle input values & events
const minYearInput = document.getElementById('min-year');
const maxYearInput = document.getElementById('max-year');
function updateMinYear() {
style.variables.minYear = parseInt(minYearInput.value);
updateStatusText();
}
function updateMaxYear() {
style.variables.maxYear = parseInt(maxYearInput.value);
updateStatusText();
}
function updateStatusText() {
const div = document.getElementById('status');
div.querySelector('span.min-year').textContent = minYearInput.value;
div.querySelector('span.max-year').textContent = maxYearInput.value;
}
minYearInput.addEventListener('input', updateStatusText);
minYearInput.addEventListener('change', updateStatusText);
maxYearInput.addEventListener('input', updateStatusText);
maxYearInput.addEventListener('change', updateStatusText);
minYearInput.addEventListener('input', updateMinYear);
minYearInput.addEventListener('change', updateMinYear);
maxYearInput.addEventListener('input', updateMaxYear);
maxYearInput.addEventListener('change', updateMaxYear);
updateStatusText();
class WebglPointsLayer extends VectorLayer {
createRenderer() {
return new WebGLPointsLayerRenderer(this, {
colorCallback: function(feature, color) {
// color is interpolated based on year
const ratio = clamp((feature.get('year') - 1800) / (2013 - 1800), 0, 1);
color[0] = lerp(oldColor[0], newColor[0], ratio) / 255;
color[1] = lerp(oldColor[1], newColor[1], ratio) / 255;
color[2] = lerp(oldColor[2], newColor[2], ratio) / 255;
color[3] = 1;
return color;
},
sizeCallback: function(feature) {
return 18 * clamp(feature.get('mass') / 200000, 0, 1) + 8;
},
fragmentShader: [
'precision mediump float;',
'uniform float u_time;',
'uniform float u_minYear;',
'uniform float u_maxYear;',
'varying vec2 v_texCoord;',
'varying float v_opacity;',
'varying vec4 v_color;',
'void main(void) {',
' float impactYear = v_opacity;',
// filter out pixels if the year is outside of the given range
' if (impactYear < u_minYear || v_opacity > u_maxYear) {',
' discard;',
' }',
' vec2 texCoord = v_texCoord * 2.0 - vec2(1.0, 1.0);',
' float sqRadius = texCoord.x * texCoord.x + texCoord.y * texCoord.y;',
' float value = 2.0 * (1.0 - sqRadius);',
' float alpha = smoothstep(0.0, 1.0, value);',
' vec3 color = v_color.rgb;',
' float period = 8.0;',
' color.g *= 2.0 * (1.0 - sqrt(mod(u_time + impactYear * 0.025, period) / period));',
' gl_FragColor = vec4(color, v_color.a);',
' gl_FragColor.a *= alpha;',
' gl_FragColor.rgb *= gl_FragColor.a;',
'}'
].join(' '),
opacityCallback: function(feature) {
// here the opacity channel of the vertices is used to store the year of impact
return feature.get('year');
},
uniforms: {
u_time: function() {
return Date.now() * 0.001 - startTime;
},
u_minYear: function() {
return parseInt(minYearInput.value);
},
u_maxYear: function() {
return parseInt(maxYearInput.value);
}
}
});
}
}
function loadData() {
const client = new XMLHttpRequest();
client.open('GET', 'data/csv/meteorite_landings.csv');
client.onload = function() {
// load data
const client = new XMLHttpRequest();
client.open('GET', 'data/csv/meteorite_landings.csv');
client.onload = function() {
const csv = client.responseText;
const features = [];
@@ -131,11 +110,8 @@ function loadData() {
}
vectorSource.addFeatures(features);
};
client.send();
}
loadData();
};
client.send();
const map = new Map({
layers: [
@@ -144,8 +120,10 @@ const map = new Map({
layer: 'toner'
})
}),
new WebglPointsLayer({
source: vectorSource
new WebGLPointsLayer({
style: style,
source: vectorSource,
disableHitDetection: true
})
],
target: document.getElementById('map'),

4
examples/geographic.css Normal file
View File

@@ -0,0 +1,4 @@
td {
padding: 0 0.5em;
text-align: right;
}

18
examples/geographic.html Normal file
View File

@@ -0,0 +1,18 @@
---
layout: example.html
title: Geographic Coordinates
shortdesc: Using geographic coordinates for the map view.
docs: >
Calling the <code>useGeographic</code> function in the <code>'ol/proj'</code> module
makes it so the map view uses geographic coordinates (even if the view projection is
not geographic).
tags: "geographic"
experimental: true
resources:
- https://code.jquery.com/jquery-2.2.3.min.js
- https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css
- https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js
---
<div id="map" class="map"><div id="popup"></div></div>
<div id="info"></div>

89
examples/geographic.js Normal file
View File

@@ -0,0 +1,89 @@
import {useGeographic} from '../src/ol/proj.js';
import {Map, View, Feature, Overlay} from '../src/ol/index.js';
import {Point} from '../src/ol/geom.js';
import {Vector as VectorLayer, Tile as TileLayer} from '../src/ol/layer.js';
import {OSM, Vector as VectorSource} from '../src/ol/source.js';
import {Style, Circle, Fill} from '../src/ol/style.js';
useGeographic();
const place = [-110, 45];
const point = new Point(place);
const map = new Map({
target: 'map',
view: new View({
center: place,
zoom: 8
}),
layers: [
new TileLayer({
source: new OSM()
}),
new VectorLayer({
source: new VectorSource({
features: [
new Feature(point)
]
}),
style: new Style({
image: new Circle({
radius: 9,
fill: new Fill({color: 'red'})
})
})
})
]
});
const element = document.getElementById('popup');
const popup = new Overlay({
element: element,
positioning: 'bottom-center',
stopEvent: false,
offset: [0, -10]
});
map.addOverlay(popup);
function formatCoordinate(coordinate) {
return `
<table>
<tbody>
<tr><th>lon</th><td>${coordinate[0].toFixed(2)}</td></tr>
<tr><th>lat</th><td>${coordinate[1].toFixed(2)}</td></tr>
</tbody>
</table>`;
}
const info = document.getElementById('info');
map.on('moveend', function() {
const view = map.getView();
const center = view.getCenter();
info.innerHTML = formatCoordinate(center);
});
map.on('click', function(event) {
const feature = map.getFeaturesAtPixel(event.pixel)[0];
if (feature) {
const coordinate = feature.getGeometry().getCoordinates();
popup.setPosition(coordinate);
$(element).popover({
placement: 'top',
html: true,
content: formatCoordinate(coordinate)
});
$(element).popover('show');
} else {
$(element).popover('destroy');
}
});
map.on('pointermove', function(event) {
if (map.hasFeatureAtPixel(event.pixel)) {
map.getViewport().style.cursor = 'pointer';
} else {
map.getViewport().style.cursor = 'inherit';
}
});

View File

@@ -29,7 +29,7 @@ const map = new Map({
map.on('singleclick', function(evt) {
document.getElementById('info').innerHTML = '';
const viewResolution = /** @type {number} */ (view.getResolution());
const url = wmsSource.getGetFeatureInfoUrl(
const url = wmsSource.getFeatureInfoUrl(
evt.coordinate, viewResolution, 'EPSG:3857',
{'INFO_FORMAT': 'text/html'});
if (url) {

View File

@@ -29,7 +29,7 @@ const map = new Map({
map.on('singleclick', function(evt) {
document.getElementById('info').innerHTML = '';
const viewResolution = /** @type {number} */ (view.getResolution());
const url = wmsSource.getGetFeatureInfoUrl(
const url = wmsSource.getFeatureInfoUrl(
evt.coordinate, viewResolution, 'EPSG:3857',
{'INFO_FORMAT': 'text/html'});
if (url) {

View File

@@ -16,16 +16,15 @@ const vector = new HeatmapLayer({
})
}),
blur: parseInt(blur.value, 10),
radius: parseInt(radius.value, 10)
});
vector.getSource().on('addfeature', function(event) {
radius: parseInt(radius.value, 10),
weight: function(feature) {
// 2012_Earthquakes_Mag5.kml stores the magnitude of each earthquake in a
// standards-violating <magnitude> tag in each Placemark. We extract it from
// the Placemark's name instead.
const name = event.feature.get('name');
const name = feature.get('name');
const magnitude = parseFloat(name.substr(2));
event.feature.set('weight', magnitude - 5);
return magnitude - 5;
}
});
const raster = new TileLayer({
@@ -34,7 +33,7 @@ const raster = new TileLayer({
})
});
const map = new Map({
new Map({
layers: [raster, vector],
target: 'map',
view: new View({

View File

@@ -0,0 +1,15 @@
---
layout: example.html
title: Vector Layer Hit Detection
shortdesc: Example of hit detection on a countries vector layer with country information.
docs: >
The countries are loaded from a GeoJSON file. Information about countries is
on hover and click is retrieved using the layer's `getFeatures()` method. For
vector layers, this function resolves with an array of only the topmost
feature. It uses a very efficient hit detection algorithm, at the cost of
accuracy. For pixel exact hit detection, when performance is not a concern,
use the map's `getFeaturesAtPixel()` or `forEachFeatureAtPixel()` methods.
tags: "vector, geojson, click, hover, hit detection"
---
<div id="map" class="map"></div>
<div id="info">&nbsp;</div>

View File

@@ -0,0 +1,113 @@
import Map from '../src/ol/Map.js';
import View from '../src/ol/View.js';
import GeoJSON from '../src/ol/format/GeoJSON.js';
import VectorLayer from '../src/ol/layer/Vector.js';
import VectorSource from '../src/ol/source/Vector.js';
import {Fill, Stroke, Style, Text} from '../src/ol/style.js';
const style = new Style({
fill: new Fill({
color: 'rgba(255, 255, 255, 0.6)'
}),
stroke: new Stroke({
color: '#319FD3',
width: 1
}),
text: new Text({
font: '12px Calibri,sans-serif',
fill: new Fill({
color: '#000'
}),
stroke: new Stroke({
color: '#fff',
width: 3
})
})
});
const vectorLayer = new VectorLayer({
source: new VectorSource({
url: 'data/geojson/countries.geojson',
format: new GeoJSON()
}),
style: function(feature) {
style.getText().setText(feature.get('name'));
return style;
}
});
const map = new Map({
layers: [vectorLayer],
target: 'map',
view: new View({
center: [0, 0],
zoom: 1
})
});
const highlightStyle = new Style({
stroke: new Stroke({
color: '#f00',
width: 1
}),
fill: new Fill({
color: 'rgba(255,0,0,0.1)'
}),
text: new Text({
font: '12px Calibri,sans-serif',
fill: new Fill({
color: '#000'
}),
stroke: new Stroke({
color: '#f00',
width: 3
})
})
});
const featureOverlay = new VectorLayer({
source: new VectorSource(),
map: map,
style: function(feature) {
highlightStyle.getText().setText(feature.get('name'));
return highlightStyle;
}
});
let highlight;
const displayFeatureInfo = function(pixel) {
vectorLayer.getFeatures(pixel).then(function(features) {
const feature = features.length ? features[0] : undefined;
const info = document.getElementById('info');
if (features.length) {
info.innerHTML = feature.getId() + ': ' + feature.get('name');
} else {
info.innerHTML = '&nbsp;';
}
if (feature !== highlight) {
if (highlight) {
featureOverlay.getSource().removeFeature(highlight);
}
if (feature) {
featureOverlay.getSource().addFeature(feature);
}
highlight = feature;
}
});
};
map.on('pointermove', function(evt) {
if (evt.dragging) {
return;
}
const pixel = map.getEventPixel(evt.originalEvent);
displayFeatureInfo(pixel);
});
map.on('click', function(evt) {
displayFeatureInfo(evt.pixel);
});

View File

@@ -3,19 +3,24 @@ layout: example.html
title: Icon Sprites with WebGL
shortdesc: Rendering many icons with WebGL
docs: >
This example shows how to use `ol/renderer/webgl/PointsLayer` to render
This example shows how to use `ol/layer/WebGLPoints` to render
a very large amount of sprites. The above map is based on a dataset from the National UFO Reporting Center: each
icon marks a UFO sighting according to its reported shape (disk, light, fireball...). The older the sighting, the redder
the icon.
A very simple sprite atlas is used in the form of a PNG file containing all icons on a grid. Then, the `texCoordCallback`
option of the `ol/renderer/webgl/PointsLayer` constructor is used to specify which sprite to use according to the sighting shape.
A very simple sprite atlas is used in the form of a PNG file containing all icons on a grid. Then, the `style` object
given to the `ol/layer/WebGLPoints` constructor is used to specify which sprite to use according to the sighting shape.
The dataset contains around 80k points and can be found here: https://www.kaggle.com/NUFORC/ufo-sightings
tags: "webgl, icon, sprite, point, ufo"
experimental: true
cloak:
- key: pk.eyJ1IjoidHNjaGF1YiIsImEiOiJjaW5zYW5lNHkxMTNmdWttM3JyOHZtMmNtIn0.CDIBD8H-G2Gf-cPkIuWtRg
value: Your Mapbox access token from https://mapbox.com/ here
---
<div id="map" class="map"></div>
<div>Current sighting: <span id="info"></span></div>
<div>
Filter by UFO shape:
<select id="shape-filter"></select>
</div>

View File

@@ -4,73 +4,103 @@ import TileLayer from '../src/ol/layer/Tile.js';
import TileJSON from '../src/ol/source/TileJSON.js';
import Feature from '../src/ol/Feature.js';
import Point from '../src/ol/geom/Point.js';
import VectorLayer from '../src/ol/layer/Vector.js';
import {Vector} from '../src/ol/source.js';
import {fromLonLat} from '../src/ol/proj.js';
import WebGLPointsLayerRenderer from '../src/ol/renderer/webgl/PointsLayer.js';
import {lerp} from '../src/ol/math.js';
import WebGLPointsLayer from '../src/ol/layer/WebGLPoints.js';
const key = 'pk.eyJ1IjoidHNjaGF1YiIsImEiOiJjaW5zYW5lNHkxMTNmdWttM3JyOHZtMmNtIn0.CDIBD8H-G2Gf-cPkIuWtRg';
const map = new Map({
layers: [
new TileLayer({
source: new TileJSON({
url: 'https://api.tiles.mapbox.com/v4/mapbox.world-dark.json?secure&access_token=' + key,
crossOrigin: 'anonymous'
})
})
],
target: document.getElementById('map'),
view: new View({
center: [0, 4000000],
zoom: 2
})
});
const vectorSource = new Vector({
features: [],
attributions: 'National UFO Reporting Center'
});
const texture = document.createElement('img');
texture.src = 'data/ufo_shapes.png';
// This describes the content of the associated sprite sheet
// coords are u0, v0, u1, v1 for a given shape
const shapeTextureCoords = {
'light': [0, 0.5, 0.25, 0],
'sphere': [0.25, 0.5, 0.5, 0],
'circle': [0.25, 0.5, 0.5, 0],
'disc': [0.5, 0.5, 0.75, 0],
'oval': [0.5, 0.5, 0.75, 0],
'triangle': [0.75, 0.5, 1, 0],
'fireball': [0, 1, 0.25, 0.5],
'default': [0.75, 1, 1, 0.5]
};
const oldColor = [255, 160, 110];
const newColor = [180, 255, 200];
const size = 16;
class WebglPointsLayer extends VectorLayer {
createRenderer() {
return new WebGLPointsLayerRenderer(this, {
texture: texture,
colorCallback: function(feature, color) {
// color is interpolated based on year (min is 1910, max is 2013)
// please note: most values are between 2000-2013
const ratio = (feature.get('year') - 1950) / (2013 - 1950);
color[0] = lerp(oldColor[0], newColor[0], ratio * ratio) / 255;
color[1] = lerp(oldColor[1], newColor[1], ratio * ratio) / 255;
color[2] = lerp(oldColor[2], newColor[2], ratio * ratio) / 255;
color[3] = 1;
return color;
const style = {
variables: {
filterShape: 'all'
},
texCoordCallback: function(feature, component) {
let coords = shapeTextureCoords[feature.get('shape')];
if (!coords) {
coords = shapeTextureCoords['default'];
}
return coords[component];
},
sizeCallback: function() {
return 16;
filter: [
'case',
['!=', ['var', 'filterShape'], 'all'],
['==', ['get', 'shape'], ['var', 'filterShape']],
true
],
symbol: {
symbolType: 'image',
src: 'data/ufo_shapes.png',
size: size,
color: [
'interpolate',
['linear'],
['get', 'year'],
1950, oldColor,
2013, newColor
],
rotateWithView: false,
offset: [
0,
9
],
textureCoord: [
'match',
['get', 'shape'],
'light', [0, 0, 0.25, 0.5],
'sphere', [0.25, 0, 0.5, 0.5],
'circle', [0.25, 0, 0.5, 0.5],
'disc', [0.5, 0, 0.75, 0.5],
'oval', [0.5, 0, 0.75, 0.5],
'triangle', [0.75, 0, 1, 0.5],
'fireball', [0, 0.5, 0.25, 1],
[0.75, 0.5, 1, 1]
]
}
};
// key is shape name, value is sightings count
const shapeTypes = {
all: 0
};
const shapeSelect = document.getElementById('shape-filter');
shapeSelect.addEventListener('input', function() {
style.variables.filterShape = shapeSelect.options[shapeSelect.selectedIndex].value;
map.render();
});
function fillShapeSelect() {
Object.keys(shapeTypes)
.sort(function(a, b) {
return shapeTypes[b] - shapeTypes[a];
})
.forEach(function(shape) {
const option = document.createElement('option');
option.text = `${shape} (${shapeTypes[shape]} sightings)`;
option.value = shape;
shapeSelect.appendChild(option);
});
}
}
function loadData() {
const client = new XMLHttpRequest();
client.open('GET', 'data/csv/ufo_sighting_data.csv');
client.onload = function() {
const client = new XMLHttpRequest();
client.open('GET', 'data/csv/ufo_sighting_data.csv');
client.onload = function() {
const csv = client.responseText;
const features = [];
@@ -88,39 +118,29 @@ function loadData() {
continue;
}
const shape = line[2];
shapeTypes[shape] = (shapeTypes[shape] ? shapeTypes[shape] : 0) + 1;
shapeTypes['all']++;
features.push(new Feature({
datetime: line[0],
year: parseInt(/[0-9]{4}/.exec(line[0])[0]), // extract the year as int
shape: line[2],
shape: shape,
duration: line[3],
geometry: new Point(coords)
}));
}
vectorSource.addFeatures(features);
};
client.send();
}
fillShapeSelect();
};
client.send();
loadData();
const map = new Map({
layers: [
new TileLayer({
source: new TileJSON({
url: 'https://api.tiles.mapbox.com/v4/mapbox.world-dark.json?access_token=' + key,
crossOrigin: 'anonymous'
map.addLayer(
new WebGLPointsLayer({
source: vectorSource,
style: style
})
}),
new WebglPointsLayer({
source: vectorSource
})
],
target: document.getElementById('map'),
view: new View({
center: [0, 4000000],
zoom: 2
})
});
);
const info = document.getElementById('info');
map.on('pointermove', function(evt) {

View File

@@ -56,9 +56,8 @@ const featureOverlay = new VectorLayer({
let highlight;
const displayFeatureInfo = function(pixel) {
const feature = map.forEachFeatureAtPixel(pixel, function(feature) {
return feature;
});
map.getLayers().item(0).getFeatures(pixel).then(function(features) {
const feature = features.length > 0 ? features[0] : undefined;
const info = document.getElementById('info');
if (feature) {
@@ -76,15 +75,13 @@ const displayFeatureInfo = function(pixel) {
}
highlight = feature;
}
});
};
map.on('pointermove', function(evt) {
if (evt.dragging) {
return;
if (!evt.dragging) {
displayFeatureInfo(evt.pixel);
}
const pixel = map.getEventPixel(evt.originalEvent);
displayFeatureInfo(pixel);
});
map.on('click', function(evt) {

View File

@@ -0,0 +1,15 @@
---
layout: example.html
title: Immediate Rendering (Geographic)
shortdesc: Using the immediate rendering API with geometries in geographic coordinates.
docs: >
This example uses the "immediate" rendering API with geometries in geographic coordinates.
The immediate rendering API lets you draw styled geometries without adding them to a layer first.
Use the `getVectorContext` function to create a rendering context from a render event. Using the
`context.drawGeometry()` and `context.setStyle()` methods on this rendering context, you can draw
any geometry on each render frame. The `useGeographic` function is used in this example so that
geometries can be in geographic coordinates.
tags: "immediate, geographic"
experimental: true
---
<div id="map" class="map"></div>

View File

@@ -0,0 +1,64 @@
import {Map, View} from '../src/ol/index.js';
import {Point} from '../src/ol/geom.js';
import TileLayer from '../src/ol/layer/Tile.js';
import Stamen from '../src/ol/source/Stamen.js';
import {Circle, Fill, Style} from '../src/ol/style.js';
import {getVectorContext} from '../src/ol/render.js';
import {useGeographic} from '../src/ol/proj.js';
import {upAndDown} from '../src/ol/easing.js';
useGeographic();
const layer = new TileLayer({
source: new Stamen({
layer: 'toner'
})
});
const map = new Map({
layers: [layer],
target: 'map',
view: new View({
center: [0, 0],
zoom: 2
})
});
const image = new Circle({
radius: 8,
fill: new Fill({color: 'rgb(255, 153, 0)'})
});
const style = new Style({
image: image
});
const n = 1000;
const geometries = new Array(n);
for (let i = 0; i < n; ++i) {
const lon = 360 * Math.random() - 180;
const lat = 180 * Math.random() - 90;
geometries[i] = new Point([lon, lat]);
}
layer.on('postrender', function(event) {
const vectorContext = getVectorContext(event);
for (let i = 0; i < n; ++i) {
const importance = upAndDown(Math.pow((n - i) / n, 0.15));
if (importance < 0.1) {
continue;
}
image.setOpacity(importance);
image.setScale(importance);
vectorContext.setStyle(style);
vectorContext.drawGeometry(geometries[i]);
}
const lon = 360 * Math.random() - 180;
const lat = 180 * Math.random() - 90;
geometries.push(new Point([lon, lat]));
geometries.shift();
map.render();
});

View File

@@ -7,6 +7,9 @@ docs: >
modify the extent of the overlay layer. Use the controls above
to limit rendering based on an extent (approximate country bounds).
tags: "extent, tilejson"
cloak:
- key: pk.eyJ1IjoiYWhvY2V2YXIiLCJhIjoiY2pzbmg0Nmk5MGF5NzQzbzRnbDNoeHJrbiJ9.7_-_gL8ur7ZtEiNwRfCy7Q
value: Your Mapbox access token from https://mapbox.com/ here
---
<div id="map" class="map"></div>
<button type="button" class="btn btn-default" id="India">India</button>

View File

@@ -15,9 +15,11 @@ const extents = {
Sweden: transform([11.02737, 55.36174, 23.90338, 69.10625])
};
const key = 'pk.eyJ1IjoiYWhvY2V2YXIiLCJhIjoiY2pzbmg0Nmk5MGF5NzQzbzRnbDNoeHJrbiJ9.7_-_gL8ur7ZtEiNwRfCy7Q';
const base = new TileLayer({
source: new TileJSON({
url: 'https://api.tiles.mapbox.com/v3/mapbox.world-light.json?secure',
url: 'https://api.tiles.mapbox.com/v4/mapbox.world-light.json?secure&access_token=' + key,
crossOrigin: 'anonymous'
})
});
@@ -25,7 +27,7 @@ const base = new TileLayer({
const overlay = new TileLayer({
extent: extents.India,
source: new TileJSON({
url: 'https://api.tiles.mapbox.com/v3/mapbox.world-black.json?secure',
url: 'https://api.tiles.mapbox.com/v4/mapbox.world-black.json?secure&access_token=' + key,
crossOrigin: 'anonymous'
})
});

View File

@@ -7,6 +7,9 @@ docs: >
tags: "tilejson, input, bind, group, layergroup"
resources:
- https://code.jquery.com/jquery-2.2.3.min.js
cloak:
- key: pk.eyJ1IjoiYWhvY2V2YXIiLCJhIjoiY2pzbmg0Nmk5MGF5NzQzbzRnbDNoeHJrbiJ9.7_-_gL8ur7ZtEiNwRfCy7Q
value: Your Mapbox access token from https://mapbox.com/ here
---
<div id="map" class="map"></div>
<div id="layertree">

View File

@@ -5,6 +5,8 @@ import {fromLonLat} from '../src/ol/proj.js';
import OSM from '../src/ol/source/OSM.js';
import TileJSON from '../src/ol/source/TileJSON.js';
const key = 'pk.eyJ1IjoiYWhvY2V2YXIiLCJhIjoiY2pzbmg0Nmk5MGF5NzQzbzRnbDNoeHJrbiJ9.7_-_gL8ur7ZtEiNwRfCy7Q';
const map = new Map({
layers: [
new TileLayer({
@@ -13,13 +15,13 @@ const map = new Map({
layers: [
new TileLayer({
source: new TileJSON({
url: 'https://api.tiles.mapbox.com/v3/mapbox.20110804-hoa-foodinsecurity-3month.json?secure',
url: 'https://api.tiles.mapbox.com/v4/mapbox.20110804-hoa-foodinsecurity-3month.json?secure&access_token=' + key,
crossOrigin: 'anonymous'
})
}),
new TileLayer({
source: new TileJSON({
url: 'https://api.tiles.mapbox.com/v3/mapbox.world-borders-light.json?secure',
url: 'https://api.tiles.mapbox.com/v4/mapbox.world-borders-light.json?secure&access_token=' + key,
crossOrigin: 'anonymous'
})
})

View File

@@ -5,6 +5,7 @@ shortdesc: Example of a Mapbox-gl-js layer integration.
docs: >
Show how to add a mapbox-gl-js layer in an openlayers map. **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: "simple, mapbox, vector, tiles, maptiler"
experimental: true
resources:
- https://unpkg.com/mapbox-gl@0.54.0/dist/mapbox-gl.js
- https://unpkg.com/mapbox-gl@0.54.0/dist/mapbox-gl.css

View File

@@ -1,7 +1,10 @@
---
layout: example-verbatim.html
title: Vector tiles created from a Mapbox Style object
shortdesc: Example of using ol-mapbox-style with tiles from tilehosting.com.
shortdesc: Example of using ol-mapbox-style with tiles from maptiler.com.
docs: >
Example of using `ol-mapbox-style` with tiles 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, mapbox style, ol-mapbox-style, maptiler"
cloak:
- key: get_your_own_D6rA4zTHduk6KOKTXzGB

View File

@@ -7,5 +7,8 @@ docs: >
<p>If you continue to zoom in, you'll see the OSM layer also disappear.</p>
<p>The rendering of the layers are here controlled using minResolution and maxResolution options.</p>
tags: "minResolution, maxResolution, resolution"
cloak:
- key: pk.eyJ1IjoiYWhvY2V2YXIiLCJhIjoiY2pzbmg0Nmk5MGF5NzQzbzRnbDNoeHJrbiJ9.7_-_gL8ur7ZtEiNwRfCy7Q
value: Your Mapbox access token from https://mapbox.com/ here
---
<div id="map" class="map"></div>

View File

@@ -4,6 +4,7 @@ import TileLayer from '../src/ol/layer/Tile.js';
import OSM from '../src/ol/source/OSM.js';
import TileJSON from '../src/ol/source/TileJSON.js';
const key = 'pk.eyJ1IjoiYWhvY2V2YXIiLCJhIjoiY2pzbmg0Nmk5MGF5NzQzbzRnbDNoeHJrbiJ9.7_-_gL8ur7ZtEiNwRfCy7Q';
/**
* Create the map.
@@ -17,7 +18,7 @@ const map = new Map({
}),
new TileLayer({
source: new TileJSON({
url: 'https://api.tiles.mapbox.com/v3/mapbox.natural-earth-hypso-bathy.json?secure',
url: 'https://api.tiles.mapbox.com/v4/mapbox.natural-earth-hypso-bathy.json?secure&access_token=' + key,
crossOrigin: 'anonymous'
}),
minResolution: 2000,

View File

@@ -1,32 +1,36 @@
.ol-custom-overviewmap,
.ol-custom-overviewmap.ol-uncollapsible {
.mapcontainer {
position: relative;
}
div.ol-custom-overviewmap,
div.ol-custom-overviewmap.ol-uncollapsible {
bottom: auto;
left: auto;
right: 0;
top: 0;
}
.ol-custom-overviewmap:not(.ol-collapsed) {
div.ol-custom-overviewmap:not(.ol-collapsed) {
border: 1px solid black;
}
.ol-custom-overviewmap .ol-overviewmap-map {
div.ol-custom-overviewmap div.ol-overviewmap-map {
border: none;
width: 300px;
}
.ol-custom-overviewmap .ol-overviewmap-box {
div.ol-custom-overviewmap div.ol-overviewmap-box {
border: 2px solid red;
}
.ol-custom-overviewmap:not(.ol-collapsed) button{
div.ol-custom-overviewmap:not(.ol-collapsed) button{
bottom: auto;
left: auto;
right: 1px;
top: 1px;
}
.ol-rotate {
div.ol-rotate {
top: 170px;
right: 0;
}

View File

@@ -10,4 +10,7 @@ cloak:
value: Your API key from http://www.thunderforest.com/docs/apikeys/ here
---
<div id="map" class="map"></div>
<div class="mapcontainer">
<div id="map" class="map"></div>
</div>
<div><input type="checkbox" id="rotateWithView">Rotate with view</div>

View File

@@ -6,6 +6,8 @@ import TileLayer from '../src/ol/layer/Tile.js';
import OSM from '../src/ol/source/OSM.js';
const rotateWithView = document.getElementById('rotateWithView');
const overviewMapControl = new OverviewMap({
// see in overviewmap-custom.html to see the custom CSS used
className: 'ol-overviewmap ol-custom-overviewmap',
@@ -22,6 +24,10 @@ const overviewMapControl = new OverviewMap({
collapsed: false
});
rotateWithView.addEventListener('change', function() {
overviewMapControl.setRotateWithView(this.checked);
});
const map = new Map({
controls: defaultControls().extend([
overviewMapControl

View File

@@ -8,3 +8,4 @@ The `.html` files in this folder are built by applying the templates in the `tem
* docs: Documentation of the example. Can be markdown.
* tags: Tags for the example index
* resources: Additional js or css resources required by the example. This is a YAML list of URLs.
* experimental: if true, a warning will appear on the example page mentioning the fact that it uses features not part of the API.

View File

@@ -3,7 +3,9 @@ layout: example.html
title: Regular Shapes
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.
tags: "vector, symbol, regularshape, style, square, cross, star, triangle, x"
---
<div id="map" class="map"></div>

View File

@@ -20,15 +20,55 @@
e.clearSelection();
});
function fetchResource(resource) {
return new Promise((resolve, reject) => {
const isImage = /\.(png|jpe?g|gif|tiff)$/.test(resource);
const xhr = new XMLHttpRequest();
xhr.open('GET', resource);
if (isImage) {
xhr.responseType = 'blob';
} else {
xhr.responseType = 'text';
}
xhr.addEventListener('load', () => {
if (isImage) {
const a = new FileReader();
a.addEventListener('load', e => {
resolve ({
isBinary: true,
content: e.target.result
})
});
a.readAsDataURL(xhr.response);
} else {
resolve ({
content: xhr.response
})
}
});
xhr.addEventListener('error', reject);
xhr.send();
})
}
var codepenButton = document.getElementsByClassName('codepen-button')[0];
if (codepenButton) {
codepenButton.onclick = function(event) {
event.preventDefault();
var form = document.getElementById('codepen-form');
const html = document.getElementById('example-html-source').innerText;
const js = document.getElementById('example-js-source').innerText;
const pkgJson = document.getElementById('example-pkg-source').innerText;
form.parameters.value = compress({
const form = document.getElementById('codepen-form');
const localResources = (js.match(/'data\/[^']*/g) || [])
.concat(js.match(/'resources\/[^']*/g) || [])
.map(f => f.slice(1));
const promises = localResources.map(resource => fetchResource(resource));
Promise.all(promises)
.then(results => {
const data = {
files: {
'index.html': {
content: html
@@ -43,8 +83,15 @@
content: '{"template": "parcel"}'
}
}
});
};
for (let i = 0; i < localResources.length; i++) {
data.files[localResources[i]] = results[i];
}
form.parameters.value = compress(data);
form.submit();
});
};
}
})();

View File

@@ -74,13 +74,9 @@ ol.inline>li {
.ol-attribution.ol-logo-only,
.ol-attribution.ol-uncollapsible {
max-width: calc(100% - 3em);
height: 1.5em;
}
.ol-attribution ul {
font-size: 1rem;
}
.ol-control button, .ol-attribution, .ol-scale-line-inner {
font-family: 'Lucida Grande',Verdana,Geneva,Lucida,Arial,Helvetica,sans-serif;
font-size: 14px;
}
.iframe-info iframe {
width: 100%;

View File

@@ -4,6 +4,9 @@ title: Reusable Source
shortdesc: Updating a tile source by changing the URL.
docs: >
You can call <code>source.setUrl()</code> to update the URL for a tile source. Note that when you change the URL for a tile source, existing tiles will not be replaced until new tiles are loaded. If you are interested instead in clearing currently rendered tiles, you can call the <code>source.refresh()</code> method. Alternatively, you can use two separate sources if you want to remove rendered tiles and start over loading new tiles.
cloak:
- key: pk.eyJ1IjoiYWhvY2V2YXIiLCJhIjoiY2pzbmg0Nmk5MGF5NzQzbzRnbDNoeHJrbiJ9.7_-_gL8ur7ZtEiNwRfCy7Q
value: Your Mapbox access token from https://mapbox.com/ here
---
<div id="map" class="map"></div>
<button class="switcher" value="0">January</button>

View File

@@ -3,11 +3,13 @@ import View from '../src/ol/View.js';
import TileLayer from '../src/ol/layer/Tile.js';
import XYZ from '../src/ol/source/XYZ.js';
const key = 'pk.eyJ1IjoiYWhvY2V2YXIiLCJhIjoiY2pzbmg0Nmk5MGF5NzQzbzRnbDNoeHJrbiJ9.7_-_gL8ur7ZtEiNwRfCy7Q';
const baseUrl = 'https://{a-c}.tiles.mapbox.com/v4';
const urls = [
'https://{a-c}.tiles.mapbox.com/v3/mapbox.blue-marble-topo-jan/{z}/{x}/{y}.png',
'https://{a-c}.tiles.mapbox.com/v3/mapbox.blue-marble-topo-bathy-jan/{z}/{x}/{y}.png',
'https://{a-c}.tiles.mapbox.com/v3/mapbox.blue-marble-topo-jul/{z}/{x}/{y}.png',
'https://{a-c}.tiles.mapbox.com/v3/mapbox.blue-marble-topo-bathy-jul/{z}/{x}/{y}.png'
baseUrl + '/mapbox.blue-marble-topo-jan/{z}/{x}/{y}.png?access_token=' + key,
baseUrl + '/mapbox.blue-marble-topo-bathy-jan/{z}/{x}/{y}.png?access_token=' + key,
baseUrl + '/mapbox.blue-marble-topo-jul/{z}/{x}/{y}.png?access_token=' + key,
baseUrl + '/mapbox.blue-marble-topo-bathy-jul/{z}/{x}/{y}.png?access_token=' + key
];
const source = new XYZ();

View File

@@ -37,7 +37,7 @@ const map = new Map({
layers: [
new TileLayer({
source: new TileJSON({
url: 'https://api.tiles.mapbox.com/v3/mapbox.world-light.json?secure',
url: 'https://api.tiles.mapbox.com/v4/mapbox.world-light.json?secure&access_token=' + key,
crossOrigin: 'anonymous'
})
}),

View File

@@ -0,0 +1,10 @@
---
layout: example.html
title: Select Features by Hover
shortdesc: Example of selecting features by hovering.
docs: >
In this example, a listener is registered on the map's <code>pointermove</code> to highlight the currently hovered feature.
tags: "select, vector"
---
<div id="map" class="map"></div>
<span id="status"></span>

View File

@@ -0,0 +1,61 @@
import Map from '../src/ol/Map.js';
import View from '../src/ol/View.js';
import GeoJSON from '../src/ol/format/GeoJSON.js';
import {Tile as TileLayer, Vector as VectorLayer} from '../src/ol/layer.js';
import OSM from '../src/ol/source/OSM.js';
import VectorSource from '../src/ol/source/Vector.js';
import Style from '../src/ol/style/Style.js';
import Fill from '../src/ol/style/Fill.js';
import Stroke from '../src/ol/style/Stroke.js';
const raster = new TileLayer({
source: new OSM()
});
const highlightStyle = new Style({
fill: new Fill({
color: 'rgba(255,255,255,0.7)'
}),
stroke: new Stroke({
color: '#3399CC',
width: 3
})
});
const vector = new VectorLayer({
source: new VectorSource({
url: 'data/geojson/countries.geojson',
format: new GeoJSON()
})
});
const map = new Map({
layers: [raster, vector],
target: 'map',
view: new View({
center: [0, 0],
zoom: 2
})
});
let selected = null;
const status = document.getElementById('status');
map.on('pointermove', function(e) {
if (selected !== null) {
selected.setStyle(undefined);
selected = null;
}
map.forEachFeatureAtPixel(e.pixel, function(f) {
selected = f;
f.setStyle(highlightStyle);
return true;
});
if (selected) {
status.innerHTML = '&nbsp;Hovering: ' + selected.get('name');
} else {
status.innerHTML = '&nbsp;';
}
});

View File

@@ -0,0 +1,10 @@
---
layout: example.html
title: Select multiple Features
shortdesc: Example of selecting multiple features.
docs: >
In this example, a listener is registered on the map's <code>singleclick</code> event to add and remove features from an array.
tags: "select, vector"
---
<div id="map" class="map"></div>
<span id="status">&nbsp;0 selected features</span>

View File

@@ -0,0 +1,59 @@
import Map from '../src/ol/Map.js';
import View from '../src/ol/View.js';
import GeoJSON from '../src/ol/format/GeoJSON.js';
import {Tile as TileLayer, Vector as VectorLayer} from '../src/ol/layer.js';
import OSM from '../src/ol/source/OSM.js';
import VectorSource from '../src/ol/source/Vector.js';
import Style from '../src/ol/style/Style.js';
import Fill from '../src/ol/style/Fill.js';
import Stroke from '../src/ol/style/Stroke.js';
const raster = new TileLayer({
source: new OSM()
});
const highlightStyle = new Style({
fill: new Fill({
color: 'rgba(255,255,255,0.7)'
}),
stroke: new Stroke({
color: '#3399CC',
width: 3
})
});
const vector = new VectorLayer({
source: new VectorSource({
url: 'data/geojson/countries.geojson',
format: new GeoJSON()
})
});
const map = new Map({
layers: [raster, vector],
target: 'map',
view: new View({
center: [0, 0],
zoom: 2,
multiWorld: true
})
});
const selected = [];
const status = document.getElementById('status');
map.on('singleclick', function(e) {
map.forEachFeatureAtPixel(e.pixel, function(f) {
const selIndex = selected.indexOf(f);
if (selIndex < 0) {
selected.push(f);
f.setStyle(highlightStyle);
} else {
selected.splice(selIndex, 1);
f.setStyle(undefined);
}
});
status.innerHTML = '&nbsp;' + selected.length + ' selected features';
});

View File

@@ -3,7 +3,10 @@ layout: example.html
title: Semi-Transparent Layer
shortdesc: Example of a map with a semi-transparent layer.
docs: >
This example will display a tiled MaxBox layer semi-transparently over an OSM background. The OSM layer is changed to back and white by using a CSS filter.
tags: "transparent, osm, tilejson"
This example will display a tiled MaxBox layer semi-transparently over an OSM background. The OSM layer is changed to black and white by using a CSS filter.
tags: "transparent, osm, tilejson, css"
cloak:
- key: pk.eyJ1IjoiYWhvY2V2YXIiLCJhIjoiY2pzbmg0Nmk5MGF5NzQzbzRnbDNoeHJrbiJ9.7_-_gL8ur7ZtEiNwRfCy7Q
value: Your Mapbox access token from https://mapbox.com/ here
---
<div id="map" class="map"></div>

View File

@@ -5,6 +5,7 @@ import {fromLonLat} from '../src/ol/proj.js';
import OSM from '../src/ol/source/OSM.js';
import TileJSON from '../src/ol/source/TileJSON.js';
const key = 'pk.eyJ1IjoiYWhvY2V2YXIiLCJhIjoiY2pzbmg0Nmk5MGF5NzQzbzRnbDNoeHJrbiJ9.7_-_gL8ur7ZtEiNwRfCy7Q';
const map = new Map({
layers: [
@@ -14,7 +15,7 @@ const map = new Map({
}),
new TileLayer({
source: new TileJSON({
url: 'https://api.tiles.mapbox.com/v3/mapbox.va-quake-aug.json?secure',
url: 'https://api.tiles.mapbox.com/v4/mapbox.va-quake-aug.json?secure&access_token=' + key,
crossOrigin: 'anonymous',
// this layer has transparency, so do not fade tiles:
transition: 0

View File

@@ -99,6 +99,12 @@
This example uses OpenLayers v<span>{{ olVersion }}</span>. The <a id="latest-link" href="#" class="alert-link">latest</a> is v<span id="latest-version"></span>.
</div>
<div id="experimental-notice" class="alert alert-warning alert-dismissible" role="alert" style="display:none">
<button id="experimental-dismiss" type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>
This example uses features that are not part of the stable API and subject to change between releases. Consult the <a href="https://openlayers.org/en/latest/apidoc/">API documentation</a>
to see what is supported in the latest release.
</div>
<div class="row-fluid">
<a class="codepen-button pull-right"><i class="fa fa-codepen"></i> Edit</a>
<div class="span12">
@@ -183,6 +189,15 @@
document.cookie = cookieText;
}
}
var experimentalNotice = document.getElementById('experimental-notice');
if (window.experimental) {
experimentalNotice.style.display = 'block';
document.getElementById('experimental-dismiss').onclick = function() {
experimentalNotice.style.display = 'none';
}
}
});
</script>
</html>

View File

@@ -9,6 +9,9 @@ docs: >
progress. This example registers listeners for these events and
renders a tile loading progress bar at the bottom of the map.</p>
tags: "tile, events, loading"
cloak:
- key: pk.eyJ1IjoiYWhvY2V2YXIiLCJhIjoiY2pzbmg0Nmk5MGF5NzQzbzRnbDNoeHJrbiJ9.7_-_gL8ur7ZtEiNwRfCy7Q
value: Your Mapbox access token from https://mapbox.com/ here
---
<div class="wrapper">
<div id="map" class="map"></div>

View File

@@ -77,8 +77,9 @@ Progress.prototype.hide = function() {
const progress = new Progress(document.getElementById('progress'));
const key = 'pk.eyJ1IjoidHNjaGF1YiIsImEiOiJjaW5zYW5lNHkxMTNmdWttM3JyOHZtMmNtIn0.CDIBD8H-G2Gf-cPkIuWtRg';
const source = new TileJSON({
url: 'https://api.tiles.mapbox.com/v3/mapbox.world-bright.json?secure',
url: 'https://api.tiles.mapbox.com/v4/mapbox.world-bright.json?secure&access_token=' + key,
crossOrigin: 'anonymous'
});

View File

@@ -7,6 +7,9 @@ docs: >
250 ms. To disable this behavior, set the <code>transition</code> option
of the tile source to 0.
tags: "fade, transition"
cloak:
- key: pk.eyJ1IjoiYWhvY2V2YXIiLCJhIjoiY2pzbmg0Nmk5MGF5NzQzbzRnbDNoeHJrbiJ9.7_-_gL8ur7ZtEiNwRfCy7Q
value: Your Mapbox access token from https://mapbox.com/ here
---
<div id="map" class="map"></div>
<label>

View File

@@ -3,7 +3,8 @@ import View from '../src/ol/View.js';
import TileLayer from '../src/ol/layer/Tile.js';
import XYZ from '../src/ol/source/XYZ.js';
const url = 'https://{a-c}.tiles.mapbox.com/v3/mapbox.world-bright/{z}/{x}/{y}.png';
const key = 'pk.eyJ1IjoidHNjaGF1YiIsImEiOiJjaW5zYW5lNHkxMTNmdWttM3JyOHZtMmNtIn0.CDIBD8H-G2Gf-cPkIuWtRg';
const url = 'https://{a-c}.tiles.mapbox.com/v4/mapbox.world-bright/{z}/{x}/{y}.png?access_token=' + key;
const withTransition = new TileLayer({
source: new XYZ({url: url})

View File

@@ -5,5 +5,8 @@ shortdesc: Demonstrates rendering of features from a TopoJSON topology.
docs: >
This example uses a vector layer with `ol/format/TopoJSON` for rendering features from [TopoJSON](https://github.com/mbostock/topojson/wiki).
tags: "topojson, vector, style"
cloak:
- key: pk.eyJ1IjoiYWhvY2V2YXIiLCJhIjoiY2pzbmg0Nmk5MGF5NzQzbzRnbDNoeHJrbiJ9.7_-_gL8ur7ZtEiNwRfCy7Q
value: Your Mapbox access token from https://mapbox.com/ here
---
<div id="map" class="map"></div>

View File

@@ -6,10 +6,10 @@ import TileJSON from '../src/ol/source/TileJSON.js';
import VectorSource from '../src/ol/source/Vector.js';
import {Fill, Stroke, Style} from '../src/ol/style.js';
const key = 'pk.eyJ1IjoidHNjaGF1YiIsImEiOiJjaW5zYW5lNHkxMTNmdWttM3JyOHZtMmNtIn0.CDIBD8H-G2Gf-cPkIuWtRg';
const raster = new TileLayer({
source: new TileJSON({
url: 'https://api.tiles.mapbox.com/v3/mapbox.world-dark.json?secure'
url: 'https://api.tiles.mapbox.com/v4/mapbox.world-dark.json?secure&access_token=' + key
})
});

View File

@@ -5,7 +5,7 @@ shortdesc: Label decluttering with a custom renderer.
resources:
- https://cdn.polyfill.io/v2/polyfill.min.js?features=Set"
docs: >
Decluttering is used to avoid overlapping labels with `overflow: true` set on the text style. For MultiPolygon geometries, only the widest polygon is selected in a custom `geometry` function.
Decluttering is used to avoid overlapping labels. The `overflow: true` setting on the text style makes it so labels that do not fit within the bounds of a polygon are also included.
tags: "vector, decluttering, labels"
---
<div id="map" class="map"></div>

View File

@@ -1,6 +1,5 @@
import Map from '../src/ol/Map.js';
import View from '../src/ol/View.js';
import {getWidth} from '../src/ol/extent.js';
import GeoJSON from '../src/ol/format/GeoJSON.js';
import VectorLayer from '../src/ol/layer/Vector.js';
import VectorSource from '../src/ol/source/Vector.js';
@@ -15,23 +14,6 @@ const map = new Map({
});
const labelStyle = new Style({
geometry: function(feature) {
let geometry = feature.getGeometry();
if (geometry.getType() == 'MultiPolygon') {
// Only render label for the widest polygon of a multipolygon
const polygons = geometry.getPolygons();
let widest = 0;
for (let i = 0, ii = polygons.length; i < ii; ++i) {
const polygon = polygons[i];
const width = getWidth(polygon.getExtent());
if (width > widest) {
widest = width;
geometry = polygon;
}
}
}
return geometry;
},
text: new Text({
font: '12px Calibri,sans-serif',
overflow: true,

View File

@@ -23,7 +23,7 @@ map.on('pointermove', showInfo);
const info = document.getElementById('info');
function showInfo(event) {
const features = map.getFeaturesAtPixel(event.pixel);
if (!features) {
if (features.length == 0) {
info.innerText = '';
info.style.opacity = 0;
return;

View File

@@ -45,14 +45,17 @@ const map = new Map({
const selectElement = document.getElementById('type');
map.on('click', function(event) {
const features = map.getFeaturesAtPixel(event.pixel);
if (!features) {
vtLayer.getFeatures(event.pixel).then(function(features) {
if (!features.length) {
selection = {};
// force redraw of layer style
vtLayer.setStyle(vtLayer.getStyle());
return;
}
const feature = features[0];
if (!feature) {
return;
}
const fid = feature.get(idProp);
if (selectElement.value === 'singleselect') {
@@ -63,4 +66,6 @@ map.on('click', function(event) {
// force redraw of layer style
vtLayer.setStyle(vtLayer.getStyle());
});
});

View File

@@ -0,0 +1,13 @@
---
layout: example.html
title: Vector tiles in EPSG:4326
shortdesc: Example showing vector tiles in EPSG:4326 (styled using ol-mapbox-style)
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"
cloak:
- key: get_your_own_D6rA4zTHduk6KOKTXzGB
value: Get your own API key at https://www.maptiler.com/cloud/
---
<div id="map" class="map" style="background:none;"></div>

View File

@@ -0,0 +1,50 @@
import View from '../src/ol/View.js';
import MVT from '../src/ol/format/MVT.js';
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';
const key = 'get_your_own_D6rA4zTHduk6KOKTXzGB';
// Match the server resolutions
const maxResolution = 360 / 512;
defaultResolutions.length = 14;
for (let i = 0; i < 14; ++i) {
defaultResolutions[i] = maxResolution / Math.pow(2, i + 1);
}
olms('map', 'https://api.maptiler.com/maps/basic-4326/style.json?key=' + key).then(function(map) {
// Custom tile grid for the EPSG:4326 projection
const tileGrid = new TileGrid({
extent: [-180, -90, 180, 90],
tileSize: 512,
resolutions: defaultResolutions
});
const mapboxStyle = map.get('mapbox-style');
// Replace the source with a EPSG:4326 projection source for each vector tile layer
map.getLayers().forEach(function(layer) {
const mapboxSource = layer.get('mapbox-source');
if (mapboxSource && mapboxStyle.sources[mapboxSource].type === 'vector') {
const source = layer.getSource();
layer.setSource(new VectorTileSource({
format: new MVT(),
projection: 'EPSG:4326',
urls: source.getUrls(),
tileGrid: tileGrid
}));
}
});
// Configure the map with a view with EPSG:4326 projection
map.setView(new View({
projection: 'EPSG:4326',
zoom: mapboxStyle.zoom,
center: mapboxStyle.center
}));
});

View File

@@ -0,0 +1,38 @@
---
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>
tags: "webgl, point, layer, feature"
experimental: true
---
<div id="map" class="map"></div>
<label>Choose a predefined style from the list below or edit it as JSON manually.</label><br>
<select id="style-select">
<option value="icons">Icons</option>
<option value="triangles">Triangles, color related to population</option>
<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>
</select>
<textarea style="width: 100%; height: 20rem; font-family: monospace; font-size: small;" id="style-editor"></textarea>
<small>
<span id="style-valid" style="display: none; color: forestgreen">✓ style is valid</span>
<span id="style-invalid" style="display: none; color: grey"><span>style not yet valid...</span></span>
&nbsp;
</small>

View File

@@ -0,0 +1,168 @@
import Map from '../src/ol/Map.js';
import View from '../src/ol/View.js';
import TileLayer from '../src/ol/layer/Tile.js';
import WebGLPointsLayer from '../src/ol/layer/WebGLPoints.js';
import GeoJSON from '../src/ol/format/GeoJSON.js';
import Vector from '../src/ol/source/Vector.js';
import OSM from '../src/ol/source/OSM.js';
const vectorSource = new Vector({
url: 'data/geojson/world-cities.geojson',
format: new GeoJSON()
});
const predefinedStyles = {
'icons': {
symbol: {
symbolType: 'image',
src: 'data/icon.png',
size: [18, 28],
color: 'lightyellow',
rotateWithView: false,
offset: [0, 9]
}
},
'triangles': {
symbol: {
symbolType: 'triangle',
size: 18,
color: [
'interpolate',
['linear'],
['get', 'population'],
20000, '#5aca5b',
300000, '#ff6a19'
],
rotateWithView: true
}
},
'triangles-latitude': {
symbol: {
symbolType: 'triangle',
size: [
'interpolate',
['linear'],
['get', 'population'],
40000, 12,
2000000, 24
],
color: [
'interpolate',
['linear'],
['get', 'latitude'],
-60, '#ff14c3',
-20, '#ff621d',
20, '#ffed02',
60, '#00ff67'
],
offset: [0, 0],
opacity: 0.95
}
},
'circles': {
symbol: {
symbolType: 'circle',
size: [
'interpolate',
['linear'],
['get', 'population'],
40000, 8,
2000000, 28
],
color: '#006688',
rotateWithView: false,
offset: [0, 0],
opacity: [
'interpolate',
['linear'],
['get', 'population'],
40000, 0.6,
2000000, 0.92
]
}
},
'circles-zoom': {
symbol: {
symbolType: 'circle',
size: [
'interpolate',
['exponential', 2.5],
['zoom'],
2, 1,
14, 32
],
color: '#240572',
offset: [0, 0],
opacity: 0.95
}
}
};
const map = new Map({
layers: [
new TileLayer({
source: new OSM()
})
],
target: document.getElementById('map'),
view: new View({
center: [0, 0],
zoom: 2
})
});
let literalStyle;
let pointsLayer;
function refreshLayer(newStyle) {
const previousLayer = pointsLayer;
pointsLayer = new WebGLPointsLayer({
source: vectorSource,
style: newStyle,
disableHitDetection: true
});
map.addLayer(pointsLayer);
if (previousLayer) {
map.removeLayer(previousLayer);
}
literalStyle = newStyle;
}
const spanValid = document.getElementById('style-valid');
const spanInvalid = document.getElementById('style-invalid');
function setStyleStatus(errorMsg) {
const isError = typeof errorMsg === 'string';
spanValid.style.display = errorMsg === null ? 'initial' : 'none';
spanInvalid.firstElementChild.innerText = isError ? errorMsg : '';
spanInvalid.style.display = isError ? 'initial' : 'none';
}
const editor = document.getElementById('style-editor');
editor.addEventListener('input', function() {
const textStyle = editor.value;
try {
const newLiteralStyle = JSON.parse(textStyle);
if (JSON.stringify(newLiteralStyle) !== JSON.stringify(literalStyle)) {
refreshLayer(newLiteralStyle);
}
setStyleStatus(null);
} catch (e) {
setStyleStatus(e.message);
}
});
const select = document.getElementById('style-select');
select.value = 'circles';
function onSelectChange() {
const style = select.value;
const newLiteralStyle = predefinedStyles[style];
editor.value = JSON.stringify(newLiteralStyle, null, 2);
try {
refreshLayer(newLiteralStyle);
setStyleStatus();
} catch (e) {
setStyleStatus(e.message);
}
}
onSelectChange();
select.addEventListener('change', onSelectChange);

View File

@@ -200,6 +200,12 @@ ExampleBuilder.prototype.render = async function(dir, chunk) {
tag: `<script src="${this.common}.js"></script><script src="${jsName}"></script>`,
source: jsSource
};
if (data.experimental) {
const prelude = '<script>window.experimental = true;</script>';
data.js.tag = prelude + data.js.tag;
}
data.pkgJson = JSON.stringify({
name: name,
dependencies: getDependencies(jsSource),

View File

@@ -4,11 +4,11 @@ title: WMS GetLegendGraphic
shortdesc: Example of a WMS GetLegendGraphic.
docs: >
WMS supports the [getLegendGraphic request](https://docs.geoserver.org/latest/en/user/services/wms/get_legend_graphic/index.html).
This example demonstrates the use of the `getGetLegendGraphicUrl` method.
This example demonstrates the use of the `getLegendUrl` method.
As a legend can be responsive to the scale it is updated on every change of the resolution.
tags: "GetLegendGraphic, getGetLegendGraphicURL, WMS"
tags: "GetLegendGraphic, getLegendUrl, WMS"
---
<div id="map" class="map"></div>
Legend:

View File

@@ -12,7 +12,7 @@ const wmsSource = new ImageWMS({
});
const updateLegend = function(resolution) {
const graphicUrl = wmsSource.getGetLegendGraphicUrl(resolution);
const graphicUrl = wmsSource.getLegendUrl(resolution);
const img = document.getElementById('legend');
img.src = graphicUrl;
};

View File

@@ -3,8 +3,9 @@ layout: example.html
title: Worker
shortdesc: This example should be deleted.
docs: >
When you move the map, a message is sent to a worker. In response, the woker sends a
When you move the map, a message is sent to a worker. In response, the worker sends a
message back with the version identifier.
tags: "worker"
experimental: true
---
<div id="map" class="map"></div>

1243
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
{
"name": "ol",
"version": "6.0.0-beta.14",
"version": "6.1.0",
"description": "OpenLayers mapping library",
"keywords": [
"map",
@@ -11,7 +11,7 @@
"homepage": "https://openlayers.org/",
"scripts": {
"lint": "eslint tasks test rendering src/ol examples config",
"pretest": "npm run lint",
"pretest": "npm run lint && npm run typecheck",
"test-rendering": "node rendering/test.js",
"test": "npm run karma -- --single-run --log-level error && npm run test-rendering -- --force",
"karma": "karma start test/karma.config.js",
@@ -36,72 +36,73 @@
"url": "https://github.com/openlayers/openlayers/issues"
},
"dependencies": {
"pbf": "3.2.0",
"@openlayers/pepjs": "^0.5.3",
"pbf": "3.2.1",
"pixelworks": "1.1.0",
"rbush": "^3.0.0"
"rbush": "^3.0.1"
},
"devDependencies": {
"@babel/core": "^7.4.0",
"@babel/core": "^7.6.4",
"@babel/preset-env": "^7.4.4",
"@openlayers/eslint-plugin": "^4.0.0-beta.2",
"@openlayers/eslint-plugin": "^4.0.0",
"@types/arcgis-rest-api": "^10.4.4",
"@types/geojson": "^7946.0.7",
"@types/pbf": "^3.0.1",
"@types/pbf": "^3.0.2",
"@types/topojson-specification": "^1.0.1",
"babel-loader": "^8.0.5",
"buble": "^0.19.7",
"buble-loader": "^0.5.1",
"chaikin-smooth": "^1.0.4",
"clean-css-cli": "4.3.0",
"copy-webpack-plugin": "^5.0.3",
"coveralls": "3.0.6",
"copy-webpack-plugin": "^5.0.4",
"coveralls": "3.0.7",
"eslint": "^6.0.0",
"eslint-config-openlayers": "^12.0.0",
"expect.js": "0.3.1",
"front-matter": "^3.0.2",
"fs-extra": "^8.0.0",
"glob": "^7.1.4",
"glob": "^7.1.5",
"globby": "^10.0.0",
"handlebars": "4.1.2",
"handlebars": "4.4.5",
"html-to-image": "^0.1.0",
"istanbul": "0.4.5",
"istanbul-instrumenter-loader": "^3.0.1",
"jquery": "3.4.1",
"jsdoc": "3.6.3",
"jsdoc-plugin-typescript": "^2.0.1",
"karma": "^4.1.0",
"jsdoc-plugin-typescript": "^2.0.5",
"karma": "^4.4.1",
"karma-chrome-launcher": "3.1.0",
"karma-coverage": "^1.1.2",
"karma-coverage-istanbul-reporter": "^2.0.5",
"karma-coverage": "^2.0.1",
"karma-coverage-istanbul-reporter": "^2.1.0",
"karma-firefox-launcher": "^1.1.0",
"karma-mocha": "1.3.0",
"karma-sourcemap-loader": "^0.3.7",
"karma-webpack": "^4.0.0-rc.2",
"loglevelnext": "^3.0.1",
"marked": "0.7.0",
"mocha": "6.2.0",
"ol-mapbox-style": "^5.0.0-beta.3",
"pixelmatch": "^5.0.0",
"mocha": "6.2.2",
"ol-mapbox-style": "^5.0.2",
"pixelmatch": "^5.1.0",
"pngjs": "^3.4.0",
"proj4": "2.5.0",
"puppeteer": "~1.19.0",
"rollup": "^1.12.0",
"rollup-plugin-babel": "^4.3.2",
"puppeteer": "~1.20.0",
"rollup": "^1.25.1",
"rollup-plugin-babel": "^4.3.3",
"rollup-plugin-commonjs": "^10.0.0",
"rollup-plugin-node-resolve": "^5.0.0",
"rollup-plugin-node-resolve": "^5.2.0",
"rollup-plugin-terser": "^5.0.0",
"serve-static": "^1.14.0",
"shx": "^0.3.2",
"sinon": "^7.3.2",
"terser-webpack-plugin": "^1.2.3",
"typescript": "^3.4.5",
"terser-webpack-plugin": "^2.0.1",
"typescript": "3.5.3",
"url-polyfill": "^1.1.5",
"walk": "^2.3.9",
"webpack": "4.39.2",
"webpack": "4.41.2",
"webpack-cli": "^3.3.2",
"webpack-dev-middleware": "^3.6.2",
"webpack-dev-server": "^3.3.1",
"yargs": "^13.2.2"
"yargs": "^14.2.0"
},
"eslintConfig": {
"extends": "openlayers",
@@ -115,6 +116,12 @@
{
"requireReturn": false
}
],
"@openlayers/no-exclusive-tests": [
"error",
{
"include": "test/**/*.test.js"
}
]
}
},

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

View File

@@ -0,0 +1,43 @@
import {Map, View, Feature} from '../../../src/ol/index.js';
import {Point} from '../../../src/ol/geom.js';
import {Tile as TileLayer, Vector as VectorLayer} from '../../../src/ol/layer.js';
import {useGeographic} from '../../../src/ol/proj.js';
import {XYZ, Vector as VectorSource} from '../../../src/ol/source.js';
import {Style, Circle, Fill} from '../../../src/ol/style.js';
useGeographic();
const center = [8.6, 50.1];
const point = new Point(center);
new Map({
layers: [
new TileLayer({
source: new XYZ({
url: '/data/tiles/satellite/{z}/{x}/{y}.jpg',
transition: 0
})
}),
new VectorLayer({
source: new VectorSource({
features: [
new Feature(point)
]
}),
style: new Style({
image: new Circle({
radius: 5,
fill: new Fill({color: 'red'})
})
})
})
],
target: 'map',
view: new View({
center: center,
zoom: 3
})
});
render();

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

View File

@@ -0,0 +1,40 @@
import {Map, View} from '../../../src/ol/index.js';
import {Point} from '../../../src/ol/geom.js';
import TileLayer from '../../../src/ol/layer/Tile.js';
import {useGeographic} from '../../../src/ol/proj.js';
import XYZ from '../../../src/ol/source/XYZ.js';
import {Style, Circle, Fill} from '../../../src/ol/style.js';
import {getVectorContext} from '../../../src/ol/render.js';
useGeographic();
const center = [8.6, 50.1];
const layer = new TileLayer({
source: new XYZ({
url: '/data/tiles/satellite/{z}/{x}/{y}.jpg',
transition: 0
})
});
layer.on('postrender', event => {
const context = getVectorContext(event);
context.setStyle(new Style({
image: new Circle({
radius: 5,
fill: new Fill({color: 'red'})
})
}));
context.drawGeometry(new Point(center));
});
new Map({
target: 'map',
layers: [layer],
view: new View({
center: center,
zoom: 3
})
});
render();

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

View File

@@ -0,0 +1,34 @@
import Map from '../../../src/ol/Map.js';
import View from '../../../src/ol/View.js';
import Static from '../../../src/ol/source/ImageStatic.js';
import {
get as getProjection,
transformExtent,
useGeographic
} from '../../../src/ol/proj.js';
import ImageLayer from '../../../src/ol/layer/Image.js';
useGeographic();
const center = [-122.416667, 37.783333];
const extent = [-123.1, 37.1, -122.1, 37.9];
new Map({
pixelRatio: 1,
target: 'map',
layers: [new ImageLayer({
source: new Static({
url: '/data/tiles/osm/5/5/12.png',
imageExtent: transformExtent([-123, 37, -122, 38], 'EPSG:4326', 'EPSG:3857'),
projection: getProjection('EPSG:3857')
}),
extent
})],
view: new View({
center,
zoom: 8,
rotation: Math.PI / 4
})
});
render();

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

View File

@@ -0,0 +1,31 @@
import Map from '../../../src/ol/Map.js';
import View from '../../../src/ol/View.js';
import Static from '../../../src/ol/source/ImageStatic.js';
import {
get as getProjection,
transform,
transformExtent
} from '../../../src/ol/proj.js';
import ImageLayer from '../../../src/ol/layer/Image.js';
const center = transform([-122.416667, 37.783333], 'EPSG:4326', 'EPSG:3857');
const extent = transformExtent([-123.1, 37.1, -122.1, 37.9], 'EPSG:4326', 'EPSG:3857');
new Map({
pixelRatio: 1,
target: 'map',
layers: [new ImageLayer({
source: new Static({
url: '/data/tiles/osm/5/5/12.png',
imageExtent: transformExtent([-123, 37, -122, 38], 'EPSG:4326', 'EPSG:3857'),
projection: getProjection('EPSG:3857')
}),
extent
})],
view: new View({
center,
zoom: 8,
rotation: Math.PI / 4
})
});
render();

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

View File

@@ -0,0 +1,41 @@
/**
* Tile layers get clipped to their extent.
*/
import Map from '../../../src/ol/Map.js';
import View from '../../../src/ol/View.js';
import TileLayer from '../../../src/ol/layer/Tile.js';
import XYZ from '../../../src/ol/source/XYZ.js';
import {useGeographic} from '../../../src/ol/proj.js';
useGeographic();
const center = [7, 50];
const extent = [2, 47, 10, 53];
new Map({
target: 'map',
view: new View({
center: center,
zoom: 3
}),
layers: [
new TileLayer({
source: new XYZ({
url: '/data/tiles/satellite/{z}/{x}/{y}.jpg',
maxZoom: 3
}),
extent: extent
}),
new TileLayer({
source: new XYZ({
url: '/data/tiles/stamen-labels/{z}/{x}/{y}.png',
minZoom: 3,
maxZoom: 5
}),
extent: extent
})
]
});
render();

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@@ -0,0 +1,27 @@
import Map from '../../../src/ol/Map.js';
import View from '../../../src/ol/View.js';
import GeoJSON from '../../../src/ol/format/GeoJSON.js';
import VectorLayer from '../../../src/ol/layer/Vector.js';
import VectorSource from '../../../src/ol/source/Vector.js';
import {useGeographic} from '../../../src/ol/proj.js';
useGeographic();
new Map({
target: 'map',
view: new View({
center: [0, 0],
zoom: 1
}),
layers: [
new VectorLayer({
extent: [-50, -45, 50, 45],
source: new VectorSource({
url: '/data/countries.json',
format: new GeoJSON()
})
})
]
});
render();

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