Compare commits

..

1336 Commits

Author SHA1 Message Date
ahocevar
5cc1ff0f45 Use beta tag 2019-06-24 09:54:41 +02:00
ahocevar
2df5f85018 Set version to 6.0.0-beta.10 2019-06-24 09:52:07 +02:00
Andreas Hocevar
4a0d6ce43c Merge pull request #9705 from ahocevar/vectortile-render-optimizations
Vector tile renderer optimizations and fixes
2019-06-24 09:50:56 +02:00
Andreas Hocevar
187969cbb3 Merge pull request #9706 from ahocevar/non-browser-screen-check
Do not use self to check browser features
2019-06-24 09:48:59 +02:00
ahocevar
8cdfc6e17c Do not use self to check browser features 2019-06-23 14:26:40 +02:00
ahocevar
9cd35d67a9 Fix clipping and clearing 2019-06-23 14:23:32 +02:00
ahocevar
4d2fa476a3 Simpler z sort 2019-06-23 14:22:56 +02:00
ahocevar
f864c05070 Less frame budget restrictions 2019-06-23 14:07:22 +02:00
ahocevar
3557271e5a Use Image.prototype.decode also in Safari 2019-06-23 14:06:14 +02:00
Andreas Hocevar
8a49e06ebd Merge pull request #9704 from ahocevar/vectortile-reuse-issue
Handle container reuse properly when layers are added/removed
2019-06-22 19:33:59 +02:00
ahocevar
6783f6adb9 Handle container reuse properly when layers are added/removed 2019-06-22 19:12:39 +02:00
Tim Schaub
5eb27f7704 Merge pull request #9703 from openlayers/greenkeeper/eslint-6.0.0
Update eslint to the latest version 🚀
2019-06-22 07:13:34 -06:00
greenkeeper[bot]
df240fe905 chore(package): update eslint to version 6.0.0 2019-06-22 04:08:47 +00:00
Frédéric Junod
300522e3cc Merge pull request #9701 from fredj/overlay_will-change
Remove will-change CSS rule for Overlay container
2019-06-21 16:36:27 +02:00
Tim Schaub
3ede6e32be Merge pull request #9702 from lutzhelm/typecheck-iiif
Fix several TypeScript type check problems
2019-06-21 07:53:59 -06:00
Tim Schaub
ce45a10063 Merge pull request #9700 from KaiVolland/9692-typescript
Solves typescript related issues
2019-06-21 07:48:15 -06:00
Tim Schaub
2438ef167b Merge pull request #9699 from petrsloup/maptiler-url-fix
Fix MapTiler API usage
2019-06-21 07:46:42 -06:00
Lutz Helm
d6dc7a926d Fix several TypeScript type check problems 2019-06-21 15:26:28 +02:00
Frederic Junod
6e6a2cae06 Use version 4 TileJSON from mapbox 2019-06-21 14:33:26 +02:00
Frederic Junod
a6ebad008f Remove will-change CSS rule for Overlay container
Fixes #9467
Fixes #9139

Chrome doesn't force a composition if the `will-change` CSS rule is different from `transform` or `opacity`.
See https://bugs.chromium.org/p/chromium/issues/detail?id=960953
2019-06-21 14:22:46 +02:00
Kai Volland
ed5d4aaf6d Fixes typing issue in mat4.js 2019-06-21 13:35:40 +02:00
Kai Volland
f507efe77d Fixes typing issue in Composite.js 2019-06-21 13:31:27 +02:00
Kai Volland
83173cd385 Fixes typing issue in VectorTile.js 2019-06-21 13:30:35 +02:00
Kai Volland
b6b91abc27 Fixes typing issue in DragPan.js 2019-06-21 13:28:56 +02:00
Petr Sloup
05c791efcd Fix MapTiler API usage 2019-06-21 11:22:24 +02:00
Tim Schaub
2342626a57 Merge pull request #9698 from openlayers/greenkeeper/puppeteer-1.18.0
Update puppeteer to the latest version 🚀
2019-06-20 23:33:59 -06:00
greenkeeper[bot]
7c0a0a4786 chore(package): update puppeteer to version 1.18.0 2019-06-20 22:24:07 +00:00
Frédéric Junod
a35ca03e07 Merge pull request #9636 from fredj/rm_from_webgl
Remove and move code from ol/webgl
2019-06-20 16:16:27 +02:00
Tim Schaub
c522454af1 Merge pull request #9695 from openlayers/greenkeeper/webpack-4.35.0
Update webpack to the latest version 🚀
2019-06-20 07:16:29 -06:00
Frederic Junod
ef10834eb3 Remove unused constants from ol/webgl
And change the `EXTENSIONS` constant to a function
2019-06-20 10:25:22 +02:00
greenkeeper[bot]
8efad7bcff chore(package): update webpack to version 4.35.0 2019-06-20 05:08:42 +00:00
Andreas Hocevar
51c8886d60 Merge pull request #9684 from ahocevar/doc-nav
List complete classes in doc navigation
2019-06-17 15:37:19 +02:00
Frédéric Junod
34a8702202 Merge pull request #9685 from fredj/rm_glContext
Remove glContext from RenderEvent
2019-06-17 14:10:51 +02:00
Frederic Junod
1f00da8d83 Remove glContext from RenderEvent 2019-06-17 13:52:56 +02:00
ahocevar
8d793ad6ec List complete classes in doc navigation 2019-06-17 13:10:02 +02:00
Andreas Hocevar
bd8a7bff16 Merge pull request #9681 from ahocevar/apidoc-fixed-and-improved
Remove duplicates from api docs and make navigation more usable
2019-06-17 08:27:48 +02:00
ahocevar
d059689856 Index classes under modulues 2019-06-17 08:15:49 +02:00
ahocevar
4ea28333f8 Avoid duplicates in api docs 2019-06-17 08:15:17 +02:00
Andreas Hocevar
edebf35135 Merge pull request #9677 from ahocevar/featureformat-tilepixels
Add support for tile pixel projection in feature formats
2019-06-15 08:22:28 +02:00
Frédéric Junod
90b645daa5 Merge pull request #9679 from fredj/cleanup
Set pixelTransform and inversePixelTransform as protected
2019-06-15 07:53:15 +02:00
Andreas Hocevar
9eac927b45 Merge pull request #9678 from ahocevar/geography-class
Update geography class urls
2019-06-14 23:20:47 +02:00
Frederic Junod
ec5e8bfa50 Set pixelTransform and inversePixelTransform as protected
The variables are used in child classes
2019-06-14 14:52:28 +02:00
ahocevar
124e984a6d Fix and simplify geojson-vt example 2019-06-14 14:28:37 +02:00
ahocevar
76f44efbb6 Add support for tile pixels to feature formats 2019-06-14 14:28:37 +02:00
ahocevar
ddaaf6a860 Update geography class urls 2019-06-14 12:53:52 +02:00
Tim Schaub
92c16ecdf5 Merge pull request #9673 from openlayers/greenkeeper/webpack-4.34.0
Update webpack to the latest version 🚀
2019-06-12 19:15:28 -06:00
greenkeeper[bot]
635d7a9189 chore(package): update webpack to version 4.34.0 2019-06-12 23:40:39 +00:00
Tim Schaub
fc6ca5eaf3 Merge pull request #9660 from openlayers/greenkeeper/pixelmatch-5.0.0
Update pixelmatch to the latest version 🚀
2019-06-07 04:08:01 -06:00
greenkeeper[bot]
803f960ded chore(package): update pixelmatch to version 5.0.0 2019-06-07 07:52:43 +00:00
Frédéric Junod
ef1b672323 Merge pull request #9658 from fredj/f9628
Don't use HTMLImageElement.decode method on Safari
2019-06-06 16:34:57 +02:00
Frederic Junod
002dc34455 Don't use HTMLImageElement.decode method on Safari
The decode function is supported by Safari but not when the image is a svg file.
2019-06-06 16:15:36 +02:00
Frédéric Junod
cc8389d588 Merge pull request #9657 from fredj/getFeaturesInExtent_doc
Better documentation for getFeaturesInExtent function
2019-06-06 14:23:11 +02:00
Frederic Junod
a8e0e4e960 Better documentation for getFeaturesInExtent function 2019-06-06 14:08:25 +02:00
Olivier Guyot
9ae7256048 Merge pull request #9562 from jahow/webgl-worker
Optimize the WebGL points renderer using a worker
2019-06-06 08:48:29 +02:00
Frederic Junod
e036767746 Use version 4 TileJSON from mapbox 2019-06-06 08:34:31 +02:00
Frédéric Junod
9a49c91fdd Merge pull request #9653 from openlayers/greenkeeper/coveralls-3.0.4
Update coveralls to the latest version 🚀
2019-06-06 08:19:45 +02:00
greenkeeper[bot]
37ff7f547b chore(package): update coveralls to version 3.0.4 2019-06-06 00:10:14 +00:00
Marc Jansen
c97a728531 Merge pull request #9394 from KaiVolland/docs-import-functions
Introduces import snippets for static functions
2019-06-05 22:20:15 +02:00
Olivier Guyot
811bff0430 Merge pull request #9638 from agpixdev/translate-interaction-filter
#9625: Add filter function to translate interaction
2019-06-05 15:32:29 +02:00
Olivier Guyot
2412fe0211 Webgl / remove handling of element_index_uint extension
From now on we will assume this extension is always enabled.

An error message have been added in the unlikely scenario of a lack
of support.
2019-06-05 14:46:15 +02:00
Tim Schaub
32084a7fce Merge pull request #9649 from openlayers/greenkeeper/webpack-4.33.0
Update webpack to the latest version 🚀
2019-06-04 20:11:55 -07:00
André Garneau
7817cf31c6 Changes following code review
Add a type for FilterFunction and add tests for filter option.
2019-06-04 17:45:28 -04:00
greenkeeper[bot]
2e5aac8dba chore(package): update webpack to version 4.33.0 2019-06-04 20:02:28 +00:00
Frédéric Junod
8b08996703 Merge pull request #9644 from fredj/webgl_layer_compose
Use compose function from ol/transform
2019-06-04 15:35:05 +02:00
Andreas Hocevar
1fbbc56f93 Merge pull request #9645 from ahocevar/no-used-tiles
Handle case of no used tiles
2019-06-04 15:26:27 +02:00
ahocevar
8f77a300de Handle case of no used tiles 2019-06-04 14:07:23 +02:00
Frederic Junod
91d49b26b5 Round the transform values in makeProjectionTransform test 2019-06-04 14:00:39 +02:00
Frederic Junod
02ce2f4bec Use compose function from ol/transform 2019-06-04 13:23:12 +02:00
Andreas Hocevar
d4f98c8e59 Merge pull request #9640 from ahocevar/base-docs
Import options directly instead of importing a typedef
2019-06-04 09:30:38 +02:00
Andreas Hocevar
ab0860a22a Merge pull request #9641 from ahocevar/less-proj-imports
Only import what's needed from projections
2019-06-04 09:27:05 +02:00
ahocevar
dd478167a0 Only import what's needed from projections 2019-06-04 09:14:08 +02:00
ahocevar
2df911e0a8 Import options directly instead of importing a typedef 2019-06-04 08:41:08 +02:00
Andreas Hocevar
e9939ecc38 Merge pull request #9637 from ahocevar/detach-labelcache-on-settarget
Detach label cache on Map#setTarget()
2019-06-03 16:03:30 +02:00
Frédéric Junod
d058439756 Merge pull request #9633 from fredj/rm_typecast
Mark the `layers` property as optional in OverviewMap constructor
2019-06-03 15:46:23 +02:00
ahocevar
8c21c9196d Move label cache listener management to the renderer 2019-06-03 15:13:30 +02:00
ahocevar
68b7831daf Listen to label cache again when we have a target 2019-06-03 14:28:20 +02:00
ahocevar
153e06e4d5 Detach label cache on Map#setTarget() 2019-06-03 14:14:13 +02:00
Andreas Hocevar
9bedfb7cb0 Merge pull request #9634 from ahocevar/remove-old-android-workaround
Remove old Android workaround
2019-06-03 10:17:44 +02:00
ahocevar
1bd23a0c32 Remove old Android workaround 2019-06-03 10:03:53 +02:00
Frederic Junod
50343afa61 Remove unnecessary typecasts in constructors options 2019-06-03 09:08:41 +02:00
Frederic Junod
a9e1ebccd3 Mark the layers property as optional in OverviewMap constructor 2019-06-03 09:07:20 +02:00
Andreas Hocevar
9672142c1e Merge pull request #9629 from ahocevar/reuse-vectortile-overlay
Clear overlay canvas when reusing containers
2019-06-02 18:20:24 +02:00
ahocevar
6123be726a Handle layer removal on shared containers 2019-06-02 13:59:06 +02:00
ahocevar
05d8517686 Clear overlay canvas when reusing containers 2019-06-02 11:07:30 +02:00
Frederic Junod
87d5f4c8bc Use 'helper' from WebGLHelper in tests 2019-06-01 15:35:31 +02:00
Frederic Junod
06be00bbd5 Webgl Helper / add an API for OESElementIndexUint extension 2019-06-01 15:35:27 +02:00
Frederic Junod
7fb113c3dc Mark 'helper' variable protected 2019-06-01 15:33:36 +02:00
Olivier Guyot
98b0c65450 Rendering tests / add custom web worker loader
Also includes a change in the rollup-babel plugin to avoid
adding helpers as dependencies (which would give out errors).
2019-06-01 15:33:36 +02:00
Olivier Guyot
698816030e Webgl points / fix unit tests 2019-06-01 15:33:36 +02:00
Olivier Guyot
03e70bd10e Webgl points / handle using short instead of int for indices
This is controlled by the availability of the OES_element_index_uint
webgl extension.
2019-06-01 15:33:36 +02:00
Olivier Guyot
e0983cb1c6 Webgl worker / add tests, some typing and documentation
The worker currently works by receiving GENERATE_BUFFERS messages and
will send back the same kind of message, with the generated buffers
attached. All properties of the original message are kept, so that
when a GENERATE_BUFFERS message comes back to the main thread it
is possible to know what and how the buffers where generated.

This is typically used for the `projectionTransform` matrix, and
will also be necessary when working with tiles.
2019-06-01 15:33:36 +02:00
Olivier Guyot
a366803cdd Webgl / use the new buffer API in helper & the points renderer 2019-06-01 15:33:36 +02:00
Olivier Guyot
33d007ce01 Webgl buffer / now stores data in typed arrays
The `WebGLBuffer` class API was changed in order to allow populating
the internal array in different ways.
2019-06-01 15:33:31 +02:00
Olivier Guyot
8566cfc227 Webgl points / get back the instructions array from the worker
This means we won't have to recreate a binary buffer (through a typed array)
on every `rebuildBuffer` call.
2019-06-01 15:25:24 +02:00
Olivier Guyot
65be907095 Webgl points / shifts the buffer write logic in a worker
The worker receives a transferable array of instructions
and sends back two transferable arrays (vertex and index buffer).
The projection transform is also sent so that when the main thread
receives the buffers from the worker it also knows which projection to
apply when rendering the geometries.
2019-06-01 15:25:11 +02:00
Olivier Guyot
532b8194b1 Webgl points / use the new typed-array based utils for buffers
`rebuildBuffer` is still a very CPU intensive task and is blocking the
main thread.
2019-06-01 15:20:04 +02:00
Olivier Guyot
eb912d95ca Webgl / refactor utilities to work only on typed arrays
The base webgl renderer module now has two types of utilities:
* `writeXFeatureInstructions` will write a series of values in a given
typed array, which represent how a given feature will be rendered; for points,
this means position, size, color, etc.
* `writeXFeatureToBuffers` will fill up the given index & vertex buffers
with values based on the provided render instructions

As such, the logic for rendering features is:
user-input style > instructions array >(*) index/vertex buffers > draw

(*) this transformation is intended to be done on a worker.
2019-06-01 15:19:37 +02:00
Frédéric Junod
245ded43d4 Merge pull request #9626 from fredj/rm_from_has
Remove TOUCH, POINTER and MSPOINTER from ol/has
2019-06-01 12:09:40 +01:00
Frederic Junod
7c215b2532 Remove TOUCH, POINTER and MSPOINTER from ol/has 2019-06-01 07:18:23 +02:00
Frédéric Junod
579d05a0cb Merge pull request #9624 from fredj/cleanup
Remove typecasts in ol/control/OverviewMap
2019-06-01 06:13:02 +01:00
André Garneau
b42ee8ca0f Add filter function to translate interaction
Add a filter function to the translate interaction. This filter is similar to the one present in the select interaction options and provides the ability to dynamically filter which features to include in the translate interaction. Adding the existing "features" options allows further filtering to take place. In this case the filter is first applied, and features that are passing the filtering need to be present in the "features" options to be further kept. The default filter function always return true (no filtering).
2019-05-31 14:51:13 -04:00
Frederic Junod
ede864c823 Remove typecasts in ol/control/OverviewMap
The `options` type was not correctly detected by the typescript compiler.
2019-05-31 16:18:15 +02:00
ahocevar
a50ef05565 Set version to 6.0.0-beta.9 2019-05-30 15:55:09 +02:00
Tim Schaub
93a607d846 Merge pull request #9615 from tschaub/import-specifiers
Include full filename in import specifier
2019-05-29 09:35:34 -06:00
Tim Schaub
deb00f20fe Include full filename in import specifier 2019-05-29 08:51:10 -06:00
Frédéric Junod
c4e465dcf9 Merge pull request #9592 from fredj/f9587_layerIndex
Remove `layerState` param from `prepareFrame` and `renderFrame` function
2019-05-29 09:27:38 +02:00
Frederic Junod
bfea858306 Add missing extension in import 2019-05-29 09:19:17 +02:00
Frédéric Junod
c92bf29677 Fix spelling
Co-Authored-By: Tim Schaub <tschaub@users.noreply.github.com>
2019-05-29 09:07:05 +02:00
Andreas Hocevar
6675f9be57 Merge pull request #9289 from sbrunner/vector-source-geom
Vector source geom
2019-05-28 11:23:31 +02:00
Frédéric Junod
1a6d67776b Merge pull request #9608 from fredj/md_link
Use markdown link syntax in jsdoc
2019-05-27 14:17:18 +02:00
Stéphane Brunner
889b6a9f43 Removes unnecessary type cast 2019-05-27 11:34:33 +02:00
Stéphane Brunner
970c1bcb66 Make the vector source geometry generic 2019-05-27 11:34:31 +02:00
Frederic Junod
2db953ceb1 Use markdown link syntax in jsdoc 2019-05-27 11:06:12 +02:00
Olivier Guyot
051cc68f24 Merge pull request #9596 from jahow/fix-source-missing-event
Vector source / prevent adding features with duplicate id in the collection
2019-05-26 10:53:58 +02:00
Frederic Junod
40c49a9ce5 Remove layerState param from prepareFrame and renderFrame function 2019-05-25 07:19:10 +02:00
Olivier Guyot
442fa907ce Vector source / prevent adding features with duplicate id...
...in the collection.

Previously two features with the same id could be pushed manually in the
features collection and stay there.

This would cause an error when clearing the source.

Fixes #6183.
2019-05-24 23:29:48 +02:00
Bart van den Eijnden
7044e30529 Merge pull request #9604 from bartvde/window-global
Use window instead of global in addEventListener
2019-05-24 15:17:07 +02:00
Frédéric Junod
7cfe047feb Merge pull request #9599 from openlayers/github_funding
Create FUNDING.yml
2019-05-24 15:14:26 +02:00
Tim Schaub
796f20385d Merge pull request #9598 from openlayers/greenkeeper/puppeteer-1.17.0
Update puppeteer to the latest version 🚀
2019-05-24 06:58:00 -06:00
bartvde
c76aa76743 Use window instead of global in addEventListener 2019-05-24 14:51:32 +02:00
Bart van den Eijnden
2969c9e8fb Merge pull request #9601 from bartvde/fix-addeventlistener2
Use global addEventListener in PluggableMap
2019-05-24 14:11:26 +02:00
bartvde
119c24faa2 Use global addEventListener in PluggableMap 2019-05-24 13:45:19 +02:00
Frédéric Junod
93711ea806 Create FUNDING.yml 2019-05-24 11:19:37 +02:00
Andreas Hocevar
96331c5d95 Merge pull request #9584 from ahocevar/reuse-render-target
Reuse render target
2019-05-24 10:33:36 +02:00
ahocevar
d8f41a9d73 Only reuse target when className is the same 2019-05-24 10:16:20 +02:00
greenkeeper[bot]
311900e441 chore(package): update puppeteer to version 1.17.0 2019-05-24 00:18:21 +00:00
ahocevar
bdb87f06f9 Rework tile image render queue 2019-05-23 15:55:29 +02:00
Frédéric Junod
ddb7da3733 Merge pull request #6217 from fredj/dragpan_primary
Add primaryAction condition to DragPan
2019-05-23 09:50:55 +02:00
Tim Schaub
a358521b2b Merge pull request #9594 from openlayers/greenkeeper/webpack-4.32.2
Update webpack to the latest version 🚀
2019-05-22 21:12:52 -06:00
greenkeeper[bot]
4f833501d7 chore(package): update webpack to version 4.32.2 2019-05-22 23:39:55 +00:00
ahocevar
ace5c65ee5 Smarter opacity handling 2019-05-22 16:47:23 +02:00
ahocevar
ae47d3df58 Use opacity from layer state 2019-05-22 16:47:22 +02:00
ahocevar
4c8effe6fa No tile transition when layer opacity is set 2019-05-22 16:47:22 +02:00
ahocevar
c56ad4363d Canvas opacity instead of css 2019-05-22 16:47:22 +02:00
ahocevar
7895b16043 Reuse container for raster and vector image layers 2019-05-22 16:47:20 +02:00
ahocevar
a45e704be2 Smarter reuse detection 2019-05-22 16:46:46 +02:00
ahocevar
d1f1b468b1 Reuse target for image layers 2019-05-22 16:46:46 +02:00
ahocevar
a55505b36a Reuse containers for tile, vector and vector tile layers 2019-05-22 16:46:40 +02:00
ahocevar
930318ab7a Clip high res tiles out of low res tiles only once 2019-05-22 15:57:15 +02:00
ahocevar
5fe9e06535 Use clipping to not render high res tiles on top of low res 2019-05-22 15:57:15 +02:00
ahocevar
606443bc6d Pass render target of previous layer to next layer 2019-05-22 15:56:51 +02:00
Frederic Junod
ec811bfa1f Add primaryAction condition to DragPan interaction 2019-05-22 15:21:17 +02:00
Tim Schaub
5e8d7f666e Merge pull request #9589 from openlayers/greenkeeper/webpack-4.32.1
Update webpack to the latest version 🚀
2019-05-22 06:35:21 -06:00
greenkeeper[bot]
4f9057f066 chore(package): update webpack to version 4.32.1 2019-05-22 06:59:26 +00:00
Tim Schaub
4ed6413635 Merge pull request #9586 from openlayers/greenkeeper/rollup-plugin-terser-5.0.0
Update rollup-plugin-terser to the latest version 🚀
2019-05-21 18:34:20 -06:00
greenkeeper[bot]
bb5ebaa1ab chore(package): update rollup-plugin-terser to version 5.0.0 2019-05-21 22:32:01 +00:00
Tim Schaub
c9491ed023 Merge pull request #9569 from engsterhold/patch-1
Fix for change in Zoomify.js/CustomTile signature
2019-05-21 06:52:51 -06:00
Tim Schaub
3db13fa3bb Merge pull request #9582 from tschaub/stale
Add app to mark inactive issues as stale
2019-05-21 06:49:56 -06:00
robert
7e4e113ac9 lint fix
Signed-off-by: robert <24939343+engsterhold@users.noreply.github.com>
2019-05-21 12:32:30 +02:00
Tim Schaub
dc4ce62fab Merge pull request #9581 from tschaub/update-webpack
Update webpack and use mode in the loader
2019-05-20 19:43:37 -06:00
Tim Schaub
6288744d70 Configure Stale app
See https://github.com/organizations/openlayers/settings/installations/1008384
2019-05-20 17:56:30 -06:00
Tim Schaub
c0339f167b Use mode from the loader context
See https://github.com/webpack/webpack/pull/9140.
2019-05-20 10:33:59 -06:00
greenkeeper[bot]
60007d8e3c chore(package): update webpack to version 4.32.0 2019-05-20 10:33:20 -06:00
Frédéric Junod
2322131b01 Merge pull request #9576 from fredj/has-geolocation
Remove geolocation detection from ol/has
2019-05-18 09:40:21 +02:00
Frederic Junod
39bb6a8ffe Remove geolocation detection from ol/has 2019-05-18 08:50:33 +02:00
Tim Schaub
0631a121c3 Merge pull request #9575 from tschaub/untwisted-exports
Rework exports for getUid and control defaults
2019-05-17 13:03:14 -06:00
Tim Schaub
c860f15f91 Break the circular dependency by extending a pluggable map 2019-05-17 12:38:32 -06:00
Tim Schaub
c10fd7aaab Avoid overwriting longname for getUid 2019-05-17 12:00:10 -06:00
Andreas Hocevar
7ced251d19 Merge pull request #9574 from jumpinjackie/update-mapguide-demo-server
Update OL MapGuide example to point to my demo MapGuide Server.
2019-05-17 19:49:39 +02:00
Frédéric Junod
637c823fa6 Merge pull request #9571 from fredj/misc_examples
Small examples improvements
2019-05-17 17:00:58 +02:00
Frederic Junod
2d655143c3 Add an Overlay in the export-map example 2019-05-17 16:45:29 +02:00
Jackie Ng
fba95ea3f0 Update OL MapGuide example to point to my demo MapGuide Server.
Fixes #9573
2019-05-18 00:21:53 +10:00
Frédéric Junod
40393cd9a4 Merge pull request #9572 from fredj/upgrade-notes_css
Add a note about CSS removal in upgrade-notes.md
2019-05-17 15:44:31 +02:00
Frederic Junod
10527bd221 Remove margin in full screen
In only affects Safari, in Chrome `margin: 0;` is in the default browser's style sheet.
2019-05-17 15:41:03 +02:00
Frederic Junod
4c2b11f6d7 Add a note about CSS removal in upgrade-notes.md 2019-05-17 15:21:51 +02:00
Frédéric Junod
512a39bafd Merge pull request #9570 from fredj/rm_media_print
Remove CSS print rules in ol.css
2019-05-17 14:58:55 +02:00
Frederic Junod
78c09a0ff6 Add svg icon example 2019-05-17 14:48:03 +02:00
Frederic Junod
6dc00b75e0 Update d3 version in d3 example 2019-05-17 14:27:20 +02:00
Frederic Junod
6b50f1555b Add webgl tag to heatmap layer example 2019-05-17 14:25:34 +02:00
Frederic Junod
a6f098f78b Remove CSS print rules in ol.css
Fixes #7909
2019-05-17 14:21:19 +02:00
engsterhold
f77b0941b8 fixed styling 2019-05-17 13:52:10 +02:00
Tim Schaub
6d06f81ca7 Merge pull request #9563 from tschaub/fragile-docs
Fix @abstract and @module annotations
2019-05-16 16:27:09 -06:00
Tim Schaub
908ecb39e3 Description below @abstract trips up JSDoc 2019-05-16 16:10:30 -06:00
Tim Schaub
6cad19e9d5 Description below @module trips up JSDoc 2019-05-16 16:09:30 -06:00
ahocevar
b0fae46aa6 Do not use css z-index 2019-05-16 22:29:32 +02:00
Andreas Hocevar
17d26acb2f Merge pull request #9560 from ahocevar/simplify-loading
Simplify loading detection loop
2019-05-16 22:27:59 +02:00
Andreas Hocevar
579fadd797 Merge pull request #9561 from ahocevar/map-memory-leak
Remove memory leak caused by label cache listeners
2019-05-16 22:26:56 +02:00
Tim Schaub
9693336d99 Merge pull request #9559 from tschaub/minify-worker
Minify worker
2019-05-16 14:20:11 -06:00
ahocevar
335648d613 Remove memory leak caused by label cache listeners 2019-05-16 21:04:55 +02:00
ahocevar
dc906f79e1 Simplify loading detection loop 2019-05-16 20:19:32 +02:00
Tim Schaub
34a8a484c4 Merge pull request #9558 from tschaub/unlisten
Stop listening for image decoding
2019-05-16 11:46:15 -06:00
Tim Schaub
0d489f2ea9 Minify worker in examples for a production build 2019-05-16 10:41:33 -06:00
Tim Schaub
d49e166506 Minify worker source 2019-05-16 10:35:18 -06:00
Frederic Junod
a0e6af425e Add tests for listenImage function, fix private variables initialization 2019-05-16 16:42:37 +02:00
engsterhold
e69b15d33e Bandaid fix for change in Zoomify.js/CustomTile signature
The recent addition of tilePixelRatio to the Zoomify.js/CustomTile constructor broke parameter binding in IIIF.js/IIIF.
The fix mirrors the change in the  Zoomify.js/Zoomify constructor
2019-05-16 16:10:58 +02:00
Tim Schaub
ee9a0bcd05 Stop listening for image decoding 2019-05-16 08:06:12 -06:00
Tim Schaub
442fbb13d2 Merge pull request #9550 from tschaub/worker
Setup for building workers
2019-05-16 07:02:34 -06:00
Frédéric Junod
fddc5bcc5b Merge pull request #9555 from fredj/rm_unused
Remove unused roundUpToPowerOfTwo function
2019-05-16 13:57:19 +02:00
Frederic Junod
c2058af13a Remove unused roundUpToPowerOfTwo function 2019-05-16 12:11:58 +02:00
Frederic Junod
bb022050ed Add 'webworker' lib into the TypeScript's compilerOptions 2019-05-16 09:49:29 +02:00
Frédéric Junod
a8e5cb1e12 Merge pull request #9553 from openlayers/greenkeeper/ol-mapbox-style-5.0.0-beta.2
chore(package): update ol-mapbox-style to version 5.0.0-beta.2
2019-05-16 09:43:56 +02:00
Frédéric Junod
1628ce8729 Merge pull request #9551 from fredj/img_decode
Use HTMLImageElement.decode if available
2019-05-16 09:30:55 +02:00
greenkeeper[bot]
37f96ddcfa chore(package): update ol-mapbox-style to version 5.0.0-beta.2 2019-05-16 07:21:23 +00:00
Andreas Hocevar
1fc75fdc68 Merge pull request #9500 from edellucien/kml_extended_data
KML string validation with extendedData
2019-05-16 09:20:03 +02:00
lucien
10c4ec0b37 Only use 'pushSerializeAndPop' later in code to write extendedData after 2019-05-16 09:10:40 +02:00
Frederic Junod
2e34dd0faf Use HTMLImageElement.decode if available 2019-05-16 08:53:29 +02:00
Tim Schaub
b7b37f9548 Add worker loader to the tests 2019-05-15 16:49:54 -06:00
Tim Schaub
05f13bb363 Add worker loader to the examples 2019-05-15 16:49:38 -06:00
Tim Schaub
e307410301 A task to inline workers 2019-05-15 16:38:06 -06:00
Tim Schaub
5a4541dadb Merge pull request #9534 from tschaub/simpler-mapbox-layer-example
Remove unnecessary parts from the Mapbox layer example
2019-05-15 14:00:46 -06:00
Andreas Hocevar
56ec6b093e Merge pull request #9548 from ahocevar/italic-labels
Avoid cut off labels for italic fonts
2019-05-15 16:58:17 +02:00
Frédéric Junod
61d753c803 Merge pull request #9549 from fredj/rm_unused
Remove unused getReplayTransform_ function in VectorTileLayer
2019-05-15 16:31:09 +02:00
Tim Schaub
f312706269 Remove unnecessary parts from the Mapbox layer example 2019-05-15 08:26:43 -06:00
Frederic Junod
f33ad5e025 Remove unused getReplayTransform_ function in VectorTileLayer 2019-05-15 15:10:54 +02:00
ahocevar
2e31f716ed Avoid cut off labels for italic text 2019-05-15 15:01:12 +02:00
Tim Schaub
eafb657264 Merge pull request #9545 from tschaub/default-view-extent
Avoid panning off the edge of the world
2019-05-15 04:58:29 -06:00
Tim Schaub
0cee259d0b Merge pull request #9539 from tschaub/event-error
Document existing error event type
2019-05-15 04:53:57 -06:00
Tim Schaub
be8797f355 Merge pull request #9541 from tschaub/rbush-three
Upgrade to rbush@3
2019-05-15 04:53:15 -06:00
Tim Schaub
d652bfc4a7 Merge pull request #9543 from tschaub/upgrade-jsdoc-plugin
Update jsdoc-plugin-typescript to version 2.0.1
2019-05-15 04:52:26 -06:00
Andreas Hocevar
11607caa81 Merge pull request #9536 from ahocevar/font-cache-hits
More font cache hits
2019-05-15 12:13:40 +02:00
ahocevar
41e958ea1f Split text into single chars or don't split at all 2019-05-15 11:55:29 +02:00
Olivier Guyot
39de2451bc Merge pull request #9537 from jahow/webgl-geojson-refactoring
WebGL / Points renderer refactoring
2019-05-15 11:44:40 +02:00
Olivier Guyot
e11e3c5f6e Webgl / minor function renaming 2019-05-15 11:30:24 +02:00
Olivier Guyot
c705775d75 Linting 2019-05-15 10:20:31 +02:00
Olivier Guyot
9ca75e9d43 Webgl points / rebuild buffers when source change 2019-05-15 10:18:53 +02:00
Olivier Guyot
5d2b7fe4bb Webgl points / use the helper ton compute the projection transform
The `WebGLHelper` class now provides a `makeProjectionTransform` method
that updates a transform to match the projection for a given frame state.

This also means that the WebGLHelper does not set the projection matrix
uniform anymore, this is the responsibility of the renderer as
the rendered coordinates will not be in world space from now on.
2019-05-15 10:18:47 +02:00
Olivier Guyot
fb455891ce Webgl points / make coordinates in view space to avoid precision glitches
Fixes #9479
2019-05-15 10:18:47 +02:00
Olivier Guyot
3e2e45ce6d Webgl helper / add the possibility to use transforms as custom uniforms
These will be translated into 4x4 matrices in GLSL.
2019-05-15 10:18:47 +02:00
Olivier Guyot
75eb62363a WebGL points / rebuild buffers only when extent changed 2019-05-15 10:18:47 +02:00
Olivier Guyot
523097903a WebGL points / rebuild buffers on every non animation frame 2019-05-15 10:18:22 +02:00
Olivier Guyot
c6d214b585 Webgl / implement support for custom attributes in webgl buffers
Only numerical attributes can be pushed in webgl buffers.
2019-05-15 10:15:55 +02:00
Frédéric Junod
c9604dbd69 Merge pull request #9546 from fredj/canvas_optim
Lazily create the hit detection context
2019-05-15 10:15:02 +02:00
Frédéric Junod
df37519858 Initialize hitDetectionContext to null
Co-Authored-By: Andreas Hocevar <andreas.hocevar@gmail.com>
2019-05-15 10:03:43 +02:00
Frederic Junod
10c6009ffa Lazily create the hit detection context 2019-05-15 09:52:57 +02:00
Olivier Guyot
27e520add4 WebGL points / use pushFeatureInBuffer util
Feature objects are converted to geoJSON with the properties
set for rendering.
2019-05-15 09:47:00 +02:00
Olivier Guyot
3a429d3f6c Webgl / add utils for pushing geojson geometries in webgl buffers
For now only point geometries are handled.
2019-05-15 09:44:41 +02:00
Olivier Guyot
5e36468245 Webgl / add a simple Layer renderer for common logic
This will eventually provides utilities for manipulating & rendering data
2019-05-15 09:43:29 +02:00
Olivier Guyot
a2d83f5358 WebGL points / add minimal tests 2019-05-15 09:42:15 +02:00
ahocevar
53b9718381 Bump version (beta) 2019-05-15 09:32:20 +02:00
Frédéric Junod
2de282ae49 Merge pull request #9533 from fredj/canvas_optim
Canvas optimizations
2019-05-15 08:24:57 +02:00
Tim Schaub
217c6ba764 Avoid panning off the edge of the world 2019-05-14 20:15:51 -06:00
greenkeeper[bot]
039f21274b chore(package): update jsdoc-plugin-typescript to version 2.0.1 2019-05-14 18:59:50 -06:00
Tim Schaub
09fdd30876 Upgrade to rbush@3 2019-05-14 18:43:08 -06:00
Tim Schaub
72551ab506 Merge pull request #9538 from tschaub/module-name
Correct the module annotation for the vector image layer renderer
2019-05-14 18:10:13 -06:00
Tim Schaub
811e5f60eb Document existing error event type 2019-05-14 14:28:00 -06:00
Tim Schaub
b1ea0fec50 Name the module like the module 2019-05-14 13:58:04 -06:00
Frederic Junod
98ee52c61c Move the transform matrix computation out of the for loop 2019-05-14 15:39:06 +02:00
Frederic Junod
f76b9bdd07 Only apply canvas transform if the tiles are scales 2019-05-14 15:33:44 +02:00
Frédéric Junod
3a1d927c41 Merge pull request #9532 from fredj/rm_prop_mapbox_example
Remove unused 'container' property in mapbox-layer example
2019-05-14 14:23:58 +02:00
Frederic Junod
9224bfab7d Remove unused 'container' property in mapbox-layer example 2019-05-14 13:48:26 +02:00
Frédéric Junod
b5535f3ba5 Merge pull request #9530 from fredj/spelling
Fix spelling
2019-05-14 09:26:53 +02:00
Frederic Junod
bfe6d29601 Fix spelling 2019-05-14 09:17:34 +02:00
Tim Schaub
807525b1db Merge pull request #9528 from openlayers/greenkeeper/puppeteer-1.16.0
Update puppeteer to the latest version 🚀
2019-05-13 21:01:49 -06:00
Tim Schaub
8504a49e17 Merge pull request #9489 from crubier/master
Fix Zoomify to display retina tiles
2019-05-13 19:05:31 -06:00
greenkeeper[bot]
83d317d16d chore(package): update puppeteer to version 1.16.0 2019-05-14 00:10:27 +00:00
Frédéric Junod
55b27c70b5 Merge pull request #9525 from jahow/custom-render-fn
Support a custom render function for the Layer class
2019-05-13 16:45:34 +02:00
Olivier Guyot
1c13893dd1 Mapbox Example / remove es6 shorthand
thanks @fredj

