Compare commits

...

1203 Commits

Author SHA1 Message Date
ahocevar
f02f6a11ab Version and beta tag for v6.0.0-beta.1 2019-02-04 14:00:42 +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
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
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
Tim Schaub
346cd562ee Changes for 5.3.0 2018-11-06 09:37:17 -07:00
Tim Schaub
ba88081eba Merge pull request #8642 from dimin/master
fixes for optional key passing, issue #8067 for tile sources
2018-11-06 08:56:25 -07:00
Frédéric Junod
2a3b21cfd9 Merge pull request #8885 from fredj/rm_GeolocationProperty
Move GeolocationProperty into Geolocation
2018-11-06 10:28:01 +01:00
Frederic Junod
785954f722 Move GeolocationProperty into Geolocation
`GeolocationProperty` is only used in `Geolocation`.
2018-11-06 08:38:53 +01:00
Tim Schaub
b8b3dcc066 Merge pull request #8884 from openlayers/greenkeeper/webpack-4.25.1
Update webpack to the latest version 🚀
2018-11-05 13:15:19 -07:00
greenkeeper[bot]
76c4c2f85c chore(package): update webpack to version 4.25.1 2018-11-05 19:04:35 +00:00
Tim Schaub
65bbee4c8b Merge pull request #8881 from fredj/dnd_style
Remove custom styles in drag-and-drop examples
2018-11-05 10:06:33 -07:00
Tim Schaub
10b56a4543 Merge pull request #8877 from tschaub/unconditional-context
Create context in vector tile layer constructor
2018-11-05 10:04:54 -07:00
Tim Schaub
42a094d730 Merge pull request #8883 from tschaub/new-ci
New test runner
2018-11-05 10:04:24 -07:00
Tim Schaub
680ce960e1 Test Chrome with CircleCI 2018-11-05 09:54:16 -07:00
Tim Schaub
77959efcff Updated dev dependencies 2018-11-05 09:28:19 -07:00
Frederic Junod
dc988cba60 Remove custom styles in drag-and-drop examples 2018-11-05 17:13:16 +01:00
Frédéric Junod
5f747cbf1b Merge pull request #8882 from fredj/import_path
Import simplification
2018-11-05 17:07:20 +01:00
Frédéric Junod
2b025e2266 Merge pull request #8858 from webgeodatavore/issue-7397
Add condition for viewParams and TypeScript related option
2018-11-05 16:28:09 +01:00
Frederic Junod
71ac0b18a9 Simplify import path in ol/reproj/ 2018-11-05 16:26:45 +01:00
Frederic Junod
3cf4dbfcc6 Simplify import path in ol/renderer/ 2018-11-05 16:26:45 +01:00
Frederic Junod
1732ed5a04 Simplify import path in ol/render/ 2018-11-05 16:26:45 +01:00
Frederic Junod
59c95dbe90 Simplify import path in ol/pointer/ 2018-11-05 16:26:45 +01:00
Frederic Junod
711afac80f Simplify import path in ol/format/ 2018-11-05 16:26:45 +01:00
Frederic Junod
43def3194f Simplify import path in ol/events/ 2018-11-05 16:26:45 +01:00
Frederic Junod
caf11a71f2 Simplify import path in ol/geom/ 2018-11-05 16:26:45 +01:00
Frederic Junod
53c2be0c7a Simplify import path in ol/proj/ 2018-11-05 16:26:45 +01:00
Frederic Junod
caaf8cb86f Simplify import path in ol/style/ 2018-11-05 16:26:45 +01:00
Frederic Junod
219dacb232 Simplify import path in ol/tilegrid/ 2018-11-05 16:26:45 +01:00
Frederic Junod
9ab201642c Simplify import path in ol/control/ 2018-11-05 16:26:45 +01:00
Frederic Junod
6d608c361a Simplify import path in ol/interaction/ 2018-11-05 16:26:45 +01:00
Frederic Junod
6a797e84ff Simplify import path in ol/layer/ 2018-11-05 16:26:45 +01:00
Frederic Junod
c12b41f8c6 Simplify import path in ol/source/ 2018-11-05 16:26:45 +01:00
Tim Schaub
aaad5b4977 Merge pull request #8879 from openlayers/circleci
Build with CircleCI
2018-11-05 06:59:35 -07:00
Tim Schaub
c2e756da05 Merge pull request #8878 from tschaub/test-log
Avoid logging 404 warnings
2018-11-05 06:58:23 -07:00
Andreas Hocevar
467e13fa2d Merge pull request #8880 from openlayers/greenkeeper/webpack-4.25.0
Update webpack to the latest version 🚀
2018-11-05 14:57:47 +01:00
greenkeeper[bot]
e0a46dd178 chore(package): update webpack to version 4.25.0 2018-11-05 09:38:54 +00:00
Tim Schaub
aeb3e5b271 Build with CircleCI 2018-11-04 22:10:00 -07:00
Tim Schaub
f34cb17ffa Avoid logging 404 warnings 2018-11-04 18:27:06 -07:00
Tim Schaub
5dfa82c27e Create context in vector tile layer constructor 2018-11-04 17:43:04 -07:00
Tim Schaub
e55cca1e7d Merge pull request #8876 from tschaub/extra-render-type
Remove RenderType enum from vector tile layer
2018-11-04 11:30:29 -07:00
Tim Schaub
d197864f5a Remove RenderType enum from vector tile layer 2018-11-04 10:27:35 -07:00
Tim Schaub
4d5d428a96 Merge pull request #8874 from tschaub/uncast
Remove unnecessary type casts in canvas layer renderer
2018-11-04 10:12:20 -07:00
Tim Schaub
0091bfa106 Remove unnecessary type casts in canvas layer renderer 2018-11-04 09:57:19 -07:00
Tim Schaub
765d2cdc9f Merge pull request #8872 from openlayers/greenkeeper/webpack-4.24.0
Update webpack to the latest version 🚀
2018-11-03 18:36:38 -06:00
Dmitry Fedorov
1de22f77dc merged with upstream and improved key handling 2018-11-02 17:19:10 -07:00
greenkeeper[bot]
f2b4555e1f chore(package): update webpack to version 4.24.0 2018-11-02 19:46:21 +00:00
Andreas Hocevar
3f69066d79 Merge pull request #8869 from ahocevar/typescript-fixes
Fix more types for TypeScript
2018-10-31 12:07:28 +01:00
Andreas Hocevar
1a00e20b1b Merge pull request #8868 from ahocevar/abstract-methods
Throw when calling abstract methods; fix abstract return types
2018-10-31 12:07:01 +01:00
Andreas Hocevar
c90b8c2a12 Merge pull request #8862 from ahocevar/legacy-build
Legacy build and apidoc improvements
2018-10-31 08:35:38 +01:00
Andreas Hocevar
6f57a272d0 Merge pull request #8867 from ahocevar/fix-examples
Fix example builder
2018-10-31 08:35:10 +01:00
ahocevar
1cdd040c96 Throw when calling abstract methods; fix abstract return types 2018-10-30 18:55:49 +01:00
ahocevar
1df9189d7f Fix more types for TypeScript 2018-10-30 18:55:03 +01:00
ahocevar
071a02556e Fix example builder 2018-10-30 18:25:01 +01:00
ahocevar
f8c0d284de Fix module paths 2018-10-29 19:15:01 +01:00
ahocevar
b50749e1ea Use jsdoc-plugin-typescript 2018-10-29 19:15:01 +01:00
ahocevar
e239eb338f Use webpack instead of rollup for the legacy build
This also changes the target path of the legacy build to build/legacy
2018-10-25 22:00:22 +02:00
ahocevar
1674620943 Use individual imports instead of * imports 2018-10-25 21:54:06 +02:00
ahocevar
6ceb03f86b Use typescript-plugin for generate-info task 2018-10-25 21:52:58 +02:00
ahocevar
ba20c6333b Move convert-types plugin to place for common use 2018-10-25 21:49:02 +02:00
Frédéric Junod
2adac0b3e7 Merge pull request #8860 from openlayers/greenkeeper/webpack-4.23.1
Update webpack to the latest version 🚀
2018-10-25 13:15:01 +02:00
greenkeeper[bot]
0a530725c6 chore(package): update webpack to version 4.23.1 2018-10-25 09:36:50 +00:00
Andreas Hocevar
391e38a973 Merge pull request #8852 from ahocevar/jsdoc-markdown
Improve link handling in API docs
2018-10-25 11:21:46 +02:00
Frédéric Junod
7f1728f8d4 Merge pull request #8855 from openlayers/greenkeeper/webpack-4.23.0
Update webpack to the latest version 🚀
2018-10-25 08:33:02 +02:00
ThomasG77
d3fdda6efc Add condition for viewParams and TypeScript related option 2018-10-25 05:46:49 +02:00
greenkeeper[bot]
1ed51d02e3 chore(package): update webpack to version 4.23.0 2018-10-24 18:13:06 +00:00
Andreas Hocevar
8f12177593 Merge pull request #8853 from ahocevar/rendercomplete-vector
Make rendercomplete work with vector sources without loader
2018-10-24 19:40:14 +02:00
ahocevar
f82619d6d0 Make rendercomplete work with vector sources without loader 2018-10-24 18:37:51 +02:00
ahocevar
453a723005 Improve link handling in API docs 2018-10-24 17:52:42 +02:00
Frédéric Junod
e8da3929d5 Merge pull request #8851 from fredj/rbush_types
Use typescript types for RBush
2018-10-24 17:21:17 +02:00
Frederic Junod
1f1951f3cc Use typescript types for RBush
The `toJSON` function simply returns the `data` property.
See: https://github.com/mourner/rbush/blob/v2.0.2/index.js#L184
2018-10-24 17:07:41 +02:00
Frédéric Junod
208f125158 Merge pull request #8850 from fredj/misc
Remove old TODO in ol/Graticule
2018-10-24 16:58:42 +02:00
Frederic Junod
df632dbaa9 Remove old TODO in ol/Graticule
Fixed with #8800
2018-10-24 16:51:35 +02:00
Andreas Hocevar
b11daa8344 Merge pull request #8847 from ahocevar/fix-apidocs
Fix API docs
2018-10-24 00:25:58 +02:00
Tim Schaub
0130ce71ba Merge pull request #8845 from tschaub/no-render-type
Remove RenderType enum from vector layer
2018-10-23 13:20:47 -06:00
ahocevar
3a42a0859c Fix event documentation 2018-10-23 18:05:43 +02:00
ahocevar
0593c352af Avoid duplicate documentation 2018-10-23 18:05:26 +02:00
ahocevar
724d141d3a Fix links and navigation 2018-10-23 18:05:02 +02:00
ahocevar
deb6c093a8 Update plugin chain to support JSDoc import types 2018-10-23 18:04:26 +02:00
ahocevar
0b21d1a6fc Document anonymous default exports 2018-10-23 18:01:46 +02:00
ahocevar
d1395d005c Fix comments for JSDoc 2018-10-23 17:58:50 +02:00
ahocevar
cd2f0f60d6 Make link texts consistent with docs 2018-10-23 17:40:51 +02:00
Tim Schaub
f58603bddf Remove RenderType enum from vector layer 2018-10-23 08:46:50 -06:00
Antoine Abt
1740f02737 Merge pull request #8843 from tonio/ts_fullscreen
Fix ts typing for fullscreen button
2018-10-23 14:18:46 +02:00
Frédéric Junod
0cd3e39fe8 Merge pull request #8841 from fredj/super
Use super.method instead of prototype.method.call
2018-10-23 13:25:11 +02:00
Frédéric Junod
d5c895aa8b Merge pull request #8842 from fredj/element_type
Change target type from Element to HTMLElement
2018-10-23 13:24:53 +02:00
Éric Lemoine
9810250fb4 Merge pull request #8840 from elemoine/ele_zindexkeys
Remove unneeded code in VectorTile renderer
2018-10-23 11:08:18 +02:00
Éric Lemoine
8a2f74fbe8 Merge pull request #8844 from elemoine/ele_crossorigin
Set crossOrigin to anonymous in mapbox-streets-v6-style
2018-10-23 11:04:38 +02:00
Andreas Hocevar
0801b9e0be Merge pull request #8776 from ahocevar/no-window-settimeout
Use setTimeout without the window namespace
2018-10-23 11:03:32 +02:00
Antoine Abt
fc8ba24d3f Store button and correctly type it. 2018-10-23 11:02:43 +02:00
Éric Lemoine
e0a018fa1e Set crossOrigin to anonymous in mapbox-streets-v6-style 2018-10-23 10:56:33 +02:00
Frederic Junod
3746ba99cf Change target type from Element to HTMLElement
Same as the parent class type for `MousePosition` and the type returned by the
`getViewport` function.
2018-10-23 09:17:17 +02:00
Frederic Junod
d294b87358 Use super.method instead of prototype.method.call 2018-10-23 09:15:51 +02:00
Éric Lemoine
29b21da608 Remove unneeded code in VectorTile renderer 2018-10-23 07:55:34 +02:00
Tim Schaub
0787aa3439 Merge pull request #8838 from openlayers/greenkeeper/webpack-4.22.0
Update webpack to the latest version 🚀
2018-10-21 07:42:34 -06:00
greenkeeper[bot]
41fea9905a chore(package): update webpack to version 4.22.0 2018-10-21 10:24:50 +00:00
Frédéric Junod
7cd7a4d111 Merge pull request #8837 from fredj/mp_reexport
Re-export MousePosition from ol/control
2018-10-20 18:44:47 +02:00
Frederic Junod
a06ad4940c Re-export MousePosition from ol/control 2018-10-19 14:05:55 +02:00
Frédéric Junod
6ff7747d98 Merge pull request #8832 from fredj/remove-source-foreachfeatureatcoordinate
Remove source foreachfeatureatcoordinate from ol/renderer/webgl/ImageLayer
2018-10-19 11:20:33 +02:00
Frédéric Junod
e4816faadf Merge pull request #8834 from openlayers/greenkeeper/webpack-4.21.0
Update webpack to the latest version 🚀
2018-10-18 08:34:30 +02:00
Frédéric Junod
f0c164802f Merge pull request #8833 from fredj/misc
Fix wrong filename in type annotation
2018-10-18 08:27:12 +02:00
greenkeeper[bot]
ae409f40d5 chore(package): update webpack to version 4.21.0 2018-10-17 18:36:13 +00:00
Frederic Junod
7e142080a1 Remove hasFeatureAtCoordinate from ol/renderer/webgl/ImageLayer 2018-10-17 17:08:53 +02:00
Frederic Junod
1a0f398f1f Fix wrong filename in type annotation 2018-10-17 15:47:15 +02:00
Frederic Junod
648ee4f4a4 Remove forEachFeatureAtCoordinate from ol/renderer/webgl/ImageLayer 2018-10-17 15:44:45 +02:00
Frédéric Junod
3d72490241 Merge pull request #8827 from schmidtk/remove-source-foreachfeatureatcoordinate
Removed unused forEachFeatureAtCoordinate from ol/source/Source
2018-10-17 15:09:37 +02:00
Kevin Schmidt
df4ef724b6 Removed unused forEachFeatureAtCoordinate from ol/source/Source
Fixes #8826.
2018-10-17 06:10:10 -06:00
Frédéric Junod
d2d041e54a Merge pull request #8830 from fredj/misc
Type annotation fixes in ol/control/
2018-10-17 13:26:05 +02:00
Frederic Junod
94fd57f690 Set projection property in MousePosition option optional 2018-10-17 10:56:11 +02:00
Frederic Junod
939aa565b5 Change ol/control/ScaleLine getUnits return type
Remove `undefined` from the return type: the default value is 'metric'
2018-10-17 10:48:19 +02:00
Frédéric Junod
1035ba7bf2 Merge pull request #8829 from fredj/getuid
Change getUid return type from number to string
2018-10-17 10:46:49 +02:00
Frederic Junod
041836c645 Change getUid return type from number to string 2018-10-17 10:22:53 +02:00
Frédéric Junod
a85099a36b Merge pull request #8825 from schmidtk/ts-misc-errors
Fix TypeScript errors
2018-10-17 09:45:28 +02:00
Éric Lemoine
cddfc11125 Merge pull request #8828 from elemoine/ele_source
Re-export VectorTile from ol/source
2018-10-17 07:49:03 +02:00
Éric Lemoine
d387702644 Re-export VectorTile from ol/source 2018-10-16 21:49:34 +02:00
Kevin Schmidt
49a4bf4248 Fix TypeScript error in ol/control/OverviewMap 2018-10-16 09:24:00 -06:00
Kevin Schmidt
1e90ffacec Avoid spread operator to fix TypeScript errors 2018-10-16 09:20:20 -06:00
Andreas Hocevar
43ca764293 Merge pull request #8806 from notnotse/preserve-fullscreen-button-class-names
Preserve button class name list in full screen control on toggle
2018-10-16 16:58:44 +02:00
Kevin Schmidt
fb11aad1d1 Fix geometry type in ol/renderer/vector#renderGeometry 2018-10-16 08:34:02 -06:00
Kevin Schmidt
f7adeac774 Fix arguments passed to forEachLayerAtCoordinate 2018-10-16 08:34:02 -06:00
Frédéric Junod
076d6425cb Merge pull request #8817 from romanzoller/wmts-document-image-format
Clarify format option for ol/source/WMTS
2018-10-16 16:20:36 +02:00
Frédéric Junod
2809784247 Merge pull request #8824 from schmidtk/ts-format-gml
Fix TypeScript errors in ol/format/GML
2018-10-16 16:09:58 +02:00
Kevin Schmidt
ee9c9bcefb Fix TypeScript errors in ol/format/GML 2018-10-16 07:20:22 -06:00
Andreas Hocevar
e37039d85e Merge pull request #8820 from hmdavidjunior/master
Polygon intersectsExtent failure - Issue #8795
2018-10-16 14:12:09 +02:00
Frédéric Junod
9362e33be9 Merge pull request #8519 from NielsCharlier/complex
GML Format Improvements #8516 #8517 #8518
2018-10-16 09:10:09 +02:00
Frederic Junod
aea9479c12 Rename parsers objects in ol/format/GML32 2018-10-16 08:48:42 +02:00
Frederic Junod
6b24760299 Fix jsdoc type notation 2018-10-16 08:26:41 +02:00
Niels Charlier
594a921598 Enable parsing complex features 2018-10-16 08:26:41 +02:00
NielsCharlier
2005c82dd2 add GML3.2 format 2018-10-16 08:26:41 +02:00
NielsCharlier
6252404d5b Fix GML Format featureMember tag 2018-10-16 08:25:53 +02:00
Frédéric Junod
316b4a1bb7 Merge pull request #8711 from schmidtk/ts-format-gml
Fix TypeScript errors in ol/format/GML
2018-10-16 08:25:41 +02:00
Hermes David Junior
7ec19645e9 Polygon intersectsExtent failure - Issue #8795 2018-10-15 10:00:37 -04:00
Andreas Hocevar
b43e5929f2 Merge pull request #8818 from cs09g/patch-1
fix the way zoom comes from
2018-10-15 14:23:07 +02:00
Seul-gi Choi(Chase)
f8585962b4 fix the way zoom comes from
fix zoom from view to tilegrid
2018-10-15 20:57:23 +09:00
Roman Zoller
43b9f70077 Clarify format option for ol/source/WMTS 2018-10-15 13:29:19 +02:00
Andreas Hocevar
6e7558e954 Merge pull request #8804 from notnotse/issue/8621-disable-collapsible-attributions-for-osm
Add possibility to disable collapsible attributions from Source
2018-10-14 12:16:36 +02:00
ahocevar
2768884044 Make new behavior overridable; update docs and examples 2018-10-14 12:10:40 +02:00
ahocevar
af4e5ca7cf Improve JSDoc 2018-10-14 09:57:26 +02:00
Andreas Hocevar
9285b283c0 Merge pull request #8787 from ahocevar/no-instanceof
Replace instanceof checks with other logic
2018-10-12 20:44:41 +02:00
ahocevar
9163558511 Replace instanceof checks with other logic 2018-10-12 20:35:59 +02:00
Frédéric Junod
80753eb909 Merge pull request #8808 from fredj/f8807
Fix format and version properties in ol/source/WMTS Options typedef
2018-10-12 12:53:23 +02:00
Andreas Hocevar
3e860d2c61 Merge pull request #8812 from rosedo/patch-1
Update snap.js
2018-10-12 12:15:03 +02:00
Andreas Hocevar
3ce80fbfb1 Merge pull request #8809 from notnotse/issue/8800-configurable-interval-options
Configurable interval options
2018-10-12 12:09:27 +02:00
Andreas Hocevar
8aebed1cd6 Add intervals default to documentation 2018-10-12 12:03:45 +02:00
Dominic Rose
90395c2355 Update snap.js
this was undefined inside the call to selectedFeatures.remove
2018-10-12 12:00:38 +02:00
itjope
50f90cdf61 Preserve button class name list in full screen control on toggle 2018-10-12 11:37:43 +02:00
Bobo Häggström
04f2174052 Add test for attributionsCollapsible property on source 2018-10-12 11:28:48 +02:00
Frédéric Junod
0f15d38ae7 Merge pull request #8798 from fredj/rawgit
Use unpkg.com instead of rawgit.com
2018-10-12 11:04:39 +02:00
Bobo Häggström
667f9a58f3 Add option to configure graticule interval limits 2018-10-12 10:41:12 +02:00
Bobo Häggström
2f4d31c8f4 Add possibility to disable collapsible attributions from Source 2018-10-12 09:28:34 +02:00
Frederic Junod
ad3f248825 Fix format and version properties in ol/source/WMTS Options typedef 2018-10-12 08:51:03 +02:00
Andreas Hocevar
c2c8cdab29 Merge pull request #8805 from notnotse/issue/8700-tile-scaled-below-zero
Do not draw image with width or height < 0.5
2018-10-11 19:40:41 +02:00
Andreas Hocevar
e828231449 Merge pull request #8803 from notnotse/zoom-slider-fix
Handle zoom slider position with floating point numbers
2018-10-11 17:38:34 +02:00
Bobo Häggström
dded939a07 Do not draw image with width or height < 0.5 2018-10-11 15:22:48 +02:00
Andreas Hocevar
945f686f8a Remove 2nd argument of parseFloat 2018-10-11 14:00:15 +02:00
itjope
2c6e80a601 Handle zoom slider position with floating point numbers 2018-10-11 12:50:51 +02:00
Andreas Hocevar
da41515944 Merge pull request #8799 from openlayers/greenkeeper/rollup-0.66.6
Update rollup to the latest version 🚀
2018-10-11 07:33:02 +02:00
greenkeeper[bot]
15c9fe7867 chore(package): update rollup to version 0.66.6 2018-10-10 15:12:48 +00:00
Frederic Junod
6d1cc3ba88 Use unpkg.com instead of rawgit.com 2018-10-10 15:11:07 +02:00
Frederic Junod
db15bb0942 Fix indentation 2018-10-10 14:55:33 +02:00
Frederic Junod
94da8dd0e2 Move adaptAttributions out of the class, set default Options values 2018-10-10 14:23:13 +02:00
Frédéric Junod
02b2be5b40 Merge pull request #8796 from openlayers/greenkeeper/rollup-plugin-commonjs-9.2.0
Update rollup-plugin-commonjs to the latest version 🚀
2018-10-10 10:36:23 +02:00
greenkeeper[bot]
7672fe3b16 chore(package): update rollup-plugin-commonjs to version 9.2.0 2018-10-10 04:21:56 +00:00
Frédéric Junod
04c2359d49 Merge pull request #8793 from openlayers/greenkeeper/rollup-plugin-buble-0.19.4
Update rollup-plugin-buble to the latest version 🚀
2018-10-09 12:58:37 +02:00
greenkeeper[bot]
f15ac14d2a chore(package): update rollup-plugin-buble to version 0.19.4 2018-10-09 11:41:25 +02:00
Frédéric Junod
177190403f Merge pull request #8794 from openlayers/greenkeeper/rollup-0.66.5
Update rollup to the latest version 🚀
2018-10-09 11:40:29 +02:00
greenkeeper[bot]
12786e4352 chore(package): update rollup to version 0.66.5 2018-10-09 05:43:29 +00:00
Kevin Schmidt
d308288eed Fix TypeScript errors in ol/format/GML 2018-10-08 05:36:21 -06:00
Frédéric Junod
d6aced3e43 Merge pull request #8789 from fredj/misc
Spelling and indentation fixes
2018-10-08 09:23:14 +02:00
Frederic Junod
720993431c Fix indentation 2018-10-08 08:50:40 +02:00
Frederic Junod
69dfbb9e54 Fix spelling 2018-10-08 08:30:10 +02:00
Tim Schaub
23473a8346 Merge pull request #8788 from openlayers/greenkeeper/front-matter-3.0.0
Update front-matter to the latest version 🚀
2018-10-06 22:26:12 -06:00
greenkeeper[bot]
414f6e0384 chore(package): update front-matter to version 3.0.0 2018-10-05 17:43:49 +00:00
Andreas Hocevar
96e99e481e Merge pull request #8782 from wallw-bits/fix-typecheck-render-feature
Fix getSimplifiedGeometry definition
2018-10-04 21:55:17 +02:00
Andreas Hocevar
f5e8e3e009 Merge pull request #8783 from wallw-bits/fix-typecheck-replaygroup
Fix missing method declaration
2018-10-04 21:53:55 +02:00
Andreas Hocevar
61dedbbe6d Merge pull request #8785 from openlayers/greenkeeper/rollup-0.66.4
chore(package): update rollup to version 0.66.4
2018-10-04 15:05:47 +02:00
greenkeeper[bot]
f3f138b9bc chore(package): update rollup to version 0.66.4
Closes #8777
2018-10-04 08:46:43 +00:00
William Wall
b8addb4c24 Fix missing method declaration
ol/renderer/vector was using the abstract ReplayGroup type while
referencing replayGroup.addDeclutter(), which was only defined
on the canvas and webgl implementations and was also defined
differently.
2018-10-03 16:08:26 -06:00
William Wall
8be23b799d Fix getSimplifiedGeometry definition
The override here should match the definition in ol/geom/Geometry
2018-10-03 15:23:10 -06:00
Marc Jansen
84dda90bfc Merge pull request #8781 from schmidtk/ts-misc-errors
Fix type check errors
2018-10-03 22:51:44 +02:00
Kevin Schmidt
a92c992e1a Cast to Array to avoid false union mismatch 2018-10-03 13:55:12 -06:00
Kevin Schmidt
c0903e6fc1 Cast overloaded ends property to fix type check errors 2018-10-03 13:23:40 -06:00
Kevin Schmidt
8d9fe7f688 Use void for optional return type 2018-10-03 13:23:05 -06:00
Andreas Hocevar
144c2f9f15 Merge pull request #8779 from schmidtk/ts-misc-errors
Fix additional type check errors
2018-10-03 19:38:55 +02:00
Andreas Hocevar
4a066670c2 Merge pull request #8753 from wallw-bits/fix-typecheck-pluggablemap
Fix type check in ol/PluggableMap.js
2018-10-03 19:33:12 +02:00
Kevin Schmidt
3781a6881d Fix type check errors in ol/layer/VectorTile 2018-10-03 11:24:41 -06:00
Kevin Schmidt
9d4821aafc Fix type check errors in ol/interaction/Snap 2018-10-03 11:20:56 -06:00
Kevin Schmidt
38aa620afa Fix type check errors in ol/layer/Layer 2018-10-03 10:42:05 -06:00
Kevin Schmidt
ddae414ddc Fix type check errors in ol/format/MVT 2018-10-03 10:41:52 -06:00
Kevin Schmidt
d3a82b0586 Fix type check errors in ol/pointer 2018-10-03 10:41:29 -06:00
Andreas Hocevar
83763a73d9 Merge pull request #8762 from schmidtk/ts-pointer-interaction-this
Fix type errors from interaction event handlers
2018-10-03 15:48:54 +02:00
Kevin Schmidt
07349de59b Add tests for interaction event handlers 2018-10-03 06:59:18 -06:00
Kevin Schmidt
909869b8b9 Fix type check errors in ol/interaction/Extent 2018-10-03 06:35:18 -06:00
Kevin Schmidt
942a0976be Move interaction event handlers to class methods 2018-10-03 06:30:09 -06:00
ahocevar
3397796ff2 Use setTimeout without the window namespace 2018-10-03 13:06:14 +02:00
ahocevar
9586c7cbc7 Get rid of private handler members 2018-10-03 05:06:01 -06:00
Kevin Schmidt
18570841d8 Move interaction event handlers to class methods 2018-10-03 05:06:01 -06:00
Andreas Hocevar
bafb9e4a8c Merge pull request #8763 from wallw-bits/fix-typecheck-events
Fix type check for ol/events
2018-10-03 11:52:44 +02:00
Tim Schaub
4cb5dc695b Merge pull request #8774 from schmidtk/ts-renderer-webgl
Fix type check errors in ol/renderer/webgl
2018-10-03 03:48:07 -06:00
Andreas Hocevar
4ca75e2aab Merge pull request #8768 from schmidtk/ts-interaction-select
Fix type check errors in ol/interaction/Select
2018-10-03 11:10:50 +02:00
Andreas Hocevar
56f623337b Merge pull request #8764 from schmidtk/ts-interaction-draw
Fix TypeScript errors in ol/interaction/Draw
2018-10-03 11:07:59 +02:00
ahocevar
3f79edba67 Use setTimeout with any return type 2018-10-03 10:50:44 +02:00
Andreas Hocevar
2799f0c824 Merge pull request #8767 from schmidtk/ts-interaction-modify
Fix type check errors in ol/interaction/Modify
2018-10-03 10:33:50 +02:00
Andreas Hocevar
cbd6aabea2 Merge pull request #8773 from schmidtk/ts-renderer-canvas
Fix type check errors in ol/renderer/canvas
2018-10-03 10:29:29 +02:00
Andreas Hocevar
5c737b21ae Merge pull request #8769 from schmidtk/ts-render-canvas
Fix type check errors in ol/render/canvas
2018-10-03 10:17:54 +02:00
Andreas Hocevar
0f9485a806 Merge pull request #8770 from schmidtk/ts-render-webgl
Fix type check errors in ol/render/webgl
2018-10-03 10:15:57 +02:00
Andreas Hocevar
bb544114ee Merge pull request #8765 from ahocevar/fixed-tileurlfunction-bye-bye
Simplify logic for fixed tile url functions
2018-10-03 10:10:18 +02:00
Frédéric Junod
c7813bbf45 Merge pull request #8766 from fredj/featurelike
Use FeatureLike typedef
2018-10-03 08:47:06 +02:00
Kevin Schmidt
e30293d07f Fix type check errors in ol/renderer/webgl 2018-10-02 15:36:02 -06:00
Kevin Schmidt
b26d81fd7e Fix type check errors in canvas tile renderers 2018-10-02 15:24:51 -06:00
Kevin Schmidt
d3e34f95c9 Fix type check errors in ol/renderer/canvas/VectorLayer 2018-10-02 15:24:51 -06:00
Kevin Schmidt
16faf064de Fix type check errors in ol/renderer/canvas/Map 2018-10-02 15:24:51 -06:00
Kevin Schmidt
be4afde507 Fix type check errors in ol/renderer/canvas/ImageLayer 2018-10-02 15:24:51 -06:00
Andreas Hocevar
2b8cee3e44 Merge pull request #8739 from schmidtk/ts-format-wmsgfi
Fix TypeScript errors in ol/format/WMSGetFeatureInfo
2018-10-02 21:27:54 +02:00
Andreas Hocevar
682fe47914 Merge pull request #8666 from schmidtk/ts-condition-fixes
Fix condition TypeScript errors
2018-10-02 21:10:10 +02:00
Kevin Schmidt
b1309578b4 Fix type check errors in ol/render/webgl/TextReplay 2018-10-02 12:59:41 -06:00
Kevin Schmidt
ecaec7bbfa Fix type check errors in ol/render/webgl/ReplayGroup 2018-10-02 12:55:59 -06:00
Kevin Schmidt
b4fced865d Fix type check errors in ol/render/webgl/Immediate 2018-10-02 12:54:27 -06:00
Kevin Schmidt
9b12b30100 Fix type check errors in ol/render/canvas/TextReplay 2018-10-02 12:39:45 -06:00
Kevin Schmidt
9ac00667b4 Fix type check errors in ol/render/canvas/Replay 2018-10-02 12:38:31 -06:00
Kevin Schmidt
452d5454cb Fix type check errors in ol/render/canvas/Immediate 2018-10-02 12:32:37 -06:00
ahocevar
4aff3d0631 Simplify logic for fixed tile url functions 2018-10-02 17:26:22 +02:00
Kevin Schmidt
2f151a7832 Fix type check errors in ol/interaction/Select 2018-10-02 08:57:25 -06:00
Kevin Schmidt
25cf54193a Fix type check errors in ol/interaction/Modify 2018-10-02 08:31:03 -06:00
Frederic Junod
ae87cad7ef Use FeatureLike typedef
Use `import("./Feature.js").FeatureLike` typedef instead of `import("./Feature.js").default|import("./render/Feature.js").default`
2018-10-02 12:58:56 +02:00
Kevin Schmidt
b6846d6b3d Use window.setTimeout to avoid TS conflict with Node's setTimeout 2018-10-01 15:41:03 -06:00
Kevin Schmidt
d62dd67942 Fix TypeScript errors in ol/interaction/Draw 2018-10-01 15:38:31 -06:00
William Wall
2517b838b6 Fix type check for ol/events
Cast to ol/events/Target since the function declarations only match
between EventTarget and Target for the first two parameters.
2018-10-01 14:02:12 -06:00
William Wall
9fc8475586 Fix type check in ol/PluggableMap.js
- Added JSDoc to getRenderer()
- Cast default options to types
- Cast event to MouseEvent to satisfy tsc. Non mouse/touch events
  will simply produce [NaN, NaN]
