Compare commits

...

1724 Commits

Author SHA1 Message Date
Tim Schaub
4c19e13bf6 Update package version to 3.11.1 2015-11-12 16:17:57 -07:00
Tim Schaub
1c6a56f781 Changelog for v3.11.1 2015-11-12 16:17:06 -07:00
Bart van den Eijnden
3aabc44746 Merge pull request #4413 from bartvde/issue-4406
Revert "Merge pull request #4339 from bartvde/issue-4337"
2015-11-12 20:45:27 +01:00
Bart van den Eijnden
b426fa5509 Revert "Merge pull request #4339 from bartvde/issue-4337"
This reverts commit 7f4c6e3634, reversing
changes made to c5dac0aa70.
2015-11-12 20:29:54 +01:00
Andreas Hocevar
70d376f215 Merge pull request #4412 from ahocevar/revert-4344
Revert "Merge pull request #4344 from bartvde/issue-2844"
2015-11-12 19:36:27 +01:00
Andreas Hocevar
c5f4710b8d Revert "Merge pull request #4344 from bartvde/issue-2844"
This reverts commit e5c44b37c9, reversing
changes made to 7f4c6e3634.
2015-11-12 19:17:07 +01:00
Andreas Hocevar
14338e9c16 Merge pull request #4408 from ahocevar/fix-imagewms-ratio-3.11.x
Use ratio when calculating ImageWMS width and height
2015-11-12 18:30:31 +01:00
Andreas Hocevar
ce5ab5b59c Use ratio when calculating width and height 2015-11-12 18:10:10 +01:00
Tim Schaub
bb5377fb8c Merge pull request #4399 from openlayers/release-v3.11.0
Release v3.11.0.
2015-11-11 14:46:44 -07:00
Tim Schaub
657af1983d Update package version to 3.11.0 2015-11-11 14:25:37 -07:00
Tim Schaub
ab7e608129 Changelog for v3.11.0 2015-11-11 14:24:56 -07:00
Tim Schaub
0c2c058534 Merge pull request #4394 from openlayers/silent-update
Allow ol.Object property update without notification.
2015-11-11 12:59:06 -07:00
Tim Schaub
a9987de308 Merge pull request #4395 from adube/api-styletext-offsetxy
Flag ol.style.Text setOffsetX and Y as @api.
2015-11-11 11:15:17 -07:00
Tim Schaub
c02fdf2393 Doc corrections and truthy check 2015-11-11 11:12:58 -07:00
Alexandre Dubé
ca50e9e5b7 Flag ol.style.Text setOffsetX and Y as @api 2015-11-11 12:44:12 -05:00
DavidHequet
069a81db74 Allow ol.Object property update without notification
Add an optional notify argument to object set and setProperties methods.

If the argument is not provided, set and setProperties trigger an event.

If you update many objects or do so frequently and do not need notification, performance is improved by setting silent to true.
2015-11-11 10:35:30 -07:00
Andreas Hocevar
df460d2ed1 Merge pull request #4393 from ahocevar/faster-vector-tiles
Faster vector tiles
2015-11-10 19:15:30 +01:00
Andreas Hocevar
b29b969cfe Avoid goog.getUid() with empty skippedFeaturesHash 2015-11-10 19:01:03 +01:00
Andreas Hocevar
a020251f69 Do not use fractional stroke widths 2015-11-10 18:43:28 +01:00
Tim Schaub
b2292cc6fd Merge pull request #4392 from openlayers/greenkeeper-clean-css-3.4.7
Update clean-css to version 3.4.7 🚀
2015-11-10 08:47:50 -07:00
greenkeeperio-bot
647c1a6351 chore(package): update clean-css to version 3.4.7
http://greenkeeper.io/
2015-11-10 07:55:13 -07:00
Andreas Hocevar
bfbb802b85 Merge pull request #4391 from ahocevar/unmanaged-layer-foreachfeatureatpixel
Pass null as forEachFeatureAtPixel layer arg for unmanaged layers
2015-11-09 10:19:26 +01:00
Andreas Hocevar
a446147902 Add upgrade note about forEachFeatureAtPixel change 2015-11-09 09:45:21 +01:00
Andreas Hocevar
d968f32456 Exclude unmanaged layers from selection 2015-11-09 09:45:21 +01:00
Andreas Hocevar
1aea2c2b0c Pass null as forEachFeatureAtPixel layer arg for unmanaged layers 2015-11-09 09:45:21 +01:00
Andreas Hocevar
5b817f3146 Merge pull request #4390 from ahocevar/fix-mocha-phantomjs-usage
Fix usage of mocha-phantomjs-core after update
2015-11-07 07:37:08 +01:00
Andreas Hocevar
a58f66a9a9 Fix usage of mocha-phantomjs-core after update 2015-11-06 20:34:30 +01:00
Andreas Hocevar
8e15f80d7a Merge pull request #4387 from ahocevar/common-renderer-default
Add default argument to getRendererFromQueryString
2015-11-06 17:11:35 +01:00
Andreas Hocevar
a35b3a5f52 Add default argument to getRendererFromQueryString 2015-11-06 16:58:58 +01:00
Éric Lemoine
9cf26f1fac Merge pull request #4376 from elemoine/kml-non-icon
Make KML format ignore image styles that aren't icons
2015-11-06 16:46:10 +01:00
Bart van den Eijnden
fadf63cbd0 Merge pull request #4385 from oterral/scaledflt
Don't transform the scale specified by the user
2015-11-06 16:23:41 +01:00
Éric Lemoine
daa970fe4c Make KML format ignore image styles that aren't icons 2015-11-06 15:35:20 +01:00
Andreas Hocevar
3254e08785 Merge pull request #4388 from ahocevar/fix-mocha-phantomjs
Quick-fix running tests with PhantomJS
2015-11-06 15:04:27 +01:00
Andreas Hocevar
544f951c14 Quick-fix running tests with PhantomJS 2015-11-06 14:50:58 +01:00
oterral
08a640b793 Don't transform the scale specified by the user 2015-11-06 14:29:16 +01:00
Éric Lemoine
d29f3b9068 Merge pull request #4378 from elemoine/kml-write-styles
Add a writeStyles option to KML format
2015-11-06 11:26:48 +01:00
Andreas Hocevar
d68991e982 Merge pull request #4375 from simonseyock/master
Fixed documentation typo (ol.source.ImageWMS)
2015-11-05 08:11:26 +01:00
Éric Lemoine
5c536aafc7 Add a writeStyles option to KML format 2015-11-04 17:12:04 +01:00
Simon Seyock
757d46541c Fixed documentation error
the imageLoadFunction you can give the constructor of ol.source.ImageWMS is an ol.ImageLoadFunctionType not an ol.TileLoadFunctionType
2015-11-04 12:56:41 +01:00
Éric Lemoine
dc3bf0d04b Merge pull request #4371 from dtreiter/master
Fix typo in closure compilation tutorial
2015-11-03 21:52:52 +01:00
Daniel Reiter
9cde0ab860 Fix typo in closure compilation tutorial 2015-11-03 14:37:37 -06:00
Bart van den Eijnden
bb00f4dafd Merge pull request #4370 from jonataswalker/getLayer-improve-docs
Improve ol.interaction.Select#getLayer documentation.
2015-11-03 18:58:52 +01:00
jonataswalker
16670e4015 Improve ol.interaction.Select#getLayer documentation. 2015-11-03 14:35:17 -02:00
Tim Schaub
4b85dd89a5 Merge pull request #4365 from openlayers/greenkeeper-fs-extra-0.26.2
Update fs-extra to version 0.26.2 🚀
2015-11-03 07:45:46 -08:00
Tim Schaub
71f7c70279 Merge pull request #4366 from openlayers/greenkeeper-resemblejs-2.0.1
Update resemblejs to version 2.0.1 🚀
2015-11-03 07:43:49 -08:00
Marc Jansen
2d24c8942e Merge pull request #4368 from marcjansen/fix-4367
Append KML placemark text style to existing styles
2015-11-03 15:06:33 +01:00
Marc Jansen
d24dcc7753 Be less verbose when creating text style 2015-11-03 14:27:06 +01:00
Marc Jansen
bea1501bb7 Append textStyle to existing style 2015-11-03 14:26:16 +01:00
greenkeeperio-bot
5751d342ff chore(package): update resemblejs to version 2.0.1
http://greenkeeper.io/
2015-11-03 02:21:55 -08:00
greenkeeperio-bot
8514a85353 chore(package): update fs-extra to version 0.26.2
http://greenkeeper.io/
2015-11-02 19:07:52 -08:00
Éric Lemoine
ad85e0e98d Merge pull request #4361 from elemoine/gpx
Make GPX format not fail on unsupported geometries
2015-11-02 17:54:47 +01:00
Frédéric Junod
66a99dd6c4 Merge pull request #4360 from fredj/getExtent_undef
Update getExtent return value jsdoc tag
2015-11-02 16:56:08 +01:00
Frederic Junod
eb762b6f4a Update getExtent return value jsdoc tag
The extent is never `null`; if the source is empty, the extent is
`[Infinity, Infinity, -Infinity, -Infinity]`
2015-11-02 16:30:54 +01:00
Éric Lemoine
14a1add08d Make GPX format no fail on unsupported geometries 2015-11-02 16:26:17 +01:00
Éric Lemoine
cbd1aee0cc Remove describe('readFeatures') in GPX tests
Just a remove an unnecessary level of nesting. No functional change.
2015-11-02 15:58:47 +01:00
Frédéric Junod
135d66dac7 Merge pull request #4359 from openlayers/greenkeeper-closure-util-1.9.0
Update closure-util to version 1.9.0 🚀
2015-11-02 14:31:26 +01:00
greenkeeperio-bot
3f30072de5 chore(package): update closure-util to version 1.9.0
http://greenkeeper.io/
2015-11-02 05:44:34 -07:00
Tim Schaub
925a89ecdb Merge pull request #4357 from openlayers/greenkeeper-update-all
Update all dependencies.
2015-11-01 10:31:01 -07:00
Tim Schaub
d5c7f805ab Unregister postrender listener in tests 2015-11-01 09:03:23 -07:00
greenkeeperio-bot
67f42ed33a chore(package): update dependencies
http://greenkeeper.io/
2015-11-01 08:30:06 -07:00
Tim Schaub
610ed7294f Merge pull request #4356 from tschaub/metalsmith-updates
Update Metalsmith and layouts plugin.
2015-11-01 08:28:08 -07:00
Tim Schaub
6c813020c2 Correct error message for missing layout property 2015-11-01 08:15:05 -07:00
Tim Schaub
0149924551 Update Metalsmith and layout plugin 2015-11-01 02:18:09 -07:00
Tim Schaub
85264111cd Merge pull request #4355 from tschaub/phantom-update
Update PhantomJS.
2015-11-01 01:57:38 -07:00
Tim Schaub
921d736340 Run tests with Node 4 on Trusty 2015-11-01 01:19:07 -07:00
Tim Schaub
98c9b0eb39 Update phantomjs and use mocha-phantomjs-core 2015-11-01 01:18:59 -07:00
Tim Schaub
7946298e67 Merge pull request #4353 from tschaub/jsdoc-forked
Resolve path to jsdoc-fork.
2015-10-31 15:23:41 -06:00
Tim Schaub
c0271e3509 Prune before installing 2015-10-31 15:11:54 -06:00
Tim Schaub
ad3ee7cb33 Correctly resolve path to jsdoc 2015-10-31 15:10:05 -06:00
Tim Schaub
363ef8f45e Merge pull request #3627 from ThomasG77/ThomasG77-npm
Make package.json compatible for npm frontend use.
2015-10-31 13:49:40 -06:00
Tim Schaub
9529200d4f Merge pull request #4163 from tschaub/node-four
Fixes for building with Node 4.x.
2015-10-31 13:42:55 -06:00
Tim Schaub
85ca4e1888 Update JSDoc to get async publish support 2015-10-31 13:30:30 -06:00
Tim Schaub
c0da5ff8ef Merge pull request #4347 from tschaub/find-jsdoc
Use require.resolve() to find jsdoc.
2015-10-31 13:26:58 -06:00
Tim Schaub
0b7cd12eaa Merge pull request #4291 from jonataswalker/feature-move-example
Add 'Move a feature along a line' example.
2015-10-30 17:08:14 -06:00
jonataswalker
9e25251891 Add 'Move a feature along a line' example 2015-10-30 18:50:04 -02:00
Bart van den Eijnden
e5c44b37c9 Merge pull request #4344 from bartvde/issue-2844
Allow different resolutions in x and y direction for ol.source.ImageStatic
2015-10-30 20:53:46 +01:00
Bart van den Eijnden
979342091a Support different resolutions in x and y direction for ol.source.ImageStatic 2015-10-30 19:27:31 +01:00
Tim Schaub
dc0e37b782 Use require.resolve() to find jsdoc 2015-10-30 06:21:21 -06:00
Bart van den Eijnden
7f4c6e3634 Merge pull request #4339 from bartvde/issue-4337
Make sure drawImage width and height are not too big
2015-10-29 17:17:20 +01:00
Bart van den Eijnden
085a6c8135 Make sure drawImage works in Safari with an offset 2015-10-29 14:16:06 +01:00
Andreas Hocevar
c5dac0aa70 Merge pull request #4334 from ahocevar/extent-ratio
Check view extent within image extent
2015-10-29 07:07:21 +01:00
Andreas Hocevar
40c1a6d112 Check view extent within image extent 2015-10-28 23:58:00 +01:00
Frédéric Junod
6d9dd030a1 Merge pull request #4332 from fredj/geojson_id_0_write
Fix write out GeoJSON features with id equal to 0
2015-10-28 15:19:57 +01:00
Frédéric Junod
9f5240dd15 Merge pull request #4331 from fredj/topojson_id_0
Allow TopoJSON features with id equal to 0
2015-10-28 15:13:28 +01:00
Frédéric Junod
4a8782f1e0 Merge pull request #4330 from openlayers/fredj-patch-1
ol.format.TopoJSON is read only, update the jsdoc
2015-10-28 15:11:29 +01:00
Frederic Junod
d59f6979f7 Fix write out GeoJSON features with id equal to 0 2015-10-28 15:09:31 +01:00
Frédéric Junod
7b8b058190 ol.format.TopoJSON is read only, update the jsdoc 2015-10-28 15:02:02 +01:00
Frederic Junod
c6803838ab Allow TopoJSON features with id equal to 0 2015-10-28 14:56:33 +01:00
Frédéric Junod
4846a49258 Merge pull request #4327 from fredj/geojson_id_0
Allow GeoJSON features with id equal to 0
2015-10-28 11:34:31 +01:00
Frederic Junod
7cf12d1c12 Allow GeoJSON features with id equal to 0
fixes #4326
2015-10-28 11:21:17 +01:00
Andreas Hocevar
2f06d214f5 Merge pull request #4219 from ahocevar/vectortile
Support tiled vector data and Mapbox vector tiles
2015-10-28 10:43:55 +01:00
Andreas Hocevar
80b78b8b5a Avoid instanceof dependant assertions 2015-10-28 10:29:04 +01:00
Andreas Hocevar
5d264d2bf0 Remove right-handed polygon handling in renderer
Since ol.render.Feature assumes right-handed polygons anyway, this
extra optimization is not needed.
2015-10-28 10:29:04 +01:00
Andreas Hocevar
5832943773 Make changes suggested during the review 2015-10-28 10:29:04 +01:00
Andreas Hocevar
2b2ac47b1f Remove ol.source.TileVector 2015-10-28 10:29:04 +01:00
Andreas Hocevar
4be89715ed Add credit/attribution for the example style function 2015-10-28 10:29:04 +01:00
Andreas Hocevar
80fa26ddd8 Reduce the use of goog.* 2015-10-28 10:29:03 +01:00
Andreas Hocevar
656023e569 Use new createLoadedTileFinder signature
The signature of this method was changed with the introduction of
raster reprojection.
2015-10-28 10:29:03 +01:00
Andreas Hocevar
b99954e93a Cloak Mapbox access tokens 2015-10-28 10:29:03 +01:00
Andreas Hocevar
8daff341d0 Update after ol.interaction.Select changes 2015-10-28 10:29:03 +01:00
Andreas Hocevar
66338a662d Fix comparison of projections with same code but different units 2015-10-28 10:29:03 +01:00
Andreas Hocevar
4784b7f2e2 Handle urls and templates in ol.source.UrlTile
This makes url templates available for ol.source.VectorTile.
2015-10-28 10:29:03 +01:00
Andreas Hocevar
af69933c64 Enable wrapX by default 2015-10-28 10:29:03 +01:00
Andreas Hocevar
8e9b20db51 Additional tests, documentation and example 2015-10-28 10:29:02 +01:00
Andreas Hocevar
0e8e104a2d Handle righthanded polygons in format, not source 2015-10-28 10:29:02 +01:00
Andreas Hocevar
29b64d8628 Improve readability and reduce garbage creation 2015-10-28 10:29:02 +01:00
Andreas Hocevar
bda3a6803c Use tiles with lower or same resolution as view 2015-10-28 10:29:02 +01:00
Andreas Hocevar
cd2a2ebbc5 Do not call moveTo/lineTo when coordinates are the same
See http://jsperf.com/moveto-lineto-to-same-coordinate/3
2015-10-28 10:29:02 +01:00
Andreas Hocevar
9df280a884 Handle dirty tiles properly 2015-10-28 10:29:02 +01:00
Andreas Hocevar
6e2f82c397 Introduce ol.render.Feature 2015-10-28 10:29:02 +01:00
Andreas Hocevar
63629e1ee2 Add tile error handling 2015-10-28 10:29:01 +01:00
Andreas Hocevar
dbedbc19ee Create replay group for the tile's native resolution only 2015-10-28 10:29:01 +01:00
Andreas Hocevar
c0c5443782 Add example showing the use of Mapbox vector tiles 2015-10-28 10:29:01 +01:00
Andreas Hocevar
4b942bc4f6 Add VectorTile renderer 2015-10-28 10:29:01 +01:00
Andreas Hocevar
7d3fc3ccc7 Add VectorTile layer, source and tile 2015-10-28 10:29:01 +01:00
Andreas Hocevar
fa88b578a4 Create ol.source.UrlTile 2015-10-28 10:29:01 +01:00
Andreas Hocevar
598111b78e Introduce ol.format.MVT 2015-10-28 10:29:00 +01:00
Andreas Hocevar
8f4756c99b Introduce tile-pixels units 2015-10-28 10:29:00 +01:00
Andreas Hocevar
05dfc226b7 Merge pull request #4322 from FRizZL/master
Add wrapX override support for ol.source.Cluster
2015-10-27 08:28:38 +01:00
FRizZL
a60a7f7c09 Add wrapX override support for ol.source.Cluster
It was not possible to override the wrapX option for the cluster source.
This commit adds that functionality.
2015-10-27 08:26:52 +01:00
Marc Jansen
a3dbe4b658 Merge pull request #4316 from marcjansen/clean-4306
Render name labels if the geometry is a point in KML format (@tamarmot)
2015-10-25 19:52:22 +01:00
Tamar Cohen
c9beb6d4f4 Add upgrade notes for KML changes 2015-10-25 19:40:12 +01:00
Tamar Cohen
eb75f4eedf Add test for auto-labeling of placemark names 2015-10-25 19:40:12 +01:00
Tamar Cohen
80caaa5399 Make auto-labeling of placemark names configurable 2015-10-25 19:40:08 +01:00
Tamar Cohen
15c1323ff9 Render placemark names for points in KML format 2015-10-25 19:38:25 +01:00
Andreas Hocevar
48f98717b6 Merge pull request #4313 from ahocevar/nicer-attribution
Align logos nicely with attribution text
2015-10-25 10:39:13 +01:00
Andreas Hocevar
09063b47b5 Align logos nicely with attribution text 2015-10-25 10:32:50 +01:00
Andreas Hocevar
bd9aff46af Merge pull request #4297 from ahocevar/derequire
Create standalone versions of ol.ext packages
2015-10-24 21:04:20 +02:00
Andreas Hocevar
b27acb8d5e Merge pull request #4302 from tamarmot/master
scale icons by 0.5 so they are not huge
2015-10-22 01:01:09 +02:00
Tamar Cohen
9764dac149 added missing semicolon 2015-10-21 14:51:34 -07:00
Tamar Cohen
79d803aba8 scale icons by 0.5 so they are not huge 2015-10-21 14:30:14 -07:00
Frédéric Junod
78a961e6ef Merge pull request #4301 from fredj/jshint_cleanup
Remove jshint -W069 tags in source code
2015-10-21 17:19:18 +02:00
Frederic Junod
a84db3add6 Remove jshint -W069 tags in source code
The check in already disabled in .jshintrc
2015-10-21 16:15:54 +02:00
Andreas Hocevar
519e7976cd Merge pull request #4273 from Barryrowe/projection-documentation
Expand docs on ol.source url prop.
2015-10-20 17:26:01 +02:00
Barryrowe
7d95df1a9d Expand docs on ol.source url prop
Expanded documentation on the url property of the
ol.source.Vector property to include information about
how data loaded remotely will always be run through an
attempt to translate to the view's projection so the
format object must have the proper value for
defaultDataProjection when the remote data doesn't
include a CRS property.
2015-10-20 17:25:27 +02:00
Andreas Hocevar
1c1010a65d Create standalone versions of ol.ext packages 2015-10-20 14:00:18 +02:00
Andreas Hocevar
ac84e98c7f Merge pull request #4293 from ahocevar/contributing-developing
Refine the pull request process
2015-10-19 16:21:54 +02:00
Andreas Hocevar
945847d0a1 Refine the pull request process
This pull request splits the developer documentation into `CONTRIBUTING.md` and
`DEVELOPING.md`. `CONTRIBUTING.md` now contains an additional paragraph,
instructing contributors to create an issue before submitting a pull request.

The introduction of this additional step was discussed at this year's FOSS4G
conference. This new step would also affect contributions from core developers.
2015-10-19 13:39:03 +02:00
jonataswalker
e5c2a226dd Add 'Move a feature along a line' example 2015-10-19 08:40:59 -02:00
jonataswalker
5541e9a236 Add 'Move a feature along a line' example 2015-10-19 07:54:06 -02:00
Andreas Hocevar
c8eb3adf1e Merge pull request #4289 from ahocevar/image-static-maxzoom
Restrict maxZoom of the static-image example
2015-10-19 11:02:23 +02:00
Andreas Hocevar
c2bde4e482 Restrict maxZoom of the static-image example
Upscaling the image to zoom levels > 8 does not make sense, and it may even
cause canvas transformations to fail.
2015-10-19 10:44:43 +02:00
Frédéric Junod
eb174f7a82 Merge pull request #4275 from fredj/mouseOnly_type
Fix ol.events.condition.mouseOnly parameter type
2015-10-19 09:03:51 +02:00
Marc Jansen
55a969f95f Merge pull request #4248 from marcjansen/math-es6-2015
Use Math.cosh of ES6/2015 if available
2015-10-18 21:26:56 +02:00
Tim Schaub
f344f2cdb2 Merge pull request #4286 from tschaub/color-manipulation
Add a color manipulation example.
2015-10-17 19:30:37 -06:00
Tim Schaub
ecdbab40ba Add a color manipulation example 2015-10-17 15:11:37 -06:00
Andreas Hocevar
819b9ce6ca Merge pull request #4122 from klokantech/rasterreproj
Raster reprojection
2015-10-16 21:47:02 +02:00
Andreas Hocevar
c86a61eacb Merge pull request #4283 from adube/api-tilegrid-gettilecoordextent
Flag ol.tilegrid.TileGrid getTileCoordExtent as @api
2015-10-16 18:40:08 +02:00
Alexandre Dubé
571760fb32 Flag ol.tilegrid.TileGrid getTileCoordExtent as @api 2015-10-16 11:42:01 -04:00
Petr Sloup
965b88d7c8 Save context state only when it's actually necessary 2015-10-16 16:30:16 +02:00
Petr Sloup
d950dada31 Minor type fix 2015-10-16 16:30:16 +02:00
Petr Sloup
e49f529fe6 Add typedefs for functions returning tiles/images 2015-10-16 16:30:16 +02:00
Petr Sloup
6f9fa4c12e Minor documentation improvements 2015-10-16 16:30:04 +02:00
Petr Sloup
b816128728 Avoid assignment in return statement 2015-10-16 15:46:51 +02:00
Petr Sloup
70021be919 Use lower-case parameter names even for matrices 2015-10-16 15:45:34 +02:00
Petr Sloup
32fa3501df Update tests 2015-10-16 09:28:43 +02:00
Petr Sloup
a7cde96056 Simplified wrapX handling
"Unwrap" the coordinates obtained from transformations and utilize wrapX
capabilities of the sources to handle calculations of TileRanges and
unwrapped tile extents.
2015-10-16 09:28:43 +02:00
Petr Sloup
52a7c5e582 Rename some private/local variables to increase readability 2015-10-16 09:28:43 +02:00
Petr Sloup
f52f9b6817 Rename ol.RASTER_REPROJ_* constants to full ol.RASTER_REPROJECTION_* 2015-10-16 09:28:43 +02:00
Petr Sloup
9f8ab48f1f Minor improvements based on pull request comments 2015-10-16 09:28:43 +02:00
Petr Sloup
8fb1d1f244 Remove usage of various goog.* functions
goog.isNull, goog.isDefAndNotNull and goog.array.*
2015-10-16 09:28:43 +02:00
Petr Sloup
f3d5d16a82 Remove use of goog.isDef 2015-10-16 09:28:43 +02:00
Petr Sloup
783acfa961 Use ol.math.clamp instead of goog.math.clamp 2015-10-16 09:28:43 +02:00
Petr Sloup
3f897cfb79 Minor typo fix 2015-10-16 09:28:43 +02:00
Petr Sloup
c6e2c6a16e Add demonstration of layer extent setting to reprojection example 2015-10-16 09:28:43 +02:00
Petr Sloup
6431622881 Use better URL for BNG tiles in reprojection example 2015-10-16 09:28:43 +02:00
Petr Sloup
00a8b4da16 Increase readability of reprojection example
Use map/layer terminology more clearly and clarify checkbox usage
2015-10-16 09:28:43 +02:00
Petr Sloup
0f09607725 Slightly decrease build size when reprojection code is disabled 2015-10-16 09:28:43 +02:00
Petr Sloup
94caa07168 Minor code style, documentation and typo fixes 2015-10-16 09:28:43 +02:00
Petr Sloup
5388f96551 Reproject image sources only if actually needed 2015-10-16 09:28:42 +02:00
Petr Sloup
3353eeb0c3 Fix IE9 test timeouts by using different pixel placeholder
IE9 seems to have occasional problems with decoding
the data protocol url used before (single pixel placeholder).
2015-10-16 09:28:42 +02:00
Petr Sloup
402697c369 Specify crossOrigin in reprojection examples to fix WebGL errors 2015-10-16 09:28:42 +02:00
Petr Sloup
4bcea473eb Fix reprojection-by-code example in IE9 by using JSONP 2015-10-16 09:28:42 +02:00
Dalibor Janák
043b206705 OpenStreetMap reprojection example 2015-10-16 09:28:42 +02:00
Petr Sloup
76974a5888 Minor improvements of reprojection examples 2015-10-16 09:28:42 +02:00
Petr Sloup
59bce75d2a Improved documentation 2015-10-16 09:28:42 +02:00
Petr Sloup
7a1533925a Reprojection code refactoring and cleaning 2015-10-16 09:28:42 +02:00
Petr Sloup
a2ae2f0f3e Add rendering tests for ol.reproj.Image 2015-10-16 09:28:42 +02:00
Petr Sloup
f078a9c935 Add rendering tests for ol.reproj.Tile 2015-10-16 09:28:42 +02:00
Petr Sloup
404fa10bb7 Make resembleCanvas available to tests 2015-10-16 09:28:42 +02:00
Petr Sloup
8f1aab9236 Add tests for ol.source.TileImage 2015-10-16 09:28:42 +02:00
Petr Sloup
c899100dab Add tests for ol.reproj.* 2015-10-16 09:28:42 +02:00
Petr Sloup
0c48a560b2 Add reprojection example with proj4 defs loading from EPSG.io 2015-10-16 09:28:42 +02:00
Petr Sloup
690a5f1f90 Add reprojection example for ol.source.ImageStatic 2015-10-16 09:28:42 +02:00
Petr Sloup
87337570e0 Add reprojection example for tiled raster sources 2015-10-16 09:28:42 +02:00
Petr Sloup
7864ed7861 Force subdivision when transformation returns infinite coordinate 2015-10-16 09:28:42 +02:00
Petr Sloup
03c75a8648 Transformation caching during reprojection triangulation
This usually saves around 30-35% of transformation calls.
2015-10-16 09:28:42 +02:00
Petr Sloup
726bcbef83 Alternative reprojection triangulation strategy
The quads are now subdivided more granually (to 2 instead of 4), which
usually leads to reduced number of triangles and higher performance.
2015-10-16 09:28:42 +02:00
Petr Sloup
016df5b902 Minor ol.reproj.Image fixes 2015-10-16 09:28:42 +02:00
Petr Sloup
14e20e23a0 Correctly reproject projections with undefined units 2015-10-16 09:28:42 +02:00
Petr Sloup
aad5f94556 Minor type fix in ol.reproj.Image 2015-10-16 09:28:42 +02:00
Petr Sloup
615b54eb67 Use error threshold for image sources reprojection 2015-10-16 09:28:42 +02:00
Petr Sloup
fc23a38692 Take target extent into account when ensuring minimal reproj subdivision 2015-10-16 09:28:41 +02:00
Petr Sloup
3b1d72202a Correctly reproject sources in wrappable projection
With extent smaller than the projection extent
2015-10-16 09:28:41 +02:00
Petr Sloup
4c236a64b8 Handle canvas clip antialiasing during reprojection 2015-10-16 09:28:41 +02:00
Petr Sloup
3cc8291df4 Support pixelRatio during reprojection 2015-10-16 09:28:41 +02:00
Petr Sloup
c2b21985f4 Add ol.source.TileImage#setTileGridForProjection method 2015-10-16 09:28:41 +02:00
Petr Sloup
168b675191 Add reprojectionErrorThreshold option to the tiled image sources 2015-10-16 09:28:41 +02:00
Petr Sloup
ebc1bc0096 Better handling of tilegrids without extent during reprojection
For WMTS source, the tilegrid has no extent, but the projection can
2015-10-16 09:28:41 +02:00
Petr Sloup
be6bf00d74 Add defines for certain reprojection constants 2015-10-16 09:28:41 +02:00
Petr Sloup
f481070f82 Handle tilegrids without extent during tile reprojection 2015-10-16 09:28:41 +02:00
Petr Sloup
9a460b5f6b Handle cross-browser canvas antialiasing issues during reprojection
By doing strictly 1 drawImage per triangle; triangle overlapping and
using different blending mode.
2015-10-16 09:28:41 +02:00
Petr Sloup
8b38928aad Make rendering of reprojection edges configurable 2015-10-16 09:28:41 +02:00
Petr Sloup
30cd0aa584 Improve reprojection performance
Utilize the numerical shifting during reprojection to easily reduce
complexity of the linear system that needs to be solved.
2015-10-16 09:28:41 +02:00
Petr Sloup
8ab197eba6 Optimize the reprojection by stitching the sources prior to rendering
This solves canvas antialiasing issues and also simplifies the code
handling wrapX in the source projection.
2015-10-16 09:28:41 +02:00
Petr Sloup
6482ccf2f7 Make ol.reproj.Triangulation a class 2015-10-16 09:28:41 +02:00
Petr Sloup
0f408e341f Rename ol.source.Image#getImage implementations to #getImageInternal
This allows for the reprojection to be initialized in the #getImage,
while #getImageInternal is used to obtain the actual data.
2015-10-16 09:28:41 +02:00
Petr Sloup
ed1e49045a Allow different source and view projection in image layer renderers
To enable image layer reprojection.
2015-10-16 09:28:41 +02:00
Petr Sloup
be0a0de759 Integrate image reprojection with ol.source.Image 2015-10-16 09:28:41 +02:00
Petr Sloup
15575288e0 Add ol.ENABLE_RASTER_REPROJECTION define 2015-10-16 09:28:41 +02:00
Petr Sloup
f2f77091ad Handle tile sources without projection
Such sources should never be reprojected (and no additional tilecache or
tilegrid should be created).
2015-10-16 09:28:41 +02:00
Petr Sloup
c205323ff2 Reproject correctly when transform returns +-Infinity values 2015-10-16 09:28:41 +02:00
Petr Sloup
b0694c1e3b Add projection parameter to ol.source.Tile#expireCache and #useTile
This is required to be able to determine which cache the xyz coordinates
refer to (in case we have more caches).
2015-10-16 09:28:41 +02:00
Petr Sloup
e0cfa1951a Add projection parameter to ol.source.Tile#forEachLoadedTile 2015-10-16 09:28:41 +02:00
Petr Sloup
63084d30e9 Improve numerical stability of reprojection
By shifting the source points before calculating the affine transform to
obtain values from similar ranges (inputs and outputs of the transform).
2015-10-16 09:28:41 +02:00
Petr Sloup
9b82f19cc2 Simplify triangle-shifting logic for reprojection 2015-10-16 09:28:41 +02:00
Petr Sloup
3f567b0bf0 Use per-projection tilecaches and tilegrids (persistent instances) 2015-10-16 09:28:40 +02:00
Petr Sloup
bc74273208 Reproject every image only once per triangle
If the triangle has to be shifted, determine if the image has to be rendered shifted or not.
2015-10-16 09:28:40 +02:00
Petr Sloup
6e08fc9e13 Rename triangles to triangulation to be more precise 2015-10-16 09:28:40 +02:00
Petr Sloup
bf65b8a4fe Stronger typing of triangles and triangulation 2015-10-16 09:28:40 +02:00
Petr Sloup
e14bede9e9 Make projection parameter of ol.source.Tile#getTile no longer optional 2015-10-16 09:28:40 +02:00
Petr Sloup
ac76989447 Detect and handle triangles (tiles) crossing the dateline (projection edge) 2015-10-16 09:28:40 +02:00
Petr Sloup
b221e1ac1f Basic integration of raster reprojection for tiled sources
To allow for easier testing and debugging
2015-10-16 09:28:40 +02:00
Petr Sloup
ebc3f24671 Clamp the triangulation vertices if partially outside source extent 2015-10-16 09:28:40 +02:00
Petr Sloup
fcffce46b4 More robust way of handling non-global projections
If the target projection has specified extent, it is respected.
Also adds various checks to optimize performance and/or
prevent potential errors.
2015-10-16 09:28:40 +02:00
Petr Sloup
2cc2027353 More precise and robust way of calculating source resolution 2015-10-16 09:28:40 +02:00
Petr Sloup
c425b9c0e6 Verify triangulation against source/target extents
If we do this here, we can avoid some computations on triangles that will
be unused in the future anyway + reduce problems with non-global projections
without specified extents.
2015-10-16 09:28:40 +02:00
Petr Sloup
1222287f22 Add ol.reproj 2015-10-16 09:28:40 +02:00
Petr Sloup
44a64ba451 Add ol.math.solveLinearSystem 2015-10-16 09:28:40 +02:00
Andreas Hocevar
df6b90246a Merge pull request #4280 from ahocevar/box-overlaycontainer
Use overlay container instead of viewport for ol.render.Box
2015-10-15 21:00:20 +02:00
Andreas Hocevar
2d50511527 Use overlay container instead of viewport for ol.render.Box 2015-10-15 20:22:14 +02:00
Andreas Hocevar
fcdff1c841 Merge pull request #4278 from ahocevar/css-box
Use DOM instead of map canvas for ol.render.Box
2015-10-15 17:59:59 +02:00
Andreas Hocevar
7a070dd859 Use DOM instead of map canvas for ol.render.Box 2015-10-15 17:34:16 +02:00
Frédéric Junod
afdd22bd1d Merge pull request #4277 from fredj/box_select_example
Improve the box select example
2015-10-15 14:31:02 +02:00
Frederic Junod
a04022e8df Use Ctrl key / Meta key to activate the selection drag box 2015-10-15 14:12:08 +02:00
Frederic Junod
c27bcd86d3 Change the selection drag box colors 2015-10-15 13:49:06 +02:00
Frédéric Junod
a3550a5b00 Merge pull request #4276 from fredj/platformModifierKeyOnly_doc
Better ol.events.condition.platformModifierKeyOnly documentation
2015-10-15 13:34:45 +02:00
Frederic Junod
b477367099 Better ol.events.condition.platformModifierKeyOnly documentation
See https://github.com/google/closure-library/blob/master/closure/goog/events/browserevent.js#L175-L180
2015-10-15 12:55:23 +02:00
Frédéric Junod
671f774593 Merge pull request #4102 from fredj/ol.Observable_dispatchEvent
Export ol.Observable#dispatchEvent function
2015-10-15 12:53:41 +02:00
Frederic Junod
552e345fbf Fix ol.events.condition.mouseOnly parameter type
From `ol.MapBrowserEvent` to `ol.MapBrowserPointerEvent` and remove the
instanceof assert.
2015-10-15 11:43:30 +02:00
Frédéric Junod
4d43fe3346 Merge pull request #4261 from fredj/mouseOnly
ol.events.condition.mouseOnly may be wrong
2015-10-15 10:42:46 +02:00
Andreas Hocevar
6ec5e9a07d Merge pull request #4269 from adube/fix-zoomcontrol-duration
Fix Zoom control duration option - allow `0` as value
2015-10-14 22:43:05 +02:00
Andreas Hocevar
ee82fde184 Merge pull request #4268 from jonataswalker/get-overlay-by-id
Add method for retrieving ol.Overlay by id
2015-10-14 22:12:59 +02:00
jonataswalker
5dbaeb9ee5 Add method for retrieving ol.Overlay by id 2015-10-14 16:55:39 -03:00
Marc Jansen
cd99d44704 Use Math.cosh of ES6/2015 if available 2015-10-14 21:54:45 +02:00
Marc Jansen
449131a516 Use MDN polyfill for Math.cosh
This commit replaces the current implementation of ol.math.cosh with the
reference implementation of the Mozilla developer network. This method
only has one call to the Math.exp-function compared to two in the original
implementation.

See also: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Math/cosh
2015-10-14 21:54:45 +02:00
Marc Jansen
93f371ab9f Merge pull request #4257 from marcjansen/remove-unused-math
Remove unused ol.math-methods
2015-10-14 21:50:07 +02:00
Marc Jansen
2f5ccbd54d Remove unused ol.math-methods 2015-10-14 21:40:42 +02:00
Alexandre Dubé
718f32b177 Fix Zoom control duration option - allow 0 as value 2015-10-14 15:19:16 -04:00
Andreas Hocevar
1f8ee3a5ae Merge pull request #4270 from adube/fix-keyboardinteraction-options
Fix Keyboard zoom interation options
2015-10-14 21:08:57 +02:00
Andreas Hocevar
16b3893166 Merge pull request #4272 from adube/fix-interactiondefaults-zoomduration
Allow the DragZoom interaction created in defaults to use zoomDuration option.
2015-10-14 21:08:38 +02:00
jonataswalker
fce065e185 Add method for retrieving ol.Overlay by id 2015-10-14 16:01:48 -03:00
Alexandre Dubé
b54bc6cd42 Fix KeyboardZoom interation duration option, allow 0 value. 2015-10-14 14:43:04 -04:00
Andreas Hocevar
257313969c Merge pull request #4271 from adube/fix-dragzoominteraction-duration
Fix DragZoom interaction duration, allow `0` value
2015-10-14 20:19:04 +02:00
Alexandre Dubé
657b9dc018 Fix 'Shift' DragZoom in default interactions, use zoomDuration
This fix allows the DragZoom interaction created in the default
interactions to use the zoom duration defined in the options, if
set.
2015-10-14 13:46:30 -04:00
Alexandre Dubé
bd4b7a890d Fix DragZoom interaction duration, allow 0 value 2015-10-14 13:39:10 -04:00
jonataswalker
d29e5eaef1 Add method for retrieving ol.Overlay by id 2015-10-14 12:15:53 -03:00
Andreas Hocevar
a639291ea7 Merge pull request #4267 from ahocevar/example-improvements
Example usability improvements
2015-10-14 14:57:38 +02:00
Andreas Hocevar
53704379fa Make relative urls work for jsfiddle 2015-10-14 14:46:33 +02:00
Andreas Hocevar
3d82da1c7e Allow cloaking of API keys and apply to Bing keys 2015-10-14 14:31:42 +02:00
Frédéric Junod
b4061e7b35 Merge pull request #4263 from fredj/touchAction_extern
Add back CSSProperties.prototype.touchAction extern
2015-10-13 15:48:55 +02:00
Frederic Junod
00a6357c4d Add back CSSProperties.prototype.touchAction extern
See #4262
2015-10-13 15:38:55 +02:00
Frederic Junod
0a76145a93 Relay on the pointerType property in ol.events.condition.mouseOnly 2015-10-13 14:37:52 +02:00
Marc Jansen
b75ef3ae18 Merge pull request #4259 from marcjansen/math-radians-degrees
Remove use of toDegrees/toRadians util functions
2015-10-12 23:27:20 +02:00
Marc Jansen
f2df971eb0 Merge pull request #4258 from marcjansen/no-tagname-enum
Remove usage of goog.dom.TagName enum
2015-10-12 21:18:11 +02:00
Marc Jansen
47a7b03e0e Remove use of toDegrees/toRadians util functions
Instead of goog.math.toRadians and goog.math.toDegrees, we now use
our own implementations of these basic conversion functions.
2015-10-12 21:16:03 +02:00
Marc Jansen
9386415633 Remove usage of goog.dom.TagName enum 2015-10-12 20:45:49 +02:00
Andreas Hocevar
e111e30f33 Merge pull request #4255 from ahocevar/zoomslider-width
Fix zoom slider width for retina displays
2015-10-12 20:19:29 +02:00
Andreas Hocevar
61ce463cf9 Fix zoom slider width for retina displays
This also simplifies the css by using a button for the slider, like for other
controls.
2015-10-12 19:24:00 +02:00
Andreas Hocevar
758bab8e30 Merge pull request #4249 from ahocevar/tap-example
Make whole example box clickable
2015-10-12 11:04:17 +02:00
Andreas Hocevar
dea723bac3 Make whole example box clickable 2015-10-11 23:16:12 +02:00
Éric Lemoine
dcfeff11bf Merge pull request #4045 from Jenselme/wmts-capabilities-parser
Add parser for dimension property from WMTS Capabilities.xml
2015-10-09 18:59:22 +02:00
Julien Enselme
475504cd85 Add parser for dimension property from WMTS Capabilities.xml
- Correct parsing of dimension in ol.source.WMTS.optionsFromCapabilities
2015-10-09 18:43:26 +02:00
Éric Lemoine
936118955f Merge pull request #4161 from jonataswalker/translate-events
Add `translatestart`, `translateend` and `translating` events to `ol.interaction.Translate`
2015-10-09 18:16:17 +02:00
Éric Lemoine
d5ec75a643 Merge pull request #4186 from elemoine/webgl-context
Do not export ol.webgl.Context
2015-10-09 17:59:07 +02:00
Andreas Hocevar
d0f5585157 Merge pull request #4246 from openlayers/release-v3.10.1
Release v3.10.1
2015-10-09 17:40:29 +02:00
Andreas Hocevar
db0c8c3c3a Update package version to 3.10.1 2015-10-09 17:38:41 +02:00
Andreas Hocevar
1941be9995 Changelog for v3.10.1 2015-10-09 17:37:52 +02:00
Marc Jansen
313bff7aff Merge pull request #4242 from marcjansen/fix-drawtext-regression
Fix a drawText regression introduced with 31a68e2
2015-10-09 17:32:51 +02:00
Marc Jansen
2cd64d33ec Merge pull request #4242 from marcjansen/fix-drawtext-regression
Fix a drawText regression introduced with 31a68e2
2015-10-09 16:07:46 +02:00
Éric Lemoine
ba3e65c919 Merge pull request #4239 from austinkeeley/master
Changing highlighted to highlight
2015-10-09 15:40:55 +02:00
Marc Jansen
03ed8085b9 Fix a drawText regression introduced with 31a68e21 2015-10-09 11:49:45 +02:00
Austin Keeley
fa91748741 Changing highlighted to highlight 2015-10-08 18:38:57 -04:00
Andreas Hocevar
c067f40ecf Merge pull request #3727 from bogdanvaduva/overview_map
Added getOverviewMap getter method in overviewmapcontrol.js
2015-10-08 19:54:16 +02:00
Andreas Hocevar
c9c845394f Merge pull request #4238 from openlayers/release-v3.10.0
Release v3.10.0
2015-10-08 19:17:58 +02:00
Andreas Hocevar
63bc9459d9 Update package version to 3.10.0 2015-10-08 19:16:23 +02:00
Andreas Hocevar
f6d40faa3d Changelog for v3.10.0 2015-10-08 19:15:48 +02:00
Andreas Hocevar
c475902e19 Merge pull request #4237 from awaterme/master
#3328: GML3 - Writing features with multiple geometries
2015-10-08 18:11:53 +02:00
Bogdan Vaduva
1f7bdd10f8 Changed @api experimental to @api 2015-10-08 19:11:23 +03:00
Andreas Watermeyer
687a65aa95 #3328: reformatted fixjsstyle 2015-10-08 17:21:15 +02:00
Andreas Watermeyer
4c207d9460 #3328: Reformat once again 2015-10-08 17:09:48 +02:00
awaterme
5fb7a8bc34 #3328: Reformatted details. 2015-10-08 16:52:32 +02:00
Andreas Hocevar
391e2b6fea Merge pull request #4218 from jonataswalker/getlayer-from-selectinteraction
Add 'getLayer()' method to 'ol.interaction.Select'
2015-10-08 16:20:31 +02:00
jonataswalker
04c16106cd Add unit test to ol.interaction.Select#getLayer 2015-10-08 16:18:33 +02:00
jonataswalker
85163bceb6 Add 'getLayer()' method to 'ol.interaction.Select' 2015-10-08 16:18:33 +02:00
jonataswalker
094f8d5391 Add 'getLayer()' method to 'ol.interaction.Select' 2015-10-08 16:18:33 +02:00
Andreas Hocevar
09026af4fa Merge pull request #4236 from ahocevar/recover-from-conflict-4036
Recover from bad merge conflict resolution in #4036
2015-10-08 15:34:37 +02:00
Andreas Hocevar
d429eba4ae Merge pull request #3858 from Jebjum/master
Fix graticule on wrapped views
2015-10-08 15:27:37 +02:00
Andreas Hocevar
dc0c0877d7 Recover from bad merge conflict resolution in #4036 2015-10-08 15:18:11 +02:00
Andreas Hocevar
21d001b22a Merge pull request #4036 from alvinlindstam/fix-modify-events
Fix modify interaction event order
2015-10-08 12:23:38 +02:00
Alvin Lindstam
487c22ceae Fix miswritten test 2015-10-08 12:23:11 +02:00
Alvin Lindstam
72a9460ff6 Fix modify event trigger order, should trigger modifystart before any modification and modifyend last. 2015-10-08 12:23:11 +02:00
Andreas Hocevar
46a1140583 Merge pull request #4036 from alvinlindstam/fix-modify-events
Fix modify interaction event order
2015-10-08 12:17:57 +02:00
Andreas Hocevar
f95b154117 Merge pull request #4116 from ahocevar/overviewmap-view
Make ol.control.OverviewMap's view configurable
2015-10-08 11:44:38 +02:00
Andreas Hocevar
7c5bec260b Merge pull request #4234 from tbarsballe/ogcwkt-proj4
Support OGC WKT proj4 def.units and def.to_meter
2015-10-07 20:59:00 +02:00
Torben Barsbsballe
7cefe56167 Support OGC WKT proj4 def.units and def.to_meter 2015-10-07 11:18:52 -07:00
Frédéric Junod
ce9ac92028 Merge pull request #4224 from fredj/simplify_rotate
Don't transform the angle into degrees to rotate the element
2015-10-07 09:04:41 +02:00
Andreas Hocevar
da830a7670 Merge pull request #4231 from ahocevar/revert-4217
Revert "Merge pull request #4217 from ThomasG77/clipboardjs-replacement"
2015-10-06 16:19:25 +02:00
Andreas Hocevar
e242c2ca1d Revert "Merge pull request #4217 from ThomasG77/clipboardjs-replacement"
This reverts commit 82e989b652, reversing
changes made to 0e83c90377.
2015-10-06 16:17:43 +02:00
Andreas Hocevar
82e989b652 Merge pull request #4217 from ThomasG77/clipboardjs-replacement
Replace ZeroClipboard with Clipboard.js to remove flash dependency
2015-10-06 16:08:15 +02:00
Frédéric Junod
0e83c90377 Merge pull request #4223 from fredj/rm_easing
Remove goog.fx.easing
2015-10-06 14:38:52 +02:00
Frédéric Junod
fb243807e8 Merge pull request #4222 from fredj/cleanup
Remove unnecessary cast
2015-10-06 14:27:55 +02:00
Frederic Junod
d495b19448 Don't transform the angle into degrees to rotate the element 2015-10-06 14:04:47 +02:00
Frederic Junod
ef5cdb0ec6 Remove goog.fx.easing 2015-10-06 14:00:06 +02:00
Frederic Junod
b3493c6382 Remove unnecessary cast 2015-10-06 11:26:39 +02:00
Andreas Hocevar
17bac04030 Merge pull request #4209 from gberaudo/remove_goog_string_remove
Remove goog.string.remove
2015-10-05 10:04:13 +02:00
Andreas Hocevar
e01c16c00b Merge pull request #4207 from gberaudo/remove_goog_string_startsWith
Remove goog.string.startsWith
2015-10-05 09:28:44 +02:00
Frédéric Junod
5abeaf3716 Merge pull request #4208 from gberaudo/remove_goog_string_trim
Remove goog.string.trim()
2015-10-05 09:06:32 +02:00
Andreas Hocevar
1d86ae3e3f Merge pull request #4216 from ahocevar/fill-stroke-boolean
Fix canvas replay which broke with 31a68e2
2015-10-05 08:57:36 +02:00
ThomasG77
7192a6d1a5 Replace ZeroClipboard with Clipboard.js to remove flash dependency 2015-10-05 01:23:20 +02:00
Andreas Hocevar
deea8060af Fix canvas replay which broke with 31a68e2
See #4192
2015-10-04 23:12:39 +02:00
Andreas Hocevar
faff14c44c Merge pull request #4164 from spatialillusions/patch-1 2015-10-02 11:11:08 +02:00
Andreas Hocevar
2d7d002c85 Fix coding style 2015-10-02 11:05:19 +02:00
Guillaume Beraudo
9b3f61a084 Remove goog.string.remove
Use standard replace method instead.
2015-10-01 14:54:04 +02:00
Frédéric Junod
4cf1ee769e Merge pull request #4202 from fredj/rm_appendChild
Remove use of goog.dom.appendChild
2015-10-01 14:49:15 +02:00
Frédéric Junod
0a617bef12 Merge pull request #4205 from fredj/cleanup
Minor cleanup
2015-10-01 14:23:43 +02:00
Guillaume Beraudo
fef1b0981e Remove goog.string.trim()
Replace with standard ECMAScript 5.1.
2015-10-01 14:14:06 +02:00
Guillaume Beraudo
b092bce4ff Remove goog.string.startsWith
Replace with simple indexOf test
2015-10-01 14:00:42 +02:00
Frederic Junod
ef9b64673e Remove unused local variables 2015-10-01 13:38:55 +02:00
Frederic Junod
4d53049a7f Remove unnecessary cast 2015-10-01 13:38:49 +02:00
Marc Jansen
900827987a Merge pull request #4203 from marcjansen/formatting-post-4184
Cosmetic changes to example html / css
2015-10-01 13:00:05 +02:00
Marc Jansen
53d079ed95 Cosmetic changes to example html / css 2015-10-01 12:35:53 +02:00
Marc Jansen
63ae481dae Merge pull request #4184 from jonataswalker/getfeatureinfo-example
Adjust iframe's position of GetFeatureInfo examples
2015-10-01 12:32:15 +02:00
Frederic Junod
9b6ad1b36f Remove use of goog.dom.appendChild
Use `parent.appendChild(child)` instead.
2015-10-01 12:06:38 +02:00
Marc Jansen
e5397cbfca Merge pull request #4192 from marcjansen/simpler-no-is-null
Remove use of goog.isNull in favor of simple truthy checks
2015-10-01 09:30:34 +02:00
Marc Jansen
a38ac3a07b Use !!expr and not the verbose expr !== null
This addresses review comments by @tschaub.
2015-10-01 09:18:53 +02:00
Marc Jansen
d5c5d651cb Remove goog.isNull in xml class 2015-10-01 09:18:53 +02:00
Marc Jansen
ef0153692e Remove goog.isNull in tileurlfunction class 2015-10-01 09:18:53 +02:00
Marc Jansen
5daf741922 Remove goog.isNull in tilecoord class 2015-10-01 09:18:53 +02:00
Marc Jansen
ae657518c5 Remove goog.isNull in view class 2015-10-01 09:18:53 +02:00
Marc Jansen
7d110c829f Remove goog.isNull in tilegrid class 2015-10-01 09:18:53 +02:00
Marc Jansen
369f5a6171 Remove goog.isNull in lrucache class 2015-10-01 09:18:53 +02:00
Marc Jansen
b11c9c3b9c Remove goog.isNull in proj class 2015-10-01 09:18:53 +02:00
Marc Jansen
7530e46cfa Remove goog.isNull in pointereventhandler class 2015-10-01 09:18:53 +02:00
Marc Jansen
2b84e0f245 Remove goog.isNull in overlay class 2015-10-01 09:18:53 +02:00
Marc Jansen
5502083af9 Remove goog.isNull in mapbrowserevent class 2015-10-01 09:18:53 +02:00
Marc Jansen
02fe825113 Remove goog.isNull in map class 2015-10-01 09:18:53 +02:00
Marc Jansen
6aa75c490b Remove goog.isNull in has class 2015-10-01 09:18:53 +02:00
Marc Jansen
89456e7906 Remove goog.isNull in graticule class 2015-10-01 09:18:53 +02:00
Marc Jansen
442caade91 Remove goog.isNull in geolocation class 2015-10-01 09:18:53 +02:00
Marc Jansen
e479411614 Remove goog.isNull in feature class 2015-10-01 09:18:53 +02:00
Marc Jansen
f360080fa7 Remove goog.isNull in dom class 2015-10-01 09:18:53 +02:00
Marc Jansen
e65384a407 Remove goog.isNull in deviceorientation class 2015-10-01 09:18:53 +02:00
Marc Jansen
3552f5ff66 Remove goog.isNull in attribution class 2015-10-01 09:18:53 +02:00
Marc Jansen
54d4434900 Remove goog.isNull in animation class 2015-10-01 09:18:53 +02:00
Marc Jansen
7ceb7a439e Remove goog.isNull in webgl classes 2015-10-01 09:18:53 +02:00
Marc Jansen
f9b07991e1 Remove goog.isNull in style classes 2015-10-01 09:18:53 +02:00
Marc Jansen
e1f477ad8c Remove goog.isNull in source classes 2015-10-01 09:18:52 +02:00
Marc Jansen
30e2f44825 Remove goog.isNull in image classes 2015-10-01 09:17:14 +02:00
Marc Jansen
138adf0509 Remove goog.isNull in renderer classes 2015-10-01 09:17:14 +02:00
Marc Jansen
31a68e21a5 Remove goog.isNull in render classes 2015-10-01 09:17:14 +02:00
Marc Jansen
f5788a32a7 Remove goog.isNull in layer classes 2015-10-01 09:17:14 +02:00
Marc Jansen
be2e4a33ae Remove goog.isNull in interaction classes 2015-10-01 09:17:14 +02:00
Marc Jansen
3c4e663224 Remove goog.isNull in geom classes 2015-10-01 09:17:14 +02:00
Marc Jansen
eb5088eb40 Remove goog.isNull in format classes 2015-10-01 09:17:14 +02:00
Marc Jansen
d728c71f02 Remove goog.isNull in control classes 2015-10-01 09:15:15 +02:00
Andreas Hocevar
8813180d41 Merge pull request #4187 from ahocevar/dashy-tileurl
Fix {-y} template calculation for custom (TMS) tile grids
2015-10-01 08:11:05 +02:00
Tim Schaub
6bdacced92 Merge pull request #4176 from tschaub/remove-isdefandnotnull
Remove use of goog.isDefAndNotNull().
2015-10-01 00:05:57 -06:00
Marc Jansen
74fffd5851 Merge pull request #4200 from marcjansen/no-object-get
Do not use goog.object.get
2015-10-01 07:09:57 +02:00
Marc Jansen
c4d5036878 Do not use goog.object.get 2015-09-30 22:27:39 +02:00
Andreas Hocevar
e6c5fa9cd7 Merge pull request #4198 from denilsonsa/patch-2
Improve ol.control.Rotate.prototype.resetNorth_ performance
2015-09-30 16:26:09 +02:00
Frédéric Junod
d29db03863 Merge pull request #4197 from denilsonsa/patch-1
Remove blur action on MOUSEOUT on Zoom Out button
2015-09-30 14:42:47 +02:00
Denilson Figueiredo de Sá
c8f0bb0ade Improve ol.control.Rotate.prototype.resetNorth_ performance
Changing. resetNorth_ function from O(n) to O(1).

To reproduce this issue, open the developer console and execute:

    map.getView().setRotation(5000000000);

Then click on the rotation button. Before the commit, it takes a few
seconds, after this commit it is instantaneous.

In addition, due to limited floating point precision, the previous code
calculates a different value from this one.
2015-09-30 09:37:51 -03:00
Denilson Figueiredo de Sá
e7ba63e020 Remove blur action on MOUSEOUT on Zoom Out button
This is a follow up of commit 761aa0ea5c.
That commit removed ol.control.Control.bindMouseOutFocusOutBlur function,
but forgot to remove this piece of code here.
2015-09-30 08:56:35 -03:00
Andreas Hocevar
8e122334ed Merge pull request #4195 from awaterme/Issue-4171
#4171: Prefer current layout as default on MultiLineString.setLineStrings()
2015-09-30 11:07:28 +02:00
Andreas Watermeyer
ea8ffd8b6a Issue #4171: Prefer current layout as default on MultiLineString.setLineStrings() 2015-09-30 09:21:14 +02:00
Andreas Hocevar
8248ec63ba Fix {-y} template calculation for custom (TMS) tile grids
Previously, {-y} only worked for the standard web mercator tile grid. Now
a tile grid with an extent is required (which we get from
ol.tilegrid.createXYZ() anyway), and then the y calculation for TMS style
tile grids works as expected.
2015-09-30 09:07:55 +02:00
Andreas Hocevar
79766ad25c Merge pull request #4172 from awaterme/Issue-4171
#4171: Prefer current layout as default on Multipolygon.setPolygons()
2015-09-29 22:58:12 +02:00
Marc Jansen
901eee1887 Merge pull request #4190 from marcjansen/no-goog-functions-constant
Remove use of goog.functions.constant
2015-09-29 22:11:50 +02:00
Marc Jansen
cd5b15fa55 Remove use of goog.functions.constant 2015-09-29 20:28:06 +02:00
Tim Schaub
ab87eb8af0 Remove remaining goog.isDefAndNotNull() calls 2015-09-29 09:51:41 -06:00
Tim Schaub
1aca93d297 Remove goog.isDefAndNotNull() from vector sources 2015-09-29 09:48:19 -06:00
Tim Schaub
871575607f Remove goog.isDefAndNotNull() from tileutfgridsource.js 2015-09-29 09:44:03 -06:00
Andreas Watermeyer
509cb3a3c9 Issue #4171: Prefer current layout as default on Multipolygon.setPolygons() 2015-09-29 17:40:46 +02:00
Tim Schaub
5acf9023d0 Remove goog.isDefAndNotNull() from deviceorientation.js 2015-09-29 09:39:19 -06:00
Frédéric Junod
fd729216b5 Merge pull request #4188 from fredj/rm_goog_object_getKeys
Remove use of goog.object.getKeys
2015-09-29 17:33:13 +02:00
Tim Schaub
b48cabee28 Remove unnecessary goog.isDefAndNotNull() calls 2015-09-29 09:32:51 -06:00
Tim Schaub
ed3dcd636f Replace !goog.isDefAndNotNull() with falsey checks 2015-09-29 09:32:51 -06:00
Tim Schaub
ac7db89a91 Replace goog.isDefAndNotNull() with truthy checks 2015-09-29 09:32:51 -06:00
Marc Jansen
8209ed0a4c Merge pull request #4189 from marcjansen/null-function
Replace goog.nullFunction with ol.nullFunction
2015-09-29 17:25:18 +02:00
Marc Jansen
bc58c383ba Replace goog.nullFunction with ol.nullFunction 2015-09-29 16:39:35 +02:00
Frederic Junod
d2dd7584d8 Remove use of goog.object.getKeys 2015-09-29 14:24:34 +02:00
Frederic Junod
23de622d29 Use goog.object.isEmpty instead of goog.object.getKeys 2015-09-29 14:24:34 +02:00
Frédéric Junod
fbef99ae96 Merge pull request #4165 from fredj/es5
Use ECMAScript 5.1 Array functions instead of goog.array
2015-09-29 14:09:32 +02:00
jonataswalker
7d2c8be391 Add 'translatestart', 'translateend' and 'translating' events to 'ol.interaction.Translate' 2015-09-29 08:06:54 -03:00
jonataswalker
4a66289e5a Add 'translatestart', 'translateend' and 'translating' events to 'ol.interaction.Translate' 2015-09-29 06:59:05 -03:00
jonataswalker
9a923cc5dc Add 'translatestart', 'translateend' and 'translatedrag' events to 'ol.interaction.Translate' 2015-09-29 06:59:05 -03:00
jonataswalker
0188809918 Add 'translatestart', 'translateend' and 'translatedrag' events to 'ol.interaction.Translate' 2015-09-29 06:59:05 -03:00
Frederic Junod
496cece074 Remove use of goog.array.forEach 2015-09-29 10:55:17 +02:00
Frederic Junod
cd152cca14 Use a for loop instead of goog.array.forEach
The variable is a NodeList, not an Array.
https://developer.mozilla.org/en-US/docs/Web/API/NodeList#Why_is_NodeList_not_an_Array
2015-09-29 10:55:17 +02:00
Frederic Junod
252e60b5af Remove use of goog.array.indexOf 2015-09-29 10:55:17 +02:00
Frederic Junod
f49e82ade1 Remove use of goog.array.filter 2015-09-29 10:54:55 +02:00
Frederic Junod
9e2a393426 Remove use of goog.array.map 2015-09-29 10:54:55 +02:00
Frédéric Junod
4e7f558234 Merge pull request #4181 from fredj/ol.array.includes
Remove use of goog.array.contains
2015-09-29 10:54:45 +02:00
Frederic Junod
da611b9cb5 Use ol.array.includes instead of goog.array.indexOf 2015-09-29 10:46:04 +02:00
Frederic Junod
88c3891bef Replace goog.array.contains with ol.array.includes 2015-09-29 10:42:07 +02:00
Frédéric Junod
504e67303f Merge pull request #4162 from fredj/rm_legacy_ie
Remove ol.LEGACY_IE_SUPPORT
2015-09-29 10:37:04 +02:00
Tim Schaub
ba5b950d5c Merge pull request #4174 from tschaub/fewer-layer-props
Remove hue, saturation, contrast, and brightness as layer properties.
2015-09-29 01:16:11 -06:00
Éric Lemoine
5c274adddb Do not export ol.webgl.Context
We don't need to export the `ol.export.Context` constructor as users won't create `ol.webgl.Context` instances themselves.
2015-09-28 20:21:40 +02:00
jonataswalker
d939fcec3f Adjust iframe's position of GetFeatureInfo examples 2015-09-28 13:49:34 -03:00
Éric Lemoine
e8257e805d Merge pull request #4183 from elemoine/remove-extra-api
Remove @api on getHitDetectionFramebuffer
2015-09-28 16:34:51 +02:00
Éric Lemoine
4c32ec4d67 Remove @api on getHitDetectionFramebuffer
This removes the `@api` marker on `getHitDetectionFramebuffer`. I think this was added by mistake in 7404204.
2015-09-28 16:11:55 +02:00
Marc Jansen
fd69e5f2be Merge pull request #4179 from marcjansen/no-goog-now
Use Date.now() instead of goog.now()
2015-09-28 16:00:49 +02:00
Frederic Junod
e877a21b8e Remove legacy IE support 2015-09-28 15:36:49 +02:00
Marc Jansen
2ed3f28ab8 Use Date.now() instead of goog.now() 2015-09-28 15:23:36 +02:00
Tim Schaub
55908485f2 Add detail to the upgrade notes 2015-09-27 23:02:24 -06:00
Tim Schaub
d6f03697d7 Remove hue, saturation, contrast, and brightness 2015-09-27 13:16:30 -06:00
Tim Schaub
6c5775e6f6 Merge pull request #4175 from tschaub/clamp
Remove use of goog.math.clamp().
2015-09-27 13:13:25 -06:00
Andreas Hocevar
28eef6c479 Merge pull request #4173 from ahocevar/zoom-only-when-changed
Only animate when resolution is about to be changed
2015-09-27 21:13:02 +02:00
Andreas Hocevar
4e48170fac Only animate when resolution is about to be changed 2015-09-27 20:38:50 +02:00
Tim Schaub
f746cb7f57 Use ol.math.clamp() 2015-09-27 12:26:21 -06:00
Tim Schaub
5cac9d61cc Merge pull request #4129 from openlayers/no-is-def
Remove use of goog.isDef.
2015-09-27 12:10:10 -06:00
Tim Schaub
29a1ea9ae3 Remove remaining goog.isDef() calls 2015-09-27 11:13:58 -06:00
Tim Schaub
c48ce003ba Remove unnecessary goog.isDef() checks from map.js 2015-09-27 11:03:27 -06:00
Tim Schaub
27d1e808b8 Replace goog.isDef(foo[bar]) with bar in foo 2015-09-27 10:58:39 -06:00
Tim Schaub
b3b31ea16d Inline various goog.isDef() calls 2015-09-27 10:51:03 -06:00
Tim Schaub
83c59ee255 Inline goog.isDef() calls for properties 2015-09-27 10:40:20 -06:00
Tim Schaub
36e336f406 Inline !goog.isDef() calls for properties 2015-09-27 10:37:20 -06:00
Tim Schaub
e3951fa3c6 Inline simple goog.isDef() calls 2015-09-27 10:34:44 -06:00
Tim Schaub
a86c270f6a Inline simple !goog.isDef() calls 2015-09-27 10:31:16 -06:00
Tim Schaub
3a0683f373 Inline !goog.isDef() property checks 2015-09-27 10:24:38 -06:00
Tim Schaub
6638ae855d Inline simple !goog.isDef() checks 2015-09-27 10:23:30 -06:00
Tim Schaub
b36d697585 Inline goog.isDef() property checks 2015-09-27 10:21:50 -06:00
Tim Schaub
7659e47e07 Inline simple goog.isDef() checks 2015-09-27 10:18:44 -06:00
Tim Schaub
cf5eadebaa Define options 2015-09-27 10:11:30 -06:00
Tim Schaub
0927c55b3c Toward natural JavaScript syntax 2015-09-25 12:16:42 -06:00
Marc Jansen
d610b206f7 Adjust checks against undefined as suggested
This commit changes the various checks against undefined as suggested by
@elemoine, see e.g. his comments on 38636513bfc3792125de2e711a24bd3c898875ac.
2015-09-25 11:37:30 -06:00
Marc Jansen
7352ddeb89 Use ol.isDef in assertion
This addresses comment e558b5db63 (commitcomment-13406867)
by @elemoine.
2015-09-25 11:35:13 -06:00
Marc Jansen
8eea827343 Remove goog.isDef from maprenderer 2015-09-25 11:35:13 -06:00
Marc Jansen
710353784b Remove goog.isDef from render/vector 2015-09-25 11:35:13 -06:00
Marc Jansen
06b34055d1 Remove goog.isDef from touchsource 2015-09-25 11:35:13 -06:00
Marc Jansen
3de0aad52a Remove goog.isDef from pointerevent 2015-09-25 11:35:13 -06:00
Marc Jansen
4fa590965c Remove goog.isDef from vectorlayer 2015-09-25 11:35:12 -06:00
Marc Jansen
2b53d43faa Remove goog.isDef from tilelayer 2015-09-25 11:35:12 -06:00
Marc Jansen
0f55d173b8 Remove goog.isDef from layerbase 2015-09-25 11:35:12 -06:00
Marc Jansen
cbb72c1ce4 Remove goog.isDef from layer 2015-09-25 11:35:12 -06:00
Marc Jansen
66ad8364e0 Remove goog.isDef from imagelayer 2015-09-25 11:35:12 -06:00
Marc Jansen
b5ecc6e43c Remove goog.isDef from heatmaplayer 2015-09-25 11:35:12 -06:00
Marc Jansen
c1c07e2f3c Remove goog.isDef from snapinteraction 2015-09-25 11:35:12 -06:00
Marc Jansen
4b993727c8 Remove goog.isDef from selectinteraction 2015-09-25 11:35:12 -06:00
Marc Jansen
6c581b8eaf Remove goog.isDef from pointerinteraction 2015-09-25 11:35:11 -06:00
Marc Jansen
779811b52d Remove goog.isDef from pinchzoominteraction 2015-09-25 11:35:11 -06:00
Marc Jansen
c7a98f19b7 Remove goog.isDef from pinchrotateinteraction 2015-09-25 11:35:11 -06:00
Marc Jansen
10d4aeb1c6 Remove goog.isDef from mousewheelzoominteraction 2015-09-25 11:35:11 -06:00
Marc Jansen
20b694b8c1 Remove goog.isDef from keyboardpaninteraction 2015-09-25 11:35:11 -06:00
Marc Jansen
13273fb632 Add explicit type casts for options.duration 2015-09-25 11:35:11 -06:00
Marc Jansen
05da0ceaab Use ol.isDef when testing options.duration 2015-09-25 11:35:11 -06:00
Marc Jansen
68442578ba Use ol.isDef when checking booleans 2015-09-25 11:35:11 -06:00
Marc Jansen
0e4c73072f Remove goog.isDef from modifyinteraction 2015-09-25 11:35:11 -06:00
Marc Jansen
bd7ff16537 Remove goog.isDef from keyboardzoominteraction 2015-09-25 11:28:56 -06:00
Marc Jansen
241047795f Remove goog.isDef from interactiondefaults 2015-09-25 11:28:56 -06:00
Marc Jansen
293c65088d Remove goog.isDef from interaction 2015-09-25 11:28:56 -06:00
Marc Jansen
c56ee19763 Remove goog.isDef from dragzoominteraction 2015-09-25 11:28:56 -06:00
Marc Jansen
08699e2b04 Remove goog.isDef from dragrotateinteraction 2015-09-25 11:28:55 -06:00
Marc Jansen
35dfa6c811 Remove goog.isDef from dragrotateandzoominteraction 2015-09-25 11:28:55 -06:00
Marc Jansen
3e49fc6081 Remove goog.isDef from dragpaninteraction 2015-09-25 11:28:55 -06:00
Marc Jansen
a42e4d4f4e Remove goog.isDef from dragboxinteraction 2015-09-25 11:28:55 -06:00
Marc Jansen
631b92412e Remove goog.isDef from draganddropinteraction 2015-09-25 11:28:55 -06:00
Marc Jansen
27fb1b6fde Remove goog.isDef from geom/linestring 2015-09-25 11:28:55 -06:00
Marc Jansen
2b77e1601a Remove goog.isDef from doubleclickzoominteraction 2015-09-25 11:28:55 -06:00
Marc Jansen
eeba5f4d10 Remove goog.isDef from drawinteraction 2015-09-25 11:28:55 -06:00
Bart van den Eijnden
ceb39b0d07 Add docs for count and startIndex (WFS paging) 2015-09-25 11:28:55 -06:00
Tim Schaub
d7ca176362 Remove goog.isDef from more formats 2015-09-25 11:28:55 -06:00
Tim Schaub
b0fe36e609 Remove goog.isDef for geometries 2015-09-25 11:28:54 -06:00
Tim Schaub
1fceb4a709 Remove goog.isDef from formats 2015-09-25 11:28:54 -06:00
Tim Schaub
5350e9ba37 Remove goog.isDef from device orientation, dom, extent, and feature 2015-09-25 11:28:54 -06:00
Marc Jansen
390153adc8 Remove goog.isDef from coordinate.js 2015-09-25 11:28:54 -06:00
Tim Schaub
a096ec5bf7 Remove goog.isDef from controls (-278 B) 2015-09-25 11:28:54 -06:00
Tim Schaub
007194a18f Remove goog.isDef from attributioncontrol.js (-33 B) 2015-09-25 11:28:54 -06:00
Tim Schaub
4c0d857f41 Remove goog.isDef from colormatrix.js (-12 B) 2015-09-25 11:28:54 -06:00
Tim Schaub
c8e9525f3b Remove goog.isDef from attribution.js through color.js (-54 B) 2015-09-25 11:28:54 -06:00
Tim Schaub
37d0176642 Remove goog.isDef from animation.js (-42 B) 2015-09-25 11:28:53 -06:00
Andreas Watermeyer
7c3bf59084 Issue #4171: Prefer current layout as default on Multipolygon.setPolygons() 2015-09-25 13:58:44 +02:00
Tim Schaub
e4ea5e17f7 Merge pull request #4168 from wlerner/master
Tile preload example wording (fixes #4147)
2015-09-24 11:16:54 -06:00
Warren
0acb2a335d Modified the preload.html example to reflect the correct position of the maps displayed 2015-09-24 12:18:23 -04:00
Frédéric Junod
c06d7aeacc Merge pull request #4167 from fredj/externs-cleanup
Remove externs in externs/closure-compiler.js
2015-09-24 16:03:08 +02:00
Frederic Junod
e77d705d52 Update externs/jquery-1.9.js
From https://github.com/google/closure-compiler/blob/master/contrib/externs/jquery-1.9.js
2015-09-24 14:47:39 +02:00
Frederic Junod
7252227ac6 Remove externs in externs/closure-compiler.js
Fixed upstream:
 * https://github.com/google/closure-compiler/pull/1139
 * https://github.com/google/closure-compiler/pull/1140
2015-09-24 14:21:27 +02:00
Éric Lemoine
3ddc260687 Merge pull request #4166 from elemoine/upgrade-closure
Use version 20150920 of Closure Compiler
2015-09-24 13:43:50 +02:00
Éric Lemoine
f30744c0b8 Simplify test-rendering.js
Now that https://github.com/laurentj/slimerjs/issues/333 is properly fixed (see 911fcb671a) we can no longer read Slimer's exit code from a file. Instead, we can just use the process exit code, which simplifies the test-rendering.js script.
2015-09-24 13:30:54 +02:00
Éric Lemoine
c37e80cd97 Use version 20150920 of Closure Compiler 2015-09-24 12:02:31 +02:00
Måns Beckman
0a28c4282e Adding check to see if already loaded images taints the canvas 2015-09-23 20:03:33 +02:00
Frédéric Junod
dd8422c8a0 Merge pull request #4159 from fredj/rm-goog.object.containsKey
Remove use of goog.object.containsKey
2015-09-23 13:31:14 +02:00
Frederic Junod
ee4f009d2f Remove use of goog.object.containsKey 2015-09-23 12:24:54 +02:00
Frederic Junod
901c55bf41 Remove unnecessary newlines 2015-09-23 12:18:50 +02:00
Frederic Junod
e884a8704d Remove use of goog.object.containsKey 2015-09-23 12:17:02 +02:00
Éric Lemoine
b53e4e39ad Merge pull request #4157 from elemoine/typo
Fix typo in doc
2015-09-23 10:25:52 +02:00
Éric Lemoine
6963c3c037 Merge pull request #4138 from ekargee/doc_text
Enhanced documentation for ol.style.Text
2015-09-23 10:15:44 +02:00
Éric Lemoine
d0621a1949 Fix typo in doc 2015-09-23 10:13:49 +02:00
Éric Lemoine
0c21afc3e4 Merge pull request #4151 from elemoine/modify-assert
Remove bogus assertion
2015-09-23 10:12:07 +02:00
Frédéric Junod
9a83db1c85 Merge pull request #4110 from fredj/cleanup
Minor cleanups
2015-09-23 09:55:33 +02:00
Éric Lemoine
85498983c0 Merge pull request #4156 from elemoine/custom-interactions
Rename drag-features example to custom-interactions
2015-09-23 09:54:57 +02:00
Éric Lemoine
9894ceda2a Remove bogus assertion
This commit removes an incorrect assertion from the modify interaction, which currently triggers when adding vertices to a line string. A new condition is added to the `if` statement to prevent a compilation error. In practice, `depth` and `segmentDataMatch.depth` are either both defined or both undefined.
2015-09-23 09:42:02 +02:00
Éric Lemoine
880be210a1 Rename drag-features example to custom-interactions 2015-09-23 09:16:29 +02:00
Frédéric Junod
7a38a8945c Merge pull request #4150 from fredj/rm-goog.object.remove
Remove use of goog.object.remove
2015-09-23 09:01:02 +02:00
Tim Schaub
cdf6fe44d8 Merge pull request #4145 from tschaub/simplified-geom
API method for simplifying geometries.
2015-09-22 11:45:42 -06:00
Tim Schaub
483f567d26 Working Wikipedia links 2015-09-22 10:39:19 -06:00
Tim Schaub
436561d9dd Make geom.simplify() exportable 2015-09-22 10:34:43 -06:00
Éric Lemoine
5162fda686 Merge pull request #4153 from elemoine/select-features
Add a "features" option to ol.interaction.Select
2015-09-22 17:53:39 +02:00
Tim Schaub
250e86e5f2 Update simplification docs 2015-09-22 09:49:42 -06:00
Éric Lemoine
0bc8858760 Add a "features" option to ol.interaction.Select 2015-09-22 17:02:14 +02:00
ekargee
3978dd87be Updated documentation for ol.style.Text - font and text 2015-09-22 18:57:49 +08:00
Éric Lemoine
0def9728bb Merge pull request #4144 from elemoine/feature-animation
Set context.fillStyle to a string
2015-09-22 12:13:12 +02:00
Frederic Junod
b128675e60 Remove use of goog.object.remove 2015-09-22 12:08:09 +02:00
Frédéric Junod
9f57e57400 Merge pull request #4149 from fredj/no-is-empty
Remove use of goog.array.isEmpty
2015-09-22 12:07:45 +02:00
Frederic Junod
0d23ab44b3 Remove use of goog.array.isEmpty 2015-09-22 11:25:04 +02:00
Jonatas Walker
b5a6eba175 Merge pull request #1 from openlayers/master
Sync from original
2015-09-22 06:03:29 -03:00
Tobias Sauerwein
44b1c9da89 Merge pull request #4139 from tsauerwein/turf-jsts-example
Add turf.js and JSTS example
2015-09-22 08:47:45 +02:00
Tim Schaub
e81b68ce8b API method for simplifying geometries 2015-09-21 14:20:16 -06:00
Éric Lemoine
167480bde6 context.fillStyle should be a string
The value we set context.fillStyle to should always be a string. This commit fixes a bug in circlestyle.js where we did set context.fillStyle to an array instead of a string.
2015-09-21 20:49:05 +02:00
Éric Lemoine
4f45bbc05d ol.style.Stroke has no "opacity" option 2015-09-21 20:49:05 +02:00
tsauerwein
8a703640d0 Add example with turf.js 2015-09-21 13:44:17 +02:00
tsauerwein
a5626a0573 Add example with JSTS 2015-09-21 13:44:10 +02:00
Elizabeth-Kate Gulland
33dbaccb68 Enhanced documentation for ol.style.Text 2015-09-19 06:26:41 +02:00
Tobias Sauerwein
f65129850d Merge pull request #4136 from marcjansen/fork-me
Fix the 'click-to-fork' link in contributer notes
2015-09-19 11:02:53 +09:00
Marc Jansen
851d7e065a Fix the 'click-to-fork' link in contributer notes 2015-09-19 03:46:19 +02:00
Andreas Hocevar
37112e07b6 Merge pull request #4132 from tsauerwein/doc-lat-lon
Update quickstart tutorial
2015-09-19 08:23:21 +09:00
tsauerwein
263960aad1 Use ol.proj.fromLonLat 2015-09-18 16:42:19 +09:00
tsauerwein
b1f56c1e98 Fix lat/lon order 2015-09-18 16:35:44 +09:00
Marc Jansen
73b67f7a74 Merge pull request #4111 from marcjansen/text-default-fill
Use a blackish default for filling texts
2015-09-18 07:28:17 +09:00
Marc Jansen
80995159b1 Use a blackish default for filling texts 2015-09-17 16:52:59 +02:00
Frédéric Junod
bfa16529de Merge pull request #4120 from kalbermattenm/featureoverlay
Remove invalid link to featureOverlay in API doc
2015-09-17 11:53:23 +02:00
Michael Kalbermatten
9543cc10dd Remove invalid link to featureOverlay in API doc 2015-09-17 11:12:54 +02:00
Pierre GIRAUD
7896350fe4 Merge pull request #4117 from pgiraud/foreachfeatureatcoordinate_nosource
forEachFeatureAtPixel shouldn't fail if layer has no source
2015-09-16 13:53:02 +02:00
Pierre GIRAUD
badf14e0f1 forEachFeatureAtPixel shouldn't fail if layer has no source 2015-09-16 13:27:01 +02:00
Andreas Hocevar
ea8ad4fc16 Make ol.control.OverviewMap's view configurable
This is useful for creating an OverviewMap in a different projection than
EPSG:3857.
2015-09-16 17:28:16 +09:00
Frederic Junod
139bcca26a Use goog.array.forEach to unlisten the array of keys 2015-09-15 10:05:57 +02:00
Frederic Junod
a613420953 Don't use deprecated ol.Observable#unByKey function 2015-09-15 10:01:56 +02:00
Frederic Junod
946ef8878d Export ol.Observable#dispatchEvent function 2015-09-15 09:56:26 +02:00
Éric Lemoine
e88f06b70f Merge pull request #4106 from elemoine/search-focus
Focus to search field on page load
2015-09-15 16:22:07 +09:00
Marc Jansen
da627dda4b Merge pull request #4079 from marcjansen/mark-required-options
Automatically mark required options in API-docs
2015-09-15 16:13:36 +09:00
Frédéric Junod
059ee6eaa5 Merge pull request #4108 from fredj/touchAction_extern
Add missing CSSProperties.prototype.touchAction extern
2015-09-14 14:51:03 +02:00
Frederic Junod
8afa911eb5 Add missing CSSProperties.prototype.touchAction extern 2015-09-14 14:26:43 +02:00
Frédéric Junod
a6f16e58e5 Merge pull request #4107 from fredj/touchAction
Prevent page zoom on IE Edge
2015-09-14 13:54:49 +02:00
Frederic Junod
758118e00d Prevent page zoom on IE Edge
The deprecated msTouchAction property was removed in IE Edge.
2015-09-14 13:38:35 +02:00
Éric Lemoine
1bebf55d30 Focus to search field on page load
This uses the "autofocus" on the search field to focus the search field on page load.
2015-09-14 09:15:12 +02:00
Marc Jansen
32c776ba9f Merge pull request #3969 from samuellapointe/MouseZoomSimple
Add an option to use the mouse's location as an anchor when zooming
2015-09-12 08:57:22 +02:00
Samuel Lapointe
c2c4dbfc32 Add a zoom setting to MouseWheelZoomInteraction
By default, zooming in or out zooms using the mouse's location
as an anchor, which makes it possible to navigate the map
using scrolling only, and makes zooming in more intuitive.

This commit adds a new useAnchor option to the MouseWheelZoom
interaction. It is enabled by default, which changes nothing
to the current behavior of the interaction. When disabled,
the interaction stops registering its lastAnchor_ value. This
turns the zoom into a very basic one, that zooms to the center
of the screen.

To use the map center zoom, set the useAnchor option to
false when creating the MouseWheelZoomInteraction, or use its
setMouseAnchor function.
2015-09-11 16:20:10 -04:00
Éric Lemoine
b2566cb64c Merge pull request #4101 from elemoine/release-v3.9.0
Release v3.9.0
2015-09-10 10:57:13 +02:00
Éric Lemoine
dedf0a5d63 Update package version to 3.9.0 2015-09-10 10:45:01 +02:00
Éric Lemoine
41bb512952 Changelog for v3.9.0 2015-09-10 10:44:20 +02:00
Éric Lemoine
a1da682722 Merge pull request #4055 from fgravin/graticulePerf
Improve graticule perf
2015-09-10 09:31:10 +02:00
Frédéric Junod
6da7cf3f84 Merge pull request #4088 from fredj/update_jshint
Update jshint to v2.8.0
2015-09-10 09:28:07 +02:00
Pierre GIRAUD
216be8a673 Merge pull request #4089 from pgiraud/select_interaction
SelectEventType in ol.interaction namespace
2015-09-10 09:24:54 +02:00
Tim Schaub
411419e45f Merge pull request #4095 from tschaub/drag-zoom
Zoom to the extent of the drag box.
2015-09-09 11:21:49 -06:00
Tim Schaub
6617bdd57f Drag zoom interaction tests 2015-09-09 10:49:08 -06:00
Tim Schaub
6838fdd4c9 Merge pull request #4084 from tschaub/circle-exports
Fewer circle exports.
2015-09-09 09:12:42 -06:00
Tim Schaub
085c2d7e33 Merge pull request #4094 from tschaub/set-attributions
Allow source.setAttributions() to be exported.
2015-09-09 09:12:08 -06:00
Éric Lemoine
6c854ed056 Merge pull request #4096 from bjornharrtell/inheritdoc
Reinstate inheritdoc to fix #4082
2015-09-09 07:59:29 +02:00
Frédéric Junod
d0b87ecd63 Merge pull request #4091 from fredj/cleanup
Remove unused ol.renderer.webgl.Map.DEFAULT_COLOR_VALUES_
2015-09-09 07:43:55 +02:00
Frédéric Junod
0469a31ea9 Merge pull request #4092 from fredj/coding_style
Minor coding style fixes
2015-09-09 07:43:42 +02:00
Björn Harrtell
31f2e334cf Reinstate inheritdoc to fix #4082 2015-09-09 07:43:22 +02:00
Tim Schaub
b7f199c8cd Zoom to the extent of the drag box 2015-09-08 23:07:47 -06:00
Tim Schaub
d3a4fd115b Merge pull request #4083 from tschaub/missing-description
Add API descriptions.
2015-09-08 22:35:31 -06:00
Tim Schaub
0fec4c5ff7 Allow source.setAttributions() to be exported 2015-09-08 21:41:57 -06:00
Frederic Junod
d0722cab6a Use bracket notation instead of goog.object.get 2015-09-08 16:33:15 +02:00
Frederic Junod
f02ad3e584 Use bracket notation instead of goog.object.set 2015-09-08 16:33:12 +02:00
Frederic Junod
bb5b711dac Remove unused ol.renderer.webgl.Map.DEFAULT_COLOR_VALUES_ 2015-09-08 15:40:35 +02:00
Pierre GIRAUD
7c2fffed68 SelectEventType in ol.interaction namespace 2015-09-08 14:26:39 +02:00
Frederic Junod
989adabb1f Update jshint to v2.8.0 2015-09-08 10:41:12 +02:00
Frédéric Junod
1e78c45466 Merge pull request #4078 from fredj/jscomp_error
Enable all the compiler checks
2015-09-07 15:32:43 +02:00
Éric Lemoine
9b738b6cb6 Merge pull request #4085 from oterral/fix_nested_doc
Parse nested document tag
2015-09-07 14:58:08 +02:00
Frederic Junod
4aa2369244 Add missing type annotation in ol.format.WMSCapabilities
The error reported by the compiler was:
```
ERR! compile src/ol/format/wmscapabilitiesformat.js:160: ERROR - inconsistent return type
ERR! compile found   : Array
ERR! compile required: (null|ol.Extent|undefined)
ERR! compile   return [
ERR! compile          ^
ERR! compile
```
2015-09-07 14:48:48 +02:00
Frederic Junod
d702aad450 Fix return annotation in shaded-relief example 2015-09-07 14:48:48 +02:00
Frederic Junod
d41bb2663b Add esrijson externs in config/example.json 2015-09-07 14:48:48 +02:00
Frederic Junod
07b1f5ea45 Enable all the compiler checks 2015-09-07 14:48:48 +02:00
Frederic Junod
bf35b32a20 Suppress extraRequire compiler check in generated exports 2015-09-07 14:48:48 +02:00
oterral
dba6e04a1b Parse nested document tag 2015-09-07 13:14:24 +02:00
Frédéric Junod
cb9054f7fd Merge pull request #4060 from fredj/unnecessary_cast
Remove unnecessary cast
2015-09-07 09:33:03 +02:00
Frédéric Junod
ad56dea388 Merge pull request #4064 from fredj/lazy_ol.style.defaultStyleFunction
Use a private variable to cache the default style array
2015-09-07 09:24:52 +02:00
Frederic Junod
529f869803 Remove unnecessary cast
Found by the latest version of closure-compiler (v20150729)
2015-09-07 09:15:34 +02:00
Frederic Junod
5371d8dd34 Use a private variable to cache the default style array
See #1815
Fixes #4063
2015-09-07 09:12:52 +02:00
Tim Schaub
fc51ab05f4 Upgrade notes for circle symbolizer 2015-09-06 10:11:09 -06:00
Tim Schaub
053538cc42 Anchor, origin, and size are neither settable nor gettable for circle 2015-09-06 09:57:25 -06:00
Tim Schaub
8311f090de Missing ol.render.webgl.Immediate#drawAsync description 2015-09-06 09:46:33 -06:00
Tim Schaub
a09c07a427 Missing vector context description 2015-09-06 09:41:56 -06:00
Tim Schaub
eed926fa94 Missing ol.control.OverviewMap#getCollapsed description 2015-09-06 09:36:00 -06:00
Tim Schaub
fe153b94fb Missing drag and drop event description 2015-09-06 09:31:51 -06:00
Tim Schaub
fce931afbe Missing ol.render.Event#frameState description 2015-09-06 08:39:50 -06:00
Tim Schaub
d036602cec Missing ol.source.WMTS.optionsFromCapabilities description 2015-09-06 08:37:39 -06:00
Tim Schaub
1a240ccf9d Missing image style method descriptions 2015-09-06 08:35:38 -06:00
Tim Schaub
91f47a876c Missing ol.Observable#getRevision description 2015-09-06 07:57:41 -06:00
Tim Schaub
9f5d8d3901 Missing ol.ImageTile#getImage description 2015-09-06 07:56:15 -06:00
Tim Schaub
0bfd22b235 Missing ol.Feature#getId description 2015-09-06 07:54:38 -06:00
Tim Schaub
965a27b115 Merge pull request #4081 from tschaub/workshop-link
Update link to workshop.
2015-09-04 17:36:32 -06:00
Tim Schaub
47fbbf6ce2 Update link to workshop 2015-09-04 13:51:25 -06:00
Frédéric Junod
cc6e0f1b3c Merge pull request #4062 from fredj/rm_ol.xml.makeParsersNS
Remove ol.xml.makeParsersNS and use ol.xml.makeStructureNS instead
2015-09-04 17:03:17 +02:00
Éric Lemoine
0001e0989b Merge pull request #3986 from alvinlindstam/feature/url-function
Modify 'url' option of ol.source.Vector to accept a function
2015-09-04 14:23:00 +02:00
Frédéric Junod
6d87fffb73 Merge pull request #4077 from fredj/jsdoc_const
Add missing const jsdoc annotation
2015-09-04 07:02:52 +02:00
Frédéric Junod
5760e427d2 Merge pull request #4080 from fredj/unused-require
Remove unused goog.require in examples
2015-09-03 18:53:47 +02:00
Éric Lemoine
c4d4962806 Merge pull request #4041 from elemoine/custom-build-issue
Fix custom build issue
2015-09-03 18:41:19 +02:00
Éric Lemoine
250cb35f8e Merge pull request #4059 from alvinlindstam/documentation/drag-example
Clarify drag interaction example to inform about ol.interaction.Translate
2015-09-03 17:54:40 +02:00
Frederic Junod
2b995fd8cf Remove unused goog.require 2015-09-03 17:47:20 +02:00
Marc Jansen
0a99d0f211 Automatically mark required options in API-docs 2015-09-03 16:44:12 +02:00
Éric Lemoine
fd4eff7292 Merge pull request #4069 from gberaudo/layer_zindex
Add Z-index to layers
2015-09-03 16:38:50 +02:00
Frederic Junod
6f40544732 Add missing const jsdoc annotation 2015-09-03 12:06:33 +02:00
Andreas Hocevar
4e58ebd360 Merge pull request #4076 from weskamm/projectiondocs
Add assertion for required option 'code' on ol.proj.Projection
2015-09-03 11:33:27 +02:00
Guillaume Beraudo
43f72031f9 Add Z-index layer ordering tests 2015-09-03 11:31:57 +02:00
Guillaume Beraudo
3811228ac7 Add Z-index to layers
This commit allows setting a z-index property on the layers and uses
it in the canvas, WEBGL and DOM map renderers for ordering the layers
before rendering.

Default z-index is 0 for managed layers and 1000 for unmanaged ones.
It allows always on bottom, always on top and more complex layer layouts.
2015-09-03 11:31:57 +02:00
Johannes Weskamm
c57f5e5f0a Add assertion for required option 'code' on ol.proj.Projection
Additionally clarify docs.
2015-09-03 11:15:41 +02:00
Bart van den Eijnden
0d32a49244 Merge pull request #4075 from bartvde/set-opacity-api
setOpacity of Image undefined
2015-09-03 09:17:02 +02:00
Bart van den Eijnden
6a0fa114da Make setOpacity on ol.style.Image API 2015-09-03 08:58:50 +02:00
Éric Lemoine
7b805ead9e Merge pull request #4044 from elemoine/continue-drawing
Add ol.interaction.Draw#continueDrawing
2015-09-02 17:36:50 +02:00
Éric Lemoine
95030cd838 Add ol.interaction.Draw#extend
This commit adds an `extend` method to the draw interaction. This method makes it possible to extend (continue drawing) an existing line string feature. It only works on line string features, where this functionality makes the most sense.

Here's an example on how to use `extend`:

```js
var vectorSource = vectorLayer.getSource();
vectroSource.removeFeature(feature);
drawInteraction.extend(feature);
```
2015-09-02 17:21:10 +02:00
Frédéric Junod
e568eb3ccf Merge pull request #4073 from fredj/type_definition
Better type definition
2015-09-02 17:20:07 +02:00
Frederic Junod
813afe1e3f Better skippedFeaturesHash type definition 2015-09-02 14:18:34 +02:00
Frederic Junod
8b6ab65ca7 Better ol.Map#logos_ type definition 2015-09-02 14:02:56 +02:00
Éric Lemoine
f5df71ba70 Merge pull request #4072 from elemoine/closure-util-1-7
Update to closure-util 1.7.0
2015-09-02 10:01:18 +02:00
Éric Lemoine
1553dce3dc Remove extern definition duplicates 2015-09-02 09:48:43 +02:00
Éric Lemoine
055df25c58 Update to closure-util 1.7.0 2015-09-02 09:48:03 +02:00
Tim Schaub
4dddf4c3d9 Merge pull request #4070 from tschaub/debug-server
Make the debug server work regardless of the current working directory.
2015-09-01 22:14:20 -06:00
Tim Schaub
4d5cf372b0 Always look for ol deps in the root of the ol repo 2015-09-01 21:43:22 -06:00
Frédéric Junod
34f65a8908 Merge pull request #4067 from fredj/alert-error
Fix bootstrap class name in examples
2015-09-01 16:24:22 +02:00
Frederic Junod
b4dec522f1 Fix bootstrap class name in examples
`alert-error` was renamed to `alert-danger`
2015-09-01 15:28:25 +02:00
Frederic Junod
af553366d4 Remove ol.xml.makeParsersNS and use ol.xml.makeStructureNS instead 2015-08-31 14:06:49 +02:00
Alvin Lindstam
66524a8075 Clarify drag interaction example to inform about ol.interaction.Translate 2015-08-28 22:13:49 +02:00
Alvin Lindstam
33229597c8 Modify OSM and WFS examples to use FeatureUrlFunction instead of FeatureLoader 2015-08-28 21:57:48 +02:00
Alvin Lindstam
e41ba12445 Modify ol.featureloader (and consequently ol.source.Vector) to accept a function as a url. 2015-08-28 21:57:48 +02:00
Florent gravin
31a074daf5 Improve graticule perf 2015-08-27 17:04:43 +02:00
Frédéric Junod
4045e06aa9 Merge pull request #4050 from fredj/view_getState
Use view.getRotation and view.getResolution instead of view.getState
2015-08-26 14:15:31 +02:00
Frédéric Junod
61fe8a8418 Merge pull request #4051 from fredj/wrench_devDependencies
Move wrench node package to devDependencies
2015-08-26 14:15:00 +02:00
Frederic Junod
954c1c313e Move wrench node package to devDependencies
This package is only used by tasks/test-coverage.js (code coverage with istanbul)

Fixes #4048
2015-08-26 13:42:17 +02:00
Frederic Junod
c1575e810b Use view.getRotation and view.getResolution instead of view.getState
view.getState calls 4 functions and creates an object and an array.
It's more efficient to use view.getRotation and view.getResolution.
2015-08-26 13:37:30 +02:00
Frédéric Junod
16d687205d Merge pull request #4047 from fredj/rm_pystache
Remove pystache dependency
2015-08-26 11:35:34 +02:00
Frederic Junod
15ef7eec85 Remove pystache dependency
And use the mustache node module instead.
2015-08-26 10:36:55 +02:00
Frédéric Junod
db68c09e4d Merge pull request #4027 from fredj/20150729_compatibility
closure-compiler v20150729 compatibility
2015-08-26 10:17:02 +02:00
Frederic Junod
9d07300e71 Rename ol.SelectEvent to ol.interaction.SelectEvent 2015-08-25 09:26:10 +02:00
Frederic Junod
ffc24e892e Rename ol.ModifyEvent to ol.interaction.ModifyEvent 2015-08-25 09:26:10 +02:00
Frederic Junod
49b8f90e66 Add missing goog.provide
The new version of the closure-compiler (version 20150729) wants that all the classes
tagged with `@constructor` to be provided (with `goog.provide`).
2015-08-25 09:26:10 +02:00
Frederic Junod
eb4dab90e5 Better type for ol.interaction.Modify#rBush_ 2015-08-25 09:26:10 +02:00
Éric Lemoine
7b9828a7a7 Merge pull request #4040 from elemoine/has-enable
Better docs for ol.ENABLE_[WEBGL|CANVAS|DOM]
2015-08-24 17:26:56 +02:00
Éric Lemoine
727586ecb9 Merge pull request #4032 from gberaudo/improve_overlay_extensibility
Improve ol.Overlay extensibility
2015-08-24 16:46:36 +02:00
Éric Lemoine
b3860a8fd5 Fix custom build issue
This fixes a custom build issue by adding a goog.require to imagestaticsource.js.

Fixes #4012.
2015-08-24 16:41:44 +02:00
Guillaume Beraudo
e189667d20 Improve ol.Overlay extensibility
- make autoPan_ protected;
- split updatePixelPosition_() and make it protected;
- use a protected setVisible() function.
2015-08-24 16:15:26 +02:00
Éric Lemoine
fe69c0e354 Better docs for ol.ENABLE_[WEBGL|CANVAS|DOM] 2015-08-24 16:05:43 +02:00
Frédéric Junod
1c549b4df3 Merge pull request #4037 from fredj/travis_pip_install
Don't install python packages in before_install
2015-08-24 14:19:35 +02:00
Éric Lemoine
931100e030 Merge pull request #4028 from elemoine/closure-util-1-6
Update to closure-util 1.6
2015-08-24 14:16:27 +02:00
Éric Lemoine
6c13de715e Update to closure-util 1.6.1 2015-08-24 14:02:23 +02:00
Frederic Junod
37cdbcc72f Don't install python packages in before_install
Travis already installs the packages by default.
See http://docs.travis-ci.com/user/languages/python/#Travis-CI-uses-pip
2015-08-24 10:03:07 +02:00
Frédéric Junod
da5bf46dbf Merge pull request #4014 from fredj/rm_checkStructDictInheritance
Remove deprecated checkStructDictInheritance
2015-08-24 09:08:12 +02:00
Frédéric Junod
2c8e5600ce Merge pull request #3987 from fredj/unnecessary_cast
Remove unnecessary cast
2015-08-24 09:07:27 +02:00
Alvin Lindstam
cb8e4e0ee7 Fix miswritten test 2015-08-23 23:35:08 +02:00
Alvin Lindstam
c5fe7df2e4 Fix modify event trigger order, should trigger modifystart before any modification and modifyend last. 2015-08-23 23:35:07 +02:00
Tim Schaub
0194c8e3c2 Merge pull request #4035 from tschaub/remove-unused
Remove unused sphere and ellipsoid methods.
2015-08-23 13:06:13 -06:00
Tim Schaub
980dbc121a Remove unused ol.Ellipsoid 2015-08-23 12:27:57 -06:00
Tim Schaub
d09506f5b1 Remove unused ol.ellipsoid.WGS84 2015-08-23 12:26:51 -06:00
Tim Schaub
13a9d2f6af Remove unused ellipsoid.vincenty() method 2015-08-23 12:26:43 -06:00
Tim Schaub
d91f5ecc48 Remove unused ellipsoid.vincentyDistance() method 2015-08-23 12:11:46 -06:00
Tim Schaub
b180149100 Remove unused ellipsoid.vincentyFinalBearing() method 2015-08-23 12:08:39 -06:00
Tim Schaub
6bbc411521 Remove unused ellipsoid.vincentyInitialBearing() method 2015-08-23 12:06:31 -06:00
Tim Schaub
0ba7856d49 Remove FIXMEs 2015-08-23 11:59:39 -06:00
Tim Schaub
90ec289c89 Remove unused sphere.midpoint() method 2015-08-23 11:56:23 -06:00
Tim Schaub
b724ce6c0d Remove unused sphere.interpolate() method 2015-08-23 11:54:08 -06:00
Tim Schaub
9cccbd0712 Remove unused sphere.maximumLatitude() method 2015-08-23 11:51:00 -06:00
Tim Schaub
3852be0d7e Remove unused sphere.initialBearing() method 2015-08-23 11:50:00 -06:00
Tim Schaub
daa4781072 Remove unused sphere.equirectangularDistance() method 2015-08-23 11:48:09 -06:00
Tim Schaub
8ec2bcef17 Remove unused sphere.finalBearing() method 2015-08-23 11:46:20 -06:00
Tim Schaub
c74277cae8 Remove unused sphere.cosineDistance() method 2015-08-23 11:43:26 -06:00
Tim Schaub
bc1328528a Remove unused sphere.crossTrackDistance() method 2015-08-23 11:41:06 -06:00
Pierre GIRAUD
ff01bba55a Merge pull request #4031 from pgiraud/popup_size
Fixing size of popup
2015-08-21 13:08:33 +02:00
Pierre GIRAUD
8329da8d1c Fixing size of popup 2015-08-21 11:28:08 +02:00
Éric Lemoine
5865d5bc55 Merge pull request #4023 from elemoine/4003
Render map when layer.setMap(map) called
2015-08-20 15:31:07 +02:00
Frédéric Junod
6d7f51f111 Merge pull request #4026 from fredj/fa_css_class
Fix Font Awesome CSS class in examples
2015-08-20 12:15:16 +02:00
Frederic Junod
da4b863ad8 Fix Font Awesome CSS class in examples 2015-08-20 11:49:19 +02:00
Frederic Junod
2d92791b17 Remove deprecated checkStructDictInheritance
Deprecated since the 20150505 Closure Compiler release.
See https://github.com/google/closure-compiler/wiki/Releases#may-5-2015-v20150505
2015-08-20 11:40:22 +02:00
Frederic Junod
4c615d8ddf Remove unnecessary cast
Found by the latest version of closure-compiler (v20150729)
2015-08-20 11:39:40 +02:00
Marc Jansen
c14d64b4e7 Merge pull request #4024 from marcjansen/docs-featurestylefunction
Correct documentation for ol.FeatureStyleFunction
2015-08-20 10:59:08 +02:00
Marc Jansen
c2f4b38981 Correct documentation for ol.FeatureStyleFunction 2015-08-20 10:39:59 +02:00
Éric Lemoine
b1973fcdf4 Render map when layer.setMap(map) called 2015-08-20 10:12:51 +02:00
Éric Lemoine
6260c4d744 Merge pull request #4011 from elemoine/update-segment-data
Make Modify interaction listen to feature changes
2015-08-20 09:24:00 +02:00
Marc Jansen
5029b5dc97 Merge pull request #3917 from cmiles74/cluster-source-refresh
Resolved issue with cluster source reloading
2015-08-19 17:34:54 +02:00
Andreas Hocevar
7505460d65 Merge pull request #4015 from weskamm/xyzgeturls
Add a getUrls Method to ol.source.XYZ
2015-08-19 16:22:57 +02:00
Marc Jansen
e211c908f8 Merge pull request #4019 from marcjansen/editorconfig-cleanup
Simplify .editorconfig file
2015-08-19 15:16:54 +02:00
Frédéric Junod
87a1031de5 Merge pull request #4002 from fredj/closure-library
Update closure-library to latest commit
2015-08-19 14:51:06 +02:00
Marc Jansen
fef0088bf9 Simplify .editorconfig file 2015-08-19 14:49:28 +02:00
Marc Jansen
8a4bdd4046 Merge pull request #4018 from marcjansen/animation-example
Fix rotate buttons in animation example
2015-08-19 14:42:20 +02:00
Marc Jansen
da4d5caea8 Fix rotate buttons in animation example 2015-08-19 14:15:27 +02:00
Marc Jansen
2aa7812fc5 Merge pull request #4013 from marcjansen/update-marked
Use a more recent version of marked
2015-08-19 14:01:40 +02:00
Frederic Junod
fdba4fc381 Add a test for ol.Map#getEventPixel 2015-08-19 13:50:14 +02:00
Frederic Junod
8730fc8824 Remove goog.style.getRelativePosition workaround
Fixed upstream with https://github.com/google/closure-library/pull/424
2015-08-19 13:50:14 +02:00
Frederic Junod
35d26f1280 Update closure-library to latest commit 2015-08-19 13:50:14 +02:00
Andreas Hocevar
7e7494d5c7 Merge pull request #4017 from ahocevar/protect-proj-registry
Do not overwrite projections in the registry simply by using `new ol.proj.Projection()`
2015-08-19 13:17:33 +02:00
Andreas Hocevar
a8797ae1ff Do not overwrite projections in the registry 2015-08-19 13:06:23 +02:00
Johannes Weskamm
a6c49dabcf Add a getUrls Method to ol.source.XYZ
Added the getUrls method to get access to the url / urls property.
When using a tileUrlFunction, getUrls should return null.
This should fix issue #3886
2015-08-19 12:43:35 +02:00
Marc Jansen
296564a4ce Use a more recent version of marked
Quoting from https://nodesecurity.io/advisories/marked_redos:

> Marked 0.3.3 and earlier is vulnerable to regular expression denial of
> service (ReDoS) when certain types of input are passed in to be parsed.
2015-08-18 21:21:51 +02:00
Éric Lemoine
5f7e6ac61a Make Modify interaction listen to feature changes
This commit makes the Modify interaction modify its segment data when the candidate features change.
2015-08-18 16:39:49 +02:00
Éric Lemoine
33da0e7b66 Merge pull request #4008 from elemoine/translate-interaction
Add a Translate interaction
2015-08-18 12:26:31 +02:00
Christopher S. Case
d042b4c277 Add a translate-features example 2015-08-18 11:20:31 +02:00
Christopher S. Case
338d0570fd Add a Translate interaction
This allows features to be moved around the map. It works much like the Modify interaction, however it's significantly simpler. It uses the geometry's underlying `translate` function.
2015-08-18 11:17:01 +02:00
Pierre GIRAUD
cafbb82c41 Merge pull request #3230 from pgiraud/collection_editing_style
Add stroke to default editing style for geometry collections
2015-08-18 11:05:12 +02:00
Pierre GIRAUD
de0266ded7 Add stroke to default editing style for geometry collections 2015-08-18 10:54:45 +02:00
Éric Lemoine
e703a58c5d Merge pull request #4007 from elemoine/bind
Do not use Function.prototype.bind in examples
2015-08-18 10:53:38 +02:00
Éric Lemoine
fefc39147c Do not use Function.prototype.bind in examples
PhantomJS 1.x does not have Function.prototype.bind, so do not use that function in examples.
2015-08-18 09:47:13 +02:00
Éric Lemoine
d204d7764a Merge pull request #4006 from elemoine/typo
Fix typo (vegetaion -> vegetation)
2015-08-18 09:33:49 +02:00
Éric Lemoine
92655b2d20 Fix typo 2015-08-18 09:12:22 +02:00
Andreas Hocevar
204f8f9813 Merge pull request #3993 from ahocevar/no-duplicate-extenrs
Replace base symbols with overridden ones when generating info.json
2015-08-11 18:29:53 +02:00
Andreas Hocevar
b0dd3782a8 Replace base symbols with overridden ones 2015-08-11 17:08:31 +02:00
Frédéric Junod
2ae22a934d Merge pull request #3992 from fredj/makefile_typo
Fix typo in Makefile
2015-08-11 09:46:37 +02:00
Frederic Junod
594eb7fe95 Fix typo in Makefile 2015-08-11 08:59:37 +02:00
Frédéric Junod
c60b80b566 Merge pull request #3989 from fredj/3938
Handle JSONP errors in ol.source.TileJSON
2015-08-11 08:54:26 +02:00
Frederic Junod
0578e8f2f6 Handle JSONP errors in ol.source.TileJSON
Fixes #3938
2015-08-10 15:28:26 +02:00
Tim Schaub
daf85c75c7 Merge pull request #3983 from tschaub/doc-footer
Remove doc footer with timestamp.
2015-08-07 12:59:39 -06:00
Tim Schaub
b94a4832f7 Merge pull request #3984 from tschaub/fewer-blue-buttons
Style source control links in examples.
2015-08-07 12:59:10 -06:00
Tim Schaub
ab24d9043e Minimal source control links 2015-08-07 12:46:15 -06:00
Tim Schaub
6dc7f2cfec Remove footer with timestamp 2015-08-07 11:22:07 -06:00
Tim Schaub
5b80da7f6e Merge pull request #3982 from tschaub/build-examples
Rebuild examples if package.json changes.
2015-08-07 11:09:43 -06:00
Tim Schaub
0691d1d74e Rebuild examples if package.json changes 2015-08-07 11:00:28 -06:00
Tim Schaub
ade361479a Merge pull request #3980 from openlayers/release-v3.8.2
Release v3.8.2.
2015-08-07 10:42:53 -06:00
Tim Schaub
0c06a429fb Update package version to 3.8.2 2015-08-07 10:18:53 -06:00
Tim Schaub
4233061dda Changelog vor v3.8.2 2015-08-07 10:18:21 -06:00
Tim Schaub
7e579f1ec0 Merge pull request #3979 from tschaub/ol-url
Fix URLs for openlayers.org resources.
2015-08-07 10:14:38 -06:00
Andreas Hocevar
0e538b29c0 Fix URLs for openlayers.org resources 2015-08-07 10:03:00 -06:00
Éric Lemoine
23f29ab65a Merge pull request #3977 from gberaudo/mark_ol_style_icon_load_api
Mark ol.style.Icon#load() @api
2015-08-07 16:33:17 +02:00
Guillaume Beraudo
464ce13b13 Mark ol.style.Icon#load() @api
We currently rely on the renderer to load the styles it intents to use.

In Ol3-Cesium we want to allow different styles for 3D and for 2D.
This commit fixes the issue by allowing application code to explicitely
initiate the loading process.
2015-08-07 15:56:07 +02:00
Andreas Hocevar
861e1515d4 Merge pull request #3978 from ahocevar/ol-urls
Fix URLs for openlayers.org resources
2015-08-07 14:26:25 +02:00
Andreas Hocevar
2bd0fdf07b Fix URLs for openlayers.org resources 2015-08-07 13:48:28 +02:00
Éric Lemoine
1921e009e6 Merge pull request #3900 from Jenselme/kmlformat
Do not add Style as a feature property
2015-08-07 13:00:11 +02:00
Éric Lemoine
b0584acaa5 Add ol.format.KML.findStyle_ function
This commit adds an `ol.format.KML.findStyle_` function to prevent creating a function for every call to `ol.format.KML.createFeatureStyleFunction_`, as suggested by @ahocevar in #3900.
2015-08-07 11:54:38 +02:00
Éric Lemoine
eb8be03792 Merge pull request #3975 from gberaudo/skip_empty_features_in_webgl_replay
Skip features without geometry during webgl replay
2015-08-07 11:38:07 +02:00
Guillaume Beraudo
e57919e55b Skip features without geometry during webgl replay
Setting a feature geometry to null or undefined and triggering a hit
detection was throwing an exception.

This patch handles a batched feature without a geometry in the same
fashion as skipped features.

An equivalent patch has been applied to the canvas replay.
2015-08-07 09:50:25 +02:00
Tim Schaub
b01fa94ecd Merge pull request #3972 from openlayers/release-v3.8.1
Release v3.8.1.
2015-08-06 10:34:14 -06:00
Tim Schaub
47b53ded6d Update package version to 3.8.1 2015-08-06 09:12:51 -06:00
Tim Schaub
3c8aeb7287 Changelog for v3.8.1 2015-08-06 09:12:08 -06:00
Tim Schaub
7b899fa767 Merge pull request #3970 from tschaub/cdn-switch
Pull builds from openlayers.org.
2015-08-06 09:05:00 -06:00
Andreas Hocevar
73d4ba2a51 Merge pull request #3961 from gberaudo/skip_empty_features_in_replay
Skip features without geometry during canvas replay
2015-08-06 13:12:43 +02:00
Andreas Hocevar
a673c39251 Merge pull request #3971 from ahocevar/calculate-new-extent
Revert "Cache the image extent"
2015-08-06 08:37:03 +02:00
Andreas Hocevar
a1946a6e69 Revert "Cache the image extent"
This reverts commit eb2a30e461.
2015-08-06 08:15:02 +02:00
Tim Schaub
f695cb012a Pull builds from openlayers.org 2015-08-05 21:29:08 -06:00
Andreas Hocevar
317a27d6f3 Merge pull request #3964 from rattai/imagewms_extent
Compute new image extent for comparison to existing image extent
2015-08-05 22:52:10 +02:00
rattai
eb2a30e461 Cache the image extent 2015-08-05 12:59:41 -04:00
rattai
e49ce543a4 shorten long line 2015-08-04 20:00:59 -04:00
Tim Schaub
575fff6737 Merge pull request #3962 from bjornharrtell/jsdoc-upgrade
Upgrade JSDoc to 3.3.2 and remove obsoleted plugins.
2015-08-04 15:26:55 -06:00
rattai
b3f14f09c4 Compute new image extent for comparison to existing image extent 2015-08-04 17:25:47 -04:00
Björn Harrtell
6812de6a77 Upgrade JSDoc to 3.3.2 and remove obsoleted plugins 2015-08-04 22:04:15 +02:00
Andreas Hocevar
0ec70256d6 Merge pull request #3875 from geonux/draw_undo
Undo last points method to the draw interraction
2015-08-04 20:25:02 +02:00
Guillaume Beraudo
23ae91cfd5 Skip features without geometry during canvas replay
Setting a feature geometry to null or undefined and triggering a hit
detection was throwing an exception.

This patch handles a batched feature without a geometry in the same
fashion as skipped features.
2015-08-04 18:08:54 +02:00
geonux
999880f350 Add missing braces on statement 2015-08-04 15:02:49 +02:00
Frédéric Junod
85815a32a0 Merge pull request #3960 from fredj/extra_require
Remove unused goog.require
2015-08-04 10:25:39 +02:00
Frederic Junod
0a6745f1e4 Remove unused goog.require
Found by the latest version of closure-compiler (v20150729)
2015-08-04 10:01:11 +02:00
Tim Schaub
08c01de6b0 Merge pull request #3959 from tschaub/release-tweaks
Minor updates to release procedure.
2015-08-04 01:09:10 -06:00
Tim Schaub
ad2b4a3863 Configure travis-ci/push job to only build pushes to master 2015-08-04 00:32:39 -06:00
Tim Schaub
91d6844ecd Install latest dependencies before building 2015-08-04 00:30:39 -06:00
Tim Schaub
929ce05f81 Merge pull request #3958 from openlayers/release-v3.8.0
Release v3.8.0.
2015-08-04 00:16:31 -06:00
Tim Schaub
81b7a77954 Update package version to 3.8.0 2015-08-04 00:03:33 -06:00
Tim Schaub
91045b0ad1 Changelog for v3.8.0 2015-08-04 00:03:24 -06:00
Tim Schaub
b11f6abb3c Merge pull request #3957 from tschaub/shared-delete
Properly handle vertex deletion with multiple features.
2015-08-03 23:38:43 -06:00
Tim Schaub
571f3f30a4 Regression test for shared vertex deletion 2015-08-03 23:07:19 -06:00
Tim Schaub
85ddded15c Only remove the vertex feature if it exists
When deleting a vertex shared by multiple features, we iterate through drag segments and only need to remove the vertex feature once.
2015-08-03 22:44:22 -06:00
Tim Schaub
d3c8880b22 Merge pull request #3954 from fredj/rm_bindMouseOutFocusOutBlur
Remove ol.control.Control.bindMouseOutFocusOutBlur function.
2015-08-03 21:51:09 -06:00
Tim Schaub
54d3bbd625 Merge pull request #3214 from tschaub/raster
Pixel manipulation with raster sources.
2015-08-03 21:49:19 -06:00
Tim Schaub
405a8db075 Merge pull request #3946 from Turbo87/modify
Fix vertex deletion for Modify interaction on mobile devices.
2015-08-03 21:47:41 -06:00
Tim Schaub
27e58be43d Merge pull request #3910 from ahocevar/ol-ext-no-amd
Do not provide an AMD environment to ol.ext modules.
2015-08-03 21:43:42 -06:00
Tim Schaub
cee34fa51b Table for controls 2015-08-03 21:33:46 -06:00
Tim Schaub
16aa548383 Only create a worker if an operation is provided 2015-08-03 21:32:16 -06:00
Tim Schaub
860fdabd76 Simplify raster sources by working with a single operation 2015-08-03 20:10:46 -06:00
Frederic Junod
761aa0ea5c Remove ol.control.Control.bindMouseOutFocusOutBlur function
It was a workaround added in #1761 to hide the button tooltip on
OSX / Chrome 32 and 33.

Because we're not using the tooltips anymore (see #2781) and this
version of chrome is deprecated this workaround can be removed.
2015-08-03 17:12:33 +02:00
Frédéric Junod
d493d0a820 Merge pull request #3934 from fredj/drawpoint_events
Fix `drawstart` and `drawend` events when drawing a point
2015-08-03 16:26:00 +02:00
Pierre GIRAUD
d6e35edac5 Merge pull request #3774 from pgiraud/measure_tooltips_touchdevice
Measure tooltips touchdevice
2015-08-03 15:57:57 +02:00
Frederic Junod
2143eebd30 Fix drawstart and drawend events when drawing a point
The previous behavior was to fire a `drawstart` on the first `mousemove`.
2015-08-03 13:40:56 +02:00
Frédéric Junod
64225776d4 Merge pull request #3949 from fredj/expect_called
Remove count argument from `called` function
2015-08-03 13:40:16 +02:00
Éric Lemoine
355c3c7b58 Merge pull request #3950 from elemoine/vbarray
Remove reference to vbarray.js
2015-08-03 11:19:29 +02:00
Éric Lemoine
e792a121f4 Remove reference to vbarray.js
This file was removed with https://github.com/openlayers/ol3/pull/3516.

Fixes #3702.
2015-08-03 11:06:43 +02:00
Frederic Junod
3364dbb46e Remove count argument from called function
This function takes no arguments, use the `callCount` property instead.
2015-08-03 10:02:21 +02:00
Tim Schaub
23610efe30 Merge pull request #3947 from alvinlindstam/clarify-ratio-docs
Clarify documentation of Image source ratio option.
2015-08-02 12:46:00 -06:00
Alvin Lindstam
75bf3e1ccf Clarify documentation of Image source ratio option. 2015-08-02 19:51:00 +02:00
Tim Schaub
f2f5cd2630 Make seed coordinate sticky 2015-08-01 17:06:40 -06:00
Ian Schneider
6f6698dd6a Add a region growing example 2015-08-01 17:06:33 -06:00
Tim Schaub
4320b07c5d Doc corrections 2015-08-01 16:33:43 -06:00
Tim Schaub
25603d7cf1 Merge pull request #3920 from probins/patch-1
Remove use_types_for_optimization from custom build tutorial.
2015-08-01 16:23:51 -06:00
Tim Schaub
935eb63876 Merge pull request #3922 from probins/expandurl
Document {?-?} pattern in expandUrl
2015-08-01 15:54:51 -06:00
Tim Schaub
6111b91cca Merge pull request #3921 from bjornharrtell/travis-cache
Cache node_modules on Travis.
2015-08-01 15:52:20 -06:00
Tobias Bieniek
7a34d22b37 interaction/modify: Add missing goog.require() to test 2015-08-01 22:09:32 +02:00
Tobias Bieniek
c3f51c676a interaction/modify: Fix identation issue 2015-08-01 22:05:44 +02:00
Tobias Bieniek
968c8aa34e interaction/modify: Replace lastNewVertexPixel with ignoreNextSingleClick
The previous approach did not work on mobile devices where no `pointermove`
event is sent except from dragging.

Logic now is: Upon vertex creation due to `pointerdown` we will ignore
the next `singleclick` event unless there is a `pointerdrag` event, which will
not lead to a `singleclick` event following the vertex creation.

Resolves #3935
2015-08-01 22:00:41 +02:00
Tobias Bieniek
b001a48567 interaction/modify: Simplify lastNewVertexPixel condition 2015-08-01 21:12:59 +02:00
Tobias Bieniek
bf9156cbeb interaction/modify: Adjust simulated events
This is exactly matching the event sent by Chrome now
2015-08-01 21:03:18 +02:00
Tobias Bieniek
bafd8548d1 interaction/modify: Add tests for deleteCondition option 2015-08-01 20:52:31 +02:00
Tobias Bieniek
e3ead5df06 events/condition: Add doubleClick condition 2015-08-01 20:46:21 +02:00
Tobias Bieniek
22ca08179d interaction/modify: Use expect().to.be() assertion
... instead of expect(a === b).to.be.ok()
2015-08-01 20:20:06 +02:00
Andreas Hocevar
c8df907ff2 Merge pull request #3942 from ahocevar/matrixset-by-projection
Fix WMTS TileMatrixSet lookup by SRS identifier
2015-07-31 11:45:06 +02:00
Andreas Hocevar
c0950dee11 Merge pull request #3945 from ahocevar/popup-on-icon
Simplify icon example and show popup at clicked position
2015-07-31 11:24:58 +02:00
Andreas Hocevar
da3d8952da Simplify icon example and show popup at clicked position
By using the event's coordinate instead of the feature's, we make sure
that the popup is shown where the user clicked when on a wrapped world.
2015-07-31 10:09:16 +02:00
Andreas Hocevar
95e43c852d Fix WMTS TileMatrixSet lookup by SRS identifier 2015-07-30 19:48:28 +02:00
Frédéric Junod
d4d3555a88 Merge pull request #3930 from fredj/goog.functions.identity
Use goog.functions.identity instead of goog.identityFunction
2015-07-29 08:53:53 +02:00
Andreas Hocevar
ef9a1a25b1 Merge pull request #3929 from probins/patch-2
Expand description for XYZ source
2015-07-28 22:15:16 +02:00
Peter Robins
44fdfaa630 Expand description for XYZ source 2015-07-28 12:54:01 +00:00
Andreas Hocevar
112473afee Merge pull request #3933 from ahocevar/snap-center-to-pixel
Snap center to pixel to avoid floating point issues
2015-07-28 14:20:43 +02:00
Andreas Hocevar
5e505f200a Snap center to pixel to avoid floating point issues 2015-07-28 14:02:09 +02:00
Frédéric Junod
5e4474ca8c Merge pull request #3932 from Turbo87/patch-1
SnapOptions: Fix typo in pixelTolerance JSDoc
2015-07-28 13:03:14 +02:00
Tobias Bieniek
d3f766c748 SnapOptions: Fix typo in pixelTolerance JSDoc
This was apparently copy-pasted from the `ModifyOptions` without adjustment
2015-07-28 12:26:54 +02:00
Frédéric Junod
2b1acc6216 Merge pull request #3931 from fredj/rm_htmlparser2
Remove unused htmlparser2 package
2015-07-28 11:07:48 +02:00
Frederic Junod
c008de1a88 Remove unused htmlparser2 package
No longer used since #3542
2015-07-28 10:31:58 +02:00
Frederic Junod
e6a38d8211 Use goog.functions.identity instead of goog.identityFunction
goog.identityFunction is deprecated
2015-07-28 09:44:51 +02:00
Peter Robins
e6f4054d3b Document {?-?} pattern in expandUrl 2015-07-25 13:41:36 +00:00
Björn Harrtell
fe636a0e98 Use Travis CI dependency cache 2015-07-25 15:12:59 +02:00
Peter Robins
76d36d4b20 Remove use_types_for_optimization from custom build tutorial 2015-07-23 15:11:55 +01:00
cmiles74
89b62cd53b Resolved issue with cluster source reloading
The cluster source was not reloading when a map was panned, only when
the resolution changed.
2015-07-22 09:18:41 -04:00
Frédéric Junod
abb5fef043 Merge pull request #3912 from fredj/zoomslider_event_type
Fix the event type fired by goog.fx.Dragger
2015-07-22 14:39:40 +02:00
Tim Schaub
0c486c522a Allow UI thread to be used
Where workers are not available, or if operations are trivial to run, the main UI thread can be used instead.  This also adds tests that run in real browsers.
2015-07-21 17:12:08 -06:00
Tim Schaub
af3c38052e Avoid examples that cannot be run in Phantom 2015-07-21 17:12:08 -06:00
Tim Schaub
f1ff39cc8b Avoid compiling the shaded relief example
The compiler doesn't support the use of the ImageData constructor.
2015-07-21 17:12:08 -06:00
Tim Schaub
643c2e6f21 Only update canvas if not dirty 2015-07-21 17:12:07 -06:00
Tim Schaub
d5aa0d9a8e Update example to work with the latest pixelworks 2015-07-21 17:12:07 -06:00
Tim Schaub
793b27e9f5 Allow operations to be updated 2015-07-21 17:12:07 -06:00
Tim Schaub
9d28549b2b Pass along potentially modified data 2015-07-21 17:12:07 -06:00
Tim Schaub
ef90f5a097 Run operations in a worker 2015-07-21 17:12:07 -06:00
Tim Schaub
c50d775330 Vertical exaggeration control 2015-07-21 17:12:07 -06:00
Tim Schaub
6da6cef760 Improved shaded relief example 2015-07-21 17:12:07 -06:00
Tim Schaub
1d94d71a5b Shaded relief example 2015-07-21 17:12:07 -06:00
Tim Schaub
65fee5b7ac Pass data object to operations 2015-07-21 17:12:07 -06:00
Tim Schaub
5267776627 Provide extent and resolution in raster events 2015-07-21 17:12:06 -06:00
Tim Schaub
a721ce03c9 Support for image or pixel operations 2015-07-21 17:12:06 -06:00
Tim Schaub
23e2fcefef Only render if sources are ready 2015-07-21 17:12:06 -06:00
Tim Schaub
d17d470d48 Fire change when updating operations 2015-07-21 17:12:06 -06:00
Tim Schaub
c6dedbc40b Use the first pixel for rendering, allow setting operations 2015-07-21 17:12:06 -06:00
Tim Schaub
de107c5502 Frame and canvas have equal size 2015-07-21 17:12:06 -06:00
Tim Schaub
6740ca9ee8 More interactive example 2015-07-21 17:12:06 -06:00
Tim Schaub
2c82ca86f0 Fire events before and after running ops 2015-07-21 17:12:06 -06:00
Tim Schaub
b7ad9160ef Nicer example 2015-07-21 17:12:06 -06:00
Tim Schaub
acc97a53eb Raster source for composing pixels from other sources 2015-07-21 17:12:05 -06:00
Frederic Junod
7634c0c2c4 Fix the event type fired by goog.fx.Dragger 2015-07-20 15:33:44 +02:00
Andreas Hocevar
49cc39c4dd Merge pull request #3871 from ahocevar/change-event
Document change events properly
2015-07-18 15:41:05 +02:00
Andreas Hocevar
3595c2cce7 Document change events properly
With this change, the generic 'change' event is properly documented, as
all other events. It is no longer necessary to annotate `@fires change` for
every ol.Observable subclass.
2015-07-18 15:27:16 +02:00
Andreas Hocevar
80c4809aee Do not provide an AMD environment to ol.ext modules
This fixes issues with ol.source.Vector being unable to use ol.ext.rbush,
but it also means that potential future external modules without node
module loader support will not work. If we ever depend on such a module,
we can replace "var define;" with a minimal AMD define shim.
2015-07-17 18:07:39 +02:00
Andreas Hocevar
10b4aa1bab Merge pull request #3906 from ahocevar/featurescollection-only
Clear features properly when there is no spatial index
2015-07-16 08:57:14 +02:00
Andreas Hocevar
8f7cbc5ed6 Clear features properly when there is no spatial index
Previously clear() only kept the features collection in sync whern there
was also a features RTree.
2015-07-15 15:15:41 +02:00
Julien Enselme
b66a114873 Add test to check that Style is not added a feature property 2015-07-13 17:05:08 +02:00
Andreas Hocevar
7094f65ef7 Merge pull request #3896 from ahocevar/webgl-precompose
Fire WebGL precompose event in same sequence as other renderers
2015-07-12 10:05:45 +02:00
Andreas Hocevar
ac8e62818f Fire WebGL precompose event in same sequence as other renderers
In other map renderers, the precompose event is fired before preparing and
composing layer frames. In WebGL, it is fired in between. This change makes
it so the sequence of events is the same for all renderers.

Because the WebGL renderer creates the list of layers to render before the
precompose event, unmanaged layers are never rendered. This is also fixed
by dispatching the precompose event earlier.
2015-07-11 14:58:31 +02:00
Tim Schaub
c89fb3ccfe Merge pull request #3359 from Kenny806/deep_clone
Enable deep clone of MultiPolygon.
2015-07-10 23:11:25 -06:00
Tim Schaub
223d5ab60d Merge pull request #3895 from planetlabs/greedy-multi-queue
Rework the tile queue for multiple queues.
2015-07-10 16:33:49 -06:00
Alessandro Isaacs
2142b538ac Greedify the queue loading strategy 2015-07-10 15:06:41 -07:00
Alessandro Isaacs
5149889bd2 Improve the test 2015-07-10 15:06:41 -07:00
Alessandro Isaacs
b57cdb730c Only load tiles that are not yet loaded 2015-07-10 15:06:35 -07:00
Tim Schaub
8600d46a0e Merge pull request #3894 from tschaub/no-sudo
Install Python dependencies without sudo.
2015-07-10 14:20:35 -06:00
Tim Schaub
7509425aa4 Install Python dependencies without sudo 2015-07-10 11:00:13 -06:00
Pierre GIRAUD
c9ab9bc711 Hide the help tooltip when cursor is out of the map 2015-07-10 09:32:32 +02:00
Tim Schaub
cd6ac857b9 Merge pull request #3824 from probins/select
Improve docs for interaction.Select.
2015-07-09 16:54:05 -06:00
Tim Schaub
7b35557cee Merge pull request #3884 from tschaub/debug-server
Provide a debug loader for the library.
2015-07-09 16:02:12 -06:00
Tim Schaub
4549d2f7a8 Try multiple ports 2015-07-09 10:49:24 -06:00
Tim Schaub
7780d77ade Update to closure-util@1.5.0 2015-07-09 10:16:15 -06:00
Tim Schaub
bfaac061c8 Provide a debug loader for the library 2015-07-09 10:16:15 -06:00
Andreas Hocevar
afce912f11 Merge pull request #3883 from ahocevar/foreachfeatureatpixel-unmanaged-always
Ignore layer filter for unmanaged layers
2015-07-09 00:03:25 +02:00
Tim Schaub
a705c6fe11 Test two queues sharing tiles 2015-07-08 15:12:31 -06:00
Andreas Hocevar
26e146b1d8 Ignore layer filter for unmanaged layers
To make unmanaged vector layers work like the removed ol.FeatureOverlay,
the layer filter for ol.Map#forEachFeatureAtPixel needs to ignore unmanaged
layers.
2015-07-07 22:24:57 +02:00
geonux
64ab764827 Renaming the method description according to 'probins' proposal. 2015-07-06 15:07:56 +02:00
geonux
314b04df7a Add assertions to pass the validation step. 2015-07-06 13:49:42 +02:00
geonux
29b1f0d55d Add the capability to remove(undo) the last drawed segments. 2015-07-06 12:11:34 +02:00
Bart van den Eijnden
a62bbd6650 Merge pull request #3859 from llambanna/patch-2
Add in crossOrigin option
2015-07-06 11:58:39 +02:00
Bart van den Eijnden
38fa805f03 Merge pull request #3873 from probins/patch-1
Correct minor typo in modifyinteraction
2015-07-06 09:36:07 +02:00
Anna Lambrechtsen
1d3f8b5d7d Add in crossOrigin option 2015-07-06 14:07:40 +12:00
Peter Robins
c53aa7e8d5 Correct minor typo in modifyinteraction 2015-07-05 10:57:59 +01:00
Andreas Hocevar
109cd6f3a6 Merge pull request #3872 from probins/patch-1
Correct event notations in ol.Feature
2015-07-04 14:20:25 +02:00
Peter Robins
4f703efd23 Correct event notations in ol.Feature 2015-07-04 11:43:06 +01:00
Bart van den Eijnden
a157fff318 Merge pull request #3869 from openlayers/release-v3.7.0
Release v3.7.0
2015-07-03 11:36:40 +02:00
Bart van den Eijnden
84ed12ec46 Update package version to 3.7.0 2015-07-03 11:34:19 +02:00
Bart van den Eijnden
5fb692a876 Changelog for v3.7.0 2015-07-03 11:33:48 +02:00
Andreas Hocevar
06908775e8 Merge pull request #3867 from ahocevar/no-proj-extent-required
Do not require projection extent for x-wrapping tile sources
2015-07-03 11:25:06 +02:00
Andreas Hocevar
da66a37182 Do not require projection extent for x-wrapping tile sources 2015-07-03 11:05:49 +02:00
Bart van den Eijnden
96eaf2de06 Merge pull request #3635 from bjornharrtell/modify-singleclick-vertex
Create vertex on boundary single click
2015-07-03 11:00:33 +02:00
Andreas Hocevar
86d9d691e4 Merge pull request #3806 from ahocevar/clip-wrapx
Do not clip canvas for vector layers when wrapping the world
2015-07-03 10:47:45 +02:00
Björn Harrtell
c69ba6a3dd Create vertex on boundary single click 2015-07-03 10:26:38 +02:00
Bart van den Eijnden
2adf3befb8 Merge pull request #3461 from bjornharrtell/modifyevent
High level Modify interaction events
2015-07-03 10:24:43 +02:00
Björn Harrtell
f81e36d8e0 Add mapBrowserPointerEvent property to ModifyEvent 2015-07-03 10:11:24 +02:00
Björn Harrtell
f7d62f054c High level Modify interaction events 2015-07-03 10:11:24 +02:00
Ryan Curry
9a44895d41 Update graticule.js - fixed style / missing line
My comment on line 375 was too long, so I broke it up into multiple lines. Also I accidentally left a line out of the commit (line 384) when transcribing my changes into the web based editor.
2015-07-02 12:35:38 -07:00
Ryan Curry
56e871f8b5 Update graticule.js - fixed typo/build error
Corrected reference to variable frameState - it was misspelled by the previous commit.
2015-07-02 12:23:05 -07:00
Ryan Curry
de6ecb22a8 graticule.js - Fixed build. No functional change.
viewContext.extent_ is private, so we can't use it directly. Instead, re-calculate the corrected wrapped extent.
2015-07-02 12:20:05 -07:00
Bart van den Eijnden
c0b6eefd8f Merge pull request #3865 from bartvde/fit
ol.View#fit()
2015-07-02 16:58:33 +02:00
Andreas Hocevar
a09fa923a5 Merge pull request #3864 from klokantech/xyz-canwrapx
Check projection.canWrapX() before wrapping tiles
2015-07-02 17:04:11 +03:00
Bart van den Eijnden
7c207d47bb Move upgrade notes to 3.7 and fix typos 2015-07-02 15:23:34 +02:00
Petr Sloup
eac5d652cf Check projection.canWrapX() before wrapping tiles
Even if wrapX is true on the source
2015-07-02 15:21:34 +02:00
vmalaret
4d3e903670 ol.View#fit -- fix docs and add assertions 2015-07-02 15:19:09 +02:00
vmalaret
e7cd691362 rotation support for ol.View#calculateExtent 2015-07-02 15:19:08 +02:00
vmalaret
74759142d9 Replace fitGeometry and fitExtent with fit
Fit accepts either a geometry or an extent.

This combines two previously distinct functions
into one more flexible call.

Also brings the rotations support and options
previously available to fitGeometry to extents
2015-07-02 15:19:08 +02:00
Bart van den Eijnden
3021d3a6a7 Merge pull request #3863 from nhambletCCRI/cdataInGML
Handle CDATA in attribute parsing for GML format
2015-07-02 14:57:21 +02:00
Nick Hamblet
cfafe90235 Handle CDATA in attribute parsing for GML format
Following [3827](https://github.com/openlayers/ol3/issues/3827),
handle CDATA XML nodes in attribute parsing of GML data. Currently
such data will be expected to be a geometry, and will fail to parse.

Treating the CDATA node as text is the easiest way to handle such
an attribute.
2015-07-01 16:32:17 -04:00
Tim Schaub
ccaca9fc52 Merge pull request #3860 from tschaub/update-bootstrap
Update example layout.
2015-07-01 08:01:32 -06:00
Pierre GIRAUD
3f918f4e8d Merge pull request #3861 from openlayers/pgiraud-patch-1
Don't force 'dom' renderer
2015-07-01 12:59:01 +02:00
Pierre GIRAUD
5871d64c9d Don't force 'dom' renderer 2015-07-01 12:31:40 +02:00
Tim Schaub
d1f19b8e0d Use the latest Bootstrap 2015-06-30 22:30:28 -06:00
Ryan Curry
7b4a954c40 graticule.js now uses vectorContext.extent_
When creating the graticule use the extent from the vectorContext instead of the frameState to determine what parallels and meridians should be created. This will allow the graticule to be drawn correctly on views that wrap across the dateline.
2015-06-30 11:09:20 -07:00
Ryan Curry
1159e1f792 Merge pull request #1 from openlayers/master
Test Merge openlayers master
2015-06-30 11:03:24 -07:00
Pierre GIRAUD
3f214f6ac4 Merge pull request #3855 from pgiraud/wmts_ign
Adding an example with WMTS tiles from IGN Geoportail
2015-06-30 07:28:29 +02:00
Andreas Hocevar
0159d20d6d Merge pull request #3856 from plepe/bug-3851
ol.source.TileVector(): bind success function of tileLoadFunction to source
2015-06-29 22:35:15 +03:00
Stephan Bösch-Plepelits
ce20380078 ol.source.TileVector(): bind success function of tileLoadFunction to source
- fixes #3851
2015-06-29 21:01:08 +02:00
Pierre GIRAUD
f9e5c9c596 Adding an example with WMTS tiles from IGN Geoportail 2015-06-29 11:42:38 +02:00
Tim Schaub
7d04ef3e2d Merge pull request #3848 from tschaub/webpack
Check for exports before define.
2015-06-25 11:55:32 -06:00
Frédéric Junod
ced3633d80 Merge pull request #3845 from fredj/collection_null_array
Prevent null array to be passed to an ol.Collection
2015-06-25 09:25:37 +02:00
Pierre GIRAUD
e62b2e4479 Merge pull request #3849 from pgiraud/dms_notation_leading_zeros
Pad min. and sec. with leading zeros in DMS notation
2015-06-25 09:23:37 +02:00
Frederic Junod
8cf57941ac Prevent null array to be passed to ol.Collection 2015-06-25 09:11:38 +02:00
Frederic Junod
dd132c9fad Add non-nullable notation to features array 2015-06-25 09:11:38 +02:00
Pierre GIRAUD
1cdfc709ae Pad min. and sec. with leading zeros in DMS notation
FIxes 3776
2015-06-25 08:40:43 +02:00
Tim Schaub
1b01efc08b Check for exports before define 2015-06-24 21:53:52 -06:00
Pierre GIRAUD
28450cbb5a Merge pull request #3842 from pgiraud/feature_animation
Adding a feature-animation example
2015-06-24 16:09:50 +02:00
Pierre GIRAUD
1c341e288c Adding a feature-animation example 2015-06-24 15:31:43 +02:00
Andreas Hocevar
3f23deb09a Merge pull request #3833 from bjornharrtell/customtilexhr
Enable use of custom XHR loader for TileVector sources
2015-06-23 14:31:26 +02:00
Björn Harrtell
ceafa88dc8 Enable use of custom XHR loader for TileVector sources 2015-06-23 14:07:19 +02:00
Bart van den Eijnden
54186d7893 Merge pull request #3834 from bartvde/arcgisrest-dpi
ArcGIS tiled example broken in Chrome
2015-06-22 12:43:35 +02:00
Bart van den Eijnden
9a0c0e2f2b Make sure we don't generate any floating point DPI values for ol.source.TileArcGISRest 2015-06-22 12:01:14 +02:00
Éric Lemoine
ae1221d811 Do not add Style as a feature property
This makes the KML format not add a Style property on features, as this may cause problems when serializing to another format such as JSON.
2015-06-22 10:11:46 +02:00
Éric Lemoine
c6d1778202 Merge pull request #3829 from kzr-pzr/master
incorrect assert message
2015-06-20 12:24:35 +02:00
peterko
e532727713 incorrect assert message 2015-06-20 11:09:36 +02:00
Andreas Hocevar
edc16b9739 Merge pull request #3828 from ahocevar/fix-doc-typo
Fix typo in upgrade notes
2015-06-20 10:35:36 +02:00
Andreas Hocevar
59871274ca Fix typo in upgrade notes 2015-06-20 10:34:28 +02:00
Andreas Hocevar
039b54de48 Merge pull request #3826 from klokantech/xyzsource-tilegrid
Allow custom tileGrid in ol.source.XYZ
2015-06-20 10:25:28 +02:00
Petr Sloup
5993b45c63 Allow custom tileGrid in ol.source.XYZ 2015-06-19 19:58:06 +02:00
Andreas Hocevar
5c5364bbb7 Merge pull request #3815 from ahocevar/tilegrid-no-surprises
Simplify tilegrid API and internals
2015-06-19 19:05:19 +02:00
Andreas Hocevar
6411c9267b More clarity about origin and direction of tile coordinates 2015-06-19 18:49:49 +02:00
Andreas Hocevar
f85fcf30a2 Additional tests 2015-06-19 18:34:26 +02:00
Andreas Hocevar
b5e0ae6f8c Explain changes in upgrade notes 2015-06-19 18:34:20 +02:00
Andreas Hocevar
e6f5c2a008 Cleanup and example updates 2015-06-19 18:34:19 +02:00
Andreas Hocevar
31cfa0d952 Make tile range calculation work with arbitrary origins 2015-06-19 18:34:19 +02:00
Andreas Hocevar
a753d282cc Use top-left corner of extent for all generated tile grids 2015-06-19 18:34:18 +02:00
Andreas Hocevar
e3a8dc89de Fix calculation of tile coord from coordinate
Tile coord calculation was wrong in the case of reverseIntersectionPolicy
for y coords, and for extents with +/- Infinity.
2015-06-19 18:34:18 +02:00
Andreas Hocevar
18aa9b5091 Remove unused createFromQuadKey function 2015-06-19 18:34:18 +02:00
Andreas Hocevar
84e051d19b Fix TileDebugSource to display '' for out-of-range tiles 2015-06-19 18:34:18 +02:00
Andreas Hocevar
af319c259b Do not transform tile coordinates for tileUrlFunction 2015-06-19 18:34:09 +02:00
Andreas Hocevar
0af5642569 Merge pull request #3820 from ahocevar/vectorlayer-like-featureoverlay
Make unmanaged vector layers behave more like ol.FeatureOverlay
2015-06-19 18:18:07 +02:00
Peter Robins
d6118f31e4 Improve docs for interaction.Select 2015-06-19 13:11:27 +00:00
Andreas Hocevar
7463a58066 Do not clip canvas for vector layers when wrapping the world 2015-06-19 14:55:20 +02:00
Andreas Hocevar
f645a9e1e4 Make unmanaged vector layers behave more like ol.FeatureOverlay
* Skipped features need to be hit-detected on unmanaged layers.
* updateWhileAnimating and updateWhileInteracting are recommended to
  achieve the same instant visual feedback that ol.FeatureOverlay had.
2015-06-19 13:06:29 +02:00
Andreas Hocevar
a9591f8b99 Merge pull request #3822 from probins/update
Correct docs for updateWhileInteracting
2015-06-19 12:59:30 +02:00
Peter Robins
43d9ebe51d Correct docs for updateWhileInteracting 2015-06-19 07:24:12 +00:00
Tim Schaub
aa90c97ba3 Merge pull request #3818 from probins/transform
Make geometry.transform api stable again.
2015-06-18 10:42:08 -06:00
Peter Robins
874c4aef21 Make Geometry.transform api stable again 2015-06-18 16:01:25 +00:00
Andreas Hocevar
2249c82ac2 Merge pull request #3801 from ahocevar/tilevector-extent
Respect the tile grid's extent in ol.source.TileVector
2015-06-18 10:46:48 +02:00
Andreas Hocevar
a2c9a0796c Merge pull request #3810 from ahocevar/tilegrid-example-docs
Improve TileGrid documentation and examples
2015-06-16 23:53:49 +02:00
Andreas Hocevar
d6bb13b54b Add note about extent 2015-06-16 18:47:50 +02:00
Andreas Hocevar
d628f6b098 Use the tileSize variable 2015-06-16 17:16:28 +02:00
Andreas Hocevar
e2da56afa1 Tile grid documentation improvements
Using the term 'bottom-left' for origin and origins is misleading, because
many developers use -y-1 for the tile url's y in their tile url functions,
and the origin really only determines where tile coordinates start to
increase from left to right and from bottom to top.
2015-06-16 17:16:19 +02:00
Frédéric Junod
f74e4c95ff Merge pull request #3808 from probins/patch-1
Correct typo in OverlayOptions
2015-06-16 10:37:53 +02:00
Éric Lemoine
b8cb1fe795 Merge pull request #3766 from elemoine/draw-click-tolerance
Add a clickTolerance option to the Draw interaction
2015-06-16 10:06:01 +02:00
Peter Robins
1e8968d97a Correct typo in OverlayOptions 2015-06-16 09:04:12 +01:00
Andreas Hocevar
9c480d77f5 Merge pull request #3804 from ahocevar/fix-tilegrid-docs
Remove sentence that was only meant for WMTS tile grids
2015-06-15 16:44:54 +02:00
Andreas Hocevar
0e943f5832 Remove sentence that was only meant for WMTS tile grids 2015-06-15 16:08:29 +02:00
Éric Lemoine
e99f43af8d Add a clickTolerance option to the Draw interaction 2015-06-15 15:32:34 +02:00
Andreas Hocevar
2bcb10c973 Respect the tile grid's extent
By adding a getTileCoordForTileUrlFuction method like for ol.source.Tile,
we can now properly handle extent and resolution restrictions, and reuse
tiles on wrapped worlds. Also adds the missing wrapX option to
ol.source.TileVector.
2015-06-15 11:15:25 +02:00
Andreas Hocevar
9301fff6cb Merge pull request #3800 from probins/editstyle
Remove further references to FeatureOverlay
2015-06-13 19:08:50 +02:00
Peter Robins
83c33a03c6 Remove further references to FeatureOverlay 2015-06-13 14:01:45 +00:00
Andreas Hocevar
e848acd806 Merge pull request #3780 from ahocevar/call-tileurlfunction-with-transformed-tilecoord
Only expose transformed tile coordinates to the API
2015-06-12 11:18:16 +02:00
Andreas Hocevar
72cc824502 Explain changes in upgrade notes 2015-06-12 09:47:43 +02:00
Andreas Hocevar
4b3aac32c3 Return transformed tile coordinates from ol.TileGrid's API methods 2015-06-12 09:47:32 +02:00
Andreas Hocevar
acab0ebd57 Display transformed tile coordinates in ol.source.TileDebug 2015-06-12 09:46:17 +02:00
Andreas Hocevar
6a4d1c9b89 Pass transformed tile coordinates to the tileUrlFunction 2015-06-12 09:45:03 +02:00
Andreas Hocevar
698b62af98 Merge pull request #3793 from ahocevar/unmanaged-to-managed
Use 'managed' instead of 'unmanaged' in LayerState
2015-06-11 18:56:31 +02:00
Andreas Hocevar
817370a65b Use 'managed' instead of 'unmanaged' in LayerState 2015-06-11 18:34:20 +02:00
Marc Jansen
07d5211e30 Merge pull request #3792 from marcjansen/group-docs
Link to correct layer base class
2015-06-11 17:57:57 +02:00
Marc Jansen
3fcecc98e6 Merge pull request #3791 from marcjansen/overlay-remains
Remove docs referring to removed feature overlay
2015-06-11 17:55:50 +02:00
Marc Jansen
6ed677a3f0 Link to correct layer base class 2015-06-11 17:50:40 +02:00
Marc Jansen
dd16bb984c Remove docs referring to removed feature overlay 2015-06-11 17:47:16 +02:00
Frédéric Junod
f672c1792b Merge pull request #3790 from fredj/geojson_quotes
Remove unnecessary quotes around object keys
2015-06-11 13:32:58 +02:00
Frederic Junod
0286564e8a Remove unnecessary quotes around object keys 2015-06-11 11:58:11 +02:00
Andreas Hocevar
96e75ab17f Merge pull request #3787 from ahocevar/unmanaged-layerstate
Add 'unmanaged' to ol.layer.LayerState
2015-06-11 10:53:38 +02:00
Frédéric Junod
a6dddfa282 Merge pull request #3784 from fredj/geojson_geometry
Always write the GeoJSONFeature geometry property
2015-06-11 10:20:02 +02:00
Andreas Hocevar
5a2a7d30e6 Add 'unmanaged' to ol.layer.LayerState 2015-06-11 10:17:11 +02:00
Frederic Junod
d5ea855108 Add missing GeoJSONGeometryCollection type to GeoJSONFeature#geometry 2015-06-11 09:53:06 +02:00
Frederic Junod
d8a495b639 Always write the GeoJSONFeature geometry property 2015-06-11 09:53:06 +02:00
Andreas Hocevar
4aa3ef59d5 Merge pull request #3783 from ahocevar/wmts-hidpi-from-capabilities
Fix broken wmts-hidpi example
2015-06-10 20:03:53 +02:00
Andreas Hocevar
7451e176ef Use capabilities to create layer source options 2015-06-10 18:32:21 +02:00
Andreas Hocevar
872d869ded Merge pull request #3782 from gberaudo/typo
Fix assert documentation typo
2015-06-10 15:47:35 +02:00
Guillaume Beraudo
d48e818390 Fix assert documentation typo 2015-06-10 15:36:43 +02:00
Andreas Hocevar
fad3cf9672 Merge pull request #3758 from ahocevar/remove-featureoverlay
Removal of ol.FeatureOverlay
2015-06-10 14:33:28 +02:00
Andreas Hocevar
9acd65270a Make clear how to remove an unmanaged layer from a map 2015-06-09 15:44:39 +02:00
Andreas Hocevar
57e1dda5f1 Make sure that #clear() keeps the collection in sync 2015-06-09 15:44:39 +02:00
Andreas Hocevar
53d5d8c1d9 Get rid of ol.FeatureOverlay
This also introduces a wrapX option to the Draw, Modify and Select
interaction.
2015-06-09 15:44:31 +02:00
Andreas Hocevar
54da473991 Allow layers that are not managed by the map
When a layer is configured with a map, it will be added on top of other
layers, and not be managed in the map's features collection. The layerState
will have an 'unmanaged' flag for such layers. For vector layers, this flag
is used to not skip any features.
2015-06-09 15:44:29 +02:00
Andreas Hocevar
f186ed3deb Alternatively manage features in an ol.Collection
ol.layer.Vector can now manage both an RTree and a Collection of features.
The new useSpatialIndex option allows to opt out of RTree management, and
the new ol.Collection type of the features option allows to opt in for
Collection management.
2015-06-09 15:44:18 +02:00
Pierre GIRAUD
973cc6fd89 Merge pull request #3775 from pgiraud/touch-classname
Add ol-touch but keep ol-viewport className.
2015-06-09 12:20:55 +02:00
Pierre GIRAUD
36b521a00e Add ol-touch but keep ol-viewport className. 2015-06-09 11:34:19 +02:00
Pierre GIRAUD
7065722fa6 Show measurement tooltip on geometry change instead of relying on pointermove 2015-06-08 16:19:28 +02:00
Bart van den Eijnden
10b54a9f3f Merge pull request #3713 from bartvde/issue-3713
Add missing propertyNames member for olx.format.WFSWriteGetFeatureOptions
2015-06-08 16:15:17 +02:00
Bart van den Eijnden
e3bc0bca3e Add missing propertyNames member for olx.format.WFSWriteGetFeatureOptions extern 2015-06-08 15:56:42 +02:00
Andreas Hocevar
b903cee7dd Merge pull request #3763 from probins/drawmod
Standardise draw/modify descriptions
2015-06-07 17:34:47 +02:00
Andreas Hocevar
2e406c9633 Merge pull request #3767 from openlayers/release-v3.6.0
Release v3.6.0
2015-06-07 14:18:09 +02:00
Andreas Hocevar
9f4112a8f9 Update package version to 3.6.0 2015-06-07 14:16:34 +02:00
Andreas Hocevar
30ddbad4fe Changelog for v3.6.0 2015-06-07 14:14:49 +02:00
Marc Jansen
efd1caf00f Merge pull request #3764 from alvinlindstam/intersectsExtent
Add tests and implementation for intersectsExtent (ol.geom.Geometry)
2015-06-05 14:52:50 +02:00
Marc Jansen
488a55c83c Add more tests for intersectsExtent 2015-06-05 14:20:06 +02:00
Alvin Lindstam
1dc6c99328 Make ol.geom.Circle support #intersectsExtent, with tests 2015-06-05 14:19:46 +02:00
Alvin Lindstam
405d5666e2 Add tests for intersectsExtent/getExtent
This commit adds tests for `intersectsExtent` of Point, LineString, Polygon,
MultiPoint, MultiLineString, MultiPolygon and GeometryCollection.

It also adds a basic test for `getExtent` of MultiPolygon
2015-06-05 14:19:46 +02:00
Peter Robins
282fdafad7 Standardise draw/modify descriptions 2015-06-05 07:54:22 +00:00
Andreas Hocevar
bad5a97d20 Merge pull request #3757 from bjornharrtell/selectevent-browser
Add mapBrowserEvent as a member of ol.SelectEvent
2015-06-04 18:56:55 +02:00
Björn Harrtell
9a9b838235 Add mapBrowserEvent as a member of ol.SelectEvent 2015-06-04 16:53:53 +02:00
Marc Jansen
5bdfc35d35 Merge pull request #3759 from gberaudo/api_tilegrid_createTileCoordTransform
Mark tilegrid.createTileCoordTransform() @api
2015-06-04 10:19:34 +02:00
Guillaume Beraudo
361d83dc73 Mark tilegrid.createTileCoordTransform() @api
Necessary since the removal of tilegridXYZ type.
2015-06-04 09:24:35 +02:00
Andreas Hocevar
8f2cfe9420 Merge pull request #3747 from ahocevar/tilecoordtransform
Make tileCoordTransform a member again
2015-06-03 14:11:00 +02:00
Andreas Hocevar
5d9708be11 Add tests 2015-06-03 12:41:35 +02:00
Andreas Hocevar
ea7879f616 Merge pull request #3751 from ahocevar/tilejson-test
Do not rely on remote services for tests
2015-06-01 11:23:52 +02:00
Andreas Hocevar
682c816b9b Do not rely on remote services for tests 2015-06-01 10:09:38 +02:00
Marc Jansen
b1289dbae7 Merge pull request #3749 from marcjansen/typo
Fix typo in API docs
2015-06-01 08:51:56 +02:00
Marc Jansen
cf99bcbba1 Fix typo in API docs 2015-06-01 07:56:58 +02:00
Andreas Hocevar
5ae2521724 Make tileCoordTransform configurable
Instead of using the static createOriginTopLeftTileCoordTransform
function, the correct transform is now a non-API config option of the tile
grid.
2015-05-31 22:22:41 +02:00
Marc Jansen
81b13f295b Merge pull request #3739 from marcjansen/simpler-scientific-wkt
Simplify detection of scientific notation in WKT format
2015-05-31 15:50:50 +02:00
Marc Jansen
e43573bcf2 Merge pull request #3741 from marcjansen/callback-docs
Enhance docs of arguments and return values of callbacks / filters
2015-05-29 13:52:27 +02:00
Marc Jansen
894be51b36 Merge pull request #3740 from probins/fireselect
Add @fires to select interaction
2015-05-29 13:30:05 +02:00
Marc Jansen
b06f3457da Enhance docs of arguments of callbacks/filters 2015-05-29 13:20:58 +02:00
Peter Robins
7f1053d2cd Add @fires to select interaction 2015-05-29 10:59:07 +00:00
Marc Jansen
96741e1f0b Simplify detection of scientific notation
This change allows us to remove some avoidable function calls (specifically
to goog.isDef(c) and  c.toLowerCase()). Additionally, the new check is simpler
to read.
2015-05-29 09:33:29 +02:00
Andreas Hocevar
f5cd9a3eba Merge pull request #3738 from ahocevar/tileurlfunction-docs
Improve doucmentation for ol.TileUrlFunctionType
2015-05-28 22:48:19 +02:00
Andreas Hocevar
4196e34c73 Improve doucmentation for ol.TileUrlFunctionType 2015-05-28 18:52:35 +02:00
Frédéric Junod
22bed40f5c Merge pull request #3736 from fredj/examples_html_markup
Fix invalid example HTML markup
2015-05-28 10:44:51 +02:00
Frédéric Junod
a33008be9e Merge pull request #3735 from probins/snap
Snap example: remove featureoverlay from tags
2015-05-28 10:26:52 +02:00
Frederic Junod
746116d266 Fix invalid example HTML markup 2015-05-28 10:23:14 +02:00
Peter Robins
1f6d2eff96 Snap example: remove featureoverlay from tags 2015-05-28 07:57:17 +00:00
Marc Jansen
764f821a70 Merge pull request #3732 from marcjansen/control-blur-binding
Add a method to bind button bluring on mouseout/focusout
2015-05-27 09:22:15 +02:00
Marc Jansen
41596d808b Add method to bind bluring on mouseout/focusout 2015-05-26 22:32:09 +02:00
Frédéric Junod
ec208916d2 Merge pull request #3659 from fredj/undo_forEachFeatureAtCoordinate
Revert "Implement ol.renderer.Layer#forEachFeatureAtCoordinate"
2015-05-26 09:34:06 +02:00
bogdanvaduva
2fd894ffb9 Changed overviewmapcontrol.js due to Travis ci errors 2015-05-25 20:50:06 +03:00
bogdanvaduva
5569bd9113 Added getOverviewMap getter method in overviewmapcontrol.js 2015-05-25 15:23:43 +03:00
Bart van den Eijnden
78dcbe6b8e Merge pull request #3683 from probins/group
Improve Map docs for layers and layergroups
2015-05-23 17:25:25 +02:00
Peter Robins
074941bf1f Improve Map docs for layers and layergroups 2015-05-23 11:53:37 +00:00
Éric Lemoine
824a77e41b Merge pull request #3720 from elemoine/missingprovides
Add missing goog.provides in drawinteraction.js
2015-05-22 12:15:56 +02:00
Éric Lemoine
e766d00e7b Add upgrade note of ol.DrawEvent and ol.DrawEventType 2015-05-22 11:58:48 +02:00
Frédéric Junod
2e2d08f552 Merge pull request #3725 from fredj/doc
Document default value for olx.interaction.ModifyOptions#pixelTolerance
2015-05-22 11:43:38 +02:00
Frederic Junod
9870fe58e0 Document default value for olx.interaction.ModifyOptions#pixelTolerance 2015-05-22 11:26:58 +02:00
Andreas Hocevar
80efbb60d0 Merge pull request #3722 from ahocevar/tilejson-tilegrid
Use the correct TileCoord transform function
2015-05-22 11:08:07 +02:00
Andreas Hocevar
111e6db8c8 Add tests 2015-05-22 10:55:18 +02:00
Andreas Hocevar
f40aa54c18 Use the correct TileCoord transform function 2015-05-22 09:19:59 +02:00
Éric Lemoine
531b35d7c2 Be consistent with the way we name types 2015-05-21 17:32:32 +02:00
Éric Lemoine
879307da1b Add missing goog.provides in drawinteraction.js 2015-05-21 15:41:51 +02:00
Éric Lemoine
acb0a8da53 Merge pull request #3692 from bill-chadwick/windows
Updates for building on Windows using Cygwin.
2015-05-21 12:57:34 +02:00
Tobias Sauerwein
e87b616de8 Merge pull request #3718 from tsauerwein/renderOrder-assertion
Add a assertion for renderOrder
2015-05-21 11:20:27 +02:00
tsauerwein
a3f9b3ba43 Add assertion for renderOrder 2015-05-21 09:26:47 +02:00
Bart van den Eijnden
680f140858 Merge pull request #3711 from marcjansen/color
Fix and test ol.color.blend
2015-05-20 15:25:54 +02:00
Marc Jansen
b6a4188ce4 Fix and test ol.color.blend 2015-05-20 12:50:52 +02:00
Andreas Hocevar
4be106d014 Merge pull request #3673 from ahocevar/draw-regular-polygon
More control over ol.interaction.Draw, to allow e.g. square drawing
2015-05-20 12:08:15 +02:00
Andreas Hocevar
100020fd59 Refactoring for more consistency
* Min and max number of points configurable for lines and polygons
* Polygons from custom geometryFunction now have a sketch line
* The example shows how to use a custom geometryFunction
2015-05-20 10:28:16 +02:00
Marc Jansen
3580cdc823 Merge pull request #3710 from marcjansen/extent-tests
Add more tests for ol.extent
2015-05-20 06:26:49 +02:00
Marc Jansen
f0720b2f97 Add more tests for ol.extent 2015-05-19 22:25:55 +02:00
Bart van den Eijnden
e578f98c73 Merge pull request #3709 from bartvde/issue-3709
vector-wfs example does not work in JSFiddle
2015-05-19 21:58:50 +02:00
Bart van den Eijnden
1dbf8cd4d6 Make sure vector-wfs example works in JSFiddle 2015-05-19 21:08:30 +02:00
Marc Jansen
0f36d1a7c2 Merge pull request #3699 from marcjansen/scientific-wkt
Add support for scientific notation to WKT format
2015-05-18 12:00:56 +02:00
Marc Jansen
2b76bc05a5 Add support for scientific notation to WKT format 2015-05-18 11:27:39 +02:00
Marc Jansen
1ac41c7403 Merge pull request #3696 from marcjansen/will-it-blend
Add an example for various blend modes
2015-05-15 17:09:33 +02:00
Marc Jansen
96550c8fcf Merge pull request #3697 from marcjansen/npm-license-warning
Use a valid SPDX license expression
2015-05-15 16:58:50 +02:00
Marc Jansen
26f1062dbf Use a valid SPDX license expression 2015-05-15 13:55:22 +02:00
Marc Jansen
26ad3fe6b1 Add an example for various blend modes 2015-05-15 13:33:31 +02:00
Éric Lemoine
34986b0870 Merge pull request #3694 from probins/patch-2
Correct typo in upgrade-notes
2015-05-15 10:26:06 +02:00
Andreas Hocevar
19c91235ce Add convenience function to create a regular polygon geometryFunction 2015-05-14 23:24:29 +02:00
Andreas Hocevar
901a0f6d8e Add functions to create regular polygons 2015-05-14 23:24:29 +02:00
Andreas Hocevar
250221cded Add new geometryFunction option
This allows applications to control the geometry that is created from the
drawing sketch. Will e.g. be useful to create a regular polygon instead of
a circle when in Circle mode.
2015-05-14 23:24:29 +02:00
Andreas Hocevar
4e94908440 Define getCoordinates and setCoordinates in the base class
Since these methods are implemented by all subclasses, it makes sense to
define them in the base class as abstract method.
2015-05-14 23:24:29 +02:00
Peter Robins
23b207dae4 Correct typo in upgrade-notes 2015-05-14 16:08:16 +01:00
Éric Lemoine
16c4082898 Merge pull request #3693 from tremby/contains-extent-doc
Fix ol.extent.containsExtent documentation
2015-05-14 09:10:45 +02:00
bill-chadwick
51c8bcae57 Updates for building on Windows using Cygwin.
Tested on Windows 7.
2015-05-14 07:08:16 +01:00
Bart Nagel
b606f4996b Fix ol.extent.containsExtent documentation
The `ol.extent.containsExtent` documentation had its arguments backwards
(or the implementation did).

The documentation said "the first extent is contained by or on the edge
of the second", but the function checked the opposite.

The wording was also a little strange, since from the name of the
function alone `containsExtent` I'd guess that the first argument would
be the (potential) container, and the second would be the (potentially)
contained. But the documentation has the wording "check if one extent is
*contained by* or on the edge of another", suggesting the first argument
is the contained and the second the container.

This patch keeps the current functionality but clarifies the
documentation.
2015-05-13 12:10:06 -07:00
Éric Lemoine
7dc2a2b97e Merge pull request #3689 from probins/wmts
Fix WMTS.optionsFromCapabilities if no OperationsMetadata section
2015-05-13 15:22:34 +02:00
Peter Robins
a243149d02 Fix WMTS.optionsFromCapabilities if no OperationsMetadata section 2015-05-13 12:43:12 +00:00
Frédéric Junod
a314813511 Merge pull request #3688 from fredj/failIfMajorPerformanceCaveat_externs
Add two missing properties to extern of WebGLContextAttributes
2015-05-12 15:14:05 +02:00
Frederic Junod
fe79389fd3 Add two missing properties to extern of WebGLContextAttributes
To be removed when the closure-compiler is updated
2015-05-12 13:55:13 +02:00
Bart van den Eijnden
d5c69b2e5e Merge pull request #3682 from bartvde/api-addlayer
Add a note about using the collection in addLayer
2015-05-10 17:32:19 +02:00
Bart van den Eijnden
2724292de1 Add a note about using the collection in addLayer 2015-05-10 12:20:02 +02:00
Éric Lemoine
829337c219 Merge pull request #3649 from elemoine/servejs
More specific regex in serve.js
2015-05-09 16:34:43 +02:00
Tim Schaub
549d0a7601 Merge pull request #3677 from tschaub/example-metadata
Add metadata to examples,
2015-05-09 08:34:04 -06:00
Tim Schaub
b602285992 Add metadata to the mobile full-screen example 2015-05-08 06:39:06 -06:00
Tim Schaub
82b1355591 Add metadata to the geolocation orientation example 2015-05-08 06:31:34 -06:00
Marc Jansen
249f432b2e Merge pull request #3672 from marcjansen/link-faq
Add link to FAQ-document and fix internal links
2015-05-08 12:27:17 +02:00
Marc Jansen
45a5b1d24e Add link to FAQ-document and fix internal links 2015-05-08 11:02:39 +02:00
Marc Jansen
c5b788f370 Merge pull request #3665 from marcjansen/missing-resources
Add proj4js and projection definition files to example resources
2015-05-06 15:26:22 +02:00
Marc Jansen
ebded733f7 Add proj4js/projection definition files to example 2015-05-06 13:27:27 +02:00
Tobias Sauerwein
e4e91b82d6 Merge pull request #3662 from tsauerwein/renderbuffer-docs
Clarify docs for renderBuffer option
2015-05-06 09:09:12 +02:00
Tim Schaub
8f9cde0595 Merge pull request #3664 from tschaub/download-page
Link to download page.
2015-05-05 15:27:23 -06:00
Tim Schaub
f47d873ae5 Link to download page 2015-05-05 14:11:11 -06:00
Andreas Hocevar
492a3c8f7a Merge pull request #3639 from ahocevar/tilegrid-extent
Add extent support to ol.tilegrid.TileGrid
2015-05-05 19:22:10 +02:00
Tim Schaub
0bf70489b6 Merge pull request #3663 from tschaub/fewer-version-numbers
Readme should not include the version number.
2015-05-05 11:21:42 -06:00
Andreas Hocevar
32efd99397 Do not require projection extent for WMTS bbox validity check 2015-05-05 18:52:33 +02:00
Andreas Hocevar
0650a97371 Explain tilegrid and xyz source changes 2015-05-05 18:52:33 +02:00
Andreas Hocevar
b05193fa45 Replace ol.tilegrid.XYZ with an ol.tilegrid.createXYZ function 2015-05-05 18:52:33 +02:00
Andreas Hocevar
a116878a57 Allow extents to restrict tile ranges requested from the server
The addition of full extent tile ranges also allows us to simplify wrapX
handling for tile layers. By limiting wrapX to true and false as possible
values, we can remove a lot of guessing logic.
2015-05-05 18:52:33 +02:00
Andreas Hocevar
700903ca5c Add tests for ol.tilegrid.TileGrid
These tests are taken from ol.tilegrid.XYZ, to make sure that
ol.tilegrid.TileGrid works the same way. The additional tests show that the
#getTileCoordForXYAndResolution_() method do not handle coordinates at
tile boundaries properly, so this is fixed.
2015-05-05 18:52:32 +02:00
Tim Schaub
4192092dcf Readme should not include the version number
We should not repeat the version number throughout the source.  Eventually, the download page will be http://openlayers.org/download/.
2015-05-05 10:28:03 -06:00
tsauerwein
c0d9a822f8 Clarify docs for renderBuffer 2015-05-05 17:22:33 +02:00
Frederic Junod
bb6192bc10 Revert "Implement ol.renderer.Layer#forEachFeatureAtCoordinate"
This reverts commit dd07fd7977.
2015-05-05 09:38:50 +02:00
Frédéric Junod
56e8575e41 Merge pull request #3637 from fredj/forEachFeatureAtCoordinate
Implement ol.renderer.Layer#forEachFeatureAtCoordinate
2015-05-05 07:48:54 +02:00
Tim Schaub
c8bc177ac0 Merge pull request #3658 from openlayers/release-v3.5.0
Release v3.5.0.
2015-05-04 22:43:55 -06:00
Tim Schaub
57002ec80a Update package version to 3.5.0 2015-05-04 22:36:58 -06:00
Tim Schaub
208b42d15b Changelog for 3.5.0 2015-05-04 22:36:17 -06:00
Éric Lemoine
762bb0f055 More specific regex in serve.js
This is to be able to use the dev server (`npm start`) to serve the hosted examples (located in the `build/hosted/<branch>` dir after `make host-examples`).
2015-04-30 09:14:40 +02:00
Thomas Gratier
b044372cd8 Update package.json
When pushing previous content to npm, it complains that it only accepts `"browser": "dist/ol.js"` hence the correction again
2015-04-30 04:50:40 +02:00
Éric Lemoine
27ac8a5a23 Merge pull request #3646 from elemoine/generate-requires
Use graceful-fs in place of fs
2015-04-29 13:50:11 +02:00
Éric Lemoine
6a16920378 Use graceful-fs in place of fs
Change generate-requires.js to use the graceful-fs module instead of fs. This is to avoid EMFILE errors on OSX because the maximum number of file descriptors have been reached.
2015-04-29 13:27:25 +02:00
Éric Lemoine
5ea80f5feb Merge pull request #3645 from elemoine/test-coverage
Fix test-coverage.js script
2015-04-29 13:25:47 +02:00
Éric Lemoine
790bd644c4 Merge pull request #3640 from elemoine/makefile
Make make fail on requires and whitespace errors
2015-04-29 12:13:04 +02:00
Éric Lemoine
dabc04697f Merge pull request #3644 from t27/master
added altclick select to selectfeatures example
2015-04-29 12:04:57 +02:00
Éric Lemoine
e40a51574b Fix test-coverage.js script
Fix test-coverage by only replacing the last occurence of `/src/` when deriving the instrumented file path from the original file path.
2015-04-29 12:00:06 +02:00
tarang
bf91c1792b added altclick select to selectfeatures example 2015-04-29 15:12:51 +05:30
Éric Lemoine
b4434725a5 Make check-whitespace.py exit 1 on whitespace errors 2015-04-29 09:12:13 +02:00
Éric Lemoine
6d1baec34a Add missing goog.require 2015-04-29 09:10:18 +02:00
Éric Lemoine
507335ea69 Make check-requires.py exit 1 on missing/unused requires 2015-04-29 09:10:04 +02:00
Éric Lemoine
04dea3c6ff Merge pull request #3612 from elemoine/wmtsgeturls
Add ol.source.WMTS#getUrls and getRequestEncoding
2015-04-28 17:39:12 +02:00
Frederic Junod
dd07fd7977 Implement ol.renderer.Layer#forEachFeatureAtCoordinate
And remove identical implementation in children classes.
2015-04-28 14:08:45 +02:00
Éric Lemoine
3a03e9f76a Add ol.source.WMTS#getRequestEncoding 2015-04-27 16:40:01 +02:00
Éric Lemoine
2a2fea379e Add ol.source.WMTS#getUrls 2015-04-27 16:40:01 +02:00
Andreas Hocevar
1d6530ce9c Merge pull request #3616 from ahocevar/freehand-drawing
Add support for freehand drawing to the Draw interaction
2015-04-27 11:27:10 +02:00
Andreas Hocevar
ed7e5ddef7 Improve the draw-features example description 2015-04-27 11:10:16 +02:00
Frédéric Junod
574c5a02c8 Merge pull request #3634 from fredj/kill-unused-local-var
Remove unused local variable
2015-04-27 10:21:03 +02:00
Frederic Junod
4b5f8cd60e Remove unused local variable 2015-04-27 09:56:01 +02:00
Tobias Sauerwein
8e4063d905 Merge pull request #3629 from tsauerwein/snap-xyz
Problems with XYZ coordinates in snap interaction
2015-04-27 08:53:34 +02:00
Éric Lemoine
234db95e3d Merge pull request #3633 from elemoine/editorconfig
Add a Makefile section to .editorconfig
2015-04-27 07:48:38 +02:00
Éric Lemoine
07c4312f4a Merge pull request #3632 from elemoine/indexjs
Make host-examples target copy index.js
2015-04-27 07:35:03 +02:00
Éric Lemoine
079733040f Add a Makefile section to .editorconfig
make requires tabs.
2015-04-26 22:21:37 +02:00
Éric Lemoine
db7b9bbd87 Merge pull request #3631 from bjornharrtell/modify-constructor-test
Restore Modify interaction constructor test
2015-04-26 21:56:34 +02:00
Éric Lemoine
0f2c3bd45f Make host-examples target copy index.js 2015-04-26 21:51:37 +02:00
Björn Harrtell
11d378f36e Restore Modify interaction constructor test 2015-04-26 21:42:55 +02:00
Éric Lemoine
e60d3b75b2 Merge pull request #3630 from bjornharrtell/modify-test
Initial tests for Modify interaction vertex creation
2015-04-26 21:37:26 +02:00
Björn Harrtell
ce3f7665c0 Initial tests for Modify interaction 2015-04-26 21:23:32 +02:00
Éric Lemoine
c025f63019 Merge pull request #3527 from elemoine/makefile
Replace pake with make?
2015-04-26 21:12:09 +02:00
Éric Lemoine
553403d86e Remove build.cmd, build.py and pake.py 2015-04-26 20:42:44 +02:00
Éric Lemoine
3fdd1f2135 Update bin/loader_hosted_examples.js 2015-04-26 20:42:02 +02:00
Éric Lemoine
190eda1b1f Update test_rendering/index.html 2015-04-26 20:38:42 +02:00
Éric Lemoine
f0bdd26b26 Update test_rendering/README.md 2015-04-26 20:37:58 +02:00
Éric Lemoine
2e9f0f4890 Update test/index.html 2015-04-26 20:37:42 +02:00
Éric Lemoine
7988cc7fe9 Update test/README.md 2015-04-26 20:36:14 +02:00
Éric Lemoine
5522f05333 Update CONTRIBUTING.md 2015-04-26 20:21:32 +02:00
Éric Lemoine
4c2c21a5d6 Add Makefile 2015-04-26 20:20:59 +02:00
Marc Jansen
a6cddce92f Merge pull request #3624 from marcjansen/one-sentence
Add a one sentence summary for several exportable symbols
2015-04-25 20:08:39 +02:00
Thomas Gratier
a3a33c1dcd Issue encountered in the PR
See PR comments for an update
2015-04-25 01:43:06 +02:00
Bart van den Eijnden
dd0b2b33a1 Merge pull request #3623 from bartvde/format_options
ol3 overwrites WMS format_options instead of extending them.
2015-04-24 22:17:46 +02:00
tsauerwein
77f16c7fd6 Fix XYZ coordinates in snap interaction 2015-04-24 09:26:31 +02:00
Thomas Gratier
75a3c5f6ff Make package.json compatible for npm frontend use
This PR augments package.json to ease OpenLayers 3 frontend development through NPM.
See this post on NPM blog http://blog.npmjs.org/post/112712169830/making-your-jquery-plugin-work-better-with-npm to understand my viewpoint and evaluate if it's worth to accept.
2015-04-24 03:41:52 +02:00
Marc Jansen
96f0374b2f Add basic docs for mapbrowserevent 2015-04-23 20:49:36 +02:00
Marc Jansen
b70a39b59d Add basic docs for zoomslidercontrol 2015-04-23 20:27:41 +02:00
Marc Jansen
63a4a0c1d9 Add basic docs for scalelinecontrol 2015-04-23 20:27:28 +02:00
Marc Jansen
346ead1b55 Add basic docs for rotatecontrol 2015-04-23 20:27:15 +02:00
Marc Jansen
0d5fcf6411 Add basic docs for overviewmapcontrol 2015-04-23 20:27:01 +02:00
Marc Jansen
d8622c6511 Add basic docs for mousepositioncontrol 2015-04-23 20:26:49 +02:00
Marc Jansen
a433f1abbe Add basic docs for attributioncontrol 2015-04-23 20:26:37 +02:00
Bart van den Eijnden
f0bef58ba3 Do not overwrite FORMAT_OPTIONS if it is present already 2015-04-23 20:03:33 +02:00
Marc Jansen
cbc0ae730a Add basic docs for events.condition.* 2015-04-23 14:58:18 +02:00
Marc Jansen
52ad0bc62f Add basic docs for wktformat 2015-04-23 13:31:50 +02:00
Marc Jansen
4fc7672089 Add basic docs for wfsformat 2015-04-23 13:31:39 +02:00
Marc Jansen
4c6289278b Add basic docs for kmlformat 2015-04-23 13:31:26 +02:00
Pierre GIRAUD
70b0406c50 Merge pull request #3621 from openlayers/pgiraud-patch-1
Fix typo in documentation comment
2015-04-23 11:55:39 +02:00
Pierre GIRAUD
84d22266d6 Fix typo in documentation comment 2015-04-23 11:20:28 +02:00
Bart van den Eijnden
a2f0015b2e Merge pull request #3614 from bartvde/gml-wfs-fix
GML2 parser does not parse all features
2015-04-23 08:36:38 +02:00
Bart van den Eijnden
c74293335c Make sure ol.format.GML2 is usable for WFS 1.0 requests as well 2015-04-23 08:24:59 +02:00
Marc Jansen
9d4db1806a Merge pull request #3619 from marcjansen/one-sentence-geom
Add a one sentence summary for ol.geom.* exportable symbols
2015-04-23 00:11:03 +02:00
Tim Schaub
99818e63aa Merge pull request #3618 from tschaub/breaking-whitespace
Replace non-breaking space (U+00A0) with regular space (U+0020).
2015-04-22 15:50:56 -06:00
Marc Jansen
77a06433be Add basic docs for geom.simplegeometry 2015-04-22 21:10:00 +02:00
Marc Jansen
1252867f69 Add basic docs for geom.polygon 2015-04-22 21:09:59 +02:00
Marc Jansen
5c19415577 Add basic docs for geom.point 2015-04-22 21:09:59 +02:00
Marc Jansen
4f5982b9d0 Add basic docs for geom.multipolygon 2015-04-22 21:09:59 +02:00
Marc Jansen
f0c235d352 Add basic docs for geom.multipoint 2015-04-22 21:01:07 +02:00
Marc Jansen
4e448dddd6 Add basic docs for geom.multilinestring 2015-04-22 21:00:54 +02:00
Marc Jansen
144c262a9e Add basic docs for geom.linestring 2015-04-22 21:00:41 +02:00
Marc Jansen
6b1bccfcdd Add basic docs for geom.linearring 2015-04-22 21:00:29 +02:00
Marc Jansen
7e7c03820a Add basic docs for geom.geometrycollection 2015-04-22 21:00:16 +02:00
Marc Jansen
6637bf0f21 Add basic docs for geom.geometry 2015-04-22 21:00:05 +02:00
Marc Jansen
aef73c981f Add basic docs for geom.circle 2015-04-22 20:59:52 +02:00
Tim Schaub
46e780d1ca Merge pull request #3617 from tschaub/has-area
Add ol.size.hasArea.
2015-04-22 10:49:49 -06:00
Tim Schaub
c31ae25892 Replace non-breaking space (U+00A0) with regular space (U+0020) 2015-04-22 10:41:10 -06:00
Tim Schaub
1f07dfc343 Add ol.size.hasArea 2015-04-22 10:01:31 -06:00
Andreas Hocevar
ed424eded8 Add support for freehand drawing to the Draw interaction 2015-04-22 17:45:55 +02:00
Frédéric Junod
046ff764df Merge pull request #3597 from fredj/apidoc-code-link
Remove dead link in api doc
2015-04-22 16:25:15 +02:00
Marc Jansen
82ed962625 Merge pull request #3613 from marcjansen/one-sentence-interactions
Add a one sentence summary for ol.interaction* exportable symbols
2015-04-22 15:03:35 +02:00
Marc Jansen
4ea8cb7a19 Add basic docs for snapinteraction 2015-04-22 14:22:34 +02:00
Marc Jansen
a784157344 Add basic docs for selectinteraction 2015-04-22 14:22:34 +02:00
Marc Jansen
340d4805af Add basic docs for pointerinteraction 2015-04-22 14:22:34 +02:00
Marc Jansen
5a6c95b13c Add basic docs for mousewheelzoominteraction 2015-04-22 14:22:33 +02:00
Marc Jansen
73b103a19c Add basic docs for modifyinteraction 2015-04-22 14:20:06 +02:00
Marc Jansen
f756246efc Add basic docs for keyboardzoominteraction 2015-04-22 14:19:50 +02:00
Marc Jansen
98c6a24861 Add basic docs for keyboardpaninteraction 2015-04-22 14:19:30 +02:00
Marc Jansen
1917193ea9 Add basic docs for interaction 2015-04-22 14:19:17 +02:00
Marc Jansen
750a644396 Add basic docs for drawinteraction 2015-04-22 14:18:50 +02:00
Marc Jansen
6da863d627 Add basic docs for draganddropinteraction 2015-04-22 14:18:29 +02:00
Marc Jansen
134d8e6c18 Add basic docs for doubleclickzoominteraction 2015-04-22 14:18:01 +02:00
Bart van den Eijnden
75e642738f Merge pull request #3611 from bartvde/issue-3611
Improve error handling in Esri JSON format
2015-04-22 13:16:08 +02:00
Bart van den Eijnden
3b8e272a11 Better error handling in the ArcGIS REST vector examples 2015-04-22 12:01:28 +02:00
Tobias Sauerwein
2a95049ac4 Merge pull request #3560 from tsauerwein/permalink-example
Add an example showing how to create a permalink
2015-04-22 09:24:06 +02:00
Andreas Hocevar
90b736c62e Merge pull request #3571 from ahocevar/vector-wrapx
Add wrapX support for vector layers (canvas renderer only)
2015-04-22 09:21:02 +02:00
Andreas Hocevar
513677fecd Render map replay group on the correct world instead of wrapping it
By using the frameState's focus, we can adjust extent and transform and
render it for the world of interest instead of wrapping it and rendering
for every visible world.
2015-04-22 09:11:19 +02:00
tsauerwein
b8ec2e28b5 Add permalink example 2015-04-22 09:00:18 +02:00
Andreas Hocevar
23ed120361 Clarify when we make feature overlays wrap the x-axis 2015-04-21 09:56:03 +02:00
Andreas Hocevar
40feabc3c8 Do not require an extent for global projections 2015-04-21 09:11:06 +02:00
Bart van den Eijnden
3e8d1213bb Merge pull request #3605 from bartvde/issue-3605
vector-esri-edit.html uses non api method
2015-04-21 08:41:37 +02:00
Andreas Hocevar
4f8dca92ba Ensure functions are always called with the same number of args 2015-04-21 08:21:31 +02:00
Tim Schaub
5630b0c1f2 Merge pull request #3602 from tschaub/names
Rename ol.feature.FeatureStyleFunction to ol.FeatureStyleFunction.
2015-04-20 14:56:06 -06:00
Tim Schaub
3d662f1c4c Add upgrade notes 2015-04-20 14:15:36 -06:00
Tim Schaub
f0c0c28f04 Rename ol.feature.FeatureStyleFunction to ol.FeatureStyleFunction 2015-04-20 13:47:34 -06:00
Bart van den Eijnden
dab6567aec Make sure vector-esri-edit example works hosted 2015-04-20 21:06:15 +02:00
Bart van den Eijnden
8ddf162279 Merge pull request #3604 from bartvde/browserify-tutorial
Add charset so that zoom out button shows correctly
2015-04-20 19:11:51 +02:00
Bart van den Eijnden
83f1234d7a Add charset so that zoom out button shows correctly 2015-04-20 18:45:00 +02:00
Éric Lemoine
a07809cbbf Merge pull request #3603 from elemoine/upgrade-notes
Reformat upgrade-notes.md
2015-04-20 17:53:59 +02:00
Éric Lemoine
252f8cbd9e Reformat upgrade-notes.md 2015-04-20 16:55:36 +02:00
Éric Lemoine
ab066e1914 Merge pull request #3599 from probins/vector
Improve docs for source.Vector options
2015-04-20 16:20:23 +02:00
Tim Schaub
230e1944c2 Merge pull request #3598 from tschaub/clean
Remove unnecessary entry in `.gitignore`.
2015-04-20 08:16:39 -06:00
Peter Robins
30b52ef213 Improve docs for source.Vector options 2015-04-20 13:31:27 +00:00
Frederic Junod
00ce2f0f58 Remove dead link in api doc
Fixes #3596
2015-04-20 15:07:39 +02:00
Tim Schaub
e2eba46d32 All build artifacts should be generated in the build directory 2015-04-20 07:02:38 -06:00
Frédéric Junod
98240b0bea Merge pull request #3595 from probins/loader
Add featureloader.jsdoc
2015-04-20 14:53:16 +02:00
Peter Robins
c8106e11b6 Add featureloader.jsdoc 2015-04-20 12:40:38 +00:00
Frédéric Junod
fc02d715d7 Merge pull request #3593 from fredj/ignore-build-examples
Add /examples/index.js to .gitignore
2015-04-20 14:36:26 +02:00
Frederic Junod
b4d64523e9 Add /examples/index.js to .gitignore
The file is created by tasks/build-examples.js
2015-04-20 14:13:50 +02:00
Frédéric Junod
43984b24dd Merge pull request #3592 from probins/binding
Remove reference to binding in Collection docs
2015-04-20 12:46:25 +02:00
Frédéric Junod
522358614b Merge pull request #3591 from fredj/fixes-3589
Only draw the layer if visible and inside the resolution range
2015-04-20 12:45:23 +02:00
Peter Robins
0ed5984371 Remove reference to binding in Collection docs 2015-04-20 10:27:30 +00:00
Frederic Junod
8fd2fae0cb Only draw the layer if visible and inside the resolution range 2015-04-20 12:15:34 +02:00
Frederic Junod
c31a9ee71e Use getRendererFromQueryString() in wms-image examples 2015-04-20 12:13:55 +02:00
Frédéric Junod
cb4fd37be4 Merge pull request #3528 from fredj/layer-group-leak
Fix memory leak when removing layers from ol.layer.Group
2015-04-20 09:51:29 +02:00
Frederic Junod
dc0be1228c Add more ol.layer.Group tests 2015-04-20 09:20:19 +02:00
Frederic Junod
486a329cb4 Fix memory leak when removing layers from ol.layer.Group
Fixes #3479
2015-04-20 09:20:19 +02:00
Frédéric Junod
8b95ea4fbc Merge pull request #3549 from fredj/keyboard_pan_duration
Move ol.*_DURATION const to a constructor option
2015-04-20 09:03:53 +02:00
Tim Schaub
1e5a621d3d Merge pull request #3587 from tschaub/intersects
Handle left/right segment intersections for top/bottom spans.
2015-04-19 10:37:03 -06:00
Tim Schaub
a67218bd7d Merge pull request #3516 from tschaub/unbinary
Remove ol.format.BinaryFeature.
2015-04-19 10:04:53 -06:00
Tim Schaub
42d8d499bd Merge pull request #3586 from probins/dragdrop
Simplify dragAndDropInteraction in examples.
2015-04-19 10:03:25 -06:00
Tim Schaub
941f53ec80 Handle left/right segment intersections for top/bottom spans
The ol.extent.intersectsSegment function was not correctly handling segments that span from above to below an extent while intersecting the sides.
2015-04-19 09:43:06 -06:00
Peter Robins
22f22b2877 Simplify dragAndDropInteraction in examples 2015-04-19 13:26:25 +00:00
Bart van den Eijnden
ed76bdb095 Merge pull request #3555 from bartvde/esri-json
Esri JSON support
2015-04-19 10:32:38 +02:00
Andreas Hocevar
8fd4e2c7c5 Improve docs, comments and code readability 2015-04-19 08:52:37 +02:00
Andreas Hocevar
6a2aa833b4 Improve tests for ol.renderer.canvas.VectorLayer 2015-04-19 08:52:26 +02:00
Frederic Junod
288392c8a7 Remove externs/vbarray.js 2015-04-18 17:10:24 -06:00
Frederic Junod
b1d59366dc Remove ol.format.FormatType.BINARY 2015-04-18 17:10:15 -06:00
Tim Schaub
6a564597fb Update types accepted when reading features 2015-04-18 17:07:34 -06:00
Tim Schaub
4260368b3b Remove untested and unused binary feature format code 2015-04-18 17:05:23 -06:00
Andreas Hocevar
9a58151caa Do not wrapX for editing 2015-04-18 19:10:54 +02:00
Andreas Hocevar
d5e5628fe1 Add some tests 2015-04-18 19:10:54 +02:00
Andreas Hocevar
b51aaa5055 Wrap the x-axis for the map's replay group 2015-04-18 19:10:53 +02:00
Andreas Hocevar
45cc660c48 Use x of the real world in forEachFeatureAtCoordinate 2015-04-18 19:10:53 +02:00
Andreas Hocevar
a90a012e5d Replay vector batches for each world 2015-04-18 19:10:53 +02:00
Marc Jansen
a948ed410e Merge pull request #3583 from marcjansen/one-sentence-proj-layer
Add a one sentence summary for ol.proj.* and ol.layer.* exportable symbols
2015-04-18 18:14:12 +02:00
Tim Schaub
62e7f69be4 Merge pull request #3581 from tschaub/doc-links
Always show links to related API documentation.
2015-04-18 08:47:01 -06:00
Tim Schaub
7ca20665a5 Merge pull request #3582 from tschaub/index-requires
Index what the examples require.
2015-04-18 08:41:46 -06:00
Marc Jansen
a278c65e61 Add basic docs for layer.Vector 2015-04-18 09:07:41 +02:00
Marc Jansen
041abdb6a1 Add basic docs for layer.Tile 2015-04-18 09:07:34 +02:00
Marc Jansen
b457b26743 Add basic docs for layer.Group 2015-04-18 09:07:13 +02:00
Marc Jansen
b46505a09b Add basic docs for layer.Base 2015-04-18 09:07:05 +02:00
Marc Jansen
18bb32e409 Add basic docs for layer.Image 2015-04-18 09:01:15 +02:00
Marc Jansen
192639a876 Add basic docs for layer.Heatmap 2015-04-18 09:00:51 +02:00
Marc Jansen
0360e8bce8 Add unit 'us-ft' to API docs 2015-04-18 08:26:26 +02:00
Tim Schaub
2dd3fbf307 Renaming and docs for clarity 2015-04-17 16:09:43 -06:00
Tim Schaub
bc1bde6a86 Index what the examples require 2015-04-17 16:03:55 -06:00
Tim Schaub
e65800ca63 Always show links to related API documentation
This is based on the assumptions that

 * our examples always goog.require something ol.* (otherwise why have the example)
 * our examples only goog.require exportable symbols or "namespaces" for exportable symbols (e.g. ol.control for the defaults function)
 * we have an API doc page for each exportable symbol and each "namespace" that has exportable symbols (e.g. ol.Map.html and ol.control.html)

It may be that this assumption proves to be wrong, but it would be nice to avoid the extra network traffic and layout shifting when examples load.
2015-04-17 15:41:38 -06:00
Marc Jansen
f07b14c436 Merge pull request #3580 from marcjansen/one-sentence-source
Add a one sentence summary for ol.source.* exportable symbols
2015-04-17 23:01:12 +02:00
Marc Jansen
0ea3645ae9 Merge pull request #3551 from marcjansen/examples-link-to-api-docs
Automatically add links to API-docs in examples
2015-04-17 22:52:19 +02:00
Marc Jansen
99e39fe06e Add basic documentation to @api symbols 2015-04-17 22:38:29 +02:00
Bart van den Eijnden
8f0d6a6382 No need to quote object properties in tests 2015-04-17 21:56:40 +02:00
Tim Schaub
857baaa7e6 Merge pull request #3575 from nd0ut/master
Check proj equivalence by code.
2015-04-17 13:55:29 -06:00
Marc Jansen
0fcd312812 Check if API-docs point to existing resources 2015-04-17 21:54:15 +02:00
Marc Jansen
fedceb9a05 Automatically add links to API-docs in examples
When we create the examples, we know exactly which specific `ol.…` symbols
we `goog.require(…)`. We can create links to the API documentation of these
symbols automatically.
2015-04-17 21:50:50 +02:00
Tim Schaub
eff48c026a Merge pull request #3579 from tschaub/ssl
Use HTTPS were available.
2015-04-17 11:10:14 -06:00
Tim Schaub
ad95efd795 Use HTTP for {a-c}.tile.opencyclemap.org
While the resource is available via HTTPS, it currently generates NET::ERR_CERT_COMMON_NAME_INVALID.
2015-04-17 10:40:59 -06:00
Bart van den Eijnden
32120f6cfb Move examples to examples directory 2015-04-17 18:39:05 +02:00
Bart van den Eijnden
560a45847f No quotes needed around object keys 2015-04-17 18:36:17 +02:00
Bart van den Eijnden
4901d9a48f Primitive types are not nullable by default 2015-04-17 18:36:17 +02:00
Bart van den Eijnden
6c4f2a4ce3 Document convert rings function and use GeometryType enums 2015-04-17 18:36:16 +02:00
Bart van den Eijnden
a438ffb280 Add full support for XYM and XYZM layouts 2015-04-17 18:36:16 +02:00
Bart van den Eijnden
db8c6ef1b4 Write support for Esri JSON 2015-04-17 18:36:16 +02:00
Bart van den Eijnden
93c524baa0 Esri JSON read support 2015-04-17 18:36:16 +02:00
Tim Schaub
3b1c33ded5 Remove unused ol.IS_HTTPS 2015-04-17 10:30:31 -06:00
Tim Schaub
b22f3c6829 Use HTTPS where available 2015-04-17 10:30:31 -06:00
Tim Schaub
0dfc2ce44f Avoid protocol relative URLs
These fail to load in contexts where the "file protocol" is used (e.g. PhantomJS).
2015-04-17 10:30:31 -06:00
Tim Schaub
bba326fdf4 Merge pull request #3558 from tschaub/built-examples
Example sources in examples dir and built examples in build/examples.
2015-04-17 10:17:41 -06:00
Tim Schaub
13e40fb98c Merge pull request #3550 from tschaub/fewer-differences
Reduce differences between the rendering test runner and the standard test runner.
2015-04-17 10:16:00 -06:00
Tim Schaub
14b7edb140 Keep the examples simple
Please write blog posts, create tutorials, or develop workshops that show off cool ways to develop applications that use OL3.  The examples should be kept very simple.  This download functionality is neat, but it's really a gratuitous use of non-map related functionality.  While it does demonstrate the use of `format.writeFeatures()`, this is buried in too much additional code that is not accessible (buried in resources/common.js) and not really related to mapping things.  If we want to have examples that demonstrate how formats can be used to serialize features, a simple textarea would suffice as the target.
2015-04-17 09:55:44 -06:00
Tim Schaub
c5cf709c55 The common.js script makes a "common" object available 2015-04-17 09:49:53 -06:00
Tim Schaub
eff14b06e0 Refactor common example script and run the linter on it 2015-04-17 09:43:46 -06:00
Tim Schaub
f2600977ae Avoid words with contentious alternative spellings 2015-04-17 09:43:37 -06:00
Tim Schaub
4e8b10ae1c Use --ssl-protocol=any in PhantomJS with a page that uses HTTPS
The `check-examples` target fails on Travis without this option.  We get "SSL handshake failed" when loading resources via HTTPS with whatever the default SSL protocol is.

In addition, as a precaution, the --ignore-ssl-errors option is set to true in case anybody adds a resource with an invalid certificate.  This option does not get around SSL handshake errors.
2015-04-17 09:18:39 -06:00
Tim Schaub
7c8eaae6a1 Remove jQuery from mobile fullscreen example 2015-04-17 06:22:39 -06:00
Tim Schaub
f712123e93 Remove jQuery use from IGC example 2015-04-17 06:22:39 -06:00
Tim Schaub
c385a1b7dd Remove jQuery use from earthquake heatmap example 2015-04-17 06:22:39 -06:00
Tim Schaub
2f160d29c7 Remove jQuery use from geolocation example 2015-04-17 06:22:39 -06:00
Tim Schaub
c3362c1685 Remove jQuery use from geolocation orientation example 2015-04-17 06:22:39 -06:00
Tim Schaub
0121a12293 Remove jQuery use from device orientation example 2015-04-17 06:22:39 -06:00
Tim Schaub
d2062d241d Remove jQuery use from Bing example 2015-04-17 06:22:39 -06:00
Tim Schaub
daccfd25c9 Remove jQuery use from accessible example 2015-04-17 06:22:39 -06:00
Tim Schaub
c8adf22438 Use DOM methods instead of jQuery in common example script 2015-04-17 06:22:38 -06:00
Tim Schaub
84f3bea766 Upgrade Metalsmith to get new concurrency option 2015-04-17 06:22:38 -06:00
Tim Schaub
89f5e711e6 Example sources in the examples dir 2015-04-17 06:22:38 -06:00
Tim Schaub
8fd2e9f79f Untangle resources and put built examples in the build dir 2015-04-17 06:22:38 -06:00
Tim Schaub
0faace215b Compiled examples go in build/compiled-examples 2015-04-17 06:22:37 -06:00
Tim Schaub
7b2391cc2e Remove unused EXAMPLES_JSON 2015-04-17 06:22:37 -06:00
Tim Schaub
4131f41740 Remove unused EXAMPLES_COMBINED and build-examples target
This was discussed as part of #1118 but never completed (see https://github.com/openlayers/ol3/pull/1118#discussion_r6894016).
2015-04-17 06:22:37 -06:00
Tim Schaub
fd42db8404 Correct docs about what the ci target runs
We stopped using the `build-examples` target with 3f1ae87eee.
2015-04-17 06:22:37 -06:00
nd0ut
12e817e408 Check projections equivalence also by their code
Method ol.proj.equivalent used only reference equality check ===
That doesn't work for basic checks of two strongly equal projections
For example, `EPSG:4326` and `EPSG:4326`
In this case method searches similar proj in ol.proj.transforms_ mapping
And it finds it if proj is default and not custom
But in case of custom proj `EPSG:3413` it doesn't find it
2015-04-17 14:36:37 +03:00
Éric Lemoine
b039a7528c Merge pull request #3576 from elemoine/vectorapi
Add KML options related note the upgrade notes
2015-04-17 10:04:23 +02:00
Éric Lemoine
3998f8d4f5 Add KML options related note the upgrade notes 2015-04-17 09:53:22 +02:00
Bart van den Eijnden
4306ecbb8d Merge pull request #3573 from gberaudo/interaction_dispatch_order
Modify draw interaction dispatch order
2015-04-16 19:05:41 +02:00
Guillaume Beraudo
a7e4e20edc Update changelog 2015-04-16 18:11:15 +02:00
Guillaume Beraudo
c0c7b71af6 Add draw interaction test case 2015-04-16 17:44:45 +02:00
Andreas Hocevar
14d546c300 Merge pull request #3572 from ahocevar/null-tilesize
Do not return a null tileSize
2015-04-16 17:30:02 +02:00
Guillaume Beraudo
a468e8025a Modify draw interaction dispatch order
When finishing drawing, this PR dispatches the `drawend` event before adding
the feature to the source or collection.

This change allows user code to finish configuring the feature (setting style,
properties, ...).

It is useful since inserting a feature, or later on modifying it, may trigger
processing which only makes sense if the feature is ready. For example,
ol3-cesium will recreate a 3D counterpart.
2015-04-16 16:51:54 +02:00
Andreas Hocevar
4cad17f839 Do not return a null tileSize 2015-04-16 15:32:35 +02:00
Éric Lemoine
c7bd5a7521 Merge pull request #3570 from gberaudo/required_api
Add missing @api
2015-04-16 11:42:38 +02:00
Frédéric Junod
1662500988 Merge pull request #3569 from fredj/bootstrap-link
Fix link to Bootstrap documentation
2015-04-16 11:13:29 +02:00
Guillaume Beraudo
65614d74f8 Add missing @api
These types are referenced in the externs but were not declared.
Found by ol3-cesium.
2015-04-16 11:09:41 +02:00
Frederic Junod
9b462dde0a Fix link to Bootstrap documentation 2015-04-16 10:30:28 +02:00
Andreas Hocevar
ab9846ff24 Merge pull request #3559 from ahocevar/tile-width-height
Add support for non-square tiles
2015-04-16 09:26:27 +02:00
Frédéric Junod
075579688e Merge pull request #3568 from fredj/extractStyles
Move extractStyles option to ol.format.KML
2015-04-16 09:17:18 +02:00
Andreas Hocevar
70452f4fa7 Add rendering tests 2015-04-16 09:15:34 +02:00
Frederic Junod
a81f414065 Move extractStyles option to ol.format.KML 2015-04-16 09:05:07 +02:00
Frédéric Junod
646a7bb96e Merge pull request #3562 from fredj/css-cleanup
Simplify .ol-zoomslider and .ol-overviewmap CSS
2015-04-16 07:40:58 +02:00
Frédéric Junod
31cebc7c8a Merge pull request #3565 from fredj/fix-3564
Move extractStyles option to ol.format.KML
2015-04-15 17:41:25 +02:00
Frederic Junod
0bd368ce06 Move extractStyles option to ol.format.KML
Fixes #3564
2015-04-15 17:19:02 +02:00
Frederic Junod
5bc875e075 Simplify .ol-zoomslider and .ol-overviewmap CSS
The .ol-control class already defines the position and background values.
2015-04-15 11:02:43 +02:00
Frédéric Junod
ce1659bc14 Merge pull request #3523 from fredj/update-proj4js
Update proj4 version to 2.3.6
2015-04-15 09:11:59 +02:00
Andreas Hocevar
f2e94daf54 Update proj4js version in example 2015-04-15 08:58:21 +02:00
Frederic Junod
7909e7b079 Update proj4 version to 2.3.6 2015-04-15 08:58:07 +02:00
Frederic Junod
dd8a4c355b Add more proj4js integration tests 2015-04-15 08:58:07 +02:00
Andreas Hocevar
509a661fda Reference ol.size.toSize() 2015-04-15 08:40:20 +02:00
Andreas Hocevar
ddf5e48830 Make ol.size.toSize exportable and optimize it 2015-04-15 08:28:31 +02:00
Andreas Hocevar
9c415ac9da Use simple tile sizes for Bing maps by default 2015-04-15 08:12:17 +02:00
Andreas Hocevar
0d53edfa21 Get rid of ol.tilegrid.DEFAULT_TILE_SIZE 2015-04-14 23:16:29 +02:00
Andreas Hocevar
2b75341068 Add support for non-square tiles 2015-04-14 22:54:57 +02:00
Éric Lemoine
7439054d33 Merge pull request #3556 from klokantech/tileutfgrid-fix
Minor TileUTFGrid error fix
2015-04-14 17:56:27 +02:00
Frédéric Junod
8b0179b91f Merge pull request #3557 from fredj/fastclick
Update FastClick externs to version 1.0.6
2015-04-14 16:57:00 +02:00
Frederic Junod
8882e85cb4 Update FastClick externs to version 1.0.6 2015-04-14 16:20:48 +02:00
Petr Sloup
f1f0b37bdc Stronger type checking to continue only if data is defined 2015-04-14 14:15:47 +02:00
Marc Jansen
12022122a6 Merge pull request #3517 from marcjansen/basic-tests
Add tests for previously untested classes
2015-04-14 10:04:25 +02:00
Frederic Junod
6c33f84798 Move ol.DRAGROTATE_ANIMATION_DURATION const to a constructor option 2015-04-14 09:05:52 +02:00
Frederic Junod
a94a87323d Move ol.DRAGROTATEANDZOOM_ANIMATION_DURATION const to a constructor option 2015-04-14 08:57:27 +02:00
Marc Jansen
eca09cba1d Add basic test for ol.tilegrid.Zoomify 2015-04-13 21:13:27 +02:00
Marc Jansen
b5c9f5e8b3 Add basic test for ol.Overlay 2015-04-13 21:13:27 +02:00
Marc Jansen
33788ddfd9 Add basic test for ol.layer.Heatmap 2015-04-13 21:13:27 +02:00
Marc Jansen
e283d6f54a Add basic test for ol.interaction.Snap 2015-04-13 21:13:27 +02:00
Marc Jansen
3e4d6f0b02 Add basic test for ol.interaction.DragRotateAndZoom 2015-04-13 21:13:27 +02:00
Marc Jansen
2609023a40 Add basic test for ol.interaction.DragAndDrop 2015-04-13 21:13:27 +02:00
Marc Jansen
6d53a91e3a Add tests for ol.ImageUrlFunction 2015-04-13 21:13:27 +02:00
Marc Jansen
bfefc0666b Add basic test for ol.Geolocation 2015-04-13 21:13:27 +02:00
Marc Jansen
05f3f6852d Add basic test for ol.format.BinaryFeature 2015-04-13 21:13:27 +02:00
Marc Jansen
248d3071a3 Add basic test for ol.DeviceOrientation 2015-04-13 21:13:27 +02:00
Marc Jansen
481869bea6 Add basic test for ol.control.ZoomToExtent 2015-04-13 21:13:27 +02:00
Marc Jansen
d14daa1938 Add basic test for ol.control.ScaleLine 2015-04-13 21:13:27 +02:00
Marc Jansen
479e723f0e Add basic test for ol.control.MousePosition 2015-04-13 21:13:27 +02:00
Marc Jansen
29124a3dad Add basic test for ol.control.FullScreen 2015-04-13 21:13:27 +02:00
Marc Jansen
a26f2a78eb Add basic test for ol.binary.Buffer 2015-04-13 21:13:26 +02:00
Tim Schaub
401ab6e829 Keep custom test logic in one place 2015-04-13 08:45:27 -06:00
Tim Schaub
129ed0a6c5 Append directly to the document body 2015-04-13 08:40:40 -06:00
Frederic Junod
1daf4628b7 Move ol.ROTATE_ANIMATION_DURATION const to a constructor option 2015-04-13 15:05:35 +02:00
Frederic Junod
2fcdc48d20 Move ol.DRAGZOOM_ANIMATION_DURATION const to a constructor option 2015-04-13 14:59:39 +02:00
Frederic Junod
3eb22559d6 Move ol.ZOOMSLIDER_ANIMATION_DURATION const to a constructor option 2015-04-13 14:54:23 +02:00
Frederic Junod
3b4bc0be25 Move ol.KEYBOARD_PAN_DURATION const to a constructor option 2015-04-13 14:54:23 +02:00
Tim Schaub
5dfa9e0a67 Merge pull request #3548 from tschaub/slimer-error
Write the error stack instead of the error itself.
2015-04-13 06:49:28 -06:00
Tim Schaub
b9198f1f7b Write the stack instead of an error 2015-04-13 06:32:36 -06:00
Tim Schaub
c6eed0e19a Merge pull request #3542 from tschaub/examples
Generate example index and rebuild examples on source changes.
2015-04-13 06:13:12 -06:00
Bart van den Eijnden
ee67a9d2d4 Merge pull request #3530 from bartvde/issue-3530
external resources not correctly in inline source of example
2015-04-13 12:53:46 +02:00
Éric Lemoine
e636119c93 Merge pull request #3448 from elemoine/webgl-image-retina
Fix WebGL image layer rendering on retina displays
2015-04-13 11:16:53 +02:00
Tim Schaub
ec40d6afff Merge pull request #3544 from tschaub/fixed
Update comments about remaining GeoJSON work.
2015-04-12 23:04:43 -06:00
Tim Schaub
ec4a6aab3a Clarify comment and link to issue 2015-04-12 22:17:11 -06:00
Tim Schaub
9d8ec2c8d0 Write options allow control over GeoJSON coordinate order
See be0c9f3c8a.
2015-04-12 22:13:28 -06:00
Tim Schaub
a85de86ec2 Make build.py call tasks/build-examples.js 2015-04-12 17:11:05 -06:00
Tim Schaub
8ddec98075 Rebuild examples when the sources change 2015-04-12 15:42:55 -06:00
Tim Schaub
aaba58ceb0 Generate index.js when building examples 2015-04-12 15:42:48 -06:00
Tobias Sauerwein
81f36f5e76 Merge pull request #3531 from mantonovic/master
Fix PointerEventHandler exception with Overlay containing SVG and IE9
2015-04-10 16:50:57 +02:00
Milan P. Antonovic
400e81431d PointerEventHandler exception with Overlay containing SVG
Using an ol.Overlay as marker I put inside an SVG graphic element. As soon I move the mouse over the SVG the error appear.
In IE9 the SVG Element does not have the contains function so it throws the exception, on the contrary using goog.dom.contains it handles the cross-browser issues.

https://groups.google.com/forum/#!topic/ol3-dev/DBi2HCTqulU
2015-04-10 14:33:16 +02:00
Bart van den Eijnden
092ea0f9a1 Fix external resources in example code snippet 2015-04-10 09:22:01 +02:00
Frédéric Junod
0541fc31d8 Merge pull request #3521 from fredj/layergroup-cleanup
Remove goog.isDefAndNotNull test on ol.layer.Group#getLayers result
2015-04-08 15:38:28 +02:00
Frederic Junod
0fce3d5ec9 Remove goog.isDefAndNotNull test on ol.layer.Group#getLayers result
The return type of the function is {!ol.Collection.<ol.layer.Base>}
2015-04-08 12:16:39 +02:00
Éric Lemoine
b5a0ca0589 Merge pull request #3481 from elemoine/vectorapi
Proposal for a simpler vector API
2015-04-08 10:46:19 +02:00
Éric Lemoine
6a2498aa41 Add release notes for the new Vector API 2015-04-08 10:22:57 +02:00
Éric Lemoine
c40f84d4a7 Add test for ol.source.Vector#loadFeatures 2015-04-08 10:22:56 +02:00
Éric Lemoine
ce83fbdbe3 Rename rBush_ to featuresRtree_ in ol.source.Vector 2015-04-08 10:22:56 +02:00
Éric Lemoine
c3658de75a Make addFeature(s) ignore features with same id 2015-04-08 10:22:56 +02:00
Éric Lemoine
bb0ee1e6e9 Make ol.source.TileVector inherit from ol.source.Vector 2015-04-08 10:22:56 +02:00
Éric Lemoine
bdb326c310 Port vector examples to new vector API 2015-04-08 10:22:56 +02:00
Éric Lemoine
09b90c8424 Add loader and strategy to ol.source.Vector 2015-04-08 10:22:56 +02:00
Éric Lemoine
e86fd4afd4 Get rid of disliked vector classes 2015-04-07 17:36:57 +02:00
Tim Schaub
5a7d1f3ba1 Merge pull request #3472 from tschaub/unbound
Remove the experimental bindTo method from ol.Object.
2015-04-07 09:29:53 -06:00
Éric Lemoine
4f05872767 Merge pull request #3505 from elemoine/custom-builds
Add a Create Custom Builds tutorial
2015-04-07 17:26:50 +02:00
Frédéric Junod
596551502c Merge pull request #3513 from fredj/layergroup-cleanup
Remove layerGroup.setLayers(null) test
2015-04-07 17:26:12 +02:00
Tim Schaub
c3d5a2e9c4 Add upgrade notes regarding bindTo 2015-04-07 09:13:33 -06:00
Frederic Junod
a77c4ec6c5 Remove layerGroup.setLayers(null) test
Since 96f7d6323a, the `layers` parameter to `ol.layer.Group#setLayers` can't be `null`.
2015-04-07 17:08:12 +02:00
Éric Lemoine
b6b9f25b04 Add a Create Custom Builds tutorial 2015-04-07 16:55:38 +02:00
Tim Schaub
e5c6915761 Update documentation 2015-04-07 08:35:48 -06:00
Tim Schaub
814fb078cf Rework examples to new API 2015-04-07 08:35:48 -06:00
Tim Schaub
e1079ab9a3 Improve overview map handling of map and view changes 2015-04-07 08:35:48 -06:00
Tim Schaub
0189e11931 Remove unconditionally exported methods 2015-04-07 08:35:47 -06:00
Tim Schaub
f42c0cb0aa Remove 2-way binding from objects 2015-04-07 08:35:47 -06:00
Éric Lemoine
600b76e9a2 Merge pull request #3511 from elemoine/googprovide
Add goog.provide's
2015-04-07 15:20:14 +02:00
Éric Lemoine
765fc4c279 Add a type alias to goog.vec.Number
This addition is related to the definition of olx.FrameState in olx.js. Without this alias and corresponding goog.provide in src/ol/vec/mat4.js we get this error when compiling an OpenLayers application:

ERR! compile node_modules/openlayers/externs/olx.js:6853: ERROR - Bad type annotation. Unknown type goog.vec.Mat4.Number
ERR! compile  *     coordinateToPixelMatrix: goog.vec.Mat4.Number,

Currently, the Closure Library does not have a goog.provide for goog.vec.Mat4.Number. If it did have this goog.provide then we wouldn't have the error.

This commit works around the issue by creating our own type alias (ol.vec.Mat4.Number) and adding a goog.provide for that type alias.
2015-04-07 14:10:46 +02:00
Éric Lemoine
e45c44fa01 Add missing goog.provide's 2015-04-07 13:49:36 +02:00
Pierre GIRAUD
5843654650 Merge pull request #3509 from pgiraud/geometry_changed_null
Dispatch change event even when geometry is set to null
2015-04-07 12:39:48 +02:00
Pierre GIRAUD
99e8787c63 Merge pull request #3510 from pgiraud/change_event_test
Use sinon.spy to ensure change event is dispatched
2015-04-07 12:35:01 +02:00
Pierre GIRAUD
d27d59f445 Use sinon.spy to ensure change event is dispatched 2015-04-07 12:21:01 +02:00
Éric Lemoine
9ce3bc7f3d Fix WebGL image layer rendering on retina displays
This commit takes the device pixel ratio into account when calculating the matrix used to apply the image to the output canvas.
2015-04-07 12:13:16 +02:00
Pierre GIRAUD
5eb13660d3 Dispatch change event even when geometry is set to null 2015-04-07 12:12:07 +02:00
Andreas Watermeyer
c530f872f9 #3328 - GML3: Writing features with multiple geometries 2015-04-07 10:32:26 +02:00
Tim Schaub
0789604e88 Merge pull request #3504 from tschaub/build-examples
Rework build-examples.js task.
2015-04-06 11:27:00 -06:00
Tim Schaub
ab7b6d95dc Demonstrating markdown use in docs 2015-04-06 11:14:22 -06:00
Tim Schaub
121a83f19e Explicitly helper use instead of implicitly converting from markdown 2015-04-06 11:13:45 -06:00
Tim Schaub
3b96071096 Metadata names 2015-04-06 11:13:45 -06:00
Tim Schaub
30c04cf8ab Maintain resource list order (principle of least surprise) 2015-04-06 11:13:45 -06:00
Tim Schaub
75fcec15ec Simplify plugin
The augmentExamples just adds metadata to the example markup files.  If we also want to support example markdown files, we can use the metalsmith-markdown plugin before this one.
2015-04-06 11:13:32 -06:00
Tim Schaub
43ed76cda0 Unquoted strings for readability 2015-04-06 09:18:32 -06:00
Tim Schaub
9f1e0f001a Proper lists for example resources 2015-04-06 09:18:32 -06:00
Tim Schaub
6d318dce78 Rework plugin 2015-04-06 09:18:28 -06:00
Tobias Sauerwein
c36c67779e Merge pull request #3470 from tsauerwein/rendering-tests
Add rendering tests
2015-04-06 13:49:51 +02:00
tsauerwein
f99196c466 Fix failing test 2015-04-06 13:36:43 +02:00
tsauerwein
c0a23dc818 Add first rendering tests 2015-04-06 13:36:35 +02:00
Tobias Sauerwein
91b12c1d34 Merge pull request #3413 from tsauerwein/ext-browserify
Add support for generic external modules with Browserify
2015-04-06 13:25:45 +02:00
Tim Schaub
c265676f67 Avoid reading css and js files twice 2015-04-06 04:21:12 -06:00
Tim Schaub
cdc4283cbf Use global metadata for ol version 2015-04-06 04:10:17 -06:00
Tim Schaub
8afb5698f1 Allow script to be run from anywhere 2015-04-06 04:09:46 -06:00
Tim Schaub
80048bd290 Merge pull request #3503 from tschaub/vector-source
Use vector source instead of feature overlay in snap example.
2015-04-06 03:23:51 -06:00
Éric Lemoine
17d1cff110 Merge pull request #3495 from bjornharrtell/tutorial-basic
Initial basic project setup tutorial
2015-04-05 17:53:27 +02:00
Tim Schaub
274b70bde3 Use vector source in snap example 2015-04-05 16:55:42 +02:00
Björn Harrtell
421db6783f Browserify tutorial 2015-04-05 13:08:46 +02:00
Tim Schaub
228491344d Merge pull request #3488 from tschaub/doc
Add docs for exportable symbols.
2015-04-04 23:37:17 +02:00
Éric Lemoine
1c471cca6c Merge pull request #3441 from elemoine/compile-application
Add a "Compile Application and OpenLayers 3 Together" tutorial
2015-04-04 23:33:00 +02:00
Éric Lemoine
8cbd991001 Merge pull request #3499 from elemoine/closure-util-update
Update to closure-util 1.4.0
2015-04-04 23:32:44 +02:00
Éric Lemoine
58895f73ac Fix compile error in image-filter example 2015-04-04 23:20:49 +02:00
Éric Lemoine
4130e7803a Update compile config used to build individual examples 2015-04-04 23:18:57 +02:00
Éric Lemoine
2892e36d29 Update to closure-util 1.4.0 2015-04-04 22:46:07 +02:00
Éric Lemoine
953b8ff86f Update the tutorials index 2015-04-04 22:44:29 +02:00
Éric Lemoine
6705a34358 Add "closure" tutorial
Tutorial describing how to compile application and OpenLayers together.
2015-04-04 22:43:42 +02:00
Tim Schaub
50f71655e5 Style docs 2015-04-04 17:38:03 +02:00
Tim Schaub
02c4c8b360 Tile grid docs 2015-04-04 17:38:02 +02:00
Tim Schaub
e2b37a74a5 WebGL context docs 2015-04-04 17:38:02 +02:00
Tim Schaub
4f428d7cd5 View docs 2015-04-04 17:38:02 +02:00
Tim Schaub
29c3bc066d Overlay docs 2015-04-04 17:36:48 +02:00
Tim Schaub
b735504564 Map docs 2015-04-04 17:36:48 +02:00
Tim Schaub
1174baa24e Image and image tile docs 2015-04-04 17:36:48 +02:00
Tim Schaub
6c960215bb Graticule docs 2015-04-04 17:36:47 +02:00
Tim Schaub
3ef5329bd9 Geolocation docs 2015-04-04 17:36:47 +02:00
Tim Schaub
c6a330e886 Feature overlay docs 2015-04-04 17:36:47 +02:00
Tim Schaub
16c6ccf40c Feature docs 2015-04-04 17:36:47 +02:00
Tim Schaub
044ea054b1 Extent docs 2015-04-04 17:36:47 +02:00
Tim Schaub
619da529ec Easing docs 2015-04-04 17:36:47 +02:00
Tim Schaub
7f34941be3 Device orientation docs 2015-04-04 17:36:47 +02:00
Tim Schaub
d09c4afefb Coordinate docs 2015-04-04 17:36:47 +02:00
Tim Schaub
fdabcd8219 Collection docs 2015-04-04 17:36:47 +02:00
Tim Schaub
1a10686299 Attribution docs 2015-04-04 17:36:46 +02:00
Tim Schaub
4463e173e6 Animation docs 2015-04-04 17:36:46 +02:00
tsauerwein
8e0c21eb58 Add test-suite using SlimerJS 2015-04-04 17:30:38 +02:00
Éric Lemoine
3267dbf92e Merge pull request #3494 from gberaudo/api_vector_context
Mark VectorContext @api
2015-04-04 17:04:25 +02:00
Bart van den Eijnden
f10cbba36f Merge pull request #3409 from bartvde/issue-3409
AssertionError in WMTS.optionsFromCapabilities.
2015-04-04 16:34:39 +02:00
Tobias Sauerwein
28a13e3b26 Merge pull request #3493 from tsauerwein/image-static-load
Add image loading events to ol.source.ImageStatic
2015-04-04 15:33:32 +02:00
Guillaume Beraudo
1553b88b9d Mark VectorContext @api
VectorContext type must be present in Ol3 externs to compile ol3-cesium.
Previously, the `IVectorContext` interface was exported to the externs.
2015-04-04 15:19:56 +02:00
tsauerwein
7c83581566 Add image loading events to ImageStatic 2015-04-04 15:18:35 +02:00
Tim Schaub
5eb7e5848e Merge pull request #3490 from tschaub/editorconfig
Add .editorconfig and instructions on its use.
2015-04-04 14:36:53 +02:00
Tim Schaub
0c9cb6f86d Merge pull request #3489 from gberaudo/abstract_vector_context
Use an abstract base class instead of IVectorContext.
2015-04-04 14:27:12 +02:00
Tim Schaub
29596ced00 Add .editorconfig and instructions on its use 2015-04-04 14:17:31 +02:00
Guillaume Beraudo
0e32456108 Use an abstract base class instead of IVectorContext
By having the abstract methods in the base class, subclasses can simply
override the methods they actually provide.
Additionally, this change fixes a regression in webgl canvas immediate.
2015-04-04 13:47:53 +02:00
Bart van den Eijnden
5e71fe4964 Make ol.source.WMTS work with ArcGIS WMTS 2015-04-04 13:42:06 +02:00
Tobias Sauerwein
a19c58e490 Merge pull request #3483 from tsauerwein/rotation-docs
Clarify view.setRotation docs
2015-04-04 11:40:52 +02:00
Andreas Hocevar
927a1cb722 Merge pull request #3485 from malaretv/build-handle-sigint
build.py graceful interrupt
2015-04-04 10:53:32 +02:00
vmalaret
422304cbca build.py graceful interrupt 2015-04-04 10:25:54 +02:00
Bart van den Eijnden
b3c251fb0d Merge pull request #3484 from bartvde/copy-example-css
Make sure we copy the example css if it exists
2015-04-04 10:23:06 +02:00
Bart van den Eijnden
39dd4dd56c Make sure we copy the example css if it exists 2015-04-04 10:04:35 +02:00
tsauerwein
b911d740d8 Clarify rotation docs 2015-04-04 09:41:29 +02:00
tsauerwein
921fd3ed3b Support generic ext. modules with browserify 2015-04-04 09:17:11 +02:00
Andreas Hocevar
d678e9e9a3 Merge pull request #3462 from ahocevar/gml-base-noapi
Remove ol.format.GMLBase from the API
2015-04-04 09:09:44 +02:00
Marc Jansen
e4d1d60a73 Merge pull request #3445 from marcjansen/faq
Start a FAQ document.
2015-04-03 21:12:26 +02:00
Marc Jansen
b8cf41a8c9 Merge pull request #3468 from marcjansen/coveralls-executable
Use the coveralls executable.
2015-04-03 21:09:42 +02:00
Tim Schaub
05c1e973a3 Merge pull request #3415 from malaretv/stable-only-off
Stable Only unchecked by default.
2015-04-03 20:08:16 +02:00
Éric Lemoine
7c0977de45 Merge pull request #3420 from elemoine/leaks
Unregister viewport size listener on setTarget(null)
2015-04-03 20:07:20 +02:00
Andreas Hocevar
da9de6ef1b Merge pull request #3456 from klokan/newmenu
Updated menu on the JSDOC template (non-responsive)
2015-04-02 20:55:59 +02:00
Andreas Hocevar
3bd408ed4d Merge pull request #3475 from openlayers/template-examples
Template examples
2015-04-02 20:54:48 +02:00
Tobias Sauerwein
8c2700b3c8 Merge pull request #3455 from tsauerwein/webgl-loaded-icon
Fix pre-loaded icons images for WebGL
2015-04-02 20:29:29 +02:00
Andreas Hocevar
cd266f35ab Add verbatim template and throw error on invalid front-matter 2015-04-02 20:28:32 +02:00
Marc Jansen
8e86fca453 Merge pull request #3473 from marcjansen/rotate-test
Add more tests for ol.coordinate.
2015-04-02 20:19:30 +02:00
Tim Schaub
6a105f9bcf Newlines 2015-04-02 19:23:02 +02:00
tsauerwein
ed1d9cc8fc Add imgSize to Icon options 2015-04-02 19:18:38 +02:00
Marc Jansen
3245fa43ae Add more tests for ol.coordinate. 2015-04-02 19:16:05 +02:00
Andreas Hocevar
2ef0e0db23 Templetize tileutfgrid example 2015-04-02 19:10:20 +02:00
Tim Schaub
664a287c94 Tissot's indicatrices 2015-04-02 19:10:20 +02:00
Bart van den Eijnden
3aa03e925c Port over the tilejson example 2015-04-02 19:10:19 +02:00
Björn Harrtell
9880a860a3 Converted examples 2015-04-02 19:10:19 +02:00
Tim Schaub
b9074342a6 TopoJSON example content 2015-04-02 19:10:19 +02:00
Bart van den Eijnden
e39a4561f6 Use the original geolocation-orientation example 2015-04-02 19:10:18 +02:00
Bart van den Eijnden
d10b83e8e1 Port teleport, load-events, tile-vector examples 2015-04-02 19:10:18 +02:00
Andreas Hocevar
2c2a0eaa78 Templetize examples starting with letter v 2015-04-02 19:10:18 +02:00
Bart van den Eijnden
5b57c7d4b8 Port over the measure, min-max-resolution, modify-features, modify-test, mouse-position and moveend examples 2015-04-02 19:10:17 +02:00
Andreas Hocevar
de13706df9 Templetize examples starting with letter w 2015-04-02 19:10:17 +02:00
Bart van den Eijnden
440832146e Port over lazy-source, line-arrows, localized-openstreetmap, mapguide-untiled and mapquest examples 2015-04-02 19:10:16 +02:00
Bart van den Eijnden
c75c704e9f Port over layer-clipping-webgl, layer-clipping, layer-extent, layer-group, layer-spy, layer-swipe examples 2015-04-02 19:10:16 +02:00
Marc Jansen
e3face3d9d Position the rotate control lower than usual
This way it does not overlap with the fullscreen control.
2015-04-02 19:10:16 +02:00
Andreas Hocevar
bf1985d712 Fix doctype 2015-04-02 19:10:16 +02:00
Bart van den Eijnden
b92d7cdf13 Port over image-filter, image-load-events, image-vector-layer, kml-earthquakes, kml-timezones and kml examples 2015-04-02 19:10:15 +02:00
Bart van den Eijnden
5cfb4910df Port over graticule, heatmap-earthquakes, hue-saturation, icon-sprite-webgl, icon, igc examples 2015-04-02 19:10:15 +02:00
Bart van den Eijnden
2ccdd87942 Port over the geolocation, getfeatureinfo-image, getfeature-info-tile, gpx examples 2015-04-02 19:10:15 +02:00
Bart van den Eijnden
2ebefc4466 Port over the full-screen, geojson and geolocation-orientation examples 2015-04-02 19:10:15 +02:00
Andreas Hocevar
78ce9de4af Better error reporting 2015-04-02 19:10:14 +02:00
Andreas Hocevar
b698f1ede8 Templetize examples starting with letters x-z 2015-04-02 19:10:14 +02:00
Bart van den Eijnden
d0d61e68c7 Port over epsg-4326, export-map, fractal and full-screen-drag-rotate-and-zoom examples 2015-04-02 19:10:14 +02:00
Bart van den Eijnden
0882754b49 Add bootstrap js to the example template 2015-04-02 19:10:14 +02:00
Bart van den Eijnden
e1ee36f46d Port over drag-rotate-and-zoom, draw-and-modify-features, draw-features, dynamic-data and earthquake-clusters examples 2015-04-02 19:10:13 +02:00
Andreas Hocevar
95c127d235 More documentation improvements 2015-04-02 19:10:13 +02:00
Andreas Hocevar
4cce0f4936 Move documentation to the right place 2015-04-02 19:10:13 +02:00
Bart van den Eijnden
b1e35f7fdd Port over canvas-tiles, center, cluster, d3, device-orientation, drag-and-drop-image-vector, drag-and-drop and drag-features example 2015-04-02 19:10:13 +02:00
Bart van den Eijnden
4ebceab51a Remove extra double quote when writing resources 2015-04-02 19:10:12 +02:00
Andreas Hocevar
6cc806f164 Add documentation for build-examples.js 2015-04-02 19:10:12 +02:00
Andreas Hocevar
bc617e8135 Add support for additonal js and css resources 2015-04-02 19:10:12 +02:00
Andreas Hocevar
0077626c93 Only create style block if there is css for the example 2015-04-02 19:10:11 +02:00
Bart van den Eijnden
f277082708 Port over box-selection, brightness-contrast and button-title examples 2015-04-02 19:10:11 +02:00
Bart van den Eijnden
7d453bc69e Port over the bind-input and bing-maps examples 2015-04-02 19:10:11 +02:00
Bart van den Eijnden
943cac755b Port over the animation, arcgis-tiled and attributions examples 2015-04-02 19:10:10 +02:00
Andreas Hocevar
8d87bd30f0 Fix typo in template 2015-04-02 19:10:10 +02:00
Bart van den Eijnden
dd3350c948 Use template for accessible.html example 2015-04-02 19:10:10 +02:00
Andreas Hocevar
821f31fa18 Use template for custom-controls.html example 2015-04-02 19:10:09 +02:00
Andreas Hocevar
e40ab58d10 Use template for simple.html example 2015-04-02 19:10:09 +02:00
Andreas Hocevar
ff1ee78ddd Build and parse examples from examples_src/ 2015-04-02 19:10:09 +02:00
Andreas Hocevar
2e9869057e Hide shortdesc in examples 2015-04-02 19:10:03 +02:00
Andreas Hocevar
1d940898b5 Add Task and template for building examples 2015-04-02 19:10:02 +02:00
Marc Jansen
1940f33c43 Add a FAQ document. 2015-04-02 17:20:07 +02:00
Tim Schaub
de9ad900c8 Merge pull request #3464 from tschaub/stable
Mark more of the API stable.
2015-04-02 16:44:06 +02:00
Tim Schaub
44ad7ce30a Update doc on using @api annotation 2015-04-02 16:23:54 +02:00
Tim Schaub
5bb7535207 Remove @api annotation from abstract method 2015-04-02 16:23:54 +02:00
Tim Schaub
587c06f565 Stable intersectsExtent method for geometries 2015-04-02 16:23:54 +02:00
Tim Schaub
6134a8bf7a Use @api annotations where geom methods are implemented 2015-04-02 16:23:53 +02:00
Tim Schaub
5c87efccdb Stable WMTS constructor and options 2015-04-02 16:23:53 +02:00
Tim Schaub
cedc78972d Mark tile load events as stable 2015-04-02 16:23:53 +02:00
Tim Schaub
5fe6f07969 Make the source.getFeaturesInExtent() method exportable 2015-04-02 16:23:53 +02:00
Tim Schaub
d79abe7448 Stable geometry methods 2015-04-02 16:23:53 +02:00
Tim Schaub
419483face Stable GeoJSON read/write methods 2015-04-02 16:23:53 +02:00
Tim Schaub
0b2c097686 Stable format read/write options 2015-04-02 16:23:53 +02:00
Tim Schaub
7ee8866f35 End the getResolutionForExtent experiment 2015-04-02 16:23:53 +02:00
Tim Schaub
21263f9184 Stable view methods 2015-04-02 16:23:42 +02:00
Tim Schaub
65f18e3caf Merge pull request #3469 from malaretv/readme
Update README.
2015-04-02 14:43:19 +02:00
Victor Malaret
d4ddb60e8b Update README
Adds basic quickstart, usage, issues, and community info to readme
2015-04-02 13:54:29 +02:00
Marc Jansen
1125e45856 Merge pull request #3467 from openlayers/coveralls-badge
Update the coveralls badge.
2015-04-02 13:44:54 +02:00
Marc Jansen
bca661ee57 Update the coveralls badge. 2015-04-02 13:21:35 +02:00
Marc Jansen
127e626315 Use the coveralls executable. 2015-04-02 13:15:55 +02:00
Marc Jansen
72a4b31e86 Merge pull request #3466 from marcjansen/show-coverage
Include coveralls code-coverage badge in README.
2015-04-02 12:58:15 +02:00
Marc Jansen
6aef9fe67a Include coveralls code-coverage badge in README. 2015-04-02 12:54:05 +02:00
Tim Schaub
89dc3a254b Stable object methods and events 2015-04-02 12:12:36 +02:00
Marc Jansen
d824996b97 Merge pull request #3457 from marcjansen/test-coverage
Integrate istanbul for test coverage
2015-04-02 12:04:26 +02:00
Tim Schaub
11ac778b29 Mark propertychange as stable 2015-04-02 12:04:01 +02:00
Tim Schaub
d541ae49d0 Mark moveend as stable 2015-04-02 12:03:21 +02:00
Tim Schaub
56a942e9cf Stable map browser events 2015-04-02 11:57:43 +02:00
Marc Jansen
8c8bd50a4a Add test-coverage target to build.py.
As suggested by @tsauerwein.
2015-04-02 11:49:32 +02:00
Andreas Hocevar
84b6114f02 Remove ol.format.GMLBase from the API
There is no need to have this exportable; the api annotation was probably
a leftover from the GML -> GMLBase renaming.
2015-04-02 10:52:58 +02:00
Marc Jansen
245aec8eba Fix typos in doc-comments. 2015-04-02 09:45:25 +02:00
Marc Jansen
17ea9ecef5 Run the istanbul code-coverage via node script. 2015-04-02 09:16:43 +02:00
Éric Lemoine
5293cdc780 Merge pull request #3446 from elemoine/updatewhileinteracting
Add updateWhileInteracting to olx.layer.VectorOptions
2015-04-02 09:14:53 +02:00
Marc Jansen
6a9c8f36f7 Refactor tasks/test.js to be more modular.
This way the main functionality of the script can be reused in the
tasks/test-coverage.js script, which has to run the testsuite as well.
2015-04-02 09:13:17 +02:00
Bart van den Eijnden
7c9795ba35 Integrate istanbul for test coverage 2015-04-02 08:57:53 +02:00
Petr Pridal
f47009447b Retina ol logo 35px (70px) for the JSDOC template 2015-04-02 08:43:26 +02:00
Petr Pridal
4427d0ba42 Updated menu on the JSDOC template (non-responsive) 2015-04-01 19:42:57 +02:00
Éric Lemoine
6d55e4aa99 Merge pull request #3438 from gberaudo/parser_documentation
Parser documentation and XML readme
2015-04-01 14:16:03 +02:00
Bart van den Eijnden
15a3bcac13 Merge pull request #3449 from gberaudo/fix_replay_assert
Fix assertion message
2015-04-01 11:42:30 +02:00
Guillaume Beraudo
7765d7304c Fix assertion message 2015-04-01 11:29:28 +02:00
vmalaret
4daf08ec1d Rename flag to 'stableonly' 2015-04-01 09:26:17 +02:00
Éric Lemoine
42c4ae9ced Add updateWhileInteracting to olx.layer.VectorOptions 2015-04-01 08:27:29 +02:00
Andreas Hocevar
62ce9b44c8 Merge pull request #3440 from ahocevar/gentle-introduction-to-projections
Add fromLonLat and toLonLat convenience functions
2015-03-31 20:46:51 +02:00
Andreas Hocevar
5579dc53a2 Add fromLonLat and toLonLat convenience functions 2015-03-31 19:27:35 +02:00
Guillaume Beraudo
aa63f1ad6a Add some documentation to ol.xml. 2015-03-31 19:25:44 +02:00
Guillaume Beraudo
2ba2162416 Add a readme about XML parser and format
The readme content is the result of the merge of two wiki pages.
2015-03-31 19:25:41 +02:00
Éric Lemoine
fc9563ad65 Merge pull request #3423 from gberaudo/parse_extrude_and_altitudeMode
Parse extrude and altitude mode
2015-03-31 18:29:34 +02:00
Frédéric Junod
4619cac9ce Merge pull request #3431 from fredj/cleanup
Better typing
2015-03-31 17:38:00 +02:00
Guillaume Beraudo
f25302f8b7 Parse KML extrude and altitudeMode from multi geometries
Handle MultiPoint, MultiLineString, MultiPolygon.
LinearRing properties are not handled.

An 'extrude' boolean array property is set in the geometry properties.
An 'altitudeMode' string array property is set in the geometry properties.
2015-03-31 17:21:12 +02:00
Andreas Hocevar
5a7cce86a5 Merge pull request #3436 from ahocevar/contributing-readme
Mention readme.md files as help for contributors
2015-03-31 16:36:09 +02:00
Andreas Hocevar
c5b5a9a311 Mention readme.md files as help for contributors 2015-03-31 16:04:35 +02:00
Frédéric Junod
1fc59df766 Merge pull request #3433 from fredj/missing-provide
Add missing goog.provide/goog.require ol.source.TileEvent
2015-03-31 15:48:54 +02:00
Guillaume Beraudo
5bd63f7e2c Parse KML extrude and altitudeMode of simple geometries
Point, LineString and Polygon are handled.
LinearRing properties are not handled.

An 'extrude' boolean property is set in the geometry properties.
An 'altitudeMode' string property is set in the geometry properties.
2015-03-31 15:30:58 +02:00
Guillaume Beraudo
ea8ee16f49 Fix return type of ol.xml.pushParseAndPop 2015-03-31 15:28:20 +02:00
Guillaume Beraudo
567a9d7a5a Make ol.geom.Geometry inherit from ol.Object
This will allow storing per-geometry properties.
2015-03-31 15:28:20 +02:00
Frederic Junod
4bfe49723e Add missing goog.provide/goog.require ol.source.TileEvent 2015-03-31 15:06:36 +02:00
Frederic Junod
d138b2d1d5 Better typing 2015-03-31 14:32:23 +02:00
Éric Lemoine
c993964d27 Merge pull request #3422 from elemoine/multi-filter
Fix Select behavior when multi is false
2015-03-31 14:16:32 +02:00
Marc Jansen
e5f6bae49b Merge pull request #3428 from marcjansen/reorder-assertions
Reorder assertions and variable declarations.
2015-03-31 10:31:34 +02:00
Marc Jansen
2077211e67 Reorder assertions and variable declarations. 2015-03-31 10:19:04 +02:00
Frédéric Junod
afa2238ccd Merge pull request #3414 from fredj/require-atlas-manager
Add missing ol.style.AtlasManager goog.require
2015-03-31 10:14:58 +02:00
Pierre GIRAUD
68d57be3a8 Merge pull request #3429 from pgiraud/selectfilterfunction_provide
Adding missing provide for SelectFilterFunction
2015-03-31 09:46:09 +02:00
Pierre GIRAUD
4b453f5be6 Adding missing provide for SelectFilterFunction 2015-03-31 09:36:25 +02:00
Bart van den Eijnden
c975f303cf Merge pull request #3426 from bartvde/assert-messages
Add assertion messages for all assertion statements
2015-03-30 23:52:47 +02:00
Bart van den Eijnden
47ce127a10 Add assert messages for all assertions up until ol.renderer.vector. 2015-03-30 22:55:23 +02:00
Marc Jansen
fb9ba22c30 Add message to assertions. 2015-03-30 22:53:03 +02:00
Éric Lemoine
2c40d74a15 Merge pull request #3425 from elemoine/olol
Fix typo in ol.js
2015-03-30 21:29:09 +02:00
Tim Schaub
6ba2f35df6 Merge pull request #3424 from tschaub/fewer-exports
Remove `@api` annotation from `ol.WEBGL_MAX_TEXTURE_SIZE`.
2015-03-30 21:21:22 +02:00
Éric Lemoine
28d00c9676 Fix typo in ol.js 2015-03-30 21:02:40 +02:00
Tim Schaub
255e1de3a4 Remove @api annotation from ol.WEBGL_MAX_TEXTURE_SIZE 2015-03-30 20:57:41 +02:00
Éric Lemoine
9022530bf9 Fix Select behavior when multi is false
This commit addresses https://github.com/openlayers/ol3/pull/3402#issuecomment-87701660.
2015-03-30 18:32:36 +02:00
Éric Lemoine
f1d7e2ec85 Unregister tile change listeners
When the tile queue loads a tile it registers a "change" listener on that tile. But currently that listener is not unregistered, unless the tile cache containing that tile fills up and "dipose" is called on that tile.

This commit makes handleTileChange deregister the "change" listener on the tile, if the tile is now in "loaded" state.
2015-03-30 16:54:09 +02:00
Éric Lemoine
10e30d1ab5 Merge pull request #3419 from elemoine/describeonly
Remove describe.only
2015-03-30 16:51:38 +02:00
Éric Lemoine
192c9d697e Unregister the viewport listener on setTarget(null)
This commit unregisters the viewport resize listener when setTarget(null) is called, and registers it when setTarget(target) is called, and when we don't have that listener registered yet.

This prevents memory leaks where references to map objects are retained because of these viewport resize listeners.
2015-03-30 16:50:58 +02:00
Éric Lemoine
f6461afdac Remove describe.only 2015-03-30 16:34:50 +02:00
Andreas Hocevar
9add762f63 Merge pull request #3417 from fperucic/ol.interaction.Snap-extentFix
ol.interaction.Snap extent fix
2015-03-30 16:08:57 +02:00
Fran Peručić
6343c0420d fix: prevent indexed extent from beeing overwitten
when using ol.source.Vector with snap, indexedFeaturesExtents_ is updated whenever source calls geometry#getExtent
2015-03-30 15:13:09 +02:00
Fran Peručić
60dbe93f7f fix: set pendingFeatures_ as object on init 2015-03-30 15:01:23 +02:00
Éric Lemoine
7c55639632 Merge pull request #3410 from gberaudo/ol_object_unset
Add ol.Object.unset() method
2015-03-30 13:45:58 +02:00
Éric Lemoine
91d14a35bb Merge pull request #3402 from elemoine/selectfilter
Add "filter" option to Select interaction
2015-03-30 13:45:46 +02:00
Éric Lemoine
f90308b504 Tests for the Select interaction's filter option 2015-03-30 13:35:00 +02:00
Guillaume Beraudo
6e7221ca28 Add ol.Object.unset() method
Allow deleting a property.
2015-03-30 13:30:10 +02:00
Éric Lemoine
2f417bbb28 Add empty lines for better code readability 2015-03-30 13:07:50 +02:00
acanimal
1f0c21ac60 Add "filter" option to Select interaction 2015-03-30 13:07:02 +02:00
Frédéric Junod
b9a35a9c2e Merge pull request #3416 from fredj/cleanup
Remove unnecessary typecasts in examples
2015-03-30 11:33:00 +02:00
Frederic Junod
778ccd3999 Remove unnecessary typecasts in examples 2015-03-30 11:00:15 +02:00
Andreas Hocevar
360c34dfbe Merge pull request #3411 from fperucic/ol.interaction.Snap-fix
Listen for a 'change:geometry' event
2015-03-30 10:42:36 +02:00
vmalaret
3576f8b793 Stable Only unchecked by default in docs.
Having it on by default makes it difficult
for new users to find commonly used functionality.
2015-03-30 10:37:50 +02:00
Bart van den Eijnden
589e85941a Bump copyright year to 2015 2015-03-30 10:05:21 +02:00
Frederic Junod
632205d902 Add missing ol.style.AtlasManager goog.require 2015-03-30 09:27:13 +02:00
Fran Peručić
4168cda453 add: listen for 'change:geometry'
Geometry index won't be updated correctly if feature geometry is changed using `feature.setGeometry(new_geometry)`
ol.interaction.Snap should listen for a 'change:geometry' event on ol.Feature
2015-03-29 18:55:08 +02:00
Fran Peručić
4b85f5737c replaced ol.Collection with Array 2015-03-29 10:57:44 +02:00
Andreas Hocevar
254039a6ab Merge pull request #3109 from fperucic/snap-feature
Snap feature
2015-03-27 14:45:57 +01:00
Alexandre Dubé
d740640321 Fix type of source and features 2015-03-27 09:07:34 -04:00
Andreas Hocevar
056c3ad23e Add consistency for pointer event handlers
Now all are private static functions.
2015-03-27 08:58:28 -04:00
Alexandre Dubé
b34d7ce6cc Fix - support ol.Collection only as features 2015-03-27 08:58:21 -04:00
Bart van den Eijnden
98c510a729 Merge pull request #3407 from bartvde/340-changelog-update
Add v3.4.0 empty section to upgrade notes
2015-03-27 13:56:31 +01:00
Bart van den Eijnden
9984a8bec7 Add v3.4.0 empty section to upgrade notes 2015-03-27 13:42:12 +01:00
Fran Peručić
42d2adb1cf fix: repeating sort function + js annotation
Sort function is now bind to this, and it uses a pixelCoordinate_ member.
ol.interaction.Snap.handleEvent is removed
js annotations are modified
2015-03-27 12:48:52 +01:00
Bart van den Eijnden
626d1da0e7 Merge pull request #3406 from bartvde/release-v3.4.0
Release v3.4.0
2015-03-27 10:22:38 +01:00
Bart van den Eijnden
96c670cebf Update package version to 3.4.0 2015-03-27 10:08:50 +01:00
Bart van den Eijnden
42366c3d00 Changelog for v3.4.0 2015-03-27 10:08:30 +01:00
Fran Peručić
ebc18b4f68 fix: updateing geometry index
More than one features can be be changed while handlingDownUpSequence
exampe: ol.interaction.Modify supports simultaneous editing of multiple features

When a geometry changes old indexed segments are searched by the feature extend and removed. New ones are added.
Old feature extent sholud be used when removing the old indexed segments.
2015-03-26 23:49:29 +01:00
Fran Peručić
299647a957 remove unnecessary flag dragging_ 2015-03-26 22:36:38 +01:00
Alexandre Dubé
1a5d7b85d2 Add/remove features in setMap 2015-03-26 15:19:33 -04:00
Alexandre Dubé
5bffa99e83 Trivial - reorder methods & comment 2015-03-26 14:48:44 -04:00
Alexandre Dubé
49a3f0a0b7 Update geometry index inside Snap interaction 2015-03-26 12:24:54 -04:00
Bart van den Eijnden
d698e2fcee Merge pull request #3383 from bartvde/xmleql-performance
GML3 tests time out in unit tests
2015-03-26 17:10:25 +01:00
Bart van den Eijnden
7d5ede6728 Restore the previous error messages 2015-03-26 16:48:22 +01:00
Bart van den Eijnden
616a0b161e Speed up xmleql performance 2015-03-26 16:03:28 +01:00
Tim Schaub
6e878468ae Merge pull request #3401 from tschaub/geojson-orientation
Allow GeoJSON to be serialized according to the right-hand rule.
2015-03-26 08:44:57 -06:00
Frédéric Junod
9b23572d4e Merge pull request #3403 from fredj/unused-require
Remove unused goog.require
2015-03-26 14:08:24 +01:00
Alexandre Dubé
d1c3dc51ad Fix Drag interaction, works with modify now 2015-03-26 08:36:24 -04:00
Frederic Junod
c0c3057498 Remove unused goog.require 2015-03-26 11:54:37 +01:00
Andreas Hocevar
34851d8ecb Merge pull request #3362 from ahocevar/constructor-proj4js
Configure proj4 options and transforms upon construction
2015-03-26 11:21:52 +01:00
Andreas Hocevar
362c9b6851 Clarification of the purpose of ol.proj.addProjection 2015-03-26 10:52:19 +01:00
Andreas Hocevar
a920cd94d9 Create ol.proj.Projection instances with additional properties 2015-03-26 10:50:52 +01:00
Andreas Hocevar
338901774b Configure proj4 options and transforms upon construction 2015-03-26 10:39:26 +01:00
Frédéric Junod
2c04e4c071 Merge pull request #3394 from fredj/fullscreen-css-name
Fix fullscreen pseudo CSS class name
2015-03-26 09:00:57 +01:00
Tim Schaub
be0c9f3c8a Allow orienting coordinates when serializing GeoJSON 2015-03-25 18:32:31 -06:00
Tim Schaub
5d590bcf95 Allow access to right-hand oriented multi-polygon coordinates 2015-03-25 16:57:29 -06:00
Tim Schaub
7572f27cf9 Allow access to right-hand oriented polygon coordinates 2015-03-25 16:57:29 -06:00
Tim Schaub
ce36947bdb Allow orienting with the right-hand rule 2015-03-25 16:57:25 -06:00
Tim Schaub
5f6ceff3a7 Use ol.geom.flat.orient namespace 2015-03-25 16:33:17 -06:00
Alexandre Dubé
d92917ac89 Fix Snap -> Interaction
This commit changes ol.Snap -> ol.interaction.Snap, which extends
ol.interaction.Pointer.  The 'pointerdown', 'pointermove' and
'pointerup' map browser events are hanlded to edit the pixel and
coordinate properties to make them 'snap' to the closest feature.
2015-03-25 15:10:41 -04:00
Andreas Hocevar
7d20e2a317 Merge pull request #3399 from ahocevar/tilegrid-widths-docs
Clarify when widths need to be configured on a tile grid
2015-03-25 17:18:27 +01:00
Andreas Hocevar
0d507dcbb0 Clarify when widths need to be configured on a tile grid 2015-03-25 16:52:45 +01:00
Andreas Hocevar
c600a92516 Merge pull request #3398 from ahocevar/safe-wrapx
Make sure that the return value of wrapX() is stable
2015-03-25 16:21:53 +01:00
Andreas Hocevar
1df8cba753 Make sure that the return value of wrapX() is stable 2015-03-25 15:59:59 +01:00
Frédéric Junod
bb87b8e7ce Merge pull request #3396 from fredj/sort-compareFn
Move the compare function out of ol.interaction.Modify.handleDownEvent_
2015-03-25 14:57:50 +01:00
Frederic Junod
6a770f03b8 Move the compare function out of ol.interaction.Modify.handleDownEvent_ 2015-03-25 14:41:40 +01:00
Andreas Hocevar
683097d62a Merge pull request #3395 from fperucic/inteaction.modify-fix
ol.Interaction.Modify fixes
2015-03-25 14:16:37 +01:00
Andreas Hocevar
e58a470e69 Merge pull request #3387 from ahocevar/wmts-wrapx
Add wrapX option for ol.source.WMTS
2015-03-25 14:01:04 +01:00
Fran Peručić
56067d1cda Prevent unnecessary function calls
handlePointerMove_ doesn't need to be called when dragging.
handleDragEvent_ takes care of the event in that case.

in handleDragEvent_, createOrUpdateVertexFeature_ doesn't need to be called for each dragged segment. it can be called only once with current vertex.

fixes made to pass the build
2015-03-25 11:19:24 +01:00
Frederic Junod
40f4d5256b Fix fullscreen pseudo CSS class name
Change from `:full-screen` to `:fullscreen`.
See https://fullscreen.spec.whatwg.org/#:fullscreen-pseudo-class
2015-03-25 11:14:52 +01:00
Fran Peručić
279d1829bb fix: ol.interaction.Select conflict
Prevent vertexFeature_ from ol.interaction.Modify from being selected by ol.interaction.Select.
The bug occurs when an delete attempt fails. ex: clicikng on the first or last node of LineString,
or clicking a line segment between two nodes.
2015-03-25 10:52:29 +01:00
Fran Peručić
eb6d61e6d1 fix: modifying the closed LineString
This commit fixes the bug that occurs when trying to modify
a closed LineString by clicking on the starting/ending node.

Such a closed line is added to the modify-test example.
2015-03-25 10:44:35 +01:00
Fran Peručić
7dff739bce Deleting a duplicate node
Fix a bug in ol.interaction.Modify when trying to delete nodes
on a geometry that has duplicate nodes. A bug occurs when
clicking on the duplicate node.
2015-03-25 10:34:36 +01:00
Frédéric Junod
8beeee8a95 Merge pull request #3393 from fredj/cleanup
Remove unused define
2015-03-25 08:54:27 +01:00
Andreas Hocevar
ebb40c8046 Clean up docs and consistently work with resolutions 2015-03-24 19:03:33 +01:00
Andreas Hocevar
4822ca273f Give tile grids a width 2015-03-24 19:03:09 +01:00
Tobias Sauerwein
563d51b389 Merge pull request #3392 from tsauerwein/fullscreen-class
Fix switching class name of full-screen control
2015-03-24 18:26:20 +01:00
Andreas Hocevar
57d9b87fb3 Add wrapX option for ol.source.WMTS 2015-03-24 17:13:07 +01:00
Frederic Junod
4c36e05f27 Remove unused define
Should have been removed in #40
2015-03-24 17:10:27 +01:00
tsauerwein
eb7dde6d0f Fix class name of full-screen control 2015-03-24 17:07:55 +01:00
Frédéric Junod
1d04eabeda Merge pull request #3391 from fredj/cleanup
Minor code cleanup
2015-03-24 14:57:51 +01:00
Frédéric Junod
5c6c45fc92 Merge pull request #3388 from fredj/polyline-layout
Add new geometry layout option for polyline format
2015-03-24 14:44:06 +01:00
Frederic Junod
b7c4e4f297 Remove console.debug from selectinteraction tests 2015-03-24 14:42:30 +01:00
Frederic Junod
6a8b236d82 Remove unnecessary newlines 2015-03-24 14:41:40 +01:00
Frederic Junod
e669b20ed5 Add new geometry layout option for polyline format
To be able to choose the geometry layout of the feature geometries created by
the format reader.

Default is `ol.geom.GeometryLayout.XY`
2015-03-24 11:39:18 +01:00
Éric Lemoine
ae2c9144e1 Merge pull request #3385 from elemoine/getzforresolution
Fix ol.tilegrid.TileGrid#getZForResolution
2015-03-23 18:31:42 +01:00
Andreas Hocevar
45e9695239 Merge pull request #3377 from ahocevar/attribution-wrapx
Support wrapX for attributions
2015-03-23 18:05:13 +01:00
Éric Lemoine
79748c6f0c Fix ol.tilegrid.TileGrid#getZForResolution
This fixes a bug in ol.tilegrid.TileGrid#getZForResolution where this function doesn't take minZoom and maxZoom into account when selecting a zoom level for a resolution.

Fixes #2780.
2015-03-23 18:04:13 +01:00
Andreas Hocevar
d9c04cd925 Support wrapX for attributions 2015-03-23 16:55:50 +01:00
Andreas Hocevar
7df00242f0 Merge pull request #3382 from ahocevar/github-source-links
Create github source links
2015-03-23 16:47:47 +01:00
Andreas Hocevar
4862a8c897 Create github source links 2015-03-23 16:08:36 +01:00
Andreas Hocevar
8813eb0112 Merge pull request #3376 from ahocevar/wms-tile-wrapx
Add ol.source.Tile support for wrapping around the x-axis
2015-03-23 14:37:12 +01:00
Andreas Hocevar
b75f7f9e3b Merge pull request #3378 from ahocevar/questions
Clarify where to ask questions
2015-03-23 14:24:14 +01:00
Andreas Hocevar
9b4cb96502 Clarify where to ask questions 2015-03-23 14:14:34 +01:00
Frédéric Junod
c71db17c1d Merge pull request #3380 from fredj/more-geojson-tests
Test the GeoJSON layout
2015-03-23 13:29:13 +01:00
Frederic Junod
bfd9ec1ef1 Test the GeoJSON layout 2015-03-23 12:47:34 +01:00
Andreas Hocevar
3e18b85206 Add ol.source.Tile support for wrapping around the x-axis 2015-03-22 14:27:19 +01:00
Frédéric Junod
c707c5e9db Merge pull request #3360 from fredj/dispose-imagetile
Don't unlisten image twice when disposing an ol.ImageTile
2015-03-18 11:46:09 +01:00
Frederic Junod
f474e7ccd9 Don't unlisten image twice when disposing an ol.ImageTile
Fixes #3325
2015-03-18 10:33:41 +01:00
Andreas Hocevar
752cf78e50 Merge pull request #3361 from ahocevar/test-listen-localhost
Listen on localhost to avoid phantomjs browsing 0.0.0.0
2015-03-18 09:54:08 +01:00
Andreas Hocevar
52ee1b1630 Merge pull request #3365 from ahocevar/pointresolution-docs
Better docs for #getPointResolution
2015-03-18 09:53:29 +01:00
Andreas Hocevar
d8f624bf44 Better docs for #getPointResolution 2015-03-18 09:26:02 +01:00
Andreas Hocevar
7916f36f7a Merge pull request #3363 from bill-chadwick/master
New ol.proj features
2015-03-18 00:22:34 +01:00
bill-chadwick
3efea3ddfc Update to ol.proj
Add support for custom getPointResolution
and setting the 'global' boolean
2015-03-17 23:08:11 +00:00
Andreas Hocevar
9462c2148d Listen on localhost to avoid phantomjs browsing 0.0.0.0 2015-03-17 14:39:00 +01:00
Bart van den Eijnden
8061b69495 Merge pull request #3305 from bartvde/image-load-events
Add image loading events to image sources (r=@ahocevar,@elemoine)
2015-03-17 13:07:37 +01:00
Bart van den Eijnden
4569858882 Add image loading events to image sources 2015-03-17 12:56:39 +01:00
Jiri Matyas
ab9100450b enable deep clone of multipolygon endss 2015-03-17 11:09:03 +01:00
Frédéric Junod
3a7b9751d7 Merge pull request #3343 from fredj/line-arrows
Line arrows example
2015-03-16 14:30:08 +01:00
Frédéric Junod
d3f246518b Merge pull request #3354 from fredj/geojson-write-options
Mark ol.format.GeoJSON#writeFeature(s) option param optional
2015-03-16 11:31:59 +01:00
Frederic Junod
b9aba8babd Add optional this param to the callback function 2015-03-16 11:25:51 +01:00
Frederic Junod
023816f43b Add new line-arrows example 2015-03-16 10:43:33 +01:00
Frederic Junod
4b13627fd7 Add new ol.geom.LineString#forEachSegment function 2015-03-16 10:43:33 +01:00
Frédéric Junod
dd23403315 Merge pull request #3346 from fredj/geojson-feature-properties
Set the 'properties' member to null if the feature has not properties
2015-03-16 10:21:05 +01:00
Frederic Junod
3a7d1ebd16 Mark ol.format.GeoJSON#writeGeometry option param optional 2015-03-16 09:25:50 +01:00
Frederic Junod
180a75d714 Mark ol.format.GeoJSON#writeFeature option param optional 2015-03-16 09:20:57 +01:00
Frederic Junod
0997a171a0 Mark ol.format.GeoJSON#writeFeatures option param optional 2015-03-16 09:18:52 +01:00
Frederic Junod
96883e0b69 Set the 'properties' member to null if the feature has not properties 2015-03-12 15:58:16 +01:00
Frédéric Junod
da94ee5754 Merge pull request #3344 from fredj/cleanup
Minor code cleanup
2015-03-12 13:24:02 +01:00
Frederic Junod
5a350fb978 Remove unused goog.require 2015-03-12 12:25:38 +01:00
Frederic Junod
d87da4b3c8 Better 'rotation' option documentation 2015-03-12 12:17:25 +01:00
Éric Lemoine
80fa7e5ba1 Merge pull request #3237 from Morgul/ccase-circle-drawing
Add circles to Draw interaction.
2015-03-11 17:08:10 +01:00
Christopher S. Case
1fb932f7bb Removed lurking console.log 2015-03-11 10:09:58 -05:00
Frédéric Junod
b26bea8e88 Merge pull request #2691 from fredj/will-change
Add will-change CSS properties
2015-03-11 12:15:44 +01:00
Frederic Junod
1a80c0ef01 Add will-change CSS property to ol-overlay-container elements 2015-03-11 11:08:14 +01:00
Frederic Junod
dcba9f2ff4 Add a 'ol-overlay-container' CSS class to the overlay element 2015-03-11 11:08:14 +01:00
Frederic Junod
064cd5695a Add will-change CSS property to scale line and rotate controls 2015-03-11 11:08:14 +01:00
Frédéric Junod
b6adeea4f4 Merge pull request #3336 from fredj/getTargetElement
Use ol.Map#getTargetElement function
2015-03-09 17:15:20 +01:00
Frédéric Junod
49a807fa56 Merge pull request #3335 from fredj/rbush
Update rbush to version 1.3.5
2015-03-09 17:14:51 +01:00
Frederic Junod
7dcef882c2 Use ol.Map#getTargetElement function 2015-03-09 16:21:03 +01:00
Frederic Junod
b6b8ae265c Update rbush to version 1.3.5 2015-03-09 16:03:09 +01:00
Frédéric Junod
9951c88343 Merge pull request #3322 from fredj/drawinteraction-map.isDef
Remove unneeded map.isDef call
2015-03-09 09:01:05 +01:00
Andreas Hocevar
c9715d32b0 Merge pull request #3327 from ahocevar/dist-css
Add css to dist directory
2015-03-07 21:55:25 +01:00
Andreas Hocevar
47f32a30b8 Merge pull request #3324 from ahocevar/select-event-interface
Add interface definition for ol.SelectEvent
2015-03-06 12:41:05 +01:00
Andreas Hocevar
d8150c5155 Add interface definition for ol.SelectEvent 2015-03-06 11:31:30 +01:00
Andreas Hocevar
1b640870b1 Add css to dist directory 2015-03-06 11:20:01 +01:00
Frederic Junod
0d979e37b8 Remove unneeded map.isDef call 2015-03-05 18:12:23 +01:00
Frederic Junod
daf81b9c26 Remove unused goog.require 2015-03-05 18:11:19 +01:00
Frédéric Junod
4b1accb149 Merge pull request #3315 from fredj/tissot-desc
Fix Tissot indicatrix example description
2015-03-05 13:55:06 +01:00
Frederic Junod
b79174d6a3 Fix Tissot indicatrix example description
Fixes #3314
2015-03-05 12:36:37 +01:00
Andreas Hocevar
41fe72fab5 Merge pull request #3312 from ahocevar/arcgis-hidpi
Fix HiDPI support for ArcGIS REST
2015-03-04 22:33:21 +01:00
Andreas Hocevar
8f1726ae39 Fix HiDPI support for ArcGIS REST 2015-03-04 22:11:16 +01:00
Bart van den Eijnden
3867c0e45a Merge pull request #2910 from bartvde/issue-2910
Support multiple featureTpes in GML parser
2015-03-04 18:59:05 +01:00
Bart van den Eijnden
15ab515ceb Add docs to explain how to use featureNS in the case of multiple feature namespaces 2015-03-04 18:33:56 +01:00
Éric Lemoine
aad727ad14 Merge pull request #3309 from bjornharrtell/select-multi-fix
Fix select event always reporting as multi select
2015-03-04 18:04:15 +01:00
Bart van den Eijnden
b698fe9968 Support multiple featureTypes with a different featureNS 2015-03-04 15:27:05 +01:00
Andreas Hocevar
b782e0be98 Merge pull request #3307 from ahocevar/scaleline-units
Handle all non-degree units in ol.control.ScaleLine
2015-03-04 11:20:05 +01:00
Bart van den Eijnden
b05ead4056 Allow multiple featureTypes through ol.format.WFS as well 2015-03-04 10:24:42 +01:00
Bart van den Eijnden
d0180f35e0 Support multiple featureTypes as well in autoconfigure mode 2015-03-04 10:20:36 +01:00
Bart van den Eijnden
3a7905f2fd Support multiple feature types in GML format 2015-03-04 10:16:25 +01:00
Björn Harrtell
49c2af165a Fix select event always reporting as multi select 2015-03-04 08:48:08 +01:00
Andreas Hocevar
2e3d0d57d5 Handle all non-degree units in ol.control.ScaleLine 2015-03-03 21:06:12 +01:00
Christopher S. Case
15a4b7f4a6 Changed default radius to 0, instead of 1000.
(This was debugging code.)
2015-02-18 09:50:10 -06:00
Christopher S. Case
b2ce4c19e1 added unit tests. 2015-02-18 09:50:10 -06:00
Christopher S. Case
1074c9d44a Updated example for circle drawing. 2015-02-18 09:50:10 -06:00
Christopher S. Case
ae8321ab30 Added circle drawing to draw interaction. 2015-02-18 09:50:02 -06:00
850 changed files with 48441 additions and 35773 deletions

17
.editorconfig Normal file
View File

@@ -0,0 +1,17 @@
root = true
[*]
indent_style = space
indent_size = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
[*.md]
indent_size = 2
trim_trailing_whitespace = false
[Makefile]
indent_style = tab
indent_size = 4

4
.gitignore vendored
View File

@@ -1,7 +1,5 @@
*.pyc *.pyc
/build/ /build/
/examples/*.html.png
/examples/example-list.js
/examples/example-list.xml
/node_modules/ /node_modules/
/dist/ /dist/
/coverage/

View File

@@ -1,5 +1,2 @@
*.pyc *.pyc
/build/ /build/
/examples/*.html.png
/examples/example-list.js
/examples/example-list.xml

View File

@@ -1,8 +1,31 @@
sudo: required
dist: trusty
language: node_js
node_js:
- "4"
cache:
directories:
- node_modules
env:
- DISPLAY=:99.0
before_install: before_install:
- "npm prune"
- "sudo pip install -r requirements.txt" - "sudo pip install -r requirements.txt"
- "npm install -g npm && npm install"
before_script: before_script:
- "rm src/ol/renderer/webgl/*shader.js" - "rm src/ol/renderer/webgl/*shader.js"
- "sh -e /etc/init.d/xvfb start"
script: "./build.py ci" script: "make ci"
after_success:
- "make test-coverage"
- "cat coverage/lcov.info | ./node_modules/.bin/coveralls"
branches:
only:
- master

View File

@@ -2,13 +2,33 @@
Thanks for your interest in contributing to OpenLayers 3. Thanks for your interest in contributing to OpenLayers 3.
## Asking Questions
Please ask questions about using the library on [stackoverflow using the tag 'openlayers-3'](http://stackoverflow.com/questions/tagged/openlayers-3).
When you want to get involved and discuss new features or changes, please use [the mailing list](https://groups.google.com/forum/#!forum/ol3-dev).
## Submitting Bug Reports
Please use the [GitHub issue tracker](https://github.com/openlayers/ol3/issues). Before creating a new issue, do a quick search to see if the problem has been reported already.
## Getting Familiar with the Code in the Repository
Look for `readme.md` files! Several directories contain a `readme.md` file that explains the contents of the directory and how to work with them.
## Contributing Code ## Contributing Code
See [`DEVELOPING.md`](https://github.com/openlayers/ol3/blob/master/DEVELOPING.md) to learn how to get started developing.
Our preferred means of receiving contributions is through [pull requests](https://help.github.com/articles/using-pull-requests). Make sure Our preferred means of receiving contributions is through [pull requests](https://help.github.com/articles/using-pull-requests). Make sure
that your pull request follows our pull request guidelines below before submitting it. that your pull request follows our pull request guidelines below before submitting it.
This page describes what you need to know to contribute code to ol3 as a developer. This page describes what you need to know to contribute code to ol3 as a developer.
## Contributor License Agreement ## Contributor License Agreement
Before accepting a contribution, we ask that you provide us a Contributor Before accepting a contribution, we ask that you provide us a Contributor
@@ -18,168 +38,11 @@ Contributor License Agreement](https://raw.github.com/openlayers/cla/master/ccla
making your contribution as an individual, you can submit a digital [Individual making your contribution as an individual, you can submit a digital [Individual
Contributor License Agreement](https://docs.google.com/spreadsheet/viewform?formkey=dGNNVUJEMXF2dERTU0FXM3JjNVBQblE6MQ). Contributor License Agreement](https://docs.google.com/spreadsheet/viewform?formkey=dGNNVUJEMXF2dERTU0FXM3JjNVBQblE6MQ).
## Setting up development environment
You will obviously start by
[forking](https://github.com/openlayers/ol3/fork_select) the ol3 repository.
### Travis CI
The Travis CI hook is enabled on the Github repository. This means every pull request
is run through a full test suite to ensure it compiles and passes the tests. Failing
pull requests will not be merged.
Although not mandatory, it is also recommended to set up Travis CI for your ol3 fork.
For that go to your ol3 fork's Service Hooks page and set up the Travis hook.
Then every time you push to your fork, the test suite will be run. This means
errors can be caught before creating a pull request. For those making
small or occasional contributions, this may be enough to check that your contributions
are ok; in this case, you do not need to install the build tools on your local environment
as described below.
### Development dependencies
The minimum requirements are:
* Git
* [Node.js](http://nodejs.org/) (0.10.x or higher)
* Python 2.6 or 2.7 with a couple of extra modules (see below)
* Java 7 (JRE and JDK)
The executables `git`, `java`, `jar`, and `python` should be in your `PATH`.
You can check your configuration by running:
$ ./build.py checkdeps
To install the Node.js dependencies run
$ npm install
To install the extra Python modules, run:
$ sudo pip install -r requirements.txt
or
$ cat requirements.txt | sudo xargs easy_install
depending on your OS and Python installation.
## Working with the build tool
As an ol3 developer you will need to use the `build.py` Python script. This is
the script to use to run the linter, the compiler, the tests, etc. Windows users
can use `build.cmd` which is a thin wrapper around `build.py`.
The `build.py` script is equivalent to a Makefile. It is actually based on
[pake](https://github.com/twpayne/pake/), which is a simple implementation of
`make` in Python.
The usage of the script is:
$ ./build.py <target>
where `<target>` is the name of the build target you want to execute. For
example:
$ ./build.py test
The main build targets are `serve`, `lint`, `build`, `test`, and `check`. The
latter is a meta-target that basically runs `lint`, `build`, and `test`.
The `serve` target starts a node-based web server, which we will refer to as the *dev server*. You'll need to start that server for running the examples and the tests in a browser. More information on that further down.
Other targets include `apidoc` and `ci`. The latter is the target used on Travis CI. See ol3's [Travis configuration file](https://github.com/openlayers/ol3/blob/master/.travis.yml).
## Running the `check` target
The `check` target is to be run before pushing code to GitHub and opening pull
requests. Branches that don't pass `check` won't pass the integration tests,
and have therefore no chance of being merged into `master`.
To run the `check` target:
$ ./build.py check
If you want to run the full suite of integration tests, see "Running the integration
tests" below.
## Running examples
To run the examples you first need to start the dev server:
$ ./build.py serve
Then, just point your browser <http://localhost:3000/examples> in your browser. For example <http://localhost:3000/examples/side-by-side.html>.
Run examples against the `ol.js` standalone build:
The examples can also be run against the `ol.js` standalone lib, just like the examples
[hosted](http://openlayers.github.com/ol3/master/examples/) on GitHub. Start by
executing the `host-examples` build target:
$ ./build.py host-examples
After running `host-examples` you can now open the examples index page in the browser, for example: <http://localhost/~elemoine/ol3/build/hosted/master/examples/>. (This assumes that the `hosted` directory is a web directory, served by Apache for example.)
Append `?mode=raw` to make the example work in full debug mode. In raw mode the OpenLayers and Closure Library scripts are loaded individually by the Closure Library's `base.js` script (which the example page loads and executes before any other script).
## Running tests
To run the tests in a browser start the dev server (`./build.py serve`) and open <http://localhost:3000/test/index.html> in the browser.
To run the tests on the console (headless testing with PhantomJS) use the `test` target:
$ ./build.py test
See also the test-specific [README](../master/test/README.md).
## Running the integration tests
When you submit a pull request the [Travis continuous integration
server](https://travis-ci.org/) will run a full suite of tests, including
building all versions of the library and checking that all of the examples
work. You will receive an email with the results, and the status will be
displayed in the pull request.
To run the full suite of integration tests use the `ci` target:
$ ./build.py ci
Running the full suite of integration tests currently takes 5-10 minutes.
This makes sure that your commit won't break the build. It also runs JSDoc3 to
make sure that there are no invalid API doc directives.
## Adding examples
Adding functionality often implies adding one or several examples. This
section provides explanations related to adding examples.
The examples are located in the `examples` directory. Adding a new example
implies creating two files in this directory, an `.html` file and a `.js` file.
See `examples/simple.html` and `examples/simple.js` for instance.
The `.html` file needs to include a script tag with
`loader.js?id=<example_name>` as its `src`. For example, if the two files for
the example are `myexample.js` and `myexample.html` then the script tag's `src`
should be set to `myexample`.
You can use `simple.js` and `simple.html` as templates for new examples.
### Use of the `goog` namespace in examples
Short story: the ol3 examples should not use the `goog` namespace, except
for `goog.require`.
Longer story: we want that the ol3 examples work in multiple modes, with the
standalone lib (which has implications of the symbols and properties we
export), and compiled together with the ol3 library.
Compiling the examples together with the library makes it mandatory to declare dependencies with `goog.require` statements.
## Pull request guidelines ## Pull request guidelines
Before working on a pull request, create an issue explaining what you want to contribute. This ensures that your pull request won't go unnoticed, and that you are not contributing something that is not suitable for the project. Once a core developer has set the `pull request accepted` label on the issue, you can submit a pull request. The pull request description should reference the original issue.
Your pull request must: Your pull request must:
* Follow OpenLayers 3's coding style. * Follow OpenLayers 3's coding style.
@@ -201,7 +64,7 @@ Your pull request must:
It is strongly recommended that you run It is strongly recommended that you run
$ ./build.py check $ make check
before every commit. This will catch many problems quickly, and it is much before every commit. This will catch many problems quickly, and it is much
faster than waiting for the Travis CI integration tests to run. faster than waiting for the Travis CI integration tests to run.
@@ -221,9 +84,9 @@ Guide](http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml).
This is checked using the [Closure This is checked using the [Closure
Linter](https://developers.google.com/closure/utilities/) in strict mode. You Linter](https://developers.google.com/closure/utilities/) in strict mode. You
can run the linter locally on your machine before committing using the `lint` can run the linter locally on your machine before committing using the `lint`
target to `build.py`: target:
$ ./build.py lint $ make lint
In addition to fixing problems identified by the linter, please also follow the In addition to fixing problems identified by the linter, please also follow the
style of the existing OpenLayers 3 code, which includes: style of the existing OpenLayers 3 code, which includes:
@@ -248,13 +111,21 @@ style of the existing OpenLayers 3 code, which includes:
* Use uppercase for `@const` variables. * Use uppercase for `@const` variables.
### Configure your editor
If possible, configure your editor to follow the coding conventions of the
library. A `.editorconfig` file is included at the root of the repository that
can be used to configure whitespace and charset handling in your editor. See
that file for a description of the conventions. The [EditorConfig](
http://editorconfig.org/#download) site links to plugins for various editors.
### Pass the integration tests run automatically by the Travis CI system ### Pass the integration tests run automatically by the Travis CI system
The integration tests contain a number of automated checks to ensure that the The integration tests contain a number of automated checks to ensure that the
code follows the OpenLayers 3 style and does not break tests or examples. You code follows the OpenLayers 3 style and does not break tests or examples. You
can run the integration tests locally using the `ci` target: can run the integration tests locally using the `ci` target:
$ ./build.py ci $ make ci
### Address a single issue or add a single item of functionality ### Address a single issue or add a single item of functionality
@@ -310,3 +181,33 @@ Occasionally other changes to `master` might mean that your pull request cannot
be merged automatically. In this case you may need to rebase your branch on a be merged automatically. In this case you may need to rebase your branch on a
more recent `master`, resolve any conflicts, and `git push --force` to update more recent `master`, resolve any conflicts, and `git push --force` to update
your branch so that it can be merged automatically. your branch so that it can be merged automatically.
## Building on Windows
Most developers build on Linux. Building on Windows is possible under Cygwin.
When installing Cygwin from https://www.cygwin.com/, include the developer
tools to get GNU make.
First (before npm install), to avoid file permission problems between Windows
and Cygwin, edit Cygwin's /etc/fstab file to disable ACLs like this
`none /cygdrive cygdrive binary,noacl,posix=0,user 0 0`
Python is normally installed with Cygwin so need not be installed separately.
By default Cygwin will use its own version of Python rather than Window's,
so the Python modules should be installed for Cygwin's Python.
The build targets `check-deps`, `serve`, `lint`, `build`, `test`, `check` and
`host-examples` described above should all work. `host-examples` takes quite a
while to run. If a target does not run properly first time, try it again.
Currently, Firefox fails to run http://localhost:3000/build/examples
from make serve, but Chrome and Internet Explorer will.
Microsoft Visual Studio's javascript debugger may be used to debug the
build/hosted/your-branch/examples. It will be convenient to set
build/hosted/your-branch/examples/index.html as the startup page.
Your ol3 source tree need not be under the Cygwin root.
if you checkout to c:/ol3 then you can build under Cygwin at /cygdrive/c/ol3 .
However, keep the path to the ol3 files short otherwise you may see
`ENAMETOOLONG` errors.

155
DEVELOPING.md Normal file
View File

@@ -0,0 +1,155 @@
# Developing
## Setting up development environment
You will obviously start by
[forking](https://github.com/openlayers/ol3/fork) the ol3 repository.
### Travis CI
The Travis CI hook is enabled on the Github repository. This means every pull request
is run through a full test suite to ensure it compiles and passes the tests. Failing
pull requests will not be merged.
Although not mandatory, it is also recommended to set up Travis CI for your ol3 fork.
For that go to your ol3 fork's Service Hooks page and set up the Travis hook.
Then every time you push to your fork, the test suite will be run. This means
errors can be caught before creating a pull request. For those making
small or occasional contributions, this may be enough to check that your contributions
are ok; in this case, you do not need to install the build tools on your local environment
as described below.
### Development dependencies
The minimum requirements are:
* GNU Make
* Git
* [Node.js](http://nodejs.org/) (0.10.x or higher)
* Python 2.6 or 2.7 with a couple of extra modules (see below)
* Java 7 (JRE and JDK)
The executables `git`, `node`, `python` and `java` should be in your `PATH`.
You can check your configuration by running:
$ make check-deps
To install the Node.js dependencies run
$ npm install
To install the extra Python modules, run:
$ sudo pip install -r requirements.txt
or
$ cat requirements.txt | sudo xargs easy_install
depending on your OS and Python installation.
(You can also install the Python modules in a Python virtual environment if you want to.)
## Working with the build tool
As an ol3 developer you will use `make` to run build targets defined in the
`Makefile` located at the root of the repository. The `Makefile` includes
targets for running the linter, the compiler, the tests, etc.
The usage of `make` is as follows:
$ make <target>
where `<target>` is the name of the build target you want to execute. For
example:
$ make test
The main build targets are `serve`, `lint`, `build`, `test`, and `check`. The
latter is a meta-target that basically runs `lint`, `build`, and `test`.
The `serve` target starts a node-based web server, which we will refer to as the *dev server*. You'll need to start that server for running the examples and the tests in a browser. More information on that further down.
Other targets include `apidoc` and `ci`. The latter is the target used on Travis CI. See ol3's [Travis configuration file](https://github.com/openlayers/ol3/blob/master/.travis.yml).
## Running the `check` target
The `check` target is to be run before pushing code to GitHub and opening pull
requests. Branches that don't pass `check` won't pass the integration tests,
and have therefore no chance of being merged into `master`.
To run the `check` target:
$ make check
If you want to run the full suite of integration tests, see "Running the integration
tests" below.
## Running examples
To run the examples you first need to start the dev server:
$ make serve
Then, just point your browser <http://localhost:3000/build/examples> in your browser. For example <http://localhost:3000/build/examples/side-by-side.html>.
Run examples against the `ol.js` standalone build:
The examples can also be run against the `ol.js` standalone build, just like
the examples [hosted](http://openlayers.org/en/master/examples/) on GitHub.
Start by executing the `host-examples` build target:
$ make host-examples
After running `host-examples` you can now open the examples index page in the browser: <http://localhost:3000/build/hosted/master/examples/>. (This assumes that you still have the dev server running.)
Append `?mode=raw` to make the example work in full debug mode. In raw mode the OpenLayers and Closure Library scripts are loaded individually by the Closure Library's `base.js` script (which the example page loads and executes before any other script).
## Running tests
To run the tests in a browser start the dev server (`make serve`) and open <http://localhost:3000/test/index.html> in the browser.
To run the tests on the console (headless testing with PhantomJS) use the `test` target:
$ make test
See also the test-specific [README](../master/test/README.md).
## Running the integration tests
When you submit a pull request the [Travis continuous integration
server](https://travis-ci.org/) will run a full suite of tests, including
building all versions of the library and checking that all of the examples
work. You will receive an email with the results, and the status will be
displayed in the pull request.
To run the full suite of integration tests use the `ci` target:
$ make ci
Running the full suite of integration tests currently takes 5-10 minutes.
This makes sure that your commit won't break the build. It also runs JSDoc3 to
make sure that there are no invalid API doc directives.
## Adding examples
Adding functionality often implies adding one or several examples. This
section provides explanations related to adding examples.
The examples are located in the `examples` directory. Adding a new example
implies creating two or three files in this directory, an `.html` file, a `.js`
file, and, optionally, a `.css` file.
You can use `simple.js` and `simple.html` as templates for new examples.
### Use of the `goog` namespace in examples
Short story: the ol3 examples should not use the `goog` namespace, except
for `goog.require`.
Longer story: we want that the ol3 examples work in multiple modes, with the
standalone lib (which has implications of the symbols and properties we
export), and compiled together with the ol3 library.
Compiling the examples together with the library makes it mandatory to declare dependencies with `goog.require` statements.

View File

@@ -1,4 +1,4 @@
Copyright 2005-2014 OpenLayers Contributors. All rights reserved. Copyright 2005-2015 OpenLayers Contributors. All rights reserved.
Redistribution and use in source and binary forms, with or without modification, Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met: are permitted provided that the following conditions are met:

327
Makefile Normal file
View File

@@ -0,0 +1,327 @@
OS := $(shell uname)
BRANCH := $(shell git rev-parse --abbrev-ref HEAD)
SRC_GLSL := $(shell find src -type f -name '*.glsl')
SRC_SHADER_JS := $(patsubst %.glsl,%shader.js,$(SRC_GLSL))
SRC_JS := $(filter-out $(SRC_SHADER_JS),$(shell find src -name '*.js'))
SRC_JSDOC = $(shell find src -type f -name '*.jsdoc')
SPEC_JS := $(shell find test/spec -type f -name '*.js')
SPEC_RENDERING_JS := $(shell find test_rendering/spec -name '*.js')
EXAMPLES := $(shell find examples -type f)
EXAMPLES_HTML := $(filter-out examples/index.html,$(shell find examples -maxdepth 1 -type f -name '*.html'))
EXAMPLES_JS := $(patsubst %.html,%.js,$(EXAMPLES_HTML))
BUILD_EXAMPLES := $(subst examples,build/examples,$(EXAMPLES)) build/examples/index.js
BUILD_HOSTED := build/hosted/$(BRANCH)
BUILD_HOSTED_EXAMPLES := $(addprefix $(BUILD_HOSTED)/,$(EXAMPLES))
BUILD_HOSTED_EXAMPLES_JS := $(addprefix $(BUILD_HOSTED)/,$(EXAMPLES_JS))
UNPHANTOMABLE_EXAMPLES = examples/shaded-relief.html examples/raster.html examples/region-growing.html examples/color-manipulation.html
CHECK_EXAMPLE_TIMESTAMPS = $(patsubst examples/%.html,build/timestamps/check-%-timestamp,$(filter-out $(UNPHANTOMABLE_EXAMPLES),$(EXAMPLES_HTML)))
TASKS_JS := $(shell find tasks -name '*.js')
ifeq (CYGWIN,$(findstring CYGWIN,$(OS)))
CLOSURE_LIB = $(shell cygpath -u $(shell node -e 'process.stdout.write(require("closure-util").getLibraryPath())'))
else
CLOSURE_LIB = $(shell node -e 'process.stdout.write(require("closure-util").getLibraryPath())')
endif
ifeq ($(OS),Darwin)
STAT_COMPRESSED = stat -f ' compressed: %z bytes'
STAT_UNCOMPRESSED = stat -f 'uncompressed: %z bytes'
else
STAT_COMPRESSED = stat -c ' compressed: %s bytes'
STAT_UNCOMPRESSED = stat -c 'uncompressed: %s bytes'
endif
.PHONY: default
default: help
.PHONY: help
help:
@echo
@echo "The most common targets are:"
@echo
@echo "- install Install node dependencies"
@echo "- serve Start dev server for running examples and tests"
@echo "- test Run unit tests in the console"
@echo "- check Perform a number of checks on the code"
@echo "- clean Remove generated files"
@echo "- help Display this help message"
@echo
@echo "Other less frequently used targets are:"
@echo
@echo "- build Build ol.js, ol-debug.js, ol.js.map and ol.css"
@echo "- lint Check the code with the linter"
@echo "- ci Run the full continuous integration process"
@echo "- apidoc Build the API documentation using JSDoc"
@echo "- cleanall Remove all the build artefacts"
@echo "- check-deps Check if the required dependencies are installed"
@echo
.PHONY: apidoc
apidoc: build/timestamps/jsdoc-$(BRANCH)-timestamp
.PHONY: build
build: build/ol.css build/ol.js build/ol-debug.js build/ol.js.map
.PHONY: check
check: lint build/ol.js test
.PHONY: check-examples
check-examples: $(CHECK_EXAMPLE_TIMESTAMPS)
.PHONY: check-deps
check-deps: EXECUTABLES = git node python java
check-deps:
@for exe in $(EXECUTABLES) ;\
do \
which $${exe} > /dev/null && \
echo "Program $${exe} OK" || \
echo "Program $${exe} MISSING!" ;\
done ;\
.PHONY: ci
ci: lint build test test-rendering compile-examples check-examples apidoc
.PHONY: compile-examples
compile-examples: build/compiled-examples/all.combined.js
.PHONY: clean
clean:
rm -f build/timestamps/gjslint-timestamp
rm -f build/timestamps/jshint-timestamp
rm -f build/timestamps/check-*-timestamp
rm -f build/ol.css
rm -f build/ol.js
rm -f build/ol.js.map
rm -f build/ol-debug.js
rm -f build/test_requires.js
rm -f build/test_rendering_requires.js
rm -rf build/examples
rm -rf build/compiled-examples
rm -rf $(BUILD_HOSTED)
.PHONY: cleanall
cleanall:
rm -rf build
.PHONY: css
css: build/ol.css
.PHONY: examples
examples: $(BUILD_EXAMPLES)
.PHONY: install
install: build/timestamps/node-modules-timestamp
.PHONY: lint
lint: build/timestamps/gjslint-timestamp build/timestamps/jshint-timestamp \
build/timestamps/check-requires-timestamp \
build/timestamps/check-whitespace-timestamp
.PHONY: npm-install
npm-install: build/timestamps/node-modules-timestamp
.PHONY: shaders
shaders: $(SRC_SHADER_JS)
.PHONY: serve
serve: build/test_requires.js build/test_rendering_requires.js
node tasks/serve.js
.PHONY: test
test: build/timestamps/node-modules-timestamp build/test_requires.js
node tasks/test.js
.PHONY: test-coverage
test-coverage: build/timestamps/node-modules-timestamp
node tasks/test-coverage.js
.PHONY: test-rendering
test-rendering: build/timestamps/node-modules-timestamp \
build/test_rendering_requires.js
@rm -rf build/slimerjs-profile
@mkdir -p build/slimerjs-profile
@cp -r test_rendering/slimerjs-profile/* build/slimerjs-profile/
node tasks/test-rendering.js
.PHONY: host-examples
host-examples: $(BUILD_HOSTED_EXAMPLES) \
$(BUILD_HOSTED)/build/ol.js \
$(BUILD_HOSTED)/build/ol-debug.js \
$(BUILD_HOSTED)/css/ol.css \
$(BUILD_HOSTED)/examples/loader.js \
$(BUILD_HOSTED)/examples/index.js \
$(BUILD_HOSTED)/build/ol-deps.js
.PHONY: host-libraries
host-libraries: build/timestamps/node-modules-timestamp
@rm -rf $(BUILD_HOSTED)/closure-library
@mkdir -p $(BUILD_HOSTED)/closure-library
@cp -r $(CLOSURE_LIB)/* $(BUILD_HOSTED)/closure-library/
@rm -rf $(BUILD_HOSTED)/ol/ol
@mkdir -p $(BUILD_HOSTED)/ol/ol
@cp -r src/ol/* $(BUILD_HOSTED)/ol/ol/
@rm -rf $(BUILD_HOSTED)/ol.ext
@mkdir -p $(BUILD_HOSTED)/ol.ext
@cp -r build/ol.ext/* $(BUILD_HOSTED)/ol.ext/
$(BUILD_EXAMPLES): $(EXAMPLES) package.json
@mkdir -p $(@D)
@node tasks/build-examples.js
build/timestamps/check-%-timestamp: $(BUILD_HOSTED)/examples/%.html \
$(BUILD_HOSTED)/examples/%.js \
$(filter $(BUILD_HOSTED)/examples/resources/%,$(BUILD_HOSTED_EXAMPLES)) \
$(filter $(BUILD_HOSTED)/examples/data/%,$(BUILD_HOSTED_EXAMPLES)) \
$(BUILD_HOSTED)/examples/loader.js \
$(BUILD_HOSTED)/build/ol.js \
$(BUILD_HOSTED)/css/ol.css
@mkdir -p $(@D)
./node_modules/.bin/phantomjs --ssl-protocol=any --ignore-ssl-errors=true bin/check-example.js $(addsuffix ?mode=advanced, $<)
@touch $@
build/timestamps/check-requires-timestamp: $(SRC_JS) $(EXAMPLES_JS) \
$(SRC_SHADER_JS) $(SPEC_JS) \
$(SPEC_RENDERING_JS)
@mkdir -p $(@D)
@python bin/check-requires.py $(CLOSURE_LIB) $^
@touch $@
build/timestamps/check-whitespace-timestamp: $(SRC_JS) $(EXAMPLES_JS) \
$(SPEC_JS) $(SPEC_RENDERING_JS) \
$(SRC_JSDOC)
@mkdir -p $(@D)
@python bin/check-whitespace.py $^
@touch $@
build/compiled-examples/all.js: $(EXAMPLES_JS)
@mkdir -p $(@D)
@python bin/combine-examples.py $^ > $@
build/compiled-examples/all.combined.js: config/examples-all.json build/compiled-examples/all.js \
$(SRC_JS) $(SRC_SHADER_JS) \
build/timestamps/node-modules-timestamp
@mkdir -p $(@D)
node tasks/build.js $< $@
build/compiled-examples/%.json: config/example.json build/examples/%.js \
build/timestamps/node-modules-timestamp
@mkdir -p $(@D)
@sed -e 's|{{id}}|$*|' $< > $@
build/compiled-examples/%.combined.js: build/compiled-examples/%.json \
$(SRC_JS) $(SRC_SHADER_JS) \
build/timestamps/node-modules-timestamp
@mkdir -p $(@D)
node tasks/build.js $< $@
build/timestamps/jsdoc-$(BRANCH)-timestamp: config/jsdoc/api/index.md \
config/jsdoc/api/conf.json $(SRC_JS) \
$(SRC_SHADER_JS) \
$(shell find config/jsdoc/api/template -type f) \
build/timestamps/node-modules-timestamp
@mkdir -p $(@D)
@rm -rf $(BUILD_HOSTED)/apidoc
./node_modules/.bin/jsdoc config/jsdoc/api/index.md -c config/jsdoc/api/conf.json -d $(BUILD_HOSTED)/apidoc
@touch $@
build/timestamps/gjslint-timestamp: $(SRC_JS) $(SPEC_JS) $(SPEC_RENDERING_JS) \
$(EXAMPLES_JS)
@mkdir -p $(@D)
@echo "Running gjslint..."
@gjslint --jslint_error=all --custom_jsdoc_tags=event,fires,function,classdesc,api,observable --strict $?
@touch $@
$(BUILD_HOSTED_EXAMPLES_JS): $(BUILD_HOSTED)/examples/%.js: build/examples/%.js
@mkdir -p $(@D)
@python bin/split-example.py $< $(@D)
$(BUILD_HOSTED)/examples/loader.js: bin/loader_hosted_examples.js
@mkdir -p $(@D)
@cp $< $@
$(BUILD_HOSTED)/examples/%: build/examples/%
@mkdir -p $(@D)
@cp $< $@
$(BUILD_HOSTED)/build/ol.js: build/ol.js
@mkdir -p $(@D)
@cp $< $@
$(BUILD_HOSTED)/build/ol-debug.js: build/ol-debug.js
@mkdir -p $(@D)
@cp $< $@
$(BUILD_HOSTED)/css/ol.css: build/ol.css
@mkdir -p $(@D)
@cp $< $@
$(BUILD_HOSTED)/build/ol-deps.js: host-libraries
@mkdir -p $(@D)
@python $(CLOSURE_LIB)/closure/bin/build/depswriter.py \
--root_with_prefix "src ../../../ol" \
--root_with_prefix "build/ol.ext ../../../ol.ext" \
--root $(BUILD_HOSTED)/closure-library/closure/goog \
--root_with_prefix "$(BUILD_HOSTED)/closure-library/third_party ../../third_party" \
--output_file $@
build/timestamps/jshint-timestamp: $(SRC_JS) $(SPEC_JS) $(SPEC_RENDERING_JS) \
$(TASKS_JS) $(EXAMPLES_JS) \
examples/resources/common.js \
build/timestamps/node-modules-timestamp
@mkdir -p $(@D)
@echo "Running jshint..."
@./node_modules/.bin/jshint --verbose $?
@touch $@
build/timestamps/node-modules-timestamp: package.json
@mkdir -p $(@D)
npm install
@touch $@
build/ol.css: css/ol.css build/timestamps/node-modules-timestamp
@mkdir -p $(@D)
@echo "Running cleancss..."
@./node_modules/.bin/cleancss $< > $@
build/ol.js: config/ol.json $(SRC_JS) $(SRC_SHADER_JS) \
build/timestamps/node-modules-timestamp
@mkdir -p $(@D)
node tasks/build.js $< $@
@$(STAT_UNCOMPRESSED) $@
@cp $@ /tmp/
@gzip /tmp/ol.js
@$(STAT_COMPRESSED) /tmp/ol.js.gz
@rm /tmp/ol.js.gz
build/ol.js.map: config/ol.json $(SRC_JS) $(SRC_SHADER_JS) \
build/timestamps/node-modules-timestamp
@mkdir -p $(@D)
node tasks/build.js $< $@
build/ol-debug.js: config/ol-debug.json $(SRC_JS) $(SRC_SHADER_JS) \
build/timestamps/node-modules-timestamp
@mkdir -p $(@D)
node tasks/build.js $< $@
@$(STAT_UNCOMPRESSED) $@
@cp $@ /tmp/
@gzip /tmp/ol-debug.js
@$(STAT_COMPRESSED) /tmp/ol-debug.js.gz
@rm /tmp/ol-debug.js.gz
build/test_requires.js: $(SPEC_JS) $(SRC_JS)
@mkdir -p $(@D)
@node tasks/generate-requires.js $^ > $@
build/test_rendering_requires.js: $(SPEC_RENDERING_JS)
@mkdir -p $(@D)
@node tasks/generate-requires.js $^ > $@
%shader.js: %.glsl src/ol/webgl/shader.mustache bin/pyglslunit.py build/timestamps/node-modules-timestamp
@python bin/pyglslunit.py --input $< | ./node_modules/.bin/mustache - src/ol/webgl/shader.mustache > $@

View File

@@ -1,14 +1,30 @@
# OpenLayers 3 # OpenLayers 3
[![Travis CI Status](https://secure.travis-ci.org/openlayers/ol3.svg)](http://travis-ci.org/#!/openlayers/ol3) [![Travis CI Status](https://secure.travis-ci.org/openlayers/ol3.svg)](http://travis-ci.org/#!/openlayers/ol3)
[![Coverage Status](https://coveralls.io/repos/openlayers/ol3/badge.svg?branch=master)](https://coveralls.io/r/openlayers/ol3?branch=master)
Welcome to [OpenLayers 3](http://openlayers.org/)! [OpenLayers 3](http://openlayers.org/) is a high-performance, feature-packed library for creating interactive maps on the web.
## Examples ## Getting Started
Check out the [hosted examples](http://openlayers.org/en/master/examples/), the [workshop](http://openlayers.org/ol3-workshop/) or poke around the evolving [API docs](http://openlayers.org/en/master/apidoc/).
## Questions - Download the [latest release](http://openlayers.org/download/)
Please don't ask questions in the github issue tracker but use [stackoverflow with tag openlayers](http://stackoverflow.com/questions/tagged/openlayers) or [the mailing list](https://groups.google.com/forum/#!forum/ol3-dev) instead. - Install with npm: `npm install openlayers`
- Clone the repo: `git clone git@github.com:openlayers/ol3.git`
## Documentation
Check out the [hosted examples](http://openlayers.org/en/master/examples/), the [workshop](http://openlayers.org/workshop/) or [API docs](http://openlayers.org/en/master/apidoc/).
## Bugs
Please use the [GitHub issue tracker](https://github.com/openlayers/ol3/issues) for all bugs and feature requests. Before creating a new issue, do a quick search to see if the problem has been reported already.
## Contributing ## Contributing
Please see our guide on [contributing](CONTRIBUTING.md) if you're interested in getting involved. Please see our guide on [contributing](CONTRIBUTING.md) if you're interested in getting involved.
## Community
- Need help? Find it on [stackoverflow using the tag 'openlayers-3'](http://stackoverflow.com/questions/tagged/openlayers-3)
- Follow [@openlayers](https://twitter.com/openlayers) on Twitter
- Discuss with openlayers users on IRC in `#openlayers` at `chat.freenode`

File diff suppressed because it is too large Load Diff

193
bin/check-requires.py Normal file
View File

@@ -0,0 +1,193 @@
import os
import logging
import re
import sys
logging.basicConfig(format='%(asctime)s %(name)s: %(message)s',
level=logging.INFO)
logger = logging.getLogger('check-requires')
class Node(object):
def __init__(self):
self.present = False
self.children = {}
def _build_re(self, key):
if key == '*':
assert len(self.children) == 0
# We want to match `.doIt` but not `.SomeClass` or `.more.stuff`
return '(?=\\.[a-z]\\w*\\b(?!\\.))'
elif len(self.children) == 1:
child_key, child = next(self.children.iteritems())
child_re = child._build_re(child_key)
if child_key != '*':
child_re = '\\.' + child_re
if self.present:
return key + '(' + child_re + ')?'
else:
return key + child_re
elif self.children:
children_re = '(?:' + '|'.join(
('\\.' if k != '*' else '') + self.children[k]._build_re(k)
for k in sorted(self.children.keys())) + ')'
if self.present:
return key + children_re + '?'
else:
return key + children_re
else:
assert self.present
return key
def build_re(self, key):
return re.compile('\\b' + self._build_re(key) + '\\b')
def ifind(*paths):
"""ifind is an iterative version of os.walk, yielding all walked paths and
normalizing paths to use forward slashes."""
for path in paths:
for dirpath, dirnames, names in os.walk(path):
for name in names:
if os.sep == '/':
yield os.path.join(dirpath, name)
else:
yield '/'.join(dirpath.split(os.sep) + [name])
def _strip_comments(lines):
# FIXME this is a horribe hack, we should use a proper JavaScript parser
# here
in_multiline_comment = False
lineno = 0
for line in lines:
lineno += 1
if in_multiline_comment:
index = line.find('*/')
if index != -1:
in_multiline_comment = False
line = line[index + 2:]
if not in_multiline_comment:
line = re.sub(r'//[^\n]*', '', line)
line = re.sub(r'/\*.*?\*/', '', line)
index = line.find('/*')
if index != -1:
yield lineno, line[:index]
in_multiline_comment = True
else:
yield lineno, line
def check_requires(closure_lib, *filenames):
unused_count = 0
all_provides = set()
for filename in ifind(closure_lib):
if filename.endswith('.js'):
if not re.match(r'.*/closure/goog/', filename):
continue
# Skip goog.i18n because it contains so many modules that it causes
# the generated regular expression to exceed Python's limits
if re.match(r'.*/closure/goog/i18n/', filename):
continue
for line in open(filename, 'rU'):
m = re.match(r'goog.provide\(\'(.*)\'\);', line)
if m:
all_provides.add(m.group(1))
for filename in sorted(filenames):
require_linenos = {}
uses = set()
lines = open(filename, 'rU').readlines()
for lineno, line in _strip_comments(lines):
m = re.match(r'goog.provide\(\'(.*)\'\);', line)
if m:
all_provides.add(m.group(1))
continue
m = re.match(r'goog.require\(\'(.*)\'\);', line)
if m:
require_linenos[m.group(1)] = lineno
continue
ignore_linenos = require_linenos.values()
for lineno, line in enumerate(lines):
if lineno in ignore_linenos:
continue
for require in require_linenos.iterkeys():
if require in line:
uses.add(require)
for require in sorted(set(require_linenos.keys()) - uses):
logger.info('%s:%d: unused goog.require: %r' % (
filename, require_linenos[require], require))
unused_count += 1
all_provides.discard('ol')
all_provides.discard('ol.MapProperty')
root = Node()
for provide in all_provides:
node = root
for component in provide.split('.'):
if component not in node.children:
node.children[component] = Node()
node = node.children[component]
if component[0].islower():
# We've arrived at a namespace provide like `ol.foo`.
# In this case, we want to match uses like `ol.foo.doIt()` but
# not match things like `new ol.foo.SomeClass()`.
# For this purpose, we use the special wildcard key for the child.
node.children['*'] = Node()
else:
node.present = True
provide_res = [child.build_re(key)
for key, child in root.children.iteritems()]
missing_count = 0
for filename in sorted(filenames):
provides = set()
requires = set()
uses = set()
uses_linenos = {}
for lineno, line in _strip_comments(open(filename, 'rU')):
m = re.match(r'goog.provide\(\'(.*)\'\);', line)
if m:
provides.add(m.group(1))
continue
m = re.match(r'goog.require\(\'(.*)\'\);', line)
if m:
requires.add(m.group(1))
continue
while True:
for provide_re in provide_res:
m = provide_re.search(line)
if m:
uses.add(m.group())
uses_linenos[m.group()] = lineno
line = line[:m.start()] + line[m.end():]
break
else:
break
if filename == 'src/ol/renderer/layerrenderer.js':
uses.discard('ol.renderer.Map')
m = re.match(
r'src/ol/renderer/(\w+)/\1(\w*)layerrenderer\.js\Z', filename)
if m:
uses.discard('ol.renderer.Map')
uses.discard('ol.renderer.%s.Map' % (m.group(1),))
missing_requires = uses - requires - provides
if missing_requires:
for missing_require in sorted(missing_requires):
logger.info("%s:%d missing goog.require('%s')" %
(filename, uses_linenos[missing_require],
missing_require))
missing_count += 1
return (unused_count, missing_count)
if __name__ == "__main__":
unused_count, missing_count = check_requires(*sys.argv[1:])
if unused_count > 0 or missing_count > 0:
logger.error('%d unused goog.requires, %d missing goog.requires' %
(unused_count, missing_count))
sys.exit(1)

46
bin/check-whitespace.py Normal file
View File

@@ -0,0 +1,46 @@
import logging
import re
import sys
logging.basicConfig(format='%(asctime)s %(name)s: %(message)s',
level=logging.INFO)
logger = logging.getLogger('check-whitespace')
CR_RE = re.compile(r'\r')
LEADING_WHITESPACE_RE = re.compile(r'\s+')
TRAILING_WHITESPACE_RE = re.compile(r'\s+\n\Z')
NO_NEWLINE_RE = re.compile(r'[^\n]\Z')
ALL_WHITESPACE_RE = re.compile(r'\s+\Z')
def check_whitespace(*filenames):
errors = 0
for filename in sorted(filenames):
whitespace = False
for lineno, line in enumerate(open(filename, 'rU')):
if lineno == 0 and LEADING_WHITESPACE_RE.match(line):
logger.info('%s:%d: leading whitespace', filename, lineno + 1)
errors += 1
if CR_RE.search(line):
logger.info('%s:%d: carriage return character in line',
filename, lineno + 1)
errors += 1
if TRAILING_WHITESPACE_RE.search(line):
logger.info('%s:%d: trailing whitespace', filename, lineno + 1)
errors += 1
if NO_NEWLINE_RE.search(line):
logger.info('%s:%d: no newline at end of file', filename,
lineno + 1)
errors += 1
whitespace = ALL_WHITESPACE_RE.match(line)
if whitespace:
logger.info('%s: trailing whitespace at end of file', filename)
errors += 1
return errors
if __name__ == "__main__":
errors = check_whitespace(*sys.argv[1:])
if errors > 0:
logger.error('%d whitespace errors' % (errors,))
sys.exit(1)

View File

@@ -1,269 +0,0 @@
#!/usr/bin/env python
import sys
import os
import re
import time
from xml.dom.minidom import Document
try:
import xml.etree.ElementTree as ElementTree
except ImportError:
try:
import cElementTree as ElementTree # NOQA
except ImportError:
try:
import elementtree.ElementTree as ElementTree # NOQA
except ImportError:
import lxml.etree as ElementTree # NOQA
missing_deps = False
try:
import json
except ImportError:
try:
import simplejson as json # NOQA
except ImportError, E:
missing_deps = E
try:
from BeautifulSoup import BeautifulSoup
except ImportError, E:
missing_deps = E
feedName = "example-list.xml"
feedPath = "http://openlayers.github.io/ol3/master/examples/"
def getListOfExamples(relPath):
"""
returns list of .html filenames within a given path - excludes
index.html
"""
examples = os.listdir(relPath)
examples = [example for example in examples if
example.endswith('.html') and example != "index.html"]
return examples
def getExampleHtml(path):
"""
returns html of a specific example
"""
print '.',
f = open(path)
html = f.read()
f.close()
return html
def extractById(soup, tagId, value=None):
"""
returns full contents of a particular tag id
"""
beautifulTag = soup.find(id=tagId)
if beautifulTag:
if beautifulTag.contents:
value = str(beautifulTag.renderContents()).strip()
value = value.replace('\t', '')
value = value.replace('\n', '')
return value
def getRelatedClasses(html):
"""
parses the html, and returns a list of all OpenLayers Classes
used within (ie what parts of OL the javascript uses).
"""
rawstr = r'''(?P<class>ol\..*?)\('''
return re.findall(rawstr, html)
def parseHtml(html, ids):
"""
returns dictionary of items of interest
"""
soup = BeautifulSoup(html)
d = {}
for tagId in ids:
d[tagId] = extractById(soup, tagId)
#classes should eventually be parsed from docs - not automatically created.
classes = getRelatedClasses(html)
d['classes'] = classes
return d
def getGitInfo(exampleDir, exampleName):
orig = os.getcwd()
os.chdir(exampleDir)
h = os.popen("git log -n 1 --pretty=format:'%an|%ai' " + exampleName)
os.chdir(orig)
log = h.read()
h.close()
d = {}
if log:
parts = log.split("|")
d["author"] = parts[0]
# compensate for spaces in git log time
td = parts[1].split(" ")
td.insert(1, "T")
d["date"] = "".join(td)
else:
d["author"] = ""
d["date"] = ""
return d
def createFeed(examples):
doc = Document()
atomuri = "http://www.w3.org/2005/Atom"
feed = doc.createElementNS(atomuri, "feed")
feed.setAttribute("xmlns", atomuri)
title = doc.createElementNS(atomuri, "title")
title.appendChild(doc.createTextNode("OpenLayers Examples"))
feed.appendChild(title)
link = doc.createElementNS(atomuri, "link")
link.setAttribute("rel", "self")
link.setAttribute("href", feedPath + feedName)
modtime = time.strftime("%Y-%m-%dT%I:%M:%SZ", time.gmtime())
id = doc.createElementNS(atomuri, "id")
id.appendChild(doc.createTextNode(
"%s%s#%s" % (feedPath, feedName, modtime)))
feed.appendChild(id)
updated = doc.createElementNS(atomuri, "updated")
updated.appendChild(doc.createTextNode(modtime))
feed.appendChild(updated)
examples.sort(key=lambda x: x["modified"])
for example in sorted(examples, key=lambda x: x["modified"], reverse=True):
entry = doc.createElementNS(atomuri, "entry")
title = doc.createElementNS(atomuri, "title")
title.appendChild(doc.createTextNode(example["title"] or
example["example"]))
entry.appendChild(title)
tags = doc.createElementNS(atomuri, "tags")
tags.appendChild(doc.createTextNode(example["tags"] or
example["example"]))
entry.appendChild(tags)
link = doc.createElementNS(atomuri, "link")
link.setAttribute("href", "%s%s" % (feedPath, example["example"]))
entry.appendChild(link)
summary = doc.createElementNS(atomuri, "summary")
summary.appendChild(doc.createTextNode(example["shortdesc"] or
example["example"]))
entry.appendChild(summary)
updated = doc.createElementNS(atomuri, "updated")
updated.appendChild(doc.createTextNode(example["modified"]))
entry.appendChild(updated)
author = doc.createElementNS(atomuri, "author")
name = doc.createElementNS(atomuri, "name")
name.appendChild(doc.createTextNode(example["author"]))
author.appendChild(name)
entry.appendChild(author)
id = doc.createElementNS(atomuri, "id")
id.appendChild(doc.createTextNode("%s%s#%s" % (feedPath,
example["example"],
example["modified"])))
entry.appendChild(id)
feed.appendChild(entry)
doc.appendChild(feed)
return doc
def wordIndex(examples):
"""
Create an inverted index based on words in title and shortdesc. Keys are
lower cased words. Values are dictionaries with example index keys and
count values.
"""
index = {}
unword = re.compile("\\W+")
keys = ["shortdesc", "title", "tags"]
for i in range(len(examples)):
for key in keys:
text = examples[i][key]
if text:
words = unword.split(text)
for word in words:
if word:
word = word.lower()
if word in index:
if i in index[word]:
index[word][i] += 1
else:
index[word][i] = 1
else:
index[word] = {i: 1}
return index
if __name__ == "__main__":
if missing_deps:
print """This script requires json or simplejson and BeautifulSoup.
You don't have them. \n(%s)""" % E
sys.exit()
if len(sys.argv) == 3:
inExampleDir = sys.argv[1]
outExampleDir = sys.argv[2]
else:
inExampleDir = "../examples"
outExampleDir = "../examples"
outFile = open(os.path.join(outExampleDir, "example-list.js"), "w")
print 'Reading examples from %s and writing out to %s' % (inExampleDir,
outFile.name)
exampleList = []
docIds = ['title', 'shortdesc', 'tags']
examples = getListOfExamples(inExampleDir)
modtime = time.strftime("%Y-%m-%dT%I:%M:%SZ", time.gmtime())
for example in examples:
path = os.path.join(inExampleDir, example)
html = getExampleHtml(path)
tagvalues = parseHtml(html, docIds)
tagvalues['example'] = example
# add in author/date info
d = getGitInfo(inExampleDir, example)
tagvalues["author"] = d["author"] or "anonymous"
tagvalues["modified"] = d["date"] or modtime
tagvalues['link'] = example
exampleList.append(tagvalues)
print
exampleList.sort(key=lambda x: x['example'].lower())
index = wordIndex(exampleList)
json = json.dumps({"examples": exampleList, "index": index})
# Give the json a global variable we can use in our js.
# This should be replaced or made optional.
json = 'var info=' + json + ';'
outFile.write(json)
outFile.close()
outFeedPath = os.path.join(outExampleDir, feedName)
print "writing feed to %s " % outFeedPath
atom = open(outFeedPath, 'w')
doc = createFeed(exampleList)
atom.write(doc.toxml())
atom.close()
print 'complete'

View File

@@ -6,8 +6,8 @@
* loads Closure Library's base.js, ol-deps.js, the example's "goog.require" * loads Closure Library's base.js, ol-deps.js, the example's "goog.require"
* script, and the example's script in "development" mode. * script, and the example's script in "development" mode.
* *
* The ol.js and ol-deps.js scripts are built by OL3's build.py script. * The ol.js and ol-deps.js scripts are built using ol3's Makefile. They are
* They are located in the ../build/ directory, relative to this script. * located in the ../build/ directory, relative to this script.
* *
* The script must be named loader.js. * The script must be named loader.js.
* *

View File

@@ -1,10 +1,10 @@
#!/usr/bin/python #!/usr/bin/python
from optparse import OptionParser from optparse import OptionParser
import json
import re import re
import sys import sys
import pystache
ESCAPE_SEQUENCE = { ESCAPE_SEQUENCE = {
@@ -42,7 +42,6 @@ def main(argv):
option_parser = OptionParser() option_parser = OptionParser()
option_parser.add_option('--input') option_parser.add_option('--input')
option_parser.add_option('--output') option_parser.add_option('--output')
option_parser.add_option('--template')
options, args = option_parser.parse_args(argv[1:]) options, args = option_parser.parse_args(argv[1:])
context = {} context = {}
@@ -114,7 +113,7 @@ def main(argv):
output = open(options.output, 'wb') output = open(options.output, 'wb')
else: else:
output = sys.stdout output = sys.stdout
output.write(pystache.render(open(options.template, 'rb').read(), context)) json.dump(context, output)
if __name__ == '__main__': if __name__ == '__main__':

39
bin/split-example.py Normal file
View File

@@ -0,0 +1,39 @@
import os
import re
import sys
def split_example_file(example, dst_dir):
lines = open(example, 'rU').readlines()
target_lines = []
target_require_lines = []
found_requires = False
found_code = False
for line in lines:
m = re.match(r'goog.require\(\'(.*)\'\);', line)
if m:
found_requires = True
target_require_lines.append(line)
elif found_requires:
if found_code or line not in ('\n', '\r\n'):
found_code = True
target_lines.append(line)
target = open(
os.path.join(dst_dir, os.path.basename(example)), 'wb')
target_require = open(
os.path.join(dst_dir, os.path.basename(example)
.replace('.js', '-require.js')),
'wb')
target.writelines(target_lines)
target.close()
target_require.writelines(target_require_lines)
target_require.close()
if __name__ == '__main__':
split_example_file(*sys.argv[1:])

View File

@@ -1,2 +0,0 @@
@echo off
%SystemDrive%\Python27\python.exe build.py %*

811
build.py
View File

@@ -1,811 +0,0 @@
#!/usr/bin/env python
from cStringIO import StringIO
import glob
import gzip
import json
import multiprocessing
import os
import re
import shutil
import sys
from pake import Target
from pake import ifind, main, output, rule, target, variables, virtual, which
from Queue import Queue
from threading import Thread
class ThreadPool:
"""A basic pool of worker threads"""
class Worker(Thread):
def __init__(self, tasks):
Thread.__init__(self)
self.tasks = tasks
self.daemon = True # threads will be killed on exit
self.start()
def run(self):
while True:
# block until a task is ready to be done
function, args, kargs = self.tasks.get()
try:
function(*args, **kargs)
except:
print("ERROR")
for count, thing in enumerate(args):
print '{0}. {1}'.format(count, thing)
print(sys.exc_info()[0])
print("ERROR")
self.tasks.errors = True
self.tasks.task_done()
def __init__(self, num_threads = multiprocessing.cpu_count() + 1):
self.tasks = Queue(num_threads)
self.tasks.errors = False
# create num_threads Workers, by default the number of CPUs + 1
for _ in range(num_threads): self.Worker(self.tasks)
def add_task(self, function, *args, **kargs):
self.tasks.put((function, args, kargs))
def wait_completion(self):
# wait for the queue to be empty
self.tasks.join()
return self.tasks.errors
if sys.platform == 'win32':
win = {
'CLEANCSS': './node_modules/.bin/cleancss',
'GIT': 'git.exe',
'GJSLINT': 'gjslint.exe',
'JSDOC': './node_modules/.bin/jsdoc',
'JSHINT': './node_modules/.bin/jshint',
'PYTHON': 'python.exe',
'PHANTOMJS': './node_modules/.bin/phantomjs'
}
sys_dir = os.environ.get('SYSTEMDRIVE')
program_files = os.environ.get('PROGRAMFILES')
if not which(win['GIT']):
win['GIT'] = os.path.join(program_files, 'Git', 'cmd', 'git.exe')
if not which(win['GIT']):
win['GIT'] = os.path.join(program_files, 'Git', 'bin', 'git.exe')
if not which(win['PYTHON']):
win['PYTHON'] = os.path.join(sys_dir, 'Python27', 'python.exe')
if not which(win['GJSLINT']):
win['GJSLINT'] = os.path.join(sys_dir, 'Python27', 'Scripts', 'gjslint.exe')
if not which(win['PHANTOMJS']):
win['PHANTOMJS'] = 'phantomjs.exe'
if not which(win['PHANTOMJS']):
win['PHANTOMJS'] = os.path.join(sys_dir, 'phantomjs-1.9.7-windows', 'phantomjs.exe')
if not which(win['JSDOC']):
win['JSDOC'] = os.path.join(program_files, 'jsdoc3', 'jsdoc.cmd')
for program, path in win.iteritems():
setattr(variables, program, path)
else:
variables.CLEANCSS = './node_modules/.bin/cleancss'
variables.GIT = 'git'
variables.GJSLINT = 'gjslint'
variables.JSHINT = './node_modules/.bin/jshint'
variables.JSDOC = './node_modules/.bin/jsdoc'
variables.PYTHON = 'python'
variables.PHANTOMJS = './node_modules/.bin/phantomjs'
variables.BRANCH = output(
'%(GIT)s', 'rev-parse', '--abbrev-ref', 'HEAD').strip()
EXECUTABLES = [variables.CLEANCSS, variables.GIT, variables.GJSLINT,
variables.JSDOC, variables.JSHINT, variables.PYTHON,
variables.PHANTOMJS]
EXAMPLES = [path
for path in ifind('examples')
if path.endswith('.html')
if path != 'examples/index.html']
EXAMPLES_SRC = [path
for path in ifind('examples')
if path.endswith('.js')
if not path.endswith('.combined.js')
if path != 'examples/Jugl.js'
if path != 'examples/example-list.js']
EXAMPLES_JSON = ['build/' + example.replace('.html', '.json')
for example in EXAMPLES]
EXAMPLES_COMBINED = ['build/' + example.replace('.html', '.combined.js')
for example in EXAMPLES]
GLSL_SRC = [path
for path in ifind('src')
if path.endswith('.glsl')]
JSDOC_SRC = [path
for path in ifind('src')
if path.endswith('.jsdoc')]
SHADER_SRC = [path.replace('.glsl', 'shader.js')
for path in GLSL_SRC]
SPEC = [path
for path in ifind('test/spec')
if path.endswith('.js')]
TASKS = [path
for path in ifind('tasks')
if path.endswith('.js')]
SRC = [path
for path in ifind('src/ol')
if path.endswith('.js')
if path not in SHADER_SRC]
NPM_INSTALL = 'build/npm-install-timestamp'
def report_sizes(t):
stringio = StringIO()
gzipfile = gzip.GzipFile(t.name, 'w', 9, stringio)
with open(t.name, 'rb') as f:
shutil.copyfileobj(f, gzipfile)
gzipfile.close()
rawsize = os.stat(t.name).st_size
gzipsize = len(stringio.getvalue())
savings = '{0:.2%}'.format((rawsize - gzipsize)/float(rawsize))
t.info('uncompressed: %8d bytes', rawsize)
t.info(' compressed: %8d bytes, (saved %s)', gzipsize, savings)
virtual('default', 'build')
virtual('ci', 'lint', 'build', 'test',
'build/examples/all.combined.js', 'check-examples', 'apidoc')
virtual('build', 'build/ol.css', 'build/ol.js', 'build/ol-debug.js',
'build/ol.js.map')
virtual('check', 'lint', 'build/ol.js', 'test')
virtual('todo', 'fixme')
@target(NPM_INSTALL, 'package.json')
def npm_install(t):
t.run('npm', 'install')
t.touch()
@target('build/ol.css', 'css/ol.css', NPM_INSTALL)
def build_ol_css(t):
t.output('%(CLEANCSS)s', 'css/ol.css')
def _build_js(t):
t.run('node', 'tasks/build.js', 'config/ol.json', 'build/ol.js')
@target('build/ol.js', SRC, SHADER_SRC, 'config/ol.json', NPM_INSTALL)
def build_ol_js(t):
_build_js(t)
report_sizes(t)
@target('build/ol.js.map', SRC, SHADER_SRC, 'config/ol.json', NPM_INSTALL)
def build_ol_js_map(t):
_build_js(t)
@target('build/ol-debug.js', SRC, SHADER_SRC, 'config/ol-debug.json',
NPM_INSTALL)
def build_ol_debug_js(t):
t.run('node', 'tasks/build.js', 'config/ol-debug.json', 'build/ol-debug.js')
report_sizes(t)
for glsl_src in GLSL_SRC:
def shader_src_helper(glsl_src):
@target(glsl_src.replace('.glsl', 'shader.js'), glsl_src,
'src/ol/webgl/shader.mustache', 'bin/pyglslunit.py')
def shader_src(t):
t.run('%(PYTHON)s', 'bin/pyglslunit.py',
'--input', glsl_src,
'--template', 'src/ol/webgl/shader.mustache',
'--output', t.name)
shader_src_helper(glsl_src)
@target('build/test/requireall.js', SPEC)
def build_test_requireall_js(t):
requires = set()
for dependency in t.dependencies:
for line in open(dependency, 'rU'):
match = re.match(r'goog\.provide\(\'(.*)\'\);', line)
if match:
requires.add(match.group(1))
with open(t.name, 'wb') as f:
for require in sorted(requires):
f.write('goog.require(\'%s\');\n' % (require,))
virtual('build-examples', 'examples', 'build/examples/all.combined.js',
EXAMPLES_COMBINED)
virtual('examples', 'examples/example-list.xml', EXAMPLES_JSON)
@target('examples/example-list.xml', 'examples/example-list.js')
def examples_examples_list_xml(t):
t.touch() # already generated by bin/exampleparser.py
@target('examples/example-list.js', 'bin/exampleparser.py', EXAMPLES)
def examples_examples_list_js(t):
t.run('%(PYTHON)s', 'bin/exampleparser.py', 'examples', 'examples')
@target('build/examples/all.combined.js', 'build/examples/all.js',
SRC, SHADER_SRC, 'config/examples-all.json', NPM_INSTALL)
def build_examples_all_combined_js(t):
t.run('node', 'tasks/build.js', 'config/examples-all.json',
'build/examples/all.combined.js')
report_sizes(t)
@target('build/examples/all.js', EXAMPLES_SRC)
def build_examples_all_js(t):
t.output('%(PYTHON)s', 'bin/combine-examples.py', t.dependencies)
@rule(r'\Abuild/examples/(?P<id>.*).json\Z')
def examples_star_json(name, match):
def action(t):
# When compiling the ol3 code and the application code together it is
# better to use oli.js and olx.js files as "input" files rather than
# "externs" files. Indeed, externs prevent renaming, which is neither
# necessary nor desirable in this case.
#
# oli.js and olx.js do not provide or require namespaces (using
# "goog.provide" or "goog.require"). For that reason, if they are
# specified as input files through the "src" property, then
# closure-util will exclude them when creating the dependencies graph.
# So the compile "js" property is used instead. With that property the
# oli.js and olx.js files are passed directly to the compiler. And by
# setting "manage_closure_dependencies" to "true" the compiler will not
# exclude them from its dependencies graph.
content = json.dumps({
"exports": [],
"src": [
"src/**/*.js",
"build/ol.ext/*.js",
"examples/%(id)s.js" % match.groupdict()],
"compile": {
"js": [
"externs/olx.js",
"externs/oli.js",
],
"externs": [
"externs/bingmaps.js",
"externs/bootstrap.js",
"externs/closure-compiler.js",
"externs/example.js",
"externs/fastclick.js",
"externs/geojson.js",
"externs/jquery-1.9.js",
"externs/proj4js.js",
"externs/tilejson.js",
"externs/topojson.js",
"externs/vbarray.js"
],
"define": [
"goog.array.ASSUME_NATIVE_FUNCTIONS=true",
"goog.dom.ASSUME_STANDARDS_MODE=true",
"goog.json.USE_NATIVE_JSON=true",
"goog.DEBUG=false"
],
"jscomp_error": [
"accessControls",
"ambiguousFunctionDecl",
"checkDebuggerStatement",
"checkEventfulObjectDisposal",
"checkProvides",
"checkRegExp",
"checkStructDictInheritance",
"checkTypes",
"checkVars",
"const",
"constantProperty",
"deprecated",
"duplicate",
"duplicateMessage",
"es3",
"es5Strict",
"externsValidation",
"fileoverviewTags",
"globalThis",
"internetExplorerChecks",
"invalidCasts",
"misplacedTypeAnnotation",
"missingProperties",
"nonStandardJsDocs",
"strictModuleDepCheck",
"suspiciousCode",
"typeInvalidation",
"tweakValidation",
"undefinedNames",
"undefinedVars",
"uselessCode",
"violatedModuleDep",
"visibility"
],
"jscomp_off": [
"unknownDefines"
],
"extra_annotation_name": [
"api", "observable"
],
"compilation_level": "ADVANCED",
"warning_level": "VERBOSE",
"output_wrapper": "(function(){%output%})();",
"use_types_for_optimization": True,
"manage_closure_dependencies": True
}
})
with open(t.name, 'wb') as f:
f.write(content)
return Target(name, action=action,
dependencies=[__file__, NPM_INSTALL])
@rule(r'\Abuild/examples/(?P<id>.*).combined.js\Z')
def examples_star_combined_js(name, match):
def action(t):
config = 'build/examples/%(id)s.json' % match.groupdict()
t.run('node', 'tasks/build.js', config, name)
report_sizes(t)
dependencies = [SRC, SHADER_SRC,
'examples/%(id)s.js' % match.groupdict(),
'build/examples/%(id)s.json' % match.groupdict(),
NPM_INSTALL]
return Target(name, action=action, dependencies=dependencies)
@target('serve', 'examples', NPM_INSTALL)
def serve(t):
t.run('node', 'tasks/serve.js')
virtual('lint', 'build/lint-timestamp', 'build/check-requires-timestamp',
'build/check-whitespace-timestamp', 'jshint')
@target('build/lint-timestamp', SRC, EXAMPLES_SRC, SPEC, precious=True)
def build_lint_src_timestamp(t):
t.run('%(GJSLINT)s',
'--jslint_error=all',
'--custom_jsdoc_tags=event,fires,function,classdesc,api,observable',
'--strict',
t.newer(t.dependencies))
t.touch()
virtual('jshint', 'build/jshint-timestamp')
@target('build/jshint-timestamp', SRC, EXAMPLES_SRC, SPEC, TASKS,
NPM_INSTALL, precious=True)
def build_jshint_timestamp(t):
t.run(variables.JSHINT, '--verbose', t.newer(t.dependencies))
t.touch()
def _strip_comments(lines):
# FIXME this is a horribe hack, we should use a proper JavaScript parser
# here
in_multiline_comment = False
lineno = 0
for line in lines:
lineno += 1
if in_multiline_comment:
index = line.find('*/')
if index != -1:
in_multiline_comment = False
line = line[index + 2:]
if not in_multiline_comment:
line = re.sub(r'//[^\n]*', '', line)
line = re.sub(r'/\*.*?\*/', '', line)
index = line.find('/*')
if index != -1:
yield lineno, line[:index]
in_multiline_comment = True
else:
yield lineno, line
@target('build/check-requires-timestamp', SRC, EXAMPLES_SRC, SHADER_SRC, SPEC)
def build_check_requires_timestamp(t):
unused_count = 0
all_provides = set()
closure_lib_path = output('node', '-e',
'process.stdout.write(require("closure-util").getLibraryPath())')
for filename in ifind(closure_lib_path):
if filename.endswith('.js'):
if not re.match(r'.*/closure/goog/', filename):
continue
# Skip goog.i18n because it contains so many modules that it causes
# the generated regular expression to exceed Python's limits
if re.match(r'.*/closure/goog/i18n/', filename):
continue
for line in open(filename, 'rU'):
m = re.match(r'goog.provide\(\'(.*)\'\);', line)
if m:
all_provides.add(m.group(1))
for filename in sorted(t.dependencies):
require_linenos = {}
uses = set()
lines = open(filename, 'rU').readlines()
for lineno, line in _strip_comments(lines):
m = re.match(r'goog.provide\(\'(.*)\'\);', line)
if m:
all_provides.add(m.group(1))
continue
m = re.match(r'goog.require\(\'(.*)\'\);', line)
if m:
require_linenos[m.group(1)] = lineno
continue
ignore_linenos = require_linenos.values()
for lineno, line in enumerate(lines):
if lineno in ignore_linenos:
continue
for require in require_linenos.iterkeys():
if require in line:
uses.add(require)
for require in sorted(set(require_linenos.keys()) - uses):
t.info('%s:%d: unused goog.require: %r' % (
filename, require_linenos[require], require))
unused_count += 1
all_provides.discard('ol')
all_provides.discard('ol.MapProperty')
class Node(object):
def __init__(self):
self.present = False
self.children = {}
def _build_re(self, key):
if key == '*':
assert len(self.children) == 0
# We want to match `.doIt` but not `.SomeClass` or `.more.stuff`
return '(?=\\.[a-z]\\w*\\b(?!\\.))'
elif len(self.children) == 1:
child_key, child = next(self.children.iteritems())
child_re = child._build_re(child_key)
if child_key != '*':
child_re = '\\.' + child_re
if self.present:
return key + '(' + child_re + ')?'
else:
return key + child_re
elif self.children:
children_re = '(?:' + '|'.join(
('\\.' if k != '*' else '') + self.children[k]._build_re(k)
for k in sorted(self.children.keys())) + ')'
if self.present:
return key + children_re + '?'
else:
return key + children_re
else:
assert self.present
return key
def build_re(self, key):
return re.compile('\\b' + self._build_re(key) + '\\b')
root = Node()
for provide in all_provides:
node = root
for component in provide.split('.'):
if component not in node.children:
node.children[component] = Node()
node = node.children[component]
if component[0].islower():
# We've arrived at a namespace provide like `ol.foo`.
# In this case, we want to match uses like `ol.foo.doIt()` but
# not match things like `new ol.foo.SomeClass()`.
# For this purpose, we use the special wildcard key for the child.
node.children['*'] = Node()
else:
node.present = True
provide_res = [child.build_re(key)
for key, child in root.children.iteritems()]
missing_count = 0
for filename in sorted(t.dependencies):
provides = set()
requires = set()
uses = set()
uses_linenos = {}
for lineno, line in _strip_comments(open(filename, 'rU')):
m = re.match(r'goog.provide\(\'(.*)\'\);', line)
if m:
provides.add(m.group(1))
continue
m = re.match(r'goog.require\(\'(.*)\'\);', line)
if m:
requires.add(m.group(1))
continue
while True:
for provide_re in provide_res:
m = provide_re.search(line)
if m:
uses.add(m.group())
uses_linenos[m.group()] = lineno
line = line[:m.start()] + line[m.end():]
break
else:
break
if filename == 'src/ol/renderer/layerrenderer.js':
uses.discard('ol.renderer.Map')
m = re.match(
r'src/ol/renderer/(\w+)/\1(\w*)layerrenderer\.js\Z', filename)
if m:
uses.discard('ol.renderer.Map')
uses.discard('ol.renderer.%s.Map' % (m.group(1),))
missing_requires = uses - requires - provides
if missing_requires:
for missing_require in sorted(missing_requires):
t.info("%s:%d missing goog.require('%s')" %
(filename, uses_linenos[missing_require], missing_require))
missing_count += 1
if unused_count or missing_count:
t.error('%d unused goog.requires, %d missing goog.requires' %
(unused_count, missing_count))
t.touch()
@target('build/check-whitespace-timestamp', SRC, EXAMPLES_SRC,
SPEC, JSDOC_SRC, precious=True)
def build_check_whitespace_timestamp(t):
CR_RE = re.compile(r'\r')
LEADING_WHITESPACE_RE = re.compile(r'\s+')
TRAILING_WHITESPACE_RE = re.compile(r'\s+\n\Z')
NO_NEWLINE_RE = re.compile(r'[^\n]\Z')
ALL_WHITESPACE_RE = re.compile(r'\s+\Z')
errors = 0
for filename in sorted(t.newer(t.dependencies)):
whitespace = False
for lineno, line in enumerate(open(filename, 'rU')):
if lineno == 0 and LEADING_WHITESPACE_RE.match(line):
t.info('%s:%d: leading whitespace', filename, lineno + 1)
errors += 1
if CR_RE.search(line):
t.info('%s:%d: carriage return character in line', filename, lineno + 1)
errors += 1
if TRAILING_WHITESPACE_RE.search(line):
t.info('%s:%d: trailing whitespace', filename, lineno + 1)
errors += 1
if NO_NEWLINE_RE.search(line):
t.info('%s:%d: no newline at end of file', filename, lineno + 1)
errors += 1
whitespace = ALL_WHITESPACE_RE.match(line)
if whitespace:
t.info('%s: trailing whitespace at end of file', filename)
errors += 1
if errors:
t.error('%d whitespace errors' % (errors,))
t.touch()
virtual('apidoc', 'build/jsdoc-%(BRANCH)s-timestamp' % vars(variables))
@target('build/jsdoc-%(BRANCH)s-timestamp' % vars(variables), 'host-resources',
SRC, SHADER_SRC, ifind('config/jsdoc/api/template'),
NPM_INSTALL)
def jsdoc_BRANCH_timestamp(t):
t.run('%(JSDOC)s', 'config/jsdoc/api/index.md',
'-c', 'config/jsdoc/api/conf.json',
'-d', 'build/hosted/%(BRANCH)s/apidoc')
t.touch()
def split_example_file(example, dst_dir):
lines = open(example, 'rU').readlines()
target_lines = []
target_require_lines = []
found_requires = False
found_code = False
for line in lines:
m = re.match(r'goog.require\(\'(.*)\'\);', line)
if m:
found_requires = True
target_require_lines.append(line)
elif found_requires:
if found_code or line not in ('\n', '\r\n'):
found_code = True
target_lines.append(line)
target = open(
os.path.join(dst_dir, os.path.basename(example)), 'wb')
target_require = open(
os.path.join(dst_dir, os.path.basename(example)
.replace('.js', '-require.js')),
'wb')
target.writelines(target_lines)
target.close()
target_require.writelines(target_require_lines)
target_require.close()
@target('host-resources', phony=True)
def host_resources(t):
resources_dir = 'build/hosted/%(BRANCH)s/resources'
t.rm_rf(resources_dir)
t.cp_r('resources', resources_dir)
@target('host-examples', 'build', 'host-resources', 'examples', phony=True)
def host_examples(t):
examples_dir = 'build/hosted/%(BRANCH)s/examples'
build_dir = 'build/hosted/%(BRANCH)s/build'
css_dir = 'build/hosted/%(BRANCH)s/css'
closure_lib_path = output('node', '-e',
'process.stdout.write(require("closure-util").getLibraryPath())')
t.rm_rf(examples_dir)
t.makedirs(examples_dir)
t.rm_rf(build_dir)
t.makedirs(build_dir)
t.rm_rf(css_dir)
t.makedirs(css_dir)
t.cp(EXAMPLES, examples_dir)
for example in [path.replace('.html', '.js') for path in EXAMPLES]:
split_example_file(example, examples_dir % vars(variables))
t.cp_r('examples/data', examples_dir + '/data')
t.cp('bin/loader_hosted_examples.js', examples_dir + '/loader.js')
t.cp('build/ol.js', 'build/ol-debug.js', build_dir)
t.cp('build/ol.css', css_dir)
t.cp('examples/index.html', 'examples/example-list.js',
'examples/example-list.xml', 'examples/Jugl.js', examples_dir)
t.rm_rf('build/hosted/%(BRANCH)s/closure-library')
t.cp_r(closure_lib_path, 'build/hosted/%(BRANCH)s/closure-library')
t.rm_rf('build/hosted/%(BRANCH)s/ol')
t.makedirs('build/hosted/%(BRANCH)s/ol')
t.cp_r('src/ol', 'build/hosted/%(BRANCH)s/ol/ol')
t.rm_rf('build/hosted/%(BRANCH)s/ol.ext')
t.cp_r('build/ol.ext', 'build/hosted/%(BRANCH)s/ol.ext')
t.run('%(PYTHON)s', closure_lib_path + '/closure/bin/build/depswriter.py',
'--root_with_prefix', 'src ../../../ol',
'--root_with_prefix', 'build/ol.ext ../../../ol.ext',
'--root', 'build/hosted/%(BRANCH)s/closure-library/closure/goog',
'--root_with_prefix', 'build/hosted/%(BRANCH)s/closure-library/'
'third_party ../../third_party',
'--output_file', 'build/hosted/%(BRANCH)s/build/ol-deps.js')
@target('check-examples', 'host-examples', phony=True)
def check_examples(t):
examples = ['build/hosted/%(BRANCH)s/' + e
for e in EXAMPLES
if not open(e.replace('.html', '.js'), 'rU').readline().startswith('// NOCOMPILE')]
all_examples = [e + '?mode=advanced' for e in examples]
# Run the examples checks in a pool of threads
pool = ThreadPool()
for example in all_examples:
pool.add_task(t.run, '%(PHANTOMJS)s', 'bin/check-example.js', example)
errors = pool.wait_completion()
if errors:
sys.exit(1)
@target('test', NPM_INSTALL, phony=True)
def test(t):
t.run('node', 'tasks/test.js')
@target('fixme', phony=True)
def find_fixme(t):
regex = re.compile('FIXME|TODO')
matches = dict()
totalcount = 0
for filename in SRC:
f = open(filename, 'r')
for lineno, line in enumerate(f):
if regex.search(line):
if (filename not in matches):
matches[filename] = list()
matches[filename].append('#%-10d %s' % (
lineno + 1, line.strip()))
totalcount += 1
f.close()
for filename in matches:
num_matches = len(matches[filename])
noun = 'matches' if num_matches > 1 else 'match'
print ' %s has %d %s:' % (filename, num_matches, noun)
for match in matches[filename]:
print ' %s' % (match,)
print
print 'A total of %d TODO/FIXME(s) were found' % (totalcount,)
@target('reallyclean')
def reallyclean(t):
"""Removes untracked files and folders from previous builds."""
# -X => only clean up files that are usually ignored e.g.
# through .gitignore
# -d => also consider directories for deletion
# -f => if git configuration variable clean.requireForce != false,
# git clean will refuse to run unless given -f or -n.
t.run('%(GIT)s', 'clean', '-X', '-d', '-f', '.')
@target('checkdeps')
def check_dependencies(t):
for exe in EXECUTABLES:
status = 'present' if which(exe) else 'MISSING'
print 'Program "%s" seems to be %s.' % (exe, status)
print 'For certain targets all above programs need to be present.'
@target('help')
def display_help(t):
print '''
build.py - The OpenLayers 3 build script.
Usage:
./build.py [options] [target] (on Unix-based machines)
<python-executable.exe> build.py [options] [target] (on Windows machines)
There is one option:
-c - Cleans up the repository from previous builds.
The most common targets are:
serve - Serves files, on port 3000.
lint - Runs gjslint on all sourcefiles to enforce specific syntax.
build - Builds singlefile versions of OpenLayers JavaScript and
CSS. This is also the default build target which runs when
no target is specified.
test - Runs the testsuite and displays the results.
check - Runs the lint-target, builds some OpenLayers files, and
then runs test. Many developers call this target often
while working on the code.
help - Shows this help.
Other less frequently used targets are:
apidoc - Builds the API-Documentation using JSDoc3.
ci - Builds all examples in various modes and usually takes a
long time to finish. This target calls the following
targets: lint, build, build-all, test, build-examples,
check-examples and apidoc. This is the target run on
Travis CI.
reallyclean - Remove untracked files from the repository.
checkdeps - Checks whether all required development software is
installed on your machine.
fixme - Will print a list of parts of the code that are marked
with either TODO or FIXME.
todo - This is an alias for the fixme-target (see above).
If no target is given, the build-target will be executed.
The above list is not complete, please see the source code for not-mentioned
and only seldom called targets.
'''
if __name__ == '__main__':
main()

View File

@@ -1,5 +1,352 @@
## Upgrade notes ## Upgrade notes
### v3.11.0
#### `ol.format.KML` changes
KML icons are scaled 50% so that the rendering better matches Google Earth rendering.
If a KML placemark has a name and is a point, an `ol.style.Text` is created with the name displayed to the right of the icon (if there is an icon).
This can be controlled with the showPointNames option which defaults to true.
To disable rendering of the point names for placemarks, use the option:
new ol.format.KML({ showPointNames: false });
#### `ol.interaction.DragBox` and `ol.interaction.DragZoom` changes
Styling is no longer done with `ol.Style`, but with pure CSS. The `style` constructor option is no longer required, and no longer available. Instead, there is a `className` option for the CSS selector. The default for `ol.interaction.DragBox` is `ol-dragbox`, and `ol.interaction.DragZoom` uses `ol-dragzoom`. If you previously had
```js
new ol.interaction.DragZoom({
style: new ol.style.Style({
stroke: new ol.style.Stroke({
color: 'red',
width: 3
}),
fill: new ol.style.Fill({
color: [255, 255, 255, 0.4]
})
})
});
```
you'll now just need
```js
new ol.interaction.DragZoom();
```
but with additional css:
```css
.ol-dragzoom {
border-color: red;
border-width: 3px;
background-color: rgba(255,255,255,0.4);
}
```
#### Removal of `ol.source.TileVector`
With the introduction of true vector tile support, `ol.source.TileVector` becomes obsolete. Change your code to use `ol.layer.VectorTile` and `ol.source.VectorTile` instead of `ol.layer.Vector` and `ol.source.TileVector`.
#### `ol.Map#forEachFeatureAtPixel` changes for unmanaged layers
`ol.Map#forEachFeatureAtPixel` will still be called for unmanaged layers, but the 2nd argument to the callback function will be `null` instead of a reference to the unmanaged layer. This brings back the behavior of the abandoned `ol.FeatureOverlay` that was replaced by unmanaged layers.
If you are affected by this change, please change your unmanaged layer to a regular layer by using e.g. `ol.Map#addLayer` instead of `ol.layer.Layer#setMap`.
### v3.10.0
#### `ol.layer.Layer` changes
The experimental `setHue`, `setContrast`, `setBrightness`, `setSaturation`, and the corresponding getter methods have been removed. These properties only worked with the WebGL renderer. If are interested in applying color transforms, look for the `postcompose` event in the API docs. In addition, the `ol.source.Raster` source provides a way to create new raster data based on arbitrary transforms run on any number of input sources.
### v3.9.0
#### `ol.style.Circle` changes
The experimental `getAnchor`, `getOrigin`, and `getSize` methods have been removed. The anchor and origin of a circle symbolizer are not modifiable, so these properties should not need to be accessed. The radius and stroke width can be used to calculate the rendered size of a circle symbolizer if needed:
```js
// calculate rendered size of a circle symbolizer
var width = 2 * circle.getRadius();
if (circle.getStroke()) {
width += circle.getStroke().getWidth() + 1;
}
```
### v3.8.0
There should be nothing special required when upgrading from v3.7.0 to v3.8.0.
### v3.7.0
#### Removal of `ol.FeatureOverlay`
Instead of an `ol.FeatureOverlay`, we now use an `ol.layer.Vector` with an
`ol.source.Vector`. If you previously had:
```js
var featureOverlay = new ol.FeatureOverlay({
map: map,
style: overlayStyle
});
featureOverlay.addFeature(feature);
featureOverlay.removeFeature(feature);
var collection = featureOverlay.getFeatures();
```
you will have to change this to:
```js
var collection = new ol.Collection();
var featureOverlay = new ol.layer.Vector({
map: map,
source: new ol.source.Vector({
features: collection,
useSpatialIndex: false // optional, might improve performance
}),
style: overlayStyle,
updateWhileAnimating: true, // optional, for instant visual feedback
updateWhileInteracting: true // optional, for instant visual feedback
});
featureOverlay.getSource().addFeature(feature);
featureOverlay.getSource().removeFeature(feature);
```
With the removal of `ol.FeatureOverlay`, `zIndex` symbolizer properties of overlays are no longer stacked per map, but per layer/overlay. If you previously had multiple feature overlays where you controlled the rendering order of features by using `zIndex` symbolizer properties, you can now achieve the same rendering order only if all overlay features are on the same layer.
Note that `ol.FeatureOverlay#getFeatures()` returned an `{ol.Collection.<ol.Feature>}`, whereas `ol.source.Vector#getFeatures()` returns an `{Array.<ol.Feature>}`.
#### `ol.TileCoord` changes
Until now, the API exposed two different types of `ol.TileCoord` tile coordinates: internal ones that increase left to right and upward, and transformed ones that may increase downward, as defined by a transform function on the tile grid. With this change, the API now only exposes tile coordinates that increase left to right and upward.
Previously, tile grids created by OpenLayers either had their origin at the top-left or at the bottom-left corner of the extent. To make it easier for application developers to transform tile coordinates to the common XYZ tiling scheme, all tile grids that OpenLayers creates internally have their origin now at the top-left corner of the extent.
This change affects applications that configure a custom `tileUrlFunction` for an `ol.source.Tile`. Previously, the `tileUrlFunction` was called with rather unpredictable tile coordinates, depending on whether a tile coordinate transform took place before calling the `tileUrlFunction`. Now it is always called with OpenLayers tile coordinates. To transform these into the common XYZ tiling scheme, a custom `tileUrlFunction` has to change the `y` value (tile row) of the `ol.TileCoord`:
```js
function tileUrlFunction = function(tileCoord, pixelRatio, projection) {
var urlTemplate = '{z}/{x}/{y}';
return urlTemplate
.replace('{z}', tileCoord[0].toString())
.replace('{x}', tileCoord[1].toString())
.replace('{y}', (-tileCoord[2] - 1).toString());
}
```
The `ol.tilegrid.TileGrid#createTileCoordTransform()` function which could be used to get the tile grid's tile coordinate transform function has been removed. This function was confusing and should no longer be needed now that application developers get tile coordinates in a known layout.
The code snippets below show how your application code needs to be changed:
Old application code (with `ol.tilegrid.TileGrid#createTileCoordTransform()`):
```js
var transform = source.getTileGrid().createTileCoordTransform();
var tileUrlFunction = function(tileCoord, pixelRatio, projection) {
tileCoord = transform(tileCoord, projection);
return 'http://mytiles.com/' +
tileCoord[0] + '/' + tileCoord[1] + '/' + tileCoord[2] + '.png';
};
```
Old application code (with custom `y` transform):
```js
var tileUrlFunction = function(tileCoord, pixelRatio, projection) {
var z = tileCoord[0];
var yFromBottom = tileCoord[2];
var resolution = tileGrid.getResolution(z);
var tileHeight = ol.size.toSize(tileSize)[1];
var matrixHeight =
Math.floor(ol.extent.getHeight(extent) / tileHeight / resolution);
return 'http://mytiles.com/' +
tileCoord[0] + '/' + tileCoord[1] + '/' +
(matrixHeight - yFromBottom - 1) + '.png';
};
```
New application code (simple -y - 1 transform):
```js
var tileUrlFunction = function(tileCoord, pixelRatio, projection) {
return 'http://mytiles.com/' +
tileCoord[0] + '/' + tileCoord[1] + '/' + (-tileCoord[2] - 1) + '.png';
};
```
#### Removal of `ol.tilegrid.Zoomify`
The replacement of `ol.tilegrid.Zoomify` is a plain `ol.tilegrid.TileGrid`, configured with `extent`, `origin` and `resolutions`. If the `size` passed to the `ol.source.Zoomify` source is `[width, height]`, then the extent for the tile grid will be `[0, -height, width, 0]`, and the origin will be `[0, 0]`.
#### Replace `ol.View.fitExtent()` and `ol.View.fitGeometry()` with `ol.View.fit()`
* This combines two previously distinct functions into one more flexible call which takes either a geometry or an extent.
* Rename all calls to `fitExtent` and `fitGeometry` to `fit`.
#### Change to `ol.interaction.Modify`
When single clicking a line or boundary within the `pixelTolerance`, a vertex is now created.
### v3.6.0
#### `ol.interaction.Draw` changes
* The `minPointsPerRing` config option has been renamed to `minPoints`. It is now also available for linestring drawing, not only for polygons.
* The `ol.DrawEvent` and `ol.DrawEventType` types were renamed to `ol.interaction.DrawEvent` and `ol.interaction.DrawEventType`. This has an impact on your code only if your code is compiled together with ol3.
#### `ol.tilegrid` changes
* The `ol.tilegrid.XYZ` constructor has been replaced by a static `ol.tilegrid.createXYZ()` function. The `ol.tilegrid.createXYZ()` function takes the same arguments as the previous `ol.tilegrid.XYZ` constructor, but returns an `ol.tilegrid.TileGrid` instance.
* The internal tile coordinate scheme for XYZ sources has been changed. Previously, the `y` of tile coordinates was transformed to the coordinates used by sources by calculating `-y-1`. Now, it is transformed by calculating `height-y-1`, where height is the number of rows of the tile grid at the zoom level of the tile coordinate.
* The `widths` constructor option of `ol.tilegrid.TileGrid` and subclasses is no longer available, and it is no longer necessary to get proper wrapping at the 180° meridian. However, for `ol.tilegrid.WMTS`, there is a new option `sizes`, where each entry is an `ol.Size` with the `width` ('TileMatrixWidth' in WMTS capabilities) as first and the `height` ('TileMatrixHeight') as second entry of the array. For other tile grids, users can
now specify an `extent` instead of `widths`. These settings are used to restrict the range of tiles that sources will request.
* For `ol.source.TileWMS`, the default value of `warpX` used to be `undefined`, meaning that WMS requests with out-of-extent tile BBOXes would be sent. Now `wrapX` can only be `true` or `false`, and the new default is `true`. No application code changes should be required, but the resulting WMS requests for out-of-extent tiles will no longer use out-of-extent BBOXes, but ones that are shifted to real-world coordinates.
### v3.5.0
#### `ol.Object` and `bindTo`
* The following experimental methods have been removed from `ol.Object`: `bindTo`, `unbind`, and `unbindAll`. If you want to get notification about `ol.Object` property changes, you can listen for the `'propertychange'` event (e.g. `object.on('propertychange', listener)`). Two-way binding can be set up at the application level using property change listeners. See [#3472](https://github.com/openlayers/ol3/pull/3472) for details on the change.
* The experimental `ol.dom.Input` component has been removed. If you need to synchronize the state of a dom Input element with an `ol.Object`, this can be accomplished using listeners for change events. For example, you might bind the state of a checkbox type input with a layer's visibility like this:
```js
var layer = new ol.layer.Tile();
var checkbox = document.querySelector('#checkbox');
checkbox.addEventListener('change', function() {
var checked = this.checked;
if (checked !== layer.getVisible()) {
layer.setVisible(checked);
}
});
layer.on('change:visible', function() {
var visible = this.getVisible();
if (visible !== checkbox.checked) {
checkbox.checked = visible;
}
});
```
#### New Vector API
* The following experimental vector classes have been removed: `ol.source.GeoJSON`, `ol.source.GML`, `ol.source.GPX`, `ol.source.IGC`, `ol.source.KML`, `ol.source.OSMXML`, and `ol.source.TopoJSON`. You now will use `ol.source.Vector` instead.
For example, if you used `ol.source.GeoJSON` as follows:
```js
var source = new ol.source.GeoJSON({
url: 'features.json',
projection: 'EPSG:3857'
});
```
you will need to change your code to:
```js
var source = new ol.source.Vector({
url: 'features.json',
format: new ol.format.GeoJSON()
});
```
See http://openlayers.org/en/master/examples/vector-layer.html for a real example.
Note that you no longer need to set a `projection` on the source!
Previously the vector data was loaded at source construction time, and, if the data projection and the source projection were not the same, the vector data was transformed to the source projection before being inserted (as features) into the source.
The vector data is now loaded at render time, when the view projection is known. And the vector data is transformed to the view projection if the data projection and the source projection are not the same.
If you still want to "eagerly" load the source you will use something like this:
```js
var source = new ol.source.Vector();
$.ajax('features.json').then(function(response) {
var geojsonFormat = new ol.format.GeoJSON();
var features = geojsonFormat.readFeatures(response,
{featureProjection: 'EPSG:3857'});
source.addFeatures(features);
});
```
The above code uses jQuery to send an Ajax request, but you can obviously use any Ajax library.
See http://openlayers.org/en/master/examples/igc.html for a real example.
* Note about KML
If you used `ol.source.KML`'s `extractStyles` or `defaultStyle` options, you will now have to set these options on `ol.format.KML` instead. For example, if you used:
```js
var source = new ol.source.KML({
url: 'features.kml',
extractStyles: false,
projection: 'EPSG:3857'
});
```
you will now use:
```js
var source = new ol.source.Vector({
url: 'features.kml',
format: new ol.format.KML({
extractStyles: false
})
});
```
* The `ol.source.ServerVector` class has been removed. If you used it, for example as follows:
```js
var source = new ol.source.ServerVector({
format: new ol.format.GeoJSON(),
loader: function(extent, resolution, projection) {
var url = …;
$.ajax(url).then(function(response) {
source.addFeatures(source.readFeatures(response));
});
},
strategy: ol.loadingstrategy.bbox,
projection: 'EPSG:3857'
});
```
you will need to change your code to:
```js
var source = new ol.source.Vector({
loader: function(extent, resolution, projection) {
var url = …;
$.ajax(url).then(function(response) {
var format = new ol.format.GeoJSON();
var features = format.readFeatures(response,
{featureProjection: projection});
source.addFeatures(features);
});
},
strategy: ol.loadingstrategy.bbox
});
```
See http://openlayers.org/en/master/examples/vector-osm.html for a real example.
* The experimental `ol.loadingstrategy.createTile` function has been renamed to `ol.loadingstrategy.tile`. The signature of the function hasn't changed. See http://openlayers.org/en/master/examples/vector-osm.html for an example.
#### Change to `ol.style.Icon`
* When manually loading an image for `ol.style.Icon`, the image size should now be set
with the `imgSize` option and not with `size`. `size` is supposed to be used for the
size of a sub-rectangle in an image sprite.
#### Support for non-square tiles
The return value of `ol.tilegrid.TileGrid#getTileSize()` will now be an `ol.Size` array instead of a number if non-square tiles (i.e. an `ol.Size` array instead of a number as `tilsSize`) are used. To always get an `ol.Size`, the new `ol.size.toSize()` was added.
#### Change to `ol.interaction.Draw`
When finishing a draw, the `drawend` event is now dispatched before the feature is inserted to either the source or the collection. This change allows application code to finish setting up the feature.
#### Misc.
If you compile your application together with the library and use the `ol.feature.FeatureStyleFunction` type annotation (this should be extremely rare), the type is now named `ol.FeatureStyleFunction`.
### v3.4.0
There should be nothing special required when upgrading from v3.3.0 to v3.4.0.
### v3.3.0 ### v3.3.0
* The `ol.events.condition.mouseMove` function was replaced by `ol.events.condition.pointerMove` (see [#3281](https://github.com/openlayers/ol3/pull/3281)). For example, if you use `ol.events.condition.mouseMove` as the condition in a `Select` interaction then you now need to use `ol.events.condition.pointerMove`: * The `ol.events.condition.mouseMove` function was replaced by `ol.events.condition.pointerMove` (see [#3281](https://github.com/openlayers/ol3/pull/3281)). For example, if you use `ol.events.condition.mouseMove` as the condition in a `Select` interaction then you now need to use `ol.events.condition.pointerMove`:

View File

@@ -112,7 +112,7 @@ The 3.1.0 release maintains a backwards-compatible API with the 3.0.0 release, s
* [#2781](https://github.com/openlayers/ol3/pull/2781) - Use a standard title attribute for the control buttons ([@fredj](https://github.com/fredj)) * [#2781](https://github.com/openlayers/ol3/pull/2781) - Use a standard title attribute for the control buttons ([@fredj](https://github.com/fredj))
* [#2852](https://github.com/openlayers/ol3/pull/2852) - Add missing space between class names ([@fredj](https://github.com/fredj)) * [#2852](https://github.com/openlayers/ol3/pull/2852) - Add missing space between class names ([@fredj](https://github.com/fredj))
* [#2891](https://github.com/openlayers/ol3/pull/2891) - Introduce a load function for image sources ([@ahocevar](https://github.com/ahocevar)) * [#2891](https://github.com/openlayers/ol3/pull/2891) - Introduce a load function for image sources ([@ahocevar](https://github.com/ahocevar))
* [#2885](https://github.com/openlayers/ol3/pull/2885) - Add wrapX option to TileJSON source ([@elemoine](https://github.com/elemoine)) * [#2885](https://github.com/openlayers/ol3/pull/2885) - Add wrapX option to TileJSON source ([@elemoine](https://github.com/elemoine))
* [#2890](https://github.com/openlayers/ol3/pull/2890) - Use correct layer property names ([@elemoine](https://github.com/elemoine)) * [#2890](https://github.com/openlayers/ol3/pull/2890) - Use correct layer property names ([@elemoine](https://github.com/elemoine))
* [#2887](https://github.com/openlayers/ol3/pull/2887) - Explicitly pass coordinate dimension before transforming. ([@tschaub](https://github.com/tschaub)) * [#2887](https://github.com/openlayers/ol3/pull/2887) - Explicitly pass coordinate dimension before transforming. ([@tschaub](https://github.com/tschaub))
* [#2886](https://github.com/openlayers/ol3/pull/2886) - Use ternary notation ([@elemoine](https://github.com/elemoine)) * [#2886](https://github.com/openlayers/ol3/pull/2886) - Use ternary notation ([@elemoine](https://github.com/elemoine))

93
changelog/v3.10.0.md Normal file
View File

@@ -0,0 +1,93 @@
# v3.10.0
## Summary
The v3.10.0 release includes features and fixes from 66 pull requests since the v3.9.0 release. New features and improvements include:
* Full touch gesture support for the Microsoft Edge browser.
* Improved API docs - required constructor options are now marked as such.
* Text styles (vector labels) now work with defaults instead of failing when only a label text is set.
* Write support for GML3 features with multiple geometries
See the complete list below for details. And see the following notes to know how to upgrade from v3.9.0 to v3.10.0.
## Upgrade notes
#### `ol.layer.Layer` changes
The experimental `setHue`, `setContrast`, `setBrightness`, `setSaturation`, and the corresponding getter methods have been removed. These properties only worked with the WebGL renderer. If you are interested in applying color transforms, look for the `postcompose` event in the API docs. In addition, the `ol.source.Raster` source provides a way to create new raster data based on arbitrary transforms run on any number of input sources.
#### Removal of legacy Internet Explorer support
If you are building an appliction that supports Internet Explorer 8 or older, you'll need to use ES5 shims to make OpenLayers work. As before, support for such old browsers is very basic, and we recommend to not support them.
## New features and fixes
* [#4237](https://github.com/openlayers/ol3/pull/4237) - #3328: GML3 - Writing features with multiple geometries ([@awaterme](https://github.com/awaterme))
* [#4218](https://github.com/openlayers/ol3/pull/4218) - Add 'getLayer()' method to 'ol.interaction.Select' ([@jonataswalker](https://github.com/jonataswalker))
* [#4036](https://github.com/openlayers/ol3/pull/4036) - Fix modify interaction event order ([@alvinlindstam](https://github.com/alvinlindstam))
* [#4036](https://github.com/openlayers/ol3/pull/4036) - Fix modify interaction event order ([@alvinlindstam](https://github.com/alvinlindstam))
* [#4116](https://github.com/openlayers/ol3/pull/4116) - Make ol.control.OverviewMap's view configurable ([@ahocevar](https://github.com/ahocevar))
* [#4234](https://github.com/openlayers/ol3/pull/4234) - Support OGC WKT proj4 def.units and def.to_meter ([@tbarsballe](https://github.com/tbarsballe))
* [#4224](https://github.com/openlayers/ol3/pull/4224) - Don't transform the angle into degrees to rotate the element ([@fredj](https://github.com/fredj))
* [#4231](https://github.com/openlayers/ol3/pull/4231) - Revert "Merge pull request #4217 from ThomasG77/clipboardjs-replacement" ([@ahocevar](https://github.com/ahocevar))
* [#4217](https://github.com/openlayers/ol3/pull/4217) - Replace ZeroClipboard with Clipboard.js to remove flash dependency ([@ThomasG77](https://github.com/ThomasG77))
* [#4223](https://github.com/openlayers/ol3/pull/4223) - Remove goog.fx.easing ([@fredj](https://github.com/fredj))
* [#4222](https://github.com/openlayers/ol3/pull/4222) - Remove unnecessary cast ([@fredj](https://github.com/fredj))
* [#4209](https://github.com/openlayers/ol3/pull/4209) - Remove goog.string.remove ([@gberaudo](https://github.com/gberaudo))
* [#4207](https://github.com/openlayers/ol3/pull/4207) - Remove goog.string.startsWith ([@gberaudo](https://github.com/gberaudo))
* [#4208](https://github.com/openlayers/ol3/pull/4208) - Remove goog.string.trim() ([@gberaudo](https://github.com/gberaudo))
* [#4216](https://github.com/openlayers/ol3/pull/4216) - Fix canvas replay which broke with 31a68e2 ([@ahocevar](https://github.com/ahocevar))
* [#4202](https://github.com/openlayers/ol3/pull/4202) - Remove use of goog.dom.appendChild ([@fredj](https://github.com/fredj))
* [#4205](https://github.com/openlayers/ol3/pull/4205) - Minor cleanup ([@fredj](https://github.com/fredj))
* [#4203](https://github.com/openlayers/ol3/pull/4203) - Cosmetic changes to example html / css ([@marcjansen](https://github.com/marcjansen))
* [#4184](https://github.com/openlayers/ol3/pull/4184) - Adjust iframe's position of GetFeatureInfo examples ([@jonataswalker](https://github.com/jonataswalker))
* [#4192](https://github.com/openlayers/ol3/pull/4192) - Remove use of goog.isNull in favor of simple truthy checks ([@marcjansen](https://github.com/marcjansen))
* [#4187](https://github.com/openlayers/ol3/pull/4187) - Fix {-y} template calculation for custom (TMS) tile grids ([@ahocevar](https://github.com/ahocevar))
* [#4176](https://github.com/openlayers/ol3/pull/4176) - Remove use of goog.isDefAndNotNull().
([@tschaub](https://github.com/tschaub))
* [#4200](https://github.com/openlayers/ol3/pull/4200) - Do not use goog.object.get ([@marcjansen](https://github.com/marcjansen))
* [#4198](https://github.com/openlayers/ol3/pull/4198) - Improve ol.control.Rotate.prototype.resetNorth_ performance ([@denilsonsa](https://github.com/denilsonsa))
* [#4197](https://github.com/openlayers/ol3/pull/4197) - Remove blur action on MOUSEOUT on Zoom Out button ([@denilsonsa](https://github.com/denilsonsa))
* [#4195](https://github.com/openlayers/ol3/pull/4195) - #4171: Prefer current layout as default on MultiLineString.setLineStrings() ([@awaterme](https://github.com/awaterme))
* [#4172](https://github.com/openlayers/ol3/pull/4172) - #4171: Prefer current layout as default on Multipolygon.setPolygons() ([@awaterme](https://github.com/awaterme))
* [#4190](https://github.com/openlayers/ol3/pull/4190) - Remove use of goog.functions.constant ([@marcjansen](https://github.com/marcjansen))
* [#4188](https://github.com/openlayers/ol3/pull/4188) - Remove use of goog.object.getKeys ([@fredj](https://github.com/fredj))
* [#4189](https://github.com/openlayers/ol3/pull/4189) - Replace goog.nullFunction with ol.nullFunction ([@marcjansen](https://github.com/marcjansen))
* [#4165](https://github.com/openlayers/ol3/pull/4165) - Use ECMAScript 5.1 Array functions instead of goog.array ([@fredj](https://github.com/fredj))
* [#4181](https://github.com/openlayers/ol3/pull/4181) - Remove use of goog.array.contains ([@fredj](https://github.com/fredj))
* [#4162](https://github.com/openlayers/ol3/pull/4162) - Remove ol.LEGACY_IE_SUPPORT ([@fredj](https://github.com/fredj))
* [#4174](https://github.com/openlayers/ol3/pull/4174) - Remove hue, saturation, contrast, and brightness as layer properties. ([@tschaub](https://github.com/tschaub))
* [#4183](https://github.com/openlayers/ol3/pull/4183) - Remove @api on getHitDetectionFramebuffer ([@elemoine](https://github.com/elemoine))
* [#4179](https://github.com/openlayers/ol3/pull/4179) - Use Date.now() instead of goog.now() ([@marcjansen](https://github.com/marcjansen))
* [#4175](https://github.com/openlayers/ol3/pull/4175) - Remove use of goog.math.clamp(). ([@tschaub](https://github.com/tschaub))
* [#4173](https://github.com/openlayers/ol3/pull/4173) - Only animate when resolution is about to be changed ([@ahocevar](https://github.com/ahocevar))
* [#4129](https://github.com/openlayers/ol3/pull/4129) - Remove use of goog.isDef. ([@openlayers](https://github.com/openlayers))
* [#4168](https://github.com/openlayers/ol3/pull/4168) - Tile preload example wording (fixes #4147) ([@wlerner](https://github.com/wlerner))
* [#4167](https://github.com/openlayers/ol3/pull/4167) - Remove externs in externs/closure-compiler.js ([@fredj](https://github.com/fredj))
* [#4166](https://github.com/openlayers/ol3/pull/4166) - Use version 20150920 of Closure Compiler ([@elemoine](https://github.com/elemoine))
* [#4159](https://github.com/openlayers/ol3/pull/4159) - Remove use of goog.object.containsKey ([@fredj](https://github.com/fredj))
* [#4157](https://github.com/openlayers/ol3/pull/4157) - Fix typo in doc ([@elemoine](https://github.com/elemoine))
* [#4138](https://github.com/openlayers/ol3/pull/4138) - Enhanced documentation for ol.style.Text ([@ekargee](https://github.com/ekargee))
* [#4151](https://github.com/openlayers/ol3/pull/4151) - Remove bogus assertion ([@elemoine](https://github.com/elemoine))
* [#4110](https://github.com/openlayers/ol3/pull/4110) - Minor cleanups ([@fredj](https://github.com/fredj))
* [#4156](https://github.com/openlayers/ol3/pull/4156) - Rename drag-features example to custom-interactions ([@elemoine](https://github.com/elemoine))
* [#4150](https://github.com/openlayers/ol3/pull/4150) - Remove use of goog.object.remove ([@fredj](https://github.com/fredj))
* [#4145](https://github.com/openlayers/ol3/pull/4145) - API method for simplifying geometries. ([@tschaub](https://github.com/tschaub))
* [#4153](https://github.com/openlayers/ol3/pull/4153) - Add a "features" option to ol.interaction.Select ([@elemoine](https://github.com/elemoine))
* [#4144](https://github.com/openlayers/ol3/pull/4144) - Set context.fillStyle to a string ([@elemoine](https://github.com/elemoine))
* [#4149](https://github.com/openlayers/ol3/pull/4149) - Remove use of goog.array.isEmpty ([@fredj](https://github.com/fredj))
* [#4139](https://github.com/openlayers/ol3/pull/4139) - Add turf.js and JSTS example ([@tsauerwein](https://github.com/tsauerwein))
* [#4136](https://github.com/openlayers/ol3/pull/4136) - Fix the 'click-to-fork' link in contributer notes ([@marcjansen](https://github.com/marcjansen))
* [#4132](https://github.com/openlayers/ol3/pull/4132) - Update quickstart tutorial ([@tsauerwein](https://github.com/tsauerwein))
* [#4111](https://github.com/openlayers/ol3/pull/4111) - Use a blackish default for filling texts ([@marcjansen](https://github.com/marcjansen))
* [#4120](https://github.com/openlayers/ol3/pull/4120) - Remove invalid link to featureOverlay in API doc ([@kalbermattenm](https://github.com/kalbermattenm))
* [#4117](https://github.com/openlayers/ol3/pull/4117) - forEachFeatureAtPixel shouldn't fail if layer has no source ([@pgiraud](https://github.com/pgiraud))
* [#4106](https://github.com/openlayers/ol3/pull/4106) - Focus to search field on page load ([@elemoine](https://github.com/elemoine))
* [#4079](https://github.com/openlayers/ol3/pull/4079) - Automatically mark required options in API-docs ([@marcjansen](https://github.com/marcjansen))
* [#4108](https://github.com/openlayers/ol3/pull/4108) - Add missing CSSProperties.prototype.touchAction extern ([@fredj](https://github.com/fredj))
* [#4107](https://github.com/openlayers/ol3/pull/4107) - Prevent page zoom on IE Edge ([@fredj](https://github.com/fredj))
* [#3969](https://github.com/openlayers/ol3/pull/3969) - Add an option to use the mouse's location as an anchor when zooming ([@samuellapointe](https://github.com/samuellapointe))

7
changelog/v3.10.1.md Normal file
View File

@@ -0,0 +1,7 @@
# v3.10.1
## Summary
This is a patch release that fixes a regression causing text styles with a fill but no stroke to not be rendered.
* [#4242](https://github.com/openlayers/ol3/pull/4242) - Fix a drawText regression introduced with 31a68e2 ([@marcjansen](https://github.com/marcjansen))

136
changelog/v3.11.0.md Normal file
View File

@@ -0,0 +1,136 @@
# v3.11.0
## Summary
The v3.11.0 release includes features and fixes from 73 pull requests since the v3.10.1 release. New features and improvements include:
* Support for raster reprojection - load raster sources in one projection and view them in another.
* Support for Mapbox Vector Tiles!
* Improved KML support, GeoJSON & TopoJSON fixes, and much more. See below for the full list.
## Upgrade notes
#### `ol.format.KML` changes
KML icons are scaled 50% so that the rendering better matches Google Earth rendering.
If a KML placemark has a name and is a point, an `ol.style.Text` is created with the name displayed to the right of the icon (if there is an icon).
This can be controlled with the showPointNames option which defaults to true.
To disable rendering of the point names for placemarks, use the option:
new ol.format.KML({ showPointNames: false });
#### `ol.interaction.DragBox` and `ol.interaction.DragZoom` changes
Styling is no longer done with `ol.Style`, but with pure CSS. The `style` constructor option is no longer required, and no longer available. Instead, there is a `className` option for the CSS selector. The default for `ol.interaction.DragBox` is `ol-dragbox`, and `ol.interaction.DragZoom` uses `ol-dragzoom`. If you previously had
```js
new ol.interaction.DragZoom({
style: new ol.style.Style({
stroke: new ol.style.Stroke({
color: 'red',
width: 3
}),
fill: new ol.style.Fill({
color: [255, 255, 255, 0.4]
})
})
});
```
you'll now just need
```js
new ol.interaction.DragZoom();
```
but with additional css:
```css
.ol-dragzoom {
border-color: red;
border-width: 3px;
background-color: rgba(255,255,255,0.4);
}
```
#### Removal of `ol.source.TileVector`
With the introduction of true vector tile support, `ol.source.TileVector` becomes obsolete. Change your code to use `ol.layer.VectorTile` and `ol.source.VectorTile` instead of `ol.layer.Vector` and `ol.source.TileVector`.
#### `ol.Map#forEachFeatureAtPixel` changes for unmanaged layers
`ol.Map#forEachFeatureAtPixel` will still be called for unmanaged layers, but the 2nd argument to the callback function will be `null` instead of a reference to the unmanaged layer. This brings back the behavior of the abandoned `ol.FeatureOverlay` that was replaced by unmanaged layers.
If you are affected by this change, please change your unmanaged layer to a regular layer by using e.g. `ol.Map#addLayer` instead of `ol.layer.Layer#setMap`.
## Full list of changes
* [#4394](https://github.com/openlayers/ol3/pull/4394) - Allow ol.Object property update without notification. ([@DavidHequet](https://github.com/DavidHequet))
* [#4395](https://github.com/openlayers/ol3/pull/4395) - Flag ol.style.Text setOffsetX and Y as @api. ([@adube](https://github.com/adube))
* [#4393](https://github.com/openlayers/ol3/pull/4393) - Faster vector tiles ([@ahocevar](https://github.com/ahocevar))
* [#4392](https://github.com/openlayers/ol3/pull/4392) - Update clean-css to version 3.4.7 🚀 ([@openlayers](https://github.com/openlayers))
* [#4391](https://github.com/openlayers/ol3/pull/4391) - Pass null as forEachFeatureAtPixel layer arg for unmanaged layers ([@ahocevar](https://github.com/ahocevar))
* [#4390](https://github.com/openlayers/ol3/pull/4390) - Fix usage of mocha-phantomjs-core after update ([@ahocevar](https://github.com/ahocevar))
* [#4387](https://github.com/openlayers/ol3/pull/4387) - Add default argument to getRendererFromQueryString ([@ahocevar](https://github.com/ahocevar))
* [#4376](https://github.com/openlayers/ol3/pull/4376) - Make KML format ignore image styles that aren't icons ([@elemoine](https://github.com/elemoine))
* [#4385](https://github.com/openlayers/ol3/pull/4385) - Don't transform the scale specified by the user ([@oterral](https://github.com/oterral))
* [#4388](https://github.com/openlayers/ol3/pull/4388) - Quick-fix running tests with PhantomJS ([@ahocevar](https://github.com/ahocevar))
* [#4378](https://github.com/openlayers/ol3/pull/4378) - Add a writeStyles option to KML format ([@elemoine](https://github.com/elemoine))
* [#4375](https://github.com/openlayers/ol3/pull/4375) - Fixed documentation typo (ol.source.ImageWMS) ([@simonseyock](https://github.com/simonseyock))
* [#4371](https://github.com/openlayers/ol3/pull/4371) - Fix typo in closure compilation tutorial ([@dtreiter](https://github.com/dtreiter))
* [#4370](https://github.com/openlayers/ol3/pull/4370) - Improve ol.interaction.Select#getLayer documentation. ([@jonataswalker](https://github.com/jonataswalker))
* [#4365](https://github.com/openlayers/ol3/pull/4365) - Update fs-extra to version 0.26.2 🚀 ([@openlayers](https://github.com/openlayers))
* [#4366](https://github.com/openlayers/ol3/pull/4366) - Update resemblejs to version 2.0.1 🚀 ([@openlayers](https://github.com/openlayers))
* [#4368](https://github.com/openlayers/ol3/pull/4368) - Append KML placemark text style to existing styles ([@marcjansen](https://github.com/marcjansen))
* [#4361](https://github.com/openlayers/ol3/pull/4361) - Make GPX format not fail on unsupported geometries ([@elemoine](https://github.com/elemoine))
* [#4360](https://github.com/openlayers/ol3/pull/4360) - Update getExtent return value jsdoc tag ([@fredj](https://github.com/fredj))
* [#4359](https://github.com/openlayers/ol3/pull/4359) - Update closure-util to version 1.9.0 🚀 ([@openlayers](https://github.com/openlayers))
* [#4357](https://github.com/openlayers/ol3/pull/4357) - Update all dependencies. ([@openlayers](https://github.com/openlayers))
* [#4356](https://github.com/openlayers/ol3/pull/4356) - Update Metalsmith and layouts plugin. ([@tschaub](https://github.com/tschaub))
* [#4355](https://github.com/openlayers/ol3/pull/4355) - Update PhantomJS. ([@tschaub](https://github.com/tschaub))
* [#4353](https://github.com/openlayers/ol3/pull/4353) - Resolve path to jsdoc-fork. ([@tschaub](https://github.com/tschaub))
* [#3627](https://github.com/openlayers/ol3/pull/3627) - Make package.json compatible for npm frontend use. ([@ThomasG77](https://github.com/ThomasG77))
* [#4163](https://github.com/openlayers/ol3/pull/4163) - Fixes for building with Node 4.x. ([@tschaub](https://github.com/tschaub))
* [#4347](https://github.com/openlayers/ol3/pull/4347) - Use require.resolve() to find jsdoc. ([@tschaub](https://github.com/tschaub))
* [#4291](https://github.com/openlayers/ol3/pull/4291) - Add 'Move a feature along a line' example. ([@jonataswalker](https://github.com/jonataswalker))
* [#4344](https://github.com/openlayers/ol3/pull/4344) - Allow different resolutions in x and y direction for ol.source.ImageStatic ([@bartvde](https://github.com/bartvde))
* [#4339](https://github.com/openlayers/ol3/pull/4339) - Make sure drawImage width and height are not too big ([@bartvde](https://github.com/bartvde))
* [#4334](https://github.com/openlayers/ol3/pull/4334) - Check view extent within image extent ([@ahocevar](https://github.com/ahocevar))
* [#4332](https://github.com/openlayers/ol3/pull/4332) - Fix write out GeoJSON features with id equal to 0 ([@fredj](https://github.com/fredj))
* [#4331](https://github.com/openlayers/ol3/pull/4331) - Allow TopoJSON features with id equal to 0 ([@fredj](https://github.com/fredj))
* [#4330](https://github.com/openlayers/ol3/pull/4330) - ol.format.TopoJSON is read only, update the jsdoc ([@openlayers](https://github.com/openlayers))
* [#4327](https://github.com/openlayers/ol3/pull/4327) - Allow GeoJSON features with id equal to 0 ([@fredj](https://github.com/fredj))
* [#4219](https://github.com/openlayers/ol3/pull/4219) - Support tiled vector data and Mapbox vector tiles ([@ahocevar](https://github.com/ahocevar))
* [#4322](https://github.com/openlayers/ol3/pull/4322) - Add wrapX override support for ol.source.Cluster ([@FRizZL](https://github.com/FRizZL))
* [#4316](https://github.com/openlayers/ol3/pull/4316) - Render name labels if the geometry is a point in KML format (@tamarmot) ([@marcjansen](https://github.com/marcjansen))
* [#4313](https://github.com/openlayers/ol3/pull/4313) - Align logos nicely with attribution text ([@ahocevar](https://github.com/ahocevar))
* [#4297](https://github.com/openlayers/ol3/pull/4297) - Create standalone versions of ol.ext packages ([@ahocevar](https://github.com/ahocevar))
* [#4302](https://github.com/openlayers/ol3/pull/4302) - scale icons by 0.5 so they are not huge ([@tamarmot](https://github.com/tamarmot))
* [#4301](https://github.com/openlayers/ol3/pull/4301) - Remove jshint -W069 tags in source code ([@fredj](https://github.com/fredj))
* [#4273](https://github.com/openlayers/ol3/pull/4273) - Expand docs on ol.source url prop. ([@Barryrowe](https://github.com/Barryrowe))
* [#4293](https://github.com/openlayers/ol3/pull/4293) - Refine the pull request process ([@ahocevar](https://github.com/ahocevar))
* [#4289](https://github.com/openlayers/ol3/pull/4289) - Restrict maxZoom of the static-image example ([@ahocevar](https://github.com/ahocevar))
* [#4275](https://github.com/openlayers/ol3/pull/4275) - Fix ol.events.condition.mouseOnly parameter type ([@fredj](https://github.com/fredj))
* [#4248](https://github.com/openlayers/ol3/pull/4248) - Use Math.cosh of ES6/2015 if available ([@marcjansen](https://github.com/marcjansen))
* [#4286](https://github.com/openlayers/ol3/pull/4286) - Add a color manipulation example. ([@tschaub](https://github.com/tschaub))
* [#4122](https://github.com/openlayers/ol3/pull/4122) - Raster reprojection ([@klokantech](https://github.com/klokantech))
* [#4283](https://github.com/openlayers/ol3/pull/4283) - Flag ol.tilegrid.TileGrid getTileCoordExtent as @api ([@adube](https://github.com/adube))
* [#4280](https://github.com/openlayers/ol3/pull/4280) - Use overlay container instead of viewport for ol.render.Box ([@ahocevar](https://github.com/ahocevar))
* [#4278](https://github.com/openlayers/ol3/pull/4278) - Use DOM instead of map canvas for ol.render.Box ([@ahocevar](https://github.com/ahocevar))
* [#4277](https://github.com/openlayers/ol3/pull/4277) - Improve the box select example ([@fredj](https://github.com/fredj))
* [#4276](https://github.com/openlayers/ol3/pull/4276) - Better ol.events.condition.platformModifierKeyOnly documentation ([@fredj](https://github.com/fredj))
* [#4102](https://github.com/openlayers/ol3/pull/4102) - Export ol.Observable#dispatchEvent function ([@fredj](https://github.com/fredj))
* [#4261](https://github.com/openlayers/ol3/pull/4261) - ol.events.condition.mouseOnly may be wrong ([@fredj](https://github.com/fredj))
* [#4269](https://github.com/openlayers/ol3/pull/4269) - Fix Zoom control duration option - allow `0` as value ([@adube](https://github.com/adube))
* [#4268](https://github.com/openlayers/ol3/pull/4268) - Add method for retrieving ol.Overlay by id ([@jonataswalker](https://github.com/jonataswalker))
* [#4257](https://github.com/openlayers/ol3/pull/4257) - Remove unused ol.math-methods ([@marcjansen](https://github.com/marcjansen))
* [#4270](https://github.com/openlayers/ol3/pull/4270) - Fix Keyboard zoom interation options ([@adube](https://github.com/adube))
* [#4272](https://github.com/openlayers/ol3/pull/4272) - Allow the DragZoom interaction created in defaults to use zoomDuration option. ([@adube](https://github.com/adube))
* [#4271](https://github.com/openlayers/ol3/pull/4271) - Fix DragZoom interaction duration, allow `0` value ([@adube](https://github.com/adube))
* [#4267](https://github.com/openlayers/ol3/pull/4267) - Example usability improvements ([@ahocevar](https://github.com/ahocevar))
* [#4263](https://github.com/openlayers/ol3/pull/4263) - Add back CSSProperties.prototype.touchAction extern ([@fredj](https://github.com/fredj))
* [#4259](https://github.com/openlayers/ol3/pull/4259) - Remove use of toDegrees/toRadians util functions ([@marcjansen](https://github.com/marcjansen))
* [#4258](https://github.com/openlayers/ol3/pull/4258) - Remove usage of goog.dom.TagName enum ([@marcjansen](https://github.com/marcjansen))
* [#4255](https://github.com/openlayers/ol3/pull/4255) - Fix zoom slider width for retina displays ([@ahocevar](https://github.com/ahocevar))
* [#4249](https://github.com/openlayers/ol3/pull/4249) - Make whole example box clickable ([@ahocevar](https://github.com/ahocevar))
* [#4045](https://github.com/openlayers/ol3/pull/4045) - Add parser for dimension property from WMTS Capabilities.xml ([@Jenselme](https://github.com/Jenselme))
* [#4161](https://github.com/openlayers/ol3/pull/4161) - Add `translatestart`, `translateend` and `translating` events to `ol.interaction.Translate` ([@jonataswalker](https://github.com/jonataswalker))
* [#4186](https://github.com/openlayers/ol3/pull/4186) - Do not export ol.webgl.Context ([@elemoine](https://github.com/elemoine))
* [#4239](https://github.com/openlayers/ol3/pull/4239) - Changing highlighted to highlight ([@austinkeeley](https://github.com/austinkeeley))
* [#3727](https://github.com/openlayers/ol3/pull/3727) - Added getOverviewMap getter method in overviewmapcontrol.js ([@bogdanvaduva](https://github.com/bogdanvaduva))

11
changelog/v3.11.1.md Normal file
View File

@@ -0,0 +1,11 @@
# v3.11.1
## Summary
The v3.11.1 release is a patch release that addresses a few regressions in the v3.11.0 release. See the [v3.11.0 release notes](https://github.com/openlayers/ol3/releases/tag/v3.11.0) for details on upgrading from v3.10.
## Fixes
* [#4413](https://github.com/openlayers/ol3/pull/4413) - Revert "Merge pull request #4339 from bartvde/issue-4337" ([@bartvde](https://github.com/bartvde))
* [#4412](https://github.com/openlayers/ol3/pull/4412) - Revert "Merge pull request #4344 from bartvde/issue-2844" ([@ahocevar](https://github.com/ahocevar))
* [#4408](https://github.com/openlayers/ol3/pull/4408) - Use ratio when calculating ImageWMS width and height ([@ahocevar](https://github.com/ahocevar))

View File

@@ -2,7 +2,7 @@
## Summary ## Summary
The 3.1.0 release includes 70 merged pull requests since 3.1.0. Of note, the KML format [now parses `NetworkingLink` tags](https://github.com/openlayers/ol3/pull/3171). The [measure example](http://openlayers.org/en/v3.2.0/examples/measure.html) was [reworked](https://github.com/openlayers/ol3/pull/3206) to display measurements and help messages while drawing. A WMTS GetCapabilities format was [added](https://github.com/openlayers/ol3/pull/3026). The WebGL renderer [now supports feature hit detection](https://github.com/openlayers/ol3/pull/3065) (on point features). And you can now [detect](https://github.com/openlayers/ol3/pull/3172) features/colored pixels on image and tile layers! See the full list of [changes](#changes) below. The 3.1.0 release includes 70 merged pull requests since 3.1.0. Of note, the KML format [now parses `NetworkingLink` tags](https://github.com/openlayers/ol3/pull/3171). The [measure example](http://openlayers.org/en/v3.2.0/examples/measure.html) was [reworked](https://github.com/openlayers/ol3/pull/3206) to display measurements and help messages while drawing. A WMTS GetCapabilities format was [added](https://github.com/openlayers/ol3/pull/3026). The WebGL renderer [now supports feature hit detection](https://github.com/openlayers/ol3/pull/3065) (on point features). And you can now [detect](https://github.com/openlayers/ol3/pull/3172) features/colored pixels on image and tile layers! See the full list of [changes](#changes) below.
## Upgrade notes ## Upgrade notes

43
changelog/v3.4.0.md Normal file
View File

@@ -0,0 +1,43 @@
## Overview of all changes
* [#3383](https://github.com/openlayers/ol3/pull/3383) - GML3 tests time out in unit tests ([@bartvde](https://github.com/bartvde))
* [#3401](https://github.com/openlayers/ol3/pull/3401) - Allow GeoJSON to be serialized according to the right-hand rule. ([@tschaub](https://github.com/tschaub))
* [#3403](https://github.com/openlayers/ol3/pull/3403) - Remove unused goog.require ([@fredj](https://github.com/fredj))
* [#3362](https://github.com/openlayers/ol3/pull/3362) - Configure proj4 options and transforms upon construction ([@ahocevar](https://github.com/ahocevar))
* [#3394](https://github.com/openlayers/ol3/pull/3394) - Fix fullscreen pseudo CSS class name ([@fredj](https://github.com/fredj))
* [#3399](https://github.com/openlayers/ol3/pull/3399) - Clarify when widths need to be configured on a tile grid ([@ahocevar](https://github.com/ahocevar))
* [#3398](https://github.com/openlayers/ol3/pull/3398) - Make sure that the return value of wrapX() is stable ([@ahocevar](https://github.com/ahocevar))
* [#3396](https://github.com/openlayers/ol3/pull/3396) - Move the compare function out of ol.interaction.Modify.handleDownEvent_ ([@fredj](https://github.com/fredj))
* [#3395](https://github.com/openlayers/ol3/pull/3395) - ol.Interaction.Modify fixes ([@fperucic](https://github.com/fperucic))
* [#3387](https://github.com/openlayers/ol3/pull/3387) - Add wrapX option for ol.source.WMTS ([@ahocevar](https://github.com/ahocevar))
* [#3393](https://github.com/openlayers/ol3/pull/3393) - Remove unused define ([@fredj](https://github.com/fredj))
* [#3392](https://github.com/openlayers/ol3/pull/3392) - Fix switching class name of full-screen control ([@tsauerwein](https://github.com/tsauerwein))
* [#3391](https://github.com/openlayers/ol3/pull/3391) - Minor code cleanup ([@fredj](https://github.com/fredj))
* [#3388](https://github.com/openlayers/ol3/pull/3388) - Add new geometry layout option for polyline format ([@fredj](https://github.com/fredj))
* [#3385](https://github.com/openlayers/ol3/pull/3385) - Fix ol.tilegrid.TileGrid#getZForResolution ([@elemoine](https://github.com/elemoine))
* [#3377](https://github.com/openlayers/ol3/pull/3377) - Support wrapX for attributions ([@ahocevar](https://github.com/ahocevar))
* [#3382](https://github.com/openlayers/ol3/pull/3382) - Create github source links ([@ahocevar](https://github.com/ahocevar))
* [#3376](https://github.com/openlayers/ol3/pull/3376) - Add ol.source.Tile support for wrapping around the x-axis ([@ahocevar](https://github.com/ahocevar))
* [#3378](https://github.com/openlayers/ol3/pull/3378) - Clarify where to ask questions ([@ahocevar](https://github.com/ahocevar))
* [#3380](https://github.com/openlayers/ol3/pull/3380) - Test the GeoJSON layout ([@fredj](https://github.com/fredj))
* [#3360](https://github.com/openlayers/ol3/pull/3360) - Don't unlisten image twice when disposing an ol.ImageTile ([@fredj](https://github.com/fredj))
* [#3361](https://github.com/openlayers/ol3/pull/3361) - Listen on localhost to avoid phantomjs browsing 0.0.0.0 ([@ahocevar](https://github.com/ahocevar))
* [#3365](https://github.com/openlayers/ol3/pull/3365) - Better docs for #getPointResolution ([@ahocevar](https://github.com/ahocevar))
* [#3363](https://github.com/openlayers/ol3/pull/3363) - New ol.proj features ([@bill-chadwick](https://github.com/bill-chadwick))
* [#3305](https://github.com/openlayers/ol3/pull/3305) - Add image loading events to image sources (r=@ahocevar,@elemoine) ([@bartvde](https://github.com/bartvde))
* [#3343](https://github.com/openlayers/ol3/pull/3343) - Line arrows example ([@fredj](https://github.com/fredj))
* [#3354](https://github.com/openlayers/ol3/pull/3354) - Mark ol.format.GeoJSON#writeFeature(s) option param optional ([@fredj](https://github.com/fredj))
* [#3346](https://github.com/openlayers/ol3/pull/3346) - Set the 'properties' member to null if the feature has not properties ([@fredj](https://github.com/fredj))
* [#3344](https://github.com/openlayers/ol3/pull/3344) - Minor code cleanup ([@fredj](https://github.com/fredj))
* [#3237](https://github.com/openlayers/ol3/pull/3237) - Add circles to Draw interaction. ([@Morgul](https://github.com/Morgul))
* [#2691](https://github.com/openlayers/ol3/pull/2691) - Add will-change CSS properties ([@fredj](https://github.com/fredj))
* [#3336](https://github.com/openlayers/ol3/pull/3336) - Use ol.Map#getTargetElement function ([@fredj](https://github.com/fredj))
* [#3335](https://github.com/openlayers/ol3/pull/3335) - Update rbush to version 1.3.5 ([@fredj](https://github.com/fredj))
* [#3322](https://github.com/openlayers/ol3/pull/3322) - Remove unneeded map.isDef call ([@fredj](https://github.com/fredj))
* [#3327](https://github.com/openlayers/ol3/pull/3327) - Add css to dist directory ([@ahocevar](https://github.com/ahocevar))
* [#3324](https://github.com/openlayers/ol3/pull/3324) - Add interface definition for ol.SelectEvent ([@ahocevar](https://github.com/ahocevar))
* [#3315](https://github.com/openlayers/ol3/pull/3315) - Fix Tissot indicatrix example description ([@fredj](https://github.com/fredj))
* [#3312](https://github.com/openlayers/ol3/pull/3312) - Fix HiDPI support for ArcGIS REST ([@ahocevar](https://github.com/ahocevar))
* [#2910](https://github.com/openlayers/ol3/pull/2910) - Support multiple featureTpes in GML parser ([@bartvde](https://github.com/bartvde))
* [#3309](https://github.com/openlayers/ol3/pull/3309) - Fix select event always reporting as multi select ([@bjornharrtell](https://github.com/bjornharrtell))
* [#3307](https://github.com/openlayers/ol3/pull/3307) - Handle all non-degree units in ol.control.ScaleLine ([@ahocevar](https://github.com/ahocevar))

289
changelog/v3.5.0.md Normal file
View File

@@ -0,0 +1,289 @@
# v3.5.0
## Summary
The 3.5.0 release includes features and fixes from a whopping 129 pull requests since 3.4.0. This release removes a number of "experimental" features from the API, so take a close look at the notes below when upgrading.
## Upgrade notes
### `ol.Object` and `bindTo`
* The following experimental methods have been removed from `ol.Object`: `bindTo`, `unbind`, and `unbindAll`. If you want to get notification about `ol.Object` property changes, you can listen for the `'propertychange'` event (e.g. `object.on('propertychange', listener)`). Two-way binding can be set up at the application level using property change listeners. See [#3472](https://github.com/openlayers/ol3/pull/3472) for details on the change.
* The experimental `ol.dom.Input` component has been removed. If you need to synchronize the state of a dom Input element with an `ol.Object`, this can be accomplished using listeners for change events. For example, you might bind the state of a checkbox type input with a layer's visibility like this:
```js
var layer = new ol.layer.Tile();
var checkbox = document.querySelector('#checkbox');
checkbox.addEventListener('change', function() {
var checked = this.checked;
if (checked !== layer.getVisible()) {
layer.setVisible(checked);
}
});
layer.on('change:visible', function() {
var visible = this.getVisible();
if (visible !== checkbox.checked) {
checkbox.checked = visible;
}
});
```
### New Vector API
* The following experimental vector classes have been removed: `ol.source.GeoJSON`, `ol.source.GML`, `ol.source.GPX`, `ol.source.IGC`, `ol.source.KML`, `ol.source.OSMXML`, and `ol.source.TopoJSON`. You now will use `ol.source.Vector` instead.
For example, if you used `ol.source.GeoJSON` as follows:
```js
var source = new ol.source.GeoJSON({
url: 'features.json',
projection: 'EPSG:3857'
});
```
you will need to change your code to:
```js
var source = new ol.source.Vector({
url: 'features.json',
format: new ol.format.GeoJSON()
});
```
See http://openlayers.org/en/master/examples/vector-layer.html for a real example.
Note that you no longer need to set a `projection` on the source!
Previously the vector data was loaded at source construction time, and, if the data projection and the source projection were not the same, the vector data was transformed to the source projection before being inserted (as features) into the source.
The vector data is now loaded at render time, when the view projection is known. And the vector data is transformed to the view projection if the data projection and the source projection are not the same.
If you still want to "eagerly" load the source you will use something like this:
```js
var source = new ol.source.Vector();
$.ajax('features.json').then(function(response) {
var geojsonFormat = new ol.format.GeoJSON();
var features = geojsonFormat.readFeatures(response,
{featureProjection: 'EPSG:3857'});
source.addFeatures(features);
});
```
The above code uses jQuery to send an Ajax request, but you can obviously use any Ajax library.
See http://openlayers.org/en/master/examples/igc.html for a real example.
* Note about KML
If you used `ol.source.KML`'s `extractStyles` or `defaultStyle` options, you will now have to set these options on `ol.format.KML` instead. For example, if you used:
```js
var source = new ol.source.KML({
url: 'features.kml',
extractStyles: false,
projection: 'EPSG:3857'
});
```
you will now use:
```js
var source = new ol.source.Vector({
url: 'features.kml',
format: new ol.format.KML({
extractStyles: false
})
});
```
* The `ol.source.ServerVector` class has been removed. If you used it, for example as follows:
```js
var source = new ol.source.ServerVector({
format: new ol.format.GeoJSON(),
loader: function(extent, resolution, projection) {
var url = …;
$.ajax(url).then(function(response) {
source.addFeatures(source.readFeatures(response));
});
},
strategy: ol.loadingstrategy.bbox,
projection: 'EPSG:3857'
});
```
you will need to change your code to:
```js
var source = new ol.source.Vector({
loader: function(extent, resolution, projection) {
var url = …;
$.ajax(url).then(function(response) {
var format = new ol.format.GeoJSON();
var features = format.readFeatures(response,
{featureProjection: projection});
source.addFeatures(features);
});
},
strategy: ol.loadingstrategy.bbox
});
```
See http://openlayers.org/en/master/examples/vector-osm.html for a real example.
* The experimental `ol.loadingstrategy.createTile` function has been renamed to `ol.loadingstrategy.tile`. The signature of the function hasn't changed. See http://openlayers.org/en/master/examples/vector-osm.html for an example.
### Change to `ol.style.Icon`
* When manually loading an image for `ol.style.Icon`, the image size should now be set
with the `imgSize` option and not with `size`. `size` is supposed to be used for the
size of a sub-rectangle in an image sprite.
### Support for non-square tiles
The return value of `ol.tilegrid.TileGrid#getTileSize()` will now be an `ol.Size` array instead of a number if non-square tiles (i.e. an `ol.Size` array instead of a number as `tilsSize`) are used. To always get an `ol.Size`, the new `ol.size.toSize()` was added.
### Change to `ol.interaction.Draw`
When finishing a draw, the `drawend` event is now dispatched before the feature is inserted to either the source or the collection. This change allows application code to finish setting up the feature.
### Misc.
If you compile your application together with the library and use the `ol.feature.FeatureStyleFunction` type annotation (this should be extremely rare), the type is now named `ol.FeatureStyleFunction`.
## New features and fixes
* [#3646](https://github.com/openlayers/ol3/pull/3646) - Use graceful-fs in place of fs ([@elemoine](https://github.com/elemoine))
* [#3645](https://github.com/openlayers/ol3/pull/3645) - Fix test-coverage.js script ([@elemoine](https://github.com/elemoine))
* [#3640](https://github.com/openlayers/ol3/pull/3640) - Make make fail on requires and whitespace errors ([@elemoine](https://github.com/elemoine))
* [#3644](https://github.com/openlayers/ol3/pull/3644) - added altclick select to selectfeatures example ([@t27](https://github.com/t27))
* [#3612](https://github.com/openlayers/ol3/pull/3612) - Add ol.source.WMTS#getUrls and getRequestEncoding ([@elemoine](https://github.com/elemoine))
* [#3616](https://github.com/openlayers/ol3/pull/3616) - Add support for freehand drawing to the Draw interaction ([@ahocevar](https://github.com/ahocevar))
* [#3634](https://github.com/openlayers/ol3/pull/3634) - Remove unused local variable ([@fredj](https://github.com/fredj))
* [#3629](https://github.com/openlayers/ol3/pull/3629) - Problems with XYZ coordinates in snap interaction ([@tsauerwein](https://github.com/tsauerwein))
* [#3633](https://github.com/openlayers/ol3/pull/3633) - Add a Makefile section to .editorconfig ([@elemoine](https://github.com/elemoine))
* [#3632](https://github.com/openlayers/ol3/pull/3632) - Make host-examples target copy index.js ([@elemoine](https://github.com/elemoine))
* [#3631](https://github.com/openlayers/ol3/pull/3631) - Restore Modify interaction constructor test ([@bjornharrtell](https://github.com/bjornharrtell))
* [#3630](https://github.com/openlayers/ol3/pull/3630) - Initial tests for Modify interaction vertex creation ([@bjornharrtell](https://github.com/bjornharrtell))
* [#3527](https://github.com/openlayers/ol3/pull/3527) - Replace pake with make? ([@elemoine](https://github.com/elemoine))
* [#3624](https://github.com/openlayers/ol3/pull/3624) - Add a one sentence summary for several exportable symbols ([@marcjansen](https://github.com/marcjansen))
* [#3623](https://github.com/openlayers/ol3/pull/3623) - ol3 overwrites WMS format_options instead of extending them. ([@bartvde](https://github.com/bartvde))
* [#3621](https://github.com/openlayers/ol3/pull/3621) - Fix typo in documentation comment ([@openlayers](https://github.com/openlayers))
* [#3614](https://github.com/openlayers/ol3/pull/3614) - GML2 parser does not parse all features ([@bartvde](https://github.com/bartvde))
* [#3619](https://github.com/openlayers/ol3/pull/3619) - Add a one sentence summary for ol.geom.* exportable symbols ([@marcjansen](https://github.com/marcjansen))
* [#3618](https://github.com/openlayers/ol3/pull/3618) - Replace non-breaking space (U+00A0) with regular space (U+0020). ([@tschaub](https://github.com/tschaub))
* [#3617](https://github.com/openlayers/ol3/pull/3617) - Add ol.size.hasArea. ([@tschaub](https://github.com/tschaub))
* [#3597](https://github.com/openlayers/ol3/pull/3597) - Remove dead link in api doc ([@fredj](https://github.com/fredj))
* [#3613](https://github.com/openlayers/ol3/pull/3613) - Add a one sentence summary for ol.interaction* exportable symbols ([@marcjansen](https://github.com/marcjansen))
* [#3611](https://github.com/openlayers/ol3/pull/3611) - Improve error handling in Esri JSON format ([@bartvde](https://github.com/bartvde))
* [#3560](https://github.com/openlayers/ol3/pull/3560) - Add an example showing how to create a permalink ([@tsauerwein](https://github.com/tsauerwein))
* [#3571](https://github.com/openlayers/ol3/pull/3571) - Add wrapX support for vector layers (canvas renderer only) ([@ahocevar](https://github.com/ahocevar))
* [#3605](https://github.com/openlayers/ol3/pull/3605) - vector-esri-edit.html uses non api method ([@bartvde](https://github.com/bartvde))
* [#3602](https://github.com/openlayers/ol3/pull/3602) - Rename ol.feature.FeatureStyleFunction to ol.FeatureStyleFunction. ([@tschaub](https://github.com/tschaub))
* [#3604](https://github.com/openlayers/ol3/pull/3604) - Add charset so that zoom out button shows correctly ([@bartvde](https://github.com/bartvde))
* [#3603](https://github.com/openlayers/ol3/pull/3603) - Reformat upgrade-notes.md ([@elemoine](https://github.com/elemoine))
* [#3599](https://github.com/openlayers/ol3/pull/3599) - Improve docs for source.Vector options ([@probins](https://github.com/probins))
* [#3598](https://github.com/openlayers/ol3/pull/3598) - Remove unnecessary entry in `.gitignore`. ([@tschaub](https://github.com/tschaub))
* [#3595](https://github.com/openlayers/ol3/pull/3595) - Add featureloader.jsdoc ([@probins](https://github.com/probins))
* [#3593](https://github.com/openlayers/ol3/pull/3593) - Add /examples/index.js to .gitignore ([@fredj](https://github.com/fredj))
* [#3592](https://github.com/openlayers/ol3/pull/3592) - Remove reference to binding in Collection docs ([@probins](https://github.com/probins))
* [#3591](https://github.com/openlayers/ol3/pull/3591) - Only draw the layer if visible and inside the resolution range ([@fredj](https://github.com/fredj))
* [#3528](https://github.com/openlayers/ol3/pull/3528) - Fix memory leak when removing layers from ol.layer.Group ([@fredj](https://github.com/fredj))
* [#3549](https://github.com/openlayers/ol3/pull/3549) - Move ol.*_DURATION const to a constructor option ([@fredj](https://github.com/fredj))
* [#3587](https://github.com/openlayers/ol3/pull/3587) - Handle left/right segment intersections for top/bottom spans. ([@tschaub](https://github.com/tschaub))
* [#3516](https://github.com/openlayers/ol3/pull/3516) - Remove ol.format.BinaryFeature. ([@tschaub](https://github.com/tschaub))
* [#3586](https://github.com/openlayers/ol3/pull/3586) - Simplify dragAndDropInteraction in examples. ([@probins](https://github.com/probins))
* [#3555](https://github.com/openlayers/ol3/pull/3555) - Esri JSON support ([@bartvde](https://github.com/bartvde))
* [#3583](https://github.com/openlayers/ol3/pull/3583) - Add a one sentence summary for ol.proj.* and ol.layer.* exportable symbols ([@marcjansen](https://github.com/marcjansen))
* [#3581](https://github.com/openlayers/ol3/pull/3581) - Always show links to related API documentation. ([@tschaub](https://github.com/tschaub))
* [#3582](https://github.com/openlayers/ol3/pull/3582) - Index what the examples require. ([@tschaub](https://github.com/tschaub))
* [#3580](https://github.com/openlayers/ol3/pull/3580) - Add a one sentence summary for ol.source.* exportable symbols ([@marcjansen](https://github.com/marcjansen))
* [#3551](https://github.com/openlayers/ol3/pull/3551) - Automatically add links to API-docs in examples ([@marcjansen](https://github.com/marcjansen))
* [#3575](https://github.com/openlayers/ol3/pull/3575) - Check proj equivalence by code. ([@nd0ut](https://github.com/nd0ut))
* [#3579](https://github.com/openlayers/ol3/pull/3579) - Use HTTPS were available. ([@tschaub](https://github.com/tschaub))
* [#3558](https://github.com/openlayers/ol3/pull/3558) - Example sources in examples dir and built examples in build/examples. ([@tschaub](https://github.com/tschaub))
* [#3550](https://github.com/openlayers/ol3/pull/3550) - Reduce differences between the rendering test runner and the standard test runner. ([@tschaub](https://github.com/tschaub))
* [#3576](https://github.com/openlayers/ol3/pull/3576) - Add KML options related note the upgrade notes ([@elemoine](https://github.com/elemoine))
* [#3573](https://github.com/openlayers/ol3/pull/3573) - Modify draw interaction dispatch order ([@gberaudo](https://github.com/gberaudo))
* [#3572](https://github.com/openlayers/ol3/pull/3572) - Do not return a null tileSize ([@ahocevar](https://github.com/ahocevar))
* [#3570](https://github.com/openlayers/ol3/pull/3570) - Add missing @api ([@gberaudo](https://github.com/gberaudo))
* [#3569](https://github.com/openlayers/ol3/pull/3569) - Fix link to Bootstrap documentation ([@fredj](https://github.com/fredj))
* [#3559](https://github.com/openlayers/ol3/pull/3559) - Add support for non-square tiles ([@ahocevar](https://github.com/ahocevar))
* [#3568](https://github.com/openlayers/ol3/pull/3568) - Move extractStyles option to ol.format.KML ([@fredj](https://github.com/fredj))
* [#3562](https://github.com/openlayers/ol3/pull/3562) - Simplify .ol-zoomslider and .ol-overviewmap CSS ([@fredj](https://github.com/fredj))
* [#3565](https://github.com/openlayers/ol3/pull/3565) - Move extractStyles option to ol.format.KML ([@fredj](https://github.com/fredj))
* [#3523](https://github.com/openlayers/ol3/pull/3523) - Update proj4 version to 2.3.6 ([@fredj](https://github.com/fredj))
* [#3556](https://github.com/openlayers/ol3/pull/3556) - Minor TileUTFGrid error fix ([@klokantech](https://github.com/klokantech))
* [#3557](https://github.com/openlayers/ol3/pull/3557) - Update FastClick externs to version 1.0.6 ([@fredj](https://github.com/fredj))
* [#3517](https://github.com/openlayers/ol3/pull/3517) - Add tests for previously untested classes ([@marcjansen](https://github.com/marcjansen))
* [#3548](https://github.com/openlayers/ol3/pull/3548) - Write the error stack instead of the error itself. ([@tschaub](https://github.com/tschaub))
* [#3542](https://github.com/openlayers/ol3/pull/3542) - Generate example index and rebuild examples on source changes. ([@tschaub](https://github.com/tschaub))
* [#3530](https://github.com/openlayers/ol3/pull/3530) - external resources not correctly in inline source of example ([@bartvde](https://github.com/bartvde))
* [#3448](https://github.com/openlayers/ol3/pull/3448) - Fix WebGL image layer rendering on retina displays ([@elemoine](https://github.com/elemoine))
* [#3544](https://github.com/openlayers/ol3/pull/3544) - Update comments about remaining GeoJSON work. ([@tschaub](https://github.com/tschaub))
* [#3531](https://github.com/openlayers/ol3/pull/3531) - Fix PointerEventHandler exception with Overlay containing SVG and IE9 ([@mantonovic](https://github.com/mantonovic))
* [#3521](https://github.com/openlayers/ol3/pull/3521) - Remove goog.isDefAndNotNull test on ol.layer.Group#getLayers result ([@fredj](https://github.com/fredj))
* [#3481](https://github.com/openlayers/ol3/pull/3481) - Proposal for a simpler vector API ([@elemoine](https://github.com/elemoine))
* [#3472](https://github.com/openlayers/ol3/pull/3472) - Remove the experimental bindTo method from ol.Object. ([@tschaub](https://github.com/tschaub))
* [#3505](https://github.com/openlayers/ol3/pull/3505) - Add a Create Custom Builds tutorial ([@elemoine](https://github.com/elemoine))
* [#3513](https://github.com/openlayers/ol3/pull/3513) - Remove layerGroup.setLayers(null) test ([@fredj](https://github.com/fredj))
* [#3511](https://github.com/openlayers/ol3/pull/3511) - Add goog.provide's ([@elemoine](https://github.com/elemoine))
* [#3509](https://github.com/openlayers/ol3/pull/3509) - Dispatch change event even when geometry is set to null ([@pgiraud](https://github.com/pgiraud))
* [#3510](https://github.com/openlayers/ol3/pull/3510) - Use sinon.spy to ensure change event is dispatched ([@pgiraud](https://github.com/pgiraud))
* [#3504](https://github.com/openlayers/ol3/pull/3504) - Rework build-examples.js task. ([@tschaub](https://github.com/tschaub))
* [#3470](https://github.com/openlayers/ol3/pull/3470) - Add rendering tests ([@tsauerwein](https://github.com/tsauerwein))
* [#3413](https://github.com/openlayers/ol3/pull/3413) - Add support for generic external modules with Browserify ([@tsauerwein](https://github.com/tsauerwein))
* [#3503](https://github.com/openlayers/ol3/pull/3503) - Use vector source instead of feature overlay in snap example. ([@tschaub](https://github.com/tschaub))
* [#3495](https://github.com/openlayers/ol3/pull/3495) - Initial basic project setup tutorial ([@bjornharrtell](https://github.com/bjornharrtell))
* [#3488](https://github.com/openlayers/ol3/pull/3488) - Add docs for exportable symbols. ([@tschaub](https://github.com/tschaub))
* [#3441](https://github.com/openlayers/ol3/pull/3441) - Add a "Compile Application and OpenLayers 3 Together" tutorial ([@elemoine](https://github.com/elemoine))
* [#3499](https://github.com/openlayers/ol3/pull/3499) - Update to closure-util 1.4.0 ([@elemoine](https://github.com/elemoine))
* [#3494](https://github.com/openlayers/ol3/pull/3494) - Mark VectorContext @api ([@gberaudo](https://github.com/gberaudo))
* [#3409](https://github.com/openlayers/ol3/pull/3409) - AssertionError in WMTS.optionsFromCapabilities. ([@bartvde](https://github.com/bartvde))
* [#3493](https://github.com/openlayers/ol3/pull/3493) - Add image loading events to ol.source.ImageStatic ([@tsauerwein](https://github.com/tsauerwein))
* [#3490](https://github.com/openlayers/ol3/pull/3490) - Add .editorconfig and instructions on its use. ([@tschaub](https://github.com/tschaub))
* [#3489](https://github.com/openlayers/ol3/pull/3489) - Use an abstract base class instead of IVectorContext. ([@gberaudo](https://github.com/gberaudo))
* [#3483](https://github.com/openlayers/ol3/pull/3483) - Clarify view.setRotation docs ([@tsauerwein](https://github.com/tsauerwein))
* [#3485](https://github.com/openlayers/ol3/pull/3485) - build.py graceful interrupt ([@malaretv](https://github.com/malaretv))
* [#3484](https://github.com/openlayers/ol3/pull/3484) - Make sure we copy the example css if it exists ([@bartvde](https://github.com/bartvde))
* [#3462](https://github.com/openlayers/ol3/pull/3462) - Remove ol.format.GMLBase from the API ([@ahocevar](https://github.com/ahocevar))
* [#3445](https://github.com/openlayers/ol3/pull/3445) - Start a FAQ document. ([@marcjansen](https://github.com/marcjansen))
* [#3468](https://github.com/openlayers/ol3/pull/3468) - Use the coveralls executable. ([@marcjansen](https://github.com/marcjansen))
* [#3415](https://github.com/openlayers/ol3/pull/3415) - Stable Only unchecked by default. ([@malaretv](https://github.com/malaretv))
* [#3420](https://github.com/openlayers/ol3/pull/3420) - Unregister viewport size listener on setTarget(null) ([@elemoine](https://github.com/elemoine))
* [#3456](https://github.com/openlayers/ol3/pull/3456) - Updated menu on the JSDOC template (non-responsive) ([@klokan](https://github.com/klokan))
* [#3475](https://github.com/openlayers/ol3/pull/3475) - Template examples ([@openlayers](https://github.com/openlayers))
* [#3455](https://github.com/openlayers/ol3/pull/3455) - Fix pre-loaded icons images for WebGL ([@tsauerwein](https://github.com/tsauerwein))
* [#3473](https://github.com/openlayers/ol3/pull/3473) - Add more tests for ol.coordinate. ([@marcjansen](https://github.com/marcjansen))
* [#3464](https://github.com/openlayers/ol3/pull/3464) - Mark more of the API stable. ([@tschaub](https://github.com/tschaub))
* [#3469](https://github.com/openlayers/ol3/pull/3469) - Update README. ([@malaretv](https://github.com/malaretv))
* [#3467](https://github.com/openlayers/ol3/pull/3467) - Update the coveralls badge. ([@openlayers](https://github.com/openlayers))
* [#3466](https://github.com/openlayers/ol3/pull/3466) - Include coveralls code-coverage badge in README. ([@marcjansen](https://github.com/marcjansen))
* [#3457](https://github.com/openlayers/ol3/pull/3457) - Integrate istanbul for test coverage ([@marcjansen](https://github.com/marcjansen))
* [#3446](https://github.com/openlayers/ol3/pull/3446) - Add updateWhileInteracting to olx.layer.VectorOptions ([@elemoine](https://github.com/elemoine))
* [#3438](https://github.com/openlayers/ol3/pull/3438) - Parser documentation and XML readme ([@gberaudo](https://github.com/gberaudo))
* [#3449](https://github.com/openlayers/ol3/pull/3449) - Fix assertion message ([@gberaudo](https://github.com/gberaudo))
* [#3440](https://github.com/openlayers/ol3/pull/3440) - Add fromLonLat and toLonLat convenience functions ([@ahocevar](https://github.com/ahocevar))
* [#3423](https://github.com/openlayers/ol3/pull/3423) - Parse extrude and altitude mode ([@gberaudo](https://github.com/gberaudo))
* [#3431](https://github.com/openlayers/ol3/pull/3431) - Better typing ([@fredj](https://github.com/fredj))
* [#3436](https://github.com/openlayers/ol3/pull/3436) - Mention readme.md files as help for contributors ([@ahocevar](https://github.com/ahocevar))
* [#3433](https://github.com/openlayers/ol3/pull/3433) - Add missing goog.provide/goog.require ol.source.TileEvent ([@fredj](https://github.com/fredj))
* [#3422](https://github.com/openlayers/ol3/pull/3422) - Fix Select behavior when multi is false ([@elemoine](https://github.com/elemoine))
* [#3428](https://github.com/openlayers/ol3/pull/3428) - Reorder assertions and variable declarations. ([@marcjansen](https://github.com/marcjansen))
* [#3414](https://github.com/openlayers/ol3/pull/3414) - Add missing ol.style.AtlasManager goog.require ([@fredj](https://github.com/fredj))
* [#3429](https://github.com/openlayers/ol3/pull/3429) - Adding missing provide for SelectFilterFunction ([@pgiraud](https://github.com/pgiraud))
* [#3426](https://github.com/openlayers/ol3/pull/3426) - Add assertion messages for all assertion statements ([@bartvde](https://github.com/bartvde))
* [#3425](https://github.com/openlayers/ol3/pull/3425) - Fix typo in ol.js ([@elemoine](https://github.com/elemoine))
* [#3424](https://github.com/openlayers/ol3/pull/3424) - Remove `@api` annotation from `ol.WEBGL_MAX_TEXTURE_SIZE`. ([@tschaub](https://github.com/tschaub))
* [#3419](https://github.com/openlayers/ol3/pull/3419) - Remove describe.only ([@elemoine](https://github.com/elemoine))
* [#3417](https://github.com/openlayers/ol3/pull/3417) - ol.interaction.Snap extent fix ([@fperucic](https://github.com/fperucic))
* [#3410](https://github.com/openlayers/ol3/pull/3410) - Add ol.Object.unset() method ([@gberaudo](https://github.com/gberaudo))
* [#3402](https://github.com/openlayers/ol3/pull/3402) - Add "filter" option to Select interaction ([@elemoine](https://github.com/elemoine))
* [#3416](https://github.com/openlayers/ol3/pull/3416) - Remove unnecessary typecasts in examples ([@fredj](https://github.com/fredj))
* [#3411](https://github.com/openlayers/ol3/pull/3411) - Listen for a 'change:geometry' event ([@fperucic](https://github.com/fperucic))
* [#3109](https://github.com/openlayers/ol3/pull/3109) - Snap feature ([@fperucic](https://github.com/fperucic))
* [#3407](https://github.com/openlayers/ol3/pull/3407) - Add v3.4.0 empty section to upgrade notes ([@bartvde](https://github.com/bartvde))

64
changelog/v3.6.0.md Normal file
View File

@@ -0,0 +1,64 @@
# v3.6.0
## Summary
The v3.6.0 release includes features and fixes from 40 pull requests since v3.5.0. To simplify the code base, there were some changes to "experimental" features. Please follow the upgrade notes to make your applications work with the latest release.
## Upgrade notes
### `ol.interaction.Draw` changes
* The `minPointsPerRing` config option has been renamed to `minPoints`. It is now also available for linestring drawing, not only for polygons.
* The `ol.DrawEvent` and `ol.DrawEventType` types were renamed to `ol.interaction.DrawEvent` and `ol.interaction.DrawEventType`. This has an impact on your code only if your code is compiled together with ol3.
### `ol.tilegrid` changes
* The `ol.tilegrid.XYZ` constructor has been replaced by a static `ol.tilegrid.createXYZ()` function. The `ol.tilegrid.createXYZ()` function takes the same arguments as the previous `ol.tilegrid.XYZ` constructor, but returns an `ol.tilegrid.TileGrid` instance.
* The internal tile coordinate scheme for XYZ sources has been changed. Previously, the `y` of tile coordinates was transformed to the coordinates used by sources by calculating `-y-1`. Now, it is transformed by calculating `height-y-1`, where height is the number of rows of the tile grid at the zoom level of the tile coordinate.
* The `widths` constructor option of `ol.tilegrid.TileGrid` and subclasses is no longer available, and it is no longer necessary to get proper wrapping at the 180° meridian. However, for `ol.tilegrid.WMTS`, there is a new option `sizes`, where each entry is an `ol.Size` with the `width` ('TileMatrixWidth' in WMTS capabilities) as first and the `height` ('TileMatrixHeight') as second entry of the array. For other tile grids, users can
now specify an `extent` instead of `widths`. These settings are used to restrict the range of tiles that sources will request.
* For `ol.source.TileWMS`, the default value of `warpX` used to be `undefined`, meaning that WMS requests with out-of-extent tile BBOXes would be sent. Now `wrapX` can only be `true` or `false`, and the new default is `true`. No application code changes should be required, but the resulting WMS requests for out-of-extent tiles will no longer use out-of-extent BBOXes, but ones that are shifted to real-world coordinates.
## New features and fixes
* [#3764](https://github.com/openlayers/ol3/pull/3764) - Add tests and implementation for intersectsExtent (ol.geom.Geometry) ([@alvinlindstam](https://github.com/alvinlindstam))
* [#3757](https://github.com/openlayers/ol3/pull/3757) - Add mapBrowserEvent as a member of ol.SelectEvent ([@bjornharrtell](https://github.com/bjornharrtell))
* [#3759](https://github.com/openlayers/ol3/pull/3759) - Mark tilegrid.createTileCoordTransform() @api ([@gberaudo](https://github.com/gberaudo))
* [#3747](https://github.com/openlayers/ol3/pull/3747) - Make tileCoordTransform a member again ([@ahocevar](https://github.com/ahocevar))
* [#3751](https://github.com/openlayers/ol3/pull/3751) - Do not rely on remote services for tests ([@ahocevar](https://github.com/ahocevar))
* [#3749](https://github.com/openlayers/ol3/pull/3749) - Fix typo in API docs ([@marcjansen](https://github.com/marcjansen))
* [#3739](https://github.com/openlayers/ol3/pull/3739) - Simplify detection of scientific notation in WKT format ([@marcjansen](https://github.com/marcjansen))
* [#3741](https://github.com/openlayers/ol3/pull/3741) - Enhance docs of arguments and return values of callbacks / filters ([@marcjansen](https://github.com/marcjansen))
* [#3740](https://github.com/openlayers/ol3/pull/3740) - Add @fires to select interaction ([@probins](https://github.com/probins))
* [#3738](https://github.com/openlayers/ol3/pull/3738) - Improve doucmentation for ol.TileUrlFunctionType ([@ahocevar](https://github.com/ahocevar))
* [#3736](https://github.com/openlayers/ol3/pull/3736) - Fix invalid example HTML markup ([@fredj](https://github.com/fredj))
* [#3735](https://github.com/openlayers/ol3/pull/3735) - Snap example: remove featureoverlay from tags ([@probins](https://github.com/probins))
* [#3732](https://github.com/openlayers/ol3/pull/3732) - Add a method to bind button bluring on mouseout/focusout ([@marcjansen](https://github.com/marcjansen))
* [#3659](https://github.com/openlayers/ol3/pull/3659) - Revert "Implement ol.renderer.Layer#forEachFeatureAtCoordinate" ([@fredj](https://github.com/fredj))
* [#3683](https://github.com/openlayers/ol3/pull/3683) - Improve Map docs for layers and layergroups ([@probins](https://github.com/probins))
* [#3720](https://github.com/openlayers/ol3/pull/3720) - Add missing goog.provides in drawinteraction.js ([@elemoine](https://github.com/elemoine))
* [#3725](https://github.com/openlayers/ol3/pull/3725) - Document default value for olx.interaction.ModifyOptions#pixelTolerance ([@fredj](https://github.com/fredj))
* [#3722](https://github.com/openlayers/ol3/pull/3722) - Use the correct TileCoord transform function ([@ahocevar](https://github.com/ahocevar))
* [#3692](https://github.com/openlayers/ol3/pull/3692) - Updates for building on Windows using Cygwin. ([@bill-chadwick](https://github.com/bill-chadwick))
* [#3718](https://github.com/openlayers/ol3/pull/3718) - Add a assertion for renderOrder ([@tsauerwein](https://github.com/tsauerwein))
* [#3711](https://github.com/openlayers/ol3/pull/3711) - Fix and test ol.color.blend ([@marcjansen](https://github.com/marcjansen))
* [#3673](https://github.com/openlayers/ol3/pull/3673) - More control over ol.interaction.Draw, to allow e.g. square drawing ([@ahocevar](https://github.com/ahocevar))
* [#3710](https://github.com/openlayers/ol3/pull/3710) - Add more tests for ol.extent ([@marcjansen](https://github.com/marcjansen))
* [#3709](https://github.com/openlayers/ol3/pull/3709) - vector-wfs example does not work in JSFiddle ([@bartvde](https://github.com/bartvde))
* [#3699](https://github.com/openlayers/ol3/pull/3699) - Add support for scientific notation to WKT format ([@marcjansen](https://github.com/marcjansen))
* [#3696](https://github.com/openlayers/ol3/pull/3696) - Add an example for various blend modes ([@marcjansen](https://github.com/marcjansen))
* [#3697](https://github.com/openlayers/ol3/pull/3697) - Use a valid SPDX license expression ([@marcjansen](https://github.com/marcjansen))
* [#3694](https://github.com/openlayers/ol3/pull/3694) - Correct typo in upgrade-notes ([@probins](https://github.com/probins))
* [#3693](https://github.com/openlayers/ol3/pull/3693) - Fix ol.extent.containsExtent documentation ([@tremby](https://github.com/tremby))
* [#3689](https://github.com/openlayers/ol3/pull/3689) - Fix WMTS.optionsFromCapabilities if no OperationsMetadata section ([@probins](https://github.com/probins))
* [#3688](https://github.com/openlayers/ol3/pull/3688) - Add two missing properties to extern of WebGLContextAttributes ([@fredj](https://github.com/fredj))
* [#3682](https://github.com/openlayers/ol3/pull/3682) - Add a note about using the collection in addLayer ([@bartvde](https://github.com/bartvde))
* [#3649](https://github.com/openlayers/ol3/pull/3649) - More specific regex in serve.js ([@elemoine](https://github.com/elemoine))
* [#3677](https://github.com/openlayers/ol3/pull/3677) - Add metadata to examples, ([@tschaub](https://github.com/tschaub))
* [#3672](https://github.com/openlayers/ol3/pull/3672) - Add link to FAQ-document and fix internal links ([@marcjansen](https://github.com/marcjansen))
* [#3665](https://github.com/openlayers/ol3/pull/3665) - Add proj4js and projection definition files to example resources ([@marcjansen](https://github.com/marcjansen))
* [#3662](https://github.com/openlayers/ol3/pull/3662) - Clarify docs for renderBuffer option ([@tsauerwein](https://github.com/tsauerwein))
* [#3664](https://github.com/openlayers/ol3/pull/3664) - Link to download page. ([@tschaub](https://github.com/tschaub))
* [#3639](https://github.com/openlayers/ol3/pull/3639) - Add extent support to ol.tilegrid.TileGrid ([@ahocevar](https://github.com/ahocevar))
* [#3663](https://github.com/openlayers/ol3/pull/3663) - Readme should not include the version number. ([@tschaub](https://github.com/tschaub))
* [#3637](https://github.com/openlayers/ol3/pull/3637) - Implement ol.renderer.Layer#forEachFeatureAtCoordinate ([@fredj](https://github.com/fredj))

152
changelog/v3.7.0.md Normal file
View File

@@ -0,0 +1,152 @@
# v3.7.0
## Summary
The v3.7.0 release includes features and fixes from 43 pull requests since v3.6.0. To simplify the code base, there were some changes to "experimental" features. Please follow the upgrade notes to make your applications work with the latest release.
## Upgrade notes
#### Removal of `ol.FeatureOverlay`
Instead of an `ol.FeatureOverlay`, we now use an `ol.layer.Vector` with an
`ol.source.Vector`. If you previously had:
```js
var featureOverlay = new ol.FeatureOverlay({
map: map,
style: overlayStyle
});
featureOverlay.addFeature(feature);
featureOverlay.removeFeature(feature);
var collection = featureOverlay.getFeatures();
```
you will have to change this to:
```js
var collection = new ol.Collection();
var featureOverlay = new ol.layer.Vector({
map: map,
source: new ol.source.Vector({
features: collection,
useSpatialIndex: false // optional, might improve performance
}),
style: overlayStyle,
updateWhileAnimating: true, // optional, for instant visual feedback
updateWhileInteracting: true // optional, for instant visual feedback
});
featureOverlay.getSource().addFeature(feature);
featureOverlay.getSource().removeFeature(feature);
```
With the removal of `ol.FeatureOverlay`, `zIndex` symbolizer properties of overlays are no longer stacked per map, but per layer/overlay. If you previously had multiple feature overlays where you controlled the rendering order of features by using `zIndex` symbolizer properties, you can now achieve the same rendering order only if all overlay features are on the same layer.
Note that `ol.FeatureOverlay#getFeatures()` returned an `{ol.Collection.<ol.Feature>}`, whereas `ol.source.Vector#getFeatures()` returns an `{Array.<ol.Feature>}`.
#### `ol.TileCoord` changes
Until now, the API exposed two different types of `ol.TileCoord` tile coordinates: internal ones that increase left to right and upward, and transformed ones that may increase downward, as defined by a transform function on the tile grid. With this change, the API now only exposes tile coordinates that increase left to right and upward.
Previously, tile grids created by OpenLayers either had their origin at the top-left or at the bottom-left corner of the extent. To make it easier for application developers to transform tile coordinates to the common XYZ tiling scheme, all tile grids that OpenLayers creates internally have their origin now at the top-left corner of the extent.
This change affects applications that configure a custom `tileUrlFunction` for an `ol.source.Tile`. Previously, the `tileUrlFunction` was called with rather unpredictable tile coordinates, depending on whether a tile coordinate transform took place before calling the `tileUrlFunction`. Now it is always called with OpenLayers tile coordinates. To transform these into the common XYZ tiling scheme, a custom `tileUrlFunction` has to change the `y` value (tile row) of the `ol.TileCoord`:
```js
function tileUrlFunction = function(tileCoord, pixelRatio, projection) {
var urlTemplate = '{z}/{x}/{y}';
return urlTemplate
.replace('{z}', tileCoord[0].toString())
.replace('{x}', tileCoord[1].toString())
.replace('{y}', (-tileCoord[2] - 1).toString());
}
```
The `ol.tilegrid.TileGrid#createTileCoordTransform()` function which could be used to get the tile grid's tile coordinate transform function has been removed. This function was confusing and should no longer be needed now that application developers get tile coordinates in a known layout.
The code snippets below show how your application code needs to be changed:
Old application code (with `ol.tilegrid.TileGrid#createTileCoordTransform()`):
```js
var transform = source.getTileGrid().createTileCoordTransform();
var tileUrlFunction = function(tileCoord, pixelRatio, projection) {
tileCoord = transform(tileCoord, projection);
return 'http://mytiles.com/' +
tileCoord[0] + '/' + tileCoord[1] + '/' + tileCoord[2] + '.png';
};
```
Old application code (with custom `y` transform):
```js
var tileUrlFunction = function(tileCoord, pixelRatio, projection) {
var z = tileCoord[0];
var yFromBottom = tileCoord[2];
var resolution = tileGrid.getResolution(z);
var tileHeight = ol.size.toSize(tileSize)[1];
var matrixHeight =
Math.floor(ol.extent.getHeight(extent) / tileHeight / resolution);
return 'http://mytiles.com/' +
tileCoord[0] + '/' + tileCoord[1] + '/' +
(matrixHeight - yFromBottom - 1) + '.png';
};
```
New application code (simple -y - 1 transform):
```js
var tileUrlFunction = function(tileCoord, pixelRatio, projection) {
return 'http://mytiles.com/' +
tileCoord[0] + '/' + tileCoord[1] + '/' + (-tileCoord[2] - 1) + '.png';
};
```
#### Removal of `ol.tilegrid.Zoomify`
The replacement of `ol.tilegrid.Zoomify` is a plain `ol.tilegrid.TileGrid`, configured with `extent`, `origin` and `resolutions`. If the `size` passed to the `ol.source.Zoomify` source is `[width, height]`, then the extent for the tile grid will be `[0, -height, width, 0]`, and the origin will be `[0, 0]`.
#### Replace `ol.View.fitExtent()` and `ol.View.fitGeometry()` with `ol.View.fit()`
* This combines two previously distinct functions into one more flexible call which takes either a geometry or an extent.
* Rename all calls to `fitExtent` and `fitGeometry` to `fit`.
#### Change to `ol.interaction.Modify`
When single clicking a line or boundary within the `pixelTolerance`, a vertex is now created.
## New features and fixes
* [#3867](https://github.com/openlayers/ol3/pull/3867) - Do not require projection extent for x-wrapping tile sources ([@ahocevar](https://github.com/ahocevar))
* [#3635](https://github.com/openlayers/ol3/pull/3635) - Create vertex on boundary single click ([@bjornharrtell](https://github.com/bjornharrtell))
* [#3806](https://github.com/openlayers/ol3/pull/3806) - Do not clip canvas for vector layers when wrapping the world ([@ahocevar](https://github.com/ahocevar))
* [#3461](https://github.com/openlayers/ol3/pull/3461) - High level Modify interaction events ([@bjornharrtell](https://github.com/bjornharrtell))
* [#3865](https://github.com/openlayers/ol3/pull/3865) - ol.View#fit() ([@bartvde](https://github.com/bartvde))
* [#3864](https://github.com/openlayers/ol3/pull/3864) - Check projection.canWrapX() before wrapping tiles ([@klokantech](https://github.com/klokantech))
* [#3863](https://github.com/openlayers/ol3/pull/3863) - Handle CDATA in attribute parsing for GML format ([@nhambletCCRI](https://github.com/nhambletCCRI))
* [#3860](https://github.com/openlayers/ol3/pull/3860) - Update example layout. ([@tschaub](https://github.com/tschaub))
* [#3861](https://github.com/openlayers/ol3/pull/3861) - Don't force 'dom' renderer ([@openlayers](https://github.com/openlayers))
* [#3855](https://github.com/openlayers/ol3/pull/3855) - Adding an example with WMTS tiles from IGN Geoportail ([@pgiraud](https://github.com/pgiraud))
* [#3856](https://github.com/openlayers/ol3/pull/3856) - ol.source.TileVector(): bind success function of tileLoadFunction to source ([@plepe](https://github.com/plepe))
* [#3848](https://github.com/openlayers/ol3/pull/3848) - Check for exports before define. ([@tschaub](https://github.com/tschaub))
* [#3845](https://github.com/openlayers/ol3/pull/3845) - Prevent null array to be passed to an ol.Collection ([@fredj](https://github.com/fredj))
* [#3849](https://github.com/openlayers/ol3/pull/3849) - Pad min. and sec. with leading zeros in DMS notation ([@pgiraud](https://github.com/pgiraud))
* [#3842](https://github.com/openlayers/ol3/pull/3842) - Adding a feature-animation example ([@pgiraud](https://github.com/pgiraud))
* [#3833](https://github.com/openlayers/ol3/pull/3833) - Enable use of custom XHR loader for TileVector sources ([@bjornharrtell](https://github.com/bjornharrtell))
* [#3834](https://github.com/openlayers/ol3/pull/3834) - ArcGIS tiled example broken in Chrome ([@bartvde](https://github.com/bartvde))
* [#3829](https://github.com/openlayers/ol3/pull/3829) - incorrect assert message ([@kzr-pzr](https://github.com/kzr-pzr))
* [#3828](https://github.com/openlayers/ol3/pull/3828) - Fix typo in upgrade notes ([@ahocevar](https://github.com/ahocevar))
* [#3826](https://github.com/openlayers/ol3/pull/3826) - Allow custom tileGrid in ol.source.XYZ ([@klokantech](https://github.com/klokantech))
* [#3815](https://github.com/openlayers/ol3/pull/3815) - Simplify tilegrid API and internals ([@ahocevar](https://github.com/ahocevar))
* [#3820](https://github.com/openlayers/ol3/pull/3820) - Make unmanaged vector layers behave more like ol.FeatureOverlay ([@ahocevar](https://github.com/ahocevar))
* [#3822](https://github.com/openlayers/ol3/pull/3822) - Correct docs for updateWhileInteracting ([@probins](https://github.com/probins))
* [#3818](https://github.com/openlayers/ol3/pull/3818) - Make geometry.transform api stable again. ([@probins](https://github.com/probins))
* [#3801](https://github.com/openlayers/ol3/pull/3801) - Respect the tile grid's extent in ol.source.TileVector ([@ahocevar](https://github.com/ahocevar))
* [#3810](https://github.com/openlayers/ol3/pull/3810) - Improve TileGrid documentation and examples ([@ahocevar](https://github.com/ahocevar))
* [#3808](https://github.com/openlayers/ol3/pull/3808) - Correct typo in OverlayOptions ([@probins](https://github.com/probins))
* [#3766](https://github.com/openlayers/ol3/pull/3766) - Add a clickTolerance option to the Draw interaction ([@elemoine](https://github.com/elemoine))
* [#3804](https://github.com/openlayers/ol3/pull/3804) - Remove sentence that was only meant for WMTS tile grids ([@ahocevar](https://github.com/ahocevar))
* [#3800](https://github.com/openlayers/ol3/pull/3800) - Remove further references to FeatureOverlay ([@probins](https://github.com/probins))
* [#3780](https://github.com/openlayers/ol3/pull/3780) - Only expose transformed tile coordinates to the API ([@ahocevar](https://github.com/ahocevar))
* [#3793](https://github.com/openlayers/ol3/pull/3793) - Use 'managed' instead of 'unmanaged' in LayerState ([@ahocevar](https://github.com/ahocevar))
* [#3792](https://github.com/openlayers/ol3/pull/3792) - Link to correct layer base class ([@marcjansen](https://github.com/marcjansen))
* [#3791](https://github.com/openlayers/ol3/pull/3791) - Remove docs referring to removed feature overlay ([@marcjansen](https://github.com/marcjansen))
* [#3790](https://github.com/openlayers/ol3/pull/3790) - Remove unnecessary quotes around object keys ([@fredj](https://github.com/fredj))
* [#3787](https://github.com/openlayers/ol3/pull/3787) - Add 'unmanaged' to ol.layer.LayerState ([@ahocevar](https://github.com/ahocevar))
* [#3784](https://github.com/openlayers/ol3/pull/3784) - Always write the GeoJSONFeature geometry property ([@fredj](https://github.com/fredj))
* [#3783](https://github.com/openlayers/ol3/pull/3783) - Fix broken wmts-hidpi example ([@ahocevar](https://github.com/ahocevar))
* [#3782](https://github.com/openlayers/ol3/pull/3782) - Fix assert documentation typo ([@gberaudo](https://github.com/gberaudo))
* [#3758](https://github.com/openlayers/ol3/pull/3758) - Removal of ol.FeatureOverlay ([@ahocevar](https://github.com/ahocevar))
* [#3775](https://github.com/openlayers/ol3/pull/3775) - Add ol-touch but keep ol-viewport className. ([@pgiraud](https://github.com/pgiraud))
* [#3713](https://github.com/openlayers/ol3/pull/3713) - Add missing propertyNames member for olx.format.WFSWriteGetFeatureOptions ([@bartvde](https://github.com/bartvde))
* [#3763](https://github.com/openlayers/ol3/pull/3763) - Standardise draw/modify descriptions ([@probins](https://github.com/probins))

41
changelog/v3.8.0.md Normal file
View File

@@ -0,0 +1,41 @@
# v3.8.0
## Summary
The v3.8.0 release includes features and fixes from 33 pull requests since v3.7.0. While summer vacations have slowed the pace of development a bit this month, there are some nice improvements in this release. See the complete list below for details.
## New features and fixes
* [#3957](https://github.com/openlayers/ol3/pull/3957) - Properly handle vertex deletion with multiple features. ([@tschaub](https://github.com/tschaub))
* [#3954](https://github.com/openlayers/ol3/pull/3954) - Remove ol.control.Control.bindMouseOutFocusOutBlur function. ([@fredj](https://github.com/fredj))
* [#3214](https://github.com/openlayers/ol3/pull/3214) - Pixel manipulation with raster sources. ([@tschaub](https://github.com/tschaub))
* [#3946](https://github.com/openlayers/ol3/pull/3946) - Fix vertex deletion for Modify interaction on mobile devices. ([@Turbo87](https://github.com/Turbo87))
* [#3910](https://github.com/openlayers/ol3/pull/3910) - Do not provide an AMD environment to ol.ext modules. ([@ahocevar](https://github.com/ahocevar))
* [#3934](https://github.com/openlayers/ol3/pull/3934) - Fix `drawstart` and `drawend` events when drawing a point ([@fredj](https://github.com/fredj))
* [#3774](https://github.com/openlayers/ol3/pull/3774) - Measure tooltips touchdevice ([@pgiraud](https://github.com/pgiraud))
* [#3949](https://github.com/openlayers/ol3/pull/3949) - Remove count argument from `called` function ([@fredj](https://github.com/fredj))
* [#3950](https://github.com/openlayers/ol3/pull/3950) - Remove reference to vbarray.js ([@elemoine](https://github.com/elemoine))
* [#3947](https://github.com/openlayers/ol3/pull/3947) - Clarify documentation of Image source ratio option. ([@alvinlindstam](https://github.com/alvinlindstam))
* [#3920](https://github.com/openlayers/ol3/pull/3920) - Remove use_types_for_optimization from custom build tutorial. ([@probins](https://github.com/probins))
* [#3922](https://github.com/openlayers/ol3/pull/3922) - Document {?-?} pattern in expandUrl ([@probins](https://github.com/probins))
* [#3921](https://github.com/openlayers/ol3/pull/3921) - Cache node_modules on Travis. ([@bjornharrtell](https://github.com/bjornharrtell))
* [#3942](https://github.com/openlayers/ol3/pull/3942) - Fix WMTS TileMatrixSet lookup by SRS identifier ([@ahocevar](https://github.com/ahocevar))
* [#3945](https://github.com/openlayers/ol3/pull/3945) - Simplify icon example and show popup at clicked position ([@ahocevar](https://github.com/ahocevar))
* [#3930](https://github.com/openlayers/ol3/pull/3930) - Use goog.functions.identity instead of goog.identityFunction ([@fredj](https://github.com/fredj))
* [#3929](https://github.com/openlayers/ol3/pull/3929) - Expand description for XYZ source ([@probins](https://github.com/probins))
* [#3933](https://github.com/openlayers/ol3/pull/3933) - Snap center to pixel to avoid floating point issues ([@ahocevar](https://github.com/ahocevar))
* [#3932](https://github.com/openlayers/ol3/pull/3932) - SnapOptions: Fix typo in pixelTolerance JSDoc ([@Turbo87](https://github.com/Turbo87))
* [#3931](https://github.com/openlayers/ol3/pull/3931) - Remove unused htmlparser2 package ([@fredj](https://github.com/fredj))
* [#3912](https://github.com/openlayers/ol3/pull/3912) - Fix the event type fired by goog.fx.Dragger ([@fredj](https://github.com/fredj))
* [#3871](https://github.com/openlayers/ol3/pull/3871) - Document change events properly ([@ahocevar](https://github.com/ahocevar))
* [#3906](https://github.com/openlayers/ol3/pull/3906) - Clear features properly when there is no spatial index ([@ahocevar](https://github.com/ahocevar))
* [#3896](https://github.com/openlayers/ol3/pull/3896) - Fire WebGL precompose event in same sequence as other renderers ([@ahocevar](https://github.com/ahocevar))
* [#3359](https://github.com/openlayers/ol3/pull/3359) - Enable deep clone of MultiPolygon. ([@Kenny806](https://github.com/Kenny806))
* [#3895](https://github.com/openlayers/ol3/pull/3895) - Rework the tile queue for multiple queues. ([@aisaacs](https://github.com/aisaacs))
* [#3894](https://github.com/openlayers/ol3/pull/3894) - Install Python dependencies without sudo. ([@tschaub](https://github.com/tschaub))
* [#3824](https://github.com/openlayers/ol3/pull/3824) - Improve docs for interaction.Select. ([@probins](https://github.com/probins))
* [#3884](https://github.com/openlayers/ol3/pull/3884) - Provide a debug loader for the library. ([@tschaub](https://github.com/tschaub))
* [#3883](https://github.com/openlayers/ol3/pull/3883) - Ignore layer filter for unmanaged layers ([@ahocevar](https://github.com/ahocevar))
* [#3859](https://github.com/openlayers/ol3/pull/3859) - Add in crossOrigin option ([@llambanna](https://github.com/llambanna))
* [#3873](https://github.com/openlayers/ol3/pull/3873) - Correct minor typo in modifyinteraction ([@probins](https://github.com/probins))
* [#3872](https://github.com/openlayers/ol3/pull/3872) - Correct event notations in ol.Feature ([@probins](https://github.com/probins))

7
changelog/v3.8.1.md Normal file
View File

@@ -0,0 +1,7 @@
# v3.8.1
## Summary
This is a patch release that updates the URL for builds shown in the examples. Details below.
* [#3970](https://github.com/openlayers/ol3/pull/3970) - Pull builds from openlayers.org. ([@tschaub](https://github.com/tschaub))

7
changelog/v3.8.2.md Normal file
View File

@@ -0,0 +1,7 @@
# v3.8.2
## Summary
This is a patch release that corrects the URL for builds shown in the examples. Details below.
* [#3979](https://github.com/openlayers/ol3/pull/3979) - Fix URLs for openlayers.org resources. ([@tschaub](https://github.com/tschaub))

91
changelog/v3.9.0.md Normal file
View File

@@ -0,0 +1,91 @@
# v3.9.0
## Summary
The v3.9.0 release includes features and fixes from 62 pull requests since the v3.8.2 release. New features include:
* [#3986](https://github.com/openlayers/ol3/pull/3986) - Modify 'url' option of ol.source.Vector to accept a function ([@alvinlindstam](https://github.com/alvinlindstam))
* [#4069](https://github.com/openlayers/ol3/pull/4069) - Add Z-index to layers ([@gberaudo](https://github.com/gberaudo))
* [#4044](https://github.com/openlayers/ol3/pull/4044) - Add ol.interaction.Draw#continueDrawing ([@elemoine](https://github.com/elemoine))
* [#4008](https://github.com/openlayers/ol3/pull/4008) - Add a Translate interaction ([@elemoine](https://github.com/elemoine))
See the complete list below for details. And see the following notes to know how to upgrade from v3.8.x to v3.9.0.
## Upgrade notes
#### `ol.style.Circle` changes
The experimental `getAnchor`, `getOrigin`, and `getSize` methods have been removed. The anchor and origin of a circle symbolizer are not modifiable, so these properties should not need to be accessed. The radius and stroke width can be used to calculate the rendered size of a circle symbolizer if needed:
```js
// calculate rendered size of a circle symbolizer
var width = 2 * circle.getRadius();
if (circle.getStroke()) {
width += circle.getStroke().getWidth() + 1;
}
```
## New features and fixes
* [#4055](https://github.com/openlayers/ol3/pull/4055) - Improve graticule perf ([@fgravin](https://github.com/fgravin))
* [#4088](https://github.com/openlayers/ol3/pull/4088) - Update jshint to v2.8.0 ([@fredj](https://github.com/fredj))
* [#4089](https://github.com/openlayers/ol3/pull/4089) - SelectEventType in ol.interaction namespace ([@pgiraud](https://github.com/pgiraud))
* [#4095](https://github.com/openlayers/ol3/pull/4095) - Zoom to the extent of the drag box. ([@tschaub](https://github.com/tschaub))
* [#4084](https://github.com/openlayers/ol3/pull/4084) - Fewer circle exports. ([@tschaub](https://github.com/tschaub))
* [#4094](https://github.com/openlayers/ol3/pull/4094) - Allow source.setAttributions() to be exported. ([@tschaub](https://github.com/tschaub))
* [#4096](https://github.com/openlayers/ol3/pull/4096) - Reinstate inheritdoc to fix #4082 ([@bjornharrtell](https://github.com/bjornharrtell))
* [#4091](https://github.com/openlayers/ol3/pull/4091) - Remove unused ol.renderer.webgl.Map.DEFAULT_COLOR_VALUES_ ([@fredj](https://github.com/fredj))
* [#4092](https://github.com/openlayers/ol3/pull/4092) - Minor coding style fixes ([@fredj](https://github.com/fredj))
* [#4083](https://github.com/openlayers/ol3/pull/4083) - Add API descriptions. ([@tschaub](https://github.com/tschaub))
* [#4078](https://github.com/openlayers/ol3/pull/4078) - Enable all the compiler checks ([@fredj](https://github.com/fredj))
* [#4085](https://github.com/openlayers/ol3/pull/4085) - Parse nested document tag ([@oterral](https://github.com/oterral))
* [#4060](https://github.com/openlayers/ol3/pull/4060) - Remove unnecessary cast ([@fredj](https://github.com/fredj))
* [#4064](https://github.com/openlayers/ol3/pull/4064) - Use a private variable to cache the default style array ([@fredj](https://github.com/fredj))
* [#4081](https://github.com/openlayers/ol3/pull/4081) - Update link to workshop. ([@tschaub](https://github.com/tschaub))
* [#4062](https://github.com/openlayers/ol3/pull/4062) - Remove ol.xml.makeParsersNS and use ol.xml.makeStructureNS instead ([@fredj](https://github.com/fredj))
* [#3986](https://github.com/openlayers/ol3/pull/3986) - Modify 'url' option of ol.source.Vector to accept a function ([@alvinlindstam](https://github.com/alvinlindstam))
* [#4077](https://github.com/openlayers/ol3/pull/4077) - Add missing const jsdoc annotation ([@fredj](https://github.com/fredj))
* [#4080](https://github.com/openlayers/ol3/pull/4080) - Remove unused goog.require in examples ([@fredj](https://github.com/fredj))
* [#4041](https://github.com/openlayers/ol3/pull/4041) - Fix custom build issue ([@elemoine](https://github.com/elemoine))
* [#4059](https://github.com/openlayers/ol3/pull/4059) - Clarify drag interaction example to inform about ol.interaction.Translate ([@alvinlindstam](https://github.com/alvinlindstam))
* [#4069](https://github.com/openlayers/ol3/pull/4069) - Add Z-index to layers ([@gberaudo](https://github.com/gberaudo))
* [#4076](https://github.com/openlayers/ol3/pull/4076) - Add assertion for required option 'code' on ol.proj.Projection ([@weskamm](https://github.com/weskamm))
* [#4075](https://github.com/openlayers/ol3/pull/4075) - setOpacity of Image undefined ([@bartvde](https://github.com/bartvde))
* [#4044](https://github.com/openlayers/ol3/pull/4044) - Add ol.interaction.Draw#continueDrawing ([@elemoine](https://github.com/elemoine))
* [#4073](https://github.com/openlayers/ol3/pull/4073) - Better type definition ([@fredj](https://github.com/fredj))
* [#4072](https://github.com/openlayers/ol3/pull/4072) - Update to closure-util 1.7.0 ([@elemoine](https://github.com/elemoine))
* [#4070](https://github.com/openlayers/ol3/pull/4070) - Make the debug server work regardless of the current working directory. ([@tschaub](https://github.com/tschaub))
* [#4067](https://github.com/openlayers/ol3/pull/4067) - Fix bootstrap class name in examples ([@fredj](https://github.com/fredj))
* [#4050](https://github.com/openlayers/ol3/pull/4050) - Use view.getRotation and view.getResolution instead of view.getState ([@fredj](https://github.com/fredj))
* [#4051](https://github.com/openlayers/ol3/pull/4051) - Move wrench node package to devDependencies ([@fredj](https://github.com/fredj))
* [#4047](https://github.com/openlayers/ol3/pull/4047) - Remove pystache dependency ([@fredj](https://github.com/fredj))
* [#4027](https://github.com/openlayers/ol3/pull/4027) - closure-compiler v20150729 compatibility ([@fredj](https://github.com/fredj))
* [#4040](https://github.com/openlayers/ol3/pull/4040) - Better docs for ol.ENABLE_[WEBGL|CANVAS|DOM] ([@elemoine](https://github.com/elemoine))
* [#4032](https://github.com/openlayers/ol3/pull/4032) - Improve ol.Overlay extensibility ([@gberaudo](https://github.com/gberaudo))
* [#4037](https://github.com/openlayers/ol3/pull/4037) - Don't install python packages in before_install ([@fredj](https://github.com/fredj))
* [#4028](https://github.com/openlayers/ol3/pull/4028) - Update to closure-util 1.6 ([@elemoine](https://github.com/elemoine))
* [#4014](https://github.com/openlayers/ol3/pull/4014) - Remove deprecated checkStructDictInheritance ([@fredj](https://github.com/fredj))
* [#3987](https://github.com/openlayers/ol3/pull/3987) - Remove unnecessary cast ([@fredj](https://github.com/fredj))
* [#4035](https://github.com/openlayers/ol3/pull/4035) - Remove unused sphere and ellipsoid methods. ([@tschaub](https://github.com/tschaub))
* [#4031](https://github.com/openlayers/ol3/pull/4031) - Fixing size of popup ([@pgiraud](https://github.com/pgiraud))
* [#4023](https://github.com/openlayers/ol3/pull/4023) - Render map when layer.setMap(map) called ([@elemoine](https://github.com/elemoine))
* [#4026](https://github.com/openlayers/ol3/pull/4026) - Fix Font Awesome CSS class in examples ([@fredj](https://github.com/fredj))
* [#4024](https://github.com/openlayers/ol3/pull/4024) - Correct documentation for ol.FeatureStyleFunction ([@marcjansen](https://github.com/marcjansen))
* [#4011](https://github.com/openlayers/ol3/pull/4011) - Make Modify interaction listen to feature changes ([@elemoine](https://github.com/elemoine))
* [#3917](https://github.com/openlayers/ol3/pull/3917) - Resolved issue with cluster source reloading ([@cmiles74](https://github.com/cmiles74))
* [#4015](https://github.com/openlayers/ol3/pull/4015) - Add a getUrls Method to ol.source.XYZ ([@weskamm](https://github.com/weskamm))
* [#4019](https://github.com/openlayers/ol3/pull/4019) - Simplify .editorconfig file ([@marcjansen](https://github.com/marcjansen))
* [#4002](https://github.com/openlayers/ol3/pull/4002) - Update closure-library to latest commit ([@fredj](https://github.com/fredj))
* [#4018](https://github.com/openlayers/ol3/pull/4018) - Fix rotate buttons in animation example ([@marcjansen](https://github.com/marcjansen))
* [#4013](https://github.com/openlayers/ol3/pull/4013) - Use a more recent version of marked ([@marcjansen](https://github.com/marcjansen))
* [#4017](https://github.com/openlayers/ol3/pull/4017) - Do not overwrite projections in the registry simply by using `new ol.proj.Projection()` ([@ahocevar](https://github.com/ahocevar))
* [#4008](https://github.com/openlayers/ol3/pull/4008) - Add a Translate interaction ([@elemoine](https://github.com/elemoine))
* [#3230](https://github.com/openlayers/ol3/pull/3230) - Add stroke to default editing style for geometry collections ([@pgiraud](https://github.com/pgiraud))
* [#4007](https://github.com/openlayers/ol3/pull/4007) - Do not use Function.prototype.bind in examples ([@elemoine](https://github.com/elemoine))
* [#4006](https://github.com/openlayers/ol3/pull/4006) - Fix typo (vegetaion -> vegetation) ([@elemoine](https://github.com/elemoine))
* [#3993](https://github.com/openlayers/ol3/pull/3993) - Replace base symbols with overridden ones when generating info.json ([@ahocevar](https://github.com/ahocevar))
* [#3992](https://github.com/openlayers/ol3/pull/3992) - Fix typo in Makefile ([@fredj](https://github.com/fredj))
* [#3989](https://github.com/openlayers/ol3/pull/3989) - Handle JSONP errors in ol.source.TileJSON ([@fredj](https://github.com/fredj))
* [#3983](https://github.com/openlayers/ol3/pull/3983) - Remove doc footer with timestamp. ([@tschaub](https://github.com/tschaub))
* [#3984](https://github.com/openlayers/ol3/pull/3984) - Style source control links in examples. ([@tschaub](https://github.com/tschaub))
* [#3982](https://github.com/openlayers/ol3/pull/3982) - Rebuild examples if package.json changes. ([@tschaub](https://github.com/tschaub))

View File

@@ -1,3 +1,3 @@
{ {
"library_url": "https://github.com/google/closure-library/archive/0011afd534469ba111786fe68300a634e08a4d80.zip" "library_url": "https://github.com/google/closure-library/archive/5b25e65.zip"
} }

51
config/example.json Normal file
View File

@@ -0,0 +1,51 @@
{
"exports": [],
"src": [
"src/**/*.js",
"build/ol.ext/*.js",
"build/examples/{{id}}.js"
],
"compile": {
"js": [
"externs/olx.js",
"externs/oli.js"
],
"externs": [
"externs/bingmaps.js",
"externs/bootstrap.js",
"externs/closure-compiler.js",
"externs/esrijson.js",
"externs/example.js",
"externs/fastclick.js",
"externs/geojson.js",
"externs/jquery-1.9.js",
"externs/proj4js.js",
"externs/tilejson.js",
"externs/topojson.js"
],
"define": [
"goog.array.ASSUME_NATIVE_FUNCTIONS=true",
"goog.dom.ASSUME_STANDARDS_MODE=true",
"goog.json.USE_NATIVE_JSON=true",
"goog.DEBUG=false"
],
"jscomp_error": [
"*"
],
"jscomp_off": [
"useOfGoogBase",
"unnecessaryCasts",
"lintChecks",
"missingProvide",
"unknownDefines"
],
"extra_annotation_name": [
"api", "observable"
],
"compilation_level": "ADVANCED",
"warning_level": "VERBOSE",
"output_wrapper": "(function(){%output%})();",
"use_types_for_optimization": true,
"manage_closure_dependencies": true
}
}

View File

@@ -3,7 +3,7 @@
"src": [ "src": [
"src/**/*.js", "src/**/*.js",
"build/ol.ext/*.js", "build/ol.ext/*.js",
"build/examples/all.js" "build/compiled-examples/all.js"
], ],
"compile": { "compile": {
"js": [ "js": [
@@ -14,14 +14,14 @@
"externs/bingmaps.js", "externs/bingmaps.js",
"externs/bootstrap.js", "externs/bootstrap.js",
"externs/closure-compiler.js", "externs/closure-compiler.js",
"externs/esrijson.js",
"externs/example.js", "externs/example.js",
"externs/fastclick.js", "externs/fastclick.js",
"externs/geojson.js", "externs/geojson.js",
"externs/jquery-1.9.js", "externs/jquery-1.9.js",
"externs/proj4js.js", "externs/proj4js.js",
"externs/tilejson.js", "externs/tilejson.js",
"externs/topojson.js", "externs/topojson.js"
"externs/vbarray.js"
], ],
"define": [ "define": [
"goog.array.ASSUME_NATIVE_FUNCTIONS=true", "goog.array.ASSUME_NATIVE_FUNCTIONS=true",
@@ -30,40 +30,12 @@
"goog.DEBUG=false" "goog.DEBUG=false"
], ],
"jscomp_error": [ "jscomp_error": [
"accessControls", "*"
"ambiguousFunctionDecl", ],
"checkEventfulObjectDisposal", "jscomp_off": [
"checkRegExp", "useOfGoogBase",
"checkStructDictInheritance", "unnecessaryCasts",
"checkTypes", "lintChecks"
"checkVars",
"const",
"constantProperty",
"deprecated",
"duplicateMessage",
"es3",
"es5Strict",
"externsValidation",
"fileoverviewTags",
"globalThis",
"internetExplorerChecks",
"invalidCasts",
"misplacedTypeAnnotation",
"missingGetCssName",
"missingProperties",
"missingProvide",
"missingRequire",
"missingReturn",
"newCheckTypes",
"nonStandardJsDocs",
"suspiciousCode",
"strictModuleDepCheck",
"typeInvalidation",
"undefinedNames",
"undefinedVars",
"unknownDefines",
"uselessCode",
"visibility"
], ],
"extra_annotation_name": [ "extra_annotation_name": [
"api", "observable" "api", "observable"

View File

@@ -0,0 +1 @@
{{{ contents }}}

View File

@@ -0,0 +1,87 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="chrome=1">
<meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css" type="text/css">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" type="text/css">
<link rel="stylesheet" href="./resources/prism/prism.css" type="text/css">
<link rel="stylesheet" href="../css/ol.css" type="text/css">
<link rel="stylesheet" href="./resources/layout.css" type="text/css">
{{{ extraHead.local }}}
{{{ css.tag }}}
<script src="./resources/zeroclipboard/ZeroClipboard.min.js"></script>
<title>{{ title }}</title>
</head>
<body>
<header class="navbar" role="navigation">
<div class="container" id="navbar-inner-container">
<a class="navbar-brand" href="./"><img src="./resources/logo-70x70.png">&nbsp;OpenLayers 3 Examples</a>
</div>
</header>
<div class="container-fluid">
{{{ contents }}}
<div class="row-fluid">
<div class="span12">
<h4 id="title">{{ title }}</h4>
<p id="shortdesc">{{ shortdesc }}</p>
<div id="docs">{{ md docs }}</div>
<div id="tags">{{ tags }}</div>
<div id="api-links">Related API documentation: {{{ js.apiHtml }}}</div>
</div>
</div>
<div class="row-fluid">
<div id="source-controls">
<a id="copy-button"><i class="fa fa-clipboard"></i> Copy</a>
<a id="jsfiddle-button"><i class="fa fa-jsfiddle"></i> Edit</a>
</div>
<form method="POST" id="jsfiddle-form" target="_blank" action="http://jsfiddle.net/api/post/jquery/1.11.0/">
<textarea class="hidden" name="js">{{ js.source }}</textarea>
<textarea class="hidden" name="css">{{ css.source }}</textarea>
<textarea class="hidden" name="html">{{ contents }}</textarea>
<input type="hidden" name="wrap" value="l">
<input type="hidden" name="resources" value="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css,https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js,http://openlayers.org/en/v{{ olVersion }}/css/ol.css,http://openlayers.org/en/v{{ olVersion }}/build/ol.js{{ extraResources }}">
</form>
<pre><code id="example-source" class="language-markup">&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;{{ title }}&lt;/title&gt;
&lt;script src="https://code.jquery.com/jquery-1.11.2.min.js"&gt;&lt;/script&gt;
&lt;link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css"&gt;
&lt;script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"&gt;&lt;/script&gt;
&lt;link rel="stylesheet" href="http://openlayers.org/en/v{{ olVersion }}/css/ol.css" type="text/css"&gt;
&lt;script src="http://openlayers.org/en/v{{ olVersion }}/build/ol.js"&gt;&lt;/script&gt;
{{ extraHead.remote }}
{{#if css.source}}
&lt;style&gt;
{{ css.source }}
&lt;/style&gt;
{{/if}}
&lt;/head&gt;
&lt;body&gt;
&lt;div class="container-fluid"&gt;
{{ contents }}
&lt;/div&gt;
&lt;script&gt;
{{ js.source }}
&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;</code></pre>
</div>
</div>
<script src="https://code.jquery.com/jquery-1.11.2.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
<script src="./resources/common.js"></script>
<script src="./resources/prism/prism.min.js"></script>
{{{ js.tag }}}
</body>
</html>

21
config/examples/readme.md Normal file
View File

@@ -0,0 +1,21 @@
This folder contains example templates. These templates are used to build the examples in the `examples/` folder. The resulting examples are written to the `build/examples` folder.
Although the main purpose of these examples is to demonstrate how to use the API, they also serve other purposes in the development cycle, and so are not exactly as they would be in normal application code:
* every time the library changes, they are compiled together with the library as a basic check that they remain in sync with the library
* they use a special loader script to enable defining at run time which build mode (raw/debug/advanced) to use
To enable this, examples have the following, not needed in application code:
* each html file loads `loader.js`; application code would not need this, but would instead load the appropriate library build file, either a hosted version or a custom build
* each js file starts with `goog.require` functions, used by the compiler; application code would only have these if the code is to be compiled together with the library and/or Closure library
* some js files use type definitions (comments with @type tags); these are also used by the compiler, and are only needed if the code is to be compiled together with the library
* html files load `resources/common.js` and some scripts use `common.getRendererFromQueryString()` to set the map renderer; application code would not need these
* in addition, examples use Twitter Bootstrap and jQuery; this is of course not a requirement - you may use whichever presentation/helper libraries you wish
At the bottom of each example generated in the `build/examples` folder, a modified version of its source code is shown. That modified version can be run standalone and is usually used as starting point for users to extend examples into their own application.

View File

@@ -16,9 +16,8 @@
] ]
}, },
"plugins": [ "plugins": [
"node_modules/jsdoc/plugins/markdown", "node_modules/jsdoc-fork/plugins/markdown",
"config/jsdoc/api/plugins/inheritdoc", "config/jsdoc/api/plugins/inheritdoc",
"config/jsdoc/api/plugins/interface",
"config/jsdoc/api/plugins/typedefs", "config/jsdoc/api/plugins/typedefs",
"config/jsdoc/api/plugins/events", "config/jsdoc/api/plugins/events",
"config/jsdoc/api/plugins/observable", "config/jsdoc/api/plugins/observable",

View File

@@ -29,13 +29,11 @@ Interactions for [vector features](ol.Feature.html)
<br>[Vector sources](ol.source.Vector.html) for [ol.layer.Vector](ol.layer.Vector.html) <br>[Vector sources](ol.source.Vector.html) for [ol.layer.Vector](ol.layer.Vector.html)
<br>[Formats](ol.format.Feature.html) for reading/writing vector data <br>[Formats](ol.format.Feature.html) for reading/writing vector data
<br>[ol.format.WMSCapabilities](ol.format.WMSCapabilities.html)</td></tr> <br>[ol.format.WMSCapabilities](ol.format.WMSCapabilities.html)</td></tr>
<tr><th>Projections</th><th>2-way bindings</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 [ol.proj.transform()](ol.proj.html#transform) and [ol.proj.transformExtent()](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()](ol.proj.html#transform) and [ol.proj.transformExtent()](ol.proj.html#transformExtent).</p>
[ol.proj](ol.proj.html)</td> [ol.proj](ol.proj.html)</td>
<td><p>[Objects](ol.Object.html) can be kept in sync using the [bindTo()](ol.Object.html#bindTo) method.</p> <td><p>Changes to all [ol.Objects](ol.Object.html) can observed by calling the [object.on('propertychange')](ol.Object.html#on) method. Listeners receive an [ol.ObjectEvent](ol.ObjectEvent.html) with information on the changed property and old value.</p>
<p>A [DOM Input](ol.dom.Input.html) class is available to bind Object properties to HTML Input elements.</p></td>
<td>[ol.DeviceOrientation](ol.DeviceOrientation.html)<br> <td>[ol.DeviceOrientation](ol.DeviceOrientation.html)<br>
[ol.Geolocation](ol.Geolocation.html)<br> [ol.Geolocation](ol.Geolocation.html)<br>
[ol.Overlay](ol.Overlay.html)<br> [ol.Overlay](ol.Overlay.html)<br></td>
[ol.FeatureOverlay](ol.FeatureOverlay.html)<br></td>
</tr></table> </tr></table>

View File

@@ -16,7 +16,7 @@ exports.defineTags = function(dictionary) {
doclet.stability = level; doclet.stability = level;
} else { } else {
var errorText = util.format('Invalid stability level (%s) in %s line %s', tag.text, doclet.meta.filename, doclet.meta.lineno); var errorText = util.format('Invalid stability level (%s) in %s line %s', tag.text, doclet.meta.filename, doclet.meta.lineno);
require('jsdoc/util/error').handle( new Error(errorText) ); require('jsdoc-fork/lib/jsdoc/util/error').handle( new Error(errorText) );
} }
} }
}); });

View File

@@ -106,4 +106,4 @@ exports.handlers = {
} }
} }
}; };

View File

@@ -1,25 +0,0 @@
exports.defineTags = function(dictionary) {
var classTag = dictionary.lookUp('class');
dictionary.defineTag('interface', {
mustHaveValue: false,
onTagged: function(doclet, tag) {
classTag.onTagged.apply(this, arguments);
doclet.interface = true;
}
});
var augmentsTag = dictionary.lookUp('augments');
dictionary.defineTag('implements', {
mustHaveValue: true,
onTagged: function(doclet, tag) {
tag.value = tag.value.match(/^\{?([^\}]*)\}?$/)[1];
augmentsTag.onTagged.apply(this, arguments);
if (!doclet.implements) {
doclet.implements = [];
}
doclet.implements.push(tag.value);
}
});
};

View File

@@ -5,6 +5,10 @@
var lastOlxTypedef = null; var lastOlxTypedef = null;
var olxTypes = {}; var olxTypes = {};
// names of the olx typenames
var olxTypeNames = [];
// types that are undefined or typedefs containing undefined
var undefinedLikes = null;
function addSubparams(params) { function addSubparams(params) {
for (var j = 0, jj = params.length; j < jj; ++j) { for (var j = 0, jj = params.length; j < jj; ++j) {
@@ -23,6 +27,63 @@ function addSubparams(params) {
} }
} }
/**
* Changes the description of the param, if it is found to be a required
* option of an olxTypeName.
*/
function markRequiredIfNeeded(doclet){
var memberof = doclet.memberof;
// only check doclets that belong to an olxTypeName
if (!memberof || olxTypeNames.indexOf(memberof) == -1) {
return doclet;
}
var types = doclet.type.names;
var isRequiredParam = true;
// iterate over all types that are like-undefined (see above for explanation)
for (var idx = undefinedLikes.length - 1; idx >= 0; idx--) {
var 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) {
var reqSnippet = '<span class="required-option">Required.</span></p>';
var endsWithP = /<\/p>$/i;
var 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.
*/
function findTypesLikeUndefined(doclets) {
undefinedLikes = ['undefined']; // include type 'undefined' explicitly
for (var i = doclets.length - 1; i >= 0; --i) {
var doclet = doclets[i];
if(doclet.kind === 'typedef') {
var types = doclet.type.names;
if (types.indexOf('undefined') !== -1) {
// the typedef contains 'undefined', so it self is undefinedLike.
undefinedLikes.push(doclet.longname);
}
}
}
}
exports.handlers = { exports.handlers = {
newDoclet: function(e) { newDoclet: function(e) {
@@ -34,6 +95,7 @@ exports.handlers = {
} }
if (doclet.kind == 'typedef') { if (doclet.kind == 'typedef') {
lastOlxTypedef = doclet; lastOlxTypedef = doclet;
olxTypeNames.push(doclet.longname);
olxTypes[doclet.longname] = []; olxTypes[doclet.longname] = [];
doclet.properties = []; doclet.properties = [];
} else if (lastOlxTypedef && doclet.memberof == lastOlxTypedef.longname) { } else if (lastOlxTypedef && doclet.memberof == lastOlxTypedef.longname) {
@@ -51,12 +113,14 @@ exports.handlers = {
parseComplete: function(e) { parseComplete: function(e) {
var doclets = e.doclets; var doclets = e.doclets;
findTypesLikeUndefined(doclets);
for (var i = doclets.length - 1; i >= 0; --i) { for (var i = doclets.length - 1; i >= 0; --i) {
var doclet = doclets[i]; var doclet = doclets[i];
var params = doclet.params; var params = doclet.params;
if (params) { if (params) {
addSubparams(params); addSubparams(params);
} }
markRequiredIfNeeded(doclet);
} }
} }

View File

@@ -24,6 +24,8 @@ The second line tells the Closure compiler the type of the argument.
The third line (`@api`) marks the method as part of the api and thus exportable. The stability can be added as value, e.g. `@api stable`. Without such an api annotation, the method will not be documented in the generated API documentation. Symbols without an api annotation will also not be exportable (unless they are explicitly exported with a `goog.exportProperty` call). The third line (`@api`) marks the method as part of the api and thus exportable. The stability can be added as value, e.g. `@api stable`. Without such an api annotation, the method will not be documented in the generated API documentation. Symbols without an api annotation will also not be exportable (unless they are explicitly exported with a `goog.exportProperty` call).
The `@api` annotation can be used in conjunciton with the `@inheritDoc` annotation to export a symbol that is documented on a parent class (where the method may be abstract). In general, `@api` annotations should never be used on abstract methods (only on their implementations).
### Events ### Events
Events are documented using `@fires` and `@event` annotations: Events are documented using `@fires` and `@event` annotations:

View File

@@ -1,10 +1,10 @@
/*global env: true */ /*global env: true */
var template = require('jsdoc/template'), var template = require('jsdoc-fork/lib/jsdoc/template'),
fs = require('jsdoc/fs'), fs = require('jsdoc-fork/lib/jsdoc/fs'),
path = require('jsdoc/path'), path = require('jsdoc-fork/lib/jsdoc/path'),
taffy = require('taffydb').taffy, taffy = require('taffydb').taffy,
handle = require('jsdoc/util/error').handle, handle = require('jsdoc-fork/lib/jsdoc/util/error').handle,
helper = require('jsdoc/util/templateHelper'), helper = require('jsdoc-fork/lib/jsdoc/util/templateHelper'),
_ = require('underscore'), _ = require('underscore'),
htmlsafe = helper.htmlsafe, htmlsafe = helper.htmlsafe,
linkto = helper.linkto, linkto = helper.linkto,
@@ -29,9 +29,9 @@ function getAncestorLinks(doclet) {
function hashToLink(doclet, hash) { function hashToLink(doclet, hash) {
if ( !/^(#.+)/.test(hash) ) { return hash; } if ( !/^(#.+)/.test(hash) ) { return hash; }
var url = helper.createLink(doclet); var url = helper.createLink(doclet);
url = url.replace(/(#.+|$)/, hash); url = url.replace(/(#.+|$)/, hash);
return '<a href="' + url + '">' + hash + '</a>'; return '<a href="' + url + '">' + hash + '</a>';
} }
@@ -59,15 +59,15 @@ function needsSignature(doclet) {
function addSignatureParams(f) { function addSignatureParams(f) {
var params = helper.getSignatureParams(f, 'optional'); var params = helper.getSignatureParams(f, 'optional');
f.signature = (f.signature || '') + '('+params.join(', ')+')'; f.signature = (f.signature || '') + '('+params.join(', ')+')';
} }
function addSignatureReturns(f) { function addSignatureReturns(f) {
var returnTypes = helper.getSignatureReturns(f); var returnTypes = helper.getSignatureReturns(f);
f.signature = '<span class="signature">'+(f.signature || '') + '</span>'; f.signature = '<span class="signature">'+(f.signature || '') + '</span>';
if (returnTypes.length) { if (returnTypes.length) {
f.signature += '<span class="glyphicon glyphicon-circle-arrow-right"></span><span class="type-signature returnType">'+(returnTypes.length ? '{'+returnTypes.join('|')+'}' : '')+'</span>'; f.signature += '<span class="glyphicon glyphicon-circle-arrow-right"></span><span class="type-signature returnType">'+(returnTypes.length ? '{'+returnTypes.join('|')+'}' : '')+'</span>';
} }
@@ -75,7 +75,7 @@ function addSignatureReturns(f) {
function addSignatureTypes(f) { function addSignatureTypes(f) {
var types = helper.getSignatureTypes(f); var types = helper.getSignatureTypes(f);
f.signature = (f.signature || '') + '<span class="type-signature">'+(types.length? ' :'+types.join('|') : '')+' </span>'; f.signature = (f.signature || '') + '<span class="type-signature">'+(types.length? ' :'+types.join('|') : '')+' </span>';
} }
@@ -106,7 +106,7 @@ function getPathFromDoclet(doclet) {
return filepath; return filepath;
} }
function generate(title, docs, filename, resolveLinks) { function generate(title, docs, filename, resolveLinks) {
resolveLinks = resolveLinks === false ? false : true; resolveLinks = resolveLinks === false ? false : true;
@@ -115,14 +115,14 @@ function generate(title, docs, filename, resolveLinks) {
title: title, title: title,
docs: docs docs: docs
}; };
var outpath = path.join(outdir, filename), var outpath = path.join(outdir, filename),
html = view.render('container.tmpl', docData); html = view.render('container.tmpl', docData);
if (resolveLinks) { if (resolveLinks) {
html = helper.resolveLinks(html); // turn {@link foo} into <a href="foodoc.html">foo</a> html = helper.resolveLinks(html); // turn {@link foo} into <a href="foodoc.html">foo</a>
} }
fs.writeFileSync(outpath, html, 'utf8'); fs.writeFileSync(outpath, html, 'utf8');
} }
@@ -153,7 +153,7 @@ function generateSourceFiles(sourceFiles) {
* exports only that class or function), then attach the classes or functions to the `module` * exports only that class or function), then attach the classes or functions to the `module`
* property of the appropriate module doclets. The name of each class or function is also updated * property of the appropriate module doclets. The name of each class or function is also updated
* 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.
@@ -268,7 +268,7 @@ exports.publish = function(taffyData, opts, tutorials) {
var templatePath = opts.template; var templatePath = opts.template;
view = new template.Template(templatePath + '/tmpl'); view = new template.Template(templatePath + '/tmpl');
// claim some special filenames in advance, so the All-Powerful Overseer of Filename Uniqueness // claim some special filenames in advance, so the All-Powerful Overseer of Filename Uniqueness
// doesn't try to hand them out later // doesn't try to hand them out later
var indexUrl = helper.getUniqueFilename('index'); var indexUrl = helper.getUniqueFilename('index');
@@ -291,16 +291,16 @@ exports.publish = function(taffyData, opts, tutorials) {
var sourceFilePaths = []; var sourceFilePaths = [];
data().each(function(doclet) { data().each(function(doclet) {
doclet.attribs = ''; doclet.attribs = '';
if (doclet.examples) { if (doclet.examples) {
doclet.examples = doclet.examples.map(function(example) { doclet.examples = doclet.examples.map(function(example) {
var caption, code; var caption, code;
if (example.match(/^\s*<caption>([\s\S]+?)<\/caption>(\s*[\n\r])([\s\S]+)$/i)) { if (example.match(/^\s*<caption>([\s\S]+?)<\/caption>(\s*[\n\r])([\s\S]+)$/i)) {
caption = RegExp.$1; caption = RegExp.$1;
code = RegExp.$3; code = RegExp.$3;
} }
return { return {
caption: caption || '', caption: caption || '',
code: code || example code: code || example
@@ -326,7 +326,7 @@ exports.publish = function(taffyData, opts, tutorials) {
sourceFilePaths.push(resolvedSourcePath); sourceFilePaths.push(resolvedSourcePath);
} }
}); });
// update outdir if necessary, then create outdir // update outdir if necessary, then create outdir
var packageInfo = ( find({kind: 'package'}) || [] ) [0]; var packageInfo = ( find({kind: 'package'}) || [] ) [0];
if (packageInfo && packageInfo.name) { if (packageInfo && packageInfo.name) {
@@ -350,8 +350,8 @@ exports.publish = function(taffyData, opts, tutorials) {
var staticFileScanner; var staticFileScanner;
if (conf['default'].staticFiles) { if (conf['default'].staticFiles) {
staticFilePaths = conf['default'].staticFiles.paths || []; staticFilePaths = conf['default'].staticFiles.paths || [];
staticFileFilter = new (require('jsdoc/src/filter')).Filter(conf['default'].staticFiles); staticFileFilter = new (require('jsdoc-fork/lib/jsdoc/src/filter')).Filter(conf['default'].staticFiles);
staticFileScanner = new (require('jsdoc/src/scanner')).Scanner(); staticFileScanner = new (require('jsdoc-fork/lib/jsdoc/src/scanner')).Scanner();
staticFilePaths.forEach(function(filePath) { staticFilePaths.forEach(function(filePath) {
var extraStaticFiles = staticFileScanner.scan([filePath], 10, staticFileFilter); var extraStaticFiles = staticFileScanner.scan([filePath], 10, staticFileFilter);
@@ -365,7 +365,7 @@ exports.publish = function(taffyData, opts, tutorials) {
}); });
}); });
} }
if (sourceFilePaths.length) { if (sourceFilePaths.length) {
sourceFiles = shortenPaths( sourceFiles, path.commonPrefix(sourceFilePaths) ); sourceFiles = shortenPaths( sourceFiles, path.commonPrefix(sourceFilePaths) );
} }
@@ -383,7 +383,7 @@ exports.publish = function(taffyData, opts, tutorials) {
} }
} }
}); });
data().each(function(doclet) { data().each(function(doclet) {
var url = helper.longnameToUrl[doclet.longname]; var url = helper.longnameToUrl[doclet.longname];
@@ -393,13 +393,13 @@ exports.publish = function(taffyData, opts, tutorials) {
else { else {
doclet.id = doclet.name; doclet.id = doclet.name;
} }
if ( needsSignature(doclet) ) { if ( needsSignature(doclet) ) {
addSignatureParams(doclet); addSignatureParams(doclet);
addSignatureReturns(doclet); addSignatureReturns(doclet);
} }
}); });
// do this after the urls have all been generated // do this after the urls have all been generated
data().each(function(doclet) { data().each(function(doclet) {
doclet.ancestors = getAncestorLinks(doclet); doclet.ancestors = getAncestorLinks(doclet);
@@ -407,13 +407,13 @@ exports.publish = function(taffyData, opts, tutorials) {
if (doclet.kind === 'member') { if (doclet.kind === 'member') {
addSignatureTypes(doclet); addSignatureTypes(doclet);
} }
if (doclet.kind === 'constant') { if (doclet.kind === 'constant') {
addSignatureTypes(doclet); addSignatureTypes(doclet);
doclet.kind = 'member'; doclet.kind = 'member';
} }
}); });
var members = helper.getMembers(data); var members = helper.getMembers(data);
members.tutorials = tutorials.children; members.tutorials = tutorials.children;
@@ -437,7 +437,7 @@ exports.publish = function(taffyData, opts, tutorials) {
} }
if (members.globals.length) { generate('Global', [{kind: 'globalobj'}], globalUrl); } if (members.globals.length) { generate('Global', [{kind: 'globalobj'}], globalUrl); }
// index page displays information from package.json and lists files // index page displays information from package.json and lists files
var files = find({kind: 'file'}), var files = find({kind: 'file'}),
packages = find({kind: 'package'}); packages = find({kind: 'package'});
@@ -454,14 +454,14 @@ exports.publish = function(taffyData, opts, tutorials) {
var namespaces = taffy(members.namespaces); var namespaces = taffy(members.namespaces);
var mixins = taffy(members.mixins); var mixins = taffy(members.mixins);
var externals = taffy(members.externals); var externals = taffy(members.externals);
for (var longname in helper.longnameToUrl) { for (var longname in helper.longnameToUrl) {
if ( hasOwnProp.call(helper.longnameToUrl, longname) ) { if ( hasOwnProp.call(helper.longnameToUrl, longname) ) {
var myClasses = helper.find(classes, {longname: longname}); var myClasses = helper.find(classes, {longname: longname});
if (myClasses.length) { if (myClasses.length) {
generate('Class: ' + myClasses[0].name, myClasses, helper.longnameToUrl[longname]); generate('Class: ' + myClasses[0].name, myClasses, helper.longnameToUrl[longname]);
} }
var myModules = helper.find(modules, {longname: longname}); var myModules = helper.find(modules, {longname: longname});
if (myModules.length) { if (myModules.length) {
generate('Module: ' + myModules[0].name, myModules, helper.longnameToUrl[longname]); generate('Module: ' + myModules[0].name, myModules, helper.longnameToUrl[longname]);
@@ -471,7 +471,7 @@ exports.publish = function(taffyData, opts, tutorials) {
if (myNamespaces.length) { if (myNamespaces.length) {
generate('Namespace: ' + myNamespaces[0].name, myNamespaces, helper.longnameToUrl[longname]); generate('Namespace: ' + myNamespaces[0].name, myNamespaces, helper.longnameToUrl[longname]);
} }
var myMixins = helper.find(mixins, {longname: longname}); var myMixins = helper.find(mixins, {longname: longname});
if (myMixins.length) { if (myMixins.length) {
generate('Mixin: ' + myMixins[0].name, myMixins, helper.longnameToUrl[longname]); generate('Mixin: ' + myMixins[0].name, myMixins, helper.longnameToUrl[longname]);
@@ -492,16 +492,16 @@ exports.publish = function(taffyData, opts, tutorials) {
content: tutorial.parse(), content: tutorial.parse(),
children: tutorial.children children: tutorial.children
}; };
var tutorialPath = path.join(outdir, filename), var tutorialPath = path.join(outdir, filename),
html = view.render('tutorial.tmpl', tutorialData); html = view.render('tutorial.tmpl', tutorialData);
// yes, you can use {@link} in tutorials too! // yes, you can use {@link} in tutorials too!
html = helper.resolveLinks(html); // turn {@link foo} into <a href="foodoc.html">foo</a> html = helper.resolveLinks(html); // turn {@link foo} into <a href="foodoc.html">foo</a>
fs.writeFileSync(tutorialPath, html, 'utf8'); fs.writeFileSync(tutorialPath, html, 'utf8');
} }
// tutorials can have only one parent so there is no risk for loops // tutorials can have only one parent so there is no risk for loops
function saveChildren(node) { function saveChildren(node) {
node.children.forEach(function(child) { node.children.forEach(function(child) {

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

View File

@@ -53,13 +53,28 @@ $(function () {
$(window).on('resize', _onResize); $(window).on('resize', _onResize);
_onResize(); _onResize();
// create source code links to github
var srcLinks = $('div.tag-source');
var masterSearch = window.location.href.match(/\/([^\/]*\/)apidoc\//);
if (masterSearch && masterSearch.length) {
var branch = masterSearch[1];
srcLinks.each(function(i, el) {
var textParts = el.innerHTML.trim().split(', ');
var link = 'https://github.com/openlayers/ol3/blob/' + branch +
textParts[0];
el.innerHTML = '<a href="' + link + '">' + textParts[0] + '</a>, ' +
'<a href="' + link + textParts[1].replace('line ', '#l') + '">' +
textParts[1] + '</a>';
});
}
// show/hide unstable items // show/hide unstable items
var links = $('a[href^="ol."]'); var links = $('a[href^="ol."]');
var unstable = $('.unstable'); var unstable = $('.unstable');
var stabilityToggle = $('#stability-toggle'); var stabilityToggle = $('#stability-toggle');
stabilityToggle.change(function() { stabilityToggle.change(function() {
unstable.toggleClass('hidden', this.checked); unstable.toggleClass('hidden', this.checked);
var search = this.checked ? '' : '?unstable=true'; var search = this.checked ? '?stableonly=true' : '';
links.each(function(i, el) { links.each(function(i, el) {
this.href = this.pathname + search + this.hash; this.href = this.pathname + search + this.hash;
}); });
@@ -73,6 +88,6 @@ $(function () {
links.each(function(i, el) { links.each(function(i, el) {
this.href = this.pathname + search + this.hash; this.href = this.pathname + search + this.hash;
}); });
stabilityToggle.prop('checked', search !== '?unstable=true'); stabilityToggle.prop('checked', search === '?stableonly=true');
unstable.toggleClass('hidden', stabilityToggle[0].checked); unstable.toggleClass('hidden', stabilityToggle[0].checked);
}); });

File diff suppressed because one or more lines are too long

View File

@@ -1,15 +1,47 @@
@import url(http://fonts.googleapis.com/css?family=Quattrocento+Sans:400,400italic,700); @import url(http://fonts.googleapis.com/css?family=Quattrocento+Sans:400,400italic,700);
.navbar-inverse {
border: 0;
}
.navbar-inverse .navbar-inner { .navbar-inverse .navbar-inner {
background: #1F6B75; background: #1F6B75;
height: 50px; height: 50px;
text-shadow: 1px 1px 2px rgba(0,0,0,0.25);
} }
.navbar-inverse .brand { .navbar-inverse .brand {
color: white; color: #fff;
font-size: 20px; font-size: 160%;
font-weight: bold;
position: absolute;
top: 6px;
left: 16px;
}
.navbar-inverse .brand:hover,
.navbar-inverse .brand:focus {
color: #aae1e9;
text-decoration: none;
}
.navbar-inverse .brand img {
width: 35px;
height: 35px;
vertical-align: middle;
margin-right: 5px;
border:0;
} }
.navbar-inverse .container { .navbar-inverse .container {
padding: 5px 0 5px 0; padding: 0;
} }
.navbar-inverse .navbar-nav>li>a {
color: #fff;
}
.navbar-inverse .navbar-nav>li>a:hover,
.navbar-inverse .navbar-nav>li>a:focus,
.navbar-inverse .navbar-nav>li>a.active
{
outline:0;
color: #fff;
background-color: #268591;
}
body { body {
padding-top: 50px; padding-top: 50px;
} }
@@ -20,6 +52,8 @@ body {
a { a {
position: relative; position: relative;
z-index: 1; z-index: 1;
-webkit-transition: all .2s;
transition: all .2s;
} }
.navigation li { .navigation li {
color: #888; color: #888;
@@ -379,5 +413,6 @@ footer {
color: white; color: white;
position: absolute; position: absolute;
top: 1em; top: 1em;
right: 8em; left: 250px;
font-weight: normal;
} }

View File

@@ -2,7 +2,7 @@
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<title>OpenLayers 3 API Documentation - <?js= title ?></title> <title>OpenLayers 3 API Reference - <?js= title ?></title>
<script src="scripts/prettify/prettify.js"> </script> <script src="scripts/prettify/prettify.js"> </script>
<script src="scripts/prettify/lang-css.js"> </script> <script src="scripts/prettify/lang-css.js"> </script>
<script src="scripts/jquery.min.js"> </script> <script src="scripts/jquery.min.js"> </script>
@@ -18,11 +18,16 @@
<div class="navbar navbar-inverse navbar-fixed-top"> <div class="navbar navbar-inverse navbar-fixed-top">
<div class="navbar-inner"> <div class="navbar-inner">
<div class="container"> <div class="container">
<a class="brand" href="/"><img src="../resources/logo.png" width="40"> OpenLayers 3</a> <a class="brand" href="/"><img src="logo-70x70.png"> OpenLayers 3</a>
<a class="brand" href="index.html">API Documentation</a>
<label id="stability"> <label id="stability">
<input type="checkbox" id="stability-toggle" checked> Stable Only <input type="checkbox" id="stability-toggle"> Stable Only
</label> </label>
<ul class="nav navbar-nav pull-right">
<li><a href="../doc">Docs</a></li>
<li><a href="../examples">Examples</a></li>
<li><a href="index.html" class="active">API</a></li>
<li><a href="https://github.com/openlayers/ol3">Code</a></li>
</ul>
</div> </div>
</div> </div>
</div> </div>
@@ -32,14 +37,10 @@
<div class="main"> <div class="main">
<h1 class="page-title" data-filename="<?js= filename ?>"><?js= title ?></h1> <h1 class="page-title" data-filename="<?js= filename ?>"><?js= title ?></h1>
<?js= content ?> <?js= content ?>
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc <?js= env.version.number ?></a> on <?js= (new Date()) ?>
</footer>
</div> </div>
</div> </div>
<script>prettyPrint();</script> <script>prettyPrint();</script>
<script src="scripts/linenumber.js"></script> <script src="scripts/linenumber.js"></script>
<script src="scripts/main.js"></script> <script src="scripts/main.js"></script>
</body> </body>
</html> </html>

View File

@@ -24,7 +24,7 @@ var self = this;
<?js } ?> <?js } ?>
</dt> </dt>
<dd class="<?js= (data.stability && data.stability !== 'stable') ? 'unstable' : '' ?>"> <dd class="<?js= (data.stability && data.stability !== 'stable') ? 'unstable' : '' ?>">
<?js if (data.description) { ?> <?js if (data.description) { ?>
<div class="description"> <div class="description">
<?js= data.description ?> <?js= data.description ?>
@@ -39,20 +39,20 @@ var self = this;
</li> </li>
</ul> </ul>
<?js } ?> <?js } ?>
<?js if (data['this']) { ?> <?js if (data['this']) { ?>
<h5>This:</h5> <h5>This:</h5>
<ul><li><?js= this.linkto(data['this'], data['this']) ?></li></ul> <ul><li><?js= this.linkto(data['this'], data['this']) ?></li></ul>
<?js } ?> <?js } ?>
<?js if (data.stability || kind !== 'class') { ?> <?js if (data.stability || kind !== 'class') { ?>
<?js if (data.params && params.length) { ?> <?js if (data.params && params.length) { ?>
<?js= this.partial('params.tmpl', params) ?> <?js= this.partial('params.tmpl', params) ?>
<?js } ?> <?js } ?>
<?js } ?> <?js } ?>
<?js= this.partial('details.tmpl', data) ?> <?js= this.partial('details.tmpl', data) ?>
<?js if (data.fires && fires.length) { ?> <?js if (data.fires && fires.length) { ?>
<h5>Fires:</h5> <h5>Fires:</h5>
<ul><?js fires.forEach(function(f) { <ul><?js fires.forEach(function(f) {
@@ -68,7 +68,7 @@ var self = this;
} }
?> ?>
<li class="<?js= (eventDoclet || data).stability !== 'stable' ? 'unstable' : '' ?>"> <li class="<?js= (eventDoclet || data).stability !== 'stable' ? 'unstable' : '' ?>">
<code><?js= self.linkto(f, type) ?></code> <code><?js= eventClassName ? self.linkto(f, type) : type ?></code>
<?js if (eventClassName) { <?js if (eventClassName) {
var eventClass = self.find({longname: eventClassName})[0]; var eventClass = self.find({longname: eventClassName})[0];
if (eventClass) { ?> if (eventClass) { ?>
@@ -96,7 +96,7 @@ var self = this;
<li><?js= self.linkto(f) ?></li> <li><?js= self.linkto(f) ?></li>
<?js }); ?></ul> <?js }); ?></ul>
<?js } ?> <?js } ?>
<?js if (data.exceptions && exceptions.length) { ?> <?js if (data.exceptions && exceptions.length) { ?>
<h5>Throws:</h5> <h5>Throws:</h5>
<?js if (exceptions.length > 1) { ?><ul><?js <?js if (exceptions.length > 1) { ?><ul><?js
@@ -108,12 +108,12 @@ var self = this;
<?js= self.partial('exceptions.tmpl', r) ?> <?js= self.partial('exceptions.tmpl', r) ?>
<?js }); <?js });
} } ?> } } ?>
<?js if (data.returns && returns.length) { ?> <?js if (data.returns && returns.length) { ?>
<?js if (returns.length > 1) { ?><h5>Returns:</h5><?js } ?> <?js if (returns.length > 1) { ?><h5>Returns:</h5><?js } ?>
<?js= self.partial('returns.tmpl', data.returns) ?> <?js= self.partial('returns.tmpl', data.returns) ?>
<?js } ?> <?js } ?>
<?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

@@ -6,11 +6,14 @@ var assert = require('assert');
var fs = require('fs'); var fs = require('fs');
var path = require('path'); var path = require('path');
var Promise = require('bluebird');
/** /**
* Publish hook for the JSDoc template. Writes to JSON stdout. * Publish hook for the JSDoc template. Writes to JSON stdout.
* @param {function} data The root of the Taffy DB containing doclet records. * @param {function} data The root of the Taffy DB containing doclet records.
* @param {Object} opts Options. * @param {Object} opts Options.
* @return {Promise} A promise that resolves when writing is complete.
*/ */
exports.publish = function(data, opts) { exports.publish = function(data, opts) {
@@ -49,7 +52,7 @@ exports.publish = function(data, opts) {
var externs = []; var externs = [];
var base = []; var base = [];
var augments = {}; var augments = {};
var names = {}; var symbolsByName = {};
docs.filter(function(doc) { docs.filter(function(doc) {
var include = true; var include = true;
var constructor = doc.memberof; var constructor = doc.memberof;
@@ -144,8 +147,13 @@ exports.publish = function(data, opts) {
} }
var target = isExterns ? externs : (doc.api ? symbols : base); var target = isExterns ? externs : (doc.api ? symbols : base);
var existingSymbol = symbolsByName[symbol.name];
if (existingSymbol) {
var idx = target.indexOf(existingSymbol);
target.splice(idx, 1);
}
target.push(symbol); target.push(symbol);
names[symbol.name] = true; symbolsByName[symbol.name] = symbol;
if (doc.api && symbol.extends) { if (doc.api && symbol.extends) {
while (symbol.extends in classes && !classes[symbol.extends].api && while (symbol.extends in classes && !classes[symbol.extends].api &&
@@ -163,13 +171,17 @@ exports.publish = function(data, opts) {
return (symbol.name in augments || symbol.virtual); return (symbol.name in augments || symbol.virtual);
}); });
process.stdout.write( return new Promise(function(resolve, reject) {
JSON.stringify({
symbols: symbols, process.stdout.write(
defines: defines, JSON.stringify({
typedefs: typedefs, symbols: symbols,
externs: externs, defines: defines,
base: base typedefs: typedefs,
}, null, 2)); externs: externs,
base: base
}, null, 2), resolve);
});
}; };

View File

@@ -5,13 +5,13 @@
"externs": [ "externs": [
"externs/bingmaps.js", "externs/bingmaps.js",
"externs/closure-compiler.js", "externs/closure-compiler.js",
"externs/esrijson.js",
"externs/geojson.js", "externs/geojson.js",
"externs/oli.js", "externs/oli.js",
"externs/olx.js", "externs/olx.js",
"externs/proj4js.js", "externs/proj4js.js",
"externs/tilejson.js", "externs/tilejson.js",
"externs/topojson.js", "externs/topojson.js"
"externs/vbarray.js"
], ],
"define": [ "define": [
"goog.array.ASSUME_NATIVE_FUNCTIONS=true", "goog.array.ASSUME_NATIVE_FUNCTIONS=true",
@@ -20,40 +20,12 @@
"goog.DEBUG=false" "goog.DEBUG=false"
], ],
"jscomp_error": [ "jscomp_error": [
"accessControls", "*"
"ambiguousFunctionDecl", ],
"checkEventfulObjectDisposal", "jscomp_off": [
"checkRegExp", "useOfGoogBase",
"checkStructDictInheritance", "unnecessaryCasts",
"checkTypes", "lintChecks"
"checkVars",
"const",
"constantProperty",
"deprecated",
"duplicateMessage",
"es3",
"es5Strict",
"externsValidation",
"fileoverviewTags",
"globalThis",
"internetExplorerChecks",
"invalidCasts",
"misplacedTypeAnnotation",
"missingGetCssName",
"missingProperties",
"missingProvide",
"missingRequire",
"missingReturn",
"newCheckTypes",
"nonStandardJsDocs",
"suspiciousCode",
"strictModuleDepCheck",
"typeInvalidation",
"undefinedNames",
"undefinedVars",
"unknownDefines",
"uselessCode",
"visibility"
], ],
"extra_annotation_name": [ "extra_annotation_name": [
"api", "observable" "api", "observable"

View File

@@ -1,3 +1,8 @@
.ol-box {
box-sizing: border-box;
border-radius: 2px;
border: 2px solid blue;
}
.ol-mouse-position { .ol-mouse-position {
top: 8px; top: 8px;
@@ -21,7 +26,12 @@
font-size: 10px; font-size: 10px;
text-align: center; text-align: center;
margin: 1px; margin: 1px;
will-change: contents, width;
} }
.ol-overlay-container {
will-change: left,right,top,bottom;
}
.ol-unsupported { .ol-unsupported {
display: none; display: none;
} }
@@ -101,6 +111,7 @@
display: block; display: block;
font-weight: normal; font-weight: normal;
font-size: 1.2em; font-size: 1.2em;
will-change: transform;
} }
.ol-touch .ol-control button { .ol-touch .ol-control button {
font-size: 1.5em; font-size: 1.5em;
@@ -148,6 +159,7 @@
.ol-attribution img { .ol-attribution img {
max-height: 2em; max-height: 2em;
max-width: inherit; max-width: inherit;
vertical-align: middle;
} }
.ol-attribution ul, .ol-attribution button { .ol-attribution ul, .ol-attribution button {
display: inline-block; display: inline-block;
@@ -184,35 +196,20 @@
} }
.ol-zoomslider { .ol-zoomslider {
position: absolute;
top: 4.5em; top: 4.5em;
left: .5em; left: .5em;
background: #eee;
background: rgba(255, 255, 255, 0.4);
width: 24px;
height: 200px; height: 200px;
} }
.ol-zoomslider-thumb { .ol-zoomslider button {
position: absolute; position: relative;
background: #7b98bc;
background: rgba(0,60,136,0.5);
border-radius: 2px;
cursor: pointer;
height: 10px; height: 10px;
width: 22px;
margin: 3px;
} }
.ol-touch .ol-zoomslider { .ol-touch .ol-zoomslider {
top: 5.5em; top: 5.5em;
width: 2.052em;
}
.ol-touch .ol-zoomslider-thumb {
width: 1.8em;
} }
.ol-overviewmap { .ol-overviewmap {
position: absolute;
left: 0.5em; left: 0.5em;
bottom: 0.5em; bottom: 0.5em;
} }

336
doc/faq.md Normal file
View File

@@ -0,0 +1,336 @@
---
title: Frequently Asked Questions (FAQ)
layout: doc.hbs
---
# Frequently Asked Questions (FAQ)
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,
e.g. on [Stack Overflow](http://stackoverflow.com/questions/tagged/openlayers-3).
If you think a question (and naturally its answer) should be added here, feel
free to ping us or to send a pull request enhancing this document.
Table of contents:
* [What projection is OpenLayers using?](#what-projection-is-openlayers-using-)
* [How do I change the projection of my map?](#how-do-i-change-the-projection-of-my-map-)
* [Why is my map centered on the gulf of guinea (or africa, the ocean, null-island)?](#why-is-my-map-centered-on-the-gulf-of-guinea-or-africa-the-ocean-null-island-)
* [Why is the order of a coordinate [lon,lat], and not [lat,lon]?](#why-is-the-order-of-a-coordinate-lon-lat-and-not-lat-lon-)
* [Why aren't there any features in my source?](#why-aren-t-there-any-features-in-my-source-)
* [How do I force a re-render of the map?](#how-do-i-force-a-re-render-of-the-map-)
* [How do I create a custom build of OpenLayers?](#how-do-i-create-a-custom-build-of-openlayers-)
* [Do I need to write my own code using Closure library?](#do-i-need-to-write-my-own-code-using-closure-library-)
* [Do I need to compress my code with Closure compiler?](#do-i-need-to-compress-my-code-with-closure-compiler-)
## What projection is OpenLayers using?
Every map that you'll create with OpenLayers will have a view, and every view
will have a projection. As the earth is three-dimensional and round but the 2D
view of a map isn't, we need a mathematical expression to represent it. Enter
projections.
There isn't only one projection, but there are many common ones. Each projection
has different properties, in that it accurately represents distances, angles or
areas. Certain projections are better suited for different regions in the world.
Back to the original question: OpenLayers is capable of dealing with most
projections. If you do not explicitly set one, your map is going to use our
default which is the Web Mercator projection (EPSG:3857). The same projection is
used e.g. for the maps of the OpenStreetMap-project and commercial products such
as Bing Maps or Google Maps.
This projection is a good choice if you want a map which shows the whole world,
and you may need to have this projection if you want to e.g. use the
OpenStreetMap or Bing tiles.
## How do I change the projection of my map?
There is a good chance that you want to change the default projection of
OpenLayers to something more appropriate for your region or your specific data.
The projection of your map can be set through the `view`-property. Here are some
examples:
```javascript
// OpenLayers comes with support for the World Geodetic System 1984, EPSG:4326:
var map = new ol.Map({
view: new ol.View({
projection: 'EPSG:4326'
// other view properties like map center etc.
})
// other properties for your map like layers etc.
});
```
```javascript
// To use other projections, you have to register the projection in OpenLayers:
//
// 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
// ol.proj.addProjection to make it available to the library for lookup by its
// code.
var swissProjection = new ol.proj.Projection({
code: 'EPSG:21781',
// The extent is used to determine zoom level 0. Recommended values for a
// projection's validity extent can be found at http://epsg.io/.
extent: [485869.5728, 76443.1884, 837076.5648, 299941.7864],
units: 'm'
});
ol.proj.addProjection(swissProjection);
// we can now use the projection:
var map = new ol.Map({
view: new ol.View({
projection: swissProjection
// other view properties like map center etc.
})
// other properties for your map like layers etc.
});
```
We recommend to lookup parameters of your projection (like the validity extent)
over at [epsg.io](http://epsg.io/).
## Why is my map centered on the gulf of guinea (or africa, the ocean, null-island)?
If you have set a center in your map view, but don't see a real change in visual
output, chances are that you have provided the coordinates of the map center in
the wrong (a non-matching) projection.
As the default projection in OpenLayers is Web Mercator (see above), the
coordinates for the center have to be provided in that projection. Chances are
that your map looks like this:
```javascript
var washingtonLonLat = [-77.036667, 38.895];
var map = new ol.Map({
layers: [
new ol.layer.Tile({
source: new ol.source.OSM()
})
],
target: 'map',
view: new ol.View({
center: washingtonLonLat,
zoom: 12
})
});
```
Here `[-77.036667, 38.895]` is provided as the center of the view. But as Web
Mercator is a metric projection, you are currently telling OpenLayers that the
center shall be some meters (~77m and ~39m respectively) away from `[0, 0]`. In
the Web Mercator projection the coordinate is right in the gulf of guinea.
The solution is easy: Provide the coordinates projected into Web Mercator.
OpenLayers has some helpful utility methods to assist you:
```javascript
var washingtonLonLat = [-77.036667, 38.895];
var washingtonWebMercator = ol.proj.fromLonLat(washingtonLonLat);
var map = new ol.Map({
layers: [
new ol.layer.Tile({
source: new ol.source.OSM()
})
],
target: 'map',
view: new ol.View({
center: washingtonWebMercator,
zoom: 8
})
});
```
The method `ol.proj.fromLonLat()` is available from version 3.5 onwards.
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:
```javascript
// assuming that OpenLayers knows about EPSG:21781, see above
var swissCoord = ol.proj.transform([8.23, 46.86], 'EPSG:4326', 'EPSG:21781');
```
## Why is the order of a coordinate [lon,lat], and not [lat,lon]?
So you want to center your map on a certain place on the earth and obviously you
need to have its coordinates for this. Let's assume you want your map centered
on Schladming, a beautiful place in Austria. Head over to the wikipedia
page for [Schladming](http://en.wikipedia.org/wiki/Schladming). In the top-right
corner there is a link to [GeoHack](http://tools.wmflabs.org/geohack/geohack.php?pagename=Schladming&params=47_23_39_N_13_41_21_E_type:city(4565)_region:AT-6),
which effectively tells you the coordinates are:
WGS84:
47° 23 39″ N, 13° 41 21″ E
47.394167, 13.689167
So the next step would be to put the decimal coordinates into an array and use
it as center:
```javascript
var schladming = [47.394167, 13.689167]; // caution partner, read on...
// since we are using OSM, we have to transform the coordinates...
var schladmingWebMercator = ol.proj.fromLonLat(schladming);
var map = new ol.Map({
layers: [
new ol.layer.Tile({
source: new ol.source.OSM()
})
],
target: 'map',
view: new ol.View({
center: schladmingWebMercator,
zoom: 9
})
});
```
Running the above example will possibly surprise you, since we are not centered
on Schladming, Austria, but instead on Abyan, a region in Yemen (possibly also a
nice place). So what happened?
Many people mix up the order of longitude and latitude in a coordinate array.
Don't worry if you get it wrong at first, many OpenLayers developers have to
think twice about whether to put the longitude or the latitude first when they
e.g. try to change the map center.
Ok, then let's flip the coordinates:
```javascript
var schladming = [13.689167, 47.394167]; // longitude first, then latitude
// since we are using OSM, we have to transform the coordinates...
var schladmingWebMercator = ol.proj.fromLonLat(schladming);
var map = new ol.Map({
layers: [
new ol.layer.Tile({
source: new ol.source.OSM()
})
],
target: 'map',
view: new ol.View({
center: schladmingWebMercator,
zoom: 9
})
});
```
Schladming is now correctly displayed in the center of the map.
So when you deal with EPSG:4326 coordinates in OpenLayers, put the longitude
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.
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
first, and then latitude.
## Why aren't there any features in my source?
Suppose you want to load a KML file and display the contained features on the
map. Code like the following could be used:
```javascript
var vector = new ol.layer.Vector({
source: new ol.source.KML({
projection: 'EPSG:3857',
url: 'data/kml/2012-02-10.kml'
})
});
```
You may ask yourself how many features are in that KML, and try something like
the following:
```javascript
var vector = new ol.layer.Vector({
source: new ol.source.KML({
projection: 'EPSG:3857',
url: 'data/kml/2012-02-10.kml'
})
});
var numFeatures = vector.getSource().getFeatures().length;
console.log("Count right after construction: " + numFeatures);
```
This will log a count of `0` features to be in the source. This is because the
loading of the KML-file will happen in an asynchronous manner. To get the count
as soon as possible (right after the file has been fetched and the source has
been populated with features), you should use an event listener function on the
`source`:
```javascript
vector.getSource().on('change', function(evt){
var source = evt.target;
if (source.getState() === 'ready') {
var numFeatures = source.getFeatures().length;
console.log("Count after change: " + numFeatures);
}
});
```
This will correctly report the number of features, `1119` in that particular
case.
## How do I force a re-render of the map?
Usually the map is automatically re-rendered, once a source changes (for example
when a remote source has loaded).
If you actually want to manually trigger a rendering, you could use
```javascript
map.render();
```
...or its companion method
```javascript
map.renderSync();
```
## How do I create a custom build of OpenLayers?
Please refer to the [official create custom builds tutorial](tutorials/custom-builds.html)
which explains how to create a custom build of OpenLayers with just those parts
included that you want.
## Do I need to write my own code using Closure library?
OpenLayers is built on top of the [Google Closure JavaScript
library](https://developers.google.com/closure/library/), but this
does not mean that you must use that library in your application code.
OpenLayers should play well with all sorts of JavaScript libraries out there,
and you are in no way forced to use a specific one. Choose one that looks
right for you.
## Do I need to compress my code with Closure compiler?
No, you don't need to do compress your code with the [Google Closure
compiler](https://developers.google.com/closure/compiler/).
It may be a good choice though, because when your application code and the
OpenLayers source code is compiled together using closure compiler, the
resulting build will most probably be the smallest in terms of byte-size. For
more details refer to the
[compile application and OpenLayers together tutorial](tutorials/closure.html).
If you don't want to use the closure compiler, or you can't, you are not at all
forced to use it.

View File

@@ -9,6 +9,14 @@ If you're eager to get your first OpenLayers 3 map on a page, dive into the [qui
For a more in-depth overview of OpenLayers 3 core concepts, check out the [tutorials](tutorials/). For a more in-depth overview of OpenLayers 3 core concepts, check out the [tutorials](tutorials/).
Make sure to also check out the [OpenLayers 3 workshop](../../../ol3-workshop/). Make sure to also check out the [OpenLayers 3 workshop](/workshop/).
Find additional reference material in the [API docs](../apidoc). Find additional reference material in the [API docs](../apidoc).
# Frequently Asked Questions (FAQ)
We have put together a document that lists [Frequently Asked Questions (FAQ)](faq.html) and our answers. Common problems that may arise when using OpenLayers 3 are explained there, and chances are you'll find an appropriate solution in this document.
# More questions?
If you cannot find an answer in the documentation or the FAQ, you can ask your question on [stackoverflow using the tag 'openlayers-3'](http://stackoverflow.com/questions/tagged/openlayers-3).

View File

@@ -35,7 +35,7 @@ Below you'll find a complete working example. Create a new file, copy in the co
}) })
], ],
view: new ol.View({ view: new ol.View({
center: ol.proj.transform([37.41, 8.82], 'EPSG:4326', 'EPSG:3857'), center: ol.proj.fromLonLat([37.41, 8.82]),
zoom: 4 zoom: 4
}) })
}); });
@@ -89,7 +89,7 @@ The map in the application is contained in a [`<div>` HTML element](http://en.wi
}) })
], ],
view: new ol.View({ view: new ol.View({
center: ol.proj.transform([37.41, 8.82], 'EPSG:4326', 'EPSG:3857'), center: ol.proj.fromLonLat([37.41, 8.82]),
zoom: 4 zoom: 4
}) })
}); });
@@ -125,9 +125,9 @@ The next part of the `Map` object is the `View`. The view allow to specify the c
```js ```js
view: new ol.View({ view: new ol.View({
center: ol.proj.transform([37.41, 8.82], 'EPSG:4326', 'EPSG:3857'), center: ol.proj.fromLonLat([37.41, 8.82]),
zoom: 4 zoom: 4
}) })
``` ```
You will notice that the `center` specified is in lat/lon coordinates (EPSG:4326). Since the only layer we use is in Spherical Mercator projection (EPSG:3857), we can reproject them on the fly to be able to zoom the map on the right coordinates. You will notice that the `center` specified is in lon/lat coordinates (EPSG:4326). Since the only layer we use is in Spherical Mercator projection (EPSG:3857), we can reproject them on the fly to be able to zoom the map on the right coordinates.

View File

@@ -0,0 +1,89 @@
---
title: Basic project setup using NPM and Browserify
layout: doc.hbs
---
# Introduction
When going beyond modifying existing examples you might be looking for a
way to setup your own code with dependency management together with external
dependencies like OpenLayers 3.
This tutorial serves as a suggested project setup using NPM and Browserify
for the most basic needs. There are several other options and in particular
you might be interested in
[compiling your own code together with OpenLayers 3](closure.html).
## 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.
At this point you can ask NPM to add required dependencies by running
`npm install --save-dev openlayers browserify watchify uglify-js`. Watchify and
Uglify will be used to monitor for changes and to build into a minified
bundle.
## Application code and index.html
Place your application code in `index.js`. Here is a simple starting point:
```js
var ol = require('openlayers');
var map = new ol.Map({
target: 'map',
layers: [
new ol.layer.Tile({
source: new ol.source.OSM()
})
],
view: new ol.View({
center: [0, 0],
zoom: 0
})
});
```
You will also need an `ìndex.html` file that will use your bundle. Here is a simple
example:
```html
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Using Browserify with OpenLayers</title>
<link rel="stylesheet" href="node_modules/openlayers/dist/ol.css" type="text/css">
<style>
#map {
width: 400px;
height: 250px;
}
</style>
</head>
<body>
<div id="map"></div>
<script src="bundle.js"></script>
</body>
</html>
```
## 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`:
```json
"scripts": {
"start": "watchify index.js --outfile bundle.js",
"build": "browserify index.js | uglifyjs --compress --output bundle.js"
}
```
Note that `bundle.js` will contain your application code and all dependencies
used in your application, in this case the official full build of OpenLayers 3.
If you only need parts of OpenLayers 3 you can create
[custom builds](../../builder).

336
doc/tutorials/closure.md Normal file
View File

@@ -0,0 +1,336 @@
---
title: Compiling Application with Closure Compiler
layout: doc.hbs
---
# Compiling Application with Closure Compiler
The OpenLayers 3 code uses the Closure Library, and it is compiled with the
Closure Compiler. Using OpenLayers 3 in an application does not require using
Closure. But using Closure in an OpenLayers 3 application is possible. And this
is what this tutorial is about.
This tutorial will teach you how to set up an OpenLayers 3 application based on
the [`closure-util`](https://github.com/openlayers/closure-util) node package,
which provides utilities for working with Closure. Using `closure-util` is one
way to use Closure in a web application, but there are others. This tutorial
just covers the "`closure-util`" way.
The `closure-util` documentation is available on the [`closure-util` readme
page](https://github.com/openlayers/closure-util/blob/master/readme.md). You
don't need to read the `closure-util` documentation to follow this tutorial,
but it's available in `closure-util`'s [readme
file](https://github.com/openlayers/closure-util/blob/master/readme.md) if you
need it.
Also, the sample application built in this tutorial is
[available](https://github.com/openlayers/openlayers-closure-application) on
GitHub.
## Advantages of using Closure
This tutorial will show you how to use the Closure Compiler to compile an
application and OpenLayers 3 together. Compiling the application code together
with the OpenLayers 3 code has a number of advantages.
First of all, it allows you to only "pay" for the OpenLayers 3 code your
application uses, as the compiler will exclude the OpenLayers 3 code that the
application doesn't use. And there is no need to write and maintain a list of
"exports", which is necessary when creating custom builds of OpenLayers 3.
Also, compiling the application and OpenLayers 3 together allows using
OpenLayers 3 functions and objects that are not part of the official OpenLayers
3 API. Using non-API functions and objects may be risky, but it is mitigated by
the fact that the compiler will complain if you use functions or objects
that are not in OpenLayers 3 anymore.
## Setting up the Application
First, create a directory for the application. We will name that directory
`openlayers-closure-application` in this tutorial.
$ mkdir openlayers-closure-application
Now change to that directory:
$ cd openlayers-closure-application
Our application will be a `node` application, and the `openlayers` and
`closure-util` node packages will be downloaded from the node package registry
using the `npm` command line tool.
So we're going to create a `package.json` file for the application, which every
node application includes. This file basically includes metadata for the
application.
Create the application's `package.json` file:
$ npm init
You can pretty much use the default answers to the questions `npm init` asks
you.
Now install OpenLayers 3 using:
$ npm install openlayers --save
The `--save` flag persists the `openlayers` dependency in the application's
`package.json` file. You can edit `package.json` to verify that the dependency
was added.
`closure-util` is a dependency of the `openlayers` package, so it should have
been installed with `openlayers`. Use the following to verify that
`closure-util` is installed:
$ ./node_modules/openlayers/node_modules/.bin/closure-util
command argument is required
Usage: node closure-util <command> [options]
command
update-compiler Update the Compiler
update-library Update the Library
update Update both the Library and the Compiler
build Build with Closure Compiler
serve Start the development server
Options:
-l LEVEL, --loglevel LEVEL Log level [info]
## Create an OpenLayers 3 map
You're now going to create a JavaScript file that creates an OpenLayers 3 map.
This is the file that we will define the application's entry point.
First of all create an `src` directory at the root of the application:
$ mkdir src
Now add a file `main.js` to `src`, with the following content:
```js
goog.provide('app');
goog.require('ol.Map');
goog.require('ol.View');
goog.require('ol.layer.Tile');
goog.require('ol.source.OSM');
/**
* @type {ol.Map}
*/
app.map = new ol.Map({
target: 'map',
layers: [
new ol.layer.Tile({
source: new ol.source.OSM()
})
],
view: new ol.View({
center: [0, 0],
zoom: 4
})
});
```
`goog.provide('app')` creates the namespace `app` for the application. The
`goog.require` statements that follow define the OpenLayers constructors and
namespaces that the application uses. The rest of the code just creates the
OpenLayers map as you would do in any OpenLayers application.
## Compiling the Application
We're now going to compile the application and OpenLayers 3 together, using the
Closure Compiler and `closure-util`. For this we need to create a JSON config
file, that we will then pass as an input file to the `closure-util` command.
The minimum config file looks like this:
```json
{
"lib": [
"node_modules/openlayers/src/**/*.js",
"node_modules/openlayers/build/ol.ext/**/*.js",
"src/**/*.js"
],
"compile": {
"closure_entry_point": "app",
"externs": [
"node_modules/openlayers/externs/bingmaps.js",
"node_modules/openlayers/externs/closure-compiler.js",
"node_modules/openlayers/externs/geojson.js",
"node_modules/openlayers/externs/proj4js.js",
"node_modules/openlayers/externs/tilejson.js",
"node_modules/openlayers/externs/topojson.js"
],
"define": [
"goog.array.ASSUME_NATIVE_FUNCTIONS=true",
"goog.dom.ASSUME_STANDARDS_MODE=true",
"goog.json.USE_NATIVE_JSON=true",
"goog.DEBUG=false",
"ol.ENABLE_DOM=false",
"ol.ENABLE_WEBGL=false"
],
"js": [
"node_modules/openlayers/externs/olx.js",
"node_modules/openlayers/externs/oli.js"
],
"jscomp_off": [
"unknownDefines"
],
"extra_annotation_name": [
"api", "observable"
],
"compilation_level": "ADVANCED",
"warning_level": "VERBOSE",
"output_wrapper": "(function(){%output%})();",
"use_types_for_optimization": true
}
}
```
Create a `config.json` file with the above content at the root of the
application directory.
We can now use `closure-util` to compile the code:
$ ./node_modules/openlayers/node_modules/.bin/closure-util build config.json app.js
The resulting `app.js` file, which you can view in your editor if you're
curious, includes a minified version of the application code (`main.js`), and
the OpenLayers 3 code that the application code uses.
Here is a version of `config.json` with more compilation checks enabled:
```json
{
"lib": [
"node_modules/openlayers/src/**/*.js",
"node_modules/openlayers/build/ol.ext/**/*.js",
"src/**/*.js"
],
"compile": {
"closure_entry_point": "app",
"externs": [
"node_modules/openlayers/externs/bingmaps.js",
"node_modules/openlayers/externs/closure-compiler.js",
"node_modules/openlayers/externs/geojson.js",
"node_modules/openlayers/externs/proj4js.js",
"node_modules/openlayers/externs/tilejson.js",
"node_modules/openlayers/externs/topojson.js"
],
"define": [
"goog.array.ASSUME_NATIVE_FUNCTIONS=true",
"goog.dom.ASSUME_STANDARDS_MODE=true",
"goog.json.USE_NATIVE_JSON=true",
"goog.DEBUG=false",
"ol.ENABLE_DOM=false",
"ol.ENABLE_WEBGL=false"
],
"js": [
"node_modules/openlayers/externs/olx.js",
"node_modules/openlayers/externs/oli.js"
],
"jscomp_error": [
"accessControls",
"ambiguousFunctionDecl",
"checkEventfulObjectDisposal",
"checkRegExp",
"checkTypes",
"checkVars",
"const",
"constantProperty",
"deprecated",
"duplicateMessage",
"es3",
"es5Strict",
"externsValidation",
"fileoverviewTags",
"globalThis",
"internetExplorerChecks",
"invalidCasts",
"misplacedTypeAnnotation",
"missingGetCssName",
"missingProperties",
"missingProvide",
"missingRequire",
"missingReturn",
"newCheckTypes",
"nonStandardJsDocs",
"suspiciousCode",
"strictModuleDepCheck",
"typeInvalidation",
"undefinedNames",
"undefinedVars",
"uselessCode",
"visibility"
],
"jscomp_off": [
"unknownDefines"
],
"extra_annotation_name": [
"api", "observable"
],
"compilation_level": "ADVANCED",
"warning_level": "VERBOSE",
"output_wrapper": "(function(){%output%})();",
"use_types_for_optimization": true
}
}
```
## Create an HTML file for the Application
You can now go ahead and create a simple HTML for the application. Create
a `index.html` file with the following content at the root the application
directory:
```html
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="chrome=1">
<meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width">
<link rel="stylesheet" href="node_modules/openlayers/css/ol.css" type="text/css">
<title>Simple example</title>
<style>
#map {
width: 600px;
height: 400px;
}
</style>
</head>
<body>
<div id="map"></div>
<script src="app.js" type="text/javascript"></script>
</body>
</html>
```
Note that the page includes a `script` tag referencing the `app.js` file,
which is the file resulting from the compilation.
You are done!
## Run Application in Debug Mode
As a bonus, we're going to show how to use `closure-util` to run the
application in "debug" mode, where the original application and OpenLayers
scripts are loaded one by one in the page.
Start the `closure-util` development server:
$ ./node_modules/openlayers/node_modules/.bin/closure-util serve config.json
Now change the `script` tag to the following in the `index.html` file:
```html
<script src="@?main=src/main.js" type="text/javascript"></script>
```
Reload the page in your browser and you should see that scripts are now loaded
individually, making debugging much easier.

View File

@@ -0,0 +1,232 @@
---
title: Custom builds
layout: doc.hbs
---
# Creating custom builds
OpenLayers 3 is a big library providing a lot of functionality. So it is unlikely that an application will need and use all the functionality OpenLayers 3 provides. This is why creating application-specific OpenLayers 3 builds, with just the functionality your application needs, is often a good idea.
An alternative to creating custom builds is to compile your application code together with OpenLayers 3. See the [Compiling Application with Closure Compiler](closure.html) tutorial for more information.
This particular tutorial explains how to create custom builds of OpenLayers 3.
## Requirements
OpenLayers 3's build tools use Node and Java, so you need to have Node and Java installed on your machine. You can run `node --version` and `java -version` to test that Node and Java are installed, respectively.
## Download OpenLayers
Obviously, creating a custom build requires the OpenLayers 3 source and specific build scripts.
To get the OpenLayers 3 source and the build scripts you can clone the `ol3` [repository](https://github.com/openlayers/ol3), or you can download one of the release archives. You can also download the `openlayers` Node package from the Node package registry, using NPM (the Node Package Manager). This is the method we are going to use in this tutorial.
Create a directory:
$ mkdir openlayers
Download the OpenLayers 3 distribution using NPM:
$ npm install openlayers
This will download the latest stable version of OpenLayers 3, and install it under `node_modules`. You can list the content of `node_modules` to verify that it effectively contains a directory named "openlayers".
The Node packages onto which the `openlayers` package depends are installed under `node_modules/openlayers/node_modules`. That directory should, for example, include `closure-util`, which is the utility library OpenLayers 3 uses for Closure.
You should now have everything you need to create custom builds of OpenLayers 3!
## Create a build configuration file
Creating a custom build requires writing a build configuration file. The format of build configuration files is JSON. Here is a simple example of a build configuration file:
```json
{
"exports": [
"ol.Map",
"ol.View",
"ol.control.defaults",
"ol.layer.Tile",
"ol.source.OSM"
],
"compile": {
"externs": [
"externs/bingmaps.js",
"externs/closure-compiler.js",
"externs/geojson.js",
"externs/oli.js",
"externs/olx.js",
"externs/proj4js.js",
"externs/tilejson.js",
"externs/topojson.js"
],
"define": [
"goog.array.ASSUME_NATIVE_FUNCTIONS=true",
"goog.dom.ASSUME_STANDARDS_MODE=true",
"goog.json.USE_NATIVE_JSON=true",
"goog.DEBUG=false"
],
"jscomp_off": [
"unknownDefines"
],
"extra_annotation_name": [
"api", "observable"
],
"compilation_level": "ADVANCED_OPTIMIZATIONS",
"manage_closure_dependencies": true
}
}
```
Create a file named `ol-custom.json` with that content, and save it under the `node_modules/openlayers/build` directory. (You can save it to any location really.)
The most relevant part of this configuration object is the `"exports"` array. This array declares the functions/constructors you use in your JavaScript code. For example, the above configuration file is what you'd use for the following JavaScript code:
```js
var map = new ol.Map({
target: 'map',
layers: [
new ol.layer.Tile({
source: new ol.source.OSM()
})
],
controls: ol.control.defaults({
attributionOptions: {
collapsible: false
}
}),
view: new ol.View({
center: [0, 0],
zoom: 4
})
});
```
Note that this JavaScript code corresponds to OpenLayers 3's [`simple`](http://openlayers.org/en/master/examples/simple.html) example.
You are now ready to create your first OpenLayers 3 build. Use the following command to create the build:
$ cd node_modules/openlayers
$ node tasks/build.js build/ol-custom.json build/ol-custom.js
The build command may take some time, but it should end with the following output in the console:
info ol Parsing dependencies
info ol Compiling 364 sources
The build command should have created an `ol-custom.js` file in the `node_modules/openlayers/build` directory. You can verify that the file was created. You can even open it in your editor if you're curious.
As a test, you can use the following HTML file to verify that your custom build works as expected:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>OpenLayers 3 example</title>
<link rel="stylesheet" href="node_modules/openlayers/css/ol.css" />
<style>
#map {
width: 600px;
height: 400px;
}
</style>
</head>
<body>
<div id="map"></div>
<script src="node_modules/openlayers/build/ol-custom.js"></script>
<script>
var map = new ol.Map({
target: 'map',
layers: [
new ol.layer.Tile({
source: new ol.source.OSM()
})
],
view: new ol.View({
center: [0, 0],
zoom: 4
})
});
</script>
</body>
</html>
```
## More on the config file
### `define`'s
Closure allows you to define constants that can be set at compile time. The `define` config property above sets four `goog` properties for the Closure library. The OpenLayers 3 code also has defined values you can set.
Setting some of these to `false` means that the portions of the code relating to this setting become "dead", i.e. are never executed. As Closure Compiler's `ADVANCED` mode removes dead code, this makes the size of the advanced compiled file smaller.
You might have noticed that the build file you've just created is considerably smaller than the full build, but it can be reduced further. This is because all three renderers and all layer types are included by default. We only need one renderer, and only need the tile layer, so can exclude the others by setting these properties with `define`s. So add the following to the define section of the config above:
```
"ol.ENABLE_DOM=false",
"ol.ENABLE_WEBGL=false",
"ol.ENABLE_PROJ4JS=false",
"ol.ENABLE_IMAGE=false",
"ol.ENABLE_VECTOR=false",
```
and re-run the build script. The build size should now be smaller.
### Externs
The Closure documentation explains that "externs" are for external names used in the code being compiled. The compiler includes externs for built-ins such as `document`. The `externs` directory of the OpenLayers 3 code includes files for all those used in some part of the library. For example, if you use Bing Maps, you should include the Bing externs file in the `externs` section of the config file.
`oli.js` and `olx.js` are externs files for the OpenLayers 3 API. For examples `olx.js` includes extern definitions for OpenLayers 3's constructor options. You should always use these two files as externs when creating custom builds.
### Other compiler options
There are a couple of other compiler options in the config file above. `manage_closure_dependencies` should always be used.
You can specify any of the other compiler options here as needed, such as the renaming reports, output manifest, or source maps. There is a full list of available options in [closure-util](https://github.com/openlayers/closure-util/blob/master/compiler-options.txt).
Note that `build.js` currently requires you to enter an output file and will write the output from the compiler to it; it does not use the `js_output_file` compiler option. If you specify this in the config file, there will be no compiler output, so `build.js`'s output file will be empty.
## A more complicated example
Now let's try a more complicated example: [`heatmaps-earthquakes`](http://openlayers.org/en/master/examples/heatmap-earthquakes.html). The build configuration file looks like this:
```json
{
"exports": [
"ol.layer.Heatmap",
"ol.source.KML",
"ol.layer.Heatmap#getSource",
"ol.source.KML#on",
"ol.source.VectorEvent#feature",
"ol.Feature#get",
"ol.Feature#set",
"ol.layer.Tile",
"ol.source.Stamen",
"ol.Map",
"ol.View"
],
"compile": {
"externs": [
"externs/olx.js",
"externs/oli.js"
],
"define": [
"ol.ENABLE_DOM=false",
"ol.ENABLE_WEBGL=false",
"ol.ENABLE_PROJ4JS=false",
"ol.ENABLE_IMAGE=false",
"goog.dom.ASSUME_STANDARDS_MODE=true",
"goog.DEBUG=false"
],
"compilation_level": "ADVANCED_OPTIMIZATIONS",
"manage_closure_dependencies": true
}
}
```
The exports are given here in the order in which they occur in the `heatmaps-earthquakes` example's JavaScript code. In this example we not only use the `ol.` functions and constructors, but also `prototype` methods where the `ol` namespace is not directly used. In the code, we have for example `vector.getSource().on()`. This means we are using the `getSource` method of `layer.Heatmap` and the `on` method of `source.KML`, so this is what has to be exported. Similarly, `event.feature.get()` means we are using the `feature` property of `source.VectorEvent` and the `get` method of `Feature`. If any of these names are left out, the compile will complete successfully, but the missing names will be obfuscated and you will get a 'property undefined' error when you try and run the script.
As this example uses a vector layer it is necessary to remove `"ol.ENABLE_VECTOR=false"` in the `define` section of the configuration.
## Conclusion
This tutorial should have given you the information you need to create custom builds, i.e. builds tailored to your application. See the [tasks readme](https://github.com/openlayers/ol3/tree/master/tasks/readme.md) for more information on the build scripts and the properties you can use in the build configuration file.

View File

@@ -5,4 +5,8 @@ layout: doc.hbs
# Tutorials # Tutorials
We'll be putting together a more comprehensive set of tutorials here. For now, you can take a look at the [introduction](introduction.html) and [basic concepts](concepts.html) tutorial. Stay tuned for more! * [Introduction to OpenLayers 3](introduction.html)
* [Basic Concepts](concepts.html)
* [Create Custom Builds](custom-builds.html)
* [Bundle Application and OpenLayers using Browserify](browserify.html)
* [Compile Application and OpenLayers together](closure.html)

View File

@@ -39,6 +39,4 @@ Class namespaces, such as `ol.layer` have a base class type with the same name,
Source files are similarly organised, with a directory for each class namespace. Names are however all lower-case, and the subclasses repeat the superclass type in their name, for example, `ol/layer/vectorlayer.js`. Source files are similarly organised, with a directory for each class namespace. Names are however all lower-case, and the subclasses repeat the superclass type in their name, for example, `ol/layer/vectorlayer.js`.
The naming structure means that there are sometimes 2 objects with the same name but different initial, such as `ol.feature`, a simple object with static functions to be used with features, and `ol.Feature`, a class used to instantiate new features. These two objects are however stored in the same file, in this case, `ol/feature.js` OL3 follows the convention that the names of private properties and methods, that is, those that are not part of the API, end in an underscore. In general, instance properties are private and accessed using accessors.
OL3 follows the convention that the names of private properties and methods, that is, those that are not part of the API, end in an underscore. In general, instance properties are private and accessed using accessors.

16
examples/accessible.css Normal file
View File

@@ -0,0 +1,16 @@
a.skiplink {
position: absolute;
clip: rect(1px, 1px, 1px, 1px);
padding: 0;
border: 0;
height: 1px;
width: 1px;
overflow: hidden;
}
a.skiplink:focus {
clip: auto;
height: auto;
width: auto;
background-color: #fff;
padding: 0.3em;
}

View File

@@ -1,72 +1,20 @@
<!doctype html> ---
<html lang="en"> layout: example.html
<head> title: Accessibility example
<meta charset="utf-8"> shortdesc: Example of an accessible map.
<meta http-equiv="X-UA-Compatible" content="chrome=1"> docs: >
<meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width"> This page's `map` element has its `tabindex` attribute set to `"0"`, that makes it focusable. To focus the map element you can either navigate to it using the "tab" key or use the skip link. When the `map` element is focused the + and - keys can be used to zoom in and out and the arrow keys can be used to pan.
<link rel="stylesheet" href="../css/ol.css" type="text/css">
<link rel="stylesheet" href="../resources/bootstrap/css/bootstrap.min.css" type="text/css">
<link rel="stylesheet" href="../resources/layout.css" type="text/css">
<link rel="stylesheet" href="../resources/bootstrap/css/bootstrap-responsive.min.css" type="text/css">
<title>Accessibility example</title>
<style>
a.skiplink {
position: absolute;
clip: rect(1px, 1px, 1px, 1px);
padding: 0;
border: 0;
height: 1px;
width: 1px;
overflow: hidden;
}
a.skiplink:focus {
clip: auto;
height: auto;
width: auto;
background-color: #fff;
padding: 0.3em;
}
</style>
</head>
<body>
<div class="navbar navbar-inverse navbar-fixed-top">
<div class="navbar-inner">
<div class="container">
<a class="brand" href="./"><img src="../resources/logo.png" alt=""> OpenLayers 3 Examples</a>
</div>
</div>
</div>
<div class="container-fluid"> Clicking on the "Zoom in" and "Zoom out" buttons below the map zooms the map in and out. You can navigate to the buttons using the "tab" key, and press the "enter" key to trigger the zooming action.
<div class="row-fluid"> tags: "accessibility, tabindex"
<div class="span12"> ---
<a class="skiplink" href="#map">Go to map</a> <div class="row-fluid">
<div id="map" class="map" tabindex="0"></div> <div class="span12">
</div> <a class="skiplink" href="#map">Go to map</a>
</div> <div id="map" class="map" tabindex="0"></div>
<button id="zoom-out">Zoom out</button>
<div class="row-fluid"> <button id="zoom-in">Zoom in</button>
</div>
<div class="span12"> </div>
<h4 id="title">Accessibility example</h4>
<p id="shortdesc">Example of an accessible map.</p>
<div id="docs">
<p>This page's <code>map</code> element has its <code>tabindex</code> attribute set to <code>"0"</code>, that makes it focusable. To focus the map element you can either navigate to it using the "tab" key or use the skip link. When the <code>map</code> element is focused the + and - keys can be used to zoom in and out and the arrow keys can be used to pan.</p>
<p>When clicked the "Zoom in" and "Zoom out" buttons below the map zoom the map in and out, respectively. You can navigate to the buttons using the "tab" key, and press the "enter" key to trigger the zooming action.</p>
<p>See the <a href="accessible.js" target="_blank">accessible.js source</a> to see how this is done.</p>
</div>
<div id="tags">accessibility, tabindex</div>
</div>
</div>
</div>
<script src="../resources/jquery.min.js" type="text/javascript"></script>
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
<script src="loader.js?id=accessible" type="text/javascript"></script>
</body>
</html>

View File

@@ -11,7 +11,7 @@ var map = new ol.Map({
source: new ol.source.OSM() source: new ol.source.OSM()
}) })
], ],
renderer: exampleNS.getRendererFromQueryString(), renderer: common.getRendererFromQueryString(),
target: 'map', target: 'map',
controls: ol.control.defaults({ controls: ol.control.defaults({
attributionOptions: /** @type {olx.control.AttributionOptions} */ ({ attributionOptions: /** @type {olx.control.AttributionOptions} */ ({
@@ -24,9 +24,14 @@ var map = new ol.Map({
}) })
}); });
jQuery('#map').after('<button type="button" ' + document.getElementById('zoom-out').onclick = function() {
'onclick="map.getView().setZoom(map.getView().getZoom() - 1);">' + var view = map.getView();
'Zoom out</button>'); var zoom = view.getZoom();
jQuery('#map').after('<button type="button" ' + view.setZoom(zoom - 1);
'onclick="map.getView().setZoom(map.getView().getZoom() + 1);">' + };
'Zoom in</button>');
document.getElementById('zoom-in').onclick = function() {
var view = map.getView();
var zoom = view.getZoom();
view.setZoom(zoom + 1);
};

View File

@@ -1,65 +1,27 @@
<!doctype html> ---
<html lang="en"> layout: example.html
<head> title: Animation example
<meta charset="utf-8"> shortdesc: Demonstrates animated pan, zoom, and rotation.
<meta http-equiv="X-UA-Compatible" content="chrome=1"> docs: >
<meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width"> This example shows how to use the beforeRender function on the Map to run one
<link rel="stylesheet" href="../css/ol.css" type="text/css"> or more animations.
<link rel="stylesheet" href="../resources/bootstrap/css/bootstrap.min.css" type="text/css"> tags: "animation"
<link rel="stylesheet" href="../resources/layout.css" type="text/css"> ---
<link rel="stylesheet" href="../resources/bootstrap/css/bootstrap-responsive.min.css" type="text/css"> <div class="row-fluid">
<title>Animation example</title> <div class="span12">
</head> <div id="map" class="map"></div>
<body> </div>
</div>
<div class="navbar navbar-inverse navbar-fixed-top"> <div class="row-fluid">
<div class="navbar-inner"> <div class="span12">
<div class="container"> <button id="rotate-left" title="Rotate clockwise"></button>
<a class="brand" href="./"><img src="../resources/logo.png"> OpenLayers 3 Examples</a> <button id="rotate-right" title="Rotate counterclockwise"></button>
</div> <button id="rotate-around-rome">Rotate around Rome</button>
</div> <button id="pan-to-london">Pan to London</button>
</div> <button id="elastic-to-moscow">Elastic to Moscow</button>
<button id="bounce-to-istanbul">Bounce to Istanbul</button>
<div class="container-fluid"> <button id="spin-to-rome">Spin to Rome</button>
<button id="fly-to-bern">Fly to Bern</button>
<div class="row-fluid"> <button id="spiral-to-madrid">Spiral to Madrid</button>
<div class="span12"> </div>
<div id="map" class="map"></div> </div>
</div>
</div>
<div class="row-fluid">
<div class="span12">
<button id="rotate-left"><i class="icon-arrow-left"></i></button>
<button id="rotate-right"><i class="icon-arrow-right"></i></button>
<button id="rotate-around-rome">Rotate around Rome</button>
<button id="pan-to-london">Pan to London</button>
<button id="elastic-to-moscow">Elastic to Moscow</button>
<button id="bounce-to-istanbul">Bounce to Istanbul</button>
<button id="spin-to-rome">Spin to Rome</button>
<button id="fly-to-bern">Fly to Bern</button>
<button id="spiral-to-madrid">Spiral to Madrid</button>
</div>
</div>
<div class="row-fluid">
<div class="span12">
<h4 id="title">Animation example</h4>
<p id="shortdesc">Demonstrates animated pan, zoom, and rotation.</p>
<div id="docs">
<p>See the <a href="animation.js" target="_blank">animation.js source</a> to see how this is done.</p>
</div>
<div id="tags">animation</div>
</div>
</div>
</div>
<script src="../resources/jquery.min.js" type="text/javascript"></script>
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
<script src="loader.js?id=animation" type="text/javascript"></script>
</body>
</html>

View File

@@ -34,12 +34,12 @@ function elastic(t) {
return Math.pow(2, -10 * t) * Math.sin((t - 0.075) * (2 * Math.PI) / 0.3) + 1; return Math.pow(2, -10 * t) * Math.sin((t - 0.075) * (2 * Math.PI) / 0.3) + 1;
} }
var london = ol.proj.transform([-0.12755, 51.507222], 'EPSG:4326', 'EPSG:3857'); var london = ol.proj.fromLonLat([-0.12755, 51.507222]);
var moscow = ol.proj.transform([37.6178, 55.7517], 'EPSG:4326', 'EPSG:3857'); var moscow = ol.proj.fromLonLat([37.6178, 55.7517]);
var istanbul = ol.proj.transform([28.9744, 41.0128], 'EPSG:4326', 'EPSG:3857'); var istanbul = ol.proj.fromLonLat([28.9744, 41.0128]);
var rome = ol.proj.transform([12.5, 41.9], 'EPSG:4326', 'EPSG:3857'); var rome = ol.proj.fromLonLat([12.5, 41.9]);
var bern = ol.proj.transform([7.4458, 46.95], 'EPSG:4326', 'EPSG:3857'); var bern = ol.proj.fromLonLat([7.4458, 46.95]);
var madrid = ol.proj.transform([-3.683333, 40.4], 'EPSG:4326', 'EPSG:3857'); var madrid = ol.proj.fromLonLat([-3.683333, 40.4]);
var view = new ol.View({ var view = new ol.View({
// the view's initial state // the view's initial state
@@ -54,7 +54,7 @@ var map = new ol.Map({
source: new ol.source.OSM() source: new ol.source.OSM()
}) })
], ],
renderer: exampleNS.getRendererFromQueryString(), renderer: common.getRendererFromQueryString(),
// Improve user experience by loading tiles while animating. Will make // Improve user experience by loading tiles while animating. Will make
// animations stutter on mobile or slow devices. // animations stutter on mobile or slow devices.
loadTilesWhileAnimating: true, loadTilesWhileAnimating: true,

View File

@@ -1,51 +1,16 @@
<!doctype html> ---
<html lang="en"> layout: example.html
<head> title: Tiled ArcGIS MapServer example
<meta charset="utf-8"> shortdesc: Example of a tiled ArcGIS layer.
<meta http-equiv="X-UA-Compatible" content="chrome=1"> docs: >
<meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width"> This example shows how to use an ArcGIS REST MapService as tiles.
<link rel="stylesheet" href="../css/ol.css" type="text/css"> This source type supports Map and Image Services. For cached ArcGIS
<link rel="stylesheet" href="../resources/bootstrap/css/bootstrap.min.css" type="text/css"> services, better performance is available by using
<link rel="stylesheet" href="../resources/layout.css" type="text/css"> <code>ol.source.XYZ</code> instead.
<link rel="stylesheet" href="../resources/bootstrap/css/bootstrap-responsive.min.css" type="text/css"> tags: arcgis, tile, tilelayer"
<title>Tiled ArcGIS MapServer example</title> ---
</head> <div class="row-fluid">
<body> <div class="span12">
<div id="map" class="map"></div>
<div class="navbar navbar-inverse navbar-fixed-top"> </div>
<div class="navbar-inner"> </div>
<div class="container">
<a class="brand" href="./"><img src="../resources/logo.png"> OpenLayers 3 Examples</a>
</div>
</div>
</div>
<div class="container-fluid">
<div class="row-fluid">
<div class="span12">
<div id="map" class="map"></div>
</div>
</div>
<div class="row-fluid">
<div class="span12">
<h4 id="title">Tiled ArcGIS MapServer example</h4>
<p id="shortdesc">Example of a tiled ArcGIS layer.</p>
<div id="docs">
<p>See the <a href="arcgis-tiled.js" target="_blank">arcgis-tiled.js source</a> to see how this is done.</p>
</div>
<div id="tags">arcgis, tile, tilelayer</div>
</div>
</div>
</div>
<script src="../resources/jquery.min.js" type="text/javascript"></script>
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
<script src="loader.js?id=arcgis-tiled" type="text/javascript"></script>
</body>
</html>

View File

@@ -1,51 +1,15 @@
<!doctype html> ---
<html lang="en"> layout: example.html
<head> title: Attributions example
<meta charset="utf-8"> shortdesc: Example of a attributions visibily change on map resize, to collapse them on small maps.
<meta http-equiv="X-UA-Compatible" content="chrome=1"> docs: >
<meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width"> When the map gets too small because of a resize, the attribution will be collapsed.
<link rel="stylesheet" href="../css/ol.css" type="text/css"> This is because the <code>collapsible</code> option is set to true if the width
<link rel="stylesheet" href="../resources/bootstrap/css/bootstrap.min.css" type="text/css"> of the map gets smaller than 600 pixels.
<link rel="stylesheet" href="../resources/layout.css" type="text/css"> tags: "attributions, openstreetmap"
<link rel="stylesheet" href="../resources/bootstrap/css/bootstrap-responsive.min.css" type="text/css"> ---
<title>Attributions example</title> <div class="row-fluid">
</head> <div class="span12">
<body> <div id="map" class="map"></div>
</div>
<div class="navbar navbar-inverse navbar-fixed-top"> </div>
<div class="navbar-inner">
<div class="container">
<a class="brand" href="./"><img src="../resources/logo.png"> OpenLayers 3 Examples</a>
</div>
</div>
</div>
<div class="container-fluid">
<div class="row-fluid">
<div class="span12">
<div id="map" class="map"></div>
</div>
</div>
<div class="row-fluid">
<div class="span12">
<h4 id="title">Attributions example</h4>
<p id="shortdesc">Example of a attributions visibily change on map resize, to collapse them on small maps.</p>
<div id="docs">
<p>See the <a href="attributions.js" target="_blank">attributions.js source</a> to see how this is done.</p>
</div>
<div id="tags">attributions, openstreetmap</div>
</div>
</div>
</div>
<script src="../resources/jquery.min.js" type="text/javascript"></script>
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
<script src="loader.js?id=attributions" type="text/javascript"></script>
</body>
</html>

View File

@@ -15,7 +15,7 @@ var map = new ol.Map({
}) })
], ],
controls: ol.control.defaults({ attribution: false }).extend([attribution]), controls: ol.control.defaults({ attribution: false }).extend([attribution]),
renderer: exampleNS.getRendererFromQueryString(), renderer: common.getRendererFromQueryString(),
target: 'map', target: 'map',
view: new ol.View({ view: new ol.View({
center: [0, 0], center: [0, 0],
@@ -29,5 +29,5 @@ function checkSize() {
attribution.setCollapsed(small); attribution.setCollapsed(small);
} }
$(window).on('resize', checkSize); window.addEventListener('resize', checkSize);
checkSize(); checkSize();

View File

@@ -1,92 +0,0 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="chrome=1">
<meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width">
<link rel="stylesheet" href="../css/ol.css" type="text/css">
<link rel="stylesheet" href="../resources/bootstrap/css/bootstrap.min.css" type="text/css">
<link rel="stylesheet" href="../resources/layout.css" type="text/css">
<link rel="stylesheet" href="../resources/bootstrap/css/bootstrap-responsive.min.css" type="text/css">
<title>Bind HTML input example</title>
</head>
<body>
<div class="navbar navbar-inverse navbar-fixed-top">
<div class="navbar-inner">
<div class="container">
<a class="brand" href="./"><img src="../resources/logo.png"> OpenLayers 3 Examples</a>
</div>
</div>
</div>
<div class="container-fluid">
<div class="row-fluid">
<div class="span12">
<div id="map" class="map"></div>
</div>
</div>
<div class="row-fluid">
<div class="span4">
<h4 id="title">Bind HTML input example</h4>
<p id="shortdesc">Demonstrates two-way binding of HTML input elements to OpenLayers objects.</p>
<div id="docs">
<p>See the <a href="bind-input.js" target="_blank">bind-input.js source</a> to see how this is done.</p>
<p id="has-webgl" style="display: none">With the <a href="?renderer=webgl">WebGL renderer</a>, <strong>hue</strong>, <strong>saturation</strong>, <strong>contrast</strong> and <strong>brightness</strong> can also be controlled.</p>
<div id="no-webgl" class="alert alert-warning" style="display: none">
<h4>Warning!</h4>
A browser that supports <a href="http://get.webgl.org/">WebGL</a> is required to change the
<strong>hue</strong>, <strong>saturation</strong>, <strong>contrast</strong> and <strong>brightness</strong>.
</div>
</div>
<div id="tags">input, bind, openstreetmap</div>
</div>
<div class="span4">
<form class="">
<fieldset>
<legend>Layer</legend>
<label class="checkbox" for="visible">
<input id="visible" type="checkbox"/>visibility
</label>
<label>opacity</label>
<input id="opacity" type="range" min="0" max="1" step="0.01"/>
</fieldset>
<fieldset id="webgl" style="display: none">
<label>hue</label>
<input id="hue" type="range" min="-3.141592653589793" max="3.141592653589793" step="0.01"/>
<label>saturation</label>
<input id="saturation" type="range" min="0" max="5" step="0.01"/>
<label>contrast</label>
<input id="contrast" type="range" min="0" max="2" step="0.01"/>
<label>brightness</label>
<input id="brightness" type="range" min="-1" max="1" step="0.01"/>
</fieldset>
</form>
</div>
<div class="span4">
<form class="">
<fieldset>
<legend>View</legend>
<label>rotation</label>
<input id="rotation" type="range" min="-3.141592653589793" max="3.141592653589793" step="0.01"/>
<label>resolution</label>
<input id="resolution" type="number" min="0" step="250"/>
</fieldset>
</form>
</div>
</div>
</div>
<script src="../resources/jquery.min.js" type="text/javascript"></script>
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
<script src="loader.js?id=bind-input" type="text/javascript"></script>
</body>
</html>

View File

@@ -1,69 +0,0 @@
goog.require('ol.Map');
goog.require('ol.View');
goog.require('ol.control');
goog.require('ol.dom.Input');
goog.require('ol.has');
goog.require('ol.layer.Tile');
goog.require('ol.source.OSM');
function checkWebGL(evt) {
document.getElementById('no-webgl').style.display =
ol.has.WEBGL ? 'none' : '';
document.getElementById('has-webgl').style.display =
ol.has.WEBGL && !evt.glContext ? '' : 'none';
document.getElementById('webgl').style.display =
evt.glContext ? '' : 'none';
}
var layer = new ol.layer.Tile({
source: new ol.source.OSM()
});
layer.once('precompose', checkWebGL);
var view = new ol.View({
center: [0, 0],
zoom: 2
});
var map = new ol.Map({
layers: [layer],
renderer: exampleNS.getRendererFromQueryString(),
target: 'map',
controls: ol.control.defaults({
attributionOptions: /** @type {olx.control.AttributionOptions} */ ({
collapsible: false
})
}),
view: view
});
var visible = new ol.dom.Input(document.getElementById('visible'));
visible.bindTo('checked', layer, 'visible');
var opacity = new ol.dom.Input(document.getElementById('opacity'));
opacity.bindTo('value', layer, 'opacity')
.transform(parseFloat, String);
var hue = new ol.dom.Input(document.getElementById('hue'));
hue.bindTo('value', layer, 'hue')
.transform(parseFloat, String);
var saturation = new ol.dom.Input(document.getElementById('saturation'));
saturation.bindTo('value', layer, 'saturation')
.transform(parseFloat, String);
var contrast = new ol.dom.Input(document.getElementById('contrast'));
contrast.bindTo('value', layer, 'contrast')
.transform(parseFloat, String);
var brightness = new ol.dom.Input(document.getElementById('brightness'));
brightness.bindTo('value', layer, 'brightness')
.transform(parseFloat, String);
var rotation = new ol.dom.Input(document.getElementById('rotation'));
rotation.bindTo('value', view, 'rotation').transform(parseFloat, String);
var resolution = new ol.dom.Input(document.getElementById('resolution'));
resolution.bindTo('value', view, 'resolution').transform(parseFloat, String);

View File

@@ -1,60 +1,22 @@
<!doctype html> ---
<html lang="en"> layout: example.html
<head> title: Bing Maps example
<meta charset="utf-8"> shortdesc: Example of a Bing Maps layer.
<meta http-equiv="X-UA-Compatible" content="chrome=1"> docs: >
<meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width"> <p>When the Bing Maps tile service doesn't have tiles for a given resolution and region it returns "placeholder" tiles indicating that. Zoom the map beyond level 19 to see the "placeholder" tiles. If you want OpenLayers to display stretched tiles in place of "placeholder" tiles beyond zoom level 19 then set <code>maxZoom</code> to <code>19</code> in the options passed to <code>ol.source.BingMaps</code>.</p>
<link rel="stylesheet" href="../css/ol.css" type="text/css"> tags: "bing, bing-maps"
<link rel="stylesheet" href="../resources/bootstrap/css/bootstrap.min.css" type="text/css"> cloak:
<link rel="stylesheet" href="../resources/layout.css" type="text/css"> Ak-dzM4wZjSqTlzveKz5u0d4IQ4bRzVI309GxmkgSVr1ewS6iPSrOvOKhA-CJlm3: Your Bing Maps Key from http://bingmapsportal.com/ here
<link rel="stylesheet" href="../resources/bootstrap/css/bootstrap-responsive.min.css" type="text/css"> ---
<title>Bing Maps example</title> <div class="row-fluid">
</head> <div class="span12">
<body> <div id="map" class="map"></div>
<select id="layer-select">
<div class="navbar navbar-inverse navbar-fixed-top"> <option value="Aerial">Aerial</option>
<div class="navbar-inner"> <option value="AerialWithLabels" selected>Aerial with labels</option>
<div class="container"> <option value="Road">Road</option>
<a class="brand" href="./"><img src="../resources/logo.png"> OpenLayers 3 Examples</a> <option value="collinsBart">Collins Bart</option>
</div> <option value="ordnanceSurvey">Ordnance Survey</option>
</div> </select>
</div> </div>
</div>
<div class="container-fluid">
<div class="row-fluid">
<div class="span12">
<div id="map" class="map"></div>
<select id="layer-select">
<option value="Aerial">Aerial</option>
<option value="AerialWithLabels" selected>Aerial with labels</option>
<option value="Road">Road</option>
<option value="collinsBart">Collins Bart</option>
<option value="ordnanceSurvey">Ordnance Survey</option>
</select>
</div>
</div>
<div class="row-fluid">
<div class="span12">
<h4 id="title">Bing Maps example</h4>
<p id="shortdesc">Example of a Bing Maps layer.</p>
<div id="docs">
<p>When the Bing Maps tile service doesn't have tiles for a given resolution and region it returns "placeholder" tiles indicating that. Zoom the map beyond level 19 to see the "placeholder" tiles. If you want OpenLayers to display stretched tiles in place of "placeholder" tiles beyond zoom level 19 then set <code>maxZoom</code> to <code>19</code> in the options passed to <code>ol.source.BingMaps</code>.</p>
<p>See the <a href="bing-maps.js" target="_blank">bing-maps.js source</a> to see how this is done.</p>
</div>
<div id="tags">bing, bing-maps</div>
</div>
</div>
</div>
<script src="../resources/jquery.min.js" type="text/javascript"></script>
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
<script src="loader.js?id=bing-maps" type="text/javascript"></script>
</body>
</html>

View File

@@ -28,7 +28,7 @@ for (i = 0, ii = styles.length; i < ii; ++i) {
} }
var map = new ol.Map({ var map = new ol.Map({
layers: layers, layers: layers,
renderer: exampleNS.getRendererFromQueryString(), renderer: common.getRendererFromQueryString(),
// Improve user experience by loading tiles while dragging/zooming. Will make // Improve user experience by loading tiles while dragging/zooming. Will make
// zooming choppy on mobile or slow devices. // zooming choppy on mobile or slow devices.
loadTilesWhileInteracting: true, loadTilesWhileInteracting: true,
@@ -39,11 +39,12 @@ var map = new ol.Map({
}) })
}); });
$('#layer-select').change(function() { var select = document.getElementById('layer-select');
var style = $(this).find(':selected').val(); function onChange() {
var i, ii; var style = select.value;
for (i = 0, ii = layers.length; i < ii; ++i) { for (var i = 0, ii = layers.length; i < ii; ++i) {
layers[i].setVisible(styles[i] == style); layers[i].setVisible(styles[i] === style);
} }
}); }
$('#layer-select').trigger('change'); select.addEventListener('change', onChange);
onChange();

4
examples/blend-modes.css Normal file
View File

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

76
examples/blend-modes.html Normal file
View File

@@ -0,0 +1,76 @@
---
layout: example.html
title: Blend modes example
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 class="row-fluid">
<div class="span12">
<div id="map" class="map"></div>
</div>
</div>
<div class="row-fluid">
<div class="span12">
<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>
</div>
</div>

177
examples/blend-modes.js Normal file
View File

@@ -0,0 +1,177 @@
goog.require('ol.Feature');
goog.require('ol.Map');
goog.require('ol.View');
goog.require('ol.geom.Point');
goog.require('ol.layer.Vector');
goog.require('ol.source.Vector');
goog.require('ol.style.Circle');
goog.require('ol.style.Fill');
goog.require('ol.style.Stroke');
goog.require('ol.style.Style');
// 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
var redLayer = new ol.layer.Vector({
source: new ol.source.Vector({
features: [new ol.Feature(new ol.geom.Point([0, 0]))]
}),
style: new ol.style.Style({
image: new ol.style.Circle({
fill: new ol.style.Fill({
color: 'rgba(255,0,0,0.8)'
}),
stroke: new ol.style.Stroke({
color: 'rgb(255,0,0)',
width: 15
}),
radius: 120
})
})
});
var greenLayer = new ol.layer.Vector({
source: new ol.source.Vector({
// 433.013 is roughly 250 * Math.sqrt(3)
features: [new ol.Feature(new ol.geom.Point([250, 433.013]))]
}),
style: new ol.style.Style({
image: new ol.style.Circle({
fill: new ol.style.Fill({
color: 'rgba(0,255,0,0.8)'
}),
stroke: new ol.style.Stroke({
color: 'rgb(0,255,0)',
width: 15
}),
radius: 120
})
})
});
var blueLayer = new ol.layer.Vector({
source: new ol.source.Vector({
features: [new ol.Feature(new ol.geom.Point([500, 0]))]
}),
style: new ol.style.Style({
image: new ol.style.Circle({
fill: new ol.style.Fill({
color: 'rgba(0,0,255,0.8)'
}),
stroke: new ol.style.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
var map = new ol.Map({
layers: [
redLayer,
greenLayer,
blueLayer
],
target: 'map',
view: new ol.View({
center: [250, 220],
extent: [0, 0, 500, 500],
resolution: 4,
minResolution: 2,
maxResolution: 32
})
});
// Various helper methods and event handlers
/**
* This method sets the globalCompositeOperation to the value of the select
* field and it is bound to the precompose event of the layers.
*
* @param {ol.render.Event} evt The render event.
*/
var 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 {ol.render.Event} evt The render event.
*/
var resetBlendModeFromSelect = function(evt) {
evt.context.globalCompositeOperation = 'source-over';
};
/**
* Bind the pre- and postcompose handlers to the passed layer.
*
* @param {ol.layer.Vector} layer The layer to bind the handlers to.
*/
var bindLayerListeners = function(layer) {
layer.on('precompose', setBlendModeFromSelect);
layer.on('postcompose', resetBlendModeFromSelect);
};
/**
* Unind the pre- and postcompose handlers to the passed layers.
*
* @param {ol.layer.Vector} layer The layer to unbind the handlers from.
*/
var unbindLayerListeners = function(layer) {
layer.un('precompose', setBlendModeFromSelect);
layer.un('postcompose', resetBlendModeFromSelect);
};
/**
* Handler for the click event of the 'affect-XXX' checkboxes.
*
* @this {HTMLInputElement}
*/
var affectLayerClicked = function() {
var 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();
};
// Get the form elements and bind the listeners
var select = document.getElementById('blend-mode');
var affectRed = document.getElementById('affect-red');
var affectGreen = document.getElementById('affect-green');
var affectBlue = document.getElementById('affect-blue');
// 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

@@ -0,0 +1,4 @@
.ol-dragbox {
background-color: rgba(255,255,255,0.4);
border-color: rgba(100,150,0,1);
}

View File

@@ -1,59 +1,20 @@
<!doctype html> ---
<html lang="en"> layout: example.html
<head> title: Box selection example
<meta charset="utf-8"> shortdesc: Using a DragBox interaction to select features.
<meta http-equiv="X-UA-Compatible" content="chrome=1"> docs: >
<meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width"> <p>This example shows how to use a <code>DragBox</code> interaction to select features. Selected features are added
<link rel="stylesheet" href="../css/ol.css" type="text/css"> to the feature overlay of a select interaction (<code>ol.interaction.Select</code>) for highlighting.</p>
<link rel="stylesheet" href="../resources/bootstrap/css/bootstrap.min.css" type="text/css"> <p>Use <code>Ctrl+drag</code> (<code>Meta+drag</code> on Mac) to draw boxes.</p>
<link rel="stylesheet" href="../resources/layout.css" type="text/css"> tags: "DragBox, feature, selection, box"
<link rel="stylesheet" href="../resources/bootstrap/css/bootstrap-responsive.min.css" type="text/css"> ---
<title>Box selection example</title> <div class="row-fluid">
</head> <div class="span12">
<body> <div id="map" class="map"></div>
</div>
<div class="navbar navbar-inverse navbar-fixed-top"> <div class="span4 offset4 pull-right">
<div class="navbar-inner"> <div id="info" class="alert alert-success">
<div class="container"> &nbsp;
<a class="brand" href="./"><img src="../resources/logo.png"> OpenLayers 3 Examples</a>
</div>
</div>
</div> </div>
</div>
<div class="container-fluid"> </div>
<div class="row-fluid">
<div class="span12">
<div id="map" class="map"></div>
</div>
</div>
<div class="row-fluid">
<div class="span4">
<h4 id="title">Box selection example</h4>
<p id="shortdesc">Using a DragBox interaction to select features.</p>
<div id="docs">
<p>This example shows how to use a <code>DragBox</code> interaction to select features. Selected features are added
to the feature overlay of a select interaction (<code>ol.interaction.Select</code>) for highlighting.</p>
<p>Use <code>SHIFT+drag</code> to draw boxes.</p>
<p>See the <a href="box-selection.js" target="_blank">box-selection.js source</a> to see how this is done.</p>
</div>
<div id="tags">DragBox, feature, selection, box</div>
</div>
<div class="span4 offset4">
<div id="info" class="alert alert-success">
&nbsp;
</div>
</div>
</div>
</div>
<script src="../resources/jquery.min.js" type="text/javascript"></script>
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
<script src="loader.js?id=box-selection" type="text/javascript"></script>
</body>
</html>

View File

@@ -1,20 +1,18 @@
goog.require('ol.Map'); goog.require('ol.Map');
goog.require('ol.View'); goog.require('ol.View');
goog.require('ol.events.condition'); goog.require('ol.events.condition');
goog.require('ol.interaction'); goog.require('ol.format.GeoJSON');
goog.require('ol.interaction.DragBox'); goog.require('ol.interaction.DragBox');
goog.require('ol.interaction.Select'); goog.require('ol.interaction.Select');
goog.require('ol.layer.Tile'); goog.require('ol.layer.Tile');
goog.require('ol.layer.Vector'); goog.require('ol.layer.Vector');
goog.require('ol.source.GeoJSON');
goog.require('ol.source.OSM'); goog.require('ol.source.OSM');
goog.require('ol.style.Stroke'); goog.require('ol.source.Vector');
goog.require('ol.style.Style');
var vectorSource = new ol.source.GeoJSON({ var vectorSource = new ol.source.Vector({
projection: 'EPSG:3857', url: 'data/geojson/countries.geojson',
url: 'data/geojson/countries.geojson' format: new ol.format.GeoJSON()
}); });
@@ -43,12 +41,7 @@ var selectedFeatures = select.getFeatures();
// a DragBox interaction used to select features by drawing boxes // a DragBox interaction used to select features by drawing boxes
var dragBox = new ol.interaction.DragBox({ var dragBox = new ol.interaction.DragBox({
condition: ol.events.condition.shiftKeyOnly, condition: ol.events.condition.platformModifierKeyOnly
style: new ol.style.Style({
stroke: new ol.style.Stroke({
color: [0, 0, 255, 1]
})
})
}); });
map.addInteraction(dragBox); map.addInteraction(dragBox);

View File

@@ -1,74 +0,0 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="chrome=1">
<meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width">
<link rel="stylesheet" href="../css/ol.css" type="text/css">
<link rel="stylesheet" href="../resources/bootstrap/css/bootstrap.min.css" type="text/css">
<link rel="stylesheet" href="../resources/layout.css" type="text/css">
<link rel="stylesheet" href="../resources/bootstrap/css/bootstrap-responsive.min.css" type="text/css">
<title>Brightness/contrast example</title>
<style>
#reset-brightness {
min-width: 138px;
}
#reset-contrast {
min-width: 120px;
}
</style>
</head>
<body>
<div class="navbar navbar-inverse navbar-fixed-top">
<div class="navbar-inner">
<div class="container">
<a class="brand" href="./"><img src="../resources/logo.png"> OpenLayers 3 Examples</a>
</div>
</div>
</div>
<div class="container-fluid">
<div class="row-fluid">
<div class="span12">
<div id="map" class="map"></div>
<div id="no-webgl" class="alert alert-error" style="display: none">
This example requires a browser that supports <a href="http://get.webgl.org/">WebGL</a>.
</div>
<div class="btn-group">
<button id="increase-brightness"><i class="icon-plus"></i></button>
<button id="reset-brightness">Brightness</button>
<button id="decrease-brightness"><i class="icon-minus"></i></button>
</div>
<div class="btn-group">
<button id="increase-contrast"><i class="icon-plus"></i></button>
<button id="reset-contrast">Contrast</button>
<button id="decrease-contrast"><i class="icon-minus"></i></button>
</div>
</div>
</div>
<div class="row-fluid">
<div class="span12">
<h4 id="title">Brightness/contrast example</h4>
<p id="shortdesc">Example of brightness/contrast control on the client (WebGL only).</p>
<div id="docs">
<p>See the <a href="brightness-contrast.js" target="_blank">brightness-contrast.js source</a> to see how this is done.</p>
</div>
<div id="tags">brightness, contrast, webgl</div>
</div>
</div>
</div>
<script src="../resources/jquery.min.js" type="text/javascript"></script>
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
<script src="loader.js?id=brightness-contrast" type="text/javascript"></script>
</body>
</html>

View File

@@ -1,75 +0,0 @@
goog.require('ol.Map');
goog.require('ol.View');
goog.require('ol.has');
goog.require('ol.layer.Tile');
goog.require('ol.source.MapQuest');
function setResetBrightnessButtonHTML() {
resetBrightness.innerHTML = 'Brightness (' +
layer.getBrightness().toFixed(3) + ')';
}
function setResetContrastButtonHTML() {
resetContrast.innerHTML = 'Contrast (' + layer.getContrast().toFixed(3) + ')';
}
if (!ol.has.WEBGL) {
var info = document.getElementById('no-webgl');
/**
* display error message
*/
info.style.display = '';
} else {
var layer = new ol.layer.Tile({
source: new ol.source.MapQuest({layer: 'sat'})
});
var map = new ol.Map({
layers: [layer],
renderer: 'webgl',
target: 'map',
view: new ol.View({
center: [0, 0],
zoom: 2
})
});
var increaseBrightness = document.getElementById('increase-brightness');
var resetBrightness = document.getElementById('reset-brightness');
var decreaseBrightness = document.getElementById('decrease-brightness');
setResetBrightnessButtonHTML();
increaseBrightness.addEventListener('click', function() {
layer.setBrightness(Math.min(layer.getBrightness() + 0.125, 1));
setResetBrightnessButtonHTML();
}, false);
resetBrightness.addEventListener('click', function() {
layer.setBrightness(0);
setResetBrightnessButtonHTML();
}, false);
decreaseBrightness.addEventListener('click', function() {
layer.setBrightness(Math.max(layer.getBrightness() - 0.125, -1));
setResetBrightnessButtonHTML();
}, false);
var increaseContrast = document.getElementById('increase-contrast');
var resetContrast = document.getElementById('reset-contrast');
var decreaseContrast = document.getElementById('decrease-contrast');
setResetContrastButtonHTML();
increaseContrast.addEventListener('click', function() {
layer.setContrast(layer.getContrast() + 0.125);
setResetContrastButtonHTML();
}, false);
resetContrast.addEventListener('click', function() {
layer.setContrast(1);
setResetContrastButtonHTML();
}, false);
decreaseContrast.addEventListener('click', function() {
layer.setContrast(Math.max(layer.getContrast() - 0.125, 0));
setResetContrastButtonHTML();
}, false);
}

View File

@@ -0,0 +1,4 @@
.tooltip-inner {
white-space: nowrap;
}

View File

@@ -1,62 +1,13 @@
<!doctype html> ---
<html lang="en"> layout: example.html
<head> title: Custom tooltips example
<meta charset="utf-8"> shortdesc: This example shows how to customize the buttons tooltips with Bootstrap.
<meta http-equiv="X-UA-Compatible" content="chrome=1"> docs: >
<meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width"> This example shows how to customize the buttons tooltips with <a href="http://getbootstrap.com/javascript/#tooltips">Bootstrap</a>.
<link rel="stylesheet" href="../css/ol.css" type="text/css"> tags: "custom, tooltip"
<link rel="stylesheet" href="../resources/bootstrap/css/bootstrap.min.css" type="text/css"> ---
<link rel="stylesheet" href="../resources/layout.css" type="text/css"> <div class="row-fluid">
<link rel="stylesheet" href="../resources/bootstrap/css/bootstrap-responsive.min.css" type="text/css"> <div class="span12">
<style type="text/css"> <div id="map" class="map"></div>
.tooltip-inner { </div>
white-space: nowrap; </div>
}
</style>
<title>ol3 custom tooltips example</title>
</head>
<body>
<div class="navbar navbar-inverse navbar-fixed-top">
<div class="navbar-inner">
<div class="container">
<a class="brand" href="./"><img src="../resources/logo.png"> OpenLayers 3 Examples</a>
</div>
</div>
</div>
<div class="container-fluid">
<div class="row-fluid">
<div class="span12">
<div id="map" class="map"></div>
</div>
</div>
<div class="row-fluid">
<div class="span12">
<h4 id="title">Custom tooltips</h4>
<p id="shortdesc">
This example shows how to customize the buttons tooltips with
<a href="http://getbootstrap.com/javascript/#tooltips">Bootstrap</a>.
</p>
<div id="docs">
<p>
See the <a href="button-title.js" target="_blank">button-title.js source</a> to see how this is done.
</p>
</div>
<div id="tags">
custom, tooltip
</div>
</div>
</div>
</div>
<script src="../resources/jquery.min.js" type="text/javascript"></script>
<script src="../resources/bootstrap/js/bootstrap.min.js" type="text/javascript"></script>
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
<script src="loader.js?id=button-title" type="text/javascript"></script>
</body>
</html>

View File

@@ -9,7 +9,7 @@ var map = new ol.Map({
source: new ol.source.OSM() source: new ol.source.OSM()
}) })
], ],
renderer: exampleNS.getRendererFromQueryString(), renderer: common.getRendererFromQueryString(),
target: 'map', target: 'map',
view: new ol.View({ view: new ol.View({
center: [-8730000, 5930000], center: [-8730000, 5930000],

View File

@@ -1,52 +1,17 @@
<!doctype html> ---
<html lang="en"> layout: example.html
<head> title: Canvas tiles example
<meta charset="utf-8"> shortdesc: Renders tiles with coordinates for debugging.
<meta http-equiv="X-UA-Compatible" content="chrome=1"> docs: >
<meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width"> The black grid tiles are generated on the client with an HTML5 canvas. The
<link rel="stylesheet" href="../css/ol.css" type="text/css"> displayed tile coordinates are OpenLayers tile coordinates. These increase
<link rel="stylesheet" href="../resources/bootstrap/css/bootstrap.min.css" type="text/css"> from bottom to top, but standard XYZ tiling scheme coordinates increase from
<link rel="stylesheet" href="../resources/layout.css" type="text/css"> top to bottom. To calculate the `y` for a standard XYZ tile coordinate, use
<link rel="stylesheet" href="../resources/bootstrap/css/bootstrap-responsive.min.css" type="text/css"> `-y - 1`.
<title>Canvas tiles example</title> tags: "layers, openstreetmap, canvas"
</head> ---
<body> <div class="row-fluid">
<div class="span12">
<div class="navbar navbar-inverse navbar-fixed-top"> <div id="map" class="map"></div>
<div class="navbar-inner"> </div>
<div class="container"> </div>
<a class="brand" href="./"><img src="../resources/logo.png"> OpenLayers 3 Examples</a>
</div>
</div>
</div>
<div class="container-fluid">
<div class="row-fluid">
<div class="span12">
<div id="map" class="map"></div>
</div>
</div>
<div class="row-fluid">
<div class="span12">
<h4 id="title">Canvas tiles example</h4>
<p id="shortdesc">Renders tiles with coordinates for debugging.</p>
<div id="docs">
<p>The black grid tiles are generated on the client with an HTML5 canvas. Note that the tile coordinates are ol3 normalized tile coordinates (origin bottom left), not OSM tile coordinates (origin top left).</p>
<p>See the <a href="canvas-tiles.js" target="_blank">canvas-tiles.js source</a> to see how this is done.</p>
</div>
<div id="tags">layers, openstreetmap, canvas</div>
</div>
</div>
</div>
<script src="../resources/jquery.min.js" type="text/javascript"></script>
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
<script src="loader.js?id=canvas-tiles" type="text/javascript"></script>
</body>
</html>

View File

@@ -5,24 +5,22 @@ goog.require('ol.layer.Tile');
goog.require('ol.proj'); goog.require('ol.proj');
goog.require('ol.source.OSM'); goog.require('ol.source.OSM');
goog.require('ol.source.TileDebug'); goog.require('ol.source.TileDebug');
goog.require('ol.tilegrid.XYZ');
var osmSource = new ol.source.OSM();
var map = new ol.Map({ var map = new ol.Map({
layers: [ layers: [
new ol.layer.Tile({ new ol.layer.Tile({
source: new ol.source.OSM() source: osmSource
}), }),
new ol.layer.Tile({ new ol.layer.Tile({
source: new ol.source.TileDebug({ source: new ol.source.TileDebug({
projection: 'EPSG:3857', projection: 'EPSG:3857',
tileGrid: new ol.tilegrid.XYZ({ tileGrid: osmSource.getTileGrid()
maxZoom: 22
})
}) })
}) })
], ],
renderer: exampleNS.getRendererFromQueryString(), renderer: common.getRendererFromQueryString(),
target: 'map', target: 'map',
controls: ol.control.defaults({ controls: ol.control.defaults({
attributionOptions: /** @type {olx.control.AttributionOptions} */ ({ attributionOptions: /** @type {olx.control.AttributionOptions} */ ({

56
examples/center.css Normal file
View File

@@ -0,0 +1,56 @@
.mapcontainer {
position: relative;
margin-bottom: 20px;
}
.map {
width: 1000px;
height: 600px;
}
div.ol-zoom {
top: 178px;
left: 158px;
}
div.ol-attribution {
bottom: 30px;
right: 50px;
}
.padding-top {
position: absolute;
top: 0;
left: 0px;
width: 1000px;
height: 170px;
background: rgba(255, 255, 255, 0.5);
}
.padding-left {
position: absolute;
top: 170px;
left: 0;
width: 150px;
height: 400px;
background: rgba(255, 255, 255, 0.5);
}
.padding-right {
position: absolute;
top: 170px;
left: 950px;
width: 50px;
height: 400px;
background: rgba(255, 255, 255, 0.5);
}
.padding-bottom {
position: absolute;
top: 570px;
left: 0px;
width: 1000px;
height: 30px;
background: rgba(255, 255, 255, 0.5);
}
.center {
position: absolute;
border: solid 1px black;
top: 490px;
left: 560px;
width: 20px;
height: 20px;
}

View File

@@ -1,131 +1,34 @@
<!doctype html> ---
<html lang="en"> layout: example.html
<head> title: Advanced View Positioning example
<meta charset="utf-8"> shortdesc: This example demonstrates how a map's view can be adjusted so a geometry or coordinate is positioned at a specific pixel location.
<meta http-equiv="X-UA-Compatible" content="chrome=1"> docs: >
<meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width"> This example demonstrates how a map's view can be
<link rel="stylesheet" href="../css/ol.css" type="text/css"> adjusted so a geometry or coordinate is positioned at a specific
<link rel="stylesheet" href="../resources/bootstrap/css/bootstrap.min.css" type="text/css"> pixel location. The map above has top, right, bottom, and left
<link rel="stylesheet" href="../resources/layout.css" type="text/css"> padding applied inside the viewport. The view's <code>fit</code> method
<link rel="stylesheet" href="../resources/bootstrap/css/bootstrap-responsive.min.css" type="text/css"> is used to fit a geometry in the view with the same padding. The
<style> view's <code>centerOn</code> method is used to position a coordinate (Lausanne)
.mapcontainer { at a specific pixel location (the center of the black box).
position: relative; <p>Use <code>Alt</code>+<code>Shift</code>+drag to rotate the map.</p>
margin-bottom: 20px; tags: "center, rotation, openstreetmap"
} ---
.map { <div class="row-fluid">
width: 1000px; <div class="span12 mapcontainer">
height: 600px; <div id="map" class="map"></div>
} <div class="padding-top"></div>
div.ol-zoom { <div class="padding-left"></div>
top: 178px; <div class="padding-right"></div>
left: 158px; <div class="padding-bottom"></div>
} <div class="center"></div>
div.ol-attribution { </div>
bottom: 30px; </div>
right: 50px; <div class="row-fluid">
} <div class="span12">
.padding-top { <button id="zoomtoswitzerlandbest">Zoom to Switzerland</button> (best fit),<br/>
position: absolute; <button id="zoomtoswitzerlandconstrained">Zoom to Switzerland</button> (respect resolution constraint).<br/>
top: 0; <button id="zoomtoswitzerlandnearest">Zoom to Switzerland</button> (nearest),<br/>
left: 0px; <button id="zoomtolausanne">Zoom to Lausanne</button> (with min resolution),<br/>
width: 1000px; <button id="centerlausanne">Center on Lausanne</button>
height: 170px; </div>
background: rgba(255, 255, 255, 0.5); </div>
}
.padding-left {
position: absolute;
top: 170px;
left: 0;
width: 150px;
height: 400px;
background: rgba(255, 255, 255, 0.5);
}
.padding-right {
position: absolute;
top: 170px;
left: 950px;
width: 50px;
height: 400px;
background: rgba(255, 255, 255, 0.5);
}
.padding-bottom {
position: absolute;
top: 570px;
left: 0px;
width: 1000px;
height: 30px;
background: rgba(255, 255, 255, 0.5);
}
.center {
position: absolute;
border: solid 1px black;
top: 490px;
left: 560px;
width: 20px;
height: 20px;
}
</style>
<title>Advanced View Positioning example</title>
</head>
<body>
<div class="navbar navbar-inverse navbar-fixed-top">
<div class="navbar-inner">
<div class="container">
<a class="brand" href="./"><img src="../resources/logo.png">OpenLayers 3 Examples</a>
</div>
</div>
</div>
<div class="container-fluid">
<div class="row-fluid">
<div class="span12 mapcontainer">
<div id="map" class="map"></div>
<div class="padding-top"></div>
<div class="padding-left"></div>
<div class="padding-right"></div>
<div class="padding-bottom"></div>
<div class="center"></div>
</div>
</div>
<div class="row-fluid">
<div class="span12">
<button id="zoomtoswitzerlandbest">Zoom to Switzerland</button> (best fit),<br/>
<button id="zoomtoswitzerlandconstrained">Zoom to Switzerland</button> (respect resolution constraint).<br/>
<button id="zoomtoswitzerlandnearest">Zoom to Switzerland</button> (nearest),<br/>
<button id="zoomtolausanne">Zoom to Lausanne</button> (with min resolution),<br/>
<button id="centerlausanne">Center on Lausanne</button>
</div>
</div>
<div class="row-fluid">
<div class="span12">
<h4 id="title">Advanced View Positioning example</h4>
<p id="shortdesc">This example demonstrates how a map's view can be
adjusted so a geometry or coordinate is positioned at a specific
pixel location. The map above has top, right, bottom, and left
padding applied inside the viewport. The view's <code>fitGeometry</code> method
is used to fit a geometry in the view with the same padding. The
view's <code>centerOn</code> method is used to position a coordinate (Lausanne)
at a specific pixel location (the center of the black box).</p>
<div id="docs">
<p>Use <code>Alt</code>+<code>Shift</code>+drag to rotate the map.</p>
<p>See the <a href="center.js" target="_blank">center.js source</a> to see how this is done.</p>
</div>
<div id="tags">center, rotation, openstreetmap</div>
</div>
</div>
</div>
<script src="../resources/jquery.min.js" type="text/javascript"></script>
<script src="loader.js?id=center" type="text/javascript"></script>
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
</body>
</html>

View File

@@ -1,20 +1,21 @@
goog.require('ol.Map'); goog.require('ol.Map');
goog.require('ol.View'); goog.require('ol.View');
goog.require('ol.control'); goog.require('ol.control');
goog.require('ol.format.GeoJSON');
goog.require('ol.geom.Point'); goog.require('ol.geom.Point');
goog.require('ol.geom.SimpleGeometry'); goog.require('ol.geom.SimpleGeometry');
goog.require('ol.layer.Tile'); goog.require('ol.layer.Tile');
goog.require('ol.layer.Vector'); goog.require('ol.layer.Vector');
goog.require('ol.source.GeoJSON');
goog.require('ol.source.OSM'); goog.require('ol.source.OSM');
goog.require('ol.source.Vector');
goog.require('ol.style.Circle'); goog.require('ol.style.Circle');
goog.require('ol.style.Fill'); goog.require('ol.style.Fill');
goog.require('ol.style.Stroke'); goog.require('ol.style.Stroke');
goog.require('ol.style.Style'); goog.require('ol.style.Style');
var source = new ol.source.GeoJSON({ var source = new ol.source.Vector({
projection: 'EPSG:3857', url: 'data/geojson/switzerland.geojson',
url: 'data/geojson/switzerland.geojson' format: new ol.format.GeoJSON()
}); });
var style = new ol.style.Style({ var style = new ol.style.Style({
fill: new ol.style.Fill({ fill: new ol.style.Fill({
@@ -64,7 +65,7 @@ zoomtoswitzerlandbest.addEventListener('click', function() {
var feature = source.getFeatures()[0]; var feature = source.getFeatures()[0];
var polygon = /** @type {ol.geom.SimpleGeometry} */ (feature.getGeometry()); var polygon = /** @type {ol.geom.SimpleGeometry} */ (feature.getGeometry());
var size = /** @type {ol.Size} */ (map.getSize()); var size = /** @type {ol.Size} */ (map.getSize());
view.fitGeometry( view.fit(
polygon, polygon,
size, size,
{ {
@@ -80,7 +81,7 @@ zoomtoswitzerlandconstrained.addEventListener('click', function() {
var feature = source.getFeatures()[0]; var feature = source.getFeatures()[0];
var polygon = /** @type {ol.geom.SimpleGeometry} */ (feature.getGeometry()); var polygon = /** @type {ol.geom.SimpleGeometry} */ (feature.getGeometry());
var size = /** @type {ol.Size} */ (map.getSize()); var size = /** @type {ol.Size} */ (map.getSize());
view.fitGeometry( view.fit(
polygon, polygon,
size, size,
{ {
@@ -95,7 +96,7 @@ zoomtoswitzerlandnearest.addEventListener('click', function() {
var feature = source.getFeatures()[0]; var feature = source.getFeatures()[0];
var polygon = /** @type {ol.geom.SimpleGeometry} */ (feature.getGeometry()); var polygon = /** @type {ol.geom.SimpleGeometry} */ (feature.getGeometry());
var size = /** @type {ol.Size} */ (map.getSize()); var size = /** @type {ol.Size} */ (map.getSize());
view.fitGeometry( view.fit(
polygon, polygon,
size, size,
{ {
@@ -110,7 +111,7 @@ zoomtolausanne.addEventListener('click', function() {
var feature = source.getFeatures()[1]; var feature = source.getFeatures()[1];
var point = /** @type {ol.geom.SimpleGeometry} */ (feature.getGeometry()); var point = /** @type {ol.geom.SimpleGeometry} */ (feature.getGeometry());
var size = /** @type {ol.Size} */ (map.getSize()); var size = /** @type {ol.Size} */ (map.getSize());
view.fitGeometry( view.fit(
point, point,
size, size,
{ {

View File

@@ -1,51 +1,13 @@
<!doctype html> ---
<html lang="en"> layout: example.html
<head> title: Clustering example
<meta charset="utf-8"> shortdesc: Example of using <code>ol.source.Cluster</code>.
<meta http-equiv="X-UA-Compatible" content="chrome=1"> docs: >
<meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width"> This example shows how to do clustering on point features.
<link rel="stylesheet" href="../css/ol.css" type="text/css"> tags: "cluster, vector"
<link rel="stylesheet" href="../resources/bootstrap/css/bootstrap.min.css" type="text/css"> ---
<link rel="stylesheet" href="../resources/layout.css" type="text/css"> <div class="row-fluid">
<link rel="stylesheet" href="../resources/bootstrap/css/bootstrap-responsive.min.css" type="text/css"> <div class="span12">
<title>Clustering example</title> <div id="map" class="map"></div>
</head> </div>
<body> </div>
<div class="navbar navbar-inverse navbar-fixed-top">
<div class="navbar-inner">
<div class="container">
<a class="brand" href="./"><img src="../resources/logo.png"> OpenLayers 3 Examples</a>
</div>
</div>
</div>
<div class="container-fluid">
<div class="row-fluid">
<div class="span12">
<div id="map" class="map"></div>
</div>
</div>
<div class="row-fluid">
<div class="span12">
<h4 id="title">Clustering example</h4>
<p id="shortdesc">Example of using <code>ol.Cluster</code>.</p>
<div id="docs">
<p>See the <a href="cluster.js" target="_blank">cluster.js source</a> to see how this is done.</p>
</div>
<div id="tags">cluster vector</div>
</div>
</div>
</div>
<script src="../resources/jquery.min.js" type="text/javascript"></script>
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
<script src="loader.js?id=cluster" type="text/javascript"></script>
</body>
</html>

View File

@@ -0,0 +1,5 @@
table.controls td {
text-align: center;
padding: 2px 5px;
min-width: 60px;
}

View File

@@ -0,0 +1,30 @@
---
layout: example.html
title: Manipulating colors with a raster source
shortdesc: Demonstrates color manipulation with a raster source.
docs: >
A raster source allows arbitrary manipulation of pixel values. In this example, RGB values on the input tile source are adjusted in a pixel-wise operation before being rendered with a second raster source. The raster operation takes pixels in in RGB space, converts them to HCL color space, adjusts the values based on the controls above, and then converts them back to RGB space for rendering.
tags: "color, hue, lightness, chroma"
---
<div class="row-fluid">
<div class="span12">
<div id="map" class="map"></div>
<table class="controls">
<tr>
<td>hue</td>
<td><span id="hueOut"></span>°</td>
<td><input id="hue" type="range" min="-180" max="180" value="0"/></td>
</tr>
<tr>
<td>chroma</td>
<td><span id="chromaOut"></span> %</td>
<td><input id="chroma" type="range" min="0" max="100" value="100"/></td>
</tr>
<tr>
<td>lightness</td>
<td><span id="lightnessOut"></span> %</td>
<td><input id="lightness" type="range" min="0" max="100" value="100"/></td>
</tr>
</table>
</div>
</div>

View File

@@ -0,0 +1,173 @@
// NOCOMPILE
goog.require('ol.Map');
goog.require('ol.View');
goog.require('ol.layer.Image');
goog.require('ol.source.Raster');
goog.require('ol.source.Stamen');
/**
* Color manipulation functions below are adapted from
* https://github.com/d3/d3-color.
*/
var Xn = 0.950470;
var Yn = 1;
var Zn = 1.088830;
var t0 = 4 / 29;
var t1 = 6 / 29;
var t2 = 3 * t1 * t1;
var t3 = t1 * t1 * t1;
var twoPi = 2 * Math.PI;
/**
* Convert an RGB pixel into an HCL pixel.
* @param {ol.raster.Pixel} pixel A pixel in RGB space.
* @return {ol.raster.Pixel} A pixel in HCL space.
*/
function rgb2hcl(pixel) {
var red = rgb2xyz(pixel[0]);
var green = rgb2xyz(pixel[1]);
var blue = rgb2xyz(pixel[2]);
var x = xyz2lab(
(0.4124564 * red + 0.3575761 * green + 0.1804375 * blue) / Xn);
var y = xyz2lab(
(0.2126729 * red + 0.7151522 * green + 0.0721750 * blue) / Yn);
var z = xyz2lab(
(0.0193339 * red + 0.1191920 * green + 0.9503041 * blue) / Zn);
var l = 116 * y - 16;
var a = 500 * (x - y);
var b = 200 * (y - z);
var c = Math.sqrt(a * a + b * b);
var h = Math.atan2(b, a);
if (h < 0) {
h += twoPi;
}
pixel[0] = h;
pixel[1] = c;
pixel[2] = l;
return pixel;
}
/**
* Convert an HCL pixel into an RGB pixel.
* @param {ol.raster.Pixel} pixel A pixel in HCL space.
* @return {ol.raster.Pixel} A pixel in RGB space.
*/
function hcl2rgb(pixel) {
var h = pixel[0];
var c = pixel[1];
var l = pixel[2];
var a = Math.cos(h) * c;
var b = Math.sin(h) * c;
var y = (l + 16) / 116;
var x = isNaN(a) ? y : y + a / 500;
var z = isNaN(b) ? y : y - b / 200;
y = Yn * lab2xyz(y);
x = Xn * lab2xyz(x);
z = Zn * lab2xyz(z);
pixel[0] = xyz2rgb(3.2404542 * x - 1.5371385 * y - 0.4985314 * z);
pixel[1] = xyz2rgb(-0.9692660 * x + 1.8760108 * y + 0.0415560 * z);
pixel[2] = xyz2rgb(0.0556434 * x - 0.2040259 * y + 1.0572252 * z);
return pixel;
}
function xyz2lab(t) {
return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;
}
function lab2xyz(t) {
return t > t1 ? t * t * t : t2 * (t - t0);
}
function rgb2xyz(x) {
return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);
}
function xyz2rgb(x) {
return 255 * (x <= 0.0031308 ?
12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);
}
var raster = new ol.source.Raster({
sources: [new ol.source.Stamen({
layer: 'watercolor'
})],
operation: function(pixels, data) {
var hcl = rgb2hcl(pixels[0]);
var h = hcl[0] + Math.PI * data.hue / 180;
if (h < 0) {
h += twoPi;
} else if (h > twoPi) {
h -= twoPi;
}
hcl[0] = h;
hcl[1] *= (data.chroma / 100);
hcl[2] *= (data.lightness / 100);
return hcl2rgb(hcl);
},
lib: {
rgb2hcl: rgb2hcl,
hcl2rgb: hcl2rgb,
rgb2xyz: rgb2xyz,
lab2xyz: lab2xyz,
xyz2lab: xyz2lab,
xyz2rgb: xyz2rgb,
Xn: Xn,
Yn: Yn,
Zn: Zn,
t0: t0,
t1: t1,
t2: t2,
t3: t3,
twoPi: twoPi
}
});
raster.on('beforeoperations', function(event) {
var data = event.data;
for (var id in controls) {
data[id] = Number(controls[id].value);
}
});
var map = new ol.Map({
layers: [
new ol.layer.Image({
source: raster
})
],
target: 'map',
view: new ol.View({
center: [0, 2500000],
zoom: 2,
maxZoom: 18
})
});
var controlIds = ['hue', 'chroma', 'lightness'];
var controls = {};
controlIds.forEach(function(id) {
var control = document.getElementById(id);
var output = document.getElementById(id + 'Out');
control.addEventListener('input', function() {
output.innerText = control.value;
raster.changed();
});
output.innerText = control.value;
controls[id] = control;
});

View File

@@ -0,0 +1,7 @@
.rotate-north {
top: 65px;
left: .5em;
}
.ol-touch .rotate-north {
top: 80px;
}

View File

@@ -1,64 +1,13 @@
<!doctype html> ---
<html lang="en"> layout: example.html
<head> title: Custom control example
<meta charset="utf-8"> shortdesc: Shows how to create custom controls.
<meta http-equiv="X-UA-Compatible" content="chrome=1"> docs: >
<meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width"> This example creates a "rotate to north" button.
<link rel="stylesheet" href="../css/ol.css" type="text/css"> tags: "custom, control"
<link rel="stylesheet" href="../resources/bootstrap/css/bootstrap.min.css" type="text/css"> ---
<link rel="stylesheet" href="../resources/layout.css" type="text/css"> <div class="row-fluid">
<link rel="stylesheet" href="../resources/bootstrap/css/bootstrap-responsive.min.css" type="text/css"> <div class="span12">
<style type="text/css"> <div id="map" class="map"></div>
.rotate-north { </div>
top: 65px; </div>
left: .5em;
}
.ol-touch .rotate-north {
top: 80px;
}
</style>
<title>ol3 custom controls example</title>
</head>
<body>
<div class="navbar navbar-inverse navbar-fixed-top">
<div class="navbar-inner">
<div class="container">
<a class="brand" href="./"><img src="../resources/logo.png"> OpenLayers 3 Examples</a>
</div>
</div>
</div>
<div class="container-fluid">
<div class="row-fluid">
<div class="span12">
<div id="map" class="map"></div>
</div>
</div>
<div class="row-fluid">
<div class="span12">
<h4 id="title">Custom controls</h4>
<p id="shortdesc">This example shows how to create custom controls.</p>
<div id="docs">
<p>
This example creates a "rotate to north" button.
See the <a href="custom-controls.js" target="_blank">custom-controls.js
source</a> to see how this is done.
</p>
</div>
<div id="tags">
custom, control
</div>
</div>
</div>
</div>
<script src="../resources/jquery.min.js" type="text/javascript"></script>
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
<script src="loader.js?id=custom-controls" type="text/javascript"></script>
</body>
</html>

View File

@@ -71,7 +71,7 @@ var map = new ol.Map({
source: new ol.source.OSM() source: new ol.source.OSM()
}) })
], ],
renderer: exampleNS.getRendererFromQueryString(), renderer: common.getRendererFromQueryString(),
target: 'map', target: 'map',
view: new ol.View({ view: new ol.View({
center: [0, 0], center: [0, 0],

View File

@@ -0,0 +1,14 @@
---
layout: example.html
title: Custom interaction example
shortdesc: Example of a custom interaction.
docs: >
This example demonstrates creating a custom interaction by subclassing `ol.interaction.Pointer`.
Note that the built in interaction `ol.interaction.Translate` might be a better option for moving features.
tags: "drag, feature, vector, editing, custom, interaction"
---
<div class="row-fluid">
<div class="span12">
<div id="map" class="map"></div>
</div>
</div>

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