Co-Authored-By: Frédéric Junod <frederic.junod@camptocamp.com>
2019-05-13 16:38:10 +02:00
Olivier Guyot
4a1cda715d Layer / update doc to reflect custom render function support 2019-05-13 16:22:27 +02:00
Olivier Guyot
c9d1725f5c Composite renderer / trigger a render even when the source is undefined 2019-05-13 16:16:53 +02:00
Olivier Guyot
4bf314f9e6 Mapbox Example / simplify to use a custom render function 2019-05-13 16:16:53 +02:00
Olivier Guyot
14f580fe30 Layer / accepts a custom render function 2019-05-13 16:16:53 +02:00
Frédéric Junod
a2e6d4b324 Merge pull request #9522 from fredj/https
Use https urls for mapbox.com
2019-05-13 14:50:37 +02:00
Tim Schaub
dadc240038 Merge pull request #9520 from lutzhelm/iiif-doc
[WIP] Improve IIIF tile source and parser documentation
2019-05-13 06:47:09 -06:00
Andreas Hocevar
dd265623e4 Merge pull request #9523 from jahow/mapbox-simpler-example
Make the code simpler in the Mapbox example
2019-05-13 14:37:14 +02:00
Frederic Junod
23137cdab3 Use https urls for mapbox.com 2019-05-13 14:16:18 +02:00
Lutz Helm
1d08eb5752 Give a hint on how to parse IIIF info.json 2019-05-13 12:27:14 +02:00
Olivier Guyot
78cee60d91 Mapbox example / remove more unused code 2019-05-13 12:15:46 +02:00
Olivier Guyot
1deabaa1c0 Mapbox example / add mapbox css to avoid warning in console
Also remove manipulation of the mapbox canvas (not necessary anymore).
2019-05-13 11:42:28 +02:00
Olivier Guyot
88b6b18cc0 Mapbox example / remove overload of undocumented method
This was out of sync with mabox v54 and is not required anymore.
2019-05-13 11:38:45 +02:00
Andreas Hocevar
355fb41748 Merge pull request #9519 from jahow/mapbox-sync-render
Use synchronous render in Mapbox example
2019-05-13 11:37:26 +02:00
Olivier Guyot
7d2249f652 Mapbox example / trigger a synchronous redraw
This uses an undocumented method to trigger a synchronous redraw
instead of using the standard schedule from Mapbox. The CSS previously used
to make the OL and MB views match is not necessary anymore.

Reference: https://github.com/mapbox/mapbox-gl-js/issues/7893#issue-408992184
2019-05-13 11:16:36 +02:00
Lutz Helm
5e288ebedf Improve IIIF tile source doc 2019-05-13 11:15:20 +02:00
Lutz Helm
80eb8b62ce Display union types in IIIFInfo constructor doc 2019-05-13 11:14:43 +02:00
Lutz Helm
cdb36a3bf2 Expose IIIFInfo methods for doc 2019-05-13 11:04:28 +02:00
Lutz Helm
04a28854c9 Make IIIFInfo#Versions appear in doc
For whatever reasons, the possible values of `Versions` did not appear
in the built docs.
2019-05-13 10:49:38 +02:00
Andreas Hocevar
51cf9ee3a1 Merge pull request #9518 from ahocevar/hitdetect-no-declutter
Fix hit detection for multiple layers when decluttering is off
2019-05-13 09:23:43 +02:00
Andreas Hocevar
fbc8580539 Merge pull request #9517 from openlayers/greenkeeper/jsdoc-3.6.2
Update jsdoc to the latest version 🚀
2019-05-13 07:47:07 +02:00
ahocevar
eeec56fa94 Fix hit detection for multiple layers when decluttering is off 2019-05-12 23:32:44 +02:00
Andreas Hocevar
17d83b9c20 Merge pull request #9516 from ahocevar/ol-mapbox-style-5
Upgrade ol-mapbox-style to v5
2019-05-12 21:33:21 +02:00
greenkeeper[bot]
2c9f6b496f chore(package): update jsdoc to version 3.6.2 2019-05-12 16:51:14 +00:00
ahocevar
5006bbe13f Upgrade ol-mapbox-style to v5 2019-05-12 17:34:39 +02:00
ahocevar
a1026a50bd Bump beta version 2019-05-12 16:13:50 +02:00
Andreas Hocevar
c117ec79f7 Merge pull request #9515 from openlayers/greenkeeper/fs-extra-8.0.0
Update fs-extra to the latest version 🚀
2019-05-12 15:48:25 +02:00
greenkeeper[bot]
b37eb29444 chore(package): update fs-extra to version 8.0.0 2019-05-11 14:48:40 +00:00
Andreas Hocevar
4df545dfb0 Merge pull request #9505 from ahocevar/vectortile-pixelratio
Avoid blurry vector tiles
2019-05-10 14:56:10 +02:00
Tim Schaub
70f5822217 Merge pull request #9430 from lutzhelm/iiif
Adds IIIF Image API tile source
2019-05-10 06:32:28 -06:00
Frédéric Junod
d49a41def0 Merge pull request #9512 from fredj/mapbox-layer-example
Mapbox layer example improvement
2019-05-10 14:18:00 +02:00
Frédéric Junod
e4941f60db Merge pull request #9511 from fredj/update_dev_deps
Update devDependencies
2019-05-10 14:17:29 +02:00
Frederic Junod
d1fe22a872 Simplify mapboxgl control container removal 2019-05-10 12:39:39 +02:00
Frederic Junod
5756003c88 Don't create temporary arrays in mapbox-layer example 2019-05-10 10:59:15 +02:00
Frederic Junod
e5e2129a88 Use toLonLat function in mapbox-layer example 2019-05-10 10:48:45 +02:00
Frederic Junod
c5e6728d6d Update mapbox-gl to version 0.54.0 2019-05-10 10:48:21 +02:00
Frederic Junod
d9b3986c95 Update typescript to version 3.4.5 2019-05-10 10:15:30 +02:00
greenkeeper[bot]
a67f8e3f38 chore(package): update serve-static to version 1.14.0 2019-05-10 10:14:40 +02:00
greenkeeper[bot]
7989991da9 chore(package): update glob to version 7.1.4 2019-05-10 10:14:30 +02:00
greenkeeper[bot]
afa70e5a1e chore(package): update webpack-cli to version 3.3.2 2019-05-10 10:14:09 +02:00
greenkeeper[bot]
ce9ea5cc93 chore(package): update loglevelnext to version 3.0.1 2019-05-10 10:13:22 +02:00
greenkeeper[bot]
5f5cdc9645 chore(package): update copy-webpack-plugin to version 5.0.3 2019-05-10 10:13:10 +02:00
greenkeeper[bot]
6370426d52 chore(package): update webpack-cli to version 3.3.1 2019-05-10 10:12:52 +02:00
greenkeeper[bot]
fb7bd2158d chore(package): update sinon to version 7.3.2 2019-05-10 10:11:57 +02:00
greenkeeper[bot]
387b4188f2 chore(package): update front-matter to version 3.0.2 2019-05-10 10:11:44 +02:00
greenkeeper[bot]
c922d4eb8f chore(package): update karma to version 4.1.0 2019-05-10 10:11:27 +02:00
Frédéric Junod
9d4eda2318 Merge pull request #9508 from openlayers/greenkeeper/webpack-4.31.0
Update webpack to the latest version 🚀
2019-05-10 10:09:04 +02:00
Lutz Helm
bd235b7b49 Fix JSDoc error in IIIFInfo 2019-05-09 18:00:18 +02:00
Lutz Helm
7daba05548 Use quoted strings for accessing IIIF_PROFILE_VALUES 2019-05-09 18:00:18 +02:00
Lutz Helm
64e67ae351 Correct IIIF tile source doc 2019-05-09 18:00:18 +02:00
Lutz Helm
40ea2a8b7e Remove extent definition from IIIF example
See
https://github.com/openlayers/openlayers/pull/9430#pullrequestreview-232616993
2019-05-09 18:00:18 +02:00
Lutz Helm
4629fe5028 Add @api annotation for TileGrid#getExtent 2019-05-09 18:00:18 +02:00
Lutz Helm
ba2c558b72 Add typedefs for IIIF info.json responses 2019-05-09 18:00:18 +02:00
Lutz Helm
84f1e0c66e Avoid minification/compilation errors in IIIFInfo
Unquoted properties might be renamed, resulting in errors while
accessing these properties via intented string values.
See also:
https://github.com/openlayers/openlayers/pull/9430#pullrequestreview-232622522
https://github.com/openlayers/openlayers/pull/9430#pullrequestreview-232622575
2019-05-09 18:00:18 +02:00
Lutz Helm
72e41d3703 Remove attribution generation from IIIFInfo
Generating attributions by injecting 3rd party HTML content introduces
XSS vulnerabilities, so with regard to upcoming Image API changes this
functionality is removed.
See also
https://github.com/openlayers/openlayers/pull/9430#issuecomment-482610729
2019-05-09 18:00:18 +02:00
Lutz Helm
6775723840 Fix error in IIIFInfo IIIF Image API v3 handling 2019-05-09 18:00:18 +02:00
Lutz Helm
d332b6a0f4 Prepare IIIFInfo for JSON-LD context extensions
IIIF Image API 3 allows context extensions that should be added to the
info.json's @context property. Therefore, '@context' might be an array
instead of a string.
2019-05-09 18:00:18 +02:00
Lutz Helm
f68b8d8df9 Make IIIF_PROFILE_VALUES consistent with it's doc 2019-05-09 18:00:18 +02:00
Lutz Helm
c2cbae95c6 Fix codestyle in IIIFInfo tests 2019-05-09 18:00:18 +02:00
Lutz Helm
b36ad87cb5 Extend IIIFInfo tests 2019-05-09 18:00:18 +02:00
Lutz Helm
b7c004f95c Remove version specific IIIFInfo methods from class 2019-05-09 18:00:18 +02:00
Lutz Helm
7bfaa3b6ad Refactor IIIFInfo and add tests 2019-05-09 18:00:18 +02:00
Lutz Helm
0cffee6f83 Rename IIIFInfo format methods for more clarity 2019-05-09 18:00:18 +02:00
Lutz Helm
3895a59c5e Fix typo 2019-05-09 18:00:18 +02:00
Lutz Helm
a2b39c9c53 Clean up and document IIIFInfo parser
Optional preferred options are now reduced to the two options that
depend on the image service's supported features: format and quality.
2019-05-09 18:00:18 +02:00
Lutz Helm
12154d98b4 Improve IIIF tile source documentation 2019-05-09 18:00:18 +02:00
Lutz Helm
c25dba415f Add more IIIF tile source tests 2019-05-09 18:00:18 +02:00
Lutz Helm
27d943dcc3 Add tests for IIIF tile source and fix source
The tests are still incomplete.
This commit also corrects the IIIF source where tests have failed.
2019-05-09 18:00:18 +02:00
Lutz Helm
66b5b5d7e1 Cleanup IIIF example code 2019-05-09 18:00:18 +02:00
Lutz Helm
3cf9b5aa28 Add zDirection option to IIIF tile source 2019-05-09 18:00:18 +02:00
Lutz Helm
b77177ed74 Fix errors in IIIF code
- missing import in IIIFInfo
- syntax errors in IIIF
2019-05-09 18:00:18 +02:00
Lutz Helm
f61562a51a Remove unsupported options, document options 2019-05-09 18:00:18 +02:00
Lutz Helm
e4a531de8c Declare IIIF versions as enum 2019-05-09 18:00:18 +02:00
Lutz Helm
063bc51c59 Rename IIIF features to supports
Avoid terminology confusion between OpenLayers map features and IIIF
region/size calculation capability features.
2019-05-09 18:00:18 +02:00
Lutz Helm
3f3fbe7e4b Remove IIIF source rounding workarounds
Always try to use canonical URI form. If the server serves wrong tile
heights for given w, shaped size request URI parameters, so be it.
2019-05-09 18:00:18 +02:00
Lutz Helm
01a6381756 Change the IIIF image example image 2019-05-09 18:00:18 +02:00
Lutz Helm
0ab7ad741f Add error codes for IIIF errors
60: "Missing or invalid `size`."
Without at least a size, no IIIF can be displayed.

61: "Cannot determine IIIF Image API version from provided image
information JSON."
Without finding out the version information, one could only guess how to
use the image info JSON.
2019-05-09 18:00:18 +02:00
Lutz Helm
58efe1f850 Limit IIIF tile source percentages to 10 decimals max
IIIF Image API versions 1 and 2 recommend limiting the number of
decimals digits to 10 at most.
2019-05-09 18:00:18 +02:00
Lutz Helm
66b41a53b8 Fix error in IIIF v3 level0 size paramter
Size request parameter in w,h form for level 0 services that only support
listed sizes had been using erroneous w,w instead of w,h.
2019-05-09 18:00:18 +02:00
Lutz Helm
c00400c500 Add IIIF Image API tilesource with example
src/ol/source/IIIF.js contains a tile source for IIIF Image API services.
It supports Image API version 1 and 2 on compliance levels 0, 1 and 2.

To get working constructor options for IIIF from an IIIF image info.json,
use src/ol/format/IIIFInfo.js.

An example is available in examples/iiif.html respectivly examples/iiif.js.
2019-05-09 18:00:18 +02:00
greenkeeper[bot]
944af1fe80 chore(package): update webpack to version 4.31.0 2019-05-09 08:26:44 +00:00
Vincent Lecrubier
ea55f39298 Support tilePixelRatio in Zoomify to support retina 2019-05-08 22:52:14 +02:00
ahocevar
84db84bc23 Avoid blurry vector tiles 2019-05-08 10:31:29 +02:00
Frédéric Junod
f366eaea52 Merge pull request #9504 from fredj/examples_tsc
Minor examples fixes
2019-05-07 16:38:20 +02:00
Frederic Junod
f5ae41f03e Compare Date with Date instead of number 2019-05-07 14:54:46 +02:00
Frederic Junod
6b1bce2b9d Add missing className property to BaseTile layer options 2019-05-07 14:54:46 +02:00
Frederic Junod
bd57128ca4 Remove unsupported condition property
There's no `condition` property for the Extent interaction
2019-05-07 14:54:46 +02:00
Frederic Junod
5012e4987c Don't use View#constrainCenter function 2019-05-07 14:54:46 +02:00
Andreas Hocevar
6e3d3d4877 Merge pull request #9466 from ahocevar/declutter-global
Declutter in correct order and for all layers
2019-05-07 14:33:24 +02:00
Frederic Junod
d30f6175ce Add function JSDoc tag 2019-05-07 13:52:48 +02:00
Frederic Junod
0e08d9e0fd Add empty declutterItems in RasterSource frameState
To please the type checker.
2019-05-07 13:52:25 +02:00
lucien
81f99f1579 Write placemark's ExtendedData tag after Style tag 2019-05-07 09:02:28 +02:00
Andreas Hocevar
4973281f3c Merge pull request #9497 from simonseyock/patch-2
Fix earth radius in documentation
2019-05-06 17:20:22 +02:00
Simon Seyock
8f3820be22 Fix earth radius in documentation 2019-05-06 16:26:49 +02:00
Andreas Hocevar
033a18bc1c Merge pull request #9493 from ahocevar/jsdoc-3-6
Upgrade jsdoc to v3.6.1
2019-05-06 09:51:39 +02:00
ahocevar
99fb0bf57e Revert "Try downgrading Node for JSDoc"
This reverts commit 284c1dff83.
2019-05-06 09:42:00 +02:00
ahocevar
49a9f21388 Upgrade jsdoc to v3.6.1 2019-05-05 21:29:19 +02:00
Andreas Hocevar
e4d25400ee Merge pull request #9490 from jahow/improve-webgl-doc
Misc. API doc improvements
2019-05-05 19:30:12 +02:00
Andreas Hocevar
1e350677fb Merge pull request #9492 from ahocevar/unmanaged-zindex
Fix zIndex handling for unmanaged layers
2019-05-05 19:14:21 +02:00
ahocevar
86f304ae02 Fix typos 2019-05-05 15:11:22 +02:00
ahocevar
00c09eb281 Make rendering tests more cross-platform proof 2019-05-05 15:05:02 +02:00
ahocevar
6c8c8a6477 Fix decluttering on VectorImage layers 2019-05-05 14:54:23 +02:00
ahocevar
1142caf5e8 Modify render tests to catch regressions 2019-05-05 14:54:23 +02:00
ahocevar
ba6ac43a28 Fix zIndex handling for unmanaged layers 2019-05-05 13:24:46 +02:00
ahocevar
12289b8ef9 Declutter in correct order and for all layers 2019-05-05 12:20:38 +02:00
Olivier Guyot
f69c37566e Improve documentation on webgl and View 2019-05-04 17:26:05 +02:00
Tim Schaub
6cfd0b70ed Merge pull request #9388 from jahow/restore-coverage
Restore code coverage report
2019-05-03 08:33:45 -06:00
Tim Schaub
d95bcc8594 Merge pull request #9487 from tschaub/examples-layout
Avoid header expanding over examples
2019-05-03 08:28:27 -06:00
Olivier Guyot
d3e6f4c3b2 Restore code coverage in Karma config
The transpiling step is done by babel instead of bublé now.
Bublé caused the istanbul instrumenter step to crash because of an
unexpected SourceMap object format.
2019-05-03 15:15:14 +02:00
Frédéric Junod
eb21369d86 Merge pull request #9488 from openlayers/codesandbox_lang_attr
Set the 'lang' attribute to the html tag in examples
2019-05-03 14:31:31 +02:00
Frederic Junod
68a29f1ac6 Set the 'lang' attribute to the html tag in examples 2019-05-03 11:32:33 +02:00
Tim Schaub
6413badada Avoid header expanding over examples 2019-05-02 18:31:56 -06:00
Frédéric Junod
d6485b1e94 Merge pull request #9486 from openlayers/greenkeeper/jquery-3.4.1
Update jquery to the latest version 🚀
2019-05-02 08:45:13 +02:00
greenkeeper[bot]
98a5f552b2 chore(package): update jquery to version 3.4.1 2019-05-01 21:22:51 +00:00
Tim Schaub
067260170b Merge pull request #9484 from tschaub/ci-docs
Build API docs in CI job
2019-05-01 12:44:33 -06:00
Tim Schaub
9850c0134e Merge pull request #9476 from tschaub/event-longnames
Document events fired by interactions
2019-05-01 10:04:58 -06:00
Tim Schaub
284c1dff83 Try downgrading Node for JSDoc 2019-05-01 10:03:17 -06:00
Tim Schaub
d166c79242 Build API docs in CI job 2019-05-01 09:06:40 -06:00
Tim Schaub
e4f377fb46 Merge pull request #9475 from tschaub/single-color-callback
Call the color callback once per feature
2019-04-29 09:14:40 -06:00
Tim Schaub
e22af6dbd6 Merge pull request #9477 from tschaub/unused
Tidy up the JSDoc events plugin
2019-04-29 06:18:22 -06:00
Tim Schaub
0f998b4522 Link to the extent event instead of the extent event type 2019-04-28 16:36:33 -06:00
Tim Schaub
2cdfcf8b21 Latest jsdoc plugin for event longnames 2019-04-28 16:26:14 -06:00
Tim Schaub
b3e770226f Smaller scope 2019-04-28 16:03:54 -06:00
Tim Schaub
981328576f Remove unused classes lookup 2019-04-28 16:00:43 -06:00
Tim Schaub
3b1a415d6b Call the color callback once per feature 2019-04-28 14:09:31 -06:00
Andreas Hocevar
fde36b237e Merge pull request #9469 from ahocevar/vectortile-zdirection
Use nearest lower resolution of vector tiles
2019-04-26 15:12:41 +02:00
ahocevar
dde9c59021 Use nearest lower resolution of vector tiles 2019-04-26 14:29:09 +02:00
Frédéric Junod
a12b323907 Merge pull request #9468 from openlayers/greenkeeper/puppeteer-1.15.0
Update puppeteer to the latest version 🚀
2019-04-26 08:42:08 +02:00
greenkeeper[bot]
1687f9bb84 chore(package): update puppeteer to version 1.15.0 2019-04-26 02:33:10 +00:00
Tim Schaub
9a12a668a2 Merge pull request #9452 from tschaub/color-callback
Fewer calls to the WebGL color callback
2019-04-24 09:46:41 -06:00
Tim Schaub
b98268ffee Merge pull request #9453 from tschaub/for-key-in-uniforms
Remove unnecessary closure and fix uniform type
2019-04-23 17:20:26 -06:00
Frédéric Junod
4d1ae3d483 Merge pull request #9459 from fredj/html-to-image
Use html-to-image instead of dom-to-image-more
2019-04-23 11:53:57 +02:00
Frederic Junod
2f6f110fa3 Remove constrainResolution property in fit options 2019-04-23 10:19:21 +02:00
Frederic Junod
93c25d4f82 Export the map viewport instead of the layers
And filter out the controls elements
2019-04-23 10:17:16 +02:00
Frederic Junod
2ac1095c52 Use html-to-image instead of dom-to-image-more
dom-to-image-more do not support safari
2019-04-23 09:58:31 +02:00
Tim Schaub
d5b868f4a6 Version without v 2019-04-22 09:22:20 -06:00
Tim Schaub
17081fac46 Bump to v6.0.0-beta.6
The version must point to an existing tag for published examples to work.
2019-04-22 09:15:27 -06:00
Andreas Hocevar
4a18b57021 Merge pull request #9450 from ahocevar/later-interacting-flag
Set the interacting flag on pointerdrag instead of pointerdown
2019-04-19 17:51:33 -07:00
Tim Schaub
58c4c9ebb8 Remove unnecessary closure and fix uniform type 2019-04-19 14:33:43 -07:00
Tim Schaub
a16234faaa Allow color callback without third arg 2019-04-19 13:57:40 -07:00
Tim Schaub
154265a2d9 Fewer calls to the color callback 2019-04-19 13:49:53 -07:00
Andreas Hocevar
440ae897a5 Merge pull request #9444 from openlayers/greenkeeper/mocha-6.1.4
Update mocha to the latest version 🚀
2019-04-19 10:11:46 -07:00
ahocevar
86fac0937b Set the interacting flag on pointerdrag instead of pointerdown 2019-04-19 09:42:12 -07:00
greenkeeper[bot]
682102d4d6 chore(package): update mocha to version 6.1.4 2019-04-18 18:59:28 +00:00
Tim Schaub
22774b4821 Bump to 6.0.0-beta 2019-04-18 10:09:58 -07:00
Andreas Hocevar
046e73e785 Merge pull request #9439 from ahocevar/vectortile-attributions
Add attributionsCollapsible option to source/VectorTile
2019-04-18 07:36:50 -07:00
Tim Schaub
a71a823676 Merge pull request #9440 from tschaub/csv-parsing
Skip the header and bad data in CSV parsing
2019-04-17 23:25:02 -07:00
Andreas Hocevar
3ba7ecc602 Merge pull request #9442 from ahocevar/raster-no-transition
Disable opacity transition for raster source sources
2019-04-17 18:21:38 -07:00
ahocevar
887d8e8a90 Disable opacity transition for raster source sources 2019-04-17 17:38:50 -07:00
Andreas Hocevar
251fc79484 Merge pull request #9441 from ahocevar/view-center-no-round
Do not round view center to pixels
2019-04-17 16:30:00 -07:00
Tim Schaub
fc0ed7b96f Skip the header and bad data 2019-04-17 16:26:40 -07:00
ahocevar
752b69680e Do not round view center to pixels 2019-04-17 15:52:58 -07:00
ahocevar
756f63e212 Add attributionsCollapsible option to source/VectorTile 2019-04-17 09:06:37 -07:00
Frédéric Junod
84a82ea5b2 Merge pull request #9435 from fredj/api_default
Set the default values after the property name
2019-04-17 08:29:28 +02:00
Frederic Junod
08dd5f58a2 Set the default values after the property name 2019-04-15 16:44:06 +02:00
Frédéric Junod
04963c83d6 Merge pull request #9433 from fredj/cleanup
Remove unused private variables, remove trailing whitespace
2019-04-15 13:36:54 +02:00
Frederic Junod
711dacf4b7 Remove unused private variables, remove trailing whitespaces 2019-04-15 11:31:18 +02:00
Frédéric Junod
6fbd196132 Merge pull request #9416 from fredj/circle_rotate
Implement rotate and translate functions for circle geometry
2019-04-15 08:22:29 +02:00
Andreas Hocevar
5969ac31ea Merge pull request #9432 from openlayers/greenkeeper/handlebars-4.1.2
Update handlebars to the latest version 🚀
2019-04-13 22:23:22 +02:00
greenkeeper[bot]
21c51ff784 chore(package): update handlebars to version 4.1.2 2019-04-13 14:21:50 +00:00
Tim Schaub
3d10e92218 Merge pull request #9431 from openlayers/greenkeeper/webpack-4.30.0
Update webpack to the latest version 🚀
2019-04-13 06:32:19 -06:00
greenkeeper[bot]
84371fe4be chore(package): update webpack to version 4.30.0 2019-04-12 20:36:52 +00:00
Frédéric Junod
1995164219 Merge pull request #9429 from fredj/update_dev_deps
Update all devDependencies
2019-04-12 12:42:10 +02:00
greenkeeper[bot]
4f128a1ec0 chore(package): update ol-mapbox-style to version 4.3.1 2019-04-12 10:59:30 +02:00
greenkeeper[bot]
f11744da56 chore(package): update webpack-dev-server to version 3.3.1 2019-04-12 10:25:32 +02:00
greenkeeper[bot]
08434ed3d5 chore(package): update webpack-dev-middleware to version 3.6.2 2019-04-12 10:24:32 +02:00
greenkeeper[bot]
2c76d7531b chore(package): update globby to version 9.2.0 2019-04-12 10:24:17 +02:00
greenkeeper[bot]
bbec7d76d4 chore(package): update eslint to version 5.16.0 2019-04-12 10:24:03 +02:00
greenkeeper[bot]
255c4b34ba chore(package): update sinon to version 7.3.1 2019-04-12 10:23:46 +02:00
greenkeeper[bot]
fd220f9cce chore(package): update copy-webpack-plugin to version 5.0.2 2019-04-12 10:23:19 +02:00
greenkeeper[bot]
34d68aadbd chore(package): update @types/geojson to version 7946.0.7 2019-04-12 10:22:37 +02:00
greenkeeper[bot]
3bc822e8ef chore(package): update @openlayers/eslint-plugin to version 4.0.0-beta.2 2019-04-12 10:22:11 +02:00
Frédéric Junod
7340e865a3 Merge pull request #9427 from openlayers/greenkeeper/mocha-6.1.3
Update mocha to the latest version 🚀
2019-04-12 08:41:43 +02:00
Frédéric Junod
5b231fe990 Merge pull request #9425 from fredj/rm_unused_webgl
Remove unused ol/render/webgl module
2019-04-12 08:41:24 +02:00
greenkeeper[bot]
9c55256de2 chore(package): update mocha to version 6.1.3 2019-04-12 00:32:49 +00:00
Frederic Junod
491020f027 Remove unused ol/render/webgl module 2019-04-11 16:37:50 +02:00
Frederic Junod
2989c84248 Implement translate function for circle geometry 2019-04-11 16:12:41 +02:00
Andreas Hocevar
db1515a9f3 Merge pull request #9420 from openlayers/greenkeeper/jquery-3.4.0
Update jquery to the latest version 🚀
2019-04-11 09:06:34 +02:00
greenkeeper[bot]
a774b1a278 chore(package): update jquery to version 3.4.0 2019-04-10 19:55:54 +00:00
Andreas Hocevar
81865f70e4 Merge pull request #9418 from ahocevar/reexport-geometrycollection
Re-export GeometryCollection in ol/geom
2019-04-10 10:30:33 +02:00
Frédéric Junod
c6db2d07bb Use .js extension for import
Co-Authored-By: ahocevar <andreas.hocevar@gmail.com>
2019-04-10 09:09:50 +02:00
ahocevar
91215b303e Re-export GeometryCollection in ol/geom 2019-04-09 20:08:11 +02:00
Frederic Junod
319a905ec0 Implement rotate function for circle geometry 2019-04-09 16:58:44 +02:00
Frédéric Junod
9883b7d3d9 Merge pull request #9411 from fredj/raster_state_test
Fix tile state condition in raster layer test
2019-04-09 08:27:43 +02:00
Frédéric Junod
07e31840eb Merge pull request #9410 from fredj/MouseWheelZoom_max_zoom
Add new maxDelta property to MouseWheelZoom constructor
2019-04-09 08:27:27 +02:00
Andreas Hocevar
03483b5439 Merge pull request #9412 from openlayers/greenkeeper/mocha-6.1.2
Update mocha to the latest version 🚀
2019-04-08 21:36:22 +02:00
greenkeeper[bot]
9a42ab73d8 chore(package): update mocha to version 6.1.2 2019-04-08 19:02:57 +00:00
Frederic Junod
746f92d597 Fix tile state condition in raster layer test
The state was duplicated from the beginning, see 3ddb8712a3
2019-04-08 17:04:37 +02:00
Frederic Junod
238fbca650 Add new maxDelta property to MouseWheelZoom constructor 2019-04-08 15:02:21 +02:00
Frédéric Junod
3875147812 Merge pull request #9409 from fredj/rm_opt_this
Remove more opt_this parameters
2019-04-08 14:37:59 +02:00
Frederic Junod
be065cdacc Update upgrade-notes 2019-04-08 13:46:54 +02:00
Frederic Junod
187f58c1c3 Remove opt_this param in ol/extent 2019-04-08 13:46:54 +02:00
Frederic Junod
c20bdedcac Remove opt_this param in ol/structs/LRUCache 2019-04-08 13:46:54 +02:00
Frederic Junod
617dd9f031 Remove opt_this param in ol/structs/RBush 2019-04-08 13:46:54 +02:00
Frédéric Junod
077afac90a Merge pull request #9408 from openlayers/greenkeeper/mocha-6.1.1
chore(package): update mocha to version 6.1.1
2019-04-08 10:26:54 +02:00
Frédéric Junod
f091d96b6c Merge pull request #9406 from openlayers/greenkeeper/clean-css-cli-4.3.0
Update clean-css-cli to the latest version 🚀
2019-04-08 08:48:03 +02:00
greenkeeper[bot]
a30aa78726 chore(package): update mocha to version 6.1.1
Closes #9407
2019-04-07 23:07:05 +00:00
greenkeeper[bot]
66f49559ee chore(package): update clean-css-cli to version 4.3.0 2019-04-06 09:49:54 +00:00
Andreas Hocevar
8899c3e3c5 Merge pull request #9405 from openlayers/greenkeeper/marked-0.6.2
Update marked to the latest version 🚀
2019-04-05 17:39:42 +02:00
Andreas Hocevar
10a2b718f5 Merge pull request #9286 from ahocevar/interim-transition
Disable transition when an interim tile is available
2019-04-05 17:33:58 +02:00
Andreas Hocevar
c72f699c90 Merge pull request #9404 from jahow/fix-view-jump-glitch
View / apply constraints when an interaction starts
2019-04-05 17:30:33 +02:00
ahocevar
16e132caea Mark new animate_ method private 2019-04-05 17:21:23 +02:00
ahocevar
070c1ec029 Resolve constraints for View#animate() API calls 2019-04-05 17:13:55 +02:00
greenkeeper[bot]
21c26cabed chore(package): update marked to version 0.6.2 2019-04-05 14:34:13 +00:00
Olivier Guyot
0f73f16cfa View / apply constraints when an interaction starts
Previously, an interaction could begin while target values
(center/resolution) were out of the allowed range, causing a
glitch where the view zoom/position would jump suddenly.
2019-04-05 11:55:35 +02:00
Andreas Hocevar
dfa8506549 Merge pull request #9390 from jahow/add-webgl-filtering
Add a new WebGL example for filtering features
2019-04-04 12:34:20 +02:00
Kai Volland
9860699d5f Introduces import snippets for static functions
Adds snippets for import of modules and their
exported functions to the API documentation.
2019-04-04 10:07:55 +02:00
Olivier Guyot
8fb6ed5c6f Add a new webgl example with real time feature filtering 2019-04-02 23:46:13 +02:00
Olivier Guyot
c6a859d1ed Webgl / clarify premultiplied alpha handling
By default, alpha premultiplying should be done by the initial rendering
(eg quads) and not the final post processing pass.

The default post processing pass expects premultiplied color values and
will not do this operation itself.
2019-04-02 22:12:47 +02:00
Olivier Guyot
b955579a9c Webgl / clarified the buffer binding/flushing logic
The Webgl points layer renderer has also been optimized accordingly,
giving out much better performance.
2019-04-02 21:05:31 +02:00
Marc Jansen
7c1df60d06 Merge pull request #9387 from openlayers/greenkeeper/puppeteer-1.14.0
Update puppeteer to the latest version 🚀
2019-03-30 10:59:37 +01:00
greenkeeper[bot]
0583bc0cc8 chore(package): update puppeteer to version 1.14.0 2019-03-30 00:13:09 +00:00
Andreas Hocevar
c9de49e56e Merge pull request #9385 from Kai-W/master
PointsLayer added clear of the render Buffers on Source Change
2019-03-29 12:50:16 +01:00
Kai-W
275a22b685 Added clear of the render Buffers on Source Change 2019-03-28 17:21:43 +01:00
Andreas Hocevar
7091ed3de6 Merge pull request #9379 from openlayers/vectortile-typo
Fix typo in vector tile source docs
2019-03-27 12:50:35 +01:00
Andreas Hocevar
7ebae2ba80 Fix typo in vector tile source docs 2019-03-26 14:54:44 +01:00
Andreas Hocevar
9eb9fffc94 Merge pull request #9368 from ahocevar/multiworld
Show only one world
2019-03-26 14:17:21 +01:00
Marc Jansen
061965ecb7 Merge pull request #9362 from KaiVolland/text-rendering
Use local font "Ubuntu Regular" for rendering tests
2019-03-25 22:08:05 +01:00
Andreas Hocevar
3a7f9d93f4 Merge pull request #9357 from ahocevar/vectortile-view-resolution-2
Render vector tiles at the view resolution
2019-03-25 17:44:31 +01:00
ahocevar
3940b5ec88 Show only one world 2019-03-25 14:49:13 +01:00
Andreas Hocevar
a95481a8fe Merge pull request #9374 from jahow/fix-initialzoom
Fix view initialization with min/max resolution constraint
2019-03-25 14:33:25 +01:00
Olivier Guyot
77a1628610 Tests / remove view extent constraint on zoomify tests 2019-03-25 14:03:40 +01:00
Olivier Guyot
c08da3c694 Map / resolve view constraints when resized/view changed
This makes the `resolveConstraints` view method public but not part of the
api.
2019-03-25 13:38:51 +01:00
Olivier Guyot
98994cad61 View / tests now pass without smoothResolutionConstraint: false 2019-03-25 13:21:10 +01:00
Olivier Guyot
91dda5e5ca View / refactor initialization with resolution constraint
This also makes it possible to call `solveConstraints_` with a duration of 0,
which means the target values are modified straight away without triggering
an animation or leaving the current flow.
2019-03-25 13:21:10 +01:00
Olivier Guyot
b63c4188e4 View / add tests for parameter initialization with constraints 2019-03-25 13:18:49 +01:00
Olivier Guyot
10423ddbe4 Fix View method name in upgrade notes
See #9349
2019-03-25 13:18:49 +01:00
Andreas Hocevar
f32e097051 Merge pull request #9364 from KaiVolland/clip-rendering
Replace clip.test.js with new tests
2019-03-25 12:18:37 +01:00
Andreas Hocevar
1be6050da8 Merge pull request #9360 from KaiVolland/9281-rastersouce-attributions
Enables attributions for the RasterSource
2019-03-25 12:10:57 +01:00
Kai Volland
62ebe29ead Enables attributions for the RasterSource
Attributions included in the passed sources are concatenated.
2019-03-25 11:47:45 +01:00
Kai Volland
ef061dd4c3 Updates font settings for rendering tests
This updates font name and size for renderinge tests that
include TextStyles.
2019-03-25 11:39:10 +01:00
Kai Volland
bff3e88343 Replaces clip.test.js with new tests
Transforms the old rendering test for
layer clipping to the new rendering test approach.
2019-03-25 11:13:04 +01:00
ahocevar
3d2711d35e Add missing arg type 2019-03-24 21:24:30 +01:00
Andreas Hocevar
927a98ac5b Merge pull request #9365 from jahow/patch-1
Fix View method name in upgrade notes
2019-03-22 15:30:56 +01:00
Olivier Guyot
8983ebdc69 Fix View method name in upgrade notes
See #9349
2019-03-22 13:30:58 +01:00
Kai Volland
681a8f1d9c Replaces remaining vectorimage.tests.js
Transforms the old rendering tests for the VectorImageLayer
decluttering to the new rendering test approach.
2019-03-22 10:14:41 +01:00
Andreas Hocevar
447117be4f Merge pull request #9361 from lutzhelm/9343-zdirection
Add a zDirection option for Zoomify - implements #9343
2019-03-21 19:12:41 +01:00
ahocevar
681c3169c1 Add zDirection memeber to the baes class, for type checking 2019-03-21 18:50:03 +01:00
Kai Volland
5665da6518 Use local font "Ubuntu Regular" for rendering tests
Set local font for all rendering tests including
TextStyles to enhance comparability on different
systems.
2019-03-21 15:06:07 +01:00
Lutz Helm
085c60af49 Remove tile source zDirection getter
The renderer now accesses the zDirection member directly if it exists.
This also has the advantage of not advertising any object methods that
hav no use for most tile sources.
2019-03-21 14:47:09 +01:00
Lutz Helm
2bf217207e Test renderer behavior for Zoomify zDirection
The zDirection addition to the Zoomify tile source only takes effect through
the renderer, so these two renderer cases are added to test the behavior.

