Compare commits

..

1556 Commits

Author SHA1 Message Date
Tim Schaub 68b19e90e3 3.11.0-beta.2 2015-11-01 10:38:39 -07:00
Tim Schaub 8e1e58be68 Merge branch 'master' of github.com:openlayers/ol3 into v3.11.0-beta 2015-11-01 10:35:33 -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 28792a6dbc 3.11.0-beta.1 2015-10-31 13:57:53 -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 https://github.com/openlayers/ol3/commit/e558b5db639065fa0a7e41012cb9fa2fde7c41d5#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 https://github.com/laurentj/slimerjs/commit/911fcb671a36049bd3ca5e7b8d5824a8d7f01dc7) 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
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
Alexandre Dubé d1c3dc51ad Fix Drag interaction, works with modify now 2015-03-26 08:36:24 -04: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
Jiri Matyas ab9100450b enable deep clone of multipolygon endss 2015-03-17 11:09:03 +01:00
843 changed files with 45904 additions and 35318 deletions
+17
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
+1 -3
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/
-3
View File
@@ -1,5 +1,2 @@
*.pyc *.pyc
/build/ /build/
/examples/*.html.png
/examples/example-list.js
/examples/example-list.xml
+25 -2
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
+52 -163
View File
@@ -14,13 +14,21 @@ When you want to get involved and discuss new features or changes, please use [t
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. 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
@@ -30,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.
@@ -213,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.
@@ -233,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:
@@ -260,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
@@ -322,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
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.
+1 -1
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
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 > $@
+22 -3
View File
@@ -1,11 +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/).
- Download the [latest release](http://openlayers.org/download/)
- 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`
-1767
View File
File diff suppressed because it is too large Load Diff
+193
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
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)
-269
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'
+2 -2
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.
* *
+2 -3
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
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:])
-2
View File
@@ -1,2 +0,0 @@
@echo off
%SystemDrive%\Python27\python.exe build.py %*
-811
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()
+341
View File
@@ -1,5 +1,346 @@
## 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`.
### 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`:
+1 -1
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
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
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))
+1 -1
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
+289
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
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
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
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
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
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
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))
+1 -1
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
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
}
}
+9 -37
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"
+1
View File
@@ -0,0 +1 @@
{{{ contents }}}
+87
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
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.
+1 -2
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",
+3 -5
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>
+1 -1
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) );
} }
} }
}); });
-25
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);
}
});
};
+64
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);
} }
} }
+2
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:
+7 -7
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,
@@ -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);
Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

@@ -74,7 +74,7 @@ $(function () {
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;
}); });
@@ -88,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
@@ -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;
} }
+9 -8
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,10 +37,6 @@
<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>
+1 -1
View File
@@ -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) { ?>
+22 -10
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);
});
}; };
+8 -36
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"
+8 -17
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;
@@ -154,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;
@@ -190,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
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.
+7 -3
View File
@@ -9,10 +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).
# Questions # Frequently Asked Questions (FAQ)
If you cannot find an answer in the documentation, you can ask your question on [stackoverflow using the tag 'openlayers-3'](http://stackoverflow.com/questions/tagged/openlayers-3). 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).
+4 -4
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.
+89
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
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 resuted 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.
+232
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.
+5 -1
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)
-2
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
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;
}
+17 -69
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>
+12 -7
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);
};
+27 -65
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>
+7 -7
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,
+16 -51
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>
+15 -51
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>
+2 -2
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();
-92
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>
-69
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);
+22 -60
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>
+9 -8
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
View File
@@ -0,0 +1,4 @@
.map{
background-repeat: repeat;
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAApSURBVBiVY7x///5/BjSgqKjIiC7GhC6ACwygQgxHMzAwMGDz4FDwDAD5/wevjSk4mwAAAABJRU5ErkJggg==);
}
+76
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
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);
+4
View File
@@ -0,0 +1,4 @@
.ol-dragbox {
background-color: rgba(255,255,255,0.4);
border-color: rgba(100,150,0,1);
}
+19 -58
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>
+6 -12
View File
@@ -1,19 +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.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()
}); });
@@ -42,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);
-74
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>
-75
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);
}
+4
View File
@@ -0,0 +1,4 @@
.tooltip-inner {
white-space: nowrap;
}
+13 -62
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>
+1 -1
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],
+17 -52
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>
+4 -6
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
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;
}
+34 -131
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>
+9 -8
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,
{ {
+13 -51
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>
+5
View File
@@ -0,0 +1,5 @@
table.controls td {
text-align: center;
padding: 2px 5px;
min-width: 60px;
}
+30
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>
+173
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;
});
+7
View File
@@ -0,0 +1,7 @@
.rotate-north {
top: 65px;
left: .5em;
}
.ol-touch .rotate-north {
top: 80px;
}
+13 -64
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>
+1 -1
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],
+14
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>
+16 -54
View File
@@ -1,54 +1,16 @@
<!doctype html> ---
<html lang="en"> layout: example.html
<head> title: d3 integration example
<meta charset="utf-8"> shortdesc: Example of using ol3 and d3 together.
<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>The example loads TopoJSON geometries and uses d3 (<code>d3.geo.path</code>) to render these geometries to a canvas element that is then used as the image of an ol3 image layer.</p>
<link rel="stylesheet" href="../css/ol.css" type="text/css"> tags: "d3"
<link rel="stylesheet" href="../resources/bootstrap/css/bootstrap.min.css" type="text/css"> resources:
<link rel="stylesheet" href="../resources/layout.css" type="text/css"> - http://d3js.org/d3.v3.min.js
<link rel="stylesheet" href="../resources/bootstrap/css/bootstrap-responsive.min.css" type="text/css"> - http://d3js.org/topojson.v1.min.js
<title>d3 integration 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">d3 integration example</h4>
<p id="shortdesc">Example of using ol3 and d3 together.</p>
<div id="docs">
<p>The example loads TopoJSON geometries and uses d3 (<code>d3.geo.path</code>) to render these geometries to a canvas element that is then used as the image of an ol3 image layer.</p>
<p>See the <a href="d3.js" target="_blank">d3.js source</a> to see how this is done.</p>
</div>
<div id="tags">d3</div>
</div>
</div>
</div>
<script src="../resources/jquery.min.js" type="text/javascript"></script>
<script src="http://d3js.org/d3.v3.min.js"></script>
<script src="http://d3js.org/topojson.v1.min.js"></script>
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
<script src="loader.js?id=d3" type="text/javascript"></script>
</body>
</html>
+1 -1
View File
@@ -21,7 +21,7 @@ var map = new ol.Map({
], ],
target: 'map', target: 'map',
view: new ol.View({ view: new ol.View({
center: ol.proj.transform([-97, 38], 'EPSG:4326', 'EPSG:3857'), center: ol.proj.fromLonLat([-97, 38]),
zoom: 4 zoom: 4
}) })
}); });
File diff suppressed because it is too large Load Diff

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