- Cast to Layer before calling getSource(), as it does not exist
  on Base
2018-10-01 12:49:47 -06:00
Andreas Hocevar
023ad3c531 Merge pull request #8757 from schmidtk/ts-typeof-ctor
Use typeof to simplify JSDoc class types
2018-10-01 18:33:35 +02:00
Kevin Schmidt
26f1cba808 Remove JSDoc to work around issue solved by typeof 2018-10-01 10:24:55 -06:00
Frédéric Junod
76dda0c422 Merge pull request #8759 from fredj/es6_examples
Use es6 class inheritance in examples
2018-10-01 17:12:20 +02:00
Andreas Hocevar
31ac0eb406 Merge pull request #8761 from schmidtk/ts-feature-types
Allow returning RenderFeature in ol/format/Feature
2018-10-01 17:04:36 +02:00
Kevin Schmidt
c5a9d5b0bc Move FeatureClass and FeatureLike to ol/Feature 2018-10-01 08:59:55 -06:00
Kevin Schmidt
7dbe38358a Replace TileClass with typeof ImageTile 2018-10-01 08:37:01 -06:00
Kevin Schmidt
accdc79c05 Use typeof to simplify JSDoc class types 2018-10-01 08:30:06 -06:00
Kevin Schmidt
7056eb8536 Allow returning RenderFeature in ol/format/Feature
Resolves #8760
2018-10-01 08:24:30 -06:00
Andreas Hocevar
88cde255f8 Merge pull request #8758 from schmidtk/ts-kml-color-node
Fix TS error and prevent extra string conversion
2018-10-01 15:45:32 +02:00
Frederic Junod
47b68ed96d Use es6 class inheritance in examples
Instead of using the deprecated `inherits` function.
2018-10-01 15:44:18 +02:00
Kevin Schmidt
d6b99a5a25 Fix TS error and prevent extra string conversion 2018-10-01 07:29:16 -06:00
Frédéric Junod
a2c7eb80fd Merge pull request #8736 from fredj/misc
Typescript misc fixes
2018-10-01 08:29:02 +02:00
Tim Schaub
6f1f85b729 Merge pull request #8741 from schmidtk/ts-geom
Fix TypeScript errors in ol/geom/*
2018-09-30 20:50:28 -07:00
Tim Schaub
2034e3f63b Merge pull request #8707 from schmidtk/ts-format-feature
Fix TypeScript errors in ol/format/Feature
2018-09-30 20:41:55 -07:00
Marc Jansen
8b26e53067 Merge pull request #8754 from wallw-bits/fix-typecheck-math
Fix type check in ol/math
2018-09-30 09:28:08 +02:00
Frédéric Junod
40ee806c27 Merge pull request #8747 from fredj/faq_modules
Update doc/faq.md
2018-09-30 07:38:15 +02:00
William Wall
831505c425 Fix type check in ol/math
tsc considers everything in the else block to be of type 'never',
since it thinks that cosh is permanently defined for Math. Casting
back to Math in the else block fixes the error.
2018-09-29 16:40:15 -06:00
Andreas Hocevar
b49f2448c7 Merge pull request #8744 from wallw-bits/fix-typecheck-vectortilesource
Fix type checks in VectorTileSource
2018-09-29 20:44:56 +02:00
Frederic Junod
513e11d263 Update doc/faq.md
Change code snippet to use es6 modules.
2018-09-29 08:58:02 +02:00
Frédéric Junod
01923ddbb2 Merge pull request #8740 from benVigie/updateFirefoxTextTestTolerance
Increase linestring textalign test tolerance to be Firefox compliant.
2018-09-29 08:34:48 +02:00
Frédéric Junod
313b00b8f3 Merge pull request #8738 from schmidtk/ts-format-xmlfeature
Cast to parent type to fix TS errors
2018-09-29 08:23:29 +02:00
Frédéric Junod
5abcaebabc Merge pull request #8737 from schmidtk/ts-format-topojson
Flag optional param to fix TS error
2018-09-29 08:18:09 +02:00
William Wall
a685e85c10 Fix type checks in VectorTileSource
Use typeof(Class) instead of defining a typedef for the tile class
2018-09-28 12:33:33 -06:00
Andreas Hocevar
9cbe9926b4 Merge pull request #8742 from wallw-bits/fix-typecheck-vectorsource-2
Fix type checks in Vector source
2018-09-28 18:20:46 +02:00
Andreas Hocevar
efea43d008 Merge pull request #8743 from wallw-bits/fix-typecheck-rastersource
Fix type check in Raster source
2018-09-28 18:20:07 +02:00
William Wall
0bbbd33bb1 Fix type check in Raster source 2018-09-28 09:38:33 -06:00
William Wall
4da372d515 Fix type checks in Vector source
The getResolutions override is unnecessary because the parent
implementation also returns undefined.
2018-09-28 09:24:55 -06:00
Kevin Schmidt
7d5a81d40f Fix TypeScript errors in ol/geom/* 2018-09-28 09:00:28 -06:00
Benjamin Vigie
f8b0eb9648 Increase linestring textalign test tolerance to be Firefox compliant. 2018-09-28 10:42:17 -04:00
Kevin Schmidt
df7c89baeb Fix TypeScript errors in ol/format/WMSGetFeatureInfo 2018-09-28 08:15:59 -06:00
Kevin Schmidt
497aef7309 Cast to parent type to fix TS errors 2018-09-28 07:58:43 -06:00
Kevin Schmidt
73a48eb3d4 Flag optional param to fix TS error 2018-09-28 07:56:07 -06:00
Andreas Hocevar
63f583e148 Merge pull request #8733 from schmidtk/ts-format-wfs
Fix TypeScript errors in ol/format/WFS
2018-09-28 13:19:14 +02:00
Andreas Hocevar
54fa2bdc94 Merge pull request #8735 from schmidtk/ts-format-wkt
Fix TypeScript errors in ol/format/WKT
2018-09-28 12:45:09 +02:00
Frederic Junod
8c69380ef6 Fix wrong property name in Stroke constructor 2018-09-28 09:13:43 +02:00
Frederic Junod
fa7a92b565 Add msTransform property in types/dom.d.ts 2018-09-28 09:13:43 +02:00
Frederic Junod
3d9b1af105 Remove 'extent' properties from ol/source/Tile children classes 2018-09-28 09:13:43 +02:00
Frederic Junod
f58cd03f3b Remove extra parameters 2018-09-28 09:13:43 +02:00
Andreas Hocevar
2e41302fc3 Merge pull request #8730 from schmidtk/ts-format-kml
Fix TypeScript errors in ol/format/KML
2018-09-28 08:31:32 +02:00
Frederic Junod
6ce56329dd Fix wrong type 2018-09-28 08:21:12 +02:00
Frédéric Junod
368fb2c6e8 Merge pull request #8732 from wallw-bits/fix-typecheck-tilesource
Fix type check in ol/source/Tile
2018-09-28 08:19:58 +02:00
Kevin Schmidt
280741f8d1 Fix TypeScript errors in ol/format/WKT 2018-09-27 14:46:15 -06:00
Kevin Schmidt
d4d45001f6 Fix TypeScript errors in ol/format/WFS 2018-09-27 14:03:06 -06:00
Kevin Schmidt
f8d3c8e140 Fix TypeScript errors in ol/format/KML 2018-09-27 13:33:41 -06:00
William Wall
1ee0c50c8a Fix type check in ol/source/Tile
Remove 'extent' because the parent Source class does not contain
'extent' on its options or use options.extent in the constructor.
Also removed 'extent' from 'Options' for 'TileSource'.
2018-09-27 10:47:51 -06:00
Frédéric Junod
2752541ff1 Merge pull request #8731 from fredj/GeolocationError
Dispatch a GeolocationError in Geolocation
2018-09-27 16:56:42 +02:00
Frederic Junod
39951a792d Dispatch a GeolocationError in Geolocation
See https://github.com/openlayers/openlayers/pull/8657#discussion_r219051918
2018-09-27 16:51:17 +02:00
Frédéric Junod
2d68f1506c Merge pull request #8729 from fredj/misc
Move functions out of the PointerEvent class
2018-09-27 16:05:54 +02:00
Frederic Junod
05c0b77a52 Move functions out of the PointerEvent class 2018-09-27 13:49:18 +02:00
Frédéric Junod
5bfd82a9bf Merge pull request #8724 from fredj/ts_fixes
Typescript misc fixes
2018-09-27 10:47:57 +02:00
Frederic Junod
4fbd7f2acd Add missing backtick 2018-09-27 10:18:47 +02:00
Frederic Junod
60c5d016a6 Remove unused 'opaque' property from ol/source/Stamen options
And set the `layer` property as mandatory.
2018-09-27 10:00:02 +02:00
Frederic Junod
7eee6ba07a Remove '=' from type when the parameter is not optional 2018-09-27 10:00:02 +02:00
Frederic Junod
d8ee6acefa Remove extra imports in jsdoc 2018-09-27 10:00:02 +02:00
Frédéric Junod
a4212abbb2 Merge pull request #8717 from fredj/ts_TileArcGISRest
Fix type checks in TileArcGISRest
2018-09-27 08:28:56 +02:00
Tim Schaub
2f51785968 Merge pull request #8718 from schmidtk/ts-format-gpx
Fix TypeScript errors in ol/format/GPX
2018-09-26 21:24:49 -07:00
Tim Schaub
ca9ac8e950 Merge pull request #8719 from openlayers/greenkeeper/marked-0.5.1
Update marked to the latest version 🚀
2018-09-26 21:23:15 -07:00
greenkeeper[bot]
80399f09df chore(package): update marked to version 0.5.1 2018-09-26 14:42:11 +00:00
Frédéric Junod
047f7ecf04 Merge pull request #8706 from schmidtk/ts-types-esrijson
Use EsriJSON types from @types/arcgis-rest-api
2018-09-26 15:56:27 +02:00
Frédéric Junod
277ecca881 Merge pull request #8709 from schmidtk/ts-format-geojson
Fix TypeScript errors in ol/format/GeoJSON
2018-09-26 15:54:20 +02:00
Frederic Junod
9cf7c71df8 Fix type checks in TileArcGISRest 2018-09-26 15:51:55 +02:00
Frédéric Junod
55b300082a Merge pull request #8708 from wallw-bits/fix-typecheck-imagecanvas
Fix type checks in ImageCanvas source
2018-09-26 15:50:42 +02:00
Kevin Schmidt
922e3824fb Fix TypeScript errors in ol/format/GPX 2018-09-26 07:38:12 -06:00
Andreas Hocevar
3b747f4d2d Merge pull request #8710 from wallw-bits/fix-typecheck-imagearcgis
Fix type checks in ImageArcGISRest
2018-09-26 11:10:27 +02:00
Andreas Hocevar
ce3988cfbb Merge pull request #8714 from openlayers/greenkeeper/webpack-4.20.2
chore(package): update webpack to version 4.20.2
2018-09-26 07:40:07 +02:00
greenkeeper[bot]
8f6f4de433 chore(package): update webpack to version 4.20.2
Closes #8705
2018-09-26 05:02:09 +00:00
William Wall
d37e04e8f3 Fix type checks in ImageArcGISRest
Added proper @link tags to links in descriptions. Fixed unclosed
backtick. Made params optional like the description says.
2018-09-25 14:00:23 -06:00
Kevin Schmidt
a6223abdce Fix TypeScript errors in ol/format/GeoJSON 2018-09-25 13:14:20 -06:00
Kevin Schmidt
e9baa2cfc4 Fix TypeScript errors in ol/format/Feature 2018-09-25 13:03:43 -06:00
William Wall
3ba789eae6 Fix type checks in ImageCanvas source
Fixed constructor docs specifying optional options without a
default value. Fixed malformed @link tag in typedef description.
canvasFunction type was previously declared with the 'this' type
as ImageCanvas, but the 'this' ref was not passed on the scope when
calling the function.
2018-09-25 13:01:02 -06:00
Kevin Schmidt
02d5d21d0d Use EsriJSON types from @types/arcgis-rest-api
Resolves #8597
2018-09-25 12:31:22 -06:00
Andreas Hocevar
be12573883 Merge pull request #8703 from openlayers/greenkeeper/webpack-4.20.0
Update webpack to the latest version 🚀
2018-09-25 15:04:16 +02:00
greenkeeper[bot]
8cfb4e9384 chore(package): update webpack to version 4.20.0 2018-09-25 09:48:31 +00:00
Andreas Hocevar
d9698dcb06 Merge pull request #8698 from intouch-smartwater/fix-zoom-slider-events
Fix zoom slider events
2018-09-24 13:15:43 +02:00
Frédéric Junod
708557afef Merge pull request #8697 from fredj/fix-typecheck-cluster
Remove unused properties from Cluster and Image options
2018-09-24 13:14:06 +02:00
James Cheese
9c5227850f Remove events causing errors on touch-screen devices.
Fix for case #5226
2018-09-24 09:55:13 +01:00
James Cheese
49ee4bbd1c Adding tests for ZoomSlider drags ending out of bounds.
As per the existing tests for the slider, ensure that listeners are unbound
correctly and values are as expected.
2018-09-24 09:55:13 +01:00
James Cheese
75947a6759 Revert changes from 7b687be
Adapted the changes to new class structures introduced since the original
deletion before committing, to ensure that everything compiles correctly.
2018-09-24 09:55:13 +01:00
Frederic Junod
7d1b90c7d2 Remove unused extent property from ol/source/Image options 2018-09-24 10:14:33 +02:00
Frederic Junod
557e2c9029 Remove extra imports in jsdoc
The symbols are already imported (es6 import)
2018-09-24 10:11:03 +02:00
Frederic Junod
3b208864bc Remove unused properties from Cluster options
Follow up on #8692
2018-09-24 10:06:25 +02:00
Frédéric Junod
32dea69f5e Merge pull request #8688 from fredj/ts_fixes
Fix PointerEventHandler event type
2018-09-24 10:02:49 +02:00
Frédéric Junod
7d36b893d3 Merge pull request #8686 from fredj/import
Remove extra imports in jsdoc
2018-09-24 10:02:27 +02:00
Tim Schaub
5ee1fd50fa Merge pull request #8681 from wallw-bits/fix-typecheck-webgl-tilelayer
Check the type of the source before using it
2018-09-22 06:23:31 -06:00
Tim Schaub
681941b537 Merge pull request #8691 from romanzoller/fix-error-url
Fix assertion error documentation URL
2018-09-22 06:19:57 -06:00
Tim Schaub
7c5ff5422d Merge pull request #8692 from wallw-bits/fix-typecheck-cluster
Type check fixes for Cluster source
2018-09-21 23:11:58 -06:00
Tim Schaub
c9068526e7 Merge pull request #8677 from wallw-bits/fix-typecheck-vectorsource
Type check fixes for VectorSource
2018-09-21 16:58:24 -06:00
Tim Schaub
9fd4807920 Merge pull request #8684 from wallw-bits/fix-typecheck-bingmaps
Define BingMapsImageryMetadataResponse type
2018-09-21 16:57:13 -06:00
Tim Schaub
16bd9a5450 Merge pull request #8690 from wallw-bits/fix-typecheck-cartodb
Fix type checks in CartoDB
2018-09-21 16:53:54 -06:00
Tim Schaub
ada7e404b1 Merge pull request #8693 from wallw-bits/fix-typecheck-image-source
Fix type check errors for Image source
2018-09-21 16:51:35 -06:00
William Wall
1c10bbf94c Fix arithmetic error on potential array
And also add zoomMax to response type
2018-09-21 11:57:25 -06:00
William Wall
1da2db83da Fix type check errors for Image source
The parent class does not accept an extent on its options. Also
check that the image is an img or video tag before setting the
source as Canvas does not have the src property.
2018-09-21 08:35:41 -06:00
William Wall
10c8371b38 Type check fixes for Cluster source
Removed options unused by super class.
2018-09-21 08:21:20 -06:00
Roman Zoller
5c5fc3f892 Fix assertion error documentation URL
Prefix version number with 'v' to obtain correct URL.

This fixes #8556.
2018-09-21 16:03:39 +02:00
William Wall
82cfa54584 Fix type checks in CartoDB
Removed state from super call options because super doesn't use it.
Defined CartoDBLayerInfo response type.
2018-09-21 08:00:45 -06:00
Frederic Junod
69c6db0bc7 Allow TouchEvent to be passed to getEventPixel 2018-09-21 09:23:03 +02:00
Frederic Junod
9b447ef3ed Fix PointerEventHandler event type 2018-09-21 09:19:05 +02:00
Frederic Junod
821a08ea79 Remove extra imports in jsdoc
The symbols are already imported (es6 import)
2018-09-21 09:12:06 +02:00
Frédéric Junod
a31453b55f Merge pull request #8646 from openlayers/greenkeeper/mustache-3.0.0
Update mustache to the latest version 🚀
2018-09-21 08:39:07 +02:00
Frédéric Junod
5b43b9f151 Merge pull request #8645 from openlayers/greenkeeper/rollup-plugin-uglify-6.0.0
Update rollup-plugin-uglify to the latest version 🚀
2018-09-21 08:38:45 +02:00
Frédéric Junod
bf6ecd7667 Merge pull request #8685 from openlayers/greenkeeper/rollup-0.66.2
Update rollup to the latest version 🚀
2018-09-21 08:28:50 +02:00
Frédéric Junod
725687c987 Merge pull request #8672 from fredj/raster_source_types
Fix source type in Raster source
2018-09-21 08:22:59 +02:00
greenkeeper[bot]
fca3bed6dc chore(package): update rollup to version 0.66.2 2018-09-21 05:26:48 +00:00
William Wall
fd0d6ff6f6 Define BingMapsImageryMetadataResponse type 2018-09-20 16:25:48 -06:00
Tim Schaub
aa39a8a508 Merge pull request #8665 from wallw-bits/fix-typecheck-rbush
Fix type check errors in RBush
2018-09-20 11:09:07 -06:00
Tim Schaub
c472910aae Merge pull request #8680 from schmidtk/ts-events-fixes
TypeScript fixes for ol/events
2018-09-20 11:03:13 -06:00
William Wall
7ff974be2c Remove superfluous bitwise operations 2018-09-20 10:27:13 -06:00
Tim Schaub
c414bd5923 Merge pull request #8678 from wallw-bits/fix-typecheck-source-tileimage
Ensure image is Image or Video before settings src
2018-09-20 09:40:29 -06:00
Tim Schaub
57bd015972 Merge pull request #8676 from wallw-bits/fix-typecheck-wmts
Cast tileGrid to WMTSTileGrid for type check
2018-09-20 04:24:08 -06:00
Tim Schaub
abeb6490e0 Merge pull request #8679 from wallw-bits/fix-typecheck-triangulation
Type check fixes in Triangulation
2018-09-20 04:20:29 -06:00
Tim Schaub
85407a45f2 Merge pull request #8683 from openlayers/greenkeeper/rollup-0.66.1
Update rollup to the latest version 🚀
2018-09-19 22:05:46 -06:00
greenkeeper[bot]
399e2587bb chore(package): update rollup to version 0.66.1 2018-09-19 22:38:34 +00:00
Tim Schaub
edfbb35c03 Merge pull request #8657 from fgravin/fgravin_help_typescript
Typescript fixes
2018-09-19 16:02:07 -06:00
William Wall
016436ae18 Check that tile is ImageTile before using it 2018-09-19 15:04:14 -06:00
Kevin Schmidt
34323c0618 Fix TypeScript error in Target 2018-09-19 14:42:45 -06:00
Kevin Schmidt
0ac94c93ff Fix TypeScript errors managing ol_lm on event targets 2018-09-19 14:42:45 -06:00
William Wall
7525c57688 Check the type of the source before using it
This satisfies tsc in addition to making the class more defensive
against source types that it does not support.
2018-09-19 14:39:10 -06:00
William Wall
a4aaab5e32 Change bitwise or assignment to boolean assignment
Because `tsc` does not like using bitwise operations on booleans.
2018-09-19 13:00:55 -06:00
Tim Schaub
e873949b31 Merge pull request #8671 from fgravin/fgravin_typescript_fixes_2
Fix typescript in FeatureLoader
2018-09-19 12:16:37 -06:00
William Wall
adfc174af3 Ensure image is Image or Video before settings src
Canvas elements do not contain the 'src' property.
2018-09-19 12:12:50 -06:00
Tim Schaub
d44ba929ab Merge pull request #8675 from wallw-bits/fix-typecheck-zoomify
Get width as number from number|Size
2018-09-19 11:55:35 -06:00
William Wall
20125ae96c Type check fixes for VectorSource
Added parameter types to event listeners. Fixed return type for
feature collection branch. Removed duplicate template definition.
2018-09-19 11:04:35 -06:00
William Wall
0994362bfe Cast tileGrid to WMTSTileGrid for type check 2018-09-19 10:31:28 -06:00
William Wall
45f2324a4e Get width as number from number|Size
This satisfies tsc in addition to being a bit more defensive from
custom tile grids, even if using them is very uncommon for this
source.
2018-09-19 10:02:33 -06:00
Florent gravin
9c6e14b050 Remove duplicate containsXY fn 2018-09-19 16:51:43 +02:00
Florent gravin
8b83371272 Feature opt_geometryOrProperties cannot be null 2018-09-19 16:48:51 +02:00
Florent gravin
25ade66017 Fix type conflict between Event and events/Event.js 2018-09-19 16:48:51 +02:00
Florent gravin
f3fb88905e Use window.setTimeout for correct type checking 2018-09-19 16:48:51 +02:00
Florent gravin
e740e7577a Secure type of HTMLImageElement in ImageTile 2018-09-19 16:48:51 +02:00
Florent gravin
d062904cc1 Correct ol event type propagation in Geolocation positionError 2018-09-19 16:48:51 +02:00
Florent gravin
cd169ede0d Correct cast of Projection in Geometry.transform 2018-09-19 16:48:51 +02:00
Florent gravin
bd655b325d Implement Geometry containsXY with correct signature 2018-09-19 16:48:51 +02:00
Florent gravin
7f32ba4216 Use Style instead of import(./style/Style.js).default 2018-09-19 16:47:51 +02:00
Florent gravin
109f16f717 Use Geometry instead of import(./geom/Geometry.js).default 2018-09-19 16:47:51 +02:00
Florent gravin
b3127f86be Fix cast for Geometry type 2018-09-19 16:47:51 +02:00
Florent gravin
e25d053ba6 Featureloader this reference can also be ol.VectorTile 2018-09-19 16:43:10 +02:00
Frederic Junod
3029a07c1a Fix source type in Raster source
The `sources` is an array of layer or source
2018-09-19 15:34:34 +02:00
Frédéric Junod
978b039ddc Merge pull request #8654 from fredj/import
Remove extra imports in jsdoc
2018-09-19 15:12:10 +02:00
Frédéric Junod
65066a0505 Merge pull request #8655 from fredj/webkit_touch
Remove webkit specific properties from Touch
2018-09-19 15:05:20 +02:00
Frédéric Junod
43bc3020a1 Merge pull request #8663 from schmidtk/ts-vendor-fullscreen
Add vendor-specific TS declarations for the Fullscreen API.
2018-09-19 15:05:05 +02:00
Frédéric Junod
5f63575106 Merge pull request #8658 from fredj/proto_void
Don't define functions in the prototype
2018-09-19 14:53:59 +02:00
Frederic Junod
9c52e0d6d9 Remove extra imports in jsdoc
The symbols are already imported (es6 import)
2018-09-19 14:52:58 +02:00
Tim Schaub
77dbf2fdb0 Merge pull request #8662 from wallw-bits/fix-typecheck-ol-tile
Explicitly define type of 'this'
2018-09-19 06:50:59 -06:00
Tim Schaub
ad399246a3 Merge pull request #8664 from schmidtk/ts-listener-fn
Add native Event to ListenerFunction signature.
2018-09-19 06:47:18 -06:00
Frédéric Junod
23be1ac56d Merge pull request #8668 from fredj/module_doc
Add missing 'module' annotation
2018-09-19 14:07:09 +02:00
Frederic Junod
600d156d01 Add missing 'module' annotation 2018-09-19 11:51:34 +02:00
Frédéric Junod
40227db7be Merge pull request #8656 from openlayers/greenkeeper/rollup-plugin-commonjs-9.1.8
chore(package): update rollup-plugin-commonjs to version 9.1.8
2018-09-19 11:29:51 +02:00
Frederic Junod
54cdaddf3a Don't use Chrome only ALLOW_KEYBOARD_INPUT param 2018-09-19 11:12:27 +02:00
Frédéric Junod
5a62d403c0 Merge pull request #8667 from openlayers/greenkeeper/uglifyjs-webpack-plugin-2.0.1
chore(package): update uglifyjs-webpack-plugin to version 2.0.1
2018-09-19 09:26:28 +02:00
Frédéric Junod
eade74384a Merge pull request #8661 from openlayers/greenkeeper/webpack-4.19.1
Update webpack to the latest version 🚀
2018-09-19 09:24:58 +02:00
Frederic Junod
31c392b63c Remove containsXY function from ol/geom/SimpleGeometry
The function is already present in the base class (ol/geom/Geometry)
2018-09-19 08:40:14 +02:00
Frederic Junod
7cb85fa975 Don't define functions in the prototype
If `VOID` is used, TypeScript is not able to figure out what the function parameters are.

Before:
```
$ npx tsc | wc -l
    1188
```

After:
```
$ npx tsc | wc -l
    1169
```
2018-09-19 08:40:14 +02:00
Kevin Schmidt
f8396d8f35 Fix condition TypeScript errors 2018-09-18 15:29:13 -06:00
Kevin Schmidt
4d26ab751d Add vendor-specific TS declarations for the Fullscreen API.
Fixes #8660.
2018-09-18 13:22:55 -06:00
Kevin Schmidt
f819ed137b Add native Event to ListenerFunction signature. 2018-09-18 13:10:36 -06:00
greenkeeper[bot]
91d31b57ec chore(package): update uglifyjs-webpack-plugin to version 2.0.1
Closes #8639
2018-09-18 17:00:44 +00:00
William Wall
1fbefcab64 Explicitly define type of 'this'
I'm not entirely sure that I like this pattern, but there does not
appear to be a better option since TypeScript would recommend:

  function(this: SomeClass, ...)

tsdoc does not appear to support an associated annotation for the
function a la @this {SomeClass}.
2018-09-18 10:38:23 -06:00
greenkeeper[bot]
b2bcbcbc04 chore(package): update webpack to version 4.19.1 2018-09-18 14:27:10 +00:00
Frederic Junod
960b433a2c Remove webkit specific properties from Touch
Remove the following errors from the TypeScript checks:
```
src/ol/pointer/TouchSource.js(231,23): error TS2339: Property 'webkitRadiusX' does not exist on type 'Touch'.
src/ol/pointer/TouchSource.js(232,24): error TS2339: Property 'webkitRadiusY' does not exist on type 'Touch'.
src/ol/pointer/TouchSource.js(233,26): error TS2339: Property 'webkitForce' does not exist on type 'Touch'.
```

The only reference that I've found for these properties is a warning message from Google Chrome:
```
'Touch.webkitRadiusX' is deprecated and will be removed in M47, around November 2015. Please use 'Touch.radiusX' instead.
```
2018-09-18 13:36:38 +02:00
greenkeeper[bot]
d777a6319b chore(package): update rollup-plugin-commonjs to version 9.1.8
Closes #8653
2018-09-18 10:54:15 +00:00
Frédéric Junod
5910e4d207 Merge pull request #8644 from openlayers/greenkeeper/rollup-0.66.0
Update rollup to the latest version 🚀
2018-09-18 09:12:34 +02:00
Tim Schaub
340a446b51 Merge pull request #8643 from schmidtk/style-typescript-cleanup
Fix style TypeScript errors
2018-09-17 14:35:50 -06:00
Kevin Schmidt
124fccf127 Fix style TypeScript errors 2018-09-17 12:38:00 -06:00
greenkeeper[bot]
74417a05d0 chore(package): update mustache to version 3.0.0 2018-09-16 20:43:30 +00:00
greenkeeper[bot]
3ffd7683d5 chore(package): update rollup-plugin-uglify to version 6.0.0 2018-09-16 14:12:44 +00:00
greenkeeper[bot]
457cbc9d9b chore(package): update rollup to version 0.66.0 2018-09-16 08:42:40 +00:00
Andreas Hocevar
7912c5d711 Merge pull request #8638 from ahocevar/fix-haslistener-check
Fix event type in hasListener check
2018-09-15 09:08:55 +02:00
Dmitry Fedorov
7d77d05a57 fix dangling comma 2018-09-14 13:58:13 -07:00
Dmitry Fedorov
028caa4664 fixes for optional key handling 2018-09-14 12:02:37 -07:00
ahocevar
90403421af Fix event type in hasListener check 2018-09-14 18:15:18 +02:00
Frédéric Junod
fe0ac80ba4 Merge pull request #8618 from fredj/topojson_types
Use TopoJSON types from @types/topojson
2018-09-14 13:09:43 +02:00
Frederic Junod
ba53b5e8aa Quotes topojson properties 2018-09-14 13:02:30 +02:00
Frederic Junod
abc3279752 Use TopoJSON types from @types/topojson 2018-09-14 13:02:30 +02:00
Frédéric Junod
84c689d456 Merge pull request #8619 from fredj/typing
Remove wrong Geometry type in KML format
2018-09-14 12:46:31 +02:00
Andreas Hocevar
693d1b24c6 Merge pull request #8631 from openlayers/greenkeeper/webpack-4.19.0
Update webpack to the latest version 🚀
2018-09-14 10:32:01 +02:00
greenkeeper[bot]
cdaca7b0ff chore(package): update webpack to version 4.19.0 2018-09-14 06:02:06 +00:00
Andreas Hocevar
3ccfc2ea61 Merge pull request #8630 from openlayers/greenkeeper/webpack-4.18.1
Update webpack to the latest version 🚀
2018-09-13 17:14:58 +02:00
greenkeeper[bot]
b351eaef29 chore(package): update webpack to version 4.18.1 2018-09-13 12:51:18 +00:00
Andreas Hocevar
14eb3fde14 Merge pull request #8627 from ahocevar/fix-textstate-type
Fix several type imports
2018-09-13 14:50:31 +02:00
ahocevar
f29e6ac397 Fix more incorrect type imports 2018-09-13 11:42:59 +02:00
ahocevar
79674363e6 Fix imports in TextState 2018-09-13 11:42:59 +02:00
Andreas Hocevar
0ce7402d61 Merge pull request #8629 from megawac/patch-1
Enable circle primitive in draw-shapes example
2018-09-13 07:25:09 +02:00
Graeme Yeates
00474dc038 Enable circle primitive in draw-shapes example
For some reason the circle polygon type was not available in the select despite the example code handling drawing circles.
2018-09-12 16:50:59 -04:00
Marc Jansen
8d054a404a Merge pull request #8626 from marcjansen/less-TS2345
Better type annotations / type casts
2018-09-12 05:45:51 +02:00
Marc Jansen
143bf731b6 Better type annotations / type casts 2018-09-11 21:59:54 +02:00
Tim Schaub
d4bbbcb690 Merge pull request #8622 from tschaub/unused
Remove unused method
2018-09-11 12:36:49 -06:00
Tim Schaub
f9f2f981f1 Remove unused method 2018-09-11 10:13:26 -06:00
Tim Schaub
8b45011cd5 Merge pull request #8615 from tschaub/geojson-types
Use GeoJSON types from @types/geojson
2018-09-11 09:57:31 -06:00
Tim Schaub
39c31e62a3 Remove unnecessary type casts 2018-09-11 09:02:33 -06:00
Tim Schaub
5b00231d7a Backwards compatibility with circle serialization 2018-09-11 08:55:31 -06:00
Frederic Junod
3c52757f3f Remove wrong Geometry type in KML format 2018-09-11 08:45:16 +02:00
Frédéric Junod
e6e9801a74 Merge pull request #8617 from openlayers/greenkeeper/webpack-4.18.0
chore(package): update webpack to version 4.18.0
2018-09-11 07:50:18 +02:00
Frédéric Junod
b5e2b9fe6f Merge pull request #8609 from fredj/import
Remove extra imports in jsdoc
2018-09-11 07:36:58 +02:00
greenkeeper[bot]
83e252bed9 chore(package): update webpack to version 4.18.0
Closes #8616
2018-09-10 22:25:19 +00:00
Andreas Hocevar
b0b248d8e6 Merge pull request #8613 from ahocevar/lazy-taint-detection
Lazily detect tainted canvas
2018-09-10 21:50:27 +02:00
Tim Schaub
0364beb312 GeoJSON types 2018-09-10 10:20:08 -06:00
ahocevar
fc5aafe9fe Lazily detect tainted canvas 2018-09-10 10:13:41 +02:00
Andreas Hocevar
968d8d6698 Merge pull request #8610 from ahocevar/mouseposition-touch
Sensible touch behavior of the MousePosition control
2018-09-08 12:35:11 +02:00
ahocevar
3c500e0b4b Sensible touch behavior of the MousePosition control 2018-09-08 11:10:56 +02:00
Frederic Junod
81bab31efb Remove extra imports in jsdoc
The symbols are already imported (es6 import)
2018-09-08 11:01:02 +02:00
Frédéric Junod
058f81c0fa Merge pull request #8602 from fredj/layer_map_opt_typedef
Add missing map property in ol/layer/Layer constructor options
2018-09-08 09:59:20 +02:00
Tim Schaub
6b851d812d Merge pull request #8607 from tschaub/listener-signature
Listener return is boolean or void
2018-09-07 09:54:48 -06:00
Tim Schaub
ef4936de4a Listener return is boolean or void 2018-09-07 09:10:31 -06:00
Tim Schaub
b6746d3432 Merge pull request #8595 from tschaub/optional
Optional arguments and typedef properties
2018-09-07 06:24:16 -06:00
Frederic Junod
3c05e09189 Add missing map property in ol/layer/Layer constructor options 2018-09-07 09:05:04 +02:00
Frédéric Junod
9b2dc88151 Merge pull request #8594 from fredj/import
Remove extra imports in jsdoc
2018-09-07 08:24:52 +02:00
Tim Schaub
5e7afbb393 Merge pull request #8596 from tschaub/externs-revisited
Add types for the UTFGrid and TileJSON JSON responses
2018-09-06 15:20:50 -06:00
Tim Schaub
f6e6878909 Brackets for optional properties 2018-09-06 11:01:59 -06:00
Tim Schaub
e49c691a22 Add types for the UTFGrid and TileJSON JSON responses 2018-09-06 10:11:35 -06:00
Tim Schaub
bd0f3556b6 Mark transform options as optional 2018-09-06 09:32:45 -06:00
Tim Schaub
82675d0bee Mark optional geom constructor args as optional 2018-09-06 09:29:44 -06:00
Tim Schaub
895bfcea8e Optional properties for animation 2018-09-06 09:21:17 -06:00
Frederic Junod
a6861f5f49 Remove extra imports in jsdoc
The symbols are already imported (es6 import)
2018-09-06 16:40:29 +02:00
Frédéric Junod
e32b3b5957 Merge pull request #8591 from fredj/textstate_typedef
Add missing properties in TextState typedef
2018-09-06 15:30:41 +02:00
Frédéric Junod
e3f13051f6 Merge pull request #8590 from fredj/import
Don't import ourselves
2018-09-06 15:30:22 +02:00
Frederic Junod
c8747d87a4 Add missing properties in TextState typedef 2018-09-06 09:30:28 +02:00
Frédéric Junod
225e02244e Merge pull request #8589 from openlayers/greenkeeper/rollup-0.65.2
Update rollup to the latest version 🚀
2018-09-06 09:06:37 +02:00
Frederic Junod
ea616e7751 Don't import ourselves 2018-09-06 09:05:32 +02:00
Frédéric Junod
ba698258c0 Merge pull request #8586 from fredj/ts_fixes
Cast 'originalEvent' in interactions
2018-09-06 09:00:33 +02:00
Tim Schaub
1f50a2b3e6 Merge pull request #8588 from tschaub/tilegrid-options
Rework createXYZ
2018-09-05 13:42:25 -06:00
greenkeeper[bot]
9b64ea4969 chore(package): update rollup to version 0.65.2 2018-09-05 19:36:58 +00:00
Tim Schaub
52b30ead65 Rework createXYZ 2018-09-05 12:00:54 -06:00
Tim Schaub
203cb12501 Merge pull request #8587 from tschaub/let-nothing
Add a statement to trigger TypeScript checking
2018-09-05 10:51:51 -06:00
Tim Schaub
60e907fb48 Add a statement to trigger TypeScript checking
TypeScript is not checking JSDoc comments attached to the EOF token.
See https://github.com/Microsoft/TypeScript/issues/26905
2018-09-05 09:13:24 -06:00
Frederic Junod
71328530fe Remove unnecessary 'function' in jsdoc blocks 2018-09-05 16:40:45 +02:00
Frederic Junod
a5f5c06af3 Cast 'originalEvent' in interactions 2018-09-05 16:38:42 +02:00
Tim Schaub
f825a08bcf Merge pull request #8345 from tschaub/ts
TypeScript (1/n)
2018-09-05 08:31:12 -06:00
Tim Schaub
ccfacc5ee6 Transformed types
Using the [ts.js codemod](https://gist.github.com/tschaub/1ea498c9d1e5268cf36d212b3949be4e):

    jscodeshift --transform ts.js src
2018-09-05 08:05:29 -06:00
Tim Schaub
f2aaaa19e1 Custom ESLint rule @openlayers/valid-tsdoc 2018-09-05 08:04:34 -06:00
Tim Schaub
5ac94426e1 Add TypeScript config 2018-09-05 08:04:34 -06:00
Tim Schaub
e3b21b9994 Merge pull request #8581 from openlayers/greenkeeper/rollup-plugin-node-resolve-3.4.0
Update rollup-plugin-node-resolve to the latest version 🚀
2018-09-05 03:52:15 -06:00
Frédéric Junod
f34d024b22 Merge pull request #8585 from openlayers/greenkeeper/rollup-0.65.1
Update rollup to the latest version 🚀
2018-09-05 11:13:32 +02:00
greenkeeper[bot]
f515b84322 chore(package): update rollup to version 0.65.1 2018-09-05 07:17:42 +00:00
Marc Jansen
d6e8ecea5e Merge pull request #8579 from marcjansen/tsc-ts2367
Better type annotation
2018-09-04 18:41:56 +02:00
Marc Jansen
c691e7ca7a Merge pull request #8580 from marcjansen/tsc-ts2367-one-less
Cast POINTER_ID before comparison
2018-09-04 18:41:04 +02:00
greenkeeper[bot]
37221edbf0 chore(package): update rollup-plugin-node-resolve to version 3.4.0 2018-09-04 10:57:57 +00:00
Andreas Hocevar
ae14df9dca Merge pull request #8578 from openlayers/greenkeeper/webpack-4.17.2
Update webpack to the latest version 🚀
2018-09-04 10:16:18 +02:00
Marc Jansen
281873f22a Cast POINTER_ID before comparison 2018-09-04 09:37:15 +02:00
Frédéric Junod
8510169c69 Merge pull request #8574 from fredj/typescript_checks
Rename Extent to ExtentInteraction
2018-09-04 09:12:49 +02:00
Frédéric Junod
e2c0d59332 Merge pull request #8577 from fredj/cleanup
Remove geojson.js extern inclusion in tasks/generate-info
2018-09-04 09:12:30 +02:00
Marc Jansen
99245b47f7 Better type annotation 2018-09-03 21:17:56 +02:00
greenkeeper[bot]
eee7b0126b chore(package): update webpack to version 4.17.2 2018-09-03 18:28:55 +00:00
Frederic Junod
404c1bda0a Remove geojson.js extern inclusion in tasks/generate-info 2018-09-03 16:16:46 +02:00
Frederic Junod
8fdc4cc9fc Change property test in MousePosition options
TypeScript doesn't like the current implementation:
```
src/ol/control/MousePosition.js(82,64): error TS2339: Property 'undefinedHTML' does not exist on type 'never'.
```
2018-09-03 15:25:33 +02:00
Frederic Junod
ad1dec58ec Rename Extent to ExtentInteraction 2018-09-03 15:15:58 +02:00
Frédéric Junod
42b8340ea1 Merge pull request #8573 from fredj/f8360
Fix freehand polygon drawing
2018-09-03 12:40:34 +02:00
Frederic Junod
595009726f Fix freehand polygon drawing
Fixes #8360
2018-09-03 11:56:31 +02:00
Frédéric Junod
4025ddc364 Merge pull request #8572 from fredj/ts_fixes
typescript misc fixes
2018-09-03 10:49:05 +02:00
Frederic Junod
5b8b470568 Fix imports in jsdoc blocks 2018-09-03 09:41:00 +02:00
Frederic Junod
3c02bd15fb Add missing 'extent' property in TileImage constructor 2018-09-03 09:41:00 +02:00
Frederic Junod
5fdac622ef Add missing 'extent' property in VectorTile constructor 2018-09-03 09:41:00 +02:00
Frederic Junod
25c1754052 Cast empty optional options in constructor
To remove the typescript errors:
```
Property 'xxx' does not exist on type '{}'
```
2018-09-03 09:40:59 +02:00
Andreas Hocevar
a30f8859aa Merge pull request #8569 from ahocevar/simpler-faster-proj-get
Make proj~get simpler and faster
2018-08-31 16:33:08 +02:00
Frédéric Junod
5435379e70 Merge pull request #8567 from fredj/element_vs_node
Use 'Element' type instead of 'Node'
2018-08-31 16:32:18 +02:00
ahocevar
9eeacc585f Make proj~get simpler and faster 2018-08-31 12:19:23 +02:00
Frederic Junod
20a347b0c9 Use 'Element' type instead of 'Node' 2018-08-31 11:36:16 +02:00
Andreas Hocevar
6b851720d9 Merge pull request #8563 from openlayers/greenkeeper/rollup-plugin-uglify-5.0.2
Update rollup-plugin-uglify to the latest version 🚀
2018-08-31 10:56:58 +02:00
greenkeeper[bot]
d12537b975 chore(package): update rollup-plugin-uglify to version 5.0.2 2018-08-30 22:12:09 +00:00
Andreas Hocevar
ee3ebbff76 Merge pull request #8561 from openlayers/greenkeeper/rollup-plugin-uglify-5.0.0
Update rollup-plugin-uglify to the latest version 🚀
2018-08-30 22:22:32 +02:00
greenkeeper[bot]
411bc8ac61 chore(package): update rollup-plugin-uglify to version 5.0.0 2018-08-30 19:23:38 +00:00
Frédéric Junod
bb4f887545 Merge pull request #8558 from fredj/zIndex_doc
Fix default zIndex value and documentation for layer options
2018-08-29 12:53:50 +02:00
Frederic Junod
db04052b7a Fix default zIndex value and documentation for layer options 2018-08-29 11:33:09 +02:00
Andreas Hocevar
9daa556da1 Merge pull request #8555 from ahocevar/no-mangling-for-workers
Do not minify examples that inject code into workers
2018-08-29 10:45:26 +02:00
Andreas Hocevar
c29fdaf714 Merge pull request #8557 from ahocevar/fix-release-notes
Fix typo in release notes
2018-08-29 10:42:00 +02:00
ahocevar
2d79baf54d Fix typo in release notes 2018-08-29 10:40:40 +02:00
ahocevar
8e9e0ae848 Do not minify examples that inject code into workers 2018-08-29 08:56:24 +02:00
Andreas Hocevar
badc350746 Merge pull request #8554 from openlayers/release-v5.2.0
Release v5.2.0
2018-08-28 21:39:23 +02:00
Andreas Hocevar
50293200d7 Merge pull request #8504 from ahocevar/browserify-readme
Link to Browserify example project
2018-08-28 21:35:18 +02:00
ahocevar
b2b3d6b05c Update package version to 5.2.0 2018-08-28 21:32:36 +02:00
ahocevar
34fefe3103 Changelog for v5.2.0 2018-08-28 21:32:36 +02:00
Pierre GIRAUD
27dadef8ef Merge pull request #8511 from openlayers/pgiraud-patch-1
Update IGN API key
2018-08-27 10:36:35 +02:00
Pierre GIRAUD
f456c56ddd Merge pull request #8547 from pgiraud/serve-examples
Fix port number in developing doc
2018-08-27 09:32:44 +02:00
Pierre GIRAUD
bdb80d3368 Fix port number in developing doc 2018-08-27 09:14:23 +02:00
Pierre GIRAUD
b039e17015 Update IGN API key
Fixes #8509
2018-08-27 09:11:26 +02:00
Andreas Hocevar
bd9635f6ef Merge pull request #8546 from ahocevar/proj-faq
Update projection FAQ for v5
2018-08-27 08:14:28 +02:00
ahocevar
a0e72c7d42 Update projection FAQ for v5 2018-08-26 21:41:16 +02:00
Andreas Hocevar
bb77fbe703 Merge pull request #8543 from openlayers/greenkeeper/rollup-0.65.0
Update rollup to the latest version 🚀
2018-08-26 07:21:28 +02:00
greenkeeper[bot]
0c47890bdd chore(package): update rollup to version 0.65.0 2018-08-25 14:41:44 +00:00
Andreas Hocevar
2d974c6f1f Merge pull request #8541 from openlayers/greenkeeper/proj4-2.5.0
Update proj4 to the latest version 🚀
2018-08-25 00:37:38 +02:00
Andreas Hocevar
d95b2bc2ae Merge pull request #8542 from openlayers/greenkeeper/rollup-plugin-commonjs-9.1.6
Update rollup-plugin-commonjs to the latest version 🚀
2018-08-25 00:36:35 +02:00
greenkeeper[bot]
0ada02f12a chore(package): update rollup-plugin-commonjs to version 9.1.6 2018-08-24 22:10:50 +00:00
greenkeeper[bot]
786bb608b9 chore(package): update proj4 to version 2.5.0 2018-08-24 21:25:55 +00:00
Frédéric Junod
2342ec90aa Merge pull request #8481 from gberaudo/expose_some_internal_functions
Expose some internal functions
2018-08-23 10:42:19 +02:00
Andreas Hocevar
7a05b671d8 Merge pull request #8533 from openlayers/greenkeeper/webpack-4.17.1
Update webpack to the latest version 🚀
2018-08-22 13:32:22 +02:00
Andreas Hocevar
ea9517ffd5 Merge pull request #8510 from gberaudo/fix_WMTS_dimensions_handling
Fix WMTS URLs with dimensions
2018-08-22 13:31:53 +02:00
Frédéric Junod
d84c64b3e7 Merge pull request #8524 from NeoRaider/xhtml-fixes
Fix compatiblity with XHTML content type
2018-08-22 13:13:22 +02:00
greenkeeper[bot]
017d2e4802 chore(package): update webpack to version 4.17.1 2018-08-22 10:49:35 +00:00
Andreas Hocevar
3b36477fc3 Merge pull request #8532 from ahocevar/rendercomplete
Add 'rendercomplete' event
2018-08-22 11:01:00 +02:00
ahocevar
1baa8be269 Add 'rendercomplete' event 2018-08-22 09:53:24 +02:00
Andreas Hocevar
158b54156a Merge pull request #8530 from openlayers/greenkeeper/webpack-4.17.0
Update webpack to the latest version 🚀
2018-08-21 19:34:45 +02:00
greenkeeper[bot]
5752bd0028 chore(package): update webpack to version 4.17.0 2018-08-21 09:50:38 +00:00
Andreas Hocevar
3f98094d9d Merge pull request #8529 from TDesjardins/patch-1
Update link to base class in docs
2018-08-20 17:56:50 +02:00
Tino Desjardins
b56a7c0fa3 Update link to base class in docs 2018-08-20 17:03:59 +02:00
Tim Schaub
b7aa6c6513 Merge pull request #8528 from TDesjardins/patch-1
Update link to base class in docs
2018-08-20 05:36:47 -06:00
Tino Desjardins
1605741a92 Update link to base class in docs 2018-08-20 10:23:22 +02:00
Tim Schaub
a18da7d55a Merge pull request #8525 from tschaub/re-export-projection
Re-export Projection from ol/proj for convenience
2018-08-19 19:52:17 -06:00
Tim Schaub
68cf960028 Re-export Projection from ol/proj for convenience 2018-08-18 14:14:10 -06:00
Matthias Schiffer
94c6afd65d Avoid HTML entities like &nbsp; and &copy;
Use numerical entities instead for XHTML compatiblity.
2018-08-18 13:13:27 +02:00
Matthias Schiffer
321166849b Consistently use lowercase HTML tag names
Unlike HTML, XHTML is case-sensitive.
2018-08-18 12:48:14 +02:00
Andreas Hocevar
26cc0a3ded Merge pull request #8522 from openlayers/greenkeeper/marked-0.5.0
Update marked to the latest version 🚀
2018-08-17 11:30:38 +02:00
greenkeeper[bot]
fffcf4415c chore(package): update marked to version 0.5.0 2018-08-17 09:00:28 +00:00
Andreas Hocevar
07cb678271 Merge pull request #8499 from ahocevar/focus
Round center in viewState to pixels
2018-08-16 16:41:15 +02:00
Guillaume Beraudo
315cfa1033 Fix WMTS layers URLs with dimensions 2018-08-16 15:34:56 +02:00
Andreas Hocevar
38349d8c37 Merge pull request #8520 from openlayers/redundant-if
Remove redundant if block
2018-08-16 08:31:29 +02:00
Andreas Hocevar
adce78e19e Remove redundant if block 2018-08-16 07:04:53 +02:00
Andreas Hocevar
eb0fcdb588 Merge pull request #8515 from ahocevar/getoverlay
More convenient select and sketch layer management
2018-08-15 13:21:48 +02:00
ahocevar
161c5b0105 Better documentation of the zIndex default 2018-08-15 11:24:29 +02:00
ahocevar
8ab1589f9a Add getOverlay method to access sketch and selection layers 2018-08-15 10:59:38 +02:00
ahocevar
95533e2425 Use configured zIndex for unmanaged layers 2018-08-15 10:58:52 +02:00
Andreas Hocevar
a94dff2c06 Merge pull request #8505 from openlayers/greenkeeper/karma-3.0.0
Update karma to the latest version 🚀
2018-08-10 11:34:21 +02:00
greenkeeper[bot]
fc75fc691b chore(package): update karma to version 3.0.0 2018-08-09 21:20:04 +00:00
ahocevar
b9aceb23ac Let renderer decide whether to snapToPixel or not, also for text 2018-08-09 18:16:58 +02:00
ahocevar
f382ddf230 Remove snapToPixel option and deprecate getters/setters 2018-08-09 18:16:58 +02:00
ahocevar
dbdaa73cf2 Only change interacting flag when dragging 2018-08-09 18:16:58 +02:00
ahocevar
f3cd1d8dfd Round center in viewState 2018-08-09 18:16:58 +02:00
Andreas Hocevar
e5944682df Merge pull request #8503 from ahocevar/callback-closure
Avoid block scope issues in transpiled code
2018-08-09 13:55:17 +02:00
Andreas Hocevar
147a86c867 Merge pull request #8501 from openlayers/greenkeeper/rollup-plugin-commonjs-9.1.5
Update rollup-plugin-commonjs to the latest version 🚀
2018-08-09 10:57:34 +02:00
ahocevar
2d08811485 Link to Browserify example project 2018-08-09 10:34:31 +02:00
ahocevar
fc19e3e12e Avoid block scope issues in transpiled code 2018-08-09 10:22:42 +02:00
greenkeeper[bot]
a5fc8bdd25 chore(package): update rollup-plugin-commonjs to version 9.1.5 2018-08-09 05:49:21 +00:00
Andreas Hocevar
7f8b2d2e1f Merge pull request #8495 from openlayers/greenkeeper/rollup-0.64.1
Update rollup to the latest version 🚀
2018-08-07 21:43:35 +02:00
greenkeeper[bot]
80a00fce47 chore(package): update rollup to version 0.64.1 2018-08-07 19:20:14 +00:00
Andreas Hocevar
ee8ed5193c Merge pull request #8493 from openlayers/greenkeeper/clean-css-cli-4.2.1
Update clean-css-cli to the latest version 🚀
2018-08-07 11:26:54 +02:00
greenkeeper[bot]
cc7d825a13 chore(package): update clean-css-cli to version 4.2.1 2018-08-07 09:02:18 +00:00
Andreas Hocevar
fd4e0f14cc Merge pull request #8490 from MarquesDeAzevedo/patch-1
WMTS getCapabilities readCoodinates more than one whitespace delimiter
2018-08-07 10:46:28 +02:00
MarquesDeAzevedo
85e1f11adb WMTS getCapabilities readCoodinates more than one whitespace delimiter
remove not required regexp modifier
2018-08-07 10:40:08 +02:00
MarquesDeAzevedo
47c4e1a165 WMTS getCapabilities readCoodinates more than one whitespace delimiter
combine split and replace
2018-08-07 09:56:17 +02:00
Andreas Hocevar
0bff75a067 Merge pull request #8491 from openlayers/greenkeeper/rollup-0.64.0
Update rollup to the latest version 🚀
2018-08-07 09:21:42 +02:00
greenkeeper[bot]
ab81deb242 chore(package): update rollup to version 0.64.0 2018-08-07 07:12:54 +00:00
MarquesDeAzevedo
654073cd3d WMTS getCapabilities readCoodinates more than one whitespace delimiter
Some WMTS getCapabilities return <MatrixSet><TopLeftCorner> with more than one whitespace as delimiter between the coordinates. This leads to the layer not being displayed, because the origin_ property of ol.tilegrid.TileGrid is not set.
Error in ol.tilegrid.TileGrid.prototype.getTileCoordForXYAndZ_: JavaScript runtime error: Unable to get property '0' of undefined or null reference
2018-08-07 08:40:42 +02:00
Andreas Hocevar
a354e842ab Merge pull request #8489 from ahocevar/prototype
Use .prototype. only where necessary
2018-08-06 15:44:06 +02:00
ahocevar
1eeea2aa4d Use class method syntax instead of .prototype.method = function 2018-08-06 15:30:17 +02:00
ahocevar
2f92e48e93 Use super.method instead of prototype.method.call 2018-08-06 15:30:17 +02:00
ahocevar
c5b42c49d5 Fix Disposable's prototype handling 2018-08-06 15:30:17 +02:00
Andreas Hocevar
03d47e49ed Merge pull request #8486 from openlayers/greenkeeper/webpack-4.16.5
Update webpack to the latest version 🚀
2018-08-06 11:40:44 +02:00
Guillaume Beraudo
abbfb5c653 Document the stableSort function 2018-08-06 10:50:18 +02:00
greenkeeper[bot]
a78c163a4f chore(package): update webpack to version 4.16.5 2018-08-06 08:14:58 +00:00
Guillaume Beraudo
a4178d05ef Expose the stableSort function
This is a low level function, essential to OpenLayers so it is always
shipped with OpenLayers.
2018-08-06 09:18:56 +02:00
Guillaume Beraudo
dbf9048d8f Expose the getUid function
It is often useful in application code to have a way to uniquely identify
and object.

Exposing the OpenLayers mechanism allows for best performance and avoid
unneccessary dirt.
2018-08-06 09:18:56 +02:00
Andreas Hocevar
824ad48488 Merge pull request #8478 from ahocevar/available-font-weights
Check font availability with multiple font weights
2018-08-06 06:52:53 +02:00
Frédéric Junod
8cd9eabe68 Merge pull request #8483 from fredj/draw-shapes-null-coordinates
Don't create Polygon with null coordinates
2018-08-05 19:30:34 +02:00
Frederic Junod
a50a4efeca Don't create Polygon with null coordinates 2018-08-04 07:35:19 +02:00
Frédéric Junod
d49be1393e Merge pull request #8471 from samuel-girard/imagestatic_properties
Add getUrl and getImageExtent to ImageStatic API
2018-08-03 09:22:53 +02:00
Andreas Hocevar
a991bb21d6 Merge pull request #8470 from scroach/tile-api-doc
Update Tile loading API docs
2018-08-03 09:13:48 +02:00
Andreas Hocevar
df848d6673 Add basic tileLoadFunction example and refine advanced example 2018-08-03 09:04:24 +02:00
scroach
68ce6de0ca Updated Tile loading API docs 2018-08-03 09:01:47 +02:00
Tim Schaub
141fe5fe49 Merge pull request #8477 from gberaudo/expose_gutter
Expose original getGutter
2018-08-02 22:33:23 -06:00
Andreas Hocevar
57baa15cc3 Merge pull request #8476 from openlayers/greenkeeper/webpack-4.16.4
Update webpack to the latest version 🚀
2018-08-02 22:46:57 +02:00
Andreas Hocevar
64138bb94f Merge pull request #8475 from openlayers/greenkeeper/clean-css-cli-4.2.0
Update clean-css-cli to the latest version 🚀
2018-08-02 22:41:09 +02:00
ahocevar
62188502e9 Check font availability in 3 different weight ranges 2018-08-02 18:57:26 +02:00
Guillaume Beraudo
fe86d2e7f7 Expose original getGutter
TileWMS objects take a gutter option but do not have a public getter
for it. This makes it convoluted for user code to recreate the object
(ex: in the case of serialization/deserialization).

- the getGutterInternal() method is renamed to getGutter;
- the getGutter(projection) method is renamed to getGutterForProjection,
  which is also more explicit.

The getGutter method was not API and is only used by the renderer.
2018-08-02 17:12:41 +02:00
greenkeeper[bot]
69ae9d7180 chore(package): update webpack to version 4.16.4 2018-08-02 14:55:46 +00:00
greenkeeper[bot]
adc83ba484 chore(package): update clean-css-cli to version 4.2.0 2018-08-02 13:08:28 +00:00
Samuel Girard
4012280ad4 Use class property for url 2018-08-02 09:02:04 +02:00
Samuel Girard
e48c85a689 Add getUrl and getImageExtent to ImageStatic API 2018-08-01 12:23:38 +02:00
Andreas Hocevar
c74faaa7ca Merge pull request #8469 from openlayers/greenkeeper/rollup-0.63.5
Update rollup to the latest version 🚀
2018-08-01 10:52:23 +02:00
greenkeeper[bot]
236b6832fb chore(package): update rollup to version 0.63.5 2018-08-01 07:39:36 +00:00
Andreas Hocevar
93b92d3990 Merge pull request #8466 from ahocevar/on-focus-only
Add onFocusOnly option to interaction defaults
2018-07-31 13:27:14 +02:00
Andreas Hocevar
a36ab978e7 Merge pull request #8465 from ahocevar/no-prevent-default-on-pointermove
Do not prevent default on pointermove
2018-07-31 13:26:46 +02:00
ahocevar
55fb62c551 Add onFocusOnly option to interaction defaults 2018-07-31 09:01:42 +02:00
ahocevar
c74b9c1d55 Do not prevent default on pointermove
Instead, only prevent default on handled pointerdown events. This makes 
the `focus` condition work with interactions that involve dragging on 
touch devices.
2018-07-31 08:33:15 +02:00
Andreas Hocevar
a56ca57ac6 Merge pull request #8461 from lionralfs/lionralfs-patch-1
Fix double backtick typo
2018-07-28 14:40:33 +02:00
Lion Ralfs
1aadd51c57 Fix double backtick typo 2018-07-28 12:58:37 +02:00
Tim Schaub
a1391a2083 Merge pull request #8453 from openlayers/greenkeeper/webpack-4.16.3
Update webpack to the latest version 🚀
2018-07-27 17:55:28 -06:00
Frédéric Junod
5adf0be4a3 Merge pull request #8452 from fredj/f_8409
Remove extra translate function in Geometry, add missing api tag
2018-07-27 15:53:53 +02:00
Frédéric Junod
4c71ddb3c7 Merge pull request #8451 from fredj/rm_f
Remove unimplemented functions
2018-07-27 13:22:35 +02:00
greenkeeper[bot]
efe15402cc chore(package): update webpack to version 4.16.3 2018-07-27 11:19:38 +00:00
Frederic Junod
b3586bed8d Remove extra translate function in Geometry, add missing api tag 2018-07-27 13:19:12 +02:00
Frederic Junod
1e332f52d6 Remove unimplemented functions
The TypeScript checker complain about it.
It was a workaround for closure-compiler, it's not needed anymore.
2018-07-27 13:10:45 +02:00
Frédéric Junod
c0f44f6d9d Merge pull request #8450 from fredj/types
Mark properties of ReadOptions and WriteOptions as optional
2018-07-27 11:45:25 +02:00
Andreas Hocevar
efe0dd7fbf Merge pull request #8447 from openlayers/greenkeeper/rollup-plugin-commonjs-9.1.4
Update rollup-plugin-commonjs to the latest version 🚀
2018-07-27 11:39:47 +02:00
Frederic Junod
219629458b Mark properties of ReadOptions and WriteOptions as optional 2018-07-27 11:25:52 +02:00
greenkeeper[bot]
b13feb0046 chore(package): update rollup-plugin-commonjs to version 9.1.4 2018-07-27 06:27:33 +00:00
Tim Schaub
df293d8a2e Merge pull request #8443 from tschaub/void
Explicit void
2018-07-26 17:28:26 -06:00
Tim Schaub
6cfa2b22a7 Explicit void 2018-07-26 10:46:39 -06:00
Tim Schaub
8346bb7454 Merge pull request #8437 from tschaub/target
Avoid shadowing EventTarget
2018-07-26 09:21:57 -07:00
Tim Schaub
40486a0ecc Avoid shadowing EventTarget 2018-07-26 10:14:58 -06:00
Tim Schaub
d8efa569d9 Merge pull request #8439 from tschaub/dotless
Fewer dots in types
2018-07-26 06:16:33 -07:00
Frédéric Junod
adfb3dd229 Merge pull request #8441 from fredj/f_8440
Fix loaded script for the example-verbatim examples
2018-07-26 14:02:33 +02:00
Frederic Junod
3c0be4e611 Fix loaded script for the example-verbatim examples 2018-07-26 13:46:17 +02:00
Tim Schaub
2eb07aa081 Use Template<Foo> instead of Template.<Foo> 2018-07-25 18:37:08 -07:00
Tim Schaub
affbf59b77 Use Object<Foo, Bar> instead of Object.<Foo, Bar> 2018-07-25 18:33:49 -07:00
Tim Schaub
d12ef20b12 Use Array<Foo> instead of Array.<Foo> 2018-07-25 18:32:43 -07:00
Frédéric Junod
5a6502572f Merge pull request #8435 from fredj/f_8434
Call setCoordinates on the point instance
2018-07-25 16:55:05 +02:00
Frederic Junod
d7adf0b4f3 Call setCoordinates on the point instance 2018-07-25 16:10:56 +02:00
Tim Schaub
f7551623e7 Merge pull request #8428 from tschaub/ts-fixes
Type name on same line as type
2018-07-24 07:24:13 -07:00
Tim Schaub
6f22f1b7ac Param name on same line as type 2018-07-23 16:28:22 -07:00
Tim Schaub
6cdfbe3116 Merge pull request #8422 from jkoelewijn/improveJsDocForAngularCli
Improve JSDoc such that `ng build --prod` with angular/cli 6.0.8 succeeds again
2018-07-23 14:40:50 -07:00
Jaap Koelewijn
704845e37a Use alternative JSDoc annotation for optional parameter which passes the tests. 2018-07-23 21:29:52 +02:00
Jaap Koelewijn
fd9219f035 Incorporate review comments of ahocevar and tschaub. 2018-07-23 21:12:43 +02:00
Tim Schaub
f3786f9cff Merge pull request #8426 from openlayers/greenkeeper/webpack-4.16.2
Update webpack to the latest version 🚀
2018-07-23 07:23:19 -07:00
greenkeeper[bot]
436633b990 chore(package): update webpack to version 4.16.2 2018-07-23 12:03:50 +00:00
Andreas Hocevar
a89ae25134 Merge pull request #8396 from iamplex/fix-createRegularPolygon
Fix ol.interaction.Draw~createRegularPolygon
2018-07-23 10:51:32 +02:00
Jaap Koelewijn
2769953204 Fix JSDoc such that ng build --prod with angular/cli 6.0.8 succeeds again. 2018-07-23 01:05:26 +02:00
Andreas Hocevar
14ead39440 Merge pull request #8420 from ahocevar/raster-lib-fn-names
Keep function names when building examples
2018-07-22 22:55:05 +02:00
ahocevar
39261af940 Keep function names when building examples 2018-07-22 17:39:20 +02:00
Tim Schaub
9ec623380a Merge pull request #8419 from tschaub/release-v5.1.3
Release v5.1.3
2018-07-21 08:45:16 -07:00
Tim Schaub
28104527b0 Updates for v5.1.3 2018-07-21 09:44:10 -06:00
Tim Schaub
b50bc1febf Merge pull request #8417 from tschaub/bad-info
Minor doc updates
2018-07-21 08:34:01 -07:00
Andreas Hocevar
c046c2a1ba Merge pull request #8418 from ahocevar/classdesc-constructor-api
Set api annotation on classdesc, not constructor
2018-07-21 17:33:30 +02:00
ahocevar
bbe0a66d07 Set api annotation on classdesc, not constructor 2018-07-21 17:25:22 +02:00
Tim Schaub
d8b290966b Tracking 2018-07-21 09:11:30 -06:00
Tim Schaub
0edb39c8ab Single quote instead of backtick 2018-07-21 08:40:03 -06:00
Tim Schaub
f0ffb48633 Update concepts 2018-07-21 08:37:38 -06:00
Tim Schaub
171195a836 Remove broken link to sources 2018-07-21 08:24:44 -06:00
ahocevar
45cf296ed4 Simplify calculation and add tests 2018-07-21 10:22:42 +02:00
plex
b377bbac59 fix: change the start angle of the regular polygon to match the sketch 2018-07-21 09:44:00 +02:00
Tim Schaub
2767ddfdc7 Merge pull request #8414 from tschaub/release-v5.1.2
Updates for 5.1.2
2018-07-20 19:04:08 -07:00
Tim Schaub
cd85e30d08 Updates for 5.1.2 2018-07-20 20:03:15 -06:00
Tim Schaub
139fcd7bae Merge pull request #8413 from tschaub/jsdoc-fix
Remove extra curly in type
2018-07-20 19:00:34 -07:00
Tim Schaub
2a04415264 Remove extra curly in type 2018-07-20 19:57:49 -06:00
Tim Schaub
515eca797f Correct link to release notes 2018-07-20 19:44:04 -06:00
810 changed files with 105123 additions and 29298 deletions

40
.circleci/config.yml Normal file
View File

@@ -0,0 +1,40 @@
version: 2
jobs:
build:
docker:
- image: circleci/node:latest-browsers
working_directory: ~/repo
steps:
- checkout
- restore_cache:
keys:
- v1-dependencies-{{ checksum "package.json" }}
- v1-dependencies-
- run:
name: Install Dependencies
command: npm install
- save_cache:
paths:
- node_modules
key: v1-dependencies-{{ checksum "package.json" }}
- run:
name: Run Tests
command: npm test
- store_artifacts:
path: rendering/cases/
destination: rendering
- run:
name: Build Examples
command: npm run build-examples
- store_artifacts:
path: build/examples
destination: examples

View File

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

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.

View File

@@ -1,17 +0,0 @@
language: node_js
node_js:
- '8'
cache:
directories:
- node_modules
after_success:
- cat coverage/lcov.info | coveralls
branches:
only:
- master
addons:
hosts:
- travis.dev
jwt:
# This is the encrypted SAUCE_ACCESS_KEY
secure: bb2Ibzu9RLe6ZlIG7JVcuH7IoLMxa/i3LTM7t8mbsPjVOGs5ycyJ7M9MbvqB/F2EzbeV4XB2c9ufI4TkaLYceY5kdWjfZVN8iasr+GFqKMv1uR4i6bpu8KmHJ+blxwfY1QOQ/cGwEx+fbeycMtpTc3Y3GyXaPlCQLhbZvesMg88=

View File

@@ -42,7 +42,7 @@ Your pull request must:
* Follow OpenLayers's coding style. * 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. Integration system.
* Address a single issue or add a single item of functionality. * Address a single issue or add a single item of functionality.

View File

@@ -5,9 +5,9 @@
You will obviously start by You will obviously start by
[forking](https://github.com/openlayers/openlayers/fork) the OpenLayers repository. [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 is run through a full test suite to ensure it compiles and passes the tests. Failing
pull requests will not be merged. pull requests will not be merged.
@@ -30,7 +30,7 @@ To run the examples you first need to start the dev server:
$ npm run serve-examples $ npm run serve-examples
Then, load <http://localhost:5000/> in your browser. Then, load <http://localhost:8080/> in your browser.
## Running tests ## Running tests

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

@@ -39,6 +39,29 @@ See the following examples for more detail on bundling OpenLayers with your appl
* Using [Rollup](https://github.com/openlayers/ol-rollup) * Using [Rollup](https://github.com/openlayers/ol-rollup)
* Using [Webpack](https://github.com/openlayers/ol-webpack) * Using [Webpack](https://github.com/openlayers/ol-webpack)
* Using [Parcel](https://github.com/openlayers/ol-parcel) * Using [Parcel](https://github.com/openlayers/ol-parcel)
* Using [Browserify](https://github.com/openlayers/ol-browserify)
## TypeScript and VS Code IntelliSense support
The `ol` package contains a `src/` folder with JSDoc annotated sources. TypeScript can get type definitions from these sources with a `tsconfig.json` like this:
```js
{
"compilerOptions": {
// Enable JavaScript support
"allowJs": 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": [
// Include JavaScript files from the ol package
"node_modules/ol/**/*.js"
]
}
```
## Supported Browsers ## Supported Browsers
@@ -61,4 +84,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) - 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 - 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

@@ -1,10 +1,156 @@
## Upgrade notes ## Upgrade notes
### Next version
#### Backwards incompatible changes
##### Removal of the deprecated "inherits" function
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.
##### 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.
##### 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.
##### 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.
#### Other changes
##### 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
The `getUid` function from the `ol/util` module now returns a string instead of a number.
#### Attributions are not collapsible for `ol/source/OSM`
When a map contains a layer from a `ol/source/OSM` source, the `ol/control/Attribution` control will be shown with the `collapsible: false` behavior.
To get the previous behavior, configure the `ol/control/Attribution` control with `collapsible: true`.
### v5.2.0
#### Removal of the `snapToPixel` option for `ol/style/Image` subclasses
The `snapToPixel` option has been removed, and the `getSnapToPixel` and `setSnapToPixel` methods are deprecated.
The renderer now snaps to integer pixels when no interaction or animation is running to get crisp rendering. During interaction or animation, it does not snap to integer pixels to avoid jitter.
When rendering with the Immediate API, symbols will no longer be snapped to integer pixels. To get crisp images, set `context.imageSmoothingEnabled = false` before rendering with the Immediate API, and `context.imageSmoothingEnabled = true` afterwards.
### v5.1.0 ### v5.1.0
#### Geometry constructor and `setCoordinates` no longer accept `null` coordinates #### Geometry constructor and `setCoordinates` no longer accept `null` coordinates
Geometries (`ol/geom/*`) now need to be constructed with valid coordinates (center for `ol/geom/Circle`) as first constructor argument. The same applies to the `setCoordinates()` (`setCenter() for `ol/geom/Circle`) method. Geometries (`ol/geom/*`) now need to be constructed with valid coordinates (center for `ol/geom/Circle`) as first constructor argument. The same applies to the `setCoordinates()` (`setCenter()` for `ol/geom/Circle`) method.
### v5.0.0 ### v5.0.0

View File

@@ -1,3 +1,3 @@
# 5.1.1 # 5.1.1
The 5.1.1 release is a patch to include the readme in the package. See the [5.1.0 notes](https://github.com/openlayers/openlayers/releases/tag/v5.0.3) for detail on the 5.1 release. The 5.1.1 release is a patch to include the readme in the package. See the [5.1.0 notes](https://github.com/openlayers/openlayers/releases/tag/v5.1.0) for detail on the 5.1 release.

5
changelog/v5.1.2.md Normal file
View File

@@ -0,0 +1,5 @@
# 5.1.2
The 5.1.2 release is a patch to fix the API docs. See the [5.1.0 notes](https://github.com/openlayers/openlayers/releases/tag/v5.1.0) for detail on the 5.1 release.
* [#8413](https://github.com/openlayers/openlayers/pull/8413) - Remove extra curly in type ([@tschaub](https://github.com/tschaub))

6
changelog/v5.1.3.md Normal file
View File

@@ -0,0 +1,6 @@
# 5.1.3
The 5.1.3 release is a patch to fix the API docs and the legacy full build. See the [5.1.0 notes](https://github.com/openlayers/openlayers/releases/tag/v5.1.0) for detail on the 5.1 release.
* [#8417](https://github.com/openlayers/openlayers/pull/8417) - Minor doc updates ([@tschaub](https://github.com/tschaub))
* [#8418](https://github.com/openlayers/openlayers/pull/8418) - Set api annotation on classdesc, not constructor ([@ahocevar](https://github.com/ahocevar))

86
changelog/v5.2.0.md Normal file
View File

@@ -0,0 +1,86 @@
# v5.2.0
The 5.2 release adds a few new features a handful of fixes, including regressions that were reported after the 5.1 release. You should be able to upgrade without any additional work. See the one note below regarding `snapToPixel` on `ol/style/Image` and subclasses.
We're still working toward type checking with TypeScript. Until that is complete, we apologize for some flwas in the online API documentation. We're excited about the improved experience for application developers when the effort is finished, and will highlight some of the benefit in upcoming releases.
### Upgrade Notes
#### Removal of the `snapToPixel` option for `ol/style/Image` subclasses
The `snapToPixel` option has been removed, and the `getSnapToPixel` and `setSnapToPixel` methods are deprecated.
The renderer now snaps to integer pixels when no interaction or animation is running to get crisp rendering. During interaction or animation, it does not snap to integer pixels to avoid jitter.
When rendering with the Immediate API, symbols will no longer be snapped to integer pixels. To get crisp images, set `context.imageSmoothingEnabled = false` before rendering with the Immediate API, and `context.imageSmoothingEnabled = true` afterwards.
### New Features and Fixes
* [#8511](https://github.com/openlayers/openlayers/pull/8511) - Update IGN API key ([@openlayers](https://github.com/openlayers))
* [#8547](https://github.com/openlayers/openlayers/pull/8547) - Fix port number in developing doc ([@pgiraud](https://github.com/pgiraud))
* [#8546](https://github.com/openlayers/openlayers/pull/8546) - Update projection FAQ for v5 ([@ahocevar](https://github.com/ahocevar))
* [#8481](https://github.com/openlayers/openlayers/pull/8481) - Expose some internal functions ([@gberaudo](https://github.com/gberaudo))
* [#8510](https://github.com/openlayers/openlayers/pull/8510) - Fix WMTS URLs with dimensions ([@gberaudo](https://github.com/gberaudo))
* [#8524](https://github.com/openlayers/openlayers/pull/8524) - Fix compatiblity with XHTML content type ([@NeoRaider](https://github.com/NeoRaider))
* [#8532](https://github.com/openlayers/openlayers/pull/8532) - Add 'rendercomplete' event ([@ahocevar](https://github.com/ahocevar))
* [#8529](https://github.com/openlayers/openlayers/pull/8529) - Update link to base class in docs ([@TDesjardins](https://github.com/TDesjardins))
* [#8528](https://github.com/openlayers/openlayers/pull/8528) - Update link to base class in docs ([@TDesjardins](https://github.com/TDesjardins))
* [#8525](https://github.com/openlayers/openlayers/pull/8525) - Re-export Projection from ol/proj for convenience ([@tschaub](https://github.com/tschaub))
* [#8499](https://github.com/openlayers/openlayers/pull/8499) - Round center in viewState to pixels ([@ahocevar](https://github.com/ahocevar))
* [#8520](https://github.com/openlayers/openlayers/pull/8520) - Remove redundant if block ([@openlayers](https://github.com/openlayers))
* [#8515](https://github.com/openlayers/openlayers/pull/8515) - More convenient select and sketch layer management ([@ahocevar](https://github.com/ahocevar))
* [#8503](https://github.com/openlayers/openlayers/pull/8503) - Avoid block scope issues in transpiled code ([@ahocevar](https://github.com/ahocevar))
* [#8490](https://github.com/openlayers/openlayers/pull/8490) - WMTS getCapabilities readCoodinates more than one whitespace delimiter ([@MarquesDeAzevedo](https://github.com/MarquesDeAzevedo))
* [#8489](https://github.com/openlayers/openlayers/pull/8489) - Use .prototype. only where necessary ([@ahocevar](https://github.com/ahocevar))
* [#8478](https://github.com/openlayers/openlayers/pull/8478) - Check font availability with multiple font weights ([@ahocevar](https://github.com/ahocevar))
* [#8483](https://github.com/openlayers/openlayers/pull/8483) - Don't create Polygon with null coordinates ([@fredj](https://github.com/fredj))
* [#8471](https://github.com/openlayers/openlayers/pull/8471) - Add getUrl and getImageExtent to ImageStatic API ([@samuel-girard](https://github.com/samuel-girard))
* [#8470](https://github.com/openlayers/openlayers/pull/8470) - Update Tile loading API docs ([@scroach](https://github.com/scroach))
* [#8477](https://github.com/openlayers/openlayers/pull/8477) - Expose original getGutter ([@gberaudo](https://github.com/gberaudo))
* [#8466](https://github.com/openlayers/openlayers/pull/8466) - Add onFocusOnly option to interaction defaults ([@ahocevar](https://github.com/ahocevar))
* [#8465](https://github.com/openlayers/openlayers/pull/8465) - Do not prevent default on pointermove ([@ahocevar](https://github.com/ahocevar))
* [#8461](https://github.com/openlayers/openlayers/pull/8461) - Fix double backtick typo ([@lionralfs](https://github.com/lionralfs))
* [#8452](https://github.com/openlayers/openlayers/pull/8452) - Remove extra translate function in Geometry, add missing api tag ([@fredj](https://github.com/fredj))
* [#8451](https://github.com/openlayers/openlayers/pull/8451) - Remove unimplemented functions ([@fredj](https://github.com/fredj))
* [#8450](https://github.com/openlayers/openlayers/pull/8450) - Mark properties of ReadOptions and WriteOptions as optional ([@fredj](https://github.com/fredj))
* [#8443](https://github.com/openlayers/openlayers/pull/8443) - Explicit void ([@tschaub](https://github.com/tschaub))
* [#8437](https://github.com/openlayers/openlayers/pull/8437) - Avoid shadowing EventTarget ([@tschaub](https://github.com/tschaub))
* [#8439](https://github.com/openlayers/openlayers/pull/8439) - Fewer dots in types ([@tschaub](https://github.com/tschaub))
* [#8441](https://github.com/openlayers/openlayers/pull/8441) - Fix loaded script for the example-verbatim examples ([@fredj](https://github.com/fredj))
* [#8435](https://github.com/openlayers/openlayers/pull/8435) - Call setCoordinates on the point instance ([@fredj](https://github.com/fredj))
* [#8428](https://github.com/openlayers/openlayers/pull/8428) - Type name on same line as type ([@tschaub](https://github.com/tschaub))
* [#8422](https://github.com/openlayers/openlayers/pull/8422) - Improve JSDoc such that `ng build --prod` with angular/cli 6.0.8 succeeds again ([@jkoelewijn](https://github.com/jkoelewijn))
* [#8396](https://github.com/openlayers/openlayers/pull/8396) - Fix ol.interaction.Draw~createRegularPolygon ([@iamplex](https://github.com/iamplex))
* [#8420](https://github.com/openlayers/openlayers/pull/8420) - Keep function names when building examples ([@ahocevar](https://github.com/ahocevar))
* [#8419](https://github.com/openlayers/openlayers/pull/8419) - Release v5.1.3 ([@tschaub](https://github.com/tschaub))
* [#8417](https://github.com/openlayers/openlayers/pull/8417) - Minor doc updates ([@tschaub](https://github.com/tschaub))
* [#8418](https://github.com/openlayers/openlayers/pull/8418) - Set api annotation on classdesc, not constructor ([@ahocevar](https://github.com/ahocevar))
* [#8414](https://github.com/openlayers/openlayers/pull/8414) - Updates for 5.1.2 ([@tschaub](https://github.com/tschaub))
* [#8413](https://github.com/openlayers/openlayers/pull/8413) - Remove extra curly in type ([@tschaub](https://github.com/tschaub))
* [#8412](https://github.com/openlayers/openlayers/pull/8412) - Changes for 5.1.1. ([@tschaub](https://github.com/tschaub))
<details>
<summary>Dependency Updates</summary>
* [#8543](https://github.com/openlayers/openlayers/pull/8543) - Update rollup to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#8541](https://github.com/openlayers/openlayers/pull/8541) - Update proj4 to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#8542](https://github.com/openlayers/openlayers/pull/8542) - Update rollup-plugin-commonjs to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#8533](https://github.com/openlayers/openlayers/pull/8533) - Update webpack to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#8530](https://github.com/openlayers/openlayers/pull/8530) - Update webpack to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#8522](https://github.com/openlayers/openlayers/pull/8522) - Update marked to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#8505](https://github.com/openlayers/openlayers/pull/8505) - Update karma to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#8501](https://github.com/openlayers/openlayers/pull/8501) - Update rollup-plugin-commonjs to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#8495](https://github.com/openlayers/openlayers/pull/8495) - Update rollup to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#8493](https://github.com/openlayers/openlayers/pull/8493) - Update clean-css-cli to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#8491](https://github.com/openlayers/openlayers/pull/8491) - Update rollup to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#8486](https://github.com/openlayers/openlayers/pull/8486) - Update webpack to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#8476](https://github.com/openlayers/openlayers/pull/8476) - Update webpack to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#8475](https://github.com/openlayers/openlayers/pull/8475) - Update clean-css-cli to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#8469](https://github.com/openlayers/openlayers/pull/8469) - Update rollup to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#8453](https://github.com/openlayers/openlayers/pull/8453) - Update webpack to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#8447](https://github.com/openlayers/openlayers/pull/8447) - Update rollup-plugin-commonjs to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#8426](https://github.com/openlayers/openlayers/pull/8426) - Update webpack to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
</details>

217
changelog/v5.3.0.md Normal file
View File

@@ -0,0 +1,217 @@
# v5.3.0
We're continuing to work toward more complete type checking with TypeScript  based on JSDoc annotations in the source. The 5.3 release includes a number of bug fixes related to the type checking effort. In addition the release comes with a handful of new features and improved API reference docs.
### Upgrade Notes
#### The `getUid` function returns string
The `getUid` function from the `ol/util` module now returns a string instead of a number.
#### Attributions are not collapsible for `ol/source/OSM`
When a map contains a layer from a `ol/source/OSM` source, the `ol/control/Attribution` control will be shown with the `collapsible: false` behavior.
To get the previous behavior, configure the `ol/control/Attribution` control with `collapsible: true`.
### New Features and Fixes
* [#8642](https://github.com/openlayers/openlayers/pull/8642) - Fixes for optional key passing, issue #8067 for tile sources ([@dimin](https://github.com/dimin))
* [#8885](https://github.com/openlayers/openlayers/pull/8885) - Move GeolocationProperty into Geolocation ([@fredj](https://github.com/fredj))
* [#8881](https://github.com/openlayers/openlayers/pull/8881) - Remove custom styles in drag-and-drop examples ([@fredj](https://github.com/fredj))
* [#8877](https://github.com/openlayers/openlayers/pull/8877) - Create context in vector tile layer constructor ([@tschaub](https://github.com/tschaub))
* [#8883](https://github.com/openlayers/openlayers/pull/8883) - New test runner ([@tschaub](https://github.com/tschaub))
* [#8882](https://github.com/openlayers/openlayers/pull/8882) - Import simplification ([@fredj](https://github.com/fredj))
* [#8858](https://github.com/openlayers/openlayers/pull/8858) - Add condition for viewParams and TypeScript related option ([@webgeodatavore](https://github.com/webgeodatavore))
* [#8879](https://github.com/openlayers/openlayers/pull/8879) - Build with CircleCI ([@openlayers](https://github.com/openlayers))
* [#8878](https://github.com/openlayers/openlayers/pull/8878) - Avoid logging 404 warnings ([@tschaub](https://github.com/tschaub))
* [#8876](https://github.com/openlayers/openlayers/pull/8876) - Remove RenderType enum from vector tile layer ([@tschaub](https://github.com/tschaub))
* [#8874](https://github.com/openlayers/openlayers/pull/8874) - Remove unnecessary type casts in canvas layer renderer ([@tschaub](https://github.com/tschaub))
* [#8869](https://github.com/openlayers/openlayers/pull/8869) - Fix more types for TypeScript ([@ahocevar](https://github.com/ahocevar))
* [#8868](https://github.com/openlayers/openlayers/pull/8868) - Throw when calling abstract methods; fix abstract return types ([@ahocevar](https://github.com/ahocevar))
* [#8862](https://github.com/openlayers/openlayers/pull/8862) - Legacy build and apidoc improvements ([@ahocevar](https://github.com/ahocevar))
* [#8867](https://github.com/openlayers/openlayers/pull/8867) - Fix example builder ([@ahocevar](https://github.com/ahocevar))
* [#8852](https://github.com/openlayers/openlayers/pull/8852) - Improve link handling in API docs ([@ahocevar](https://github.com/ahocevar))
* [#8853](https://github.com/openlayers/openlayers/pull/8853) - Make rendercomplete work with vector sources without loader ([@ahocevar](https://github.com/ahocevar))
* [#8851](https://github.com/openlayers/openlayers/pull/8851) - Use typescript types for RBush ([@fredj](https://github.com/fredj))
* [#8850](https://github.com/openlayers/openlayers/pull/8850) - Remove old TODO in ol/Graticule ([@fredj](https://github.com/fredj))
* [#8847](https://github.com/openlayers/openlayers/pull/8847) - Fix API docs ([@ahocevar](https://github.com/ahocevar))
* [#8845](https://github.com/openlayers/openlayers/pull/8845) - Remove RenderType enum from vector layer ([@tschaub](https://github.com/tschaub))
* [#8843](https://github.com/openlayers/openlayers/pull/8843) - Fix ts typing for fullscreen button ([@tonio](https://github.com/tonio))
* [#8841](https://github.com/openlayers/openlayers/pull/8841) - Use super.method instead of prototype.method.call ([@fredj](https://github.com/fredj))
* [#8842](https://github.com/openlayers/openlayers/pull/8842) - Change target type from Element to HTMLElement ([@fredj](https://github.com/fredj))
* [#8840](https://github.com/openlayers/openlayers/pull/8840) - Remove unneeded code in VectorTile renderer ([@elemoine](https://github.com/elemoine))
* [#8844](https://github.com/openlayers/openlayers/pull/8844) - Set crossOrigin to anonymous in mapbox-streets-v6-style ([@elemoine](https://github.com/elemoine))
* [#8776](https://github.com/openlayers/openlayers/pull/8776) - Use setTimeout without the window namespace ([@ahocevar](https://github.com/ahocevar))
* [#8837](https://github.com/openlayers/openlayers/pull/8837) - Re-export MousePosition from ol/control ([@fredj](https://github.com/fredj))
* [#8832](https://github.com/openlayers/openlayers/pull/8832) - Remove source foreachfeatureatcoordinate from ol/renderer/webgl/ImageLayer ([@fredj](https://github.com/fredj))
* [#8833](https://github.com/openlayers/openlayers/pull/8833) - Fix wrong filename in type annotation ([@fredj](https://github.com/fredj))
* [#8827](https://github.com/openlayers/openlayers/pull/8827) - Removed unused forEachFeatureAtCoordinate from ol/source/Source ([@schmidtk](https://github.com/schmidtk))
* [#8830](https://github.com/openlayers/openlayers/pull/8830) - Type annotation fixes in ol/control/ ([@fredj](https://github.com/fredj))
* [#8829](https://github.com/openlayers/openlayers/pull/8829) - Change getUid return type from number to string ([@fredj](https://github.com/fredj))
* [#8825](https://github.com/openlayers/openlayers/pull/8825) - Fix TypeScript errors ([@schmidtk](https://github.com/schmidtk))
* [#8828](https://github.com/openlayers/openlayers/pull/8828) - Re-export VectorTile from ol/source ([@elemoine](https://github.com/elemoine))
* [#8806](https://github.com/openlayers/openlayers/pull/8806) - Preserve button class name list in full screen control on toggle ([@notnotse](https://github.com/notnotse))
* [#8817](https://github.com/openlayers/openlayers/pull/8817) - Clarify format option for ol/source/WMTS ([@romanzoller](https://github.com/romanzoller))
* [#8824](https://github.com/openlayers/openlayers/pull/8824) - Fix TypeScript errors in ol/format/GML ([@schmidtk](https://github.com/schmidtk))
* [#8820](https://github.com/openlayers/openlayers/pull/8820) - Polygon intersectsExtent failure - Issue #8795 ([@hmdavidjunior](https://github.com/hmdavidjunior))
* [#8519](https://github.com/openlayers/openlayers/pull/8519) - GML Format Improvements #8516 #8517 #8518 ([@NielsCharlier](https://github.com/NielsCharlier))
* [#8711](https://github.com/openlayers/openlayers/pull/8711) - Fix TypeScript errors in ol/format/GML ([@schmidtk](https://github.com/schmidtk))
* [#8818](https://github.com/openlayers/openlayers/pull/8818) - Fix the way zoom comes from ([@cs09g](https://github.com/cs09g))
* [#8804](https://github.com/openlayers/openlayers/pull/8804) - Add possibility to disable collapsible attributions from Source ([@notnotse](https://github.com/notnotse))
* [#8787](https://github.com/openlayers/openlayers/pull/8787) - Replace instanceof checks with other logic ([@ahocevar](https://github.com/ahocevar))
* [#8808](https://github.com/openlayers/openlayers/pull/8808) - Fix format and version properties in ol/source/WMTS Options typedef ([@fredj](https://github.com/fredj))
* [#8812](https://github.com/openlayers/openlayers/pull/8812) - Update snap.js ([@rosedo](https://github.com/rosedo))
* [#8809](https://github.com/openlayers/openlayers/pull/8809) - Configurable interval options ([@notnotse](https://github.com/notnotse))
* [#8798](https://github.com/openlayers/openlayers/pull/8798) - Use unpkg.com instead of rawgit.com ([@fredj](https://github.com/fredj))
* [#8805](https://github.com/openlayers/openlayers/pull/8805) - Do not draw image with width or height < 0.5 ([@notnotse](https://github.com/notnotse))
* [#8803](https://github.com/openlayers/openlayers/pull/8803) - Handle zoom slider position with floating point numbers ([@notnotse](https://github.com/notnotse))
* [#8789](https://github.com/openlayers/openlayers/pull/8789) - Spelling and indentation fixes ([@fredj](https://github.com/fredj))
* [#8782](https://github.com/openlayers/openlayers/pull/8782) - Fix getSimplifiedGeometry definition ([@wallw-bits](https://github.com/wallw-bits))
* [#8783](https://github.com/openlayers/openlayers/pull/8783) - Fix missing method declaration ([@wallw-bits](https://github.com/wallw-bits))
* [#8781](https://github.com/openlayers/openlayers/pull/8781) - Fix type check errors ([@schmidtk](https://github.com/schmidtk))
* [#8779](https://github.com/openlayers/openlayers/pull/8779) - Fix additional type check errors ([@schmidtk](https://github.com/schmidtk))
* [#8753](https://github.com/openlayers/openlayers/pull/8753) - Fix type check in ol/PluggableMap.js ([@wallw-bits](https://github.com/wallw-bits))
* [#8762](https://github.com/openlayers/openlayers/pull/8762) - Fix type errors from interaction event handlers ([@schmidtk](https://github.com/schmidtk))
* [#8763](https://github.com/openlayers/openlayers/pull/8763) - Fix type check for ol/events ([@wallw-bits](https://github.com/wallw-bits))
* [#8774](https://github.com/openlayers/openlayers/pull/8774) - Fix type check errors in ol/renderer/webgl ([@schmidtk](https://github.com/schmidtk))
* [#8768](https://github.com/openlayers/openlayers/pull/8768) - Fix type check errors in ol/interaction/Select ([@schmidtk](https://github.com/schmidtk))
* [#8764](https://github.com/openlayers/openlayers/pull/8764) - Fix TypeScript errors in ol/interaction/Draw ([@schmidtk](https://github.com/schmidtk))
* [#8767](https://github.com/openlayers/openlayers/pull/8767) - Fix type check errors in ol/interaction/Modify ([@schmidtk](https://github.com/schmidtk))
* [#8773](https://github.com/openlayers/openlayers/pull/8773) - Fix type check errors in ol/renderer/canvas ([@schmidtk](https://github.com/schmidtk))
* [#8769](https://github.com/openlayers/openlayers/pull/8769) - Fix type check errors in ol/render/canvas ([@schmidtk](https://github.com/schmidtk))
* [#8770](https://github.com/openlayers/openlayers/pull/8770) - Fix type check errors in ol/render/webgl ([@schmidtk](https://github.com/schmidtk))
* [#8765](https://github.com/openlayers/openlayers/pull/8765) - Simplify logic for fixed tile url functions ([@ahocevar](https://github.com/ahocevar))
* [#8766](https://github.com/openlayers/openlayers/pull/8766) - Use FeatureLike typedef ([@fredj](https://github.com/fredj))
* [#8739](https://github.com/openlayers/openlayers/pull/8739) - Fix TypeScript errors in ol/format/WMSGetFeatureInfo ([@schmidtk](https://github.com/schmidtk))
* [#8666](https://github.com/openlayers/openlayers/pull/8666) - Fix condition TypeScript errors ([@schmidtk](https://github.com/schmidtk))
* [#8757](https://github.com/openlayers/openlayers/pull/8757) - Use typeof to simplify JSDoc class types ([@schmidtk](https://github.com/schmidtk))
* [#8759](https://github.com/openlayers/openlayers/pull/8759) - Use es6 class inheritance in examples ([@fredj](https://github.com/fredj))
* [#8761](https://github.com/openlayers/openlayers/pull/8761) - Allow returning RenderFeature in ol/format/Feature ([@schmidtk](https://github.com/schmidtk))
* [#8758](https://github.com/openlayers/openlayers/pull/8758) - Fix TS error and prevent extra string conversion ([@schmidtk](https://github.com/schmidtk))
* [#8736](https://github.com/openlayers/openlayers/pull/8736) - Typescript misc fixes ([@fredj](https://github.com/fredj))
* [#8741](https://github.com/openlayers/openlayers/pull/8741) - Fix TypeScript errors in ol/geom/* ([@schmidtk](https://github.com/schmidtk))
* [#8707](https://github.com/openlayers/openlayers/pull/8707) - Fix TypeScript errors in ol/format/Feature ([@schmidtk](https://github.com/schmidtk))
* [#8754](https://github.com/openlayers/openlayers/pull/8754) - Fix type check in ol/math ([@wallw-bits](https://github.com/wallw-bits))
* [#8747](https://github.com/openlayers/openlayers/pull/8747) - Update doc/faq.md ([@fredj](https://github.com/fredj))
* [#8744](https://github.com/openlayers/openlayers/pull/8744) - Fix type checks in VectorTileSource ([@wallw-bits](https://github.com/wallw-bits))
* [#8740](https://github.com/openlayers/openlayers/pull/8740) - Increase linestring textalign test tolerance to be Firefox compliant. ([@benVigie](https://github.com/benVigie))
* [#8738](https://github.com/openlayers/openlayers/pull/8738) - Cast to parent type to fix TS errors ([@schmidtk](https://github.com/schmidtk))
* [#8737](https://github.com/openlayers/openlayers/pull/8737) - Flag optional param to fix TS error ([@schmidtk](https://github.com/schmidtk))
* [#8742](https://github.com/openlayers/openlayers/pull/8742) - Fix type checks in Vector source ([@wallw-bits](https://github.com/wallw-bits))
* [#8743](https://github.com/openlayers/openlayers/pull/8743) - Fix type check in Raster source ([@wallw-bits](https://github.com/wallw-bits))
* [#8733](https://github.com/openlayers/openlayers/pull/8733) - Fix TypeScript errors in ol/format/WFS ([@schmidtk](https://github.com/schmidtk))
* [#8735](https://github.com/openlayers/openlayers/pull/8735) - Fix TypeScript errors in ol/format/WKT ([@schmidtk](https://github.com/schmidtk))
* [#8730](https://github.com/openlayers/openlayers/pull/8730) - Fix TypeScript errors in ol/format/KML ([@schmidtk](https://github.com/schmidtk))
* [#8732](https://github.com/openlayers/openlayers/pull/8732) - Fix type check in ol/source/Tile ([@wallw-bits](https://github.com/wallw-bits))
* [#8731](https://github.com/openlayers/openlayers/pull/8731) - Dispatch a GeolocationError in Geolocation ([@fredj](https://github.com/fredj))
* [#8729](https://github.com/openlayers/openlayers/pull/8729) - Move functions out of the PointerEvent class ([@fredj](https://github.com/fredj))
* [#8724](https://github.com/openlayers/openlayers/pull/8724) - Typescript misc fixes ([@fredj](https://github.com/fredj))
* [#8717](https://github.com/openlayers/openlayers/pull/8717) - Fix type checks in TileArcGISRest ([@fredj](https://github.com/fredj))
* [#8718](https://github.com/openlayers/openlayers/pull/8718) - Fix TypeScript errors in ol/format/GPX ([@schmidtk](https://github.com/schmidtk))
* [#8706](https://github.com/openlayers/openlayers/pull/8706) - Use EsriJSON types from @types/arcgis-rest-api ([@schmidtk](https://github.com/schmidtk))
* [#8709](https://github.com/openlayers/openlayers/pull/8709) - Fix TypeScript errors in ol/format/GeoJSON ([@schmidtk](https://github.com/schmidtk))
* [#8708](https://github.com/openlayers/openlayers/pull/8708) - Fix type checks in ImageCanvas source ([@wallw-bits](https://github.com/wallw-bits))
* [#8710](https://github.com/openlayers/openlayers/pull/8710) - Fix type checks in ImageArcGISRest ([@wallw-bits](https://github.com/wallw-bits))
* [#8698](https://github.com/openlayers/openlayers/pull/8698) - Fix zoom slider events ([@intouch-smartwater](https://github.com/intouch-smartwater))
* [#8697](https://github.com/openlayers/openlayers/pull/8697) - Remove unused properties from Cluster and Image options ([@fredj](https://github.com/fredj))
* [#8688](https://github.com/openlayers/openlayers/pull/8688) - Fix PointerEventHandler event type ([@fredj](https://github.com/fredj))
* [#8686](https://github.com/openlayers/openlayers/pull/8686) - Remove extra imports in jsdoc ([@fredj](https://github.com/fredj))
* [#8681](https://github.com/openlayers/openlayers/pull/8681) - Check the type of the source before using it ([@wallw-bits](https://github.com/wallw-bits))
* [#8691](https://github.com/openlayers/openlayers/pull/8691) - Fix assertion error documentation URL ([@romanzoller](https://github.com/romanzoller))
* [#8692](https://github.com/openlayers/openlayers/pull/8692) - Type check fixes for Cluster source ([@wallw-bits](https://github.com/wallw-bits))
* [#8677](https://github.com/openlayers/openlayers/pull/8677) - Type check fixes for VectorSource ([@wallw-bits](https://github.com/wallw-bits))
* [#8684](https://github.com/openlayers/openlayers/pull/8684) - Define BingMapsImageryMetadataResponse type ([@wallw-bits](https://github.com/wallw-bits))
* [#8690](https://github.com/openlayers/openlayers/pull/8690) - Fix type checks in CartoDB ([@wallw-bits](https://github.com/wallw-bits))
* [#8693](https://github.com/openlayers/openlayers/pull/8693) - Fix type check errors for Image source ([@wallw-bits](https://github.com/wallw-bits))
* [#8672](https://github.com/openlayers/openlayers/pull/8672) - Fix source type in Raster source ([@fredj](https://github.com/fredj))
* [#8665](https://github.com/openlayers/openlayers/pull/8665) - Fix type check errors in RBush ([@wallw-bits](https://github.com/wallw-bits))
* [#8680](https://github.com/openlayers/openlayers/pull/8680) - TypeScript fixes for ol/events ([@schmidtk](https://github.com/schmidtk))
* [#8678](https://github.com/openlayers/openlayers/pull/8678) - Ensure image is Image or Video before settings src ([@wallw-bits](https://github.com/wallw-bits))
* [#8676](https://github.com/openlayers/openlayers/pull/8676) - Cast tileGrid to WMTSTileGrid for type check ([@wallw-bits](https://github.com/wallw-bits))
* [#8679](https://github.com/openlayers/openlayers/pull/8679) - Type check fixes in Triangulation ([@wallw-bits](https://github.com/wallw-bits))
* [#8657](https://github.com/openlayers/openlayers/pull/8657) - Typescript fixes ([@fgravin](https://github.com/fgravin))
* [#8671](https://github.com/openlayers/openlayers/pull/8671) - Fix typescript in FeatureLoader ([@fgravin](https://github.com/fgravin))
* [#8675](https://github.com/openlayers/openlayers/pull/8675) - Get width as number from number|Size ([@wallw-bits](https://github.com/wallw-bits))
* [#8654](https://github.com/openlayers/openlayers/pull/8654) - Remove extra imports in jsdoc ([@fredj](https://github.com/fredj))
* [#8655](https://github.com/openlayers/openlayers/pull/8655) - Remove webkit specific properties from Touch ([@fredj](https://github.com/fredj))
* [#8663](https://github.com/openlayers/openlayers/pull/8663) - Add vendor-specific TS declarations for the Fullscreen API. ([@schmidtk](https://github.com/schmidtk))
* [#8658](https://github.com/openlayers/openlayers/pull/8658) - Don't define functions in the prototype ([@fredj](https://github.com/fredj))
* [#8662](https://github.com/openlayers/openlayers/pull/8662) - Explicitly define type of 'this' ([@wallw-bits](https://github.com/wallw-bits))
* [#8664](https://github.com/openlayers/openlayers/pull/8664) - Add native Event to ListenerFunction signature. ([@schmidtk](https://github.com/schmidtk))
* [#8668](https://github.com/openlayers/openlayers/pull/8668) - Add missing 'module' annotation ([@fredj](https://github.com/fredj))
* [#8643](https://github.com/openlayers/openlayers/pull/8643) - Fix style TypeScript errors ([@schmidtk](https://github.com/schmidtk))
* [#8638](https://github.com/openlayers/openlayers/pull/8638) - Fix event type in hasListener check ([@ahocevar](https://github.com/ahocevar))
* [#8618](https://github.com/openlayers/openlayers/pull/8618) - Use TopoJSON types from @types/topojson ([@fredj](https://github.com/fredj))
* [#8619](https://github.com/openlayers/openlayers/pull/8619) - Remove wrong Geometry type in KML format ([@fredj](https://github.com/fredj))
* [#8627](https://github.com/openlayers/openlayers/pull/8627) - Fix several type imports ([@ahocevar](https://github.com/ahocevar))
* [#8629](https://github.com/openlayers/openlayers/pull/8629) - Enable circle primitive in draw-shapes example ([@megawac](https://github.com/megawac))
* [#8626](https://github.com/openlayers/openlayers/pull/8626) - Better type annotations / type casts ([@marcjansen](https://github.com/marcjansen))
* [#8622](https://github.com/openlayers/openlayers/pull/8622) - Remove unused method ([@tschaub](https://github.com/tschaub))
* [#8615](https://github.com/openlayers/openlayers/pull/8615) - Use GeoJSON types from @types/geojson ([@tschaub](https://github.com/tschaub))
* [#8609](https://github.com/openlayers/openlayers/pull/8609) - Remove extra imports in jsdoc ([@fredj](https://github.com/fredj))
* [#8613](https://github.com/openlayers/openlayers/pull/8613) - Lazily detect tainted canvas ([@ahocevar](https://github.com/ahocevar))
* [#8610](https://github.com/openlayers/openlayers/pull/8610) - Sensible touch behavior of the MousePosition control ([@ahocevar](https://github.com/ahocevar))
* [#8602](https://github.com/openlayers/openlayers/pull/8602) - Add missing map property in ol/layer/Layer constructor options ([@fredj](https://github.com/fredj))
* [#8607](https://github.com/openlayers/openlayers/pull/8607) - Listener return is boolean or void ([@tschaub](https://github.com/tschaub))
* [#8595](https://github.com/openlayers/openlayers/pull/8595) - Optional arguments and typedef properties ([@tschaub](https://github.com/tschaub))
* [#8594](https://github.com/openlayers/openlayers/pull/8594) - Remove extra imports in jsdoc ([@fredj](https://github.com/fredj))
* [#8596](https://github.com/openlayers/openlayers/pull/8596) - Add types for the UTFGrid and TileJSON JSON responses ([@tschaub](https://github.com/tschaub))
* [#8591](https://github.com/openlayers/openlayers/pull/8591) - Add missing properties in TextState typedef ([@fredj](https://github.com/fredj))
* [#8590](https://github.com/openlayers/openlayers/pull/8590) - Don't import ourselves ([@fredj](https://github.com/fredj))
* [#8586](https://github.com/openlayers/openlayers/pull/8586) - Cast 'originalEvent' in interactions ([@fredj](https://github.com/fredj))
* [#8588](https://github.com/openlayers/openlayers/pull/8588) - Rework createXYZ ([@tschaub](https://github.com/tschaub))
* [#8587](https://github.com/openlayers/openlayers/pull/8587) - Add a statement to trigger TypeScript checking ([@tschaub](https://github.com/tschaub))
* [#8345](https://github.com/openlayers/openlayers/pull/8345) - TypeScript (1/n) ([@tschaub](https://github.com/tschaub))
* [#8579](https://github.com/openlayers/openlayers/pull/8579) - Better type annotation ([@marcjansen](https://github.com/marcjansen))
* [#8580](https://github.com/openlayers/openlayers/pull/8580) - Cast POINTER_ID before comparison ([@marcjansen](https://github.com/marcjansen))
* [#8574](https://github.com/openlayers/openlayers/pull/8574) - Rename Extent to ExtentInteraction ([@fredj](https://github.com/fredj))
* [#8577](https://github.com/openlayers/openlayers/pull/8577) - Remove geojson.js extern inclusion in tasks/generate-info ([@fredj](https://github.com/fredj))
* [#8573](https://github.com/openlayers/openlayers/pull/8573) - Fix freehand polygon drawing ([@fredj](https://github.com/fredj))
* [#8572](https://github.com/openlayers/openlayers/pull/8572) - typescript misc fixes ([@fredj](https://github.com/fredj))
* [#8569](https://github.com/openlayers/openlayers/pull/8569) - Make proj~get simpler and faster ([@ahocevar](https://github.com/ahocevar))
* [#8567](https://github.com/openlayers/openlayers/pull/8567) - Use 'Element' type instead of 'Node' ([@fredj](https://github.com/fredj))
* [#8558](https://github.com/openlayers/openlayers/pull/8558) - Fix default zIndex value and documentation for layer options ([@fredj](https://github.com/fredj))
* [#8555](https://github.com/openlayers/openlayers/pull/8555) - Do not minify examples that inject code into workers ([@ahocevar](https://github.com/ahocevar))
* [#8557](https://github.com/openlayers/openlayers/pull/8557) - Fix typo in release notes ([@ahocevar](https://github.com/ahocevar))
<details>
<summary>Dependency Updates</summary>
* [#8884](https://github.com/openlayers/openlayers/pull/8884) - Update webpack to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#8880](https://github.com/openlayers/openlayers/pull/8880) - Update webpack to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#8872](https://github.com/openlayers/openlayers/pull/8872) - Update webpack to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#8860](https://github.com/openlayers/openlayers/pull/8860) - Update webpack to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#8855](https://github.com/openlayers/openlayers/pull/8855) - Update webpack to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#8838](https://github.com/openlayers/openlayers/pull/8838) - Update webpack to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#8834](https://github.com/openlayers/openlayers/pull/8834) - Update webpack to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#8799](https://github.com/openlayers/openlayers/pull/8799) - Update rollup to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#8796](https://github.com/openlayers/openlayers/pull/8796) - Update rollup-plugin-commonjs to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#8793](https://github.com/openlayers/openlayers/pull/8793) - Update rollup-plugin-buble to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#8794](https://github.com/openlayers/openlayers/pull/8794) - Update rollup to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#8788](https://github.com/openlayers/openlayers/pull/8788) - Update front-matter to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#8785](https://github.com/openlayers/openlayers/pull/8785) - chore(package): update rollup to version 0.66.4 ([@openlayers](https://github.com/openlayers))
* [#8719](https://github.com/openlayers/openlayers/pull/8719) - Update marked to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#8714](https://github.com/openlayers/openlayers/pull/8714) - chore(package): update webpack to version 4.20.2 ([@openlayers](https://github.com/openlayers))
* [#8703](https://github.com/openlayers/openlayers/pull/8703) - Update webpack to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#8646](https://github.com/openlayers/openlayers/pull/8646) - Update mustache to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#8645](https://github.com/openlayers/openlayers/pull/8645) - Update rollup-plugin-uglify to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#8685](https://github.com/openlayers/openlayers/pull/8685) - Update rollup to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#8683](https://github.com/openlayers/openlayers/pull/8683) - Update rollup to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#8656](https://github.com/openlayers/openlayers/pull/8656) - chore(package): update rollup-plugin-commonjs to version 9.1.8 ([@openlayers](https://github.com/openlayers))
* [#8667](https://github.com/openlayers/openlayers/pull/8667) - chore(package): update uglifyjs-webpack-plugin to version 2.0.1 ([@openlayers](https://github.com/openlayers))
* [#8661](https://github.com/openlayers/openlayers/pull/8661) - Update webpack to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#8644](https://github.com/openlayers/openlayers/pull/8644) - Update rollup to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#8631](https://github.com/openlayers/openlayers/pull/8631) - Update webpack to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#8630](https://github.com/openlayers/openlayers/pull/8630) - Update webpack to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#8617](https://github.com/openlayers/openlayers/pull/8617) - chore(package): update webpack to version 4.18.0 ([@openlayers](https://github.com/openlayers))
* [#8589](https://github.com/openlayers/openlayers/pull/8589) - Update rollup to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#8581](https://github.com/openlayers/openlayers/pull/8581) - Update rollup-plugin-node-resolve to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#8585](https://github.com/openlayers/openlayers/pull/8585) - Update rollup to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#8578](https://github.com/openlayers/openlayers/pull/8578) - Update webpack to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#8563](https://github.com/openlayers/openlayers/pull/8563) - Update rollup-plugin-uglify to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
* [#8561](https://github.com/openlayers/openlayers/pull/8561) - Update rollup-plugin-uglify to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
</details>

View File

@@ -7,22 +7,23 @@
"allowUnknownTags": true "allowUnknownTags": true
}, },
"source": { "source": {
"includePattern": ".+\\.js(doc)?$", "includePattern": ".+\\.js$",
"excludePattern": "(^|\\/|\\\\)_", "excludePattern": "(^|\\/|\\\\)_",
"include": [ "include": [
"src/ol" "src/ol"
] ]
}, },
"plugins": [ "plugins": [
"plugins/markdown", "config/jsdoc/api/plugins/markdown",
"config/jsdoc/api/plugins/normalize-exports", "jsdoc-plugin-typescript",
"config/jsdoc/api/plugins/inline-options", "config/jsdoc/api/plugins/inline-options",
"config/jsdoc/api/plugins/inheritdoc",
"config/jsdoc/api/plugins/events", "config/jsdoc/api/plugins/events",
"config/jsdoc/api/plugins/observable", "config/jsdoc/api/plugins/observable",
"config/jsdoc/api/plugins/api" "config/jsdoc/api/plugins/api"
], ],
"markdown": { "typescript": {
"parser": "gfm" "moduleRoot": "src"
}, },
"templates": { "templates": {
"cleverLinks": true, "cleverLinks": true,

View File

@@ -8,10 +8,10 @@
<td><p>The view manages the visual parameters of the map view, like resolution or rotation.</p> <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> [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> <td><p>Layers are lightweight containers that get their data from [sources](module-ol_source_Source-Source.html).</p>
[layer/Tile](module-ol_layer_Tile-TileLayer.html)<br> [ol/layer/Tile](module-ol_layer_Tile-TileLayer.html)<br>
[layer/Image](module-ol_layer_Image-ImageLayer.html)<br> [ol/layer/Image](module-ol_layer_Image-ImageLayer.html)<br>
[layer/Vector](module-ol_layer_Vector-VectorLayer.html)<br> [ol/layer/Vector](module-ol_layer_Vector-VectorLayer.html)<br>
[layer/VectorTile](module-ol_layer_VectorTile-VectorTileLayer.html)</td> [ol/layer/VectorTile](module-ol_layer_VectorTile-VectorTileLayer.html)</td>
</tr><tr> </tr><tr>
<th>Controls</th><th>Interactions</th><th>Sources and formats</th> <th>Controls</th><th>Interactions</th><th>Sources and formats</th>
</tr><tr> </tr><tr>
@@ -21,20 +21,20 @@
<td> <td>
[Map default interactions](module-ol_interaction.html#~defaults)<br> [Map default interactions](module-ol_interaction.html#~defaults)<br>
Interactions for [vector features](module-ol_Feature-Feature.html) Interactions for [vector features](module-ol_Feature-Feature.html)
<ul><li>[interaction/Select](module-ol_interaction_Select-Select.html)</li> <ul><li>[ol/interaction/Select](module-ol_interaction_Select-Select.html)</li>
<li>[interaction/Draw](module-ol_interaction_Draw-Draw.html)</li> <li>[ol/interaction/Draw](module-ol_interaction_Draw-Draw.html)</li>
<li>[interaction/Modify](module-ol_interaction_Modify-Modify.html)</li></ul> <li>[ol/interaction/Modify](module-ol_interaction_Modify-Modify.html)</li></ul>
[All interactions](module-ol_interaction_Interaction-Interaction.html)</td> [All interactions](module-ol_interaction_Interaction-Interaction.html)</td>
<td>[Tile sources](module-ol_source_Tile-TileSource.html) for [layer/Tile](module-ol_layer_Tile-TileLayer.html) <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 [layer/Image](module-ol_layer_Image-ImageLayer.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 [layer/Vector](module-ol_layer_Vector-VectorLayer.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 [layer/VectorTile](module-ol_layer_VectorTile-VectorTileLayer.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>[Formats](module-ol_format_Feature-FeatureFormat.html) for reading/writing vector data
<br>[format/WMSCapabilities](module-ol_format_WMSCapabilities-WMSCapabilities.html)</td></tr> <br>[ol/format/WMSCapabilities](module-ol_format_WMSCapabilities-WMSCapabilities.html)</td></tr>
<tr><th>Projections</th><th>Observable objects</th><th>Other components</th></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 [proj.transform()](module-ol_proj.html#.transform) and [proj.transformExtent()](module-ol_proj.html#.transformExtent).</p> <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> [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> <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>
<td> <td>
[ol/Geolocation](module-ol_Geolocation.html)<br> [ol/Geolocation](module-ol_Geolocation.html)<br>
[ol/Overlay](module-ol_Overlay-Overlay.html)<br></td> [ol/Overlay](module-ol_Overlay-Overlay.html)<br></td>

View File

@@ -95,17 +95,20 @@ exports.handlers = {
newDoclet: function(e) { newDoclet: function(e) {
const doclet = e.doclet; const doclet = e.doclet;
if (doclet.stability) { if (doclet.stability) {
modules[doclet.longname.split('~').shift()] = true; modules[doclet.longname.split(/[~\.]/).shift()] = true;
api.push(doclet); api.push(doclet);
} }
// Mark explicity defined namespaces - needed in parseComplete to keep
// namespaces that we need as containers for api items.
if (/.*\.jsdoc$/.test(doclet.meta.filename) && doclet.kind == 'namespace') {
doclet.namespace_ = true;
}
if (doclet.kind == 'class') { if (doclet.kind == 'class') {
modules[doclet.longname.split('~').shift()] = true; modules[doclet.longname.split(/[~\.]/).shift()] = true;
classes[doclet.longname] = doclet; if (!(doclet.longname in classes)) {
classes[doclet.longname] = doclet;
} else if ('augments' in doclet) {
classes[doclet.longname].augments = doclet.augments;
}
}
if (doclet.name === doclet.longname && !doclet.memberof) {
// Make sure anonymous default exports are documented
doclet.setMemberof(doclet.longname);
} }
}, },
@@ -113,7 +116,7 @@ exports.handlers = {
const doclets = e.doclets; const doclets = e.doclets;
for (let i = doclets.length - 1; i >= 0; --i) { for (let i = doclets.length - 1; i >= 0; --i) {
const doclet = doclets[i]; const doclet = doclets[i];
if (doclet.stability || doclet.namespace_) { if (doclet.stability) {
if (doclet.kind == 'class') { if (doclet.kind == 'class') {
includeAugments(doclet); includeAugments(doclet);
} }

View File

@@ -12,7 +12,7 @@ exports.handlers = {
events[cls] = []; events[cls] = [];
} }
events[cls].push(doclet.longname); events[cls].push(doclet.longname);
} else if (doclet.kind == 'class') { } else if (doclet.kind == 'class' && !(doclet.longname in classes)) {
classes[doclet.longname] = doclet; classes[doclet.longname] = doclet;
} }
}, },
@@ -29,7 +29,7 @@ exports.handlers = {
event = doclet.fires[j].replace('event:', ''); event = doclet.fires[j].replace('event:', '');
if (events[event]) { if (events[event]) {
fires.push.apply(fires, events[event]); fires.push.apply(fires, events[event]);
} else { } else if (doclet.fires[j] !== 'event:ObjectEvent') {
fires.push(doclet.fires[j]); fires.push(doclet.fires[j]);
} }
} }
@@ -40,4 +40,3 @@ exports.handlers = {
} }
}; };

View File

@@ -0,0 +1,109 @@
/*
* 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,
canHaveType: false,
canHaveName: false,
onTagged: function(doclet, tag) {
doclet.inheritdoc = true;
}
});
};
const lookup = {};
const incompleteByClass = {};
const keepKeys = ['comment', 'meta', 'name', 'memberof', 'longname', 'augment',
'stability'];
exports.handlers = {
newDoclet: function(e) {
const doclet = e.doclet;
let incompletes;
if (!(doclet.longname in lookup)) {
lookup[doclet.longname] = [];
}
lookup[doclet.longname].push(doclet);
if (doclet.inheritdoc) {
if (!(doclet.memberof in incompleteByClass)) {
incompleteByClass[doclet.memberof] = [];
}
incompletes = incompleteByClass[doclet.memberof];
if (incompletes.indexOf(doclet.name) == -1) {
incompletes.push(doclet.name);
}
}
},
parseComplete: function(e) {
let ancestors, candidate, candidates, doclet, i, j, k, l, key;
let incompleteDoclet, stability, incomplete, incompletes;
const doclets = e.doclets;
for (i = doclets.length - 1; i >= 0; --i) {
doclet = doclets[i];
if (doclet.augments) {
ancestors = [].concat(doclet.augments);
}
incompletes = incompleteByClass[doclet.longname];
if (ancestors && incompletes) {
// collect ancestors from the whole hierarchy
for (j = 0; j < ancestors.length; ++j) {
candidates = lookup[ancestors[j]];
if (candidates) {
for (k = candidates.length - 1; k >= 0; --k) {
candidate = candidates[k];
if (candidate.augments) {
ancestors = ancestors.concat(candidate.augments);
}
}
}
}
// walk through all inheritDoc members
for (j = incompletes.length - 1; j >= 0; --j) {
incomplete = incompletes[j];
candidates = lookup[doclet.longname + '#' + incomplete];
if (candidates) {
// get the incomplete doclet that needs to be augmented
for (k = candidates.length - 1; k >= 0; --k) {
incompleteDoclet = candidates[k];
if (incompleteDoclet.inheritdoc) {
break;
}
}
}
// find the documented ancestor
for (k = ancestors.length - 1; k >= 0; --k) {
candidates = lookup[ancestors[k] + '#' + incomplete];
if (candidates) {
for (l = candidates.length - 1; l >= 0; --l) {
candidate = candidates[l];
if (candidate && !candidate.inheritdoc) {
stability = candidate.stability || incompleteDoclet.stability;
if (stability) {
incompleteDoclet.stability = stability;
for (key in candidate) {
if (candidate.hasOwnProperty(key) &&
keepKeys.indexOf(key) == -1) {
incompleteDoclet[key] = candidate[key];
}
}
}
}
}
}
}
}
}
}
}
};

View File

@@ -0,0 +1,111 @@
/**
* Modified from JSDoc's plugins/markdown and lib/jsdoc/util/markdown modules
* (see https://github.com/jsdoc3/jsdoc/), which are licensed under the Apache 2
* license (see http://www.apache.org/licenses/LICENSE-2.0).
*
* This version does not protect http(s) urls from being turned into links, and
* works around an issue with `~` characters in module paths by escaping them.
*/
const marked = require('marked');
const format = require('util').format;
const tags = [
'author',
'classdesc',
'description',
'exceptions',
'params',
'properties',
'returns',
'see',
'summary'
];
const hasOwnProp = Object.prototype.hasOwnProperty;
const markedRenderer = new marked.Renderer();
// Allow prettyprint to work on inline code samples
markedRenderer.code = function(code, language) {
const langClass = language ? ' lang-' + language : '';
return format('<pre class="prettyprint source%s"><code>%s</code></pre>',
langClass, escapeCode(code));
};
function escapeCode(source) {
return source.replace(/</g, '&lt;')
.replace(/"/g, '&quot;')
.replace(/'/g, '&#39;');
}
function escapeUnderscoresAndTildes(source) {
return source.replace(/\{@[^}\r\n]+\}/g, function(wholeMatch) {
return wholeMatch
.replace(/(^|[^\\])_/g, '$1\\_')
.replace('~', '&tilde;');
});
}
function unencodeQuotesAndTildes(source) {
return source.replace(/\{@[^}\r\n]+\}/g, function(wholeMatch) {
return wholeMatch
.replace(/&quot;/g, '"')
.replace(/&tilde;/g, '~');
});
}
function parse(source) {
let result;
source = escapeUnderscoresAndTildes(source);
result = marked(source, {renderer: markedRenderer})
.replace(/\s+$/, '')
.replace(/&#39;/g, '\'');
result = unencodeQuotesAndTildes(result);
return result;
}
function shouldProcessString(tagName, text) {
let shouldProcess = true;
// we only want to process `@author` and `@see` tags that contain Markdown links
if ((tagName === 'author' || tagName === 'see') && text.indexOf('[') === -1) {
shouldProcess = false;
}
return shouldProcess;
}
function process(doclet) {
tags.forEach(function(tag) {
if (!hasOwnProp.call(doclet, tag)) {
return;
}
if (typeof doclet[tag] === 'string' && shouldProcessString(tag, doclet[tag])) {
doclet[tag] = parse(doclet[tag]);
} else if (Array.isArray(doclet[tag])) {
doclet[tag].forEach(function(value, index, original) {
const inner = {};
inner[tag] = value;
process(inner);
original[index] = inner[tag];
});
} else if (doclet[tag]) {
process(doclet[tag]);
}
});
}
exports.handlers = {
newDoclet: function(e) {
process(e.doclet);
}
};

View File

@@ -1,106 +0,0 @@
/**
* @filedesc
* Expands module path type to point to default export when no name is given
*/
const fs = require('fs');
const path = require('path');
let moduleRoot;
function addDefaultExportPath(obj) {
if (!Array.isArray(obj)) {
obj = obj.names;
}
obj.forEach((name, index) => {
const matches = name.match(/module\:([^>|),\.<]|)+/g);
if (matches) {
matches.forEach(module => {
if (!/[~\.]/.test(module)) {
const checkFile = path.resolve(moduleRoot, module.replace(/^module\:/, ''));
const file = fs.readFileSync(require.resolve(checkFile), 'utf-8');
const lines = file.split('\n');
let hasDefaultExport = false;
for (let i = 0, ii = lines.length; i < ii; ++i) {
hasDefaultExport = hasDefaultExport || /^export default [^\{]/.test(lines[i]);
const match = lines[i].match(/^export default ([A-Za-z_$][A-Za-z0-9_$]+);$/);
if (match) {
// Use variable name if default export is assigned to a variable.
obj[index] = name = name.replace(module, `${module}~${match[1]}`);
return;
}
}
if (hasDefaultExport) {
// Duplicate last part if default export is not assigned to a variable.
obj[index] = name = name.replace(module, `${module}~${module.split('/').pop()}`);
}
}
});
}
});
}
function replaceLinks(comment) {
const matches = comment.match(/\{@link [^\} #]+}/g);
if (matches) {
const modules = matches.map(m => {
const mm = m.match(/(module:[^\}]+)}$/);
if (mm) {
return mm[1];
}
}).filter(m => !!m);
const newModules = modules.concat();
addDefaultExportPath(newModules);
modules.forEach((module, i) => {
comment = comment.replace(module, newModules[i]);
});
}
return comment;
}
exports.handlers = {
/**
* Adds default export to module path types without name
* @param {Object} e Event object.
*/
newDoclet: function(e) {
const doclet = e.doclet;
if (doclet.kind == 'module') {
const levelsUp = doclet.longname.replace(/^module\:/, '').split('/');
if (doclet.meta.filename != 'index.js') {
levelsUp.pop();
}
const pathArgs = [doclet.meta.path].concat(levelsUp.map(() => '../'));
moduleRoot = path.resolve.apply(null, pathArgs);
} else {
if (doclet.description) {
doclet.description = replaceLinks(doclet.description);
}
if (doclet.classdesc) {
doclet.classdesc = replaceLinks(doclet.classdesc);
}
const module = doclet.longname.split('#').shift();
if (module.indexOf('module:') == 0 && module.indexOf('.') !== -1) {
doclet.longname = doclet.longname.replace(module, module.replace('.', '~'));
}
if (doclet.augments) {
addDefaultExportPath(doclet.augments);
}
if (doclet.params) {
doclet.params.forEach(p => addDefaultExportPath(p.type));
}
if (doclet.returns) {
doclet.returns.forEach(r => addDefaultExportPath(r.type));
}
if (doclet.properties) {
doclet.properties.forEach(p => addDefaultExportPath(p.type));
}
if (doclet.type) {
addDefaultExportPath(doclet.type);
}
}
}
};

View File

@@ -5,7 +5,7 @@ exports.handlers = {
newDoclet: function(e) { newDoclet: function(e) {
const doclet = e.doclet; const doclet = e.doclet;
if (doclet.kind == 'class') { if (doclet.kind == 'class' && !(doclet.longname in classes)) {
classes[doclet.longname] = doclet; classes[doclet.longname] = doclet;
} }
}, },
@@ -47,7 +47,7 @@ exports.handlers = {
if (!cls.fires) { if (!cls.fires) {
cls.fires = []; cls.fires = [];
} }
event = 'module:ol/Object~ObjectEvent#event:change:' + name; event = 'module:ol/Object.ObjectEvent#event:change:' + name;
if (cls.fires.indexOf(event) == -1) { if (cls.fires.indexOf(event) == -1) {
cls.fires.push(event); cls.fires.push(event);
} }

View File

@@ -1,85 +0,0 @@
/*
* Changes @enum annotations into @typedef.
*/
// types that are undefined or typedefs containing undefined
let undefinedLikes = null;
/**
* Changes the description of the param if it is required.
* @param {Object} doclet The doclet.
* @returns {Object} The modified doclet.
*/
function markRequiredIfNeeded(doclet) {
const memberof = doclet.memberof;
if (!memberof) {
return doclet;
}
const types = doclet.type.names;
let isRequiredParam = true;
// iterate over all types that are like-undefined (see above for explanation)
for (let idx = undefinedLikes.length - 1; idx >= 0; idx--) {
const undefinedLike = undefinedLikes[idx];
// … if the current types contains a type that is undefined-like,
// it is not required.
if (types.indexOf(undefinedLike) != -1) {
isRequiredParam = false;
}
}
if (isRequiredParam) {
const reqSnippet = '<span class="required-option">Required.</span></p>';
const endsWithP = /<\/p>$/i;
let description = doclet.description;
if (description && endsWithP.test(description)) {
description = description.replace(endsWithP, ' ' + reqSnippet);
} else if (doclet.description === undefined) {
description = '<p>' + reqSnippet;
}
doclet.description = description;
}
return doclet;
}
/**
* Iterates over all doclets and finds the names of types that contain
* undefined. Stores the names in the global variable undefinedLikes, so
* that e.g. markRequiredIfNeeded can use these.
* @param {Array} doclets The doclets.
*/
function findTypesLikeUndefined(doclets) {
undefinedLikes = ['undefined']; // include type 'undefined' explicitly
for (let i = doclets.length - 1; i >= 0; --i) {
const doclet = doclets[i];
if (doclet.kind === 'typedef') {
const types = doclet.type.names;
if (types.indexOf('undefined') !== -1) {
// the typedef contains 'undefined', so it self is undefinedLike.
undefinedLikes.push(doclet.longname);
}
}
}
}
exports.handlers = {
newDoclet: function(e) {
const doclet = e.doclet;
if (doclet.isEnum) {
// We never export enums, so we document them like typedefs
doclet.kind = 'typedef';
delete doclet.isEnum;
}
},
parseComplete: function(e) {
const doclets = e.doclets;
findTypesLikeUndefined(doclets);
for (let i = doclets.length - 1; i >= 0; --i) {
markRequiredIfNeeded(doclets[i]);
}
}
};

View File

@@ -168,9 +168,9 @@ function generateSourceFiles(sourceFiles) {
* for display purposes. This function mutates the original arrays. * for display purposes. This function mutates the original arrays.
* *
* @private * @private
* @param {Array.<module:jsdoc/doclet.Doclet>} doclets - The array of classes and functions to * @param {Array<module:jsdoc/doclet.Doclet>} doclets - The array of classes and functions to
* check. * check.
* @param {Array.<module:jsdoc/doclet.Doclet>} modules - The array of module doclets to search. * @param {Array<module:jsdoc/doclet.Doclet>} modules - The array of module doclets to search.
*/ */
function attachModuleSymbols(doclets, modules) { function attachModuleSymbols(doclets, modules) {
const symbols = {}; const symbols = {};

View File

@@ -30,7 +30,11 @@ $(function () {
}); });
// Show an item related a current documentation automatically // Show an item related a current documentation automatically
var filename = $('.page-title').data('filename').replace(/\.[a-z]+$/, ''); var filename = $('.page-title').data('filename')
.replace(/\.[a-z]+$/, '')
.replace('module-', 'module:')
.replace(/_/g, '/')
.replace(/-/g, '~');
var $currentItem = $('.navigation .item[data-name*="' + filename + '"]:eq(0)'); var $currentItem = $('.navigation .item[data-name*="' + filename + '"]:eq(0)');
if ($currentItem.length) { if ($currentItem.length) {
@@ -97,7 +101,8 @@ $(function () {
var anchors = $('.anchor'); var anchors = $('.anchor');
var _onHashChange = function () { var _onHashChange = function () {
var activeHash = window.document.location.hash var activeHash = window.document.location.hash
.replace(/\./g, '\\.'); // Escape dot in element id .replace(/\./g, '\\.') // Escape dot in element id
.replace(/\~/g, '\\~'); // Escape tilde in element id
anchors.removeClass('highlighted'); anchors.removeClass('highlighted');

View File

@@ -4,6 +4,63 @@ var version = obj.packageInfo.version;
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en"> <html lang="en">
<head> <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', { '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"> <meta charset="utf-8">
<title>OpenLayers v<?js= version ?> API - <?js= title ?></title> <title>OpenLayers v<?js= version ?> API - <?js= title ?></title>
<script src="https://cdn.polyfill.io/v2/polyfill.min.js?features=fetch"></script> <script src="https://cdn.polyfill.io/v2/polyfill.min.js?features=fetch"></script>

View File

@@ -14,7 +14,7 @@ if (data.type && data.type.names) {
<div class="anchor" id="<?js= id ?>"> <div class="anchor" id="<?js= id ?>">
</div> </div>
<h4 class="name"> <h4 class="name">
<?js= data.attribs + (data.scope === 'static' ? longname : name) + typeSignature ?> <?js= data.attribs + (data.scope === 'static' ? longname : name.indexOf('module:') === 0 ? name.split('/').pop() : name) + typeSignature ?>
<?js= this.partial('stability.tmpl', data) ?> <?js= this.partial('stability.tmpl', data) ?>
</h4> </h4>
</div> </div>
@@ -28,9 +28,9 @@ if (data.type && data.type.names) {
<?js= data.description ?> <?js= data.description ?>
</div> </div>
<?js } ?> <?js } ?>
<?js= this.partial('details.tmpl', data) ?> <?js= this.partial('details.tmpl', data) ?>
<?js if (data.examples && examples.length) { ?> <?js if (data.examples && examples.length) { ?>
<h5>Example<?js= examples.length > 1? 's':'' ?></h5> <h5>Example<?js= examples.length > 1? 's':'' ?></h5>
<?js= this.partial('examples.tmpl', examples) ?> <?js= this.partial('examples.tmpl', examples) ?>

View File

@@ -77,7 +77,7 @@ var self = this;
(<?js= self.linkto(eventClass.longname) ?>) (<?js= self.linkto(eventClass.longname) ?>)
<?js } ?> <?js } ?>
<?js } ?> <?js } ?>
<?js= self.partial('stability.tmpl', eventDoclet || (data.stability ? data : {stability: 'experimental'})) ?> <?js= self.partial('stability.tmpl', eventDoclet || (data.stability ? data : {})) ?>
<?js if (description) { ?> - <?js if (description) { ?> -
<?js= description ?> <?js= description ?>
<?js } ?> <?js } ?>

View File

@@ -1,5 +1,8 @@
<?js <?js
var self = this; var self = this;
function toShortName(name) {
return name.indexOf('module:') === 0 ? name.split('/').pop() : name;
}
?> ?>
<div class="navigation"> <div class="navigation">
<div class="search"> <div class="search">
@@ -25,7 +28,7 @@ var self = this;
<?js <?js
item.members.forEach(function (v) { item.members.forEach(function (v) {
?> ?>
<li data-name="<?js= v.longname ?>"><?js= self.linkto(v.longname, v.name) ?></li> <li data-name="<?js= v.longname ?>"><?js= self.linkto(v.longname, toShortName(v.name)) ?></li>
<?js <?js
}); });
} }
@@ -40,7 +43,7 @@ var self = this;
item.typedefs.forEach(function (v) { item.typedefs.forEach(function (v) {
?> ?>
<li data-name="<?js= v.longname ?>" class="<?js= (v.stability && v.stability !== 'stable') ? 'unstable' : ''?>"> <li data-name="<?js= v.longname ?>" class="<?js= (v.stability && v.stability !== 'stable') ? 'unstable' : ''?>">
<?js= self.linkto(v.longname, v.name) ?> <?js= self.linkto(v.longname, toShortName(v.name)) ?>
</li> </li>
<?js <?js
}); });
@@ -57,7 +60,7 @@ var self = this;
item.methods.forEach(function (v) { item.methods.forEach(function (v) {
?> ?>
<li data-name="<?js= v.longname ?>" class="<?js= (v.stability && v.stability !== 'stable') ? 'unstable' : ''?>"> <li data-name="<?js= v.longname ?>" class="<?js= (v.stability && v.stability !== 'stable') ? 'unstable' : ''?>">
<?js= self.linkto(v.longname, v.name) ?> <?js= self.linkto(v.longname, toShortName(v.name)) ?>
</li> </li>
<?js <?js
}); });
@@ -74,7 +77,7 @@ var self = this;
v = self.find({longname: v})[0] || {longname: v, name: v.split(/#?event:/)[1]}; v = self.find({longname: v})[0] || {longname: v, name: v.split(/#?event:/)[1]};
?> ?>
<li data-name="<?js= v.longname ?>" class="<?js= (v.stability && v.stability != 'stable') ? 'unstable' : '' ?>"> <li data-name="<?js= v.longname ?>" class="<?js= (v.stability && v.stability != 'stable') ? 'unstable' : '' ?>">
<?js= self.linkto(v.longname, v.name) ?> <?js= self.linkto(v.longname, toShortName(v.name)) ?>
</li> </li>
<?js <?js
}); });

View File

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

View File

@@ -10,8 +10,12 @@
"includePattern": "\\.js$" "includePattern": "\\.js$"
}, },
"plugins": [ "plugins": [
"jsdoc-plugin-typescript",
"config/jsdoc/info/api-plugin", "config/jsdoc/info/api-plugin",
"config/jsdoc/info/define-plugin", "config/jsdoc/info/define-plugin",
"config/jsdoc/info/virtual-plugin" "config/jsdoc/info/virtual-plugin"
] ],
"typescript": {
"moduleRoot": "src"
}
} }