zoomify-no-zdirection expects the default behavior.
zoomify-zdirection expects the tiles for the next better resolution.
2019-03-21 11:51:42 +01:00
Lutz Helm
f5abb45de0 Add a zDirection option for Zoomify
Via zDirection, the renderer's selection of a tile source's resolution can be
controlled if the view's resolution does not match any tile source resolution.

Currently the zDirection option is only available for Zoomify. The comment
https://github.com/openlayers/openlayers/issues/9343#issuecomment-474341033
describes why caution is advised when using zDirection for other sources.

ol/source/Tile~TileSource#getZDirection has been added to avoid having the
getZDirection method solely in the Zoomify source - just to document the
possibility.
2019-03-21 10:06:22 +01:00
ahocevar
fefcc9f0ca Return directly when all we do is render queued images 2019-03-20 23:04:48 +01:00
ahocevar
d2f60a70d1 Recreate instructions for the view resolution 2019-03-20 22:45:17 +01:00
ahocevar
a25ca03040 Do not use tile.load() for getting source tiles 2019-03-20 22:45:17 +01:00
ahocevar
461256767e Make pattern fills work on a scaled canvas 2019-03-20 22:25:25 +01:00
Tim Schaub
c4279ff665 Merge pull request #9333 from KaiVolland/unify-rendering-tests
Unify rendering tests
2019-03-20 08:34:54 -07:00
Frédéric Junod
ad5c9ac589 Merge pull request #9350 from fredj/cleanup_examples
Remove unnecessary css in examples
2019-03-19 16:21:51 +01:00
Andreas Hocevar
458f1d0f64 Merge pull request #9351 from ahocevar/default-styles
More efficient default styles
2019-03-19 15:56:49 +01:00
ahocevar
b06c84cef9 More efficient default stroke style 2019-03-19 13:58:20 +01:00
ahocevar
b33ceaa400 More efficient default fill color 2019-03-19 13:57:10 +01:00
Kai Volland
7510a19c73 Replaces vectorimage.tests.js (partially)
Transforms the old rendering tests for the VectorImageLayer
to the new rendering test approach.
The declutter tests are kept in the old format for know.
2019-03-19 11:30:45 +01:00
Kai Volland
ac3a2d960a Replaces tile.tests.js (partially) with new tests
Transforms the old rendering tests for the TileLayer
to the new rendering test approach.
The render-listener test is kept in the old format for know.
2019-03-18 16:39:37 +01:00
Frederic Junod
d5f92843a9 Remove unnecessary css in examples 2019-03-18 16:19:01 +01:00
Kai Volland
fc878fd539 Replaces vectortile.tests.js with new tests
Transforms the old rendering tests for the VectorTileLayer
to the new rendering test approach.
2019-03-18 16:15:58 +01:00
Frédéric Junod
84bf801b52 Merge pull request #9346 from fredj/cleanup
Remove tilePixelRatio options from ol.source.VectorTile
2019-03-18 16:12:28 +01:00
Kai Volland
f555048319 Replaces vector.tests.js with new tests
Transforms the old rendering tests for the LayerVector
to the new rendering test approach.
2019-03-18 15:39:48 +01:00
Frederic Junod
72788187c8 Remove tilePixelRatio options from ol.source.VectorTile
Was removed in #7070
2019-03-18 14:35:58 +01:00
Kai Volland
6759641715 Replaces image.tests.js with new tests
Transforms the old rendering tests for the ImageLayer
to the new rendering test approach.
2019-03-18 13:56:45 +01:00
Frédéric Junod
e12a0ea0ff Merge pull request #9345 from fredj/devDependencies
Update all dev dependencies
2019-03-18 11:53:01 +01:00
greenkeeper[bot]
508d980514 chore(package): update webpack-cli to version 3.3.0 2019-03-18 11:13:50 +01:00
greenkeeper[bot]
c52566a244 chore(package): update eslint to version 5.15.2 2019-03-18 11:13:02 +01:00
greenkeeper[bot]
5803727409 chore(package): update ol-mapbox-style to version 4.2.1 2019-03-18 11:12:50 +01:00
greenkeeper[bot]
1d88528686 chore(package): update buble to version 0.19.7 2019-03-18 11:12:39 +01:00
greenkeeper[bot]
3a4be21a25 chore(package): update copy-webpack-plugin to version 5.0.1 2019-03-18 11:12:11 +01:00
greenkeeper[bot]
16419b3281 chore(package): update pngjs to version 3.4.0 2019-03-18 11:11:58 +01:00
greenkeeper[bot]
6d50f43448 chore(package): update webpack-dev-middleware to version 3.6.1 2019-03-18 11:11:40 +01:00
greenkeeper[bot]
f1bfccbfe6 chore(package): update yargs to version 13.2.2 2019-03-18 11:10:50 +01:00
greenkeeper[bot]
a56e8719d3 chore(package): update url-polyfill to version 1.1.5 2019-03-18 11:10:15 +01:00
greenkeeper[bot]
85e2ffa63f chore(package): update sinon to version 7.2.7 2019-03-18 11:09:57 +01:00
greenkeeper[bot]
1b91400ebc chore(package): update karma to version 4.0.1 2019-03-18 11:08:53 +01:00
greenkeeper[bot]
48156af617 chore(package): update terser-webpack-plugin to version 1.2.3 2019-03-18 11:08:34 +01:00
greenkeeper[bot]
c510fe268b chore(package): update webpack-dev-server to version 3.2.1 2019-03-18 11:08:19 +01:00
Kai Volland
912fb03564 Fixes RasterSource tests
Puppeteer/TestSuite seems to have
problems with webworker so threads is set
to 0
2019-03-18 10:33:05 +01:00
Andreas Hocevar
3f7c52c29f Merge pull request #9342 from openlayers/greenkeeper/handlebars-4.1.1
Update handlebars to the latest version 🚀
2019-03-17 11:53:10 +01:00
Andreas Hocevar
9284ba47a4 Merge pull request #9341 from ahocevar/remove-unused
Remove unused ExecutorGroup methods
2019-03-17 11:46:08 +01:00
greenkeeper[bot]
4a405cc975 chore(package): update handlebars to version 4.1.1 2019-03-16 21:30:46 +00:00
ahocevar
5857117625 Remove unused ExecutorGroup methods 2019-03-16 21:29:49 +01:00
Frédéric Junod
75d9ade613 Merge pull request #9337 from fredj/codesandbox_div_size
Set map div size in example send to codesandbox
2019-03-15 15:15:59 +01:00
Kai Volland
58cebcc97f Replaces tilewms.tests.js with new tests
Transforms the old rendering tests for the TileWMSSource
to the new rendering test approach.
2019-03-15 14:30:23 +01:00
Kai Volland
3f8da79893 Replaces raster.tests.js with new tests
Transforms the old rendering tests for the RasterSource
to the new rendering test approach.
2019-03-15 14:04:23 +01:00
Frederic Junod
5f8450d67d Set map div size in example send to codesandbox 2019-03-15 13:53:58 +01:00
Kai Volland
d89b909187 Replaces text.tests.js with new tests
Transforms the old rendering tests for the TextStyle
to the new rendering test approach.
2019-03-15 12:11:13 +01:00
Kai Volland
f79b358c92 Replaces regularshape.tests.js with new tests
Transforms the old rendering tests for the regularshape
to the new rendering test approach.
2019-03-15 10:42:47 +01:00
Kai Volland
e4ef5c789c Removes map.tests.js renders 2019-03-15 10:42:47 +01:00
Kai Volland
d871196e16 Removes linestring.test.js
Removes linestring.test.js and related pngs as linestring
style is already tested with the new approach.
2019-03-15 10:42:47 +01:00
Kai Volland
595b74d04e Replaces map.tests.js with new tests
Transforms the old rendering test for the Map
to the new rendering test approach.
2019-03-15 10:42:47 +01:00
Kai Volland
de0f5d44a3 Replaces circle.tests.js with new tests
Transforms the old rendering test for the CircleStyle
to the new rendering test approach.
2019-03-15 10:42:47 +01:00
Frédéric Junod
1637cffbe9 Merge pull request #9335 from openlayers/codesandbox_template
Create codesandbox using the 'parcel' template
2019-03-14 16:24:24 +01:00
Frederic Junod
2f28f89c59 Create codesandbox using the 'parcel' template
The default template is `create-react-app` and this one ignores the `head` tag defined in out `index.html`
2019-03-14 15:08:01 +01:00
Frédéric Junod
de7afee96d Merge pull request #9329 from fredj/cluster_refresh
Don't refresh the layer after addFeatures call
2019-03-14 11:04:28 +01:00
Frederic Junod
92cb9f1c51 Don't refresh the layer after addFeatures call 2019-03-14 10:25:19 +01:00
Frédéric Junod
7896fa894d Merge pull request #9328 from fredj/cleanup
Mark layerFilter in AtPixelOptions as optional
2019-03-14 09:17:28 +01:00
Andreas Hocevar
d6f7533c76 Merge pull request #9325 from ahocevar/no-round
Create a more accurate origin for tile positioning
2019-03-14 09:12:19 +01:00
ahocevar
4a9d2e689e Create a more accurate origin for tile positioning 2019-03-13 18:34:23 +01:00
Andreas Hocevar
df3d771c53 Merge pull request #9320 from RobertOrthofer/master
enhance tile-debug readability
2019-03-13 12:16:23 +01:00
Robert Orthofer
0aa14db88b move stroke behind text to achieve halo 2019-03-13 09:31:01 +01:00
Andreas Hocevar
d75caaa3df Merge pull request #9318 from ahocevar/smart-cache-size
Smart cache size
2019-03-13 08:17:24 +01:00
Andreas Hocevar
cfc79254d0 Merge pull request #9322 from ahocevar/render-to-source-resolution
Use closest lower source resolution for render tiles
2019-03-13 08:15:25 +01:00
ahocevar
ac0d67b273 Use closest lower source resolution for render tiles 2019-03-12 16:51:20 +01:00
Andreas Hocevar
17b37a90da Merge pull request #9321 from KaiVolland/inheritdoc
Fixes #9294 (missing documention for methods with `@inheritDoc`)
2019-03-12 15:26:26 +01:00
Kai Volland
72d38fa929 Fixes missing methods with @inheritdoc
- This sets ignore to false if a method tagged with
inheritdoc has a matching ancestor. It also stops iterating
when a match is found.
- Outdated TODO is removed, too.
2019-03-12 15:07:03 +01:00
Robert Orthofer
a051892b92 enhance tile-debug readability
this commit enhances the readability of
tile debug coordinates by adding a stroke
for better readability on aerial imagery
and a maxWidth for high zoom levels
2019-03-12 12:48:26 +01:00
Tim Schaub
c573d53297 Merge pull request #9319 from tschaub/licensed
Add title to license to clarify that it is BSD 2-Clause
2019-03-12 04:21:54 -06:00
ahocevar
b4fc249991 Faster calculation of target size
Since usedTiles and wantedTiles will never have an overlap, we can use their
key count directly.
2019-03-12 08:53:52 +01:00
Frédéric Junod
c321c90497 Merge pull request #9300 from fredj/f9299
Fix documentation about zoomDelta for ol.interaction.default function
2019-03-12 08:31:30 +01:00
ahocevar
cb2b57232c Add tests 2019-03-12 08:11:17 +01:00
Tim Schaub
90c3c1db81 Add title to license to clarify that it is BSD 2-Clause
The BSD 2-Clause License is a simplified version of the BSD 3-Clause License.  This license was popularized by the FreeBSD project and is sometimes referred to as the "FreeBSD License" (see https://opensource.org/licenses/BSD-2-Clause and https://en.wikipedia.org/wiki/BSD_licenses#2-clause).  To clarify that the OpenLayers License uses the BSD 2-Clause License template, this change adds "The 2-Clause BSD License" to the top of our license file.  In addition, this change makes our license a verbatim copy of the template at https://opensource.org/licenses/BSD-2-Clause with only the copyright holders added.  This change is not intended to change the project's license, only to clarify the template used for that license.  See https://lists.osgeo.org/pipermail/openlayers-dev/2011-May/007555.html for the original motion to switch to the BSD 2-Clause License (also known as the FreeBSD License).
2019-03-11 22:27:35 -06:00
ahocevar
11f5a4c5b8 Move tile specific methods to the tile layer renderer 2019-03-12 00:19:51 +01:00
ahocevar
0f217392d7 Adjust tile cache size when too small 2019-03-12 00:19:13 +01:00
Andreas Hocevar
b54b7c5989 Merge pull request #9305 from KaiVolland/fix-scaleline-test
Fixes failing tests for Chrome v74
2019-03-11 15:30:01 +01:00
Kai Volland
1348d76a33 Updates test renders
Rendering has changed due to change of browser test version.
2019-03-11 15:13:13 +01:00
Frederic Junod
4a13bf2fa9 Mark layerFilter in AtPixelOptions as optional 2019-03-11 15:11:16 +01:00
Frederic Junod
d71fa78ee2 Remove unused template tag 2019-03-11 15:10:32 +01:00
Frédéric Junod
c0d4cdbabf Merge pull request #9315 from fredj/f9290
Change CSS class for tooltips in measure example
2019-03-11 14:37:43 +01:00
Frederic Junod
76aa26e3e9 Change CSS class for tooltips in measure example 2019-03-11 14:24:57 +01:00
Kai Volland
fcf6e81430 Fixes issue with ScaleLine
Math.pow with negative exponents is inaccurate in chrome v74. `toFixed`
is called on the result to fix this.
2019-03-11 13:31:49 +01:00
Andreas Hocevar
dfabcc0c66 Merge pull request #9137 from jahow/add-view-constrain-extent-2
Refactor the way view constraints are handled & add a view extent constraint
2019-03-11 10:38:31 +01:00
Andreas Hocevar
3282c74de6 Merge pull request #9311 from openlayers/greenkeeper/pbf-3.2.0
Update pbf to the latest version 🚀
2019-03-11 10:29:17 +01:00
Andreas Hocevar
dee36639bd Merge pull request #9313 from ahocevar/interpolate-tests
Re-enable and fix disabled tests
2019-03-11 10:18:00 +01:00
Andreas Hocevar
5a578c00a7 Merge pull request #9314 from ahocevar/fix-transpile
Fix transpilation
2019-03-11 10:17:32 +01:00
ahocevar
e8243b73b5 Fix transpilation 2019-03-11 10:11:05 +01:00
ahocevar
404b04ae59 Re-enable and fix disabled tests 2019-03-11 09:30:04 +01:00
Andreas Hocevar
8a02a6f9f1 Merge pull request #9308 from ahocevar/vectortile-loader-projection
Simplify vector tile projection handling
2019-03-11 09:28:48 +01:00
Bart van den Eijnden
4a67bd86a8 Merge pull request #9312 from bartvde/stamen-minzoom
Update zoom levels for Stamen source
2019-03-11 09:17:50 +01:00
Frédéric Junod
feb1a9f31b Merge pull request #9310 from fredj/stamen_transition
Add transition options to Stamen source
2019-03-11 09:11:38 +01:00
greenkeeper[bot]
8a5720e8cb fix(package): update pbf to version 3.2.0 2019-03-11 07:51:32 +00:00
bartvde
9ad2924f00 Update zoom levels for Stamen source 2019-03-11 08:50:28 +01:00
Frederic Junod
0401aed6e3 Add transition options to Stamen source 2019-03-11 08:34:42 +01:00
ahocevar
b2722542fe Simplify vector tile projection handling 2019-03-10 09:37:58 +01:00
Andreas Hocevar
7002053678 Merge pull request #9307 from ahocevar/line-height
Take line-height into account when measuring text height
2019-03-09 10:07:16 +01:00
Frederic Junod
425cd19922 Add a new font line height option in vector-label example 2019-03-09 09:59:57 +01:00
ahocevar
4a7b3cde56 Take line-height into account when measuring text height 2019-03-09 08:25:09 +01:00
Frédéric Junod
9c1c71b8e5 Merge pull request #9306 from fredj/dispose_layer_renderer
Set the canvas size to 0 on dispose
2019-03-09 08:00:35 +01:00
Frederic Junod
6de566d95b Set the canvas size to 0 on dispose 2019-03-08 13:25:49 +01:00
Kai Volland
b31715e86e Updates puppeteer to 1.13.0
Will use Chromium 74.0.3723.0 (r637110) to run the tests
2019-03-08 11:23:41 +01:00
Frederic Junod
9e89047e6a Fix documentation about zoomDelta for ol.interaction.default function 2019-03-07 14:22:33 +01:00
Andreas Hocevar
a372ca0569 Merge pull request #9295 from ahocevar/update-ol-mapbox-style
Update ol-mapbox-style to fix broken mapbox-style example
2019-03-07 10:10:08 +01:00
Marc Jansen
1e06dd979e Merge pull request #9292 from KaiVolland/downgrade-puppeteer
Downgrades puppeteer to `~1.11.0`
2019-03-06 19:15:35 +01:00
ahocevar
c44e6ebe1d Update ol-mapbox-style to fix broken mapbox-style example 2019-03-06 19:13:33 +01:00
Kai Volland
c8fab42d75 Downgrades puppeteer to ~1.11.0
This downgrades puppeteer to version `~1.11.0`.
This will download the stable version of chromium
(72.0.3582.0). The current puppeteer version
(`^1.12.2`) downloads the beta version of
chromium (73.0.3679.0).
2019-03-06 16:53:45 +01:00
Andreas Hocevar
0995f95ef1 Fix typo in extent-constrained example
Co-Authored-By: jahow <olivier.guyot@camptocamp.com>
2019-03-04 18:11:15 +01:00
Olivier Guyot
447266cbe8 Better smoothing of resolution and center constraints
Previously the formula for the resolution constraint allowed going way past
the minimum zoom.
Also adjusted the center constraint to avoid a zigzag effect when going out
of resolution bounds.
2019-03-04 10:14:06 +01:00
Andreas Hocevar
d25a534dea Merge pull request #9285 from openlayers/greenkeeper/globby-9.1.0
Update globby to the latest version 🚀
2019-03-04 09:53:25 +01:00
ahocevar
56f37ab347 Disable transition when an interim tile is available 2019-03-03 23:07:46 +01:00
greenkeeper[bot]
90749cd80f chore(package): update globby to version 9.1.0 2019-03-03 13:21:03 +00:00
Andreas Hocevar
f1aca67882 Merge pull request #9280 from openlayers/greenkeeper/ol-mapbox-style-4.0.0
Update ol-mapbox-style to the latest version 🚀
2019-03-01 09:56:49 +01:00
Tim Schaub
d7905896f7 Merge pull request #9266 from tschaub/vector-image-options
Full type definition for image vector layer options
2019-02-28 21:43:23 -07:00
greenkeeper[bot]
a7af9a0697 chore(package): update ol-mapbox-style to version 4.0.0 2019-02-28 16:31:06 +00:00
Andreas Hocevar
eea67868f7 Merge pull request #9279 from openlayers/greenkeeper/webpack-4.29.6
Update webpack to the latest version 🚀
2019-02-28 14:24:54 +01:00
Frédéric Junod
d99405feeb Merge pull request #9278 from fredj/bing_imagerySet
Update Bing's imagerySet used in examples
2019-02-28 12:59:17 +01:00
greenkeeper[bot]
14831a0d61 chore(package): update webpack to version 4.29.6 2019-02-28 10:53:28 +00:00
Marc Jansen
43bc53b20b Merge pull request #9270 from bvx89/patch-1
Update faq.md
2019-02-28 10:49:35 +01:00
Frederic Junod
c01dee0884 Update Bing's imagerySet used in examples 2019-02-28 10:43:59 +01:00
Andreas Hocevar
6fd83b9a8e Merge pull request #9277 from ahocevar/rotate-token
Rotate API token
2019-02-27 18:38:34 +01:00
ahocevar
05712acfef Rotate API token 2019-02-27 18:31:50 +01:00
Frédéric Junod
cd17f4b0d6 Merge pull request #9276 from fredj/graticule_cleanup
Use the constructor options instead of changing the private variables
2019-02-27 17:02:41 +01:00
Frederic Junod
7c7b43ee91 Use the constructor options instead of changing the private variables 2019-02-27 15:11:08 +01:00
Frédéric Junod
02f9411c6b Merge pull request #9275 from fredj/rm_setDeclutter
Remove setDeclutter function
2019-02-27 14:03:38 +01:00
Frederic Junod
1338a868e9 Remove setDeclutter function
Changing the declutter value after the layer creating doesn't work, remove the function to avoid confusion.
2019-02-27 11:41:08 +01:00
Lasse Brudeskar Vikås
6b1f9e681c Update faq.md 2019-02-27 11:30:55 +01:00
Andreas Hocevar
65d8b5f26b Merge pull request #9273 from chrismayer/9269-fix-gfi-examples
Fix WMS GetFeatureInfo examples
2019-02-27 10:15:16 +01:00
Christian Mayer
530e47d26c Remove IFrame usage in GetFeatureInfo img example
This replaces the loading of the GetFeatureInfo request via IFrame by a
fetch operation in the GetFeatureInfo image example.
2019-02-27 09:55:59 +01:00
Christian Mayer
85f2312370 Remove IFrame usage in GetFeatureInfo tile example
This replaces the loading of the GetFeatureInfo request via IFrame by a
fetch operation in the GetFeatureInfo tile example.
2019-02-27 09:55:59 +01:00
Lasse Brudeskar Vikås
301b45cb7c Update faq.md
Fixed typos in description, and tried to make the text more readable.
2019-02-26 16:13:06 +01:00
Frédéric Junod
3aa93014c0 Merge pull request #9246 from openlayers/mobile-full-screen
Add missing ol.css in mobile-full-screen example
2019-02-26 12:36:42 +01:00
Frederic Junod
734900f1d7 Add missing ol.css in mobile-full-screen example 2019-02-26 08:39:39 +01:00
Andreas Hocevar
fb2ea83838 Merge pull request #9268 from openlayers/greenkeeper/mocha-6.0.2
Update mocha to the latest version 🚀
2019-02-25 20:51:51 +01:00
greenkeeper[bot]
8534aaa304 chore(package): update mocha to version 6.0.2 2019-02-25 19:09:43 +00:00
Tim Schaub
36cf654f09 Full type definition for image vector layer options 2019-02-25 08:37:30 -07:00
Andreas Hocevar
4e8522e696 Merge pull request #9261 from openlayers/greenkeeper/coveralls-3.0.3
Update coveralls to the latest version 🚀
2019-02-25 15:43:05 +01:00
Frédéric Junod
88760de64b Merge pull request #9264 from tpluscode/patch-1
add question about resizing map element
2019-02-25 10:43:54 +01:00
Tomasz Pluskiewicz
b5f7705e1d Update faq.md 2019-02-25 10:02:52 +01:00
Tomasz Pluskiewicz
9efe10f747 add question about resizing map element 2019-02-25 09:42:54 +01:00
Frédéric Junod
73744de14e Merge pull request #9260 from fredj/rm_geom_param
Remove unused 'geometry' param from ol/render/canvas/Builder
2019-02-25 08:25:06 +01:00
greenkeeper[bot]
d6c18667f4 chore(package): update coveralls to version 3.0.3 2019-02-22 19:13:45 +00:00
Frederic Junod
cd28c8a301 Remove unused 'geometry' param from 'createFill' function 2019-02-22 16:52:32 +01:00
Frederic Junod
79c6cc5159 Remove unused 'geometry' param from '{begin,end}Geometry' functions 2019-02-22 16:45:25 +01:00
Frédéric Junod
345607be28 Merge pull request #9256 from openlayers/greenkeeper/mocha-6.0.1
Update mocha to the latest version 🚀
2019-02-22 15:14:35 +01:00
Olivier Guyot
f67baa0dc0 Interactions / fix zoom level when a zoom interaction ends 2019-02-22 15:04:54 +01:00
Olivier Guyot
75c379beeb View / allow specifying an anchor on interaction end
This also fixes a bug where the animation anchor would be lost when outside
the allowed resolution.
2019-02-22 15:04:54 +01:00
Olivier Guyot
405e206717 View / better names for getValid* and applyParameters_ methods 2019-02-22 15:04:54 +01:00
Olivier Guyot
c2af03f152 Update the View documentation & document breaking changes 2019-02-22 15:04:54 +01:00
Olivier Guyot
7835869582 Add an extent restriction on the mapbox layer example
This fixes a bug where the OL map would allow much larger resolution than
mapbox.
2019-02-22 15:01:30 +01:00
Olivier Guyot
78e8f23df5 View / add getValidCenter method to improve interactions
The DragPan, KeyboardPan and DragZoom interactions now make sure to
animate to a valid center/resolution target to avoid
a chained "resolve" animation which looks weird.

The `View.fit` method was also fixed to use this.
2019-02-22 15:01:30 +01:00
Olivier Guyot
433bccd207 Linting and fixes for unit tests 2019-02-22 15:01:30 +01:00
Olivier Guyot
ef6d17d817 View / add a 'smoothResolutionConstraint' options
When enabled (true by default), the resolution min/max values will be applied with
a smoothing effect for a better user experience.
2019-02-22 15:01:30 +01:00
Olivier Guyot
e023c144bb View / add adjust* methods to manipulate the view more easily
API changes:
* (breaking) the `rotate` method is gone
* the `adjustRotation`, `adjustResolution` and `adjustZoom` methods are now
  available and allow using an anchor.

This means interactions do not have to do the anchor computation themselves
and this also fix anchor computation when constraints must be applied.
2019-02-22 15:01:30 +01:00
Olivier Guyot
b5273babb5 View / handle resolutions array with length=1 2019-02-22 15:01:30 +01:00
Olivier Guyot
49662b019c View / add a constrainResolution option
This introduces a breaking change.

This options replaces the various `constrainResolution` options on interactions
and the `fit` method.

Since constraints are now the responsibility of the View, the fact that intermediary
zoom levels are allowed or not is now set in the view options.

By default, the view resolution is unconstrained.
2019-02-22 15:01:30 +01:00
jahow
48ad1ffcbf View / implement a smooth rebound effect when a max extent is given
This is done by applying the center constraint differently when we're in the
middle of an interaction/animation or not.

When the view is moving, the center constraint will restrain the given value
in an "elastic" way, using a logarithmic function.

This can be disabled using the `smoothCenterConstrain` view parameter.
2019-02-22 15:01:30 +01:00
jahow
cd186ada7f Add new tests for View & Interaction w/ fixes 2019-02-22 15:01:30 +01:00
Olivier Guyot
a6f65df8c4 View / add a resolveConstraints method to end interactions
This will help making sure that the view will come back to a "rested" state
once the interactions are over.

Interactions no longer need to handle the animation back to a rested state,
they simply call `endInteraction` with the desired duration and direction.
2019-02-22 15:01:30 +01:00
Olivier Guyot
1c5fd62e43 View / refactor how zoom and resolution are computed
This commit aims to simplify the computation of zoom and resolution in the
View class.

Previously zoom levels and resolution computations were mixed in different places,
ie resolution constraints, initial values, etc.

Now the View class only has the `getZoomForResolution` and `getResolutionForZoom`
methods to convert from one system to another.

Other than that, most computations use the resolution system internally.

The `constrainResolution` method also does not exist anymore, and is replaced
by `getValidResolution` and `getValidZoomLevel` public methods.
2019-02-22 15:01:30 +01:00
Olivier Guyot
1f379a06a4 View / add support for viewport extent constraint
This introduces a breaking change:

The `extent` view option now constrains the whole viewport and not just the
view center.
The option `constrainOnlyCenter` was added to keep the previous behaviour.

Constraining the whole viewport and not only the view center means
that the center and resolution constraints must be applied with a knowledge of
the viewport size.
2019-02-22 15:01:30 +01:00
jahow
e52fab636c View / apply constraints automatically based on hints
All constraints can now function differently if they are applied during
interaction or animation.
2019-02-22 15:01:30 +01:00
jahow
d991dfa54a View / remove constrainCenter method 2019-02-22 15:01:30 +01:00
jahow
c2c1aa01d3 View / removed the constrainRotation method 2019-02-22 15:01:30 +01:00
Olivier Guyot
e6c4b2ffd1 View / make the constrainResolution function private
Other classes should not need to worry about constraining the resolution
or not, as the View will eventually do this on its own.
2019-02-22 15:01:30 +01:00
Olivier Guyot
3c1e3779e2 View / add a method to compute a valid zoom level
The `getValidZoomLevel` apply the current resolution constraint to return
a value that is guaranteed valid.

This is used for interactions & controls which need a target value to work:
the +/- buttons, the zoom clider, the dragbox zoom and the mouse wheel zoom.
2019-02-22 15:01:30 +01:00
Olivier Guyot
4e1ece16ed View / implemented begin- and endInteraction methods 2019-02-22 15:01:30 +01:00
Olivier Guyot
1cb934dbe3 View / implement intermediate values for center/rot/res
The view now has targetCenter, targetRotation and targetResolution members.

These hold the new values given by set* methods. The actual view parameters are then changed by
calling `applyParameters_`.
2019-02-22 15:01:30 +01:00
Andreas Hocevar
767c765524 Merge pull request #9254 from petrsloup/tilejson-tilesize
Add tileSize option to ol/source/TileJSON
2019-02-22 11:14:19 +01:00
Petr Sloup
67ee5a41b0 Add note about ignoring tileSize TileJSON property 2019-02-22 09:05:18 +01:00
greenkeeper[bot]
5c280e8114 chore(package): update mocha to version 6.0.1 2019-02-21 22:59:15 +00:00
Petr Sloup
bc25097899 Add tileSize option to ol/source/TileJSON
The TileJSON spec does not specify the tile size
and there is no TileJSON property specifying the value.

Many providers nowadays provide 512x512 with TileJSON.
2019-02-21 19:00:07 +01:00
Andreas Hocevar
6ce499532c Merge pull request #9250 from ahocevar/clear-refresh
Clearer behaviour of clear() and refresh() on sources
2019-02-21 17:12:26 +01:00
Andreas Hocevar
386f2dc67c Merge pull request #9247 from openlayers/greenkeeper/copy-webpack-plugin-5.0.0
Update copy-webpack-plugin to the latest version 🚀
2019-02-21 15:17:54 +01:00
Andreas Hocevar
90034e4d48 Merge pull request #9251 from ahocevar/cache-size
Fix cache size calculation
2019-02-21 01:57:40 +01:00
ahocevar
4166c80c6e Test cache size 2019-02-21 01:35:40 +01:00
ahocevar
d06d00ccbb Fix typo 2019-02-21 01:29:15 +01:00
Andreas Hocevar
959dba169d Merge pull request #9110 from crubier/master
Add TilePixelRatio to Zoomify
2019-02-21 00:29:42 +01:00
Vincent Lecrubier
900adaaffb Update Zoomify.js 2019-02-20 22:40:24 +00:00
ahocevar
94cd126189 Add setUrl function and don't reset loaded extents in setLoader 2019-02-20 21:55:29 +01:00
ahocevar
1416a3d162 Add upgrade notes 2019-02-20 20:40:33 +01:00
ahocevar
e4873a9952 Improve documentation for ol/Source#refresh 2019-02-20 20:40:09 +01:00
ahocevar
8d1022046e Clear loaded extents when a new loader is set 2019-02-20 20:39:26 +01:00
ahocevar
f40cbf2cac Do not reload on clear(), but on refresh() 2019-02-20 20:39:04 +01:00
ahocevar
a0ba8dd8c6 Add a clear() method for tile sources 2019-02-20 20:37:58 +01:00
ahocevar
8557bd96b5 Test refresh() for image sources 2019-02-20 20:36:40 +01:00
greenkeeper[bot]
3d4f77be51 chore(package): update copy-webpack-plugin to version 5.0.0 2019-02-20 13:19:25 +00:00
Andreas Hocevar
62d82411c8 Merge pull request #9244 from huyngkh/stylus-support
add stylus only and touch only mode to drawing a shape
2019-02-20 11:30:11 +01:00
Huy Nguyen
c3709ef51a remove arrow function, add JSDoc and restore original Draw 2019-02-20 17:23:50 +07:00
Andreas Hocevar
071e9a4735 Merge pull request #9242 from openlayers/greenkeeper/marked-0.6.1
Update marked to the latest version 🚀
2019-02-20 08:42:13 +01:00
Huy Nguyen
0c889da99c add stylus and touch mode to drawing a shape 2019-02-20 13:55:22 +07:00
greenkeeper[bot]
a41f51c437 chore(package): update marked to version 0.6.1 2019-02-19 21:23:11 +00:00
Frédéric Junod
4cb3e24048 Merge pull request #9240 from fredj/text_rotateWithView
Add setRotateWithView function to ol/style/Text
2019-02-19 15:29:00 +01:00
Frederic Junod
4cb9b1eeb3 Add setRotateWithView function to ol/style/Text 2019-02-19 14:20:58 +01:00
Frederic Junod
f0a97ee460 Fix comments indentation 2019-02-19 14:12:14 +01:00
Andreas Hocevar
7c1e16abc3 Merge pull request #9230 from ahocevar/hitdetect-declutter
Consider all tiles for hit detection when decluttering
2019-02-19 12:58:07 +01:00
Andreas Hocevar
84995c688c Merge pull request #9237 from umbe1987/export-to-pdf-example
Fix zoom after export to PDF is done
2019-02-19 11:46:26 +01:00
Umberto Minora
cefb5d4d32 fixed indents checked with npm run lint 2019-02-19 11:25:12 +01:00
Umberto Minora
8eadb3d04c Fixed indent spaces so that hopefully ci/circleci: build does not fail 2019-02-19 10:57:21 +01:00
Umberto Minora
a6023a710a Cleared mixed spaces and tabs 2019-02-19 10:48:11 +01:00
Umberto Minora
33ac3e34ee constrainResolution: false on view fit instead of setting the zoom 2019-02-19 10:38:23 +01:00
Andreas Hocevar
3c64018b37 Merge pull request #9239 from ahocevar/tests-puppeteer
Run tests in Puppeteer and non headless mode
2019-02-19 09:43:13 +01:00
Frédéric Junod
b01970cb86 Merge pull request #9236 from fredj/cleanup
Move params list to the constructor function
2019-02-19 09:26:46 +01:00
Andreas Hocevar
ffa24bfd22 Merge pull request #9238 from openlayers/greenkeeper/mocha-6.0.0
Update mocha to the latest version 🚀
2019-02-18 23:57:33 +01:00
ahocevar
be17bfe85a Avoid render test issues by not running Puppeteer in headless mode 2019-02-18 23:54:20 +01:00
ahocevar
974684ed2b Use Puppeteer for tests 2019-02-18 23:54:20 +01:00
greenkeeper[bot]
f90a41a7ca chore(package): update mocha to version 6.0.0 2019-02-18 21:57:28 +00:00
Firstname Lastname
df847ae35c Fix zoom after export to PDF is done 2019-02-18 22:12:38 +01:00
Frederic Junod
746455a9b9 Move params list to the constructor function 2019-02-18 17:33:07 +01:00
Frederic Junod
3557247b27 Fix comments indentation 2019-02-18 17:31:36 +01:00
Frédéric Junod
658a4a9194 Merge pull request #9233 from fredj/rm_deprecated
Remove deprecated {get,set}SnapToPixel functions
2019-02-18 15:35:42 +01:00
Andreas Hocevar
ec6371d7a0 Merge pull request #9232 from openlayers/greenkeeper/webpack-4.29.5
Update webpack to the latest version 🚀
2019-02-18 14:41:58 +01:00
Frederic Junod
6bab8793a2 Remove deprecated {get,set}SnapToPixel functions 2019-02-18 14:07:27 +01:00
Andreas Hocevar
45b2e8885a Merge pull request #9231 from ahocevar/vectortile-extent
Set vector tile extent earlier
2019-02-18 13:48:25 +01:00
greenkeeper[bot]
40b5891ea7 chore(package): update webpack to version 4.29.5 2019-02-18 11:32:20 +00:00
ahocevar
667cadc403 Remove extent default so we catch errors when extent is not set 2019-02-18 12:07:10 +01:00
ahocevar
08be6cf9bc Set extent berfore features 2019-02-18 11:54:59 +01:00
ahocevar
fd07de39ad Consider all tiles for hit detection when decluttering 2019-02-18 11:40:52 +01:00
Vincent Lecrubier
44942dffb5 Update Zoomify.js 2019-02-18 10:04:02 +00:00
Andreas Hocevar
f7b1fe07d0 Merge pull request #9225 from openlayers/greenkeeper/webpack-4.29.4
Update webpack to the latest version 🚀
2019-02-16 17:46:04 +01:00
greenkeeper[bot]
9a7e5747eb chore(package): update webpack to version 4.29.4 2019-02-15 16:07:50 +00:00
Frédéric Junod
e4264b94ed Merge pull request #9224 from fredj/less_vendor_prefix
Remove vendor prefix for the 'transform' CSS property and fullscreen api
2019-02-15 16:09:24 +01:00
Frederic Junod
e9ecea3bb7 Remove 'moz' prefix for the Full Screen API
Browser support: https://caniuse.com/#feat=fullscreen
2019-02-15 14:37:49 +01:00
Frederic Junod
391dfc5025 Remove vendor prefix for the 'transform' CSS property
Browser support: https://caniuse.com/#feat=transforms2d
2019-02-15 14:29:15 +01:00
Frédéric Junod
3da449d77e Merge pull request #9222 from fredj/devDependencies
Update all dev dependencies
2019-02-15 12:49:08 +01:00
greenkeeper[bot]
7a66dc5774 chore(package): update yargs to version 13.2.0 2019-02-15 10:36:02 +01:00
greenkeeper[bot]
74f7b1974d chore(package): update @types/topojson-specification to version 1.0.1 2019-02-15 10:35:44 +01:00
greenkeeper[bot]
6b94aaa424 chore(package): update @types/arcgis-rest-api to version 10.4.4 2019-02-15 10:33:42 +01:00
greenkeeper[bot]
c4ed80dd92 chore(package): update @types/geojson to version 7946.0.6 2019-02-15 10:32:38 +01:00
greenkeeper[bot]
7a73638fb2 chore(package): update ol-mapbox-style to version 3.7.1 2019-02-15 10:32:21 +01:00
greenkeeper[bot]
0ece4a7dae chore(package): update webpack-dev-middleware to version 3.5.2 2019-02-15 10:31:59 +01:00
greenkeeper[bot]
6fe8b5c49d chore(package): update puppeteer to version 1.12.2 2019-02-15 10:30:37 +01:00
greenkeeper[bot]
2ba4be2661 chore(package): update webpack-cli to version 3.2.3 2019-02-15 10:30:15 +01:00
Andreas Hocevar
a2a3bda5c9 Merge pull request #9221 from ahocevar/remove-unused-sortbyzindex
Remove unused sortByZIndex function
2019-02-15 09:45:26 +01:00
Frédéric Junod
f28b7c7bcf Merge pull request #9220 from fredj/rm_extra_canvas_resize
Don't resize/clear the vector renderer canvas
2019-02-15 09:34:57 +01:00
Frédéric Junod
27d025327f Merge pull request #9217 from fredj/f_9211
Don't use loadImage function to avoid infinite loading loop
2019-02-15 08:47:59 +01:00
ahocevar
020f513ed5 Remove unused sortByZIndex function 2019-02-14 17:40:38 +01:00
Frederic Junod
30fb0b1ed1 Don't resize/clear the vector renderer canvas
Already done in the `renderFrame` function
2019-02-14 13:49:31 +01:00
Frederic Junod
40605d7c53 Don't use loadImage function to avoid infinite loading loop 2019-02-14 13:47:52 +01:00
Frédéric Junod
666c14d190 Merge pull request #9212 from fredj/cleanup
Remove unnecessary type cast
2019-02-14 09:41:15 +01:00
Andreas Hocevar
0a005527e7 Merge pull request #9207 from openlayers/greenkeeper/yargs-13.1.0
Update yargs to the latest version 🚀
2019-02-14 07:46:17 +01:00
Frederic Junod
c0a860a31f Remove unnecessary type cast 2019-02-13 11:42:22 +01:00
greenkeeper[bot]
3e82da4beb chore(package): update yargs to version 13.1.0 2019-02-12 06:35:53 +00:00
Andreas Hocevar
b71d7773d3 Merge pull request #9201 from ahocevar/drawable-child-range
Only consider child range with drawable tiles
2019-02-11 11:05:20 +01:00
Andreas Hocevar
7d5b2d8c3b Merge pull request #9204 from ahocevar/intellisense-notes-addendum
Add missing 'include' section
2019-02-10 22:50:32 +01:00
ahocevar
dc298b8895 Add missing 'include' section 2019-02-10 22:44:22 +01:00
Andreas Hocevar
693c763710 Merge pull request #9203 from ahocevar/intellisense-notes
Only promise what we can deliver regarding IntelliSense
2019-02-10 22:42:42 +01:00
Andreas Hocevar
680f3cde3c Merge pull request #9200 from ahocevar/vectorimage-note
Add upgrade note about renderMode: 'image' for vector layers
2019-02-10 09:55:25 +01:00
ahocevar
3ef6635c09 Only promise what we can deliver regarding IntelliSense 2019-02-10 09:10:01 +01:00
ahocevar
8028ce3ac5 Add upgrade note about renderMode: 'image' for vector layers 2019-02-10 08:47:16 +01:00
ahocevar
3557a13147 Only consider child range with drawable tiles 2019-02-09 19:35:31 +01:00
Frédéric Junod
f6e625f21a Merge pull request #9197 from fredj/cleanup
Remove unused opt_this param
2019-02-08 08:43:31 +01:00
Andreas Hocevar
d1c71c3c61 Merge pull request #9196 from ahocevar/pointresolution-scaleline
getPointResolution returns resolution in projection units
2019-02-07 15:32:32 +01:00
Frederic Junod
6f8ffddace Remove opt_this param in manageTilePyramid function 2019-02-07 13:18:52 +01:00
Frederic Junod
438736068e Remove opt_this param in forEach function 2019-02-07 13:07:36 +01:00
Andreas Hocevar
bfe8ee5309 Merge pull request #9195 from openlayers/greenkeeper/handlebars-4.1.0
Update handlebars to the latest version 🚀
2019-02-07 12:50:05 +01:00
ahocevar
703dadfcde Fix ScaleLine control now that getPointResolution works correctly 2019-02-07 12:26:18 +01:00
ahocevar
fecb8de769 getPointResolution returns proj units 2019-02-07 12:25:37 +01:00
ahocevar
b3bc78daec Provide center in the correct projection 2019-02-07 12:23:45 +01:00
ahocevar
d24ae3c2ac Fix expectation for degree point resolution 2019-02-07 12:22:18 +01:00
Frederic Junod
2879c0b6ad Remove opt_this param in forDataAtCoordinate function 2019-02-07 11:51:28 +01:00
greenkeeper[bot]
5ef1b51c02 chore(package): update handlebars to version 4.1.0 2019-02-07 10:45:15 +00:00
Frederic Junod
41d231a4c7 Remove opt_this param in forEachTileCoordParentTileRange function
The function is only called by `ol/renderer/canvas/TileLayer` and `opt_this` was always `null`.
2019-02-07 11:43:52 +01:00
Frédéric Junod
f4fe1babd2 Merge pull request #9194 from openlayers/greenkeeper/webpack-4.29.3
chore(package): update webpack to version 4.29.3
2019-02-07 11:08:44 +01:00
greenkeeper[bot]
efc85ed0ed chore(package): update webpack to version 4.29.3
Closes #9192
2019-02-07 09:29:38 +00:00
Andreas Hocevar
be16c2357d Merge pull request #9190 from romanzoller/multi-polygon-area
Fix MultiPolygon area calculation
2019-02-05 20:43:37 +01:00
Andreas Hocevar
88c213078e Merge pull request #9179 from gberaudo/allow_image_declutter
Allow declutter with image render mode
2019-02-05 20:29:15 +01:00
Roman Zoller
ee57b197e5 Fix offset passed from linearRingssAreOriented to linearRingsAreOriented
The offset needs to be set to the end of the previous Polygon,
see `offset = orientLinearRings(...)` in function orientLinearRingsArray

Fixes #9189
2019-02-05 17:56:52 +01:00
Roman Zoller
2c859b1196 Rename misnamed functions in geom/flat/orient
- Rename linearRingIsOriented => linearRingsAreOriented
  The function checks all linear rings of a Polygon, so
  the plural "rings" is more appropriate
- Rename linearRingsAreOriented => linearRingssAreOriented
  The double s is appropriate because the check is done for
  all Polygons of a MultiPolygon

This commit restores the function names from OpenLayers v4,
they were changed (wrongly IMHO) in #7820.
2019-02-05 17:49:21 +01:00
Roman Zoller
c4be22b1b6 Add failing test for MultiPolygon#getArea 2019-02-05 17:48:42 +01:00
Guillaume Beraudo
b00b877ca1 Update upgrade notes 2019-02-05 17:25:00 +01:00
Guillaume Beraudo
168edac4a6 Allow declutter with image render mode
Using declutter in image render mode is legitimate: each tile is
decluttered, avoiding symbol/text overlaps.
2019-02-05 17:25:00 +01:00
Frédéric Junod
caa9153dd0 Merge pull request #9187 from fredj/cleanup
Remove unnecessary type cast
2019-02-05 16:36:16 +01:00
Frederic Junod
ba02320fcc Remove unused layerState param 2019-02-05 11:46:12 +01:00
Frederic Junod
427c73ddf9 Remove unnecessary type cast
`npx tsc` output is the same before and after the changes.
2019-02-05 11:46:12 +01:00
Frédéric Junod
2c3ffdfdf8 Merge pull request #9186 from fredj/cleanup
Simplify typing in EsriJSON format
2019-02-05 10:57:36 +01:00
Frederic Junod
97b21145c4 Simplify typing in EsriJSON format 2019-02-05 10:27:26 +01:00
Frédéric Junod
2428c0984e Merge pull request #9161 from fredj/template_type
Use type template for the source type of layers
2019-02-05 10:07:52 +01:00
Frédéric Junod
e0aad192af Merge pull request #9184 from fredj/devDependencies
Update all dev dependencies
2019-02-05 09:22:03 +01:00
Frédéric Junod
e34806ad70 Merge pull request #9185 from openlayers/greenkeeper/webpack-4.29.1
Update webpack to the latest version 🚀
2019-02-05 09:21:22 +01:00
greenkeeper[bot]
a0fde2b24d chore(package): update webpack to version 4.29.1 2019-02-04 18:43:37 +00:00
Frederic Junod
abfe6b4359 Update jsdoc-plugin-typescript to version 1.0.7 2019-02-04 16:27:25 +01:00
greenkeeper[bot]
acd8c34535 chore(package): update terser-webpack-plugin to version 1.2.2 2019-02-04 16:14:46 +01:00
greenkeeper[bot]
1a1c7dec87 chore(package): update puppeteer to version 1.12.1 2019-02-04 16:14:36 +01:00
greenkeeper[bot]
5e4ee77968 chore(package): update eslint to version 5.13.0 2019-02-04 16:14:28 +01:00
greenkeeper[bot]
9f54e9cb4d chore(package): update ol-mapbox-style to version 3.6.4 2019-02-04 16:14:17 +01:00
Andreas Hocevar
83e7e3ad5c Merge pull request #9178 from ahocevar/sources-for-typescript
Sources in npm package for TypeScript support
2019-02-04 13:55:04 +01:00
Andreas Hocevar
47adce4786 Merge pull request #9181 from ahocevar/test-removefeature-on-point
Add test to verify that removefeature is triggered
2019-02-04 13:02:35 +01:00
ahocevar
ce7a1b4365 Add test to verify that removefeature is triggered 2019-02-04 12:46:51 +01:00
Frederic Junod
0b53a3229b Remove unneeded type cast 2019-02-04 09:58:49 +01:00
Frederic Junod
5318d52036 Use type template for the source type of layers 2019-02-04 09:58:48 +01:00
ahocevar
686e493288 Document TypeScript configuration in the README 2019-02-03 23:46:37 +01:00
ahocevar
5e16bae134 Provide sources in ol package 2019-02-03 23:46:37 +01:00
Andreas Hocevar
53fc082fc2 Merge pull request #9173 from ahocevar/render-event-docs
Document the correct render events
2019-01-31 15:50:39 +01:00
ahocevar
47679a9686 Document the correct render events 2019-01-31 14:05:10 +01:00
Andreas Hocevar
b76626071b Merge pull request #9167 from ahocevar/jsdoc-fixes
JSDoc fixes
2019-01-30 12:44:08 +01:00
ahocevar
37eb6de37d JSDoc fixes 2019-01-30 09:42:20 +01:00
Marc Jansen
5e7cf6da66 Merge pull request #9164 from KlausBenndorf/doc
event chain documentation
2019-01-28 21:27:36 +01:00
simonseyock
c18a833880 event chain documentation 2019-01-28 20:50:33 +01:00
Frédéric Junod
8674da9a3e Merge pull request #9157 from fredj/rm_inherits
Remove deprecated inherits function
2019-01-28 11:01:07 +01:00
Andreas Hocevar
61b20da539 Merge pull request #9152 from ahocevar/vectortile-optimizations
Vector tile optimizations
2019-01-25 17:03:42 +01:00
Frederic Junod
1ba85a11e9 Change 'cacheSize' description in typedef 2019-01-25 16:50:17 +01:00
ahocevar
59cf0c31b6 Allow bigger cache now that we do less clipping 2019-01-25 16:50:12 +01:00
ahocevar
4f487c4df1 Update comment 2019-01-25 16:49:35 +01:00
ahocevar
6e58796f66 Do not keep potentially unused tiles in the render queue 2019-01-25 16:49:34 +01:00
ahocevar
26ff8899c3 Do not load new tiles when low on frame budget 2019-01-25 16:49:34 +01:00
Frederic Junod
fe5da2e160 Remove deprecated inherits function 2019-01-25 16:33:02 +01:00
Andreas Hocevar
862553509a Merge pull request #9154 from ahocevar/screen-self
Safer check for window.screen
2019-01-25 13:55:45 +01:00
ahocevar
164635f28c Safer check for window.screen 2019-01-25 12:01:36 +01:00
Andreas Hocevar
3e6425db86 Merge pull request #9150 from ahocevar/no-clipping
Avoid clipping when rendering to tiles that don't exceed the clip extent
2019-01-24 10:33:40 +01:00
ahocevar
09a1c1ef1b Avoid clipping when rendering to tiles that don't exceed the clip extent 2019-01-24 09:09:22 +01:00
Andreas Hocevar
f74e56c939 Merge pull request #9149 from ahocevar/label-consumers
Keep track of used labels
2019-01-24 09:07:32 +01:00
ahocevar
592b6cf362 Keep track of used labels 2019-01-23 21:52:22 +01:00
Andreas Hocevar
ba0ffea262 Merge pull request #9148 from openlayers/greenkeeper/karma-4.0.0
Update karma to the latest version 🚀
2019-01-23 20:33:49 +01:00
greenkeeper[bot]
0a1fe16ea2 chore(package): update karma to version 4.0.0 2019-01-23 18:21:26 +00:00
Frédéric Junod
ea45068335 Merge pull request #9131 from fredj/opacity_cmp
Don't use strict comparison with style.opacity
2019-01-23 08:32:11 +01:00
Tim Schaub
63c079257f Merge pull request #9013 from weskamm/scalebar
Added scalebar option to ol.control.scaleline
2019-01-22 18:04:08 -07:00
Frederic Junod
8dbe8bc34e Parse the opacity from style as float 2019-01-22 12:48:14 +01:00
Frederic Junod
af8a22d34d Keep two digits for the opacity value in layer state 2019-01-22 12:47:34 +01:00
Andreas Hocevar
ab04df8f9d Merge pull request #9133 from ahocevar/smart-tile-cache
Reduce memory footprint of tiles and labels
2019-01-22 10:46:38 +01:00
ahocevar
e37734826c Release canvas memory faster 2019-01-21 23:04:31 +01:00
ahocevar
b6d115d868 Make tile cache smaller and screen size dependant 2019-01-21 22:35:48 +01:00
ahocevar
a5d93117ed Also consider lower resolution tiles as used tiles 2019-01-21 22:34:01 +01:00
Frédéric Junod
2078b5d355 Merge pull request #9129 from fredj/tmp_array
Reduce garbage generation
2019-01-21 14:29:44 +01:00
Andreas Hocevar
1d4a767f86 Merge pull request #9128 from ahocevar/less-render-cycles
Use less render cycles for vector tile layers
2019-01-21 14:14:39 +01:00
Frederic Junod
89ca596eaf Reduce garbage generation 2019-01-21 10:18:19 +01:00
Johannes Weskamm
347e721025 Fixup prop evaluation 2019-01-21 09:33:29 +01:00
ahocevar
cd6d195e3f Render whole image queue in hifi mode to avoid extra render cycles 2019-01-20 23:44:28 +01:00
ahocevar
a0de38c1f3 Use a more resource demanding mapbox style 2019-01-20 23:43:01 +01:00
Andreas Hocevar
0daa27eab3 Merge pull request #9124 from openlayers/greenkeeper/sinon-7.2.3
Update sinon to the latest version 🚀
2019-01-20 19:47:31 +01:00
Andreas Hocevar
576fc015a6 Merge pull request #9127 from openlayers/greenkeeper/webpack-4.29.0
Update webpack to the latest version 🚀
2019-01-20 19:47:07 +01:00
greenkeeper[bot]
4f51914994 chore(package): update webpack to version 4.29.0 2019-01-20 17:46:30 +00:00
greenkeeper[bot]
3290559c1f chore(package): update sinon to version 7.2.3 2019-01-19 14:11:43 +00:00
Frédéric Junod
be03ac4c50 Merge pull request #9120 from fredj/update_dev_deps
Update all dev dependencies
2019-01-18 08:31:49 +01:00
Frederic Junod
2a07db201f Update typescript to version 3.2.2 2019-01-17 15:08:22 +01:00
greenkeeper[bot]
13cdb8365a chore(package): update webpack-dev-middleware to version 3.5.1 2019-01-17 15:07:08 +01:00
greenkeeper[bot]
46494c79cc chore(package): update @types/geojson to version 7946.0.5 2019-01-17 15:06:10 +01:00
greenkeeper[bot]
d0a9003b55 chore(package): update ol-mapbox-style to version 3.6.2 2019-01-17 15:05:47 +01:00
greenkeeper[bot]
fde58ee2a2 chore(package): update webpack-cli to version 3.2.0 2019-01-17 15:04:56 +01:00
greenkeeper[bot]
0c63112332 chore(package): update terser-webpack-plugin to version 1.2.1 2019-01-17 15:03:27 +01:00
greenkeeper[bot]
1df40fe3d6 chore(package): update webpack-dev-server to version 3.1.14 2019-01-17 15:03:01 +01:00
greenkeeper[bot]
3878190b12 chore(package): update karma to version 3.1.4 2019-01-17 15:02:21 +01:00
greenkeeper[bot]
e4fa3f0520 chore(package): update url-polyfill to version 1.1.3 2019-01-17 15:01:32 +01:00
greenkeeper[bot]
48833d60e3 chore(package): update puppeteer to version 1.11.0 2019-01-17 15:01:10 +01:00
greenkeeper[bot]
17ab5c2084 chore(package): update fs-extra to version 7.0.1 2019-01-17 15:00:43 +01:00
greenkeeper[bot]
c05bb30183 chore(package): update front-matter to version 3.0.1 2019-01-17 14:59:37 +01:00
greenkeeper[bot]
2f0723f557 chore(package): update copy-webpack-plugin to version 4.6.0 2019-01-17 14:59:10 +01:00
greenkeeper[bot]
5dfda3f4bd chore(package): update buble to version 0.19.6 2019-01-17 14:58:46 +01:00
Frédéric Junod
62f270a172 Merge pull request #9118 from fredj/format_read_no_event
Don't dispatch change events when reading features
2019-01-15 09:49:23 +01:00
Andreas Hocevar
2364a75f20 Merge pull request #9114 from ahocevar/extent-garbage
Faster extent calculation with less garbage
2019-01-15 09:18:41 +01:00
Frederic Junod
787fd4aa44 Don't dispatch change events when reading features
Based on initial work by https://github.com/Jinkwon
2019-01-15 09:08:15 +01:00
ahocevar
5389e9675c Faster extent calculation with less garbage 2019-01-15 00:30:39 +01:00
Andreas Hocevar
aa0bc8175b Merge pull request #9109 from JosephSamela/master
Make package.json valid json object
2019-01-14 18:05:23 +01:00
Andreas Hocevar
62288139d6 Clarify where package.json is created and how start and build are added 2019-01-14 18:00:22 +01:00
Joseph Samela
af74a476dc show full package.json + emphasize npm init 2019-01-14 10:24:32 -05:00
Andreas Hocevar
79f5283ce9 Merge pull request #9112 from ahocevar/preparetile-listener
Properly unregister prepareTile listeners
2019-01-14 10:58:42 +01:00
ahocevar
90c8fc7888 Properly unregister prepareTile listeners 2019-01-13 23:09:24 +01:00
Vincent Lecrubier
4d54ad0daf Update Zoomify.js 2019-01-12 13:44:17 +01:00
Vincent Lecrubier
37b1cca027 Add TilePixelRatio to Zoomify 2019-01-12 13:23:18 +01:00
Joseph Samela
7f0fc2a821 Make package.json valid json object 2019-01-11 13:43:22 -05:00
Andreas Hocevar
e6ca241a27 Merge pull request #9103 from ahocevar/fix-examples
Make examples more user friendly
2019-01-11 18:36:59 +01:00
ahocevar
f0d3f80663 Support scoped packages as dependencies 2019-01-11 18:16:23 +01:00
Andreas Hocevar
6258b6efc4 Merge pull request #9108 from openlayers/greenkeeper/webpack-4.28.4
Update webpack to the latest version 🚀
2019-01-11 08:46:36 +01:00
ahocevar
138cc55b34 Add Edit button for editing in codesandbox 2019-01-10 22:14:05 +01:00
greenkeeper[bot]
4d3968d35b chore(package): update webpack to version 4.28.4 2019-01-10 19:34:11 +00:00
ahocevar
9372bc9157 Add package.json source 2019-01-10 18:31:26 +01:00
Andreas Hocevar
4e8048cbd6 Merge pull request #9107 from webgeodatavore/fix-cgiar-csi
Fix cgiar csi URL due to #9106
2019-01-10 15:57:48 +01:00
ThomasG77
919cc85714 Fix cgiar csi URL due to #9106 2019-01-10 14:47:57 +01:00
ahocevar
f368fa1a28 Improve layout 2019-01-09 21:50:50 +01:00
ahocevar
c4c6f84bca Separate html and js example code 2019-01-09 21:50:49 +01:00
Andreas Hocevar
c8df836ce1 Merge pull request #9058 from ahocevar/slim-vectorimagetile
Move all tile loading from the VectorImageTile to the source
2019-01-09 13:58:13 +01:00
ahocevar
54f48e9c03 Re-add missing import after rebase 2019-01-09 13:45:01 +01:00
ahocevar
0f3c0d1af4 Rename VectorImageTile to VectorRenderTile 2019-01-09 13:45:01 +01:00
ahocevar
32696638d2 Simplify vector tile code 2019-01-09 13:45:01 +01:00
ahocevar
ab797b7160 Let source set the key, like other sources do 2019-01-08 13:44:20 +01:00
ahocevar
523d3a4e8c Let the source load source tiles 2019-01-08 13:44:19 +01:00
Frédéric Junod
831c7621c7 Merge pull request #9102 from openlayers/f_9100
Use dom-to-image library in export-pdf example
2019-01-07 13:08:31 +01:00
Frederic Junod
d426e80c6b Use dom-to-image library in export-pdf example
fixes #9100
2019-01-07 10:35:56 +01:00
Frédéric Junod
cf6b1ca1cc Merge pull request #9072 from fredj/rm_layerStates
Remove 'layerStates' property from the FrameState
2019-01-07 10:11:52 +01:00
Andreas Hocevar
0f3e410428 Merge pull request #9101 from ahocevar/load-tiles-while-animating-and-interacting
Always load tiles while animating and interacting
2019-01-07 10:11:08 +01:00
ahocevar
2e21b9f975 Always load tiles while animating and interacting 2019-01-06 21:29:24 +01:00
Andreas Hocevar
ad794cea14 Merge pull request #9099 from ahocevar/tracking-opt-out
Allow users to opt out of tracking
2019-01-06 19:41:46 +01:00
ahocevar
56a60631bc Allow users to opt out of tracking 2019-01-02 07:36:25 +01:00
Andreas Hocevar
3e1fce0e22 Merge pull request #9098 from ahocevar/jsdoc-plugin
External types bugfix for jsdoc-plugin-typescript
2019-01-02 07:10:31 +01:00
ahocevar
c2ffba1fda External types bugfix for jsdoc-plugin-typescript 2019-01-02 07:05:46 +01:00
Tim Schaub
a94632376c Merge pull request #9095 from openlayers/greenkeeper/marked-0.6.0
Update marked to the latest version 🚀
2019-01-01 08:16:11 -07:00
greenkeeper[bot]
ad84c37c86 chore(package): update marked to version 0.6.0 2019-01-01 00:51:39 +00:00
Andreas Hocevar
06e30e8884 Merge pull request #9083 from ahocevar/fix-draw-condition
Reset lastDragTime when condition is not met
2018-12-31 11:24:33 +01:00
Tim Schaub
511e580c76 Merge pull request #9090 from jahow/add-webgl-points-example
Add texture & color to the WebGL points renderer
2018-12-29 22:12:12 -07:00
Tim Schaub
117f0d21fc Merge pull request #9092 from openlayers/greenkeeper/webpack-4.28.3
Update webpack to the latest version 🚀
2018-12-29 21:53:34 -07:00
Andreas Hocevar
ba49f2d2db Merge pull request #9091 from jahow/fix-heatmap-ie
Fix heatmap example in IE
2018-12-29 17:18:09 +01:00
greenkeeper[bot]
b22b62f647 chore(package): update webpack to version 4.28.3 2018-12-29 12:53:11 +00:00
Olivier Guyot
831c23d212 Fix heatmap example for IE 2018-12-28 16:24:56 +01:00
Olivier Guyot
33c717e159 Use a cleaner way to create a webgl context 2018-12-28 16:10:38 +01:00
jahow
fad7c7edb1 Added a new example for webgl icons rendering 2018-12-28 15:53:08 +01:00
Olivier Guyot
62c7a49943 Webgl points / added a texture option & improved doc 2018-12-28 15:53:07 +01:00
Olivier Guyot
0acfd7ab59 WebGL points / Added a color attribute 2018-12-28 15:53:07 +01:00
Andreas Hocevar
435ef3070c Merge pull request #9089 from ThomasG77/fix-rawgit
Replace rawgit with jsdelivr due to #9082 comment
2018-12-27 19:22:52 +01:00
ThomasG77
a7305be824 Replace rawgit with jsdelivr due to #9082 comment 2018-12-27 13:20:19 +01:00
Andreas Hocevar
76b31be9fc Merge pull request #9085 from openlayers/greenkeeper/webpack-4.28.2
Update webpack to the latest version 🚀
2018-12-22 19:42:16 +01:00
greenkeeper[bot]
c35cc93ade chore(package): update webpack to version 4.28.2 2018-12-22 13:53:38 +00:00
Andreas Hocevar
8978d86f35 Merge pull request #9079 from ahocevar/fullscreen-event
Listen to all fullscreen event types
2018-12-21 22:27:55 +01:00
ahocevar
409c962caf Reset lastDragTime when condition is not met 2018-12-21 22:26:05 +01:00
Frederic Junod
a0f15e1eb6 Only schedule the unused layers renderer removal when it's needed 2018-12-21 10:37:03 +01:00
Andreas Hocevar
d8156577c9 Merge pull request #9080 from openlayers/greenkeeper/webpack-4.28.1
Update webpack to the latest version 🚀
2018-12-21 00:13:40 +01:00
greenkeeper[bot]
3b57de3c7a chore(package): update webpack to version 4.28.1 2018-12-20 22:21:40 +00:00
ahocevar
9cfb46f7a4 Listen to all fullscreen event types 2018-12-20 08:39:24 +01:00
Andreas Hocevar
100e69e286 Merge pull request #9076 from openlayers/greenkeeper/webpack-4.28.0
Update webpack to the latest version 🚀
2018-12-19 15:07:13 +01:00
Frederic Junod
3193de0906 Only schedule the icon cache expire when it's needed 2018-12-19 14:34:22 +01:00
greenkeeper[bot]
372cb52f83 chore(package): update webpack to version 4.28.0 2018-12-19 13:12:23 +00:00
Frederic Junod
a4fe067aad Create a layer state map instead of an array of uids 2018-12-19 12:45:39 +01:00
Andreas Hocevar
6967e5b60b Merge pull request #9070 from ludvigeriksson/remove-point-return-value
Modify.removePoint returns true only when a vertex was removed
2018-12-18 21:57:02 +01:00
Frederic Junod
016d738269 Move frameState test on top in removeUnusedLayerRenderers_ 2018-12-18 13:34:19 +01:00
Frederic Junod
5d1c27d05d Don't create an array of managed layers 2018-12-18 13:17:00 +01:00
Frederic Junod
1750ff43e0 Always schedule unused layers removal function 2018-12-18 09:49:47 +01:00
Frederic Junod
5195adea85 Remove 'layerStates' property from the FrameState 2018-12-18 09:49:38 +01:00
Frédéric Junod
348186e2f8 Merge pull request #9068 from fredj/mvt_types
Use 'PBF' type instead of 'Object' in ol/format/MVT
2018-12-17 17:02:11 +01:00
Ludvig Eriksson
412d9a9713 Modify.removePoint returns true only when a vertex was removed 2018-12-17 16:02:16 +01:00
Frederic Junod
3b57f6693c Use 'PBF' type instead of 'Object' 2018-12-17 10:30:48 +01:00
Frederic Junod
483c442621 Remove suppress jsdoc tags 2018-12-17 09:55:28 +01:00
Frédéric Junod
b4bd447d34 Merge pull request #9066 from fredj/transformGeometryWithOptions
Rework transformWithOptions
2018-12-17 08:29:58 +01:00
Frederic Junod
d838de32b7 Rework transformWithOptions
Create one function per input/output type: `transformGeometryWithOptions` and `transformExtentWithOptions`.
2018-12-16 08:28:26 +01:00
Frédéric Junod
b546eafeae Merge pull request #9064 from fredj/rm_atlas
Remove Atlas, AtlasManager and getChecksum functions
2018-12-14 14:56:23 +01:00
Frederic Junod
2e1ab8234e Add note in upgrade-notes about the AtlasManager removal 2018-12-14 13:00:35 +01:00
Frederic Junod
0ec769c234 Remove getChecksum functions 2018-12-14 13:00:35 +01:00
Frederic Junod
1bb1e3c542 Remove Atlas and AtlasManager 2018-12-14 13:00:35 +01:00
Andreas Hocevar
f948577a1a Merge pull request #9060 from ahocevar/coordinate-convenience
Avoid unexpected behavior when passing string coordinates
2018-12-14 09:36:12 +01:00
Frédéric Junod
193749f4fd Merge pull request #9063 from oterral/master
Fix module name
2018-12-14 09:15:11 +01:00
Olivier Terral
6858a5cde7 Fix module name 2018-12-14 08:57:00 +01:00
ahocevar
80ebb8142c Avoid unexpected behavior when passing string coordinates 2018-12-13 19:07:12 +01:00
Frédéric Junod
e426af29c2 Merge pull request #9056 from fredj/rm_typecast
Remove typecast for object literals
2018-12-12 16:25:41 +01:00
Frédéric Junod
68d4d244f3 Merge pull request #9057 from fredj/feature_like
Use FeatureLike typedef
2018-12-12 16:24:52 +01:00
Frederic Junod
39a21f177d Use FeatureLike typedef 2018-12-12 15:03:54 +01:00
Frederic Junod
29702e3750 Remove type cast in ol/structs/LRUCache 2018-12-12 14:48:24 +01:00
Frederic Junod
056568c936 Remove type cast in ol/render/canvas/TextBuilder 2018-12-12 14:47:46 +01:00
Frederic Junod
d2cae9d3b7 Remove type cast in ol/style/AtlasManager 2018-12-12 14:45:51 +01:00
Frederic Junod
701e19c1c9 Remove type cast in ol/interaction/Snap 2018-12-12 14:43:51 +01:00
Frederic Junod
4010a644c0 Remove type cast in ol/format/EsriJSON 2018-12-12 14:41:12 +01:00
Frederic Junod
480b064f5d Remove type cast in ol/events 2018-12-12 14:29:18 +01:00
Frédéric Junod
daa92c105d Merge pull request #9055 from fredj/less_typecast
Remove type cast in ol.View
2018-12-12 14:10:59 +01:00
Frederic Junod
b1602877d9 Remove type cast in ol.View 2018-12-12 12:54:41 +01:00
Andreas Hocevar
0cda18f58a Merge pull request #9008 from ahocevar/decouple-group-creation
Decouple render instruction creation from rendering
2018-12-07 14:33:54 +01:00
Frédéric Junod
89af80241e Merge pull request #9045 from openlayers/rm_CANVAS_LINE_DASH
Remove CANVAS_LINE_DASH from ol/has
2018-12-07 13:54:19 +01:00
Frederic Junod
b3520f8217 Remove CANVAS_LINE_DASH from ol/has
Test if `context.setLineDash` is defined instead.
2018-12-07 13:15:23 +01:00
Frédéric Junod
bbbed30848 Merge pull request #9044 from openlayers/indent
Fix comments indentation
2018-12-07 13:06:27 +01:00
Frederic Junod
1be17e44a2 Fix comments indentation 2018-12-07 11:57:58 +01:00
Frédéric Junod
d0f03f1257 Merge pull request #9043 from openlayers/examples_types
Fix type notation in examples
2018-12-07 11:15:17 +01:00
Frederic Junod
457e7b96dd Remove extra param to function 2018-12-07 11:00:05 +01:00
Frederic Junod
759b317707 Fix type notation in examples 2018-12-07 10:55:26 +01:00
Andreas Hocevar
30947c0de8 Merge pull request #9041 from jahow/fix-webgl-ff-bug
Reworked the Webgl Heatmap layer & associated utilities
2018-12-07 10:28:44 +01:00
Frederic Junod
cd3e65e3df Remove unneeded type cast in examples 2018-12-07 09:55:09 +01:00
Frédéric Junod
76bd75ebb1 Merge pull request #9042 from openlayers/opt_onBoxEnd
Change onBoxEnd property in DragBox options to optional
2018-12-07 09:36:27 +01:00
Olivier Guyot
27b0cf18e7 Update default shaders in documentation of webgl classes 2018-12-07 09:32:52 +01:00
Frederic Junod
bade38ecc8 Change onBoxEnd property in DragBox options to optional 2018-12-07 09:17:34 +01:00
Olivier Guyot
8e4c66a49e Regenerate new test renders & remove the --ignore-gpu-blacklist flag 2018-12-07 09:09:19 +01:00
Olivier Guyot
2c4a959e55 Generally fixed the webgl heatmap layer
Things done:
- stay closer to the original rendering in canvas
- get rid of the intermediary blur step
- use the new callbacks in the webgl points renderer
- premultiply alpha in the last postprocessing step
2018-12-07 09:02:02 +01:00
Olivier Guyot
b532a489d4 Webgl points / fix weird glitches by premultiplying alpha 2018-12-07 09:02:02 +01:00
Olivier Guyot
f177a2bcd5 Simple handling of layer opacity in webgl points layer
Now the layer opacity is simply handled by a CSS property on the layer DOM element. As such it does not have to be
taken into account in shaders.
2018-12-07 09:02:02 +01:00
Olivier Guyot
a6989af00a Webgl points layer / added callbacks for attributes
Now opacity, rotateWithView and tex coords can be set with callbacks per feature.
2018-12-07 08:57:12 +01:00
Olivier Guyot
2367fbb1ea Webgl / do not enable missing attributes
Some expected attributes might not end up in the compiled shader. In this case, skip calling enableVertexAttrib
2018-12-07 08:57:03 +01:00
Andreas Hocevar
4ce5379a4b Merge pull request #9039 from OSHistory/tsFunctionReturnVoid
Add ': void' to non returning functions (error TS7014)
2018-12-07 07:58:40 +01:00
Andreas Hocevar
1c4cfc9559 Merge pull request #9024 from ahocevar/imagelayer-events
Add prerender and postrender events for Image layer
2018-12-07 07:46:39 +01:00
Niklas Alt
4bc9216e41 Add ': void' to non returning functions (error TS7014) 2018-12-06 19:57:45 +01:00
Andreas Hocevar
97ab5133a0 Merge pull request #9028 from OSHistory/specifyArrayType
Specify the return array as coordinates
2018-12-06 14:50:47 +01:00
Niklas Alt
d00bfe8fe7 Use generic * for Coordinate array returns 2018-12-06 14:36:33 +01:00
Andreas Hocevar
e4e0e61731 Merge pull request #9037 from openlayers/greenkeeper/webpack-4.27.1
Update webpack to the latest version 🚀
2018-12-05 21:39:57 +01:00
greenkeeper[bot]
88db530c43 chore(package): update webpack to version 4.27.1 2018-12-05 19:36:50 +00:00
Andreas Hocevar
9cf58e412f Merge pull request #9036 from ahocevar/modify-drag-segments
Remove drag segments of removed features
2018-12-05 12:58:33 +01:00
ahocevar
6cabb9dd0b Remove drag segments of removed features 2018-12-05 12:02:35 +01:00
Andreas Hocevar
b71e391e3b Merge pull request #9031 from ludvigeriksson/insertVertexCondition-fix
Call insertVertexCondition only when a vertex acually can be inserted
2018-12-04 13:22:42 +01:00
Andreas Hocevar
e92e03eb1b Merge pull request #9032 from openlayers/greenkeeper/webpack-4.27.0
Update webpack to the latest version 🚀
2018-12-04 13:13:48 +01:00
ahocevar
df59b894b1 Make tile keys stable to avoid TileQueue confusion 2018-12-04 11:09:51 +01:00
ahocevar
6202a0cf05 Bring back interim tiles, but don't block user interaction 2018-12-04 11:09:51 +01:00
greenkeeper[bot]
4a28155f2b chore(package): update webpack to version 4.27.0 2018-12-04 09:52:16 +00:00
Ludvig Eriksson
a50fda5ac8 Call insertVertexCondition only when a vertex acually can be inserted 2018-12-04 09:55:31 +01:00
Andreas Hocevar
56201b9295 Merge pull request #9029 from OSHistory/inheritDoc
Use camel-cased inheritDoc for consistency
2018-12-03 20:48:21 +01:00
Niklas Alt
3ef6e39c26 Use camel-cased inheritDoc for consistency 2018-12-03 20:42:03 +01:00
Niklas Alt
8f7d0c8a4b Specify the return array as coordinates 2018-12-03 20:22:46 +01:00
Andreas Hocevar
fd0e7782ed Merge pull request #9026 from ahocevar/dependencies
Update ol-mapbox-style and jsdoc-plugin-typescript
2018-12-03 06:31:33 +01:00
Andreas Hocevar
3790007226 Merge pull request #9025 from ahocevar/render-event
Remove unused render event
2018-12-03 06:31:03 +01:00
ahocevar
976863c376 Add prerender and postrender events for Image layer 2018-12-02 21:05:20 +01:00
ahocevar
4256932cee Update ol-mapbox-style and jsdoc-plugin-typescript 2018-12-02 17:17:19 +01:00
ahocevar
be52368006 Remove unused render event 2018-12-02 17:13:03 +01:00
Tim Schaub
3944f0e62b Merge pull request #9023 from jahow/fix-webgl-points-layer
Fix webgl PointsLayer not rendering anything
2018-11-30 21:38:43 -07:00
jahow
8bb7d77f68 Update PointsLayer documentation 2018-12-01 00:11:27 +01:00
jahow
55c36b5aab Shader compilation errors are now logged even when the compilation succeeded 2018-12-01 00:03:05 +01:00
jahow
78028893e2 Added missing attributes in PointsLayer
Attributes were used in the shader but not bound to a buffer, which made the
rendering failed in some implementations.
2018-12-01 00:01:55 +01:00
Andreas Hocevar
171f1a5bac Merge pull request #9022 from ahocevar/webgl-performance-caveat
Use WebGL even with major performance caveat
2018-11-30 15:53:27 +01:00
ahocevar
a77ed76443 Use WebGL even with major performance caveat 2018-11-30 14:20:59 +01:00
Andreas Hocevar
e9e804a836 Merge pull request #9020 from ahocevar/remove-superfluous-settileurlfunction
Remove superfluous setTileUrlFunction call
2018-11-30 11:09:46 +01:00
ahocevar
1d243a7f37 Add comments and TODOs 2018-11-29 22:35:46 +01:00
ahocevar
fbf98a44ea Streamline tile preparation and remove unused code 2018-11-29 22:35:46 +01:00
ahocevar
9720db2041 Remove superfluous setTileUrlFunction call 2018-11-29 21:20:35 +01:00
Andreas Hocevar
65a10db432 Merge pull request #9018 from OSHistory/docFixes
Duplicate @property for style and renderOrder
2018-11-29 17:12:43 +01:00
Niklas Alt
e73931a9b2 Duplicate @property for style and renderOrder 2018-11-29 16:51:01 +01:00
Johannes Weskamm
d4c14da4b5 Rename props, localization, fix example 2018-11-29 15:24:41 +01:00
Frédéric Junod
aad836dfb2 Merge pull request #9012 from fredj/misc
Change projection and urls properties in sources options to optional
2018-11-29 07:08:21 +01:00
Johannes Weskamm
97618c8611 Added scalebar option to ol.control.scaleline 2018-11-28 16:25:55 +01:00
Frederic Junod
769d7dd732 Change urls property in TileArcGISRest to optional
The `urls`property is optional if `url` is defined.
2018-11-28 16:00:56 +01:00
Frederic Junod
28bdbeb869 Change projection property in sources options to optional
The `projection` property is not mandatory, the view's projection is used if not provided.
2018-11-28 15:59:47 +01:00
ahocevar
2ce8fa6f10 Render only when we have time, and not during interaction/animation 2018-11-28 14:42:41 +01:00
ahocevar
82e2a84862 Remove interim tile handling for now 2018-11-28 14:42:41 +01:00
ahocevar
43759fd846 Decouple executor group creation from rendering 2018-11-28 14:42:40 +01:00
Tim Schaub
85abe3695a Merge pull request #9010 from fredj/ExecutorGroup_import
Fix ExecutorGroup.js file location in comments
2018-11-27 13:04:37 -07:00
Tim Schaub
74225188f4 Merge pull request #9009 from fredj/revert_9005
Revert "Simplify import path in examples"
2018-11-27 12:58:15 -07:00
Frederic Junod
4caabee792 Fix ExecutorGroup.js file location in comments
`src/ol/render/ExecutorGroup.js` was removed in #9003
2018-11-27 17:13:54 +01:00
Frederic Junod
63de0aefbe Remove '.js' from the imports 2018-11-27 17:00:18 +01:00
Frederic Junod
4a3f70c09b Revert "Simplify import path in examples"
This reverts commit 79c8afdba8.
2018-11-27 16:49:55 +01:00
Frédéric Junod
eaa29b2e63 Merge pull request #9005 from fredj/examples_import
Simplify import path in examples
2018-11-27 13:50:38 +01:00
Frederic Junod
79c8afdba8 Simplify import path in examples
To have the same path (starting with `ol/`, without `.js`) as in the documentation.
The support was added in the webpack config in #8928
2018-11-26 17:18:52 +01:00
Andreas Hocevar
4b784f06e9 Merge pull request #9003 from ahocevar/remove-duplicate-functions
Remove unused Builder/Executor functions and members
2018-11-26 12:10:40 +01:00
Andreas Hocevar
b03a42c81a Merge pull request #9004 from openlayers/greenkeeper/webpack-4.26.1
Update webpack to the latest version 🚀
2018-11-25 23:57:02 +01:00
greenkeeper[bot]
49b1310b19 chore(package): update webpack to version 4.26.1 2018-11-25 21:17:50 +00:00
ahocevar
f4aec3fd01 Remove unused Builder/Executor functions and members 2018-11-25 20:06:37 +01:00
Andreas Hocevar
b71a8aa006 Merge pull request #9002 from openlayers/fix-module-path
Fix module path
2018-11-25 14:51:42 +01:00
Andreas Hocevar
66ec9983b2 Fix module path 2018-11-25 14:19:56 +01:00
Frédéric Junod
4910933a9b Merge pull request #8996 from fredj/image-vector-ratio
Add imageRatio option for VectorImage layers
2018-11-23 14:29:51 +01:00
Tim Schaub
8cea28e102 Add missing full stop in comment
Co-Authored-By: fredj <frederic.junod@camptocamp.com>
2018-11-23 08:24:20 +01:00
Andreas Hocevar
d1df9dae0d Pass baseOptions to parent constructor
Co-Authored-By: fredj <frederic.junod@camptocamp.com>
2018-11-22 10:27:29 +01:00
Frederic Junod
e66a84c897 Add imageRatio option for VectorImage layers 2018-11-22 09:38:08 +01:00
Frédéric Junod
5951e147c0 Merge pull request #8995 from fredj/vec_render_mode
Remove leftover comments and code for 'vector' render mode
2018-11-22 08:44:37 +01:00
Tim Schaub
7b6f86abc7 Merge pull request #8992 from tschaub/tilecoord
Use standard tile coords
2018-11-21 15:18:51 -07:00
Tim Schaub
0f5439e16e Add upgrade notes regarding internal tile coordinates 2018-11-21 11:53:12 -07:00
Tim Schaub
e9a30c5cb7 Use standard tile coords 2018-11-21 11:14:17 -07:00
Tim Schaub
37c987de0a Move quadKey function to the one place it is used 2018-11-21 10:10:51 -07:00
Frederic Junod
cb44775306 Remove leftover comments and code for 'vector' render mode 2018-11-21 16:58:27 +01:00
Frédéric Junod
60b3370bba Merge pull request #8994 from fredj/misc
Set projection property in sources options to optional
2018-11-21 16:52:34 +01:00
Frederic Junod
a8799e1d60 Fix typo 2018-11-21 16:23:54 +01:00
Frederic Junod
087b024a24 Change projection property in sources options to optional
The `projection` property is not mandatory, the view's projection is used if not provided.
2018-11-21 16:23:29 +01:00
Tim Schaub
c6be2c7ff5 Merge pull request #8977 from jahow/add-webgl-rendering-tests
Add WebGL rendering tests & improve the WebGLHelper API
2018-11-20 03:59:06 -08:00
Olivier Guyot
662d9122f5 Use --ignore-gpu-blacklist to fix Webgl rendering in CircleCI 2018-11-20 11:52:32 +01:00
Andreas Hocevar
a137eabc5d Merge pull request #8990 from nicholas-l/remove-unneededCall
[Client] Remove renderFrame
2018-11-20 09:24:06 +01:00
Nicholas L
a9d336d0f1 [Client] Remove renderFrame 2018-11-20 18:52:43 +13:00
Tim Schaub
1133a5bfb7 Merge pull request #8989 from openlayers/greenkeeper/marked-0.5.2
Update marked to the latest version 🚀
2018-11-19 16:30:30 -08:00
greenkeeper[bot]
432ac856b6 chore(package): update marked to version 0.5.2 2018-11-20 00:06:25 +00:00
Tim Schaub
0fd4af670b Merge pull request #8988 from tschaub/measure-and-cache-text-width
Pass along the ability to measure and cache text width
2018-11-19 15:21:49 -08:00
Tim Schaub
8b50c3c6cb Pass along the ability to measure and cache text width 2018-11-19 15:34:48 -07:00
Tim Schaub
e058eb3164 Merge pull request #8987 from tschaub/rendering-updates
Rendering test updates
2018-11-19 13:40:46 -08:00
Tim Schaub
2131cc460c Dash delimited lower case words describe the cases 2018-11-19 14:03:51 -07:00
Tim Schaub
4ff7b0a379 Merge pull request #8983 from openlayers/issue-templates
Add issue templates
2018-11-19 12:53:57 -08:00
Tim Schaub
7036064ffc Add tiles to avoid 404s in rendering tests 2018-11-19 13:50:52 -07:00
Tim Schaub
9863e25f5e Only try to run cases with main.js 2018-11-19 13:49:50 -07:00
Tim Schaub
61baa8a4a2 Merge pull request #8982 from tschaub/stacking
Stacking context for layers, overlays, and controls
2018-11-19 12:49:36 -08:00
Tim Schaub
e4b00be9d6 Add labels to issue templates 2018-11-19 11:37:49 -07:00
Tim Schaub
0c27cee2a6 Add issue templates 2018-11-19 11:26:39 -07:00
Tim Schaub
898c349fbf Stacking contexts for layers, overlays, and controls 2018-11-19 11:00:33 -07:00
Frédéric Junod
5d14666376 Merge pull request #8980 from fredj/cleanup
Change travis references to circleci in doc
2018-11-19 15:53:36 +01:00
Olivier Guyot
0b23e94a2a Fixed internal var name on WebGLPoints renderer. 2018-11-19 13:11:23 +01:00
jahow
6b82cf0b84 Simplified the API of WebGLHelper
Now the shader and program caches are simply arrays of native WebGL created objects.
The WebGLHelper simply takes the sources of the frag and vert shader and produces a program.

This removes 2 classes & reduces the general verbosity of the API.

Also a `getShaderCompilationErrors` was added on `WebGLHelper` to help debug GLSL errors.
2018-11-19 13:11:23 +01:00
Frederic Junod
da8ee157b8 Remove Makefile entry in editorconfig 2018-11-19 13:11:19 +01:00
Frederic Junod
18eef152c4 Change travis references to circleci in doc 2018-11-19 13:09:55 +01:00
Frédéric Junod
066e5b7ed3 Merge pull request #8978 from openlayers/greenkeeper/webpack-4.26.0
Update webpack to the latest version 🚀
2018-11-19 11:40:33 +01:00
greenkeeper[bot]
4b060224f2 chore(package): update webpack to version 4.26.0 2018-11-19 09:34:22 +00:00
jahow
76b1a7f96b Add a rendering test for basic points rendering in webgl. 2018-11-19 09:41:29 +01:00
jahow
d0e0c8fc3a Add rendering test for heatmap layer 2018-11-19 09:41:20 +01:00
Andreas Hocevar
eb700a3c5e Merge pull request #8976 from ahocevar/unscale-tile-canvas
Scale tiles instead of canvas
2018-11-18 20:37:16 +01:00
ahocevar
5cc74ee1d2 Scale tiles instead of canvas 2018-11-18 19:31:14 +01:00
Andreas Hocevar
2eeef29ab2 Merge pull request #8970 from ahocevar/zindex
Fix zIndex positioning
2018-11-18 17:06:55 +01:00
Frédéric Junod
140e8b59bb Merge pull request #8968 from fredj/Object.values
Use Object.values if available
2018-11-18 00:16:01 +01:00
Andreas Hocevar
b4b9b35ef7 Merge pull request #8972 from ahocevar/no-rollup
Remove unused rollup dependency
2018-11-17 23:10:45 +01:00
ahocevar
a4d84b616f Remove unused rollup dependency 2018-11-17 22:03:47 +01:00
ahocevar
366588d07e Avoid layers getting rendered above the overlay container 2018-11-17 18:12:43 +01:00
Frédéric Junod
d030f092a2 Merge pull request #8967 from fredj/ts_checks_fix_webgl
Fix webgl types in ol/webgl/PostProcessingPass
2018-11-17 16:54:20 +01:00
Tim Schaub
ba609a67ba Merge pull request #8969 from tschaub/inverse-transforms
Create and use inverse pixel transforms during render
2018-11-17 16:41:41 +01:00
Tim Schaub
5d528dca3b Target, source arg order for make* transform functions 2018-11-17 16:28:29 +01:00
Tim Schaub
c169fec4a8 Invert and set transform in one step 2018-11-17 16:28:28 +01:00
Tim Schaub
06a0a7f33b Use the inverse pixel transform when clipping and getting pixel data 2018-11-17 16:28:28 +01:00
Tim Schaub
1cc49e0b23 Clearer function name for getting a render pixel 2018-11-17 16:28:28 +01:00
Tim Schaub
af10f6a75c Use the inverse pixel transform in pre/post render events 2018-11-17 16:28:28 +01:00
Tim Schaub
686847f491 Make forward and inverse pixel transforms during render 2018-11-17 16:28:27 +01:00
Tim Schaub
db1f432197 Function for making a scale transform 2018-11-17 16:28:27 +01:00
Tim Schaub
63cf21b668 Dedicated function for inverting a transform without modifying the source 2018-11-17 16:28:27 +01:00
Frederic Junod
4a3a53c725 Use Object.values if available
As `Object.values`, the arguments now can't be `null` or `undefined`.
2018-11-17 14:59:36 +01:00
Frederic Junod
42a8c7983f Fix webgl types in ol/webgl/PostProcessingPass 2018-11-17 11:20:11 +01:00
Frédéric Junod
06ae175cef Merge pull request #8964 from fredj/col_evt_index
Add index to the Collection events
2018-11-17 11:00:19 +01:00
Frédéric Junod
93140d9495 Merge pull request #8915 from fredj/layer_zIndex
Use CSS z-index to order layers
2018-11-17 10:59:54 +01:00
Frédéric Junod
c39471aa93 Merge pull request #8966 from openlayers/greenkeeper/rollup-0.67.3
Update rollup to the latest version 🚀
2018-11-17 10:27:13 +01:00
greenkeeper[bot]
6a5651cc87 chore(package): update rollup to version 0.67.3 2018-11-17 08:46:27 +00:00
Frederic Junod
a64ca2b4bf Use CSS z-index to order layers 2018-11-17 09:03:59 +01:00
Frédéric Junod
97ed71f683 Merge pull request #8963 from openlayers/greenkeeper/rollup-0.67.2
Update rollup to the latest version 🚀
2018-11-17 08:46:15 +01:00
Frederic Junod
6219e31e40 Add index to the Collection events 2018-11-17 08:43:35 +01:00
greenkeeper[bot]
7f55424fda chore(package): update rollup to version 0.67.2 2018-11-17 07:20:16 +00:00
Tim Schaub
a81c2ad995 Merge pull request #8923 from tschaub/composite
Use the composite renderer
2018-11-16 18:42:24 +01:00
ahocevar
c004e9d644 More upgrade notes 2018-11-16 18:38:51 +01:00
Tim Schaub
6c4845a304 Upgrade notes 2018-11-16 18:32:12 +01:00
Tim Schaub
358d86c33e Raster source listens for layer change 2018-11-16 18:10:10 +01:00
ahocevar
95c16cfa11 Fix vector tile renderer test 2018-11-16 17:05:44 +01:00
Tim Schaub
5aa8db15f4 Lint 2018-11-16 16:25:39 +01:00
Tim Schaub
6cfb8f275b Fix magnify example 2018-11-16 16:16:28 +01:00
ahocevar
edbe2316ef Lazily create interim tiles (fixes most tests) 2018-11-16 15:03:28 +01:00
Tim Schaub
d6add33df0 Use map and new method 2018-11-16 14:58:02 +01:00
Tim Schaub
a490c658fb Overscale canvas if sources have non-zero min zoom 2018-11-16 14:57:18 +01:00
Tim Schaub
9eb5808844 Test that postrender is dispatched (again) 2018-11-16 14:57:18 +01:00
Tim Schaub
96437e3875 Test prerender and postrender events for a vector layer 2018-11-16 14:57:18 +01:00
Tim Schaub
3ecc6d60d2 The forEachLayerAtPixel method calls getDataAtPixel for each layer renderer 2018-11-16 14:57:17 +01:00
Tim Schaub
47ecd508fa Test hybrid mode in vt constructor 2018-11-16 14:57:17 +01:00
Frederic Junod
98a780e5f9 Add missing '.js' in import 2018-11-16 14:57:17 +01:00
Tim Schaub
038f122d11 Clip tile layers by extent 2018-11-16 14:57:17 +01:00
ahocevar
73ffda10db Smarter interim tile creation 2018-11-16 14:57:17 +01:00
Tim Schaub
b3bcf7dac1 Add 2% tolerance to vector rendering tests 2018-11-16 14:57:17 +01:00
Tim Schaub
4a3dbb0e24 Use the main map in rendering tests 2018-11-16 14:57:17 +01:00
Florent gravin
90d46cb539 Remove blend-modes example
As we are not doing canvas composition anymore
2018-11-16 14:57:16 +01:00
Florent gravin
7831a591f7 Fix igc example migrating map postcompose event 2018-11-16 14:57:16 +01:00
Florent gravin
1dbe52d738 Fix layer-clipping example using right postrender events 2018-11-16 14:57:16 +01:00
Florent gravin
f73c6fab35 Fix igc example migrating map postcompose event 2018-11-16 14:57:16 +01:00
Florent gravin
eafe1bf8a3 Fix geolocation-orientation example migrating map postcompose event 2018-11-16 14:57:16 +01:00
Florent gravin
039af41af1 Unbind postrender event in feature-move-animation example 2018-11-16 14:57:16 +01:00
Florent gravin
a924834920 Fix feature-animation example migrating map postcompose event 2018-11-16 14:57:15 +01:00
Florent gravin
3bf9a54ed5 Fix dynamic-data example migrating map postcompose event 2018-11-16 14:57:15 +01:00
Florent gravin
91bd144f0e Update post/pre render event doc usage in examples 2018-11-16 14:57:15 +01:00
Florent gravin
160e9e8056 Fix image-filter example using right postrender events 2018-11-16 14:57:15 +01:00
Florent gravin
c5b7c5febb Fix magnify example using right postrender events 2018-11-16 14:57:15 +01:00
Florent gravin
3cba5ffbe2 Fix swipe example using right post/pre render events 2018-11-16 14:57:15 +01:00
Florent gravin
4d54549b5f Fix flight-animation example with postrender event 2018-11-16 14:57:15 +01:00
Florent gravin
45cd573768 Fix layer-spy example using right post/pre render events 2018-11-16 14:57:14 +01:00
Tim Schaub
358f58ba3a Doc for transform toString function 2018-11-16 14:57:14 +01:00
Tim Schaub
cc9b7b6259 Work around a TypeScript issue with inheritdoc 2018-11-16 14:57:14 +01:00
Tim Schaub
5ad73f8bbd Implement getDataAtPixel for all layer renderers 2018-11-16 14:57:14 +01:00
Tim Schaub
832dadb3af Dedicated transforms 2018-11-16 14:57:14 +01:00
Tim Schaub
ac3a1fb953 Dispatch layer changed event when layer needs a re-render 2018-11-16 14:57:13 +01:00
Tim Schaub
7a82904a3b Unused intermediate canvas renderer 2018-11-16 14:57:13 +01:00
Tim Schaub
666f57bd4c Unused transforms 2018-11-16 14:57:13 +01:00
Tim Schaub
32495388b9 Transform origin top left 2018-11-16 14:57:13 +01:00
ahocevar
5bb110f157 Fix render context utility functions and feature-move-animation example 2018-11-16 14:57:13 +01:00
Tim Schaub
aa4237539f Provide a pixel transform from the tile renderer 2018-11-16 14:57:13 +01:00
ahocevar
ee536fb70d Remove unused code and imports 2018-11-16 14:57:12 +01:00
Tim Schaub
bc347e3eb0 Provide a pixel transform to render events 2018-11-16 14:57:12 +01:00
ahocevar
65ceb9264e Remove accidently committed changes 2018-11-16 14:57:12 +01:00
ahocevar
6c0b3f773b New render event API (non functional yet) 2018-11-16 14:57:12 +01:00
Tim Schaub
f90efac131 Smaller canvas when rotating vector layers 2018-11-16 14:57:11 +01:00
Tim Schaub
26de43de0c Unused imports 2018-11-16 14:57:11 +01:00
Tim Schaub
ed7825e13a Render vector images 2018-11-16 14:57:11 +01:00
Tim Schaub
8b077c66d8 Rotate images 2018-11-16 14:57:11 +01:00
Tim Schaub
b5378deb45 Create context in the canvas layer base class 2018-11-16 14:57:11 +01:00
Tim Schaub
33f6d6f110 One fewer transform 2018-11-16 14:57:11 +01:00
Tim Schaub
a9f98f2b1e Rotation for image layers 2018-11-16 14:57:10 +01:00
Tim Schaub
8822690cf4 Work with sources that have a max zoom 2018-11-16 14:57:10 +01:00
ahocevar
9a4e665c3b Position tiles by offset instead of extent 2018-11-16 14:56:50 +01:00
Tim Schaub
6edac64b81 Use the regular map in the rendering tests 2018-11-16 14:56:50 +01:00
Tim Schaub
f9ebb0c917 Return two canvases from the vector tile layer renderer 2018-11-16 14:56:50 +01:00
Tim Schaub
c137b68938 Dispatch pre-render before rendering 2018-11-16 14:56:50 +01:00
ahocevar
8eb48604e9 Round tile x and y and reuse w and h 2018-11-16 14:56:50 +01:00
ahocevar
5fffb67242 Clear canvas when nothing to replay 2018-11-16 14:56:49 +01:00
ahocevar
c37b6202a0 Use Map 2018-11-16 14:56:49 +01:00
Tim Schaub
610fcab79e Dispatch pre and post render events 2018-11-16 14:56:49 +01:00
Tim Schaub
489af4023d Work with high dpi tiles 2018-11-16 14:56:49 +01:00
Tim Schaub
87e5bbac4d Image layer renderer 2018-11-16 14:56:49 +01:00
Tim Schaub
20e5841aed Remove vector mode for vector tile rendering 2018-11-16 14:56:48 +01:00
Tim Schaub
39a4f42e3d Resize canvas to handle rotation 2018-11-16 14:56:48 +01:00
Tim Schaub
6234b69512 Handle opacity and rotation in canvas intermediate renderer 2018-11-16 14:56:48 +01:00
Tim Schaub
5ba8795355 Tile layer rendering with the composite renderer 2018-11-16 14:56:48 +01:00
Tim Schaub
433ab97d1c End of composeFrame 2018-11-16 14:56:48 +01:00
Tim Schaub
f416cf742d Workaround for raster source 2018-11-16 14:56:48 +01:00
Tim Schaub
c612cce591 Give the map some height for the box tests 2018-11-16 14:56:47 +01:00
Tim Schaub
f2cab1fcbb Give the map some height for scale line tests 2018-11-16 14:56:47 +01:00
Tim Schaub
b3903df156 Use the composite renderer 2018-11-16 14:56:47 +01:00
Tim Schaub
dd23055db1 Merge pull request #8951 from jahow/remove-webgl
Remove legacy WebGL code & implement a lightweight API for point rendering
2018-11-16 14:55:00 +01:00
Olivier Guyot
1ae1b60308 Rename webgl-new to webgl 2018-11-16 14:05:06 +01:00
Olivier Guyot
40d5f4efe7 Added unit tests for the WebGLHelper class 2018-11-16 14:05:06 +01:00
Frederic Junod
0189e8345d Remove WebGL references in comments 2018-11-16 14:05:06 +01:00
Olivier Guyot
72cf7b13fa removed existing webgl rendering unit tests 2018-11-16 14:05:04 +01:00
Olivier Guyot
66a74ac019 Renamed WebGLBuffer to WebGLArrayBuffer to avoid conflicts
In the future this should be reworked to have a clearer API in general.
2018-11-16 14:02:10 +01:00
Olivier Guyot
a84559d1fb Added documentation & fixed linting for WebGL classes 2018-11-16 14:02:10 +01:00
Olivier Guyot
cb77e10179 Removed the legacy shader build system 2018-11-16 14:02:10 +01:00
Olivier Guyot
874047a928 The heatmap layer now has a configurable blur 2018-11-16 14:02:10 +01:00
Olivier Guyot
530bcd0c88 Improve handling of uniforms in webgl helper 2018-11-16 14:02:10 +01:00
Olivier Guyot
94524fb431 Webgl Helper now handles uniforms with framestate as input 2018-11-16 14:02:10 +01:00
Olivier Guyot
716256e8f3 Cleaned up the heatmap layer & use dynamic radius 2018-11-16 14:02:10 +01:00
Olivier Guyot
fb8bf785dd Use the gradient texture in the heatmap layer 2018-11-16 14:02:10 +01:00
Olivier Guyot
4a275c543a Use post-processes in the heatmap example 2018-11-16 14:02:10 +01:00
Olivier Guyot
0c1424c5bb Added the concept of post process passes for webgl 2018-11-16 14:02:10 +01:00
Olivier Guyot
7fa2189fe9 Remove the bulk of the WebGL legacy code.
Things left to do:
* redo an icon layer example
* redo a clipping layer example
* update docs where WebGL renderers are mentioned
2018-11-16 14:02:08 +01:00
Olivier Guyot
d3294730f1 Renamed WebGLContext to Helper for clarity 2018-11-16 14:01:21 +01:00
Olivier Guyot
494b817f47 Use the new webgl renderer in the heatmap layer 2018-11-16 14:01:21 +01:00
Olivier Guyot
51becf1c2e Allow custom post processing & improve blending 2018-11-16 14:01:21 +01:00
Olivier Guyot
298af9ca0f added the concept of frame buffer in webgl context 2018-11-16 14:01:21 +01:00
Olivier Guyot
81807c5910 Added size & position callbacks 2018-11-16 14:01:21 +01:00
Olivier Guyot
3c5eac13c9 Handle alpha & custom shaders in renderer 2018-11-16 14:01:21 +01:00
Olivier Guyot
154a046130 Added texcoord in default shader 2018-11-16 14:01:20 +01:00
Olivier Guyot
583dfb8e9d Actually make the renderer work 2018-11-16 14:01:20 +01:00
Olivier Guyot
1c11dc5311 Improved shader compilation & fixed PointsLayer ones 2018-11-16 14:01:20 +01:00
Olivier Guyot
97b16be572 Added attribute handling 2018-11-16 14:01:20 +01:00
Olivier Guyot
fc20dc986c Better handle uniform locations in shaders 2018-11-16 14:01:20 +01:00
Olivier Guyot
66efee9e22 Add vertex shaders to pointslayer 2018-11-16 14:01:20 +01:00
Olivier Guyot
71270efa75 Added a new WebGLPointsRenderer 2018-11-16 14:01:20 +01:00
Olivier Guyot
0a0d6c22f5 Modified the WebGLContext to be used independantly 2018-11-16 14:01:20 +01:00
Andreas Hocevar
36cf7227c0 Merge pull request #8926 from gberaudo/replay_refactoring
Uncouple replay creation and rendering
2018-11-16 13:54:18 +01:00
Frédéric Junod
9937fd5963 Merge pull request #8952 from fredj/polygon-style_tests
Port polygon-style rendering test
2018-11-16 13:52:52 +01:00
ahocevar
8d51e0d487 Remove resolved FIXMEs 2018-11-16 13:50:42 +01:00
ahocevar
981b398042 Add a FIXME for the measure function to go away 2018-11-16 13:49:50 +01:00
Frédéric Junod
2e32ac7254 Merge pull request #8939 from fredj/rework_d3_example
Use ol/layer/Layer instead of ol/source/ImageCanvas in d3 example
2018-11-16 13:45:30 +01:00
Frederic Junod
0ed7f76ad0 Port polygon-style rendering test 2018-11-16 13:40:11 +01:00
ahocevar
6cbde797be Use NaN for unavailable values and handle text creation separately 2018-11-16 13:35:15 +01:00
ahocevar
d3355f613c Combine if blocks 2018-11-16 13:04:03 +01:00
Guillaume Beraudo
81d0bc21d5 Pass instructions to executor constructor 2018-11-16 12:36:50 +01:00
Frédéric Junod
2cb9d47547 Merge pull request #8957 from fredj/misc
Fix JSdoc type cast format
2018-11-16 11:25:16 +01:00
Frederic Junod
e991dcc38c Fix JSdoc type cast format 2018-11-16 11:12:17 +01:00
Frederic Junod
bf9171a689 Add examples/d3.css 2018-11-16 10:47:07 +01:00
Tim Schaub
bdbf00f055 Merge pull request #8934 from fgravin/renderingtest
Port layer tiles rendering tests
2018-11-16 10:42:17 +01:00
Guillaume Beraudo
ce44a9a3e4 Final renamings 2018-11-15 23:46:20 +01:00
Guillaume Beraudo
89fed65f07 Fix incorrect Executor/Builder types 2018-11-15 23:27:43 +01:00
Guillaume Beraudo
da92b2ab3f Improve text replay test 2018-11-15 23:01:45 +01:00
Guillaume Beraudo
eaed37da96 Fix width comparison 2018-11-15 20:03:35 +01:00
Guillaume Beraudo
b1a5f4855f Create geometryWidths array only when needed 2018-11-15 20:03:34 +01:00
ahocevar
94bf02176e Rename ExecutorGroup and move getMaxExtent to Executor 2018-11-15 20:03:34 +01:00
Frederic Junod
178061ab9d Use ol/layer/Layer instead of ol/source/ImageCanvas in d3 example 2018-11-15 18:30:39 +01:00
Florent gravin
f9c64e52af Add rendering test for vector tile layer rotation w/ layer on top 2018-11-15 18:16:58 +01:00
Tim Schaub
00cf75c837 Merge pull request #8944 from jahow/fix-graticule
Use a layer for the graticule instead of a control
2018-11-15 18:07:15 +01:00
Tim Schaub
f95070a34d Merge pull request #8948 from fgravin/mapbox-rotation
Add rotation in mapbox-gl example
2018-11-15 18:04:41 +01:00
Frédéric Junod
5bbfeef12b Merge pull request #8953 from fredj/ci_order
Store rendering artifacts immediately after run tests
2018-11-15 17:42:33 +01:00
Frederic Junod
00d9740a58 Store rendering artifacts immediately after run tests 2018-11-15 17:36:34 +01:00
Florent gravin
7630fafcf2 Add rendering test for vector tile layer rotation 2018-11-15 17:32:50 +01:00
Olivier Guyot
a3f9c6b724 Update change log w/ breaking changes 2018-11-15 17:13:46 +01:00
Frederic Junod
05bf1d8f4a Remove the resolutions list in sphere-mollweide example 2018-11-15 17:12:40 +01:00
Olivier Guyot
3ac46ad10b Removed old control 2018-11-15 17:12:40 +01:00
Olivier Guyot
d5c390e726 Fixed tests & linting 2018-11-15 17:12:40 +01:00
Olivier Guyot
1b8a6baa35 Added extent handling to graticule layer 2018-11-15 17:12:40 +01:00
Olivier Guyot
94bcb8a0f6 Added wrapX option on graticule 2018-11-15 17:12:40 +01:00
Olivier Guyot
c69366ec0a Updated the sphere mollweide example 2018-11-15 17:12:40 +01:00
Olivier Guyot
4ee75359c0 Implemented a feature pool for lines and labels 2018-11-15 17:12:40 +01:00
Olivier Guyot
adb1bd7a31 First version to handle lines only 2018-11-15 17:12:40 +01:00
Olivier Guyot
dbd6dad4f3 Add a new Graticule layer, nothing rendered for now 2018-11-15 17:12:40 +01:00
Frédéric Junod
d7a6c4dbe3 Merge pull request #8950 from fredj/shx
Use shx to run unix commands in package.json
2018-11-15 17:12:01 +01:00
Tim Schaub
56131cf6ea Merge pull request #8946 from tschaub/renderer-fixes
Make the map renderer tolerant of layers without renderers
2018-11-15 15:53:49 +01:00
Florent gravin
12f6ce7a44 Add rendering test for vector tile layer 2018-11-15 15:53:06 +01:00
Frederic Junod
52f4f61a6c Use shx to run unix commands in package.json 2018-11-15 15:52:35 +01:00
Guillaume Beraudo
f9dcadb982 Remove unused methods 2018-11-15 15:20:41 +01:00
Guillaume Beraudo
0f5ced8483 Reduce usage of "replay" term 2018-11-15 15:20:41 +01:00
Guillaume Beraudo
5ecd832c92 Adapt test to new text builder behaviour 2018-11-15 15:20:41 +01:00
Guillaume Beraudo
87a1b926c9 Cleanup executor of unused properties 2018-11-15 15:20:41 +01:00
Guillaume Beraudo
4ba84d7926 Cleanly separate text building and execution 2018-11-15 15:20:41 +01:00
Guillaume Beraudo
afc946b215 Cleanup duplicated and unused code 2018-11-15 15:20:41 +01:00
Guillaume Beraudo
c0df61468f Move drawText along line to executor 2018-11-15 15:20:41 +01:00
Guillaume Beraudo
0ece0fb002 Cleanup unused text replay code 2018-11-15 15:20:41 +01:00
ahocevar
4ce19530ce Remove unused methods 2018-11-15 15:20:41 +01:00
ahocevar
3d203f990e Move measureTextWidths to render/canvas 2018-11-15 15:20:41 +01:00
Guillaume Beraudo
3170355b07 Remove unused function from executor 2018-11-15 15:20:41 +01:00
Guillaume Beraudo
f5a8ad63f9 Improve typing 2018-11-15 15:20:41 +01:00
Guillaume Beraudo
ba6a6fff7d Module renaming 2018-11-15 15:20:41 +01:00
Guillaume Beraudo
951d4d5ade Fix tests 2018-11-15 15:20:41 +01:00
Guillaume Beraudo
e299863117 More renaming 2018-11-15 15:20:41 +01:00
Guillaume Beraudo
f3bd08321a Rename Replay to InstructionsBuilder 2018-11-15 15:20:41 +01:00
Guillaume Beraudo
8097be8419 Remove replay code from Instruction Builder class 2018-11-15 15:20:41 +01:00
Guillaume Beraudo
fcf470fc8d Introduce Instruction executors
Executors are use to render instructions.
They do not contain cod for building instructions.

Signed-off-by: Guillaume Beraudo <guillaume.beraudo@camptocamp.com>
2018-11-15 15:20:41 +01:00
Guillaume Beraudo
ecf79a9ec2 First step in uncoupling replay creation and rendering
Signed-off-by: Guillaume Beraudo <guillaume.beraudo@camptocamp.com>
2018-11-15 15:20:41 +01:00
Florent gravin
4988a50760 Add Stamen-label tiles for rendering tests 2018-11-15 15:20:36 +01:00
Florent gravin
ebbb54456a Add rendering test for layer 2 tiles extent clipping 2018-11-15 15:20:36 +01:00
Florent gravin
081c677ea2 Add rendering test for layer tile simple 2018-11-15 15:20:36 +01:00
Florent gravin
fc85b2ba78 Add rendering test for layer tile transition 2018-11-15 15:20:36 +01:00
Frédéric Junod
d0f66b7cec Merge pull request #8943 from fredj/text-style-tests
Port text style rendering tests
2018-11-15 15:20:11 +01:00
Florent gravin
40b2922b4e Add rotation in mapbox-gl example 2018-11-15 12:55:37 +01:00
Frederic Junod
63b04210ab Allow tolerance to be passed to the render function 2018-11-15 12:51:15 +01:00
Frederic Junod
87c721b071 Port text style rendering tests 2018-11-15 12:51:15 +01:00
Tim Schaub
edeb5d3e71 Remove unused getLayerRenderersByKey method 2018-11-15 12:36:31 +01:00
Tim Schaub
3f624ec0c0 Make map methods tolerant of layers without renderers 2018-11-15 12:35:54 +01:00
Frédéric Junod
0d94b1a566 Merge pull request #8940 from jahow/fix-overview
Make layers mandatory in the OverviewMap control
2018-11-15 12:18:29 +01:00
Olivier Guyot
593632daea Fix the OverviewMap control & example
Layers must now always be specified for the control.
Base example was amended to reflect that.

The breaking change was added in the update notes.
2018-11-15 12:04:49 +01:00
Frédéric Junod
96dd5417e3 Merge pull request #8938 from fredj/render-toContext-tests
Port render-toContext rendering test
2018-11-15 11:31:13 +01:00
Frederic Junod
68b4ef5ec8 Store rendering artifacts 2018-11-15 11:27:48 +01:00
Frederic Junod
6e964c7934 Port render-toContext rendering test 2018-11-15 11:27:48 +01:00
Frédéric Junod
50ae34fcc6 Merge pull request #8941 from fredj/render_message
Rendering tests render message
2018-11-15 10:36:16 +01:00
Frederic Junod
f295a97894 Rendering tests render message 2018-11-14 21:37:45 +01:00
Frédéric Junod
aa841c7de2 Merge pull request #8933 from fredj/icon-symbol-svg
Port icon-symbol-svg rendering test
2018-11-14 20:42:33 +01:00
Tim Schaub
0452da92d3 Merge pull request #8931 from fgravin/mapbox-layer
Add Mapbox-gl-js example
2018-11-14 17:14:05 +01:00
Tim Schaub
7ae051c07a Merge pull request #8937 from tschaub/debug-tiles
Make the tile debug source useful for understanding tiles
2018-11-14 17:06:52 +01:00
Frederic Junod
bed9c6b09a Don't add mapbox-gl into dependencies 2018-11-14 16:34:36 +01:00
Florent gravin
cac323a785 Add mapboxgl npm dependency 2018-11-14 16:30:52 +01:00
Florent gravin
c62ebb9f61 Add mapbox-gl-js example 2018-11-14 16:30:52 +01:00
Frederic Junod
488a104a92 Port icon-symbol-svg rendering tests 2018-11-14 16:26:10 +01:00
Frédéric Junod
7a472321c4 Merge pull request #8930 from fredj/better_export_example
Give the layers container a CSS class name
2018-11-14 16:24:12 +01:00
Frédéric Junod
4adcb5ae6c Merge pull request #8914 from fredj/layer_className
Add new className property to ol/layer/Base
2018-11-14 16:23:56 +01:00
Frédéric Junod
19541699c3 Merge pull request #8910 from fredj/containsXY
Implements containsXY for all geometries
2018-11-14 16:23:26 +01:00
Tim Schaub
d6e8711172 Merge pull request #8922 from fgravin/layerrenderapi
Layer is reponsible for its renderer
2018-11-14 16:09:23 +01:00
Tim Schaub
46b8f39c71 Merge pull request #8936 from tschaub/rendering-sourcemaps
Serve sourcemaps from webpack during rendering tests
2018-11-14 16:00:20 +01:00
Tim Schaub
0e91365859 Make the tile debug source useful for understanding tiles 2018-11-14 15:58:08 +01:00
Tim Schaub
c74d80504e Serve sourcemaps from webpack 2018-11-14 15:51:56 +01:00
Frédéric Junod
f9a7cf2251 Merge pull request #8932 from fredj/dt_pbf
Add pbf TypeScript type definitions
2018-11-14 14:02:38 +01:00
Frederic Junod
5afd8178f4 Add pbf TypeScript type definitions 2018-11-13 18:25:42 +01:00
Andreas Hocevar
82ab50a22b Merge pull request #8924 from ahocevar/reuse-vt-replays
Reuse vector tile replays for interim tiles
2018-11-13 17:21:38 +01:00
Frederic Junod
bdf98d9003 Give the layers container an CSS class name 2018-11-13 17:04:07 +01:00
Frédéric Junod
2bc0d7f2ce Merge pull request #8918 from fredj/dom-to-image-more
Use dom-to-image-more library in export-map
2018-11-13 16:59:06 +01:00
ahocevar
30909ddbcd When rendering interim tiles, reuse existing replay groups 2018-11-13 16:08:49 +01:00
Andreas Hocevar
cda23e0d53 Merge pull request #8928 from ahocevar/mapbox-style
Add vector tile example using ol-mapbox-style
2018-11-13 16:03:31 +01:00
ahocevar
5bfe7089af Update keywords 2018-11-13 15:58:33 +01:00
Frédéric Junod
9c0a7b9ba7 Fix typo
Co-Authored-By: ahocevar <andreas.hocevar@gmail.com>
2018-11-13 15:49:39 +01:00
ahocevar
391fff38aa Add vector tile example using ol-mapbox-style 2018-11-13 15:47:11 +01:00
Frédéric Junod
fd0acaccd1 Merge pull request #8925 from fredj/misc
Don't compute value more that once, remove unneeded type cast
2018-11-13 15:16:33 +01:00
Tim Schaub
96cca7ac18 Merge pull request #8927 from tschaub/local
Use local data for rendering tests
2018-11-13 05:50:59 -07:00
Tim Schaub
c3c5b3b314 Use local data for rendering tests 2018-11-13 13:37:14 +01:00
Frederic Junod
22eb96637f Add new className property to ol/layer/Base 2018-11-13 13:09:06 +01:00
Florent gravin
c2c599a517 Layer is now responsible of its rendering 2018-11-13 12:51:04 +01:00
Florent gravin
d21a88edce Remove map renderer dependency in layer renderer 2018-11-13 12:51:04 +01:00
Frederic Junod
1e1dca5342 Remove unneeded type cast 2018-11-13 12:09:09 +01:00
Frederic Junod
5eed22286b Don't compute value more that once 2018-11-13 12:08:53 +01:00
Frédéric Junod
647421f07b Merge pull request #8920 from fredj/rm_relative
Remove unneeded 'relative' positioning
2018-11-13 11:46:39 +01:00
Frederic Junod
09d87bf33d Remove unneeded 'relative' positioning 2018-11-13 11:36:45 +01:00
Tim Schaub
2caa74a4e9 Merge pull request #8913 from fgravin/intermediatecanvas-renderframe
Implement renderFrame function for intermediate canvas renderer
2018-11-13 03:06:21 -07:00
Florent gravin
a6f94f865b Clear canvas in prepareFrame() 2018-11-12 21:51:39 +01:00
Florent gravin
697e475ee4 Add composite renderFrame() in IntermediateCanvas 2018-11-12 21:51:39 +01:00
Florent gravin
4c787c7f57 Set composite root div position relative 2018-11-12 21:51:39 +01:00
Frederic Junod
d02730abc1 Use dom-to-image-more library in export-map 2018-11-12 21:41:49 +01:00
Tim Schaub
04077675e1 Merge pull request #8916 from tschaub/intermediate-context
Move canvas creation to intermediate canvas renderer constructor
2018-11-12 13:07:01 -07:00
Tim Schaub
1c3e7a548f Merge pull request #8917 from tschaub/layer-transforms
Apply all transforms in the layer renderer
2018-11-12 13:06:43 -07:00
Tim Schaub
432b74d64d Apply all transforms in the layer renderer 2018-11-12 20:57:36 +01:00
Tim Schaub
55a963e0a9 Move canvas creation to intermediate canvas renderer constructor 2018-11-12 20:57:07 +01:00
Tim Schaub
0c97fd63e2 Merge pull request #8912 from tschaub/rotation
Rotation support in the composite renderer
2018-11-12 10:50:02 -07:00
Tim Schaub
edaa615333 Less typing to run the examples 2018-11-12 18:33:07 +01:00
Tim Schaub
afc64258af Support for rotation 2018-11-12 18:33:02 +01:00
timkeane
7274798aa1 Implement ol/geom/Geometry#containsXY
Fixes issue #8863
ol/source/Vector#getFeaturesAtCoordinate and
implementations of ol/geom/Geometry#containsXY
2018-11-12 17:15:44 +01:00
timkeane
5967bc75ba ol/geom/MultiLineString#containsXY 2018-11-12 17:15:22 +01:00
timkeane
c1963ba369 ol/geom/LineString#containsXY 2018-11-12 17:15:10 +01:00
timkeane
58b474225c ol/geom/MultiPoint#containsXY 2018-11-12 17:14:38 +01:00
timkeane
daffbde80b ol/geom/Point#containsXY 2018-11-12 17:14:07 +01:00
Tim Schaub
4a5fa1f840 Merge pull request #8908 from tschaub/opacity
Handle layer opacity in the composite renderer
2018-11-12 07:55:26 -07:00
Tim Schaub
8bf252e70f Handle layer opacity in the composite renderer 2018-11-12 15:16:06 +01:00
Tim Schaub
95c363075c Merge pull request #8848 from tschaub/renderers
Make layer renderers explicit layer dependencies
2018-11-12 07:10:00 -07:00
Tim Schaub
a9b2952be4 Add support for running a subset of rendering tests 2018-11-12 14:54:52 +01:00
Tim Schaub
dc05f48294 Use composite renderer in linestring test 2018-11-12 14:54:52 +01:00
Tim Schaub
43ed2c1764 Composite renderer 2018-11-12 14:54:52 +01:00
Tim Schaub
fc6882f146 Utility method for efficiently managing child nodes 2018-11-12 14:54:12 +01:00
Tim Schaub
a69eeceeba Switch map and layer constructor in tests
The webgl tests do not run currently (which is why these have not been failing).
2018-11-12 14:54:12 +01:00
Tim Schaub
ca5b0c63a5 Remove LayerType 2018-11-12 14:54:11 +01:00
Tim Schaub
c50b9b2c25 Fix examples that use WebGLMap 2018-11-12 14:54:11 +01:00
Tim Schaub
f6b838c635 Make webgl layer renderers dependencies of webgl layers 2018-11-12 14:54:11 +01:00
Tim Schaub
7374e32007 Canvas layer renderers are now dependencies of layers 2018-11-12 14:54:11 +01:00
Tim Schaub
2ec509fbca Add an image vector layer for rendering vectors to an image 2018-11-12 14:54:11 +01:00
Tim Schaub
ae1f3afd66 Base for tile layers, renderer-specific tile layer types 2018-11-12 14:54:11 +01:00
Tim Schaub
285a610c46 Base for image layers, renderer-specific image layer types 2018-11-12 14:54:10 +01:00
Tim Schaub
c9529b9acd Create the appropriate renderer for vector tile layers 2018-11-12 14:54:10 +01:00
Tim Schaub
7ffaa134c7 Conditionally get renderer from the layer 2018-11-12 14:54:10 +01:00
Tim Schaub
6c052c0dab Split vector layer into Canvas and WebGL implementations 2018-11-12 14:54:09 +01:00
Frédéric Junod
6e27b47fc3 Merge pull request #8892 from fredj/do_typo
Use the right device orientation property in example
2018-11-12 11:57:00 +01:00
Frédéric Junod
cbcd1fdcec Merge pull request #8905 from openlayers/greenkeeper/rollup-0.67.1
Update rollup to the latest version 🚀
2018-11-11 21:05:40 +01:00
greenkeeper[bot]
b6ca51a9e6 chore(package): update rollup to version 0.67.1 2018-11-11 15:03:46 +00:00
Tim Schaub
cb9925034c Merge pull request #8904 from tschaub/default-index
Add support for a default index page in the rendering tests
2018-11-10 15:57:24 -07:00
Tim Schaub
767aa7b7a4 Add support for a default index page 2018-11-10 12:44:31 -07:00
Tim Schaub
83c988eed5 Merge pull request #8903 from tschaub/rendering-tests
Additional render tests
2018-11-10 12:22:18 -07:00
Tim Schaub
f67e5642ab Rendering test for an icon 2018-11-10 09:36:23 -07:00
Tim Schaub
7dc5bf3e8d Limit requests sent to webpack middleware 2018-11-10 09:35:32 -07:00
Tim Schaub
0ebc023223 Test a rotated view 2018-11-10 08:31:36 -07:00
Tim Schaub
14d59623aa Expose headless flag 2018-11-10 08:18:41 -07:00
Tim Schaub
67b08a302e Use configured logger 2018-11-10 08:16:56 -07:00
Tim Schaub
93ff80449f Merge pull request #8902 from openlayers/greenkeeper/rollup-0.67.0
Update rollup to the latest version 🚀
2018-11-10 07:10:30 -07:00
greenkeeper[bot]
6aed520d8f chore(package): update rollup to version 0.67.0 2018-11-10 06:59:01 -07:00
Tim Schaub
c43b0cb520 Merge pull request #8895 from tschaub/rendering-tests
New rendering tests
2018-11-09 17:46:32 -07:00
Tim Schaub
6f238a8d09 Add stub support for interactive mode 2018-11-09 15:06:27 -07:00
Tim Schaub
800776b6cb Only test outdated cases by default 2018-11-09 14:43:11 -07:00
Frederic Junod
f444da29bc Add linestring-style rendering test 2018-11-09 13:51:41 -07:00
Tim Schaub
4923fac359 Avoid 404 for favicon.ico 2018-11-09 13:45:19 -07:00
Tim Schaub
8c89e17618 Avoid headless mode in CI 2018-11-09 12:41:48 -07:00
Tim Schaub
1253558006 Register new handler for render with each page navigation 2018-11-09 09:02:08 -07:00
Tim Schaub
67ee32fdea New rendering tests 2018-11-09 09:02:08 -07:00
Frédéric Junod
aab9ff023c Merge pull request #8893 from fredj/proj_sideEffects
Add proj.js to the sideEffects list
2018-11-08 11:42:48 +01:00
Frederic Junod
a73e9607a8 Add proj.js to the sideEffects list 2018-11-07 16:26:04 +01:00
Frederic Junod
017a78d2d1 Use the right device orientation property in example 2018-11-07 15:58:23 +01:00
Tim Schaub
7321541de8 Merge pull request #8887 from openlayers/release-v5.3.0
Changes for 5.3.0
2018-11-06 09:46:18 -07:00
838 changed files with 151109 additions and 24222 deletions

View File

@@ -2,7 +2,7 @@ version: 2
jobs:
build:
docker:
- image: circleci/node:10-browsers
- image: circleci/node:latest-browsers
working_directory: ~/repo
@@ -27,6 +27,14 @@ jobs:
name: Run Tests
command: npm test
- store_artifacts:
path: coverage/
destination: coverage
- store_artifacts:
path: rendering/cases/
destination: rendering
- run:
name: Build Examples
command: npm run build-examples
@@ -34,3 +42,11 @@ jobs:
- store_artifacts:
path: build/examples
destination: examples
- run:
name: Build API Docs
command: npm run apidoc
- store_artifacts:
path: build/apidoc
destination: apidoc

View File

@@ -11,7 +11,3 @@ insert_final_newline = true
[*.md]
indent_size = 2
trim_trailing_whitespace = false
[Makefile]
indent_style = tab
indent_size = 4

8
.github/FUNDING.yml vendored Normal file
View File

@@ -0,0 +1,8 @@
# These are supported funding model platforms
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
patreon: # Replace with a single Patreon username
open_collective: openlayers
ko_fi: # Replace with a single Ko-fi username
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
custom: # Replace with a single custom sponsorship URL

View File

@@ -1,9 +0,0 @@
<!--
Thank you for your interest in making OpenLayers better!
If you are reporting a bug, please link to an example that reproduces the problem. This will make it easier for people who may want to help you debug.
If you have a usage question, you might want to try Stack Overflow first: https://stackoverflow.com/questions/tagged/openlayers
Thanks
-->

19
.github/ISSUE_TEMPLATE/bug_report.md vendored Normal file
View File

@@ -0,0 +1,19 @@
---
name: Bug report
about: Create a report to help us improve
labels:
- bug
---
**Describe the bug**
A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. See error
**Expected behavior**
A clear and concise description of what you expected to happen.

View File

@@ -0,0 +1,13 @@
---
name: Feature request
about: Suggest an idea for this project
labels:
- feature request
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.

17
.github/stale.yml vendored Normal file
View File

@@ -0,0 +1,17 @@
# Number of days of inactivity before an issue becomes stale
daysUntilStale: 60
# Number of days of inactivity before a stale issue is closed
daysUntilClose: 7
# Issues with these labels will never be considered stale
exemptLabels:
- blocker
- regression
# 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
markComment: >
This issue has been automatically marked as stale because it has not had
recent activity. It will be closed if no further activity occurs. Thank you
for your contributions.
# Comment to post when closing a stale issue. Set to `false` to disable
closeComment: false

View File

@@ -42,7 +42,7 @@ Your pull request must:
* Follow OpenLayers's coding style.
* Pass the integration tests run automatically by the Travis Continuous
* Pass the integration tests run automatically by the CircleCI Continuous
Integration system.
* Address a single issue or add a single item of functionality.

View File

@@ -5,9 +5,9 @@
You will obviously start by
[forking](https://github.com/openlayers/openlayers/fork) the OpenLayers repository.
### Travis CI
### CircleCI
The Travis CI hook is enabled on the Github repository. This means every pull request
The CircleCI hook is enabled on the Github repository. This means every pull request
is run through a full test suite to ensure it compiles and passes the tests. Failing
pull requests will not be merged.

View File

@@ -1,26 +1,25 @@
Copyright 2005-present OpenLayers Contributors. All rights reserved.
BSD 2-Clause License
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
Copyright 2005-present, OpenLayers Contributors
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation and/or
other materials provided with the distribution.
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY OPENLAYERS CONTRIBUTORS ``AS IS'' AND ANY EXPRESS
OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
SHALL COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
The views and conclusions contained in the software and documentation are those
of the authors and should not be interpreted as representing official policies,
either expressed or implied, of OpenLayers Contributors.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

View File

@@ -1,13 +0,0 @@
SRC_GLSL := $(shell find src -type f -name '*.glsl')
SRC_SHADER_JS := $(patsubst %shader.glsl,%shader.js,$(SRC_GLSL))
SRC_SHADERLOCATIONS_JS := $(patsubst %shader.glsl,%shader/Locations.js,$(SRC_GLSL))
.PHONY: shaders
shaders: $(SRC_SHADER_JS) $(SRC_SHADERLOCATIONS_JS)
%shader.js: %shader.glsl src/ol/webgl/shader.mustache tasks/glslunit.js
@node tasks/glslunit.js --input $< | ./node_modules/.bin/mustache - src/ol/webgl/shader.mustache > $@
%shader/Locations.js: %shader.glsl src/ol/webgl/shaderlocations.mustache tasks/glslunit.js
@mkdir -p $(@D)
@node tasks/glslunit.js --input $< | ./node_modules/.bin/mustache - src/ol/webgl/shaderlocations.mustache > $@

View File

@@ -1,6 +1,6 @@
# OpenLayers
[OpenLayers](https://openlayers.org/) is a high-performance, feature-packed library for creating interactive maps on the web. It can display map tiles, vector data and markers loaded from any source on any web page. OpenLayers has been developed to further the use of geographic information of all kinds. It is completely free, Open Source JavaScript, released under the 2-clause BSD License (also known as the FreeBSD).
[OpenLayers](https://openlayers.org/) is a high-performance, feature-packed library for creating interactive maps on the web. It can display map tiles, vector data and markers loaded from any source on any web page. OpenLayers has been developed to further the use of geographic information of all kinds. It is completely free, Open Source JavaScript, released under the [BSD 2-Clause License](https://opensource.org/licenses/BSD-2-Clause).
## Getting Started
@@ -41,6 +41,30 @@ See the following examples for more detail on bundling OpenLayers with your appl
* Using [Parcel](https://github.com/openlayers/ol-parcel)
* Using [Browserify](https://github.com/openlayers/ol-browserify)
## IntelliSense support and type checking for VS Code
The `ol` package contains a `src/` folder with JSDoc annotated sources. TypeScript can get type definitions from these sources with a `jsconfig.json` config file in the project root:
```js
{
"compilerOptions": {
"checkJs": true,
// Point to the JSDoc typed sources when using modules from the ol package
"baseUrl": "./",
"paths": {
"ol": ["node_modules/ol/src"],
"ol/*": ["node_modules/ol/src/*"]
}
},
"include": [
"**/*.js",
"node_modules/ol/**/*.js"
]
}
```
Project template with this configuration: https://gist.github.com/9a7253cb4712e8bf38d75d8ac898e36c.
Note that the above only works when authoring in plain JavaScript. For similar configurations with a `tsconfig.json` in TypeScript projects, your mileage may vary.
## Supported Browsers
OpenLayers runs on all modern browsers that support [HTML5](https://html.spec.whatwg.org/multipage/) and [ECMAScript 5](http://www.ecma-international.org/ecma-262/5.1/). This includes Chrome, Firefox, Safari and Edge. For older browsers and platforms like Internet Explorer (down to version 9) and Android 4.x, [polyfills](http://polyfill.io) for `requestAnimationFrame` and `Element.prototype.classList` are required, and using the KML format requires a polyfill for `URL`.
@@ -62,4 +86,4 @@ Please see our guide on [contributing](CONTRIBUTING.md) if you're interested in
- Need help? Find it on [Stack Overflow using the tag 'openlayers'](http://stackoverflow.com/questions/tagged/openlayers)
- Follow [@openlayers](https://twitter.com/openlayers) on Twitter
[![Build Status](https://travis-ci.org/openlayers/openlayers.svg?branch=master)](https://travis-ci.org/openlayers/openlayers)
[![CircleCI](https://circleci.com/gh/openlayers/openlayers/tree/master.svg?style=svg)](https://circleci.com/gh/openlayers/openlayers/tree/master)

View File

@@ -2,6 +2,269 @@
### Next version
#### Backwards incompatible changes
#### 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()`.
#### 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.
### v5.3.0
#### The `getUid` function returns string

View File

@@ -1,6 +0,0 @@
# 5.3.1
The 5.3.1 release is a patch that addresses an issue when using `angular-cli` to build an OpenLayers-based application.
* [#9253](https://github.com/openlayers/openlayers/pull/9253) - Add proj.js to the sideEffects list ([@romanzoller](https://github.com/romanzoller))

View File

@@ -1,43 +1,43 @@
<table><tr>
<th width="33.3%">Map</th><th width="33.3%">View</th><th width="33.3%">Layers</th>
</tr><tr>
<td><p>A [map](module-ol_Map-Map.html) is made of [layers](module-ol_layer_Base-BaseLayer.html), a [view](module-ol_View-View.html) to visualize them, [interactions](module-ol_interaction_Interaction-Interaction.html) to modify map content and [controls](module-ol_control_Control-Control.html) with UI components.</p>
[Overview](module-ol_Map-Map.html)<br>
[Creation](module-ol_Map-Map.html#Map)<br>
[Events](module-ol_MapBrowserEvent-MapBrowserEvent.html)</td>
<td><p>A <a href="module-ol_Map-Map.html">map</a> is made of <a href="module-ol_layer_Base-BaseLayer.html">layers</a>, a <a href="module-ol_View-View.html">view</a> to visualize them, <a href="module-ol_interaction_Interaction-Interaction.html">interactions</a> to modify map content and <a href="module-ol_control_Control-Control.html">controls</a> with UI components.</p>
<a href="module-ol_Map-Map.html">Overview</a><br>
<a href="module-ol_Map-Map.html#Map">Creation</a><br>
<a href="module-ol_MapBrowserEvent-MapBrowserEvent.html">Events</a></td>
<td><p>The view manages the visual parameters of the map view, like resolution or rotation.</p>
[View](module-ol_View-View.html) with center, projection, resolution and rotation</td>
<td><p>Layers are lightweight containers that get their data from [sources](module-ol_source_Source-Source.html).</p>
[ol/layer/Tile](module-ol_layer_Tile-TileLayer.html)<br>
[ol/layer/Image](module-ol_layer_Image-ImageLayer.html)<br>
[ol/layer/Vector](module-ol_layer_Vector-VectorLayer.html)<br>
[ol/layer/VectorTile](module-ol_layer_VectorTile-VectorTileLayer.html)</td>
<a href="module-ol_View-View.html">View</a> with center, projection, resolution and rotation</td>
<td><p>Layers are lightweight containers that get their data from <a href="module-ol_source_Source-Source.html">sources</a>.</p>
<a href="module-ol_layer_Tile-TileLayer.html">ol/layer/Tile</a><br>
<a href="module-ol_layer_Image-ImageLayer.html">ol/layer/Image</a><br>
<a href="module-ol_layer_Vector-VectorLayer.html">ol/layer/Vector</a><br>
<a href="module-ol_layer_VectorTile-VectorTileLayer.html">ol/layer/VectorTile</a></td>
</tr><tr>
<th>Controls</th><th>Interactions</th><th>Sources and formats</th>
</tr><tr>
<td>[Map default controls](module-ol_control_util.html#.defaults)<br>
[All controls](module-ol_control_Control-Control.html)
<td><a href="module-ol_control_util.html#.defaults">Map default controls</a><br>
<a href="module-ol_control_Control-Control.html">All controls</a>
</td>
<td>
[Map default interactions](module-ol_interaction.html#~defaults)<br>
Interactions for [vector features](module-ol_Feature-Feature.html)
<ul><li>[ol/interaction/Select](module-ol_interaction_Select-Select.html)</li>
<li>[ol/interaction/Draw](module-ol_interaction_Draw-Draw.html)</li>
<li>[ol/interaction/Modify](module-ol_interaction_Modify-Modify.html)</li></ul>
[All interactions](module-ol_interaction_Interaction-Interaction.html)</td>
<td>[Tile sources](module-ol_source_Tile-TileSource.html) for [ol/layer/Tile](module-ol_layer_Tile-TileLayer.html)
<br>[Image sources](module-ol_source_Image-ImageSource.html) for [ol/layer/Image](module-ol_layer_Image-ImageLayer.html)
<br>[Vector sources](module-ol_source_Vector-VectorSource.html) for [ol/layer/Vector](module-ol_layer_Vector-VectorLayer.html)
<br>[Vector tile sources](module-ol_source_VectorTile-VectorTile.html) for [ol/layer/VectorTile](module-ol_layer_VectorTile-VectorTileLayer.html)
<br>[Formats](module-ol_format_Feature-FeatureFormat.html) for reading/writing vector data
<br>[ol/format/WMSCapabilities](module-ol_format_WMSCapabilities-WMSCapabilities.html)</td></tr>
<a href="module-ol_interaction.html#~defaults">Map default interactions</a><br>
Interactions for <a href="module-ol_Feature-Feature.html">vector features</a>
<ul><li><a href="module-ol_interaction_Select-Select.html">ol/interaction/Select</a></li>
<li><a href="module-ol_interaction_Draw-Draw.html">ol/interaction/Draw</a></li>
<li><a href="module-ol_interaction_Modify-Modify.html">ol/interaction/Modify</a></li></ul>
<a href="module-ol_interaction_Interaction-Interaction.html">All interactions</a></td>
<td><a href="module-ol_source_Tile-TileSource.html">Tile sources</a> for <a href="module-ol_layer_Tile-TileLayer.html">ol/layer/Tile</a>
<br><a href="module-ol_source_Image-ImageSource.html">Image sources</a> for <a href="module-ol_layer_Image-ImageLayer.html">ol/layer/Image</a>
<br><a href="module-ol_source_Vector-VectorSource.html">Vector sources</a> for <a href="module-ol_layer_Vector-VectorLayer.html">ol/layer/Vector</a>
<br><a href="module-ol_source_VectorTile-VectorTile.html">Vector tile sources</a> for <a href="module-ol_layer_VectorTile-VectorTileLayer.html">ol/layer/VectorTile</a>
<br><a href="module-ol_format_Feature-FeatureFormat.html">Formats</a> for reading/writing vector data
<br><a href="module-ol_format_WMSCapabilities-WMSCapabilities.html">ol/format/WMSCapabilities</a></td></tr>
<tr><th>Projections</th><th>Observable objects</th><th>Other components</th></tr>
<tr><td><p>All coordinates and extents need to be provided in view projection (default: EPSG:3857). To transform, use [ol/proj#transform()](module-ol_proj.html#.transform) and [ol/proj#transformExtent()](module-ol_proj.html#.transformExtent).</p>
[ol/proj](module-ol_proj.html)</td>
<td><p>Changes to all [ol/Object](module-ol_Object-BaseObject.html)s can be observed by calling the [object.on('propertychange')](module-ol_Object-BaseObject.html#on) method. Listeners receive an [ol/Object.ObjectEvent](module-ol_Object-ObjectEvent.html) with information on the changed property and old value.</p>
<tr><td><p>All coordinates and extents need to be provided in view projection (default: EPSG:3857). To transform, use <a href="module-ol_proj.html#.transform">ol/proj#transform()</a> and <a href="module-ol_proj.html#.transformExtent">ol/proj#transformExtent()</a>.</p>
<a href="module-ol_proj.html">ol/proj</a></td>
<td><p>Changes to all <a href="module-ol_Object-BaseObject.html">ol/Object</a>s can be observed by calling the <a href="module-ol_Object-BaseObject.html#on">object.on('propertychange')</a> method. Listeners receive an <a href="module-ol_Object-ObjectEvent.html">ol/Object.ObjectEvent</a> with information on the changed property and old value.</p>
<td>
[ol/Geolocation](module-ol_Geolocation.html)<br>
[ol/Overlay](module-ol_Overlay-Overlay.html)<br></td>
<a href="module-ol_Geolocation.html">ol/Geolocation</a><br>
<a href="module-ol_Overlay-Overlay.html">ol/Overlay</a><br></td>
</tr></table>
&nbsp;

View File

@@ -59,7 +59,9 @@ function includeAugments(doclet) {
});
}
cls._hideConstructor = true;
delete cls.undocumented;
if (!cls.undocumented) {
cls._documented = true;
}
}
}
}
@@ -150,6 +152,9 @@ exports.handlers = {
// Remove all other undocumented symbols
doclet.undocumented = true;
}
if (doclet._documented) {
delete doclet.undocumented;
}
}
}

View File

@@ -1,32 +1,29 @@
const events = {};
const classes = {};
exports.handlers = {
newDoclet: function(e) {
const doclet = e.doclet;
let cls;
if (doclet.kind == 'event') {
cls = doclet.longname.split('#')[0];
if (doclet.kind !== 'event') {
return;
}
const cls = doclet.longname.split('#')[0];
if (!(cls in events)) {
events[cls] = [];
}
events[cls].push(doclet.longname);
} else if (doclet.kind == 'class' && !(doclet.longname in classes)) {
classes[doclet.longname] = doclet;
}
},
parseComplete: function(e) {
const doclets = e.doclets;
let doclet, i, ii, j, jj, event, fires;
for (i = 0, ii = doclets.length - 1; i < ii; ++i) {
doclet = doclets[i];
for (let i = 0, ii = doclets.length - 1; i < ii; ++i) {
const doclet = doclets[i];
if (doclet.fires) {
if (doclet.kind == 'class') {
fires = [];
for (j = 0, jj = doclet.fires.length; j < jj; ++j) {
event = doclet.fires[j].replace('event:', '');
const fires = [];
for (let j = 0, jj = doclet.fires.length; j < jj; ++j) {
const event = doclet.fires[j].replace('event:', '');
if (events[event]) {
fires.push.apply(fires, events[event]);
} else if (doclet.fires[j] !== 'event:ObjectEvent') {

View File

@@ -1,12 +1,8 @@
/*
* This is a hack to prevent inheritDoc tags from entirely removing
* documentation of the method that inherits the documentation.
*
* TODO: Remove this hack when https://github.com/jsdoc3/jsdoc/issues/53
* is addressed.
*/
exports.defineTags = function(dictionary) {
dictionary.defineTag('inheritDoc', {
mustHaveValue: false,
@@ -96,6 +92,11 @@ exports.handlers = {
incompleteDoclet[key] = candidate[key];
}
}
// We have found a matching parent doc and applied it so we
// don't want to ignore this doclet anymore.
incompleteDoclet.ignore = false;
// We found a match so we can stop break
break;
}
}
}

View File

@@ -214,55 +214,39 @@ function buildNav(members) {
}
return 0;
});
function createEntry(type, v) {
return {
type: type,
longname: v.longname,
name: v.name,
classes: find({
kind: 'class',
memberof: v.longname
}).map(createEntry.bind(this, 'class')),
members: find({
kind: 'member',
memberof: v.longname
}),
methods: find({
kind: 'function',
memberof: v.longname
}),
typedefs: find({
kind: 'typedef',
memberof: v.longname
}),
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({
type: 'module',
longname: v.longname,
name: v.name,
members: find({
kind: 'member',
memberof: v.longname
}),
methods: find({
kind: 'function',
memberof: v.longname
}),
typedefs: find({
kind: 'typedef',
memberof: v.longname
}),
events: find({
kind: 'event',
memberof: v.longname
})
});
}
if (v.kind == 'class') {
nav.push({
type: 'class',
longname: v.longname,
name: v.name,
members: find({
kind: 'member',
memberof: v.longname
}),
methods: find({
kind: 'function',
memberof: v.longname
}),
typedefs: find({
kind: 'typedef',
memberof: v.longname
}),
fires: v.fires,
events: find({
kind: 'event',
memberof: v.longname
})
});
nav.push(createEntry('module', v));
}
}
});

View File

@@ -12,13 +12,18 @@ $(function () {
var $item = $(v);
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();
$item.show();
$item.closest('.itemMembers').show();
$item.closest('.item').show();
}
});
} else {
$el.find('.item, .itemMembers').show();
$el.find('.item, .itemMembers').hide();
$('.navigation>ul>li').show();
}
$el.find('.list').scrollTop(0);

View File

@@ -18,7 +18,7 @@
<sup class="variation"><?js= doc.variation ?></sup>
<?js } ?></h2>
<br>
<?js if (doc.stability || doc.kind == 'namespace') {
<?js if (doc.stability || doc.kind == 'namespace' || doc.kind == 'module') {
var ancestors = doc.ancestors.map(a => a.replace(/>\./g, '>').replace(/\.</g, '<')).join('/');
var parts = [];
if (ancestors) {
@@ -26,8 +26,21 @@
}
var importPath = parts.join('/');
?>
<?js
var nameParts = doc.name.split('/');
var moduleName = nameParts[nameParts.length - 1];
if(moduleName) {
var firstChar = moduleName.charAt(0);
moduleName = firstChar.toUpperCase() + moduleName.slice(1);
var isClassModule = firstChar.toUpperCase() === firstChar;
}
?>
<?js if (doc.kind == 'module' && !isClassModule && nameParts.length < 3) {?>
<pre class="prettyprint source"><code>import * as ol<?js= moduleName ?> from '<?js= doc.name ?>';</code></pre>
<?js } else if(doc.kind !== 'module') { ?>
<pre class="prettyprint source"><code>import <?js= doc.name ?> from '<?js= importPath ?>';</code></pre>
<?js } ?>
<?js } ?>
<?js if (doc.classdesc) { ?>
<div class="class-description"><?js= doc.classdesc ?></div>
<?js } ?>
@@ -143,6 +156,7 @@
<h3 class="subsection-title">Methods</h3>
<dl><?js methods.forEach(function(m) { ?>
<?js m.parent = doc ?>
<?js= self.partial('method.tmpl', m) ?>
<?js }); ?></dl>
<?js } ?>

View File

@@ -4,12 +4,62 @@ var version = obj.packageInfo.version;
<!DOCTYPE html>
<html lang="en">
<head>
<script>
var gaProperty = 'UA-2577926-1';
// Disable tracking if the opt-out cookie exists.
var disableStr = 'ga-disable-' + gaProperty;
if (document.cookie.indexOf(disableStr + '=true') > -1) {
window[disableStr] = true;
}
function gaOptout() {
document.cookie = disableStr + '=true; expires=Thu, 31 Dec 2099 23:59:59 UTC; path=/';
window[disableStr] = true;
}
function gaOptoutRevoke() {
document.cookie = disableStr + '=false; expires=Thu, 31 Dec 2099 23:59:59 UTC; path=/';
window[disableStr] = false;
}
</script>
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-2577926-1"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-2577926-1');
gtag('config', 'UA-2577926-1', { 'anonymize_ip': true });
</script>
<link rel="stylesheet" type="text/css" href="//cdnjs.cloudflare.com/ajax/libs/cookieconsent2/3.1.0/cookieconsent.min.css" />
<script src="//cdnjs.cloudflare.com/ajax/libs/cookieconsent2/3.1.0/cookieconsent.min.js"></script>
<script>
window.addEventListener("load", function() {
window.cookieconsent.initialise({
'palette': {
'popup': {
'background': '#eaf7f7',
'text': '#5c7291'
},
'button': {
'background': '#56cbdb',
'text': '#ffffff'
}
},
'theme': 'edgeless',
'type': 'opt-out',
'onInitialise': function (status) {
if (!this.hasConsented()) {
gaOptout()
}
},
'onStatusChange': function(status, chosenBefore) {
if (!this.hasConsented()) {
gaOptout()
}
},
'onRevokeChoice': function() {
gaOptoutRevoke()
}
})
});
</script>
<meta charset="utf-8">
<title>OpenLayers v<?js= version ?> API - <?js= title ?></title>

View File

@@ -27,6 +27,10 @@ var self = this;
</dt>
<dd class="<?js= (data.stability && data.stability !== 'stable') ? 'unstable' : '' ?>">
<?js if (data.parent && data.parent.kind == 'module' && data.parent.name.split('ol/').length < 3) { ?>
<pre class="prettyprint source"><code>import {<?js= data.name ?>} from '<?js= data.parent.name ?>';</code></pre>
<?js } ?>
<?js if (data.description) { ?>
<div class="description">
<?js= data.description ?>

View File

@@ -10,11 +10,12 @@ function toShortName(name) {
</div>
<ul class="list">
<?js
this.nav.forEach(function (item) {
let navbuilder;
this.nav.forEach(navbuilder = function (item) {
?>
<li class="item" data-name="<?js= item.longname ?>">
<span class="title">
<?js= self.linkto(item.longname, item.longname.replace('module:', '')) ?>
<?js= self.linkto(item.longname, item.type === 'module' ? item.longname.replace('module:', '') : item.name) ?>
<?js if (item.type === 'namespace' &&
(item.members.length + item.typedefs.length + item.methods.length +
item.events.length > 0)) { ?>
@@ -22,6 +23,18 @@ 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

@@ -0,0 +1,64 @@
{
"compilerOptions": {
/* Basic Options */
"target": "ES5", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017','ES2018' or 'ESNEXT'. */
"module": "es2015", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */
// "lib": [], /* Specify library files to be included in the compilation. */
"allowJs": true, /* Allow javascript files to be compiled. */
// "checkJs": true, /* Report errors in .js files. */
// "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */
// "declaration": true, /* Generates corresponding '.d.ts' file. */
// "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */
"sourceMap": true, /* Generates corresponding '.map' file. */
// "outFile": "./", /* Concatenate and emit output to single file. */
"outDir": "../build/ol", /* Redirect output structure to the directory. */
// "rootDir": "./", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */
// "composite": true, /* Enable project compilation */
// "removeComments": true, /* Do not emit comments to output. */
// "noEmit": true, /* Do not emit outputs. */
"importHelpers": false, /* Import emit helpers from 'tslib'. */
// "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */
// "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */
/* Strict Type-Checking Options */
"strict": false, /* Enable all strict type-checking options. */
// "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */
// "strictNullChecks": true, /* Enable strict null checks. */
// "strictFunctionTypes": true, /* Enable strict checking of function types. */
// "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */
// "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */
// "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */
// "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */
/* Additional Checks */
// "noUnusedLocals": true, /* Report errors on unused locals. */
// "noUnusedParameters": true, /* Report errors on unused parameters. */
// "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */
// "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */
/* Module Resolution Options */
"moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */
// "baseUrl": "./", /* Base directory to resolve non-absolute module names. */
// "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */
// "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */
// "typeRoots": [], /* List of folders to include type definitions from. */
// "types": [], /* Type declaration files to be included in compilation. */
// "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */
"esModuleInterop": false, /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */
// "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */
/* Source Map Options */
// "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */
// "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */
// "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */
"inlineSources": false /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */
/* Experimental Options */
// "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */
// "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */
},
"include": [
"../build/ol/src/**/*.js"
],
"exclude": []
}

View File

@@ -111,7 +111,7 @@ Features for `updates` must have an id set by the feature reader or `ol.Feature#
### 28
`renderMode` must be `'image'`, `'hybrid'` or `'vector'`.
`renderMode` must be `'image'` or `'hybrid'`.
### 29
@@ -220,3 +220,19 @@ Duplicate item added to a unique collection. For example, it may be that you tr
### 59
Invalid command found in the PBF. This indicates that the loaded vector tile may be corrupt.
### 60
Missing or invalid `size`.
### 61
Cannot determine IIIF Image API version from provided image information JSON.
### 62
A `WebGLArrayBuffer` must either be of type `ELEMENT_ARRAY_BUFFER` or `ARRAY_BUFFER`.
### 63
Support for the `OES_element_index_uint` WebGL extension is mandatory for WebGL layers.

View File

@@ -21,7 +21,7 @@ Table of contents:
* [Why aren't there any features in my source?](#why-aren-t-there-any-features-in-my-source-)
* [How do I force a re-render of the map?](#how-do-i-force-a-re-render-of-the-map-)
* [Why are my features not found?](#why-are-my-features-not-found-)
* [Why is zooming or clicking off, inaccurate?](#user-content-why-is-zooming-or-clicking-off-inaccurate)
## What projection is OpenLayers using?
@@ -371,3 +371,30 @@ const vectorLayer = new VectorLayer({
```
The recommended value is the size of the largest symbol, line width or label.
## Why is zooming or clicking in the map off/inaccurate?
OpenLayers does not update the map when the container element is resized. This can be caused by progressive updates
to CSS styles or manually resizing the map. When that happens, any interaction will become inaccurate: the map would zoom in and out, and end up not being centered on the pointer. This makes it hard to do certain interactions, e.g. selecting the desired feature.
There is currently no built-in way to react to element's size changes, as [Resize Observer API](https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver) is only implemented in Chrome.
There is however an easy to use [polyfill](https://github.com/que-etc/resize-observer-polyfill):
```javascript
import Map from 'ol/Map';
import ResizeObserver from 'resize-observer-polyfill';
const mapElement = document.querySelector('#map')
const map = new Map({
target: mapElement
})
const sizeObserver = new ResizeObserver(() => {
map.updateSize()
})
sizeObserver.observe(mapElement)
// called when the map is destroyed
// sizeObserver.disconnect()
```

View File

@@ -18,14 +18,14 @@ Below you'll find a complete working example. Create a new file, copy in the co
<!doctype html>
<html lang="en">
<head>
<link rel="stylesheet" href="https://cdn.rawgit.com/openlayers/openlayers.github.io/master/en/{{ latest }}/css/ol.css" type="text/css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/openlayers/openlayers.github.io@master/en/{{ latest }}/css/ol.css" type="text/css">
<style>
.map {
height: 400px;
width: 100%;
}
</style>
<script src="https://cdn.rawgit.com/openlayers/openlayers.github.io/master/en/{{ latest }}/build/ol.js"></script>
<script src="https://cdn.jsdelivr.net/gh/openlayers/openlayers.github.io@master/en/{{ latest }}/build/ol.js"></script>
<title>OpenLayers example</title>
</head>
<body>
@@ -60,7 +60,7 @@ To include a map a web page you will need 3 things:
### Include OpenLayers
```xml
<script src="https://cdn.rawgit.com/openlayers/openlayers.github.io/master/en/{{ latest }}/build/ol.js"></script>
<script src="https://cdn.jsdelivr.net/gh/openlayers/openlayers.github.io@master/en/{{ latest }}/build/ol.js"></script>
```
The first part is to include the JavaScript library. For the purpose of this tutorial, here we simply point to the openlayers.org website to get the whole library. In a production environment, we would build a custom version of the library including only the module needed for our application.

View File

@@ -17,7 +17,7 @@ OpenLayers is available as [`ol` npm package](https://npmjs.com/package/ol), whi
## Renderers and Browser Support
By default, OpenLayers uses a performance optimized Canvas renderer. An experimental WebGL renderer (without text rendering support) is also available.
By default, OpenLayers uses a performance optimized Canvas renderer.
OpenLayers runs on all modern browsers that support [HTML5](https://html.spec.whatwg.org/multipage/) and [ECMAScript 5](http://www.ecma-international.org/ecma-262/5.1/). This includes Chrome, Firefox, Safari and Edge. For older browsers and platforms like Internet Explorer (down to version 9) and Android 4.x, [polyfills](http://polyfill.io), the application bundle needs to be transpiled (e.g. using [Babel](https://babeljs.io)) and bundled with polyfills for `requestAnimationFrame`, `Element.prototype.classList` and `URL`.
@@ -44,6 +44,6 @@ import {Tile, Vector} from 'ol/layer';
In addition to these re-exported classes, modules with lowercase names also provide constants or functions as named exports:
```js
import {inherits} from 'ol';
import {getUid} from 'ol';
import {fromLonLat} from 'ol/proj';
```

View File

@@ -11,9 +11,11 @@ In this tutorial, we will be using [Parcel](https://parceljs.org) to bundle our
## Initial steps
Create a new empty directory for your project and navigate to it by running `mkdir new-project && cd new-project`. Initialize your project using `npm init` and answer the questions asked.
Create a new empty directory for your project and navigate to it by running `mkdir new-project && cd new-project`. Initialize your project with
Add OpenLayers as dependency to your application with
npm init
This will create a `package.json` file in your working directory. Add OpenLayers as dependency to your application with
npm install ol
@@ -69,13 +71,21 @@ You will also need an `index.html` file that will use your bundle. Here is a sim
## Creating a bundle
With simple scripts you can introduce the commands `npm run build` and `npm start` to manually build your bundle and watch for changes, respectively. Add the following to the script section in `package.json`:
With two additional lines in `package.json` you can introduce the commands `npm run build` and `npm start` to manually build your bundle and watch for changes, respectively. The final `package.json` with the two additional commands `"start"` and `"build"` should look like this:
```json
{
"name": "test",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "parcel index.html",
"build": "parcel build --public-url . index.html"
},
"author": "",
"license": "ISC"
}
```
That's it. Now to run your application, enter

View File

@@ -9,6 +9,7 @@
"GyroNorm": false,
"jsPDF": false,
"jsts": false,
"mapboxgl": false,
"saveAs": false,
"toastr": false,
"topojson": false,

View File

@@ -24,9 +24,6 @@ const map = new Map({
source: new OSM()
})
],
// Improve user experience by loading tiles while animating. Will make
// animations stutter on mobile or slow devices.
loadTilesWhileAnimating: true,
view: view
});

View File

@@ -12,9 +12,8 @@ cloak:
<div id="map" class="map"></div>
<select id="layer-select">
<option value="Aerial">Aerial</option>
<option value="AerialWithLabels" selected>Aerial with labels</option>
<option value="Road">Road (static)</option>
<option value="RoadOnDemand">Road (dynamic)</option>
<option value="collinsBart">Collins Bart</option>
<option value="ordnanceSurvey">Ordnance Survey</option>
<option value="AerialWithLabelsOnDemand" selected>Aerial with labels</option>
<option value="RoadOnDemand">Road</option>
<option value="CanvasDark">Road dark</option>
<option value="OrdnanceSurvey">Ordnance Survey</option>
</select>

View File

@@ -5,12 +5,11 @@ import BingMaps from '../src/ol/source/BingMaps.js';
const styles = [
'Road',
'RoadOnDemand',
'Aerial',
'AerialWithLabels',
'collinsBart',
'ordnanceSurvey'
'AerialWithLabelsOnDemand',
'CanvasDark',
'OrdnanceSurvey'
];
const layers = [];
let i, ii;
@@ -29,9 +28,6 @@ for (i = 0, ii = styles.length; i < ii; ++i) {
}
const map = new Map({
layers: layers,
// Improve user experience by loading tiles while dragging/zooming. Will make
// zooming choppy on mobile or slow devices.
loadTilesWhileInteracting: true,
target: 'map',
view: new View({
center: [-6655.5402445057125, 6709968.258934638],

View File

@@ -1,4 +0,0 @@
.map{
background-repeat: repeat;
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAApSURBVBiVY7x///5/BjSgqKjIiC7GhC6ACwygQgxHMzAwMGDz4FDwDAD5/wevjSk4mwAAAABJRU5ErkJggg==);
}

View File

@@ -1,68 +0,0 @@
---
layout: example.html
title: Blend Modes
shortdesc: Shows how to change the canvas compositing / blending mode in post- and precompose eventhandlers.
docs: >
<p>This example shows how to change the canvas compositing / blending mode in
post- and precompose event handlers. The Canvas 2D API provides the property
<code>globalCompositeOperation</code> with which one can influence which
composition operation will be used when drawing on the canvas. The various
options are well described on the <a href="https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/globalCompositeOperation">MDN
documentation page</a>.</p>
<p>In this example three circles on the corners of an equilateral triangle are
drawn with red, green or blue styles respectively. By setting the
<code>globalCompositeOperation</code> you can change how these colors turn out
when they are combined on the map.</p>
<p>You can select an operation in the select-field and you can also control
which layers will be affected by the chosen operation through the layer
checkboxes.</p>
tags: "blendmode, blend-mode, blend mode, blendingmode, blending-mode, blending mode, composition, compositing, canvas, vector"
---
<div id="map" class="map"></div>
<form class="form-horizontal">
<label>
<select id="blend-mode" class="form-control">
<option value="source-over">source-over (default)</option>
<option>source-in</option>
<option>source-out</option>
<option>source-atop</option>
<option>destination-over</option>
<option>destination-in</option>
<option>destination-out</option>
<option>destination-atop</option>
<option>lighter</option>
<option>copy</option>
<option>xor</option>
<option>multiply</option>
<option>screen</option>
<option>overlay</option>
<option>darken</option>
<option>lighten</option>
<option>color-dodge</option>
<option>color-burn</option>
<option>hard-light</option>
<option>soft-light</option>
<option selected>difference</option>
<option>exclusion</option>
<option>hue</option>
<option>saturation</option>
<option>color</option>
<option>luminosity</option>
</select>
Canvas compositing / blending mode
</label>
<label>
<input type="checkbox" id="affect-red" checked>
Red circle affected
</label>
<label>
<input type="checkbox" id="affect-green" checked>
Green circle affected
</label>
<label>
<input type="checkbox" id="affect-blue" checked>
Blue circle affected
</label>
</form>

View File

@@ -1,173 +0,0 @@
import Feature from '../src/ol/Feature.js';
import Map from '../src/ol/Map.js';
import View from '../src/ol/View.js';
import Point from '../src/ol/geom/Point.js';
import VectorLayer from '../src/ol/layer/Vector.js';
import VectorSource from '../src/ol/source/Vector.js';
import {Circle as CircleStyle, Fill, Stroke, Style} from '../src/ol/style.js';
// Create separate layers for red, green an blue circles.
//
// Every layer has one feature that is styled with a circle, together the
// features form the corners of an equilateral triangle and their styles overlap
const redLayer = new VectorLayer({
source: new VectorSource({
features: [new Feature(new Point([0, 0]))]
}),
style: new Style({
image: new CircleStyle({
fill: new Fill({
color: 'rgba(255,0,0,0.8)'
}),
stroke: new Stroke({
color: 'rgb(255,0,0)',
width: 15
}),
radius: 120
})
})
});
const greenLayer = new VectorLayer({
source: new VectorSource({
// 433.013 is roughly 250 * Math.sqrt(3)
features: [new Feature(new Point([250, 433.013]))]
}),
style: new Style({
image: new CircleStyle({
fill: new Fill({
color: 'rgba(0,255,0,0.8)'
}),
stroke: new Stroke({
color: 'rgb(0,255,0)',
width: 15
}),
radius: 120
})
})
});
const blueLayer = new VectorLayer({
source: new VectorSource({
features: [new Feature(new Point([500, 0]))]
}),
style: new Style({
image: new CircleStyle({
fill: new Fill({
color: 'rgba(0,0,255,0.8)'
}),
stroke: new Stroke({
color: 'rgb(0,0,255)',
width: 15
}),
radius: 120
})
})
});
// Create the map, the view is centered on the triangle. Zooming and panning is
// restricted to a sane area
const map = new Map({
layers: [
redLayer,
greenLayer,
blueLayer
],
target: 'map',
view: new View({
center: [250, 220],
extent: [0, 0, 500, 500],
resolution: 4,
minResolution: 2,
maxResolution: 32
})
});
// Get the form elements and bind the listeners
const select = document.getElementById('blend-mode');
const affectRed = document.getElementById('affect-red');
const affectGreen = document.getElementById('affect-green');
const affectBlue = document.getElementById('affect-blue');
/**
* This method sets the globalCompositeOperation to the value of the select
* field and it is bound to the precompose event of the layers.
*
* @param {module:ol/render/Event~RenderEvent} evt The render event.
*/
const setBlendModeFromSelect = function(evt) {
evt.context.globalCompositeOperation = select.value;
};
/**
* This method resets the globalCompositeOperation to the default value of
* 'source-over' and it is bound to the postcompose event of the layers.
*
* @param {module:ol/render/Event~RenderEvent} evt The render event.
*/
const resetBlendModeFromSelect = function(evt) {
evt.context.globalCompositeOperation = 'source-over';
};
/**
* Bind the pre- and postcompose handlers to the passed layer.
*
* @param {module:ol/layer/Vector} layer The layer to bind the handlers to.
*/
const bindLayerListeners = function(layer) {
layer.on('precompose', setBlendModeFromSelect);
layer.on('postcompose', resetBlendModeFromSelect);
};
/**
* Unind the pre- and postcompose handlers to the passed layers.
*
* @param {module:ol/layer/Vector} layer The layer to unbind the handlers from.
*/
const unbindLayerListeners = function(layer) {
layer.un('precompose', setBlendModeFromSelect);
layer.un('postcompose', resetBlendModeFromSelect);
};
/**
* Handler for the click event of the 'affect-XXX' checkboxes.
*
* @this {HTMLInputElement}
*/
const affectLayerClicked = function() {
let layer;
if (this.id == 'affect-red') {
layer = redLayer;
} else if (this.id == 'affect-green') {
layer = greenLayer;
} else {
layer = blueLayer;
}
if (this.checked) {
bindLayerListeners(layer);
} else {
unbindLayerListeners(layer);
}
map.render();
};
// Rerender map when blend mode changes
select.addEventListener('change', function() {
map.render();
});
// Unbind / bind listeners depending on the checked state when the checkboxes
// are clicked
affectRed.addEventListener('click', affectLayerClicked);
affectGreen.addEventListener('click', affectLayerClicked);
affectBlue.addEventListener('click', affectLayerClicked);
// Initially bind listeners
bindLayerListeners(redLayer);
bindLayerListeners(greenLayer);
bindLayerListeners(blueLayer);

View File

@@ -61,8 +61,8 @@ const style = new Style({
* The styling function for the vector layer, will return an array of styles
* which either contains the aboove gradient or pattern.
*
* @param {module:ol/Feature~Feature} feature The feature to style.
* @return {module:ol/style/Style} The style to use for the feature.
* @param {import("../src/ol/Feature.js").default} feature The feature to style.
* @return {Style} The style to use for the feature.
*/
const getStackedStyle = function(feature) {
const id = feature.getId();

View File

@@ -4,10 +4,7 @@ title: Canvas Tiles
shortdesc: Renders tiles with coordinates for debugging.
docs: >
The black grid tiles are generated on the client with an HTML5 canvas. The
displayed tile coordinates are OpenLayers tile coordinates. These increase
from bottom to top, but standard XYZ tiling scheme coordinates increase from
top to bottom. To calculate the `y` for a standard XYZ tile coordinate, use
`-y - 1`.
displayed tile coordinates are the XYZ tile coordinates.
tags: "layers, openstreetmap, canvas"
---
<div id="map" class="map"></div>

View File

@@ -1,26 +1,21 @@
import Map from '../src/ol/Map.js';
import View from '../src/ol/View.js';
import TileLayer from '../src/ol/layer/Tile.js';
import {fromLonLat} from '../src/ol/proj.js';
import {OSM, TileDebug} from '../src/ol/source.js';
const osmSource = new OSM();
const map = new Map({
layers: [
new TileLayer({
source: osmSource
source: new OSM()
}),
new TileLayer({
source: new TileDebug({
projection: 'EPSG:3857',
tileGrid: osmSource.getTileGrid()
})
source: new TileDebug()
})
],
target: 'map',
view: new View({
center: fromLonLat([-0.1275, 51.507222]),
zoom: 10
center: [0, 0],
zoom: 1
})
});

View File

@@ -21,8 +21,6 @@ tags: "center, rotation, openstreetmap"
<div class="padding-bottom"></div>
<div class="center"></div>
</div>
<button id="zoomtoswitzerlandbest">Zoom to Switzerland</button> (best fit),<br/>
<button id="zoomtoswitzerlandconstrained">Zoom to Switzerland</button> (respect resolution constraint).<br/>
<button id="zoomtoswitzerlandnearest">Zoom to Switzerland</button> (nearest),<br/>
<button id="zoomtoswitzerland">Zoom to Switzerland</button> (best fit).<br/>
<button id="zoomtolausanne">Zoom to Lausanne</button> (with min resolution),<br/>
<button id="centerlausanne">Center on Lausanne</button>

View File

@@ -5,6 +5,7 @@ import {Tile as TileLayer, Vector as VectorLayer} from '../src/ol/layer.js';
import {OSM, Vector as VectorSource} from '../src/ol/source.js';
import {Circle as CircleStyle, Fill, Stroke, Style} from '../src/ol/style.js';
/** @type {VectorSource<import("../src/ol/geom/SimpleGeometry.js").default>} */
const source = new VectorSource({
url: 'data/geojson/switzerland.geojson',
format: new GeoJSON()
@@ -47,40 +48,25 @@ const map = new Map({
view: view
});
const zoomtoswitzerlandbest = document.getElementById('zoomtoswitzerlandbest');
zoomtoswitzerlandbest.addEventListener('click', function() {
const zoomtoswitzerland =
document.getElementById('zoomtoswitzerland');
zoomtoswitzerland.addEventListener('click', function() {
const feature = source.getFeatures()[0];
const polygon = /** @type {module:ol/geom/SimpleGeometry~SimpleGeometry} */ (feature.getGeometry());
view.fit(polygon, {padding: [170, 50, 30, 150], constrainResolution: false});
}, false);
const zoomtoswitzerlandconstrained =
document.getElementById('zoomtoswitzerlandconstrained');
zoomtoswitzerlandconstrained.addEventListener('click', function() {
const feature = source.getFeatures()[0];
const polygon = /** @type {module:ol/geom/SimpleGeometry~SimpleGeometry} */ (feature.getGeometry());
const polygon = feature.getGeometry();
view.fit(polygon, {padding: [170, 50, 30, 150]});
}, false);
const zoomtoswitzerlandnearest =
document.getElementById('zoomtoswitzerlandnearest');
zoomtoswitzerlandnearest.addEventListener('click', function() {
const feature = source.getFeatures()[0];
const polygon = /** @type {module:ol/geom/SimpleGeometry~SimpleGeometry} */ (feature.getGeometry());
view.fit(polygon, {padding: [170, 50, 30, 150], nearest: true});
}, false);
const zoomtolausanne = document.getElementById('zoomtolausanne');
zoomtolausanne.addEventListener('click', function() {
const feature = source.getFeatures()[1];
const point = /** @type {module:ol/geom/SimpleGeometry~SimpleGeometry} */ (feature.getGeometry());
const point = feature.getGeometry();
view.fit(point, {padding: [170, 50, 30, 150], minResolution: 50});
}, false);
const centerlausanne = document.getElementById('centerlausanne');
centerlausanne.addEventListener('click', function() {
const feature = source.getFeatures()[1];
const point = /** @type {module:ol/geom/Point~Point} */ (feature.getGeometry());
const size = /** @type {module:ol/size~Size} */ (map.getSize());
const point = feature.getGeometry();
const size = map.getSize();
view.centerOn(point.getCoordinates(), size, [570, 500]);
}, false);

View File

@@ -100,8 +100,7 @@ function xyz2rgb(x) {
const raster = new RasterSource({
sources: [new Stamen({
layer: 'watercolor',
transition: 0
layer: 'watercolor'
})],
operation: function(pixels, data) {
const hcl = rgb2hcl(pixels[0]);

View File

@@ -9,14 +9,11 @@ import OSM from '../src/ol/source/OSM.js';
// Define rotate to north control.
//
/**
* @constructor
* @extends {module:ol/control/Control~Control}
* @param {Object=} opt_options Control options.
*/
class RotateNorthControl extends Control {
/**
* @param {Object=} opt_options Control options.
*/
constructor(opt_options) {
const options = opt_options || {};

View File

@@ -8,10 +8,6 @@ import {TileJSON, Vector as VectorSource} from '../src/ol/source.js';
import {Fill, Icon, Stroke, Style} from '../src/ol/style.js';
/**
* @constructor
* @extends {module:ol/interaction/Pointer}
*/
class Drag extends PointerInteraction {
constructor() {
super({
@@ -22,7 +18,7 @@ class Drag extends PointerInteraction {
});
/**
* @type {module:ol/pixel~Pixel}
* @type {import("../src/ol/coordinate.js").Coordinate}
* @private
*/
this.coordinate_ = null;
@@ -34,7 +30,7 @@ class Drag extends PointerInteraction {
this.cursor_ = 'pointer';
/**
* @type {module:ol/Feature~Feature}
* @type {Feature}
* @private
*/
this.feature_ = null;
@@ -49,7 +45,7 @@ class Drag extends PointerInteraction {
/**
* @param {module:ol/MapBrowserEvent~MapBrowserEvent} evt Map browser event.
* @param {import("../src/ol/MapBrowserEvent.js").default} evt Map browser event.
* @return {boolean} `true` to start the drag sequence.
*/
function handleDownEvent(evt) {
@@ -70,7 +66,7 @@ function handleDownEvent(evt) {
/**
* @param {module:ol/MapBrowserEvent~MapBrowserEvent} evt Map browser event.
* @param {import("../src/ol/MapBrowserEvent.js").default} evt Map browser event.
*/
function handleDragEvent(evt) {
const deltaX = evt.coordinate[0] - this.coordinate_[0];
@@ -85,7 +81,7 @@ function handleDragEvent(evt) {
/**
* @param {module:ol/MapBrowserEvent~MapBrowserEvent} evt Event.
* @param {import("../src/ol/MapBrowserEvent.js").default} evt Event.
*/
function handleMoveEvent(evt) {
if (this.cursor_) {
@@ -133,7 +129,7 @@ const map = new Map({
layers: [
new TileLayer({
source: new TileJSON({
url: 'https://api.tiles.mapbox.com/v3/mapbox.geography-class.json?secure'
url: 'https://a.tiles.mapbox.com/v3/aj.1x1-degrees.json'
})
}),
new VectorLayer({
@@ -141,13 +137,13 @@ const map = new Map({
features: [pointFeature, lineFeature, polygonFeature]
}),
style: new Style({
image: new Icon(/** @type {module:ol/style/Icon~Options} */ ({
image: new Icon({
anchor: [0.5, 46],
anchorXUnits: 'fraction',
anchorYUnits: 'pixels',
opacity: 0.95,
src: 'data/icon.png'
})),
}),
stroke: new Stroke({
width: 3,
color: [255, 0, 0, 1]

4
examples/d3.css Normal file
View File

@@ -0,0 +1,4 @@
path.boundary {
fill: none;
stroke: #777;
}

View File

@@ -3,10 +3,10 @@ layout: example.html
title: d3 Integration
shortdesc: Example of using OpenLayers and d3 together.
docs: >
<p>The example loads TopoJSON geometries and uses d3 (<code>d3.geo.path</code>) to render these geometries to a canvas element that is then used as the image of an OpenLayers image layer.</p>
The example loads TopoJSON geometries and uses d3 (<code>d3.geo.path</code>) to render these geometries to a SVG element.
tags: "d3"
resources:
- https://unpkg.com/d3@4.12.0/build/d3.js
- https://unpkg.com/d3@5.9.2/dist/d3.js
- https://unpkg.com/topojson@3.0.2/dist/topojson.js
---
<div id="map" class="map"></div>

124
examples/d3.js vendored
View File

@@ -1,10 +1,70 @@
import Map from '../src/ol/Map.js';
import View from '../src/ol/View.js';
import {getWidth, getCenter} from '../src/ol/extent.js';
import {Image as ImageLayer, Tile as TileLayer} from '../src/ol/layer.js';
import {Layer, Tile as TileLayer} from '../src/ol/layer.js';
import SourceState from '../src/ol/source/State.js';
import {fromLonLat, toLonLat} from '../src/ol/proj.js';
import {ImageCanvas as ImageCanvasSource, Stamen} from '../src/ol/source.js';
import Stamen from '../src/ol/source/Stamen.js';
class CanvasLayer extends Layer {
constructor(options) {
super(options);
this.features = options.features;
this.svg = d3.select(document.createElement('div')).append('svg')
.style('position', 'absolute');
this.svg.append('path')
.datum(this.features)
.attr('class', 'boundary');
}
getSourceState() {
return SourceState.READY;
}
render(frameState) {
const width = frameState.size[0];
const height = frameState.size[1];
const projection = frameState.viewState.projection;
const d3Projection = d3.geoMercator().scale(1).translate([0, 0]);
let d3Path = d3.geoPath().projection(d3Projection);
const pixelBounds = d3Path.bounds(this.features);
const pixelBoundsWidth = pixelBounds[1][0] - pixelBounds[0][0];
const pixelBoundsHeight = pixelBounds[1][1] - pixelBounds[0][1];
const geoBounds = d3.geoBounds(this.features);
const geoBoundsLeftBottom = fromLonLat(geoBounds[0], projection);
const geoBoundsRightTop = fromLonLat(geoBounds[1], projection);
let geoBoundsWidth = geoBoundsRightTop[0] - geoBoundsLeftBottom[0];
if (geoBoundsWidth < 0) {
geoBoundsWidth += getWidth(projection.getExtent());
}
const geoBoundsHeight = geoBoundsRightTop[1] - geoBoundsLeftBottom[1];
const widthResolution = geoBoundsWidth / pixelBoundsWidth;
const heightResolution = geoBoundsHeight / pixelBoundsHeight;
const r = Math.max(widthResolution, heightResolution);
const scale = r / frameState.viewState.resolution;
const center = toLonLat(getCenter(frameState.extent), projection);
d3Projection.scale(scale).center(center).translate([width / 2, height / 2]);
d3Path = d3Path.projection(d3Projection);
d3Path(this.features);
this.svg.attr('width', width);
this.svg.attr('height', height);
this.svg.select('path')
.attr('d', d3Path);
return this.svg.node();
}
}
const map = new Map({
layers: [
@@ -25,63 +85,11 @@ const map = new Map({
/**
* Load the topojson data and create an ol/layer/Image for that data.
*/
d3.json('data/topojson/us.json', function(error, us) {
const features = topojson.feature(us, us.objects.counties);
d3.json('data/topojson/us.json').then(function(us) {
/**
* This function uses d3 to render the topojson features to a canvas.
* @param {module:ol/extent~Extent} extent Extent.
* @param {number} resolution Resolution.
* @param {number} pixelRatio Pixel ratio.
* @param {module:ol/size~Size} size Size.
* @param {module:ol/proj/Projection~Projection} projection Projection.
* @return {HTMLCanvasElement} A canvas element.
*/
const canvasFunction = function(extent, resolution, pixelRatio, size, projection) {
const canvasWidth = size[0];
const canvasHeight = size[1];
const canvas = d3.select(document.createElement('canvas'));
canvas.attr('width', canvasWidth).attr('height', canvasHeight);
const context = canvas.node().getContext('2d');
const d3Projection = d3.geoMercator().scale(1).translate([0, 0]);
let d3Path = d3.geoPath().projection(d3Projection);
const pixelBounds = d3Path.bounds(features);
const pixelBoundsWidth = pixelBounds[1][0] - pixelBounds[0][0];
const pixelBoundsHeight = pixelBounds[1][1] - pixelBounds[0][1];
const geoBounds = d3.geoBounds(features);
const geoBoundsLeftBottom = fromLonLat(geoBounds[0], projection);
const geoBoundsRightTop = fromLonLat(geoBounds[1], projection);
let geoBoundsWidth = geoBoundsRightTop[0] - geoBoundsLeftBottom[0];
if (geoBoundsWidth < 0) {
geoBoundsWidth += getWidth(projection.getExtent());
}
const geoBoundsHeight = geoBoundsRightTop[1] - geoBoundsLeftBottom[1];
const widthResolution = geoBoundsWidth / pixelBoundsWidth;
const heightResolution = geoBoundsHeight / pixelBoundsHeight;
const r = Math.max(widthResolution, heightResolution);
const scale = r / (resolution / pixelRatio);
const center = toLonLat(getCenter(extent), projection);
d3Projection.scale(scale).center(center)
.translate([canvasWidth / 2, canvasHeight / 2]);
d3Path = d3Path.projection(d3Projection).context(context);
d3Path(features);
context.stroke();
return canvas.node();
};
const layer = new ImageLayer({
source: new ImageCanvasSource({
canvasFunction: canvasFunction,
projection: 'EPSG:3857'
})
const layer = new CanvasLayer({
features: topojson.feature(us, us.objects.counties)
});
map.addLayer(layer);
});

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

7
examples/data/square.svg Normal file
View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="20" height="20" xmlns="http://www.w3.org/2000/svg">
<g>
<rect width="20" height="20" style="fill:#fff" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 194 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

View File

@@ -29,7 +29,7 @@ gn.init().then(function() {
gn.start(function(event) {
const center = view.getCenter();
const resolution = view.getResolution();
const alpha = toRadians(event.do.beta);
const alpha = toRadians(event.do.alpha);
const beta = toRadians(event.do.beta);
const gamma = toRadians(event.do.gamma);
@@ -40,6 +40,6 @@ gn.init().then(function() {
center[0] -= resolution * gamma * 25;
center[1] += resolution * beta * 25;
view.setCenter(view.constrainCenter(center));
view.setCenter(center);
});
});

View File

@@ -3,7 +3,7 @@ layout: example.html
title: Drag-and-Drop Image Vector
shortdesc: Example of using the drag-and-drop interaction with image vector rendering.
docs: >
Example of using the drag-and-drop interaction with an `ol/layer/Vector` with `renderMode: 'image'`. Drag and drop GPX, GeoJSON, IGC, KML, or TopoJSON files on to the map. Each file is rendered to an image on the client.
Example of using the drag-and-drop interaction with an `ol/layer/VectorImage` layer. Drag and drop GPX, GeoJSON, IGC, KML, or TopoJSON files on to the map. Each file is rendered to an image on the client.
tags: "drag-and-drop-image-vector, gpx, geojson, igc, kml, topojson, vector, image"
cloak:
- key: As1HiMj1PvLPlqc_gtM7AqZfBL8ZL3VrjaS3zIb22Uvb9WKhuJObROC-qUpa81U5

View File

@@ -2,7 +2,7 @@ import Map from '../src/ol/Map.js';
import View from '../src/ol/View.js';
import {GPX, GeoJSON, IGC, KML, TopoJSON} from '../src/ol/format.js';
import {defaults as defaultInteractions, DragAndDrop} from '../src/ol/interaction.js';
import {Vector as VectorLayer, Tile as TileLayer} from '../src/ol/layer.js';
import {VectorImage as VectorImageLayer, Tile as TileLayer} from '../src/ol/layer.js';
import {BingMaps, Vector as VectorSource} from '../src/ol/source.js';
const dragAndDropInteraction = new DragAndDrop({
@@ -36,8 +36,7 @@ dragAndDropInteraction.on('addfeatures', function(event) {
const vectorSource = new VectorSource({
features: event.features
});
map.addLayer(new VectorLayer({
renderMode: 'image',
map.addLayer(new VectorImageLayer({
source: vectorSource
}));
map.getView().fit(vectorSource.getExtent());

View File

@@ -4,14 +4,14 @@ import {MultiPoint, Point} from '../src/ol/geom.js';
import TileLayer from '../src/ol/layer/Tile.js';
import OSM from '../src/ol/source/OSM.js';
import {Circle as CircleStyle, Fill, Stroke, Style} from '../src/ol/style.js';
import {getVectorContext} from '../src/ol/render.js';
const tileLayer = new TileLayer({
source: new OSM()
});
const map = new Map({
layers: [
new TileLayer({
source: new OSM()
})
],
layers: [tileLayer],
target: 'map',
view: new View({
center: [0, 0],
@@ -46,8 +46,8 @@ const omegaTheta = 30000; // Rotation period in ms
const R = 7e6;
const r = 2e6;
const p = 2e6;
map.on('postcompose', function(event) {
const vectorContext = event.vectorContext;
tileLayer.on('postrender', function(event) {
const vectorContext = getVectorContext(event);
const frameState = event.frameState;
const theta = 2 * Math.PI * frameState.time / omegaTheta;
const coordinates = [];

View File

@@ -1,18 +0,0 @@
#map {
position: relative;
}
#info {
position: absolute;
height: 1px;
width: 1px;
z-index: 100;
}
.tooltip.in {
opacity: 1;
}
.tooltip.top .tooltip-arrow {
border-top-color: white;
}
.tooltip-inner {
border: 2px solid white;
}

View File

@@ -26,9 +26,8 @@ const styleFunction = function(feature) {
scale = size / 10;
let style = styleCache[size];
if (!style) {
const canvas = /** @type {HTMLCanvasElement} */ (document.createElement('canvas'));
const vectorContext = toContext(
/** @type {CanvasRenderingContext2D} */ (canvas.getContext('2d')),
const canvas = document.createElement('canvas');
const vectorContext = toContext(canvas.getContext('2d'),
{size: [size, size], pixelRatio: 1});
vectorContext.setStyle(new Style({
fill: new Fill({color: 'rgba(255, 153, 0, 0.4)'}),

6
examples/export-map.css Normal file
View File

@@ -0,0 +1,6 @@
.overlay {
background-color: yellow;
border-radius: 6px;
padding: 4px;
white-space: nowrap;
}

View File

@@ -3,12 +3,13 @@ layout: example.html
title: Map Export
shortdesc: Example of exporting a map as a PNG image.
docs: >
Example of exporting a map as a PNG image. This example requires a browser
that supports <a href="https://developer.mozilla.org/de/docs/Web/API/HTMLCanvasElement/toBlob#Browser_compatibility">
<code>canvas.toBlob()</code></a>.
Example of exporting a map as a PNG image. This example use the <a href="https://www.npmjs.com/package/html-to-image">html-to-image</a>
library.
tags: "export, png, openstreetmap"
resources:
- https://cdnjs.cloudflare.com/ajax/libs/FileSaver.js/1.3.3/FileSaver.min.js
---
<div id="map" class="map"></div>
<div style="display: none;">
<div class="overlay" id="null">Null Island</div>
</div>
<a id="export-png" class="btn btn-default"><i class="fa fa-download"></i> Download PNG</a>
<a id="image-download" download="map.png"></a>

View File

@@ -1,9 +1,12 @@
import Map from '../src/ol/Map.js';
import View from '../src/ol/View.js';
import Overlay from '../src/ol/Overlay.js';
import GeoJSON from '../src/ol/format/GeoJSON.js';
import {Tile as TileLayer, Vector as VectorLayer} from '../src/ol/layer.js';
import {OSM, Vector as VectorSource} from '../src/ol/source.js';
import {toPng} from 'html-to-image';
const map = new Map({
layers: [
new TileLayer({
@@ -23,16 +26,28 @@ const map = new Map({
})
});
document.getElementById('export-png').addEventListener('click', function() {
map.once('rendercomplete', function(event) {
const canvas = event.context.canvas;
if (navigator.msSaveBlob) {
navigator.msSaveBlob(canvas.msToBlob(), 'map.png');
} else {
canvas.toBlob(function(blob) {
saveAs(blob, 'map.png');
});
map.addOverlay(new Overlay({
position: [0, 0],
element: document.getElementById('null')
}));
// export options for html-to-image.
// See: https://github.com/bubkoo/html-to-image#options
const exportOptions = {
filter: function(element) {
return element.className ? element.className.indexOf('ol-control') === -1 : true;
}
};
document.getElementById('export-png').addEventListener('click', function() {
map.once('rendercomplete', function() {
toPng(map.getTargetElement(), exportOptions)
.then(function(dataURL) {
const link = document.getElementById('image-download');
link.href = dataURL;
link.click();
});
});
map.renderSync();
});

View File

@@ -4,6 +4,8 @@ import WKT from '../src/ol/format/WKT.js';
import {Tile as TileLayer, Vector as VectorLayer} from '../src/ol/layer.js';
import {OSM, Vector as VectorSource} from '../src/ol/source.js';
import {toJpeg} from 'html-to-image';
const raster = new TileLayer({
source: new OSM()
});
@@ -41,6 +43,15 @@ const dims = {
a5: [210, 148]
};
// export options for html-to-image.
// See: https://github.com/bubkoo/html-to-image#options
const exportOptions = {
filter: function(element) {
return element.className.indexOf('ol-control') === -1;
}
};
const exportButton = document.getElementById('export-pdf');
exportButton.addEventListener('click', function() {
@@ -53,21 +64,23 @@ exportButton.addEventListener('click', function() {
const dim = dims[format];
const width = Math.round(dim[0] * resolution / 25.4);
const height = Math.round(dim[1] * resolution / 25.4);
const size = /** @type {module:ol/size~Size} */ (map.getSize());
const size = map.getSize();
const extent = map.getView().calculateExtent(size);
map.once('rendercomplete', function(event) {
const canvas = event.context.canvas;
const data = canvas.toDataURL('image/jpeg');
map.once('rendercomplete', function() {
toJpeg(map.getTargetElement(), exportOptions).then(function(dataUrl) {
const pdf = new jsPDF('landscape', undefined, format);
pdf.addImage(data, 'JPEG', 0, 0, dim[0], dim[1]);
pdf.addImage(dataUrl, 'JPEG', 0, 0, dim[0], dim[1]);
pdf.save('map.pdf');
// Reset original map size
map.setSize(size);
map.getView().fit(extent, {size});
map.getView().fit(extent, {
size: size
});
exportButton.disabled = false;
document.body.style.cursor = 'auto';
});
});
// Set print size
const printSize = [width, height];

View File

@@ -0,0 +1,9 @@
---
layout: example.html
title: Constrained Extent
shortdesc: Example of a view with a constrained extent.
docs: >
This map has a view that is constrained in an extent. This is done using the `extent` view option. Please note that specifying `constrainOnlyCenter: true` would only apply the extent restriction to the view center.
tags: "view, extent, constrain, restrict"
---
<div id="map" class="map"></div>

View File

@@ -0,0 +1,25 @@
import Map from '../src/ol/Map.js';
import View from '../src/ol/View.js';
import TileLayer from '../src/ol/layer/Tile.js';
import OSM from '../src/ol/source/OSM.js';
import {defaults as defaultControls} from '../src/ol/control.js';
import ZoomSlider from '../src/ol/control/ZoomSlider.js';
const view = new View({
center: [328627.563458, 5921296.662223],
zoom: 8,
extent: [-572513.341856, 5211017.966314,
916327.095083, 6636950.728974]
});
new Map({
layers: [
new TileLayer({
source: new OSM()
})
],
keyboardEventTarget: document,
target: 'map',
view: view,
controls: defaultControls().extend([new ZoomSlider()])
});

View File

@@ -1,6 +1,5 @@
import Map from '../src/ol/Map.js';
import View from '../src/ol/View.js';
import {platformModifierKeyOnly} from '../src/ol/events/condition.js';
import GeoJSON from '../src/ol/format/GeoJSON.js';
import ExtentInteraction from '../src/ol/interaction/Extent.js';
import {Tile as TileLayer, Vector as VectorLayer} from '../src/ol/layer.js';
@@ -27,9 +26,7 @@ const map = new Map({
})
});
const extent = new ExtentInteraction({
condition: platformModifierKeyOnly
});
const extent = new ExtentInteraction();
map.addInteraction(extent);
extent.setActive(false);

View File

@@ -3,7 +3,7 @@ layout: example.html
title: Custom Animation
shortdesc: Demonstrates how to animate features.
docs: >
This example shows how to use <b>postcompose</b> and <b>vectorContext</b> to
This example shows how to use <b>postrender</b> and <b>vectorContext</b> to
animate features. Here we choose to do a flash animation each time a feature
is added to the layer.
tags: "animation, vector, feature, flash"

View File

@@ -8,16 +8,16 @@ import {Tile as TileLayer, Vector as VectorLayer} from '../src/ol/layer.js';
import {fromLonLat} from '../src/ol/proj.js';
import {OSM, Vector as VectorSource} from '../src/ol/source.js';
import {Circle as CircleStyle, Stroke, Style} from '../src/ol/style.js';
import {getVectorContext} from '../src/ol/render.js';
const map = new Map({
layers: [
new TileLayer({
const tileLayer = new TileLayer({
source: new OSM({
wrapX: false
})
})
],
});
const map = new Map({
layers: [tileLayer],
target: 'map',
view: new View({
center: [0, 0],
@@ -44,10 +44,10 @@ function addRandomFeature() {
const duration = 3000;
function flash(feature) {
const start = new Date().getTime();
const listenerKey = map.on('postcompose', animate);
const listenerKey = tileLayer.on('postrender', animate);
function animate(event) {
const vectorContext = event.vectorContext;
const vectorContext = getVectorContext(event);
const frameState = event.frameState;
const flashGeom = feature.getGeometry().clone();
const elapsed = frameState.time - start;
@@ -72,7 +72,7 @@ function flash(feature) {
unByKey(listenerKey);
return;
}
// tell OpenLayers to continue postcompose animation
// tell OpenLayers to continue postrender animation
map.render();
}
}

View File

@@ -3,10 +3,10 @@ layout: example.html
title: Marker Animation
shortdesc: Demonstrates how to move a feature along a line.
docs: >
This example shows how to use <b>postcompose</b> and <b>vectorContext</b> to
animate a (marker) feature along a line. In this example an encoded polyline
This example shows how to use <b>postrender</b> events and a <b>vector context</b> to
animate a marker feature along a line. In this example an encoded polyline
is being used.
tags: "animation, feature, postcompose, polyline"
tags: "animation, feature, postrender, polyline"
cloak:
- key: As1HiMj1PvLPlqc_gtM7AqZfBL8ZL3VrjaS3zIb22Uvb9WKhuJObROC-qUpa81U5
value: Your Bing Maps Key from http://www.bingmapsportal.com/ here

View File

@@ -7,6 +7,7 @@ import {Tile as TileLayer, Vector as VectorLayer} from '../src/ol/layer.js';
import BingMaps from '../src/ol/source/BingMaps.js';
import VectorSource from '../src/ol/source/Vector.js';
import {Circle as CircleStyle, Fill, Icon, Stroke, Style} from '../src/ol/style.js';
import {getVectorContext} from '../src/ol/render.js';
// This long string is placed here due to jsFiddle limitations.
// It is usually loaded with AJAX.
@@ -52,7 +53,7 @@ const polyline = [
'~@ym@yjA??a@cFd@kBrCgDbAUnAcBhAyAdk@et@??kF}D??OL'
].join('');
const route = /** @type {module:ol/geom/LineString~LineString} */ (new Polyline({
const route = /** @type {import("../src/ol/geom/LineString.js").default} */ (new Polyline({
factor: 1e6
}).readGeometry(polyline, {
dataProjection: 'EPSG:4326',
@@ -66,10 +67,10 @@ const routeFeature = new Feature({
type: 'route',
geometry: route
});
const geoMarker = new Feature({
const geoMarker = /** @type Feature<import("../src/ol/geom/Point").default> */(new Feature({
type: 'geoMarker',
geometry: new Point(routeCoords[0])
});
}));
const startMarker = new Feature({
type: 'icon',
geometry: new Point(routeCoords[0])
@@ -123,7 +124,6 @@ const vectorLayer = new VectorLayer({
const center = [-5639523.95, -3501274.52];
const map = new Map({
target: document.getElementById('map'),
loadTilesWhileAnimating: true,
view: new View({
center: center,
zoom: 10,
@@ -133,7 +133,7 @@ const map = new Map({
layers: [
new TileLayer({
source: new BingMaps({
imagerySet: 'AerialWithLabels',
imagerySet: 'AerialWithLabelsOnDemand',
key: 'As1HiMj1PvLPlqc_gtM7AqZfBL8ZL3VrjaS3zIb22Uvb9WKhuJObROC-qUpa81U5'
})
}),
@@ -142,7 +142,7 @@ const map = new Map({
});
const moveFeature = function(event) {
const vectorContext = event.vectorContext;
const vectorContext = getVectorContext(event);
const frameState = event.frameState;
if (animating) {
@@ -160,7 +160,7 @@ const moveFeature = function(event) {
const feature = new Feature(currentPoint);
vectorContext.drawFeature(feature, styles.geoMarker);
}
// tell OpenLayers to continue the postcompose animation
// tell OpenLayers to continue the postrender animation
map.render();
};
@@ -176,7 +176,7 @@ function startAnimation() {
geoMarker.setStyle(null);
// just in case you pan somewhere else
map.getView().setCenter(center);
map.on('postcompose', moveFeature);
vectorLayer.on('postrender', moveFeature);
map.render();
}
}
@@ -191,10 +191,10 @@ function stopAnimation(ended) {
// if animation cancelled set the marker at the beginning
const coord = ended ? routeCoords[routeLength - 1] : routeCoords[0];
/** @type {module:ol/geom/Point~Point} */ (geoMarker.getGeometry())
.setCoordinates(coord);
const geometry = geoMarker.getGeometry();
geometry.setCoordinates(coord);
//remove listener
map.un('postcompose', moveFeature);
vectorLayer.un('postrender', moveFeature);
}
startButton.addEventListener('click', startAnimation, false);

View File

@@ -0,0 +1,25 @@
---
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
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.
tags: "webgl, icon, sprite, filter, feature"
---
<div id="map" class="map"></div>
<form>
<div id="status">Show impacts between <span class="min-year"></span> and <span class="max-year"></span></div>
<label>Minimum year:</label>
<input id="min-year" type="range" min="1850" max="2015" step="1" value="1850"/>
<label>Maximum year:</label>
<input id="max-year" type="range" min="1850" max="2015" step="1" value="2015"/>
</form>

View File

@@ -0,0 +1,163 @@
import Map from '../src/ol/Map.js';
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';
const vectorSource = new Vector({
attributions: 'NASA'
});
const oldColor = [180, 140, 140];
const newColor = [255, 80, 80];
const startTime = Date.now() * 0.001;
// hanle input values & events
const minYearInput = document.getElementById('min-year');
const maxYearInput = document.getElementById('max-year');
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);
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() {
const csv = client.responseText;
const features = [];
let prevIndex = csv.indexOf('\n') + 1; // scan past the header line
let curIndex;
while ((curIndex = csv.indexOf('\n', prevIndex)) != -1) {
const line = csv.substr(prevIndex, curIndex - prevIndex).split(',');
prevIndex = curIndex + 1;
const coords = fromLonLat([parseFloat(line[4]), parseFloat(line[3])]);
if (isNaN(coords[0]) || isNaN(coords[1])) {
// guard against bad data
continue;
}
features.push(new Feature({
mass: parseFloat(line[1]) || 0,
year: parseInt(line[2]) || 0,
geometry: new Point(coords)
}));
}
vectorSource.addFeatures(features);
};
client.send();
}
loadData();
const map = new Map({
layers: [
new TileLayer({
source: new Stamen({
layer: 'toner'
})
}),
new WebglPointsLayer({
source: vectorSource
})
],
target: document.getElementById('map'),
view: new View({
center: [0, 0],
zoom: 2
})
});
// animate the map
function animate() {
map.render();
window.requestAnimationFrame(animate);
}
animate();

View File

@@ -1,12 +1,12 @@
---
layout: example.html
title: Flight Animation
shortdesc: Demonstrates how to animate flights with ´postcompose´.
shortdesc: Demonstrates how to animate flights with ´postrender´.
docs: >
This example shows how to use <b>postcompose</b> and <b>vectorContext</b> to
This example shows how to use <b>postrender</b> and <b>vectorContext</b> to
animate flights. A great circle arc between two airports is calculated using
<a href="https://github.com/springmeyer/arc.js">arc.js</a> and then the flight
paths are animated with <b>postcompose</b>. The flight data is provided by
paths are animated with <b>postrender</b>. The flight data is provided by
<a href="http://openflights.org/data.html">OpenFlights</a> (a simplified data
set from the <a href="https://www.mapbox.com/mapbox.js/example/v1.0.0/animating-flight-paths/">
Mapbox.js documentation</a> is used).

View File

@@ -6,14 +6,17 @@ import {Tile as TileLayer, Vector as VectorLayer} from '../src/ol/layer.js';
import Stamen from '../src/ol/source/Stamen.js';
import VectorSource from '../src/ol/source/Vector.js';
import {Stroke, Style} from '../src/ol/style.js';
import {getVectorContext} from '../src/ol/render.js';
const map = new Map({
layers: [
new TileLayer({
const tileLayer = new TileLayer({
source: new Stamen({
layer: 'toner'
})
})
});
const map = new Map({
layers: [
tileLayer
],
target: 'map',
view: new View({
@@ -63,7 +66,7 @@ const flightsSource = new VectorSource({
addLater(feature, i * 50);
}
}
map.on('postcompose', animateFlights);
tileLayer.on('postrender', animateFlights);
});
}
});
@@ -85,7 +88,7 @@ map.addLayer(flightsLayer);
const pointsPerMs = 0.1;
function animateFlights(event) {
const vectorContext = event.vectorContext;
const vectorContext = getVectorContext(event);
const frameState = event.frameState;
vectorContext.setStyle(style);

View File

@@ -1,8 +1,6 @@
.map:-moz-full-screen {
height: 100%;
}
.map:-webkit-full-screen {
height: 100%;
margin: 0;
}
.map:-ms-fullscreen {
height: 100%;

View File

@@ -1,8 +1,6 @@
.fullscreen:-moz-full-screen {
height: 100%;
}
.fullscreen:-webkit-full-screen {
height: 100%;
margin: 0;
}
.fullscreen:-ms-fullscreen {
height: 100%;

View File

@@ -1,8 +1,6 @@
.map:-moz-full-screen {
height: 100%;
}
.map:-webkit-full-screen {
height: 100%;
margin: 0;
}
.map:-ms-fullscreen {
height: 100%;

View File

@@ -6,7 +6,7 @@ import VectorTileSource from '../src/ol/source/VectorTile.js';
import {Tile as TileLayer, VectorTile as VectorTileLayer} from '../src/ol/layer.js';
import Projection from '../src/ol/proj/Projection.js';
// Converts geojson-vt data to GeoJSON
const replacer = function(key, value) {
if (value.geometry) {
let type;
@@ -46,11 +46,6 @@ const replacer = function(key, value) {
}
};
const tilePixels = new Projection({
code: 'TILE_PIXELS',
units: 'tile-pixels'
});
const map = new Map({
layers: [
new TileLayer({
@@ -73,23 +68,22 @@ fetch(url).then(function(response) {
debug: 1
});
const vectorSource = new VectorTileSource({
format: new GeoJSON(),
tileLoadFunction: function(tile) {
const format = tile.getFormat();
const tileCoord = tile.getTileCoord();
const data = tileIndex.getTile(tileCoord[0], tileCoord[1], -tileCoord[2] - 1);
const features = format.readFeatures(
JSON.stringify({
format: new GeoJSON({
// Data returned from geojson-vt is in tile pixel units
dataProjection: new Projection({
code: 'TILE_PIXELS',
units: 'tile-pixels',
extent: [0, 0, 4096, 4096]
})
}),
tileUrlFunction: function(tileCoord) {
const data = tileIndex.getTile(tileCoord[0], tileCoord[1], tileCoord[2]);
const geojson = JSON.stringify({
type: 'FeatureCollection',
features: data ? data.features : []
}, replacer));
tile.setLoader(function() {
tile.setFeatures(features);
tile.setProjection(tilePixels);
});
},
url: 'data:' // arbitrary url, we don't use it in the tileLoadFunction
}, replacer);
return 'data:application/json;charset=UTF-8,' + geojson;
}
});
const vectorLayer = new VectorTileLayer({
source: vectorSource

View File

@@ -13,13 +13,13 @@ const view = new View({
zoom: 19
});
const tileLayer = new TileLayer({
source: new OSM()
});
// creating the map
const map = new Map({
layers: [
new TileLayer({
source: new OSM()
})
],
layers: [tileLayer],
target: 'map',
view: view
});
@@ -36,7 +36,7 @@ map.addOverlay(marker);
// LineString to store the different geolocation positions. This LineString
// is time aware.
// The Z dimension is actually used to store the rotation (heading).
const positions = new LineString([], /** @type {module:ol/geom/GeometryLayout} */ ('XYZM'));
const positions = new LineString([], 'XYZM');
// Geolocation Control
const geolocation = new Geolocation({
@@ -155,7 +155,7 @@ const geolocateBtn = document.getElementById('geolocate');
geolocateBtn.addEventListener('click', function() {
geolocation.setTracking(true); // Start position tracking
map.on('postcompose', updateView);
tileLayer.on('postrender', updateView);
map.render();
disableButtons();
@@ -197,7 +197,7 @@ simulateBtn.addEventListener('click', function() {
}
geolocate();
map.on('postcompose', updateView);
tileLayer.on('postrender', updateView);
map.render();
disableButtons();

View File

@@ -33,8 +33,11 @@ map.on('singleclick', function(evt) {
evt.coordinate, viewResolution, 'EPSG:3857',
{'INFO_FORMAT': 'text/html'});
if (url) {
document.getElementById('info').innerHTML =
'<iframe seamless src="' + url + '"></iframe>';
fetch(url)
.then((response) => response.text())
.then((html) => {
document.getElementById('info').innerHTML = html;
});
}
});

View File

@@ -33,8 +33,11 @@ map.on('singleclick', function(evt) {
evt.coordinate, viewResolution, 'EPSG:3857',
{'INFO_FORMAT': 'text/html'});
if (url) {
document.getElementById('info').innerHTML =
'<iframe seamless src="' + url + '"></iframe>';
fetch(url)
.then((response) => response.text())
.then((html) => {
document.getElementById('info').innerHTML = html;
});
}
});

View File

@@ -1,9 +1,9 @@
---
layout: example.html
title: Map Graticule
shortdesc: This example shows how to add a graticule overlay to a map.
shortdesc: This example shows how to add a graticule layer to a map.
docs: >
This example shows how to add a graticule overlay to a map.
This example shows how to add a graticule layer to a map.
tags: "graticule"
---
<div id="map" class="map"></div>

View File

@@ -1,4 +1,4 @@
import Graticule from '../src/ol/Graticule.js';
import Graticule from '../src/ol/layer/Graticule.js';
import Map from '../src/ol/Map.js';
import View from '../src/ol/View.js';
import TileLayer from '../src/ol/layer/Tile.js';
@@ -13,6 +13,16 @@ const map = new Map({
source: new OSM({
wrapX: false
})
}),
new Graticule({
// the style to use for the lines, optional.
strokeStyle: new Stroke({
color: 'rgba(255,120,0,0.9)',
width: 2,
lineDash: [0.5, 4]
}),
showLabels: true,
wrapX: false
})
],
target: 'map',
@@ -21,16 +31,3 @@ const map = new Map({
zoom: 5
})
});
// Create the graticule component
const graticule = new Graticule({
// the style to use for the lines, optional.
strokeStyle: new Stroke({
color: 'rgba(255,120,0,0.9)',
width: 2,
lineDash: [0.5, 4]
}),
showLabels: true
});
graticule.setMap(map);

View File

@@ -4,7 +4,7 @@ title: Earthquakes Heatmap
shortdesc: Demonstrates the use of a heatmap layer.
docs: >
This example parses a KML file and renders the features as a <code>ol/layer/Heatmap</code> layer.
tags: "heatmap, kml, vector, style"
tags: "heatmap, kml, vector, style, webgl"
---
<div id="map" class="map"></div>
<form>

View File

@@ -43,11 +43,14 @@ const map = new Map({
})
});
blur.addEventListener('input', function() {
const blurHandler = function() {
vector.setBlur(parseInt(blur.value, 10));
});
};
blur.addEventListener('input', blurHandler);
blur.addEventListener('change', blurHandler);
radius.addEventListener('input', function() {
const radiusHandler = function() {
vector.setRadius(parseInt(radius.value, 10));
});
};
radius.addEventListener('input', radiusHandler);
radius.addEventListener('change', radiusHandler);

View File

@@ -69,9 +69,6 @@ for (i = 0, ii = hereLayers.length; i < ii; ++i) {
const map = new Map({
layers: layers,
// Improve user experience by loading tiles while dragging/zooming. Will make
// zooming choppy on mobile or slow devices.
loadTilesWhileInteracting: true,
target: 'map',
view: new View({
center: [921371.9389, 6358337.7609],

View File

@@ -1,3 +0,0 @@
#map {
position: relative;
}

View File

@@ -22,27 +22,27 @@ const madrid = new Feature({
});
rome.setStyle(new Style({
image: new Icon(/** @type {module:ol/style/Icon~Options} */ ({
image: new Icon({
color: '#8959A8',
crossOrigin: 'anonymous',
src: 'data/dot.png'
}))
src: 'data/square.svg'
})
}));
london.setStyle(new Style({
image: new Icon(/** @type {module:ol/style/Icon~Options} */ ({
image: new Icon({
color: '#4271AE',
crossOrigin: 'anonymous',
src: 'data/dot.png'
}))
})
}));
madrid.setStyle(new Style({
image: new Icon(/** @type {module:ol/style/Icon~Options} */ ({
image: new Icon({
color: [113, 140, 0],
crossOrigin: 'anonymous',
src: 'data/dot.png'
}))
})
}));
@@ -56,7 +56,7 @@ const vectorLayer = new VectorLayer({
const rasterLayer = new TileLayer({
source: new TileJSON({
url: 'https://api.tiles.mapbox.com/v3/mapbox.geography-class.json?secure',
url: 'https://a.tiles.mapbox.com/v3/aj.1x1-degrees.json',
crossOrigin: ''
})
});

View File

@@ -11,13 +11,13 @@ import {Icon, Style} from '../src/ol/style.js';
function createStyle(src, img) {
return new Style({
image: new Icon(/** @type {module:ol/style/Icon~Options} */ ({
image: new Icon({
anchor: [0.5, 0.96],
crossOrigin: 'anonymous',
src: src,
img: img,
imgSize: img ? [img.width, img.height] : undefined
}))
})
});
}

View File

@@ -1,10 +1,20 @@
---
layout: example.html
title: Icon Sprites with WebGL
shortdesc: Icon sprite with WebGL
shortdesc: Rendering many icons with WebGL
docs: >
<p>In this example a sprite image is used for the icon styles. Using a sprite is required to get good performance with WebGL.</p>
tags: "webgl, icon, sprite, vector, point"
This example shows how to use `ol/renderer/webgl/PointsLayer` 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.
The dataset contains around 80k points and can be found here: https://www.kaggle.com/NUFORC/ufo-sightings
tags: "webgl, icon, sprite, point, ufo"
cloak:
- key: pk.eyJ1IjoidHNjaGF1YiIsImEiOiJjaW5zYW5lNHkxMTNmdWttM3JyOHZtMmNtIn0.CDIBD8H-G2Gf-cPkIuWtRg
value: Your Mapbox access token from https://mapbox.com/ here
---
<div id="map" class="map"></div>
<div id="info">&nbsp;</div>

View File

@@ -1,136 +1,123 @@
import Feature from '../src/ol/Feature.js';
import Map from '../src/ol/WebGLMap.js';
import Map from '../src/ol/Map.js';
import View from '../src/ol/View.js';
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 VectorSource from '../src/ol/source/Vector.js';
import {Icon, Style} from '../src/ol/style.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';
const key = 'pk.eyJ1IjoidHNjaGF1YiIsImEiOiJjaW5zYW5lNHkxMTNmdWttM3JyOHZtMmNtIn0.CDIBD8H-G2Gf-cPkIuWtRg';
const iconInfo = [{
offset: [0, 0],
opacity: 1.0,
rotateWithView: true,
rotation: 0.0,
scale: 1.0,
size: [55, 55]
}, {
offset: [110, 86],
opacity: 0.75,
rotateWithView: false,
rotation: Math.PI / 2.0,
scale: 1.25,
size: [55, 55]
}, {
offset: [55, 0],
opacity: 0.5,
rotateWithView: true,
rotation: Math.PI / 3.0,
scale: 1.5,
size: [55, 86]
}, {
offset: [212, 0],
opacity: 1.0,
rotateWithView: true,
rotation: 0.0,
scale: 1.0,
size: [44, 44]
}];
const vectorSource = new Vector({
features: [],
attributions: 'National UFO Reporting Center'
});
let i;
const texture = document.createElement('img');
texture.src = 'data/ufo_shapes.png';
const iconCount = iconInfo.length;
const icons = new Array(iconCount);
for (i = 0; i < iconCount; ++i) {
const info = iconInfo[i];
icons[i] = new Icon({
offset: info.offset,
opacity: info.opacity,
rotateWithView: info.rotateWithView,
rotation: info.rotation,
scale: info.scale,
size: info.size,
crossOrigin: 'anonymous',
src: 'data/Butterfly.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];
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;
},
texCoordCallback: function(feature, component) {
let coords = shapeTextureCoords[feature.get('shape')];
if (!coords) {
coords = shapeTextureCoords['default'];
}
return coords[component];
},
sizeCallback: function() {
return 16;
}
});
}
}
const featureCount = 50000;
const features = new Array(featureCount);
let feature, geometry;
const e = 25000000;
for (i = 0; i < featureCount; ++i) {
geometry = new Point(
[2 * e * Math.random() - e, 2 * e * Math.random() - e]);
feature = new Feature(geometry);
feature.setStyle(
new Style({
image: icons[i % (iconCount - 1)]
function loadData() {
const client = new XMLHttpRequest();
client.open('GET', 'data/csv/ufo_sighting_data.csv');
client.onload = function() {
const csv = client.responseText;
const features = [];
let prevIndex = csv.indexOf('\n') + 1; // scan past the header line
let curIndex;
while ((curIndex = csv.indexOf('\n', prevIndex)) != -1) {
const line = csv.substr(prevIndex, curIndex - prevIndex).split(',');
prevIndex = curIndex + 1;
const coords = fromLonLat([parseFloat(line[5]), parseFloat(line[4])]);
// only keep valid points
if (isNaN(coords[0]) || isNaN(coords[1])) {
continue;
}
features.push(new Feature({
datetime: line[0],
year: parseInt(/[0-9]{4}/.exec(line[0])[0]), // extract the year as int
shape: line[2],
duration: line[3],
geometry: new Point(coords)
}));
}
vectorSource.addFeatures(features);
};
client.send();
}
loadData();
new Map({
layers: [
new TileLayer({
source: new TileJSON({
url: 'https://api.tiles.mapbox.com/v4/mapbox.world-dark.json?access_token=' + key,
crossOrigin: 'anonymous'
})
);
features[i] = feature;
}
const vectorSource = new VectorSource({
features: features
});
const vector = new VectorLayer({
}),
new WebglPointsLayer({
source: vectorSource
});
const map = new Map({
layers: [vector],
})
],
target: document.getElementById('map'),
view: new View({
center: [0, 0],
zoom: 5
center: [0, 4000000],
zoom: 2
})
});
const overlayFeatures = [];
for (i = 0; i < featureCount; i += 30) {
const clone = features[i].clone();
clone.setStyle(null);
overlayFeatures.push(clone);
}
new VectorLayer({
map: map,
source: new VectorSource({
features: overlayFeatures
}),
style: new Style({
image: icons[iconCount - 1]
})
});
map.on('click', function(evt) {
const info = document.getElementById('info');
info.innerHTML =
'Hold on a second, while I catch those butterflies for you ...';
window.setTimeout(function() {
const features = [];
map.forEachFeatureAtPixel(evt.pixel, function(feature) {
features.push(feature);
return false;
});
if (features.length === 1) {
info.innerHTML = 'Got one butterfly';
} else if (features.length > 1) {
info.innerHTML = 'Got ' + features.length + ' butterflies';
} else {
info.innerHTML = 'Couldn\'t catch a single butterfly';
}
}, 1);
});
map.on('pointermove', function(evt) {
if (evt.dragging) {
return;
}
const pixel = map.getEventPixel(evt.originalEvent);
const hit = map.hasFeatureAtPixel(pixel);
map.getTarget().style.cursor = hit ? 'pointer' : '';
});

View File

@@ -1,3 +0,0 @@
#map {
position: relative;
}

View File

@@ -17,12 +17,12 @@ const iconFeature = new Feature({
});
const iconStyle = new Style({
image: new Icon(/** @type {module:ol/style/Icon~Options} */ ({
image: new Icon({
anchor: [0.5, 46],
anchorXUnits: 'fraction',
anchorYUnits: 'pixels',
src: 'data/icon.png'
}))
})
});
iconFeature.setStyle(iconStyle);
@@ -37,7 +37,7 @@ const vectorLayer = new VectorLayer({
const rasterLayer = new TileLayer({
source: new TileJSON({
url: 'https://api.tiles.mapbox.com/v3/mapbox.geography-class.json?secure',
url: 'https://a.tiles.mapbox.com/v3/aj.1x1-degrees.json',
crossOrigin: ''
})
});

View File

@@ -7,6 +7,7 @@ import {Tile as TileLayer, Vector as VectorLayer} from '../src/ol/layer.js';
import OSM, {ATTRIBUTION} from '../src/ol/source/OSM.js';
import VectorSource from '../src/ol/source/Vector.js';
import {Circle as CircleStyle, Fill, Stroke, Style} from '../src/ol/style.js';
import {getVectorContext} from '../src/ol/render.js';
const colors = {
@@ -73,6 +74,10 @@ vectorSource.on('addfeature', function(event) {
time.duration = time.stop - time.start;
});
const vectorLayer = new VectorLayer({
source: vectorSource,
style: styleFunction
});
const map = new Map({
layers: [
@@ -86,10 +91,7 @@ const map = new Map({
'?apikey=0e6fc415256d4fbb9b5166a718591d71'
})
}),
new VectorLayer({
source: vectorSource,
style: styleFunction
})
vectorLayer
],
target: 'map',
view: new View({
@@ -153,8 +155,8 @@ const style = new Style({
stroke: stroke
})
});
map.on('postcompose', function(evt) {
const vectorContext = evt.vectorContext;
vectorLayer.on('postrender', function(evt) {
const vectorContext = getVectorContext(evt);
vectorContext.setStyle(style);
if (point !== null) {
vectorContext.drawGeometry(point);
@@ -181,7 +183,7 @@ document.getElementById('time').addEventListener('input', function() {
const value = parseInt(this.value, 10) / 100;
const m = time.start + (time.duration * value);
vectorSource.forEachFeature(function(feature) {
const geometry = /** @type {module:ol/geom/LineString~LineString} */ (feature.getGeometry());
const geometry = /** @type {import("../src/ol/geom/LineString.js").default} */ (feature.getGeometry());
const coordinate = geometry.getCoordinateAtM(m, true);
let highlight = feature.get('highlight');
if (highlight === undefined) {

16
examples/iiif.html Normal file
View File

@@ -0,0 +1,16 @@
---
layout: example.html
title: IIIF Image API
shortdesc: Example of a IIIF Image API source.
docs: >
Example of a tile source for an International Image Interoperability Framework (IIIF) Image Service.
Try any Image API version 1 or 2 service.
tags: "IIIF, IIIF Image API, tile source"
---
<div id="map" class="map"></div>
<div class="controls">
<div id="iiif-notification">&nbsp;</div>
Enter <code>info.json</code> URL:
<input type="text" id="imageInfoUrl" value="https://iiif.ub.uni-leipzig.de/iiif/j2k/0000/0107/0000010732/00000072.jpx/info.json">
<button id="display">Display image</button>
</div>

46
examples/iiif.js Normal file
View File

@@ -0,0 +1,46 @@
import Map from '../src/ol/Map.js';
import View from '../src/ol/View.js';
import TileLayer from '../src/ol/layer/Tile.js';
import IIIF from '../src/ol/source/IIIF.js';
import IIIFInfo from '../src/ol/format/IIIFInfo.js';
const layer = new TileLayer(),
map = new Map({
layers: [layer],
target: 'map'
}),
notifyDiv = document.getElementById('iiif-notification'),
urlInput = document.getElementById('imageInfoUrl'),
displayButton = document.getElementById('display');
function refreshMap(imageInfoUrl) {
fetch(imageInfoUrl).then(function(response) {
response.json().then(function(imageInfo) {
const options = new IIIFInfo(imageInfo).getTileSourceOptions();
if (options === undefined || options.version === undefined) {
notifyDiv.textContent = 'Data seems to be no valid IIIF image information.';
return;
}
options.zDirection = -1;
const iiifTileSource = new IIIF(options);
layer.setSource(iiifTileSource);
map.setView(new View({
resolutions: iiifTileSource.getTileGrid().getResolutions(),
extent: iiifTileSource.getTileGrid().getExtent(),
constrainOnlyCenter: true
}));
map.getView().fit(iiifTileSource.getTileGrid().getExtent());
notifyDiv.textContent = '';
}).catch(function(body) {
notifyDiv.textContent = 'Could not read image info json. ' + body;
});
}).catch(function() {
notifyDiv.textContent = 'Could not read data from URL.';
});
}
displayButton.addEventListener('click', function() {
refreshMap(urlInput.value);
});
refreshMap(urlInput.value);

View File

@@ -3,9 +3,9 @@ layout: example.html
title: Image Filters
shortdesc: Apply a filter to imagery
docs: >
<p>Layer rendering can be manipulated in <code>precompose</code> and <code>postcompose</code> event listeners.
<p>Layer rendering can be manipulated in <code>prerender</code> and <code>postrender</code> event listeners.
These listeners get an event with a reference to the Canvas rendering context.
In this example, the <code>postcompose</code> listener applies a filter to the image data.</p>
In this example, the <code>postrender</code> listener applies a filter to the image data.</p>
tags: "filter, image manipulation"
cloak:
- key: As1HiMj1PvLPlqc_gtM7AqZfBL8ZL3VrjaS3zIb22Uvb9WKhuJObROC-qUpa81U5

View File

@@ -90,9 +90,9 @@ select.onchange = function() {
/**
* Apply a filter on "postcompose" events.
* Apply a filter on "postrender" events.
*/
imagery.on('postcompose', function(event) {
imagery.on('postrender', function(event) {
convolve(event.context, selectedKernel);
});

View File

@@ -6,7 +6,7 @@ import ImageWMS from '../src/ol/source/ImageWMS.js';
/**
* Renders a progress bar.
* @param {Element} el The target element.
* @param {HTMLElement} el The target element.
* @constructor
*/
function Progress(el) {

View File

@@ -1,9 +1,9 @@
---
layout: example.html
title: Image Vector Layer
shortdesc: Example of an image vector layer.
title: Vector Image Layer
shortdesc: Example of rendering vector data as an image layer.
docs: >
<p>This example uses <code>ol/layer/Vector</code> with `renderMode: 'image'`. This mode results in faster rendering during interaction and animations, at the cost of less accurate rendering.</p>
<p>This example uses <code>ol/layer/VectorImage</code> for faster rendering during interaction and animations, at the cost of less accurate rendering.</p>
tags: "vector, image"
---
<div id="map" class="map"></div>

View File

@@ -1,6 +1,7 @@
import Map from '../src/ol/Map.js';
import View from '../src/ol/View.js';
import GeoJSON from '../src/ol/format/GeoJSON.js';
import VectorImageLayer from '../src/ol/layer/VectorImage.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';
@@ -19,8 +20,8 @@ const style = new Style({
const map = new Map({
layers: [
new VectorLayer({
renderMode: 'image',
new VectorImageLayer({
imageRatio: 2,
source: new VectorSource({
url: 'data/geojson/countries.geojson',
format: new GeoJSON()

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