View File

@@ -1,21 +0,0 @@
// Rollup configuration for the full build
import noderesolve from 'rollup-plugin-node-resolve';
import commonjs from 'rollup-plugin-commonjs';
import {uglify} from 'rollup-plugin-uglify';
import buble from 'rollup-plugin-buble';
import sourcemaps from 'rollup-plugin-sourcemaps';
export default {
input: 'build/index.js',
output: [
{file: 'build/ol.js', format: 'iife', sourcemap: true}
],
plugins: [
noderesolve(),
commonjs(),
buble(),
uglify(),
sourcemaps()
]
};

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

@@ -0,0 +1,13 @@
const path = require('path');
module.exports = {
entry: './build/index.js',
devtool: 'source-map',
mode: 'production',
output: {
path: path.resolve('./build/legacy'),
filename: 'ol.js',
library: 'ol',
libraryTarget: 'umd',
libraryExport: 'default'
}
};

View File

@@ -111,7 +111,7 @@ Features for `updates` must have an id set by the feature reader or `ol.Feature#
### 28 ### 28
`renderMode` must be `'image'`, `'hybrid'` or `'vector'`. `renderMode` must be `'image'` or `'hybrid'`.
### 29 ### 29

View File

@@ -5,7 +5,7 @@ layout: doc.hbs
# Frequently Asked Questions (FAQ) # Frequently Asked Questions (FAQ)
Certain questions arise more often than others when users ask for help. This Certain questions arise more often than others when users ask for help. This
document tries to list some of the common questions that frequently get asked, document tries to list some of the common questions that frequently get asked,
e.g. on [Stack Overflow](http://stackoverflow.com/questions/tagged/openlayers). e.g. on [Stack Overflow](http://stackoverflow.com/questions/tagged/openlayers).
@@ -54,9 +54,12 @@ The projection of your map can be set through the `view`-property. Here are some
examples: examples:
```javascript ```javascript
import Map from 'ol/Map';
import View from 'ol/View';
// OpenLayers comes with support for the World Geodetic System 1984, EPSG:4326: // OpenLayers comes with support for the World Geodetic System 1984, EPSG:4326:
var map = new ol.Map({ const map = new Map({
view: new ol.View({ view: new View({
projection: 'EPSG:4326' projection: 'EPSG:4326'
// other view properties like map center etc. // other view properties like map center etc.
}) })
@@ -65,24 +68,29 @@ var map = new ol.Map({
``` ```
```javascript ```javascript
// To use other projections, you have to register the projection in OpenLayers: import Map from 'ol/Map';
import View from 'ol/View';
import proj4 from 'proj4';
import {register} from 'ol/proj/proj4';
import {get as getProjection} from 'ol/proj';
// To use other projections, you have to register the projection in OpenLayers.
// This can easily be done with [https://proj4js.org](proj4)
// //
// By default OpenLayers does not know about the EPSG:21781 (Swiss) projection. // By default OpenLayers does not know about the EPSG:21781 (Swiss) projection.
// So we create a projection instance for EPSG:21781 and pass it to // So we create a projection instance for EPSG:21781 and pass it to
// ol.proj.addProjection to make it available to the library for lookup by its // register to make it available to the library for lookup by its
// code. // code.
var swissProjection = new ol.proj.Projection({ proj4.defs('EPSG:21781',
code: 'EPSG:21781', '+proj=somerc +lat_0=46.95240555555556 +lon_0=7.439583333333333 +k_0=1 ' +
// The extent is used to determine zoom level 0. Recommended values for a '+x_0=600000 +y_0=200000 +ellps=bessel ' +
// projection's validity extent can be found at https://epsg.io/. '+towgs84=660.077,13.551,369.344,2.484,1.783,2.939,5.66 +units=m +no_defs');
extent: [485869.5728, 76443.1884, 837076.5648, 299941.7864], register(proj4);
units: 'm' const swissProjection = getProjection('EPSG:21781');
});
ol.proj.addProjection(swissProjection);
// we can now use the projection: // we can now use the projection:
var map = new ol.Map({ const map = new Map({
view: new ol.View({ view: new View({
projection: swissProjection projection: swissProjection
// other view properties like map center etc. // other view properties like map center etc.
}) })
@@ -105,15 +113,20 @@ coordinates for the center have to be provided in that projection. Chances are
that your map looks like this: that your map looks like this:
```javascript ```javascript
var washingtonLonLat = [-77.036667, 38.895]; import Map from 'ol/Map';
var map = new ol.Map({ import View from 'ol/View';
import TileLayer from 'ol/layer/Tile';
import OSM from 'ol/source/OSM';
const washingtonLonLat = [-77.036667, 38.895];
const map = new Map({
layers: [ layers: [
new ol.layer.Tile({ new TileLayer({
source: new ol.source.OSM() source: new OSM()
}) })
], ],
target: 'map', target: 'map',
view: new ol.View({ view: new View({
center: washingtonLonLat, center: washingtonLonLat,
zoom: 12 zoom: 12
}) })
@@ -129,31 +142,38 @@ The solution is easy: Provide the coordinates projected into Web Mercator.
OpenLayers has some helpful utility methods to assist you: OpenLayers has some helpful utility methods to assist you:
```javascript ```javascript
var washingtonLonLat = [-77.036667, 38.895]; import Map from 'ol/Map';
var washingtonWebMercator = ol.proj.fromLonLat(washingtonLonLat); import View from 'ol/View';
import TileLayer from 'ol/layer/Tile';
import OSM from 'ol/source/OSM';
import {fromLonLat} from 'ol/proj';
var map = new ol.Map({ const washingtonLonLat = [-77.036667, 38.895];
const washingtonWebMercator = fromLonLat(washingtonLonLat);
const map = new Map({
layers: [ layers: [
new ol.layer.Tile({ new TileLayer({
source: new ol.source.OSM() source: new OSM()
}) })
], ],
target: 'map', target: 'map',
view: new ol.View({ view: new View({
center: washingtonWebMercator, center: washingtonWebMercator,
zoom: 8 zoom: 8
}) })
}); });
``` ```
The method `ol.proj.fromLonLat()` is available from version 3.5 onwards. The method `fromLonLat()` is available from version 3.5 onwards.
If you told OpenLayers about a custom projection (see above), you can use the If you told OpenLayers about a custom projection (see above), you can use the
following method to transform a coordinate from WGS84 to your projection: following method to transform a coordinate from WGS84 to your projection:
```javascript ```javascript
import {transform} from 'ol/proj';
// assuming that OpenLayers knows about EPSG:21781, see above // assuming that OpenLayers knows about EPSG:21781, see above
var swissCoord = ol.proj.transform([8.23, 46.86], 'EPSG:4326', 'EPSG:21781'); const swissCoord = transform([8.23, 46.86], 'EPSG:4326', 'EPSG:21781');
``` ```
@@ -190,18 +210,24 @@ So the next step would be to put the decimal coordinates into an array and use
it as center: it as center:
```javascript ```javascript
var schladming = [47.394167, 13.689167]; // caution partner, read on... import Map from 'ol/Map';
// since we are using OSM, we have to transform the coordinates... import View from 'ol/View';
var schladmingWebMercator = ol.proj.fromLonLat(schladming); import TileLayer from 'ol/layer/Tile';
import OSM from 'ol/source/OSM';
import {fromLonLat} from 'ol/proj';
var map = new ol.Map({ const schladming = [47.394167, 13.689167]; // caution partner, read on...
// since we are using OSM, we have to transform the coordinates...
const schladmingWebMercator = fromLonLat(schladming);
const map = new Map({
layers: [ layers: [
new ol.layer.Tile({ new TileLayer({
source: new ol.source.OSM() source: new OSM()
}) })
], ],
target: 'map', target: 'map',
view: new ol.View({ view: new View({
center: schladmingWebMercator, center: schladmingWebMercator,
zoom: 9 zoom: 9
}) })
@@ -220,18 +246,24 @@ e.g. try to change the map center.
Ok, then let's flip the coordinates: Ok, then let's flip the coordinates:
```javascript ```javascript
var schladming = [13.689167, 47.394167]; // longitude first, then latitude import Map from 'ol/Map';
// since we are using OSM, we have to transform the coordinates... import View from 'ol/View';
var schladmingWebMercator = ol.proj.fromLonLat(schladming); import TileLayer from 'ol/layer/Tile';
import OSM from 'ol/source/OSM';
import {fromLonLat} from 'ol/proj';
var map = new ol.Map({ const schladming = [13.689167, 47.394167]; // longitude first, then latitude
// since we are using OSM, we have to transform the coordinates...
const schladmingWebMercator = fromLonLat(schladming);
const map = new Map({
layers: [ layers: [
new ol.layer.Tile({ new TileLayer({
source: new ol.source.OSM() source: new OSM()
}) })
], ],
target: 'map', target: 'map',
view: new ol.View({ view: new View({
center: schladmingWebMercator, center: schladmingWebMercator,
zoom: 9 zoom: 9
}) })
@@ -245,7 +277,7 @@ first, and then the latitude. This behaviour is the same as we had in OpenLayers
2, and it actually makes sense because of the natural axis order in WGS84. 2, and it actually makes sense because of the natural axis order in WGS84.
If you cannot remember the correct order, just have a look at the method name If you cannot remember the correct order, just have a look at the method name
we used: `ol.proj.fromLonLat`; even there we hint that we expect longitude we used: `fromLonLat`; even there we hint that we expect longitude
first, and then latitude. first, and then latitude.
@@ -255,8 +287,11 @@ Suppose you want to load a KML file and display the contained features on the
map. Code like the following could be used: map. Code like the following could be used:
```javascript ```javascript
var vector = new ol.layer.Vector({ import VectorLayer from 'ol/layer/Vector';
source: new ol.source.KML({ import KMLSource from 'ol/source/KML';
const vector = new VectorLayer({
source: new KMLSource({
projection: 'EPSG:3857', projection: 'EPSG:3857',
url: 'data/kml/2012-02-10.kml' url: 'data/kml/2012-02-10.kml'
}) })
@@ -267,13 +302,16 @@ You may ask yourself how many features are in that KML, and try something like
the following: the following:
```javascript ```javascript
var vector = new ol.layer.Vector({ import VectorLayer from 'ol/layer/Vector';
source: new ol.source.KML({ import KMLSource from 'ol/source/KML';
const vector = new VectorLayer({
source: new KMLSource({
projection: 'EPSG:3857', projection: 'EPSG:3857',
url: 'data/kml/2012-02-10.kml' url: 'data/kml/2012-02-10.kml'
}) })
}); });
var numFeatures = vector.getSource().getFeatures().length; const numFeatures = vector.getSource().getFeatures().length;
console.log("Count right after construction: " + numFeatures); console.log("Count right after construction: " + numFeatures);
``` ```
@@ -285,9 +323,9 @@ been populated with features), you should use an event listener function on the
```javascript ```javascript
vector.getSource().on('change', function(evt){ vector.getSource().on('change', function(evt){
var source = evt.target; const source = evt.target;
if (source.getState() === 'ready') { if (source.getState() === 'ready') {
var numFeatures = source.getFeatures().length; const numFeatures = source.getFeatures().length;
console.log("Count after change: " + numFeatures); console.log("Count after change: " + numFeatures);
} }
}); });
@@ -316,16 +354,17 @@ map.renderSync();
## Why are my features not found? ## Why are my features not found?
You are using `ol.Map#forEachFeatureAtPixel` or `ol.Map#hasFeatureAtPixel`, but You are using `Map#forEachFeatureAtPixel` or `Map#hasFeatureAtPixel`, but
it sometimes does not work for large icons or labels? The *hit detection* only it sometimes does not work for large icons or labels? The *hit detection* only
checks features that are within a certain distance of the given position. For large checks features that are within a certain distance of the given position. For large
icons, the actual geometry of a feature might be too far away and is not considered. icons, the actual geometry of a feature might be too far away and is not considered.
In this case, set the `renderBuffer` property of `ol.layer.Vector` (the default In this case, set the `renderBuffer` property of `VectorLayer` (the default value is 100px):
value is 100px):
```javascript ```javascript
var vectorLayer = new ol.layer.Vector({ import VectorLayer from 'ol/layer/Vector';
const vectorLayer = new VectorLayer({
... ...
renderBuffer: 200 renderBuffer: 200
}); });

View File

@@ -18,14 +18,14 @@ Below you'll find a complete working example. Create a new file, copy in the co
<!doctype html> <!doctype html>
<html lang="en"> <html lang="en">
<head> <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> <style>
.map { .map {
height: 400px; height: 400px;
width: 100%; width: 100%;
} }
</style> </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> <title>OpenLayers example</title>
</head> </head>
<body> <body>
@@ -60,7 +60,7 @@ To include a map a web page you will need 3 things:
### Include OpenLayers ### Include OpenLayers
```xml ```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. 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.
@@ -130,7 +130,7 @@ The `layers: [ ... ]` array is used to define the list of layers available in th
] ]
``` ```
Layers in OpenLayers are defined with a type (Image, Tile or Vector) which contains a source. The source is the protocol used to get the map tiles. You can consult the list of [available layer sources here](/en/{{ latest }}/apidoc/ol.source.html) Layers in OpenLayers are defined with a type (Image, Tile or Vector) which contains a source. The source is the protocol used to get the map tiles.
The next part of the `Map` object is the `View`. The view allows to specify the center, resolution, and rotation of the map. The simplest way to define a view is to define a center point and a zoom level. Note that zoom level 0 is zoomed out. The next part of the `Map` object is the `View`. The view allows to specify the center, resolution, and rotation of the map. The simplest way to define a view is to define a center point and a zoom level. Note that zoom level 0 is zoomed out.

View File

@@ -17,7 +17,7 @@ OpenLayers is available as [`ol` npm package](https://npmjs.com/package/ol), whi
## Renderers and Browser Support ## Renderers and Browser Support
By default, OpenLayers uses a performance optimized Canvas renderer. An experimental WebGL renderer (without text rendering support) is also avaialble. By default, OpenLayers uses a performance optimized Canvas renderer.
OpenLayers runs on all modern browsers that support [HTML5](https://html.spec.whatwg.org/multipage/) and [ECMAScript 5](http://www.ecma-international.org/ecma-262/5.1/). This includes Chrome, Firefox, Safari and Edge. For older browsers and platforms like Internet Explorer (down to version 9) and Android 4.x, [polyfills](http://polyfill.io), the application bundle needs to be transpiled (e.g. using [Babel](https://babeljs.io)) and bundled with polyfills for `requestAnimationFrame`, `Element.prototype.classList` and `URL`. OpenLayers runs on all modern browsers that support [HTML5](https://html.spec.whatwg.org/multipage/) and [ECMAScript 5](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: In addition to these re-exported classes, modules with lowercase names also provide constants or functions as named exports:
```js ```js
import {inherits} from 'ol'; import {getUid} from 'ol';
import {fromLonLat} from 'ol/proj'; 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 ## 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 npm install ol
@@ -45,7 +47,7 @@ const map = new Map({
}); });
``` ```
You will also need an `ìndex.html` file that will use your bundle. Here is a simple example: You will also need an `index.html` file that will use your bundle. Here is a simple example:
```html ```html
<!DOCTYPE html> <!DOCTYPE html>
@@ -69,13 +71,21 @@ You will also need an `ìndex.html` file that will use your bundle. Here is a si
## Creating a bundle ## 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 ```json
"scripts": { {
"test": "echo \"Error: no test specified\" && exit 1", "name": "test",
"start": "parcel index.html", "version": "1.0.0",
"build": "parcel build --public-url . index.html" "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 That's it. Now to run your application, enter

View File

@@ -6,27 +6,34 @@ layout: doc.hbs
# Basic Concepts # Basic Concepts
## Map ## Map
The core component of OpenLayers is the map (`Map`). It is rendered to a `target` container (e.g. a `div` element on the web page that contains the map). All map properties can either be configured at construction time, or by using setter methods, e.g. `setTarget()`.
The core component of OpenLayers is the map (`ol/Map`). It is rendered to a `target` container (e.g. a `div` element on the web page that contains the map). All map properties can either be configured at construction time, or by using setter methods, e.g. `setTarget()`.
The markup below could be used to create a `<div>` that contains your map.
```xml ```xml
<div id="map" style="width: 100%, height: 400px"></div> <div id="map" style="width: 100%, height: 400px"></div>
<script> ```
import Map from 'ol/Map';
var map = new Map({target: 'map'}); The script below constructs a map that is rendered in the `<div>` above, using the `map` id of the element as a selector.
</script>
```js
import Map from 'ol/Map';
var map = new Map({target: 'map'});
``` ```
## View ## View
`Map` is not responsible for things like center, zoom level and projection of the map. Instead, these are properties of a `View` instance.
The map is not responsible for things like center, zoom level and projection of the map. Instead, these are properties of a `ol/View` instance.
```js ```js
import View from 'ol/View'; import View from 'ol/View';
map.setView(new View({ map.setView(new View({
center: [0, 0], center: [0, 0],
zoom: 2 zoom: 2
})); }));
``` ```
A `View` also has a `projection`. The projection determines the coordinate system of the `center` and the units for map resolution calculations. If not specified (like in the above snippet), the default projection is Spherical Mercator (EPSG:3857), with meters as map units. A `View` also has a `projection`. The projection determines the coordinate system of the `center` and the units for map resolution calculations. If not specified (like in the above snippet), the default projection is Spherical Mercator (EPSG:3857), with meters as map units.
@@ -35,54 +42,49 @@ The `zoom` option is a convenient way to specify the map resolution. The availab
## Source ## Source
To get remote data for a layer, OpenLayers uses `source/Source` subclasses. These are available for free and commercial map tile services like OpenStreetMap or Bing, for OGC sources like WMS or WMTS, and for vector data in formats like GeoJSON or KML.
To get remote data for a layer, OpenLayers uses `ol/source/Source` subclasses. These are available for free and commercial map tile services like OpenStreetMap or Bing, for OGC sources like WMS or WMTS, and for vector data in formats like GeoJSON or KML.
```js ```js
import OSM from 'ol/source/OSM'; import OSM from 'ol/source/OSM';
var osmSource = OSM(); var osmSource = OSM();
``` ```
## Layer ## Layer
A layer is a visual representation of data from a `source`. OpenLayers has four basic types of layers: `layer/Tile`, `layer/Image`, `layer/Vector` and `layer/VectorTile`.
`layer/Tile` is for layer sources that provide pre-rendered, tiled images in grids that are organized by zoom levels for specific resolutions. A layer is a visual representation of data from a `source`. OpenLayers has four basic types of layers:
`layer/Image` is for server rendered images that are available for arbitrary extents and resolutions. * `ol/layer/Tile` - Renders sources that provide tiled images in grids that are organized by zoom levels for specific resolutions.
* `ol/layer/Image` - Renders sources that provide map images at arbitrary extents and resolutions.
`layer/Vector` is for vector data that is rendered client-side. * `ol/layer/Vector` - Renders vector data client-side.
* `ol/layer/VectorTile` - Renders data that is provided as vector tiles.
`layer/VectorTile` is for tiled vector data that is rendered client-side.
```js ```js
import TileLayer from 'ol/layer/Tile'; import TileLayer from 'ol/layer/Tile';
var osmLayer = new TileLayer({source: osmSource}); var osmLayer = new TileLayer({source: osmSource});
map.addLayer(osmLayer); map.addLayer(osmLayer);
``` ```
## Putting it all together ## Putting it all together
The above snippets can be combined into a single script that renders a map with a single tile layer:
The above snippets can be conflated to a self contained map configuration with view and layers: ```js
import Map from 'ol/Map';
import View from 'ol/View';
import OSM from 'ol/source/OSM';
import TileLayer from 'ol/source/Tile';
```xml new Map({
<div id="map" style="width: 100%, height: 400px"></div> layers: [
<script> new TileLayer({source: new OSM()})
import Map from 'ol/Map'; ],
import View from 'ol/View'; view: new View({
import OSM from 'ol/source/OSM'; center: [0, 0],
import TileLayer from 'ol/source/Tile'; zoom: 2
}),
new Map({ target: 'map'
layers: [ });
new TileLayer({source: new ol.source.OSM()})
],
view: new View({
center: [0, 0],
zoom: 2
}),
target: 'map'
});
</script>
``` ```

View File

@@ -12,9 +12,9 @@ The view in any Proj4js supported coordinate reference system is possible and pr
# Usage # Usage
The API usage is very simple. Just specify proper projection (e.g. using [EPSG](https://epsg.io) code) on `ol/View`: The API usage is very simple. Just specify proper projection (e.g. using [EPSG](https://epsg.io) code) on `ol/View`:
```js ```js
import {Map, View} from `ol`; import {Map, View} from 'ol';
import TileLayer from `ol/layer/Tile`; import TileLayer from 'ol/layer/Tile';
import TileWMS from `ol/source/TileWMS`; import TileWMS from 'ol/source/TileWMS';
var map = new Map({ var map = new Map({
target: 'map', target: 'map',

View File

@@ -5,10 +5,12 @@
"common": false, "common": false,
"createMapboxStreetsV6Style": false, "createMapboxStreetsV6Style": false,
"d3": false, "d3": false,
"domtoimage": false,
"geojsonvt": false, "geojsonvt": false,
"GyroNorm": false, "GyroNorm": false,
"jsPDF": false, "jsPDF": false,
"jsts": false, "jsts": false,
"mapboxgl": false,
"saveAs": false, "saveAs": false,
"toastr": false, "toastr": false,
"topojson": false, "topojson": false,

View File

@@ -1,6 +1,5 @@
import Map from '../src/ol/Map.js'; import Map from '../src/ol/Map.js';
import View from '../src/ol/View.js'; import View from '../src/ol/View.js';
import {defaults as defaultControls} from '../src/ol/control.js';
import TileLayer from '../src/ol/layer/Tile.js'; import TileLayer from '../src/ol/layer/Tile.js';
import OSM from '../src/ol/source/OSM.js'; import OSM from '../src/ol/source/OSM.js';
@@ -12,11 +11,6 @@ const map = new Map({
}) })
], ],
target: 'map', target: 'map',
controls: defaultControls({
attributionOptions: {
collapsible: false
}
}),
view: new View({ view: new View({
center: [0, 0], center: [0, 0],
zoom: 2 zoom: 2

View File

@@ -24,9 +24,6 @@ const map = new Map({
source: new OSM() 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: view
}); });

View File

@@ -29,9 +29,6 @@ for (i = 0, ii = styles.length; i < ii; ++i) {
} }
const map = new Map({ const map = new Map({
layers: layers, layers: layers,
// Improve user experience by loading tiles while dragging/zooming. Will make
// zooming choppy on mobile or slow devices.
loadTilesWhileInteracting: true,
target: 'map', target: 'map',
view: new View({ view: new View({
center: [-6655.5402445057125, 6709968.258934638], 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 * The styling function for the vector layer, will return an array of styles
* which either contains the aboove gradient or pattern. * which either contains the aboove gradient or pattern.
* *
* @param {module:ol/Feature~Feature} feature The feature to style. * @param {import("../src/ol/Feature.js").default} feature The feature to style.
* @return {module:ol/style/Style} The style to use for the feature. * @return {Style} The style to use for the feature.
*/ */
const getStackedStyle = function(feature) { const getStackedStyle = function(feature) {
const id = feature.getId(); const id = feature.getId();

View File

@@ -4,10 +4,7 @@ title: Canvas Tiles
shortdesc: Renders tiles with coordinates for debugging. shortdesc: Renders tiles with coordinates for debugging.
docs: > docs: >
The black grid tiles are generated on the client with an HTML5 canvas. The The black grid tiles are generated on the client with an HTML5 canvas. The
displayed tile coordinates are OpenLayers tile coordinates. These increase displayed tile coordinates are the XYZ tile coordinates.
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`.
tags: "layers, openstreetmap, canvas" tags: "layers, openstreetmap, canvas"
--- ---
<div id="map" class="map"></div> <div id="map" class="map"></div>

View File

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

View File

@@ -1,6 +1,5 @@
import Map from '../src/ol/Map.js'; import Map from '../src/ol/Map.js';
import View from '../src/ol/View.js'; import View from '../src/ol/View.js';
import {defaults as defaultControls} from '../src/ol/control.js';
import GeoJSON from '../src/ol/format/GeoJSON.js'; import GeoJSON from '../src/ol/format/GeoJSON.js';
import {Tile as TileLayer, Vector as VectorLayer} from '../src/ol/layer.js'; import {Tile as TileLayer, Vector as VectorLayer} from '../src/ol/layer.js';
import {OSM, Vector as VectorSource} from '../src/ol/source.js'; import {OSM, Vector as VectorSource} from '../src/ol/source.js';
@@ -45,18 +44,13 @@ const map = new Map({
vectorLayer vectorLayer
], ],
target: 'map', target: 'map',
controls: defaultControls({
attributionOptions: {
collapsible: false
}
}),
view: view view: view
}); });
const zoomtoswitzerlandbest = document.getElementById('zoomtoswitzerlandbest'); const zoomtoswitzerlandbest = document.getElementById('zoomtoswitzerlandbest');
zoomtoswitzerlandbest.addEventListener('click', function() { zoomtoswitzerlandbest.addEventListener('click', function() {
const feature = source.getFeatures()[0]; const feature = source.getFeatures()[0];
const polygon = /** @type {module:ol/geom/SimpleGeometry~SimpleGeometry} */ (feature.getGeometry()); const polygon = /** @type {import("../src/ol/geom/SimpleGeometry.js").default} */ (feature.getGeometry());
view.fit(polygon, {padding: [170, 50, 30, 150], constrainResolution: false}); view.fit(polygon, {padding: [170, 50, 30, 150], constrainResolution: false});
}, false); }, false);
@@ -64,7 +58,7 @@ const zoomtoswitzerlandconstrained =
document.getElementById('zoomtoswitzerlandconstrained'); document.getElementById('zoomtoswitzerlandconstrained');
zoomtoswitzerlandconstrained.addEventListener('click', function() { zoomtoswitzerlandconstrained.addEventListener('click', function() {
const feature = source.getFeatures()[0]; const feature = source.getFeatures()[0];
const polygon = /** @type {module:ol/geom/SimpleGeometry~SimpleGeometry} */ (feature.getGeometry()); const polygon = /** @type {import("../src/ol/geom/SimpleGeometry.js").default} */ (feature.getGeometry());
view.fit(polygon, {padding: [170, 50, 30, 150]}); view.fit(polygon, {padding: [170, 50, 30, 150]});
}, false); }, false);
@@ -72,21 +66,21 @@ const zoomtoswitzerlandnearest =
document.getElementById('zoomtoswitzerlandnearest'); document.getElementById('zoomtoswitzerlandnearest');
zoomtoswitzerlandnearest.addEventListener('click', function() { zoomtoswitzerlandnearest.addEventListener('click', function() {
const feature = source.getFeatures()[0]; const feature = source.getFeatures()[0];
const polygon = /** @type {module:ol/geom/SimpleGeometry~SimpleGeometry} */ (feature.getGeometry()); const polygon = /** @type {import("../src/ol/geom/SimpleGeometry.js").default} */ (feature.getGeometry());
view.fit(polygon, {padding: [170, 50, 30, 150], nearest: true}); view.fit(polygon, {padding: [170, 50, 30, 150], nearest: true});
}, false); }, false);
const zoomtolausanne = document.getElementById('zoomtolausanne'); const zoomtolausanne = document.getElementById('zoomtolausanne');
zoomtolausanne.addEventListener('click', function() { zoomtolausanne.addEventListener('click', function() {
const feature = source.getFeatures()[1]; const feature = source.getFeatures()[1];
const point = /** @type {module:ol/geom/SimpleGeometry~SimpleGeometry} */ (feature.getGeometry()); const point = /** @type {import("../src/ol/geom/SimpleGeometry.js").default} */ (feature.getGeometry());
view.fit(point, {padding: [170, 50, 30, 150], minResolution: 50}); view.fit(point, {padding: [170, 50, 30, 150], minResolution: 50});
}, false); }, false);
const centerlausanne = document.getElementById('centerlausanne'); const centerlausanne = document.getElementById('centerlausanne');
centerlausanne.addEventListener('click', function() { centerlausanne.addEventListener('click', function() {
const feature = source.getFeatures()[1]; const feature = source.getFeatures()[1];
const point = /** @type {module:ol/geom/Point~Point} */ (feature.getGeometry()); const point = /** @type {import("../src/ol/geom/Point.js").default} */ (feature.getGeometry());
const size = /** @type {module:ol/size~Size} */ (map.getSize()); const size = map.getSize();
view.centerOn(point.getCoordinates(), size, [570, 500]); view.centerOn(point.getCoordinates(), size, [570, 500]);
}, false); }, false);

View File

@@ -20,8 +20,8 @@ const twoPi = 2 * Math.PI;
/** /**
* Convert an RGB pixel into an HCL pixel. * Convert an RGB pixel into an HCL pixel.
* @param {Array.<number>} pixel A pixel in RGB space. * @param {Array<number>} pixel A pixel in RGB space.
* @return {Array.<number>} A pixel in HCL space. * @return {Array<number>} A pixel in HCL space.
*/ */
function rgb2hcl(pixel) { function rgb2hcl(pixel) {
const red = rgb2xyz(pixel[0]); const red = rgb2xyz(pixel[0]);
@@ -55,8 +55,8 @@ function rgb2hcl(pixel) {
/** /**
* Convert an HCL pixel into an RGB pixel. * Convert an HCL pixel into an RGB pixel.
* @param {Array.<number>} pixel A pixel in HCL space. * @param {Array<number>} pixel A pixel in HCL space.
* @return {Array.<number>} A pixel in RGB space. * @return {Array<number>} A pixel in RGB space.
*/ */
function hcl2rgb(pixel) { function hcl2rgb(pixel) {
const h = pixel[0]; const h = pixel[0];

View File

@@ -1,4 +1,3 @@
import {inherits} from '../src/ol/util.js';
import Map from '../src/ol/Map.js'; import Map from '../src/ol/Map.js';
import View from '../src/ol/View.js'; import View from '../src/ol/View.js';
import {defaults as defaultControls, Control} from '../src/ol/control.js'; import {defaults as defaultControls, Control} from '../src/ol/control.js';
@@ -6,49 +5,38 @@ import TileLayer from '../src/ol/layer/Tile.js';
import OSM from '../src/ol/source/OSM.js'; import OSM from '../src/ol/source/OSM.js';
/**
* Define a namespace for the application.
*/
window.app = {};
const app = window.app;
// //
// Define rotate to north control. // Define rotate to north control.
// //
class RotateNorthControl extends Control {
/** /**
* @constructor * @param {Object=} opt_options Control options.
* @extends {module:ol/control/Control~Control} */
* @param {Object=} opt_options Control options. constructor(opt_options) {
*/ const options = opt_options || {};
app.RotateNorthControl = function(opt_options) {
const options = opt_options || {}; const button = document.createElement('button');
button.innerHTML = 'N';
const button = document.createElement('button'); const element = document.createElement('div');
button.innerHTML = 'N'; element.className = 'rotate-north ol-unselectable ol-control';
element.appendChild(button);
const this_ = this; super({
const handleRotateNorth = function() { element: element,
this_.getMap().getView().setRotation(0); target: options.target
}; });
button.addEventListener('click', handleRotateNorth, false); button.addEventListener('click', this.handleRotateNorth.bind(this), false);
button.addEventListener('touchstart', handleRotateNorth, false); }
const element = document.createElement('div'); handleRotateNorth() {
element.className = 'rotate-north ol-unselectable ol-control'; this.getMap().getView().setRotation(0);
element.appendChild(button); }
Control.call(this, { }
element: element,
target: options.target
});
};
inherits(app.RotateNorthControl, Control);
// //
@@ -57,12 +45,8 @@ inherits(app.RotateNorthControl, Control);
const map = new Map({ const map = new Map({
controls: defaultControls({ controls: defaultControls().extend([
attributionOptions: { new RotateNorthControl()
collapsible: false
}
}).extend([
new app.RotateNorthControl()
]), ]),
layers: [ layers: [
new TileLayer({ new TileLayer({

View File

@@ -1,4 +1,3 @@
import {inherits} from '../src/ol/util.js';
import Feature from '../src/ol/Feature.js'; import Feature from '../src/ol/Feature.js';
import Map from '../src/ol/Map.js'; import Map from '../src/ol/Map.js';
import View from '../src/ol/View.js'; import View from '../src/ol/View.js';
@@ -9,58 +8,47 @@ import {TileJSON, Vector as VectorSource} from '../src/ol/source.js';
import {Fill, Icon, Stroke, Style} from '../src/ol/style.js'; import {Fill, Icon, Stroke, Style} from '../src/ol/style.js';
/** class Drag extends PointerInteraction {
* Define a namespace for the application. constructor() {
*/ super({
const app = {}; handleDownEvent: handleDownEvent,
handleDragEvent: handleDragEvent,
handleMoveEvent: handleMoveEvent,
handleUpEvent: handleUpEvent
});
/**
* @type {import("../src/ol/coordinate.js").Coordinate}
* @private
*/
this.coordinate_ = null;
/**
* @type {string|undefined}
* @private
*/
this.cursor_ = 'pointer';
/**
* @type {Feature}
* @private
*/
this.feature_ = null;
/**
* @type {string|undefined}
* @private
*/
this.previousCursor_ = undefined;
}
}
/** /**
* @constructor * @param {import("../src/ol/MapBrowserEvent.js").default} evt Map browser event.
* @extends {module:ol/interaction/Pointer}
*/
app.Drag = function() {
PointerInteraction.call(this, {
handleDownEvent: app.Drag.prototype.handleDownEvent,
handleDragEvent: app.Drag.prototype.handleDragEvent,
handleMoveEvent: app.Drag.prototype.handleMoveEvent,
handleUpEvent: app.Drag.prototype.handleUpEvent
});
/**
* @type {module:ol/pixel~Pixel}
* @private
*/
this.coordinate_ = null;
/**
* @type {string|undefined}
* @private
*/
this.cursor_ = 'pointer';
/**
* @type {module:ol/Feature~Feature}
* @private
*/
this.feature_ = null;
/**
* @type {string|undefined}
* @private
*/
this.previousCursor_ = undefined;
};
inherits(app.Drag, PointerInteraction);
/**
* @param {module:ol/MapBrowserEvent~MapBrowserEvent} evt Map browser event.
* @return {boolean} `true` to start the drag sequence. * @return {boolean} `true` to start the drag sequence.
*/ */
app.Drag.prototype.handleDownEvent = function(evt) { function handleDownEvent(evt) {
const map = evt.map; const map = evt.map;
const feature = map.forEachFeatureAtPixel(evt.pixel, const feature = map.forEachFeatureAtPixel(evt.pixel,
@@ -74,13 +62,13 @@ app.Drag.prototype.handleDownEvent = function(evt) {
} }
return !!feature; return !!feature;
}; }
/** /**
* @param {module:ol/MapBrowserEvent~MapBrowserEvent} evt Map browser event. * @param {import("../src/ol/MapBrowserEvent.js").default} evt Map browser event.
*/ */
app.Drag.prototype.handleDragEvent = function(evt) { function handleDragEvent(evt) {
const deltaX = evt.coordinate[0] - this.coordinate_[0]; const deltaX = evt.coordinate[0] - this.coordinate_[0];
const deltaY = evt.coordinate[1] - this.coordinate_[1]; const deltaY = evt.coordinate[1] - this.coordinate_[1];
@@ -89,13 +77,13 @@ app.Drag.prototype.handleDragEvent = function(evt) {
this.coordinate_[0] = evt.coordinate[0]; this.coordinate_[0] = evt.coordinate[0];
this.coordinate_[1] = evt.coordinate[1]; this.coordinate_[1] = evt.coordinate[1];
}; }
/** /**
* @param {module:ol/MapBrowserEvent~MapBrowserEvent} evt Event. * @param {import("../src/ol/MapBrowserEvent.js").default} evt Event.
*/ */
app.Drag.prototype.handleMoveEvent = function(evt) { function handleMoveEvent(evt) {
if (this.cursor_) { if (this.cursor_) {
const map = evt.map; const map = evt.map;
const feature = map.forEachFeatureAtPixel(evt.pixel, const feature = map.forEachFeatureAtPixel(evt.pixel,
@@ -113,17 +101,17 @@ app.Drag.prototype.handleMoveEvent = function(evt) {
this.previousCursor_ = undefined; this.previousCursor_ = undefined;
} }
} }
}; }
/** /**
* @return {boolean} `false` to stop the drag sequence. * @return {boolean} `false` to stop the drag sequence.
*/ */
app.Drag.prototype.handleUpEvent = function() { function handleUpEvent() {
this.coordinate_ = null; this.coordinate_ = null;
this.feature_ = null; this.feature_ = null;
return false; return false;
}; }
const pointFeature = new Feature(new Point([0, 0])); const pointFeature = new Feature(new Point([0, 0]));
@@ -137,7 +125,7 @@ const polygonFeature = new Feature(
const map = new Map({ const map = new Map({
interactions: defaultInteractions().extend([new app.Drag()]), interactions: defaultInteractions().extend([new Drag()]),
layers: [ layers: [
new TileLayer({ new TileLayer({
source: new TileJSON({ source: new TileJSON({
@@ -149,13 +137,13 @@ const map = new Map({
features: [pointFeature, lineFeature, polygonFeature] features: [pointFeature, lineFeature, polygonFeature]
}), }),
style: new Style({ style: new Style({
image: new Icon(/** @type {module:ol/style/Icon~Options} */ ({ image: new Icon({
anchor: [0.5, 46], anchor: [0.5, 46],
anchorXUnits: 'fraction', anchorXUnits: 'fraction',
anchorYUnits: 'pixels', anchorYUnits: 'pixels',
opacity: 0.95, opacity: 0.95,
src: 'data/icon.png' src: 'data/icon.png'
})), }),
stroke: new Stroke({ stroke: new Stroke({
width: 3, width: 3,
color: [255, 0, 0, 1] 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,7 +3,7 @@ layout: example.html
title: d3 Integration title: d3 Integration
shortdesc: Example of using OpenLayers and d3 together. shortdesc: Example of using OpenLayers and d3 together.
docs: > 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" tags: "d3"
resources: resources:
- https://unpkg.com/d3@4.12.0/build/d3.js - https://unpkg.com/d3@4.12.0/build/d3.js

122
examples/d3.js vendored
View File

@@ -1,10 +1,70 @@
import Map from '../src/ol/Map.js'; import Map from '../src/ol/Map.js';
import View from '../src/ol/View.js'; import View from '../src/ol/View.js';
import {getWidth, getCenter} from '../src/ol/extent.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';
import {fromLonLat, toLonLat} from '../src/ol/proj.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({ const map = new Map({
layers: [ layers: [
@@ -26,62 +86,10 @@ const map = new Map({
* Load the topojson data and create an ol/layer/Image for that data. * Load the topojson data and create an ol/layer/Image for that data.
*/ */
d3.json('data/topojson/us.json', function(error, us) { d3.json('data/topojson/us.json', function(error, us) {
const features = topojson.feature(us, us.objects.counties);
/** const layer = new CanvasLayer({
* This function uses d3 to render the topojson features to a canvas. features: topojson.feature(us, us.objects.counties)
* @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'
})
}); });
map.addLayer(layer); map.addLayer(layer);
}); });

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

View File

@@ -8,7 +8,7 @@ docs: >
normalize the events from the browser. normalize the events from the browser.
tags: "device, orientation, gyronorm" tags: "device, orientation, gyronorm"
resources: resources:
- https://cdn.rawgit.com/dorukeker/gyronorm.js/v2.0.6/dist/gyronorm.complete.min.js - https://unpkg.com/gyronorm@2.0.6/dist/gyronorm.complete.min.js
--- ---
<div id="map" class="map"></div> <div id="map" class="map"></div>
<p> <p>

View File

@@ -1,6 +1,5 @@
import Map from '../src/ol/Map.js'; import Map from '../src/ol/Map.js';
import View from '../src/ol/View.js'; import View from '../src/ol/View.js';
import {defaults as defaultControls} from '../src/ol/control.js';
import TileLayer from '../src/ol/layer/Tile.js'; import TileLayer from '../src/ol/layer/Tile.js';
import {toRadians} from '../src/ol/math.js'; import {toRadians} from '../src/ol/math.js';
import OSM from '../src/ol/source/OSM.js'; import OSM from '../src/ol/source/OSM.js';
@@ -16,11 +15,6 @@ const map = new Map({
}) })
], ],
target: 'map', target: 'map',
controls: defaultControls({
attributionOptions: {
collapsible: false
}
}),
view: view view: view
}); });
@@ -35,7 +29,7 @@ gn.init().then(function() {
gn.start(function(event) { gn.start(function(event) {
const center = view.getCenter(); const center = view.getCenter();
const resolution = view.getResolution(); const resolution = view.getResolution();
const alpha = toRadians(event.do.beta); const alpha = toRadians(event.do.alpha);
const beta = toRadians(event.do.beta); const beta = toRadians(event.do.beta);
const gamma = toRadians(event.do.gamma); const gamma = toRadians(event.do.gamma);

View File

@@ -3,7 +3,7 @@ layout: example.html
title: Drag-and-Drop Image Vector title: Drag-and-Drop Image Vector
shortdesc: Example of using the drag-and-drop interaction with image vector rendering. shortdesc: Example of using the drag-and-drop interaction with image vector rendering.
docs: > 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" tags: "drag-and-drop-image-vector, gpx, geojson, igc, kml, topojson, vector, image"
cloak: cloak:
- key: As1HiMj1PvLPlqc_gtM7AqZfBL8ZL3VrjaS3zIb22Uvb9WKhuJObROC-qUpa81U5 - key: As1HiMj1PvLPlqc_gtM7AqZfBL8ZL3VrjaS3zIb22Uvb9WKhuJObROC-qUpa81U5

View File

@@ -2,76 +2,8 @@ import Map from '../src/ol/Map.js';
import View from '../src/ol/View.js'; import View from '../src/ol/View.js';
import {GPX, GeoJSON, IGC, KML, TopoJSON} from '../src/ol/format.js'; import {GPX, GeoJSON, IGC, KML, TopoJSON} from '../src/ol/format.js';
import {defaults as defaultInteractions, DragAndDrop} from '../src/ol/interaction.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'; import {BingMaps, Vector as VectorSource} from '../src/ol/source.js';
import {Circle as CircleStyle, Fill, Stroke, Style} from '../src/ol/style.js';
const defaultStyle = {
'Point': new Style({
image: new CircleStyle({
fill: new Fill({
color: 'rgba(255,255,0,0.5)'
}),
radius: 5,
stroke: new Stroke({
color: '#ff0',
width: 1
})
})
}),
'LineString': new Style({
stroke: new Stroke({
color: '#f00',
width: 3
})
}),
'Polygon': new Style({
fill: new Fill({
color: 'rgba(0,255,255,0.5)'
}),
stroke: new Stroke({
color: '#0ff',
width: 1
})
}),
'MultiPoint': new Style({
image: new CircleStyle({
fill: new Fill({
color: 'rgba(255,0,255,0.5)'
}),
radius: 5,
stroke: new Stroke({
color: '#f0f',
width: 1
})
})
}),
'MultiLineString': new Style({
stroke: new Stroke({
color: '#0f0',
width: 3
})
}),
'MultiPolygon': new Style({
fill: new Fill({
color: 'rgba(0,0,255,0.5)'
}),
stroke: new Stroke({
color: '#00f',
width: 1
})
})
};
const styleFunction = function(feature, resolution) {
const featureStyleFunction = feature.getStyleFunction();
if (featureStyleFunction) {
return featureStyleFunction.call(feature, resolution);
} else {
return defaultStyle[feature.getGeometry().getType()];
}
};
const dragAndDropInteraction = new DragAndDrop({ const dragAndDropInteraction = new DragAndDrop({
formatConstructors: [ formatConstructors: [
@@ -104,10 +36,8 @@ dragAndDropInteraction.on('addfeatures', function(event) {
const vectorSource = new VectorSource({ const vectorSource = new VectorSource({
features: event.features features: event.features
}); });
map.addLayer(new VectorLayer({ map.addLayer(new VectorImageLayer({
renderMode: 'image', source: vectorSource
source: vectorSource,
style: styleFunction
})); }));
map.getView().fit(vectorSource.getExtent()); map.getView().fit(vectorSource.getExtent());
}); });

View File

@@ -4,74 +4,6 @@ import {GPX, GeoJSON, IGC, KML, TopoJSON} from '../src/ol/format.js';
import {defaults as defaultInteractions, DragAndDrop} from '../src/ol/interaction.js'; import {defaults as defaultInteractions, DragAndDrop} from '../src/ol/interaction.js';
import {Tile as TileLayer, Vector as VectorLayer} from '../src/ol/layer.js'; import {Tile as TileLayer, Vector as VectorLayer} from '../src/ol/layer.js';
import {BingMaps, Vector as VectorSource} from '../src/ol/source.js'; import {BingMaps, Vector as VectorSource} from '../src/ol/source.js';
import {Circle as CircleStyle, Fill, Stroke, Style} from '../src/ol/style.js';
const defaultStyle = {
'Point': new Style({
image: new CircleStyle({
fill: new Fill({
color: 'rgba(255,255,0,0.5)'
}),
radius: 5,
stroke: new Stroke({
color: '#ff0',
width: 1
})
})
}),
'LineString': new Style({
stroke: new Stroke({
color: '#f00',
width: 3
})
}),
'Polygon': new Style({
fill: new Fill({
color: 'rgba(0,255,255,0.5)'
}),
stroke: new Stroke({
color: '#0ff',
width: 1
})
}),
'MultiPoint': new Style({
image: new CircleStyle({
fill: new Fill({
color: 'rgba(255,0,255,0.5)'
}),
radius: 5,
stroke: new Stroke({
color: '#f0f',
width: 1
})
})
}),
'MultiLineString': new Style({
stroke: new Stroke({
color: '#0f0',
width: 3
})
}),
'MultiPolygon': new Style({
fill: new Fill({
color: 'rgba(0,0,255,0.5)'
}),
stroke: new Stroke({
color: '#00f',
width: 1
})
})
};
const styleFunction = function(feature, resolution) {
const featureStyleFunction = feature.getStyleFunction();
if (featureStyleFunction) {
return featureStyleFunction.call(feature, resolution);
} else {
return defaultStyle[feature.getGeometry().getType()];
}
};
const dragAndDropInteraction = new DragAndDrop({ const dragAndDropInteraction = new DragAndDrop({
formatConstructors: [ formatConstructors: [
@@ -105,8 +37,7 @@ dragAndDropInteraction.on('addfeatures', function(event) {
features: event.features features: event.features
}); });
map.addLayer(new VectorLayer({ map.addLayer(new VectorLayer({
source: vectorSource, source: vectorSource
style: styleFunction
})); }));
map.getView().fit(vectorSource.getExtent()); map.getView().fit(vectorSource.getExtent());
}); });

View File

@@ -17,6 +17,7 @@ tags: "draw, edit, freehand, vector"
<form class="form-inline"> <form class="form-inline">
<label>Shape type &nbsp;</label> <label>Shape type &nbsp;</label>
<select id="type"> <select id="type">
<option value="Circle">Circle</option>
<option value="Square">Square</option> <option value="Square">Square</option>
<option value="Box">Box</option> <option value="Box">Box</option>
<option value="Star">Star</option> <option value="Star">Star</option>

View File

@@ -40,9 +40,6 @@ function addInteraction() {
} else if (value === 'Star') { } else if (value === 'Star') {
value = 'Circle'; value = 'Circle';
geometryFunction = function(coordinates, geometry) { geometryFunction = function(coordinates, geometry) {
if (!geometry) {
geometry = new Polygon(null);
}
const center = coordinates[0]; const center = coordinates[0];
const last = coordinates[1]; const last = coordinates[1];
const dx = center[0] - last[0]; const dx = center[0] - last[0];
@@ -59,7 +56,11 @@ function addInteraction() {
newCoordinates.push([center[0] + offsetX, center[1] + offsetY]); newCoordinates.push([center[0] + offsetX, center[1] + offsetY]);
} }
newCoordinates.push(newCoordinates[0].slice()); newCoordinates.push(newCoordinates[0].slice());
geometry.setCoordinates([newCoordinates]); if (!geometry) {
geometry = new Polygon([newCoordinates]);
} else {
geometry.setCoordinates([newCoordinates]);
}
return geometry; return geometry;
}; };
} }

View File

@@ -4,14 +4,14 @@ import {MultiPoint, Point} from '../src/ol/geom.js';
import TileLayer from '../src/ol/layer/Tile.js'; import TileLayer from '../src/ol/layer/Tile.js';
import OSM from '../src/ol/source/OSM.js'; import OSM from '../src/ol/source/OSM.js';
import {Circle as CircleStyle, Fill, Stroke, Style} from '../src/ol/style.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({ const map = new Map({
layers: [ layers: [tileLayer],
new TileLayer({
source: new OSM()
})
],
target: 'map', target: 'map',
view: new View({ view: new View({
center: [0, 0], center: [0, 0],
@@ -22,7 +22,6 @@ const map = new Map({
const imageStyle = new Style({ const imageStyle = new Style({
image: new CircleStyle({ image: new CircleStyle({
radius: 5, radius: 5,
snapToPixel: false,
fill: new Fill({color: 'yellow'}), fill: new Fill({color: 'yellow'}),
stroke: new Stroke({color: 'red', width: 1}) stroke: new Stroke({color: 'red', width: 1})
}) })
@@ -31,7 +30,6 @@ const imageStyle = new Style({
const headInnerImageStyle = new Style({ const headInnerImageStyle = new Style({
image: new CircleStyle({ image: new CircleStyle({
radius: 2, radius: 2,
snapToPixel: false,
fill: new Fill({color: 'blue'}) fill: new Fill({color: 'blue'})
}) })
}); });
@@ -39,7 +37,6 @@ const headInnerImageStyle = new Style({
const headOuterImageStyle = new Style({ const headOuterImageStyle = new Style({
image: new CircleStyle({ image: new CircleStyle({
radius: 5, radius: 5,
snapToPixel: false,
fill: new Fill({color: 'black'}) fill: new Fill({color: 'black'})
}) })
}); });
@@ -49,8 +46,8 @@ const omegaTheta = 30000; // Rotation period in ms
const R = 7e6; const R = 7e6;
const r = 2e6; const r = 2e6;
const p = 2e6; const p = 2e6;
map.on('postcompose', function(event) { tileLayer.on('postrender', function(event) {
const vectorContext = event.vectorContext; const vectorContext = getVectorContext(event);
const frameState = event.frameState; const frameState = event.frameState;
const theta = 2 * Math.PI * frameState.time / omegaTheta; const theta = 2 * Math.PI * frameState.time / omegaTheta;
const coordinates = []; const coordinates = [];

View File

@@ -3,12 +3,12 @@ layout: example.html
title: Map Export title: Map Export
shortdesc: Example of exporting a map as a PNG image. shortdesc: Example of exporting a map as a PNG image.
docs: > docs: >
Example of exporting a map as a PNG image. This example requires a browser Example of exporting a map as a PNG image. This example use the <a href="https://www.npmjs.com/package/dom-to-image-more">dom-to-image-more</a>
that supports <a href="https://developer.mozilla.org/de/docs/Web/API/HTMLCanvasElement/toBlob#Browser_compatibility"> library.
<code>canvas.toBlob()</code></a>.
tags: "export, png, openstreetmap" tags: "export, png, openstreetmap"
resources: resources:
- https://cdnjs.cloudflare.com/ajax/libs/FileSaver.js/1.3.3/FileSaver.min.js - https://unpkg.com/dom-to-image-more@2.7.1/dist/dom-to-image-more.min.js
--- ---
<div id="map" class="map"></div> <div id="map" class="map"></div>
<a id="export-png" class="btn btn-default"><i class="fa fa-download"></i> Download PNG</a> <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,6 +1,5 @@
import Map from '../src/ol/Map.js'; import Map from '../src/ol/Map.js';
import View from '../src/ol/View.js'; import View from '../src/ol/View.js';
import {defaults as defaultControls} from '../src/ol/control.js';
import GeoJSON from '../src/ol/format/GeoJSON.js'; import GeoJSON from '../src/ol/format/GeoJSON.js';
import {Tile as TileLayer, Vector as VectorLayer} from '../src/ol/layer.js'; import {Tile as TileLayer, Vector as VectorLayer} from '../src/ol/layer.js';
import {OSM, Vector as VectorSource} from '../src/ol/source.js'; import {OSM, Vector as VectorSource} from '../src/ol/source.js';
@@ -18,11 +17,6 @@ const map = new Map({
}) })
], ],
target: 'map', target: 'map',
controls: defaultControls({
attributionOptions: {
collapsible: false
}
}),
view: new View({ view: new View({
center: [0, 0], center: [0, 0],
zoom: 2 zoom: 2
@@ -30,15 +24,13 @@ const map = new Map({
}); });
document.getElementById('export-png').addEventListener('click', function() { document.getElementById('export-png').addEventListener('click', function() {
map.once('postcompose', function(event) { map.once('rendercomplete', function() {
const canvas = event.context.canvas; domtoimage.toPng(map.getViewport().querySelector('.ol-layers'))
if (navigator.msSaveBlob) { .then(function(dataURL) {
navigator.msSaveBlob(canvas.msToBlob(), 'map.png'); const link = document.getElementById('image-download');
} else { link.href = dataURL;
canvas.toBlob(function(blob) { link.click();
saveAs(blob, 'map.png');
}); });
}
}); });
map.renderSync(); map.renderSync();
}); });

View File

@@ -7,6 +7,7 @@ docs: >
tags: "export, pdf, openstreetmap" tags: "export, pdf, openstreetmap"
resources: resources:
- https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.2.61/jspdf.min.js - https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.2.61/jspdf.min.js
- https://unpkg.com/dom-to-image-more@2.7.1/dist/dom-to-image-more.min.js
--- ---
<div class="row-fluid"> <div class="row-fluid">
<div class="span12"> <div class="span12">

View File

@@ -1,9 +1,7 @@
import Map from '../src/ol/Map.js'; import Map from '../src/ol/Map.js';
import View from '../src/ol/View.js'; import View from '../src/ol/View.js';
import {defaults as defaultControls} from '../src/ol/control.js';
import WKT from '../src/ol/format/WKT.js'; import WKT from '../src/ol/format/WKT.js';
import {Tile as TileLayer, Vector as VectorLayer} from '../src/ol/layer.js'; import {Tile as TileLayer, Vector as VectorLayer} from '../src/ol/layer.js';
import {unByKey} from '../src/ol/Observable.js';
import {OSM, Vector as VectorSource} from '../src/ol/source.js'; import {OSM, Vector as VectorSource} from '../src/ol/source.js';
const raster = new TileLayer({ const raster = new TileLayer({
@@ -27,11 +25,6 @@ const vector = new VectorLayer({
const map = new Map({ const map = new Map({
layers: [raster, vector], layers: [raster, vector],
target: 'map', target: 'map',
controls: defaultControls({
attributionOptions: {
collapsible: false
}
}),
view: new View({ view: new View({
center: [0, 0], center: [0, 0],
zoom: 2 zoom: 2
@@ -48,9 +41,6 @@ const dims = {
a5: [210, 148] a5: [210, 148]
}; };
let loading = 0;
let loaded = 0;
const exportButton = document.getElementById('export-pdf'); const exportButton = document.getElementById('export-pdf');
exportButton.addEventListener('click', function() { exportButton.addEventListener('click', function() {
@@ -63,60 +53,25 @@ exportButton.addEventListener('click', function() {
const dim = dims[format]; const dim = dims[format];
const width = Math.round(dim[0] * resolution / 25.4); const width = Math.round(dim[0] * resolution / 25.4);
const height = Math.round(dim[1] * 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); const extent = map.getView().calculateExtent(size);
const source = raster.getSource(); map.once('rendercomplete', function() {
domtoimage.toJpeg(map.getViewport().querySelector('.ol-layers')).then(function(dataUrl) {
const tileLoadStart = function() { const pdf = new jsPDF('landscape', undefined, format);
++loading; pdf.addImage(dataUrl, 'JPEG', 0, 0, dim[0], dim[1]);
}; pdf.save('map.pdf');
// Reset original map size
let timer; map.setSize(size);
let keys = []; map.getView().fit(extent, {size});
exportButton.disabled = false;
function tileLoadEndFactory(canvas) { document.body.style.cursor = 'auto';
return () => { });
++loaded;
if (timer) {
clearTimeout(timer);
timer = null;
}
if (loading === loaded) {
timer = window.setTimeout(() => {
loading = 0;
loaded = 0;
const data = canvas.toDataURL('image/jpeg');
const pdf = new jsPDF('landscape', undefined, format);
pdf.addImage(data, 'JPEG', 0, 0, dim[0], dim[1]);
pdf.save('map.pdf');
keys.forEach(unByKey);
keys = [];
map.setSize(size);
map.getView().fit(extent, {size});
map.renderSync();
exportButton.disabled = false;
document.body.style.cursor = 'auto';
}, 500);
}
};
}
map.once('postcompose', function(event) {
const canvas = event.context.canvas;
const tileLoadEnd = tileLoadEndFactory(canvas);
keys = [
source.on('tileloadstart', tileLoadStart),
source.on('tileloadend', tileLoadEnd),
source.on('tileloaderror', tileLoadEnd)
];
tileLoadEnd();
}); });
// Set print size
const printSize = [width, height]; const printSize = [width, height];
map.setSize(printSize); map.setSize(printSize);
map.getView().fit(extent, {size: printSize}); map.getView().fit(extent, {size: printSize});
loaded = -1;
map.renderSync();
}, false); }, false);

View File

@@ -3,7 +3,7 @@ layout: example.html
title: Custom Animation title: Custom Animation
shortdesc: Demonstrates how to animate features. shortdesc: Demonstrates how to animate features.
docs: > 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 animate features. Here we choose to do a flash animation each time a feature
is added to the layer. is added to the layer.
tags: "animation, vector, feature, flash" tags: "animation, vector, feature, flash"

View File

@@ -2,28 +2,22 @@ import Feature from '../src/ol/Feature.js';
import Map from '../src/ol/Map.js'; import Map from '../src/ol/Map.js';
import {unByKey} from '../src/ol/Observable.js'; import {unByKey} from '../src/ol/Observable.js';
import View from '../src/ol/View.js'; import View from '../src/ol/View.js';
import {defaults as defaultControls} from '../src/ol/control.js';
import {easeOut} from '../src/ol/easing.js'; import {easeOut} from '../src/ol/easing.js';
import Point from '../src/ol/geom/Point.js'; import Point from '../src/ol/geom/Point.js';
import {Tile as TileLayer, Vector as VectorLayer} from '../src/ol/layer.js'; import {Tile as TileLayer, Vector as VectorLayer} from '../src/ol/layer.js';
import {fromLonLat} from '../src/ol/proj.js'; import {fromLonLat} from '../src/ol/proj.js';
import {OSM, Vector as VectorSource} from '../src/ol/source.js'; import {OSM, Vector as VectorSource} from '../src/ol/source.js';
import {Circle as CircleStyle, Stroke, Style} from '../src/ol/style.js'; import {Circle as CircleStyle, Stroke, Style} from '../src/ol/style.js';
import {getVectorContext} from '../src/ol/render.js';
const tileLayer = new TileLayer({
source: new OSM({
wrapX: false
})
});
const map = new Map({ const map = new Map({
layers: [ layers: [tileLayer],
new TileLayer({
source: new OSM({
wrapX: false
})
})
],
controls: defaultControls({
attributionOptions: {
collapsible: false
}
}),
target: 'map', target: 'map',
view: new View({ view: new View({
center: [0, 0], center: [0, 0],
@@ -50,10 +44,10 @@ function addRandomFeature() {
const duration = 3000; const duration = 3000;
function flash(feature) { function flash(feature) {
const start = new Date().getTime(); const start = new Date().getTime();
const listenerKey = map.on('postcompose', animate); const listenerKey = tileLayer.on('postrender', animate);
function animate(event) { function animate(event) {
const vectorContext = event.vectorContext; const vectorContext = getVectorContext(event);
const frameState = event.frameState; const frameState = event.frameState;
const flashGeom = feature.getGeometry().clone(); const flashGeom = feature.getGeometry().clone();
const elapsed = frameState.time - start; const elapsed = frameState.time - start;
@@ -65,7 +59,6 @@ function flash(feature) {
const style = new Style({ const style = new Style({
image: new CircleStyle({ image: new CircleStyle({
radius: radius, radius: radius,
snapToPixel: false,
stroke: new Stroke({ stroke: new Stroke({
color: 'rgba(255, 0, 0, ' + opacity + ')', color: 'rgba(255, 0, 0, ' + opacity + ')',
width: 0.25 + opacity width: 0.25 + opacity
@@ -79,7 +72,7 @@ function flash(feature) {
unByKey(listenerKey); unByKey(listenerKey);
return; return;
} }
// tell OpenLayers to continue postcompose animation // tell OpenLayers to continue postrender animation
map.render(); map.render();
} }
} }

View File

@@ -3,10 +3,10 @@ layout: example.html
title: Marker Animation title: Marker Animation
shortdesc: Demonstrates how to move a feature along a line. shortdesc: Demonstrates how to move a feature along a line.
docs: > docs: >
This example shows how to use <b>postcompose</b> and <b>vectorContext</b> to 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 animate a marker feature along a line. In this example an encoded polyline
is being used. is being used.
tags: "animation, feature, postcompose, polyline" tags: "animation, feature, postrender, polyline"
cloak: cloak:
- key: As1HiMj1PvLPlqc_gtM7AqZfBL8ZL3VrjaS3zIb22Uvb9WKhuJObROC-qUpa81U5 - key: As1HiMj1PvLPlqc_gtM7AqZfBL8ZL3VrjaS3zIb22Uvb9WKhuJObROC-qUpa81U5
value: Your Bing Maps Key from http://www.bingmapsportal.com/ here 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 BingMaps from '../src/ol/source/BingMaps.js';
import VectorSource from '../src/ol/source/Vector.js'; import VectorSource from '../src/ol/source/Vector.js';
import {Circle as CircleStyle, Fill, Icon, Stroke, Style} from '../src/ol/style.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. // This long string is placed here due to jsFiddle limitations.
// It is usually loaded with AJAX. // It is usually loaded with AJAX.
@@ -52,7 +53,7 @@ const polyline = [
'~@ym@yjA??a@cFd@kBrCgDbAUnAcBhAyAdk@et@??kF}D??OL' '~@ym@yjA??a@cFd@kBrCgDbAUnAcBhAyAdk@et@??kF}D??OL'
].join(''); ].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 factor: 1e6
}).readGeometry(polyline, { }).readGeometry(polyline, {
dataProjection: 'EPSG:4326', dataProjection: 'EPSG:4326',
@@ -94,7 +95,6 @@ const styles = {
'geoMarker': new Style({ 'geoMarker': new Style({
image: new CircleStyle({ image: new CircleStyle({
radius: 7, radius: 7,
snapToPixel: false,
fill: new Fill({color: 'black'}), fill: new Fill({color: 'black'}),
stroke: new Stroke({ stroke: new Stroke({
color: 'white', width: 2 color: 'white', width: 2
@@ -124,7 +124,6 @@ const vectorLayer = new VectorLayer({
const center = [-5639523.95, -3501274.52]; const center = [-5639523.95, -3501274.52];
const map = new Map({ const map = new Map({
target: document.getElementById('map'), target: document.getElementById('map'),
loadTilesWhileAnimating: true,
view: new View({ view: new View({
center: center, center: center,
zoom: 10, zoom: 10,
@@ -143,7 +142,7 @@ const map = new Map({
}); });
const moveFeature = function(event) { const moveFeature = function(event) {
const vectorContext = event.vectorContext; const vectorContext = getVectorContext(event);
const frameState = event.frameState; const frameState = event.frameState;
if (animating) { if (animating) {
@@ -161,7 +160,7 @@ const moveFeature = function(event) {
const feature = new Feature(currentPoint); const feature = new Feature(currentPoint);
vectorContext.drawFeature(feature, styles.geoMarker); vectorContext.drawFeature(feature, styles.geoMarker);
} }
// tell OpenLayers to continue the postcompose animation // tell OpenLayers to continue the postrender animation
map.render(); map.render();
}; };
@@ -177,7 +176,7 @@ function startAnimation() {
geoMarker.setStyle(null); geoMarker.setStyle(null);
// just in case you pan somewhere else // just in case you pan somewhere else
map.getView().setCenter(center); map.getView().setCenter(center);
map.on('postcompose', moveFeature); vectorLayer.on('postrender', moveFeature);
map.render(); map.render();
} }
} }
@@ -192,10 +191,10 @@ function stopAnimation(ended) {
// if animation cancelled set the marker at the beginning // if animation cancelled set the marker at the beginning
const coord = ended ? routeCoords[routeLength - 1] : routeCoords[0]; const coord = ended ? routeCoords[routeLength - 1] : routeCoords[0];
/** @type {module:ol/geom/Point~Point} */ (geoMarker.getGeometry()) const geometry = /** @type {import("../src/ol/geom/Point").default} */ (geoMarker.getGeometry());
.setCoordinates(coord); geometry.setCoordinates(coord);
//remove listener //remove listener
map.un('postcompose', moveFeature); vectorLayer.un('postrender', moveFeature);
} }
startButton.addEventListener('click', startAnimation, false); startButton.addEventListener('click', startAnimation, false);

View File

@@ -1,12 +1,12 @@
--- ---
layout: example.html layout: example.html
title: Flight Animation title: Flight Animation
shortdesc: Demonstrates how to animate flights with ´postcompose´. shortdesc: Demonstrates how to animate flights with ´postrender´.
docs: > 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 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 <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 <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/"> set from the <a href="https://www.mapbox.com/mapbox.js/example/v1.0.0/animating-flight-paths/">
Mapbox.js documentation</a> is used). 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 Stamen from '../src/ol/source/Stamen.js';
import VectorSource from '../src/ol/source/Vector.js'; import VectorSource from '../src/ol/source/Vector.js';
import {Stroke, Style} from '../src/ol/style.js'; import {Stroke, Style} from '../src/ol/style.js';
import {getVectorContext} from '../src/ol/render.js';
const tileLayer = new TileLayer({
source: new Stamen({
layer: 'toner'
})
});
const map = new Map({ const map = new Map({
layers: [ layers: [
new TileLayer({ tileLayer
source: new Stamen({
layer: 'toner'
})
})
], ],
target: 'map', target: 'map',
view: new View({ view: new View({
@@ -63,7 +66,7 @@ const flightsSource = new VectorSource({
addLater(feature, i * 50); addLater(feature, i * 50);
} }
} }
map.on('postcompose', animateFlights); tileLayer.on('postrender', animateFlights);
}); });
} }
}); });
@@ -85,7 +88,7 @@ map.addLayer(flightsLayer);
const pointsPerMs = 0.1; const pointsPerMs = 0.1;
function animateFlights(event) { function animateFlights(event) {
const vectorContext = event.vectorContext; const vectorContext = getVectorContext(event);
const frameState = event.frameState; const frameState = event.frameState;
vectorContext.setStyle(style); vectorContext.setStyle(style);

View File

@@ -77,7 +77,7 @@ fetch(url).then(function(response) {
tileLoadFunction: function(tile) { tileLoadFunction: function(tile) {
const format = tile.getFormat(); const format = tile.getFormat();
const tileCoord = tile.getTileCoord(); const tileCoord = tile.getTileCoord();
const data = tileIndex.getTile(tileCoord[0], tileCoord[1], -tileCoord[2] - 1); const data = tileIndex.getTile(tileCoord[0], tileCoord[1], tileCoord[2]);
const features = format.readFeatures( const features = format.readFeatures(
JSON.stringify({ JSON.stringify({

View File

@@ -1,7 +1,6 @@
import Feature from '../src/ol/Feature.js'; import Feature from '../src/ol/Feature.js';
import Map from '../src/ol/Map.js'; import Map from '../src/ol/Map.js';
import View from '../src/ol/View.js'; import View from '../src/ol/View.js';
import {defaults as defaultControls} from '../src/ol/control.js';
import GeoJSON from '../src/ol/format/GeoJSON.js'; import GeoJSON from '../src/ol/format/GeoJSON.js';
import Circle from '../src/ol/geom/Circle.js'; import Circle from '../src/ol/geom/Circle.js';
import {Tile as TileLayer, Vector as VectorLayer} from '../src/ol/layer.js'; import {Tile as TileLayer, Vector as VectorLayer} from '../src/ol/layer.js';
@@ -174,11 +173,6 @@ const map = new Map({
vectorLayer vectorLayer
], ],
target: 'map', target: 'map',
controls: defaultControls({
attributionOptions: {
collapsible: false
}
}),
view: new View({ view: new View({
center: [0, 0], center: [0, 0],
zoom: 2 zoom: 2

View File

@@ -44,7 +44,7 @@ tags: "fullscreen, geolocation, orientation, mobile"
<button id="geolocate">Geolocate Me!</button> <button id="geolocate">Geolocate Me!</button>
<button id="simulate">Simulate</button> <button id="simulate">Simulate</button>
</div> </div>
<script src="./resources/common.js" type="text/javascript"></script> <script src="common.js"></script>
<script src="loader.js?id=geolocation-orientation" type="text/javascript"></script> <script src="geolocation-orientation.js"></script>
</body> </body>
</html> </html>

View File

@@ -2,7 +2,6 @@ import Geolocation from '../src/ol/Geolocation.js';
import Map from '../src/ol/Map.js'; import Map from '../src/ol/Map.js';
import Overlay from '../src/ol/Overlay.js'; import Overlay from '../src/ol/Overlay.js';
import View from '../src/ol/View.js'; import View from '../src/ol/View.js';
import {defaults as defaultControls} from '../src/ol/control.js';
import LineString from '../src/ol/geom/LineString.js'; import LineString from '../src/ol/geom/LineString.js';
import TileLayer from '../src/ol/layer/Tile.js'; import TileLayer from '../src/ol/layer/Tile.js';
import {fromLonLat} from '../src/ol/proj.js'; import {fromLonLat} from '../src/ol/proj.js';
@@ -14,19 +13,14 @@ const view = new View({
zoom: 19 zoom: 19
}); });
const tileLayer = new TileLayer({
source: new OSM()
});
// creating the map // creating the map
const map = new Map({ const map = new Map({
layers: [ layers: [tileLayer],
new TileLayer({
source: new OSM()
})
],
target: 'map', target: 'map',
controls: defaultControls({
attributionOptions: {
collapsible: false
}
}),
view: view view: view
}); });
@@ -42,7 +36,7 @@ map.addOverlay(marker);
// LineString to store the different geolocation positions. This LineString // LineString to store the different geolocation positions. This LineString
// is time aware. // is time aware.
// The Z dimension is actually used to store the rotation (heading). // 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 // Geolocation Control
const geolocation = new Geolocation({ const geolocation = new Geolocation({
@@ -161,7 +155,7 @@ const geolocateBtn = document.getElementById('geolocate');
geolocateBtn.addEventListener('click', function() { geolocateBtn.addEventListener('click', function() {
geolocation.setTracking(true); // Start position tracking geolocation.setTracking(true); // Start position tracking
map.on('postcompose', updateView); tileLayer.on('postrender', updateView);
map.render(); map.render();
disableButtons(); disableButtons();
@@ -203,7 +197,7 @@ simulateBtn.addEventListener('click', function() {
} }
geolocate(); geolocate();
map.on('postcompose', updateView); tileLayer.on('postrender', updateView);
map.render(); map.render();
disableButtons(); disableButtons();

View File

@@ -2,7 +2,6 @@ import Feature from '../src/ol/Feature.js';
import Geolocation from '../src/ol/Geolocation.js'; import Geolocation from '../src/ol/Geolocation.js';
import Map from '../src/ol/Map.js'; import Map from '../src/ol/Map.js';
import View from '../src/ol/View.js'; import View from '../src/ol/View.js';
import {defaults as defaultControls} from '../src/ol/control.js';
import Point from '../src/ol/geom/Point.js'; import Point from '../src/ol/geom/Point.js';
import {Tile as TileLayer, Vector as VectorLayer} from '../src/ol/layer.js'; import {Tile as TileLayer, Vector as VectorLayer} from '../src/ol/layer.js';
import {OSM, Vector as VectorSource} from '../src/ol/source.js'; import {OSM, Vector as VectorSource} from '../src/ol/source.js';
@@ -20,11 +19,6 @@ const map = new Map({
}) })
], ],
target: 'map', target: 'map',
controls: defaultControls({
attributionOptions: {
collapsible: false
}
}),
view: view view: view
}); });

View File

@@ -1,9 +1,9 @@
--- ---
layout: example.html layout: example.html
title: Map Graticule 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: > 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" tags: "graticule"
--- ---
<div id="map" class="map"></div> <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 Map from '../src/ol/Map.js';
import View from '../src/ol/View.js'; import View from '../src/ol/View.js';
import TileLayer from '../src/ol/layer/Tile.js'; import TileLayer from '../src/ol/layer/Tile.js';
@@ -13,6 +13,16 @@ const map = new Map({
source: new OSM({ source: new OSM({
wrapX: false 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', target: 'map',
@@ -21,16 +31,3 @@ const map = new Map({
zoom: 5 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

@@ -43,11 +43,14 @@ const map = new Map({
}) })
}); });
const blurHandler = function() {
blur.addEventListener('input', function() {
vector.setBlur(parseInt(blur.value, 10)); 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)); 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({ const map = new Map({
layers: layers, layers: layers,
// Improve user experience by loading tiles while dragging/zooming. Will make
// zooming choppy on mobile or slow devices.
loadTilesWhileInteracting: true,
target: 'map', target: 'map',
view: new View({ view: new View({
center: [921371.9389, 6358337.7609], center: [921371.9389, 6358337.7609],

View File

@@ -22,27 +22,27 @@ const madrid = new Feature({
}); });
rome.setStyle(new Style({ rome.setStyle(new Style({
image: new Icon(/** @type {module:ol/style/Icon~Options} */ ({ image: new Icon({
color: '#8959A8', color: '#8959A8',
crossOrigin: 'anonymous', crossOrigin: 'anonymous',
src: 'data/dot.png' src: 'data/dot.png'
})) })
})); }));
london.setStyle(new Style({ london.setStyle(new Style({
image: new Icon(/** @type {module:ol/style/Icon~Options} */ ({ image: new Icon({
color: '#4271AE', color: '#4271AE',
crossOrigin: 'anonymous', crossOrigin: 'anonymous',
src: 'data/dot.png' src: 'data/dot.png'
})) })
})); }));
madrid.setStyle(new Style({ madrid.setStyle(new Style({
image: new Icon(/** @type {module:ol/style/Icon~Options} */ ({ image: new Icon({
color: [113, 140, 0], color: [113, 140, 0],
crossOrigin: 'anonymous', crossOrigin: 'anonymous',
src: 'data/dot.png' src: 'data/dot.png'
})) })
})); }));

View File

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

View File

@@ -1,10 +1,17 @@
--- ---
layout: example.html layout: example.html
title: Icon Sprites with WebGL title: Icon Sprites with WebGL
shortdesc: Icon sprite with WebGL shortdesc: Rendering many icons with WebGL
docs: > 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> This example shows how to use `ol/renderer/webgl/PointsLayer` to render
tags: "webgl, icon, sprite, vector, point" 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"
--- ---
<div id="map" class="map"></div> <div id="map" class="map"></div>
<div id="info">&nbsp;</div>

View File

@@ -1,136 +1,124 @@
import Feature from '../src/ol/Feature.js'; import Map from '../src/ol/Map.js';
import Map from '../src/ol/WebGLMap.js';
import View from '../src/ol/View.js'; import View from '../src/ol/View.js';
import Point from '../src/ol/geom/Point.js'; import TileLayer from '../src/ol/layer/Tile.js';
import VectorLayer from '../src/ol/layer/Vector.js'; import TileJSON from '../src/ol/source/TileJSON';
import VectorSource from '../src/ol/source/Vector.js'; import Feature from '../src/ol/Feature';
import {Icon, Style} from '../src/ol/style.js'; import Point from '../src/ol/geom/Point';
import VectorLayer from '../src/ol/layer/Vector';
import {Vector} from '../src/ol/source';
import {fromLonLat} from '../src/ol/proj';
import WebGLPointsLayerRenderer from '../src/ol/renderer/webgl/PointsLayer';
import {lerp} from '../src/ol/math';
const features = [];
const vectorSource = new Vector({
features: [],
attributions: 'National UFO Reporting Center'
});
const iconInfo = [{ const texture = document.createElement('img');
offset: [0, 0], texture.src = 'data/ufo_shapes.png';
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]
}];
let i; // 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 iconCount = iconInfo.length; const oldColor = [255, 160, 110];
const icons = new Array(iconCount); const newColor = [180, 255, 200];
for (i = 0; i < iconCount; ++i) {
const info = iconInfo[i]; class WebglPointsLayer extends VectorLayer {
icons[i] = new Icon({ createRenderer() {
offset: info.offset, return new WebGLPointsLayerRenderer(this, {
opacity: info.opacity, texture: texture,
rotateWithView: info.rotateWithView, colorCallback: function(feature, vertex, component) {
rotation: info.rotation, // component at index 3 is alpha
scale: info.scale, if (component === 3) {
size: info.size, return 1;
crossOrigin: 'anonymous', }
src: 'data/Butterfly.png'
}); // 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);
return lerp(oldColor[component], newColor[component], ratio * ratio) / 255;
},
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); function loadData() {
let feature, geometry; const client = new XMLHttpRequest();
const e = 25000000; client.open('GET', 'data/csv/ufo_sighting_data.csv');
for (i = 0; i < featureCount; ++i) { client.onload = function() {
geometry = new Point( const csv = client.responseText;
[2 * e * Math.random() - e, 2 * e * Math.random() - e]); let curIndex;
feature = new Feature(geometry); let prevIndex = 0;
feature.setStyle( let line;
new Style({ while ((curIndex = csv.indexOf('\n', prevIndex)) > 0) {
image: icons[i % (iconCount - 1)] line = csv.substr(prevIndex, curIndex - prevIndex).split(',');
prevIndex = curIndex + 1;
// skip header
if (prevIndex === 0) {
continue;
}
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/v3/mapbox.world-dark.json?secure',
crossOrigin: 'anonymous'
})
}),
new WebglPointsLayer({
source: vectorSource
}) })
); ],
features[i] = feature;
}
const vectorSource = new VectorSource({
features: features
});
const vector = new VectorLayer({
source: vectorSource
});
const map = new Map({
layers: [vector],
target: document.getElementById('map'), target: document.getElementById('map'),
view: new View({ view: new View({
center: [0, 0], center: [0, 4000000],
zoom: 5 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

@@ -17,12 +17,12 @@ const iconFeature = new Feature({
}); });
const iconStyle = new Style({ const iconStyle = new Style({
image: new Icon(/** @type {module:ol/style/Icon~Options} */ ({ image: new Icon({
anchor: [0.5, 46], anchor: [0.5, 46],
anchorXUnits: 'fraction', anchorXUnits: 'fraction',
anchorYUnits: 'pixels', anchorYUnits: 'pixels',
src: 'data/icon.png' src: 'data/icon.png'
})) })
}); });
iconFeature.setStyle(iconStyle); iconFeature.setStyle(iconStyle);

View File

@@ -1,13 +1,13 @@
import Feature from '../src/ol/Feature.js'; import Feature from '../src/ol/Feature.js';
import Map from '../src/ol/Map.js'; import Map from '../src/ol/Map.js';
import View from '../src/ol/View.js'; import View from '../src/ol/View.js';
import {defaults as defaultControls} from '../src/ol/control.js';
import IGC from '../src/ol/format/IGC.js'; import IGC from '../src/ol/format/IGC.js';
import {LineString, Point} from '../src/ol/geom.js'; import {LineString, Point} from '../src/ol/geom.js';
import {Tile as TileLayer, Vector as VectorLayer} from '../src/ol/layer.js'; import {Tile as TileLayer, Vector as VectorLayer} from '../src/ol/layer.js';
import OSM, {ATTRIBUTION} from '../src/ol/source/OSM.js'; import OSM, {ATTRIBUTION} from '../src/ol/source/OSM.js';
import VectorSource from '../src/ol/source/Vector.js'; import VectorSource from '../src/ol/source/Vector.js';
import {Circle as CircleStyle, Fill, Stroke, Style} from '../src/ol/style.js'; import {Circle as CircleStyle, Fill, Stroke, Style} from '../src/ol/style.js';
import {getVectorContext} from '../src/ol/render.js';
const colors = { const colors = {
@@ -74,6 +74,10 @@ vectorSource.on('addfeature', function(event) {
time.duration = time.stop - time.start; time.duration = time.stop - time.start;
}); });
const vectorLayer = new VectorLayer({
source: vectorSource,
style: styleFunction
});
const map = new Map({ const map = new Map({
layers: [ layers: [
@@ -87,17 +91,9 @@ const map = new Map({
'?apikey=0e6fc415256d4fbb9b5166a718591d71' '?apikey=0e6fc415256d4fbb9b5166a718591d71'
}) })
}), }),
new VectorLayer({ vectorLayer
source: vectorSource,
style: styleFunction
})
], ],
target: 'map', target: 'map',
controls: defaultControls({
attributionOptions: {
collapsible: false
}
}),
view: new View({ view: new View({
center: [703365.7089403362, 5714629.865071137], center: [703365.7089403362, 5714629.865071137],
zoom: 9 zoom: 9
@@ -159,8 +155,8 @@ const style = new Style({
stroke: stroke stroke: stroke
}) })
}); });
map.on('postcompose', function(evt) { vectorLayer.on('postrender', function(evt) {
const vectorContext = evt.vectorContext; const vectorContext = getVectorContext(evt);
vectorContext.setStyle(style); vectorContext.setStyle(style);
if (point !== null) { if (point !== null) {
vectorContext.drawGeometry(point); vectorContext.drawGeometry(point);
@@ -187,7 +183,7 @@ document.getElementById('time').addEventListener('input', function() {
const value = parseInt(this.value, 10) / 100; const value = parseInt(this.value, 10) / 100;
const m = time.start + (time.duration * value); const m = time.start + (time.duration * value);
vectorSource.forEachFeature(function(feature) { 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); const coordinate = geometry.getCoordinateAtM(m, true);
let highlight = feature.get('highlight'); let highlight = feature.get('highlight');
if (highlight === undefined) { if (highlight === undefined) {

View File

@@ -3,9 +3,9 @@ layout: example.html
title: Image Filters title: Image Filters
shortdesc: Apply a filter to imagery shortdesc: Apply a filter to imagery
docs: > 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. 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" tags: "filter, image manipulation"
cloak: cloak:
- key: As1HiMj1PvLPlqc_gtM7AqZfBL8ZL3VrjaS3zIb22Uvb9WKhuJObROC-qUpa81U5 - 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); convolve(event.context, selectedKernel);
}); });
@@ -101,7 +101,7 @@ imagery.on('postcompose', function(event) {
* Apply a convolution kernel to canvas. This works for any size kernel, but * Apply a convolution kernel to canvas. This works for any size kernel, but
* performance starts degrading above 3 x 3. * performance starts degrading above 3 x 3.
* @param {CanvasRenderingContext2D} context Canvas 2d context. * @param {CanvasRenderingContext2D} context Canvas 2d context.
* @param {Array.<number>} kernel Kernel. * @param {Array<number>} kernel Kernel.
*/ */
function convolve(context, kernel) { function convolve(context, kernel) {
const canvas = context.canvas; const canvas = context.canvas;

View File

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

View File

@@ -1,9 +1,9 @@
--- ---
layout: example.html layout: example.html
title: Image Vector Layer title: Vector Image Layer
shortdesc: Example of an image vector layer. shortdesc: Example of rendering vector data as an image layer.
docs: > 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" tags: "vector, image"
--- ---
<div id="map" class="map"></div> <div id="map" class="map"></div>

View File

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

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