Compare commits

..

845 Commits

Author SHA1 Message Date
Andreas Hocevar
7527eddbaf Merge pull request #3308 from ahocevar/release-v3.3.0
Release v3.3.0
2015-03-03 22:28:30 +01:00
Andreas Hocevar
6854833fbd Update package version to 3.3.0 2015-03-03 22:27:25 +01:00
Andreas Hocevar
c8b90adfef Changelog for v3.3.0 2015-03-03 22:27:15 +01:00
Andreas Hocevar
d33a45dfa2 Merge pull request #3263 from cwgrant/master
Support ArcGIS Rest Services
2015-03-03 21:40:33 +01:00
Andreas Hocevar
1cec149681 Merge pull request #3295 from sarametz/wmts-getcap
Add RESTful to WMTS GetCapabilities optionsFromCapabilities
2015-03-03 21:13:00 +01:00
Frédéric Junod
a629be0e2e Merge pull request #3304 from fredj/scaleline-padding
Remove scale line inner padding
2015-03-03 17:46:29 +01:00
Frederic Junod
6c32b280f5 Remove scale line inner padding
Fixes #3291
2015-03-03 17:06:41 +01:00
Éric Lemoine
787ab91eef Merge pull request #3296 from elemoine/changes
Add upgrade-notes.md file
2015-03-03 14:28:30 +01:00
Andreas Hocevar
5b539a75bb Merge pull request #3303 from ahocevar/us-ft
Add constant for us-ft units
2015-03-03 14:01:02 +01:00
Andreas Hocevar
a6f80ef4b8 Add constant for us-ft units 2015-03-03 13:51:23 +01:00
Andreas Hocevar
de42334b19 Merge pull request #3018 from bjornharrtell/selectevent
Add SelectEvent to interaction
2015-03-03 12:56:42 +01:00
Björn Harrtell
e4b1d6e1de Add SelectEvent to Select interaction
Fixes
2015-03-03 12:22:01 +01:00
Sara Metz
cadc346de2 Added RESTful to valid requestEncoding values 2015-03-03 12:45:24 +13:00
Andreas Hocevar
927a0a4627 Merge pull request #3301 from bjornharrtell/select-tests
Select interaction unit tests
2015-03-02 21:12:15 +01:00
Björn Harrtell
d9cf8df052 Select interaction unit tests 2015-03-02 19:52:48 +01:00
Bart van den Eijnden
2ff3682eff Update README.MD with stackoverflow 2015-03-02 15:27:03 +01:00
Frédéric Junod
8836dd6e70 Merge pull request #3298 from fredj/source-object
Make ol.source.Source inherit from ol.Object
2015-03-02 15:07:33 +01:00
Frederic Junod
6ab0ed2df7 Make ol.source.Source inherit from ol.Object 2015-03-02 14:48:17 +01:00
Frédéric Junod
8dd3e7ebff Merge pull request #3297 from fredj/wmts-getter
Add getters to ol.source.WMTS
2015-03-02 11:11:12 +01:00
Éric Lemoine
7f71876dad Add upgrade-notes.md file
This file includes upgrade notes for changes to the library that require changes to application code. This file is used by the release manager to fill the "Upgrade notes" section in the v3.x.y.md changelog file.
2015-03-02 10:37:42 +01:00
Frederic Junod
54bea174ff Add new ol.source.WMTS#getMatrixSet api function 2015-03-02 09:51:11 +01:00
Frederic Junod
9d37090e6b Add new ol.source.WMTS#getFormat api function 2015-03-02 09:40:08 +01:00
Frederic Junod
b42a214252 Add new ol.source.WMTS#getVersion api function 2015-03-02 09:40:08 +01:00
Frederic Junod
61d2506970 Add new ol.source.WMTS#getStyle api function 2015-03-02 09:40:08 +01:00
Frederic Junod
3bfbd47fdb Add new ol.source.WMTS#getLayer api function 2015-03-02 09:40:08 +01:00
Éric Lemoine
4f5cc22ba0 Merge pull request #3281 from adube/fix-ie-mousemove-condition
Fix mouseMove event type comparison for IE10-11, pointermove
2015-03-02 09:15:15 +01:00
Andreas Hocevar
a7205d8aec Merge pull request #3293 from ahocevar/icon-opacity
Add missing opacity option for ol.style.IconOptions
2015-03-01 17:11:02 +01:00
Andreas Hocevar
6d0fb4d74e Add missing opacity option for ol.style.IconOptions 2015-03-01 12:07:19 +01:00
Alexandre Dubé
d1185da6b1 Replace mouseMove event condition by pointerMove
The original browser event was used to catch the mousemove event,
but in IE the 'pointermove' event is returned instead. So, instead
of using the original event, we use the map browser event, which
is always 'pointermove'.
2015-02-27 12:14:13 -05:00
Frédéric Junod
6c4b30fa02 Merge pull request #3284 from fredj/jsdoc
Fix jsdoc type for arrays of listening keys
2015-02-26 12:26:17 +01:00
Frederic Junod
e2f8c01c42 Fix jsdoc type for arrays of listening keys 2015-02-26 11:45:15 +01:00
Éric Lemoine
ad7616abb2 Merge pull request #3278 from elemoine/draweventtype
Add goog.provide for ol.DrawEventType
2015-02-26 10:46:12 +01:00
Éric Lemoine
56b08adef7 Add goog.provide for ol.DrawEventType 2015-02-25 21:59:57 +01:00
Éric Lemoine
70162d7889 Merge pull request #3272 from acanimal/3267
Added getter function to return the wrapped source within the cluster
2015-02-25 21:55:04 +01:00
Frédéric Junod
4c1be5967d Merge pull request #3275 from fredj/heatmap-properties
Add ol.layer.Heatmap#blur getter and setter
2015-02-25 17:29:48 +01:00
Frederic Junod
d12cdc336c Create the circle only when the blur and radius are set 2015-02-25 09:16:42 +01:00
Frederic Junod
232f4975c4 Add ol.layer.Heatmap#blur getter and setter 2015-02-25 08:57:04 +01:00
Éric Lemoine
45547eefbe Merge pull request #3142 from sarametz/wmts-getcap
WMTS Get Cap document with updated WMTS.optionsFromCapabilities function
2015-02-25 08:29:40 +01:00
acanimal
086202cfdd Added short description on getSource() method 2015-02-25 07:54:14 +01:00
Frédéric Junod
3079924a3d Merge pull request #3271 from fredj/jsdoc-fixes
[wip] Fix misplaced comment blocks
2015-02-25 07:13:19 +01:00
Tim Schaub
7e812959e7 Merge pull request #3273 from tschaub/unused-function
Remove unused createGetTileIfLoadedFunction function.
2015-02-24 15:35:38 -08:00
Tim Schaub
22aeb3612e Remove unused createGetTileIfLoadedFunction function 2015-02-24 15:06:10 -08:00
Sara Metz
6894bc8444 Add ability to get wmts source from capabilities
Added functionality to create a wmts tilegrid and wmts source from the
capabilities object created from ol.format.WMTSCapabilities.read().
Added tests for these functions and an example.

Also altered the REST url template replacement to be case insensitive
and added tests for this. This is because the spec uses both style
and Style and both of these are used by existing WMTS services.
2015-02-25 09:21:45 +13:00
Frederic Junod
1620a11181 Fix misplaced comment blocks
Found while testing the new google-closure release (v20150126)

The code still compiles with the older (default) version.
2015-02-24 17:13:35 +01:00
Éric Lemoine
18ec8a487f Merge pull request #3270 from elemoine/dragpan-false
Make ol.Overlay autoPan default to false
2015-02-24 15:42:57 +01:00
Éric Lemoine
329edc4ec6 Make ol.Overlay autoPan default to false 2015-02-24 15:14:10 +01:00
Tobias Sauerwein
7a5ad336c6 Merge pull request #3268 from tsauerwein/fix-example-autoPan
Fix autoPan in examples with ol.Overlay on hover
2015-02-24 09:48:22 +01:00
tsauerwein
054dc81485 Disable autoPan in examples
To avoid that the map is panned when showing
overlays on hover.
2015-02-24 09:33:40 +01:00
cwgrant
f63a856741 Add support for ArcGIS Rest Services
Adding a data source to support ArcGIS Map Server and Image Server.
Functionality is similar to the ArcGIS93Rest Layer in OpenLayers 2.
2015-02-23 22:49:29 -05:00
acanimal
eb8a1845a5 Added getter function to return the wrapped source withint the cluster 2015-02-23 22:07:35 +01:00
Tobias Sauerwein
5897cf55aa Merge pull request #3256 from tsauerwein/overlay-panIntoView
Add autoPan option to ol.Overlay
2015-02-23 17:23:00 +01:00
tsauerwein
e46e0f85fb Add autoPan option to ol.Overlay 2015-02-23 17:01:52 +01:00
Tobias Sauerwein
3fbc6fa361 Merge pull request #3261 from adube/fix-extent-foreachcorner
Fix forEachCorner extent, add TopLeft
2015-02-20 16:01:37 +01:00
Alexandre Dubé
e1336e1891 Fix forEachCorner extent, add TopLeft 2015-02-20 08:30:39 -05:00
Frédéric Junod
c30373963e Merge pull request #3260 from fredj/unused-require
Remove unused goog.require
2015-02-20 07:39:56 +01:00
Frederic Junod
96cb3d314f Remove unused goog.require 2015-02-20 07:32:55 +01:00
Tim Schaub
733167c612 Merge pull request #3246 from tschaub/tile-cache
Avoid creating unnecessary images in tile layers.
2015-02-19 10:33:31 -07:00
Frédéric Junod
84cc48a7bf Merge pull request #3254 from fredj/regular-stroke
Use lineCap, lineJoin and miterLimit stroke properties in RegularShape
2015-02-19 13:26:52 +01:00
Frederic Junod
c3d9946924 Use lineCap, lineJoin and miterLimit stroke properties 2015-02-19 12:33:16 +01:00
Frederic Junod
5e712ac88c Use correct renderOptions type 2015-02-19 12:12:00 +01:00
Tim Schaub
9e94308cdc Merge pull request #3252 from tschaub/global-spy
Avoid leaking global listenerSpy.
2015-02-19 00:09:59 -07:00
Tim Schaub
b8e3deb756 Merge pull request #3248 from tschaub/tile-events
Add tile loading events to image tile sources.
2015-02-18 16:16:24 -07:00
Tim Schaub
3e3104bbb1 Avoid leaking global listenerSpy 2015-02-18 16:05:33 -07:00
Tim Schaub
56c5cef3f8 Example style 2015-02-18 15:45:20 -07:00
Tim Schaub
199fcb05e3 Unregister image listeners when disposing of a tile 2015-02-18 15:45:14 -07:00
Tim Schaub
c42af7919e Example docs 2015-02-17 11:22:44 -07:00
Tim Schaub
77d8d48b57 Progress bar for tile loading 2015-02-17 11:22:39 -07:00
Tim Schaub
5cbae8c8f5 Add tile loading events to image tile sources 2015-02-17 11:09:30 -07:00
Tim Schaub
bf35b40b11 Fire change event every time state changes 2015-02-17 11:09:16 -07:00
Tim Schaub
e5432f7cb5 Avoid creating unnecessary images during rendering 2015-02-16 15:11:16 -07:00
Tim Schaub
2cf1fe5552 Create tile cache for all tile sources 2015-02-16 12:22:15 -07:00
Tim Schaub
eb1a46cf7d Merge pull request #3240 from openlayers/v3.2.x
Changes from the v3.2.x branch.
2015-02-14 09:22:47 -07:00
Tim Schaub
d5f18dc120 Merge pull request #3239 from openlayers/release-v3.2.1
Release v3.2.1.
2015-02-13 11:12:45 -07:00
Tim Schaub
0ddae22661 Update package version to 3.2.1 2015-02-13 10:52:02 -07:00
Tim Schaub
fb2506672c Changelog for v3.2.1 2015-02-13 10:51:31 -07:00
Tim Schaub
391ff4eeab Merge pull request #3236 from tschaub/select-fix
Select the uppermost feature.
2015-02-13 09:29:20 -07:00
Frederic Junod
4686dfc0bb Select the uppermost feature 2015-02-13 09:12:26 -07:00
Tim Schaub
a924cc4d11 Merge pull request #3233 from stweil/master
Four small fixes.
2015-02-12 12:39:23 -07:00
Stefan Weil
5c99b6349c Add missing var declaration for local variable flippedFlatPoints
Signed-off-by: Stefan Weil <sw@weilnetz.de>
2015-02-12 17:53:53 +01:00
Stefan Weil
829569c6b5 Fix typo in documentation of function getInfo
Signed-off-by: Stefan Weil <sw@weilnetz.de>
2015-02-12 17:53:53 +01:00
Stefan Weil
e6d342dc96 Replace wrong comma in JavaScript code by semicolon
Signed-off-by: Stefan Weil <sw@weilnetz.de>
2015-02-12 17:53:53 +01:00
Stefan Weil
8bfa1c45e7 examples: Remove wrong semicolon in css code
Signed-off-by: Stefan Weil <sw@weilnetz.de>
2015-02-12 17:53:53 +01:00
Tim Schaub
bfcceac68f Merge pull request #3232 from stweil/master
Fix typos found by codespell.
2015-02-12 09:02:03 -07:00
Stefan Weil
e812f2435e Fix typos found by codespell
Most of them are in comments, some in strings.

Signed-off-by: Stefan Weil <sw@weilnetz.de>
2015-02-12 16:39:55 +01:00
Frédéric Junod
c4ddc62ab4 Merge pull request #3231 from fredj/heatmap-radius
Make ol.layer.Heatmap#radius configurable
2015-02-12 16:36:56 +01:00
Frederic Junod
f117550694 Add a radius input to the heatmap-earthquakes example 2015-02-12 14:41:22 +01:00
Frederic Junod
dfda3e37a4 Add ol.layer.Heatmap#radius getter and setter 2015-02-12 14:16:48 +01:00
Frederic Junod
b5206cb354 Make ol.layer.Heatmap.createCircle_ an instance function 2015-02-12 13:45:44 +01:00
Tim Schaub
90ba1140ac Merge pull request #3225 from tschaub/attributions
Respect attributions passed to TileJSON source.
2015-02-11 10:36:27 -07:00
Tim Schaub
9cea85be80 Merge pull request #3223 from tschaub/tilesize-change
Resize the canvas when the tile size changes.
2015-02-11 10:18:27 -07:00
Tim Schaub
e79211e0c1 Respect attributions passed to TileJSON source 2015-02-11 10:15:29 -07:00
Bart van den Eijnden
ad23a9c9cd Merge pull request #3224 from bartvde/mapquest-getname
Provide the ability to get the layer name from a MapQuest source
2015-02-11 15:56:50 +01:00
Bart van den Eijnden
eafa5419c3 Provide the ability to get the layer name from a MapQuest source 2015-02-11 15:46:02 +01:00
Bart van den Eijnden
b529f0f0a0 Merge pull request #3222 from bartvde/geodesic-measure
Add geodesic option for measure
2015-02-11 13:34:32 +01:00
Bart van den Eijnden
c5c24f209a Add geodesic option for measure 2015-02-11 13:24:23 +01:00
bill-chadwick
0381689fb6 Resize the canvas when the tile size changes 2015-02-10 14:00:23 -07:00
Frédéric Junod
89954ca5fc Merge pull request #3221 from fredj/hectic-select
Select the uppermost feature
2015-02-10 14:03:18 +01:00
Frederic Junod
13f265b4e1 Select the uppermost feature 2015-02-10 09:59:09 +01:00
Tim Schaub
776ffa925f Merge pull request #3211 from photostu/master
Bing https logo fix.
2015-02-08 20:18:19 -07:00
Tim Schaub
ada6b5640a Merge pull request #3215 from tschaub/rendering
Allow reuse of layer rendering code without creating a map.
2015-02-08 17:24:16 -07:00
Tim Schaub
33c197cf16 Layer renderers should not require a map renderer 2015-02-08 07:25:10 -07:00
Tim Schaub
e0f250483d Layer renderers don't need access to the map 2015-02-07 16:56:10 -07:00
Tim Schaub
c4ee8518e1 Use frame state for size 2015-02-07 16:52:48 -07:00
Tim Schaub
d4b7bb7c57 Use frame state for pixel to coord conversion 2015-02-07 16:52:34 -07:00
Tim Schaub
a460cb3983 Fire change instead of calling render on map 2015-02-07 16:46:30 -07:00
Tim Schaub
7f18033171 Make layer renderers observable and re-render on change 2015-02-07 16:42:36 -07:00
Tim Schaub
693ec7706e createLayerRenderer must be implemented by subclass 2015-02-07 16:30:28 -07:00
Tim Schaub
9081682286 Use provided frame state instead of map for pixel to coord conversion 2015-02-07 16:12:39 -07:00
Éric Lemoine
e97f017dda Merge pull request #3213 from openlayers/release-v3.2.0
Release v3.2.0
2015-02-06 11:14:26 +01:00
Éric Lemoine
22b27cdb02 Update package version to 3.2.0 2015-02-06 11:12:59 +01:00
Éric Lemoine
480c276d93 Changelog for v3.2.0 2015-02-06 11:12:59 +01:00
photostu
9247dc9f41 bing logo https
fix syntax to please Travis
2015-02-05 11:21:13 -05:00
Éric Lemoine
480f352cc6 Merge pull request #3171 from oterral/kml_link
KML: Parsing of NetworkLink tag
2015-02-05 16:41:36 +01:00
photostu
4080e729df bing https logo fix
If https is missing from bing logo uri, replace
2015-02-05 10:34:33 -05:00
oterral
c1fd95305c Add tests for parsing of NetworkLink tags 2015-02-05 16:21:51 +01:00
oterral
0a6a3f5d65 Add parsing of NetworkLink tag 2015-02-05 16:21:45 +01:00
Frédéric Junod
456def67de Merge pull request #3209 from fredj/coding-style
Coding style fixes
2015-02-05 14:53:59 +01:00
Bart van den Eijnden
f9a8239443 Merge pull request #3208 from bartvde/setImageLoadFunction
Add setters and getters for imageLoadFunction
2015-02-05 12:37:02 +01:00
Frederic Junod
a0a4369c24 Fix ol.format.GPX.TRKSEG_NODE_FACTORY_ type definition 2015-02-05 10:56:44 +01:00
Frederic Junod
078d3fb007 Add missing goog.require 2015-02-05 10:56:44 +01:00
Frederic Junod
65c2f7de5f Remove unused goog.require 2015-02-05 10:56:44 +01:00
Frederic Junod
8ec90a2045 Remove unnecessary newlines 2015-02-05 10:56:44 +01:00
Frédéric Junod
0906bf09ed Merge pull request #3019 from bjornharrtell/selectmulti
Add option to allow Select interaction logic to select overlapping features
2015-02-05 10:55:04 +01:00
Bart van den Eijnden
ce8d57b534 Add setters and getters for imageLoadFunction 2015-02-05 10:53:21 +01:00
Pierre GIRAUD
b8a0d6b702 Merge pull request #3206 from pgiraud/measure_tooltip
Add tooltip to show measure + help message while drawing
2015-02-05 09:48:32 +01:00
Pierre GIRAUD
4ba500925f Changing draw interaction styling 2015-02-05 09:39:17 +01:00
Pierre GIRAUD
c63c358d08 Add tooltip to show measure + help message while drawing 2015-02-04 17:48:28 +01:00
Björn Harrtell
162c47eb3e Option to enable selection of overlapping features 2015-02-04 16:15:41 +01:00
Frédéric Junod
f117cddb34 Merge pull request #3205 from fredj/use-ol.extent.createOrUpdateFromCoordinate
Use ol.extent.createOrUpdateFromCoordinate
2015-02-04 14:55:49 +01:00
Frederic Junod
f6b47f086b Use ol.extent.createOrUpdateFromCoordinate
Instead of ol.extent.boundingExtent
2015-02-04 14:14:50 +01:00
Éric Lemoine
2d3e5d2bac Merge pull request #3026 from htulipe/wmts-getcap
Add support of reading WMTS Get Cap document
2015-02-04 13:32:32 +01:00
Bart van den Eijnden
8f6cb00ea6 Merge pull request #3201 from bartvde/fast_clear
Pass on opt_fast to parent clear function in ol.source.ServerVector (r=@elemoine,@gberaudo)
2015-02-04 08:53:51 +01:00
Bart van den Eijnden
80f7b726f9 Pass on opt_fast to parent clear function in ol.source.ServerVector 2015-02-04 08:45:09 +01:00
Frédéric Junod
f75cec5c8e Merge pull request #3199 from fredj/jsdoc-fixes
Minor jsdoc fixes
2015-02-03 16:14:39 +01:00
Frederic Junod
89f21f5d50 Remove square brackets from type 2015-02-03 15:52:19 +01:00
Frederic Junod
f9723aa310 Add missing goog.require 2015-02-03 15:52:19 +01:00
Hadrien Tulipe
87644a1a46 Add support of WMTS Get Cap read
This commit fixe #2721. It still lacks the possibility to create layer from the GetCap document. It also lacks the reading of TMS limits.
2015-02-03 14:46:29 +01:00
Frédéric Junod
38c80e7f9b Merge pull request #3059 from fredj/memory
Cache the buffered extent value
2015-02-03 13:39:39 +01:00
Frederic Junod
0d3eb8642f Cache the buffered extent value
Assuming that the maxExtent and resolution property are immutable
2015-02-03 10:37:38 +01:00
Frédéric Junod
a7fcf05a4b Merge pull request #3196 from fredj/coding-style
Remove unnecessary newlines
2015-02-02 16:47:53 +01:00
Frederic Junod
31f61121d9 Remove unnecessary newlines 2015-02-02 14:38:39 +01:00
Bart van den Eijnden
b8d44e7f91 Merge pull request #3099 from bartvde/ogr-gml2
Fix up parsing of OGR GML with ol.format.GML
2015-02-02 13:16:12 +01:00
Bart van den Eijnden
423c8761aa Use ol.format.GMLBase.GMLNS and get rid of unneeded Object 2015-02-02 12:46:49 +01:00
Frédéric Junod
ef871f54f8 Merge pull request #3195 from fredj/coding-style
Coding style
2015-02-02 09:59:00 +01:00
Éric Lemoine
898c8fa9a2 Merge pull request #3192 from elemoine/mapquest-url
Add "url" option to ol.source.MapQuest
2015-02-02 09:26:08 +01:00
Tobias Sauerwein
350ce735f1 Merge pull request #3172 from tsauerwein/forEachLayerAtPixel
Introduce forEachLayerAtPixel
2015-02-02 09:24:43 +01:00
Frederic Junod
0f65d7778a Remove unnecessary newlines 2015-02-02 09:11:35 +01:00
Frederic Junod
12925a35b9 Use goog.isDef to check the opt_array param 2015-02-02 09:11:35 +01:00
Frédéric Junod
df32d04fdb Merge pull request #3178 from fredj/geojson-externs
GeoJSON externs fixes
2015-02-02 09:11:08 +01:00
Frédéric Junod
987b032d9d Merge pull request #3179 from fredj/disallow-undefined
Disallow undefined values for ol.layer.Base
2015-02-02 09:10:36 +01:00
Bart van den Eijnden
5d70e61753 Make FEATURE_COLLECTION_PARSERS an instance property 2015-01-30 21:00:04 +01:00
Éric Lemoine
130535c83e Merge pull request #3161 from 3x0dv5/master
Doc fix. writeFeaturesNode receives an array of Feature
2015-01-30 17:46:23 +01:00
Éric Lemoine
fcbdc6bd26 Merge pull request #3169 from oterral/kml_example
Fix default icon style in kml format
2015-01-30 17:45:31 +01:00
Éric Lemoine
df2d71ef83 Add "url" option to ol.source.MapQuest 2015-01-30 17:08:50 +01:00
tsauerwein
b390c1bdf8 Use dragging flag in examples 2015-01-30 13:53:32 +01:00
tsauerwein
f4500c8f89 Rename *AtPixel to *AtCoordinate if coordinate 2015-01-30 10:00:37 +01:00
tsauerwein
4d4bed454a Avoid pixel->coord->pixel conversion 2015-01-30 10:00:37 +01:00
tsauerwein
054227fd26 Make signature for *AtPixel methods more consistent
pixel/coordinate is the first argument.
2015-01-30 10:00:36 +01:00
tsauerwein
b7415219a6 Use forEachLayerAtPx in example 2015-01-30 10:00:36 +01:00
tsauerwein
dce4210a5b Implement forEachLayerAtPixel for webgl 2015-01-30 10:00:36 +01:00
tsauerwein
6cc5bd466d Add hasFeatureAtPixel for ImageLayer 2015-01-30 10:00:36 +01:00
tsauerwein
b4cb786f29 Implement forEachLayerAtPixel for canvas 2015-01-30 10:00:36 +01:00
tsauerwein
225f0739ec Add forEachLayerAtPixel 2015-01-30 10:00:36 +01:00
tsauerwein
7feb8b22f6 Rename forEachGeometryAtPixel 2015-01-30 10:00:36 +01:00
Tobias Sauerwein
9e7e5efd27 Merge pull request #3190 from tsauerwein/event-dragging
Introduce `dragging` flag for MapBrowserEvent
2015-01-30 09:54:52 +01:00
tsauerwein
9a841583db Remove getter for down_ 2015-01-30 09:38:47 +01:00
tsauerwein
9cc8390dfd Use dragging in examples 2015-01-30 09:16:19 +01:00
tsauerwein
f2518e4c08 Add dragging flag to MapBrowserEvent 2015-01-30 09:15:35 +01:00
Tobias Sauerwein
aa67078d74 Merge pull request #3135 from tsauerwein/control-label
Make changing the label of ZoomToExtent/FullScreen control consistent
2015-01-29 15:03:53 +01:00
Bart van den Eijnden
0243ce6612 Fix up parsing of OGR GML with ol.format.GML 2015-01-29 11:40:30 +01:00
Frédéric Junod
3abcbcf377 Merge pull request #3186 from fredj/clip-pixel-ratio
Take the pixel ratio into account when clipping the layer
2015-01-28 21:29:48 +01:00
Éric Lemoine
5c9e099628 Merge pull request #3183 from htulipe/switch-mode-fix
Allow other params than 'mode' in example page query string.
2015-01-28 16:03:25 +01:00
Frederic Junod
cb69cecf03 Take the pixel ratio into account when clipping the layer 2015-01-28 14:21:50 +01:00
Frédéric Junod
2ad93b9e86 Merge pull request #2791 from fredj/rotate-css-transition
Re enable rotation button transition
2015-01-28 09:18:50 +01:00
Frederic Junod
aa23a7bce5 Re enable rotation button transition
The opacity transition was broken with #2782
2015-01-28 09:09:01 +01:00
htulipe
f0608f6fed Allow other params than 'mode' in example query string.
Currently, if other params are present at the beginning of the query string,
the mode switcher will not work.

This situation can occur when a search criteria was entered in the examples
index page. That criteria will be passed along to the example page via a query
param.
2015-01-27 21:52:38 +01:00
Bart van den Eijnden
798399101f Merge pull request #3180 from bartvde/featureoverlay-getmap
Add a getMap function to ol.FeatureOverlay (r=@ahocevar)
2015-01-27 20:07:25 +01:00
Bart van den Eijnden
bc5f81cfa0 Add a getMap function to ol.FeatureOverlay 2015-01-27 19:54:34 +01:00
Frederic Junod
fc3c808209 Disallowed undefined 'minResolution' value 2015-01-27 18:07:42 +01:00
Frederic Junod
1d6f7e9504 Disallowed undefined 'maxResolution' value 2015-01-27 18:07:42 +01:00
Frederic Junod
60ea87fdfb Disallowed undefined 'saturation' value 2015-01-27 18:07:42 +01:00
Frederic Junod
caa8428990 Disallowed undefined 'contrast' value 2015-01-27 18:07:42 +01:00
Frederic Junod
007ad2c58f Disallowed undefined 'brightness' value 2015-01-27 18:07:42 +01:00
Frederic Junod
663f18cd29 Disallowed undefined 'opacity' value 2015-01-27 18:07:42 +01:00
Frederic Junod
e25cb30e5f Disallowed undefined 'hue' value 2015-01-27 18:07:42 +01:00
Frederic Junod
c7dbd4a303 Disallowed undefined 'visible' value 2015-01-27 18:07:42 +01:00
Frédéric Junod
43f84e798f Merge pull request #3176 from fredj/undefined-rotation
Disallowed undefined rotation value
2015-01-27 17:11:26 +01:00
Frederic Junod
d640accdc8 More precise ol.format.GeoJSON.readGeometry_ param type 2015-01-27 12:21:11 +01:00
Frederic Junod
f1c0072bd0 More precise olx.source.GeoJSONOptions#object type 2015-01-27 12:06:03 +01:00
Frederic Junod
d219a8ef22 Remove GeoJSONObject extends from GeoJSONLink
Otherwise CRS object may have a `boox` or a `crs` property
2015-01-27 11:30:24 +01:00
Frederic Junod
3fbe9265da Remove GeoJSONObject extends from GeoJSONCRS
Otherwise CRS object may have a `boox` or a `crs` property
2015-01-27 11:26:06 +01:00
Frederic Junod
ad65989d28 Move bbox property to GeoJSONObject
See http://geojson.org/geojson-spec.html#geojson-objects:
"A GeoJSON object may have a "bbox" member [...]"
2015-01-27 11:18:13 +01:00
Tobias Sauerwein
9d5f7c1eb4 Merge pull request #3177 from tsauerwein/style-polygons
Add example showing how to style polygon vertices
2015-01-27 10:18:55 +01:00
tsauerwein
48cf51a7ca Add example for polygon vertices styling 2015-01-27 10:02:28 +01:00
Frederic Junod
829a0ca224 Disallowed undefined rotation value 2015-01-27 09:26:51 +01:00
Frédéric Junod
5c9b17a3b2 Merge pull request #3174 from fredj/view-getState
Use view.getRotation or view.getResolution instead of view.getState
2015-01-26 17:14:38 +01:00
Frederic Junod
915df000ab Use view.getRotation instead of view.getState 2015-01-26 13:39:49 +01:00
Frederic Junod
247d8668d1 Use view.getResolution instead of view.getState 2015-01-26 13:39:49 +01:00
Frederic Junod
7c7a4c2b7a Use view.getRotation instead of view.getState 2015-01-26 13:39:49 +01:00
Frédéric Junod
8e161a077f Merge pull request #3170 from fredj/coding-style
Coding style
2015-01-26 13:39:02 +01:00
Frederic Junod
7885ad6ae7 Remove unnecessary newlines 2015-01-26 10:33:00 +01:00
Frederic Junod
98f7b5f186 Mark projection property as constant 2015-01-26 10:20:21 +01:00
Frederic Junod
72b2182219 Add missing projection property in olx.ViewState 2015-01-26 09:51:53 +01:00
Frederic Junod
eb7041c71d Simplify ternary operator condition 2015-01-26 09:51:53 +01:00
oterral
65fe82d188 Fix default icon style in kml format 2015-01-26 09:46:48 +01:00
Tobias Sauerwein
90a5997c22 Merge pull request #3108 from tsauerwein/webgl-point-skipFeatures
Support skipping features in the WebGL renderer
2015-01-23 08:56:39 +01:00
Frédéric Junod
fd5a3ce7b4 Merge pull request #3163 from fredj/webglmaprenderer-layerStatesArray
Use the layerStatesArray property from the frameState
2015-01-23 07:27:38 +01:00
Frederic Junod
948a1f1321 Use the layerStatesArray property from the frameState 2015-01-22 17:36:26 +01:00
Frédéric Junod
edc6746545 Merge pull request #3159 from fredj/heatmap-constr
Don't pass specific options to the parent constructor
2015-01-22 14:55:55 +01:00
3x0dv5
6ceef2b0cc Doc fix. writeFeaturesNode receives an array of Feature 2015-01-22 11:21:02 +00:00
Frederic Junod
f3bafab1e6 Don't pass specific options to the parent constructor 2015-01-22 11:30:20 +01:00
tsauerwein
316480dcda Rename argument 2015-01-22 10:24:59 +01:00
tsauerwein
a39544cce0 Implement skipping features for hasFeatureAtPixel 2015-01-22 10:24:59 +01:00
tsauerwein
cf9619f378 Implement skipping features for 1by1 hit detection 2015-01-22 10:24:59 +01:00
tsauerwein
c4ee074274 Implement skipping features for drawReplay 2015-01-22 10:24:59 +01:00
Tobias Sauerwein
1702a4ed36 Merge pull request #3066 from tsauerwein/webgl-point-hasFeatureAtPixel
Introduce hasFeatureAtPixel
2015-01-22 10:20:00 +01:00
Tobias Sauerwein
53f98dcf4e Merge pull request #3065 from tsauerwein/webgl-point-hit-detection
Add hit-detection support for WebGL
2015-01-22 10:19:37 +01:00
Éric Lemoine
f625a29978 Merge pull request #3128 from oterral/kml_default_style
Allow rendering of feature when download of icon failed
2015-01-21 15:08:02 +01:00
Éric Lemoine
21144f161a Add more tests fr ol.renderer.vector 2015-01-21 14:50:48 +01:00
Frédéric Junod
b6a550f354 Merge pull request #3156 from fredj/format-getprojection
Move readProjectionFrom* functions to the base classes
2015-01-21 13:30:47 +01:00
Éric Lemoine
b27c1c82d4 Merge pull request #3107 from elemoine/imagestate
Also listen on loading images
2015-01-21 12:50:31 +01:00
Frederic Junod
077a827197 Move readProjectionFrom* functions to the base classes 2015-01-21 09:15:04 +01:00
Frédéric Junod
2970da3461 Merge pull request #3153 from fredj/geojson-externs
Add missing GeoJSONFeature#bbox property
2015-01-21 07:34:10 +01:00
Frédéric Junod
165e3fe1ff Merge pull request #3154 from fredj/coding-style
Remove unnecessary newlines
2015-01-20 17:43:51 +01:00
Frederic Junod
b53a5e28d5 Remove unnecessary newlines 2015-01-20 16:48:52 +01:00
Frederic Junod
d8984ca1aa Add missing GeoJSONFeature#bbox property
See http://geojson.org/geojson-spec.html#bounding-boxes
2015-01-20 15:17:29 +01:00
Éric Lemoine
c185bf8f30 Merge pull request #3146 from icholy/enable-reversflatgeom-tests
Enable tests for ol.geom.flat.reverse
2015-01-19 21:01:13 +01:00
Frédéric Junod
8bc72c62f6 Merge pull request #3152 from fredj/update
Update closure-library and closure-util version
2015-01-19 17:36:27 +01:00
Frederic Junod
a17bc916b1 Update closure-library version 2015-01-19 10:42:34 +01:00
Frederic Junod
c732538433 Update closure-util version 2015-01-19 10:42:33 +01:00
Ilia Choly
ee9cfef35a Enable reverseflatgeom tests 2015-01-16 13:40:47 -05:00
Éric Lemoine
970beb1741 Merge pull request #3145 from elemoine/wrapx
Add wrapX option to source.OSM and source.BingMaps
2015-01-16 17:40:13 +01:00
Éric Lemoine
11eeb6617c Add wrapX option to olx.source.BingMapsOptions 2015-01-16 17:15:59 +01:00
Éric Lemoine
d13a5dfb9f Add wrapX option to olx.source.OSMOptions 2015-01-16 17:12:00 +01:00
Éric Lemoine
4b3726fe71 Merge pull request #3139 from elemoine/control-setmap
Add ol.control.Control#setTarget
2015-01-16 11:16:30 +01:00
Bart van den Eijnden
12f3a9d454 Merge pull request #3144 from bartvde/code-guidelines
Update CONTRIBUTING style guide with recent guidelines
2015-01-16 10:57:35 +01:00
Bart van den Eijnden
4f4d12024b Update CONTRIBUTING style guide with recent guidelines 2015-01-16 10:49:44 +01:00
tsauerwein
fbb2883f6e Add Node to control label type 2015-01-16 10:14:39 +01:00
Éric Lemoine
79312c2083 Add ol.control.Control#setTarget
This commit adds a setTarget method to ol.control.Control. This function can be used in cases where the target cannot be set at control construction time. For example, with Angular, it makes sense to create the control instance in an Angular controller, and have a "control" directive insert the control into the DOM.
2015-01-16 09:27:30 +01:00
tsauerwein
7679069520 Add label option to FullScreen control 2015-01-16 09:05:51 +01:00
Frédéric Junod
1033171ff0 Merge pull request #3136 from fredj/coding-style
Use array.length = 0 instead of goog.array.clear
2015-01-16 08:08:27 +01:00
Tim Schaub
10c715ad9a Merge pull request #3140 from tschaub/array
Avoid use of goog.array.clone with arrays.
2015-01-15 13:00:02 -07:00
Tim Schaub
06dc0902c6 Avoid use of goog.array.clone with arrays 2015-01-15 12:43:12 -07:00
Frederic Junod
845957a27f Use array.length = 0 instead of goog.array.clear 2015-01-15 16:11:29 +01:00
Frédéric Junod
c23ae78978 Merge pull request #3122 from fredj/revert-2975
Revert "Use offsetX and offsetY if available"
2015-01-15 10:52:03 +01:00
tsauerwein
0d26a9aa87 Add label option to ZoomToExtent 2015-01-15 09:58:05 +01:00
Frederic Junod
0bae04331d Revert "Use offsetX and offsetY if available"
This reverts commit fabf05977a.
2015-01-15 08:56:55 +01:00
Andreas Hocevar
c726cbfcd9 Merge pull request #2385 from ahocevar/update-vectors-while-animating
Option to update vector layers while animating
2015-01-14 17:34:39 +01:00
Andreas Hocevar
b1a73da9dd Add updateWhileAnimating option
With this option, vector batches will be recreated with every frame.
For animations, this means that vector data won't be clipped to the
extent at which the animation started.
2015-01-14 16:33:05 +01:00
Frédéric Junod
dafcdfa494 Merge pull request #3129 from fredj/rbush-update
Only update the rbush item if the extent has changed
2015-01-14 13:53:41 +01:00
Frederic Junod
baf424f99c Only update the rbush item if the extent has changed 2015-01-14 13:29:28 +01:00
Andreas Hocevar
017ff47bf8 Merge pull request #3117 from ahocevar/domvector-pixelratio
Add pixelRatio support for DOM vector renderer
2015-01-14 12:55:05 +01:00
Tobias Sauerwein
110ed04a84 Merge pull request #3124 from sirtet/master
Add a space between scale -value and -unit
2015-01-14 12:41:01 +01:00
Frédéric Junod
2f5bbb37ed Merge pull request #3130 from fredj/doc
Document default value
2015-01-14 12:39:15 +01:00
Frédéric Junod
68f5ff0045 Merge pull request #3105 from fredj/geom-getextent
ol.geom.Geometry#getExtent re-factoring
2015-01-14 12:20:37 +01:00
Frederic Junod
5f55e01849 Document default value 2015-01-14 12:12:38 +01:00
Frederic Junod
f7943b9401 Set extent and extentRevision variables to private 2015-01-14 11:01:18 +01:00
Frederic Junod
8bd0a1232a Add geom.ol.geom.Geometry#computeExtent function 2015-01-14 11:01:18 +01:00
oterral
c97a29d13b Allow rendering of feature when download of icon failed 2015-01-14 09:34:03 +01:00
sirtet
66fea4dec9 Add a space between scale -value and -unit
For improved readability. Issue #3116
2015-01-13 16:16:20 +01:00
Bart van den Eijnden
35468e2bbb Merge pull request #3118 from naturalatlas/wfs-firstelementchild-bugfix
Bugfix: "Cannot read property 'firstElementChild' of null" (WFS)
2015-01-13 10:13:56 +01:00
Brian Reavis
37dac8e0cf Fixed "Cannot read property 'firstElementChild' of null" on WFS readProjectionFromNode.
Occurs when a FeatureCollection is empty.

Code style changes @bartvde

Added test case for #3118.

Attempt to make jshint happy.

Fixed tab character.

Another code style change (jshint)....
2015-01-13 01:42:03 -07:00
Andreas Hocevar
bbf074b70a Add pixelRatio support for DOM vector renderer
Adds the scaling and transforms to support pixelRatio values other than
1.
2015-01-12 22:14:52 +01:00
Éric Lemoine
5dca3e9b20 Merge pull request #3114 from elemoine/contributing
Specify node version in CONTRIBUTING.md
2015-01-12 21:13:16 +01:00
Éric Lemoine
789ddad536 Specify node version 2015-01-12 20:49:23 +01:00
Frédéric Junod
409969fa2a Merge pull request #3106 from fredj/tilelayer-constr
Don't pass specific options to the parent constructor
2015-01-12 15:31:36 +01:00
Éric Lemoine
76418bdbe5 Merge pull request #3110 from PeterDaveHello/patch-1
Use svg instead of png to get better image quality
2015-01-11 11:22:56 +01:00
Peter Dave Hello
3e2574bf49 Use svg instead of png to get better image quality 2015-01-11 14:33:36 +08:00
Éric Lemoine
12863cf3fd Merge pull request #2707 from gberaudo/source_map
Generate source map of minified ol.js
2015-01-09 13:16:18 +01:00
Éric Lemoine
2ef8302122 Add a build/ol.js.map target 2015-01-09 12:33:38 +01:00
Guillaume Beraudo
132686b4a7 Generate source map of minified ol.js
Allows automatic unminification by the browser.

A postprocessing is required to:
- fix the paths to the sources;
- add the link from the minified script to its map.

If someone knows how to do the first item in Python or nodejs, please provide a
patch. A simple shell script is:
```
\#!/bin/sh
pwd=`pwd`
sed -i "s!$pwd/build!olsource!g" 'build/ol.js.map'
sed -i "s!$pwd!olsource!g" 'build/ol.js.map'
```

The second item should always be manually handled to avoid 404 errors
in debuggers
`echo '//# sourceMappingURL=ol.js.map' >> build/ol.js`

Finally, create an alias / copy ol3 directory to /olsource in your
deployed environment.
2015-01-09 12:17:35 +01:00
Éric Lemoine
0f486e86f7 Add tests for ol.renderer.Layer#loadImage 2015-01-09 09:45:25 +01:00
tsauerwein
c85982bbe5 Remove unused variables 2015-01-09 09:21:40 +01:00
Éric Lemoine
4814983306 Also listen on loading images
This fixes a bug that occured when an image source was used by multiple maps. In that case the map that didn't load the image wouldn't register a load listener on that image and would therefore not call render to request a re-render of the map.
2015-01-09 09:07:31 +01:00
tsauerwein
d39904b66b Add @const annotation 2015-01-08 16:12:52 +01:00
tsauerwein
25612f1af2 Unify return statement
Only return the callback result if it is truthy,
otherwise return undefined.
2015-01-08 16:12:52 +01:00
tsauerwein
35c58b3b0e Use hasFeatureAtPixel in icon example 2015-01-08 16:12:52 +01:00
tsauerwein
3e5c4d0bf6 Show hasFeatureAtPixel in example 2015-01-08 16:12:52 +01:00
tsauerwein
bc71a36292 Implement hasFeatureAtPixel for webgl 2015-01-08 16:12:52 +01:00
tsauerwein
d62e910239 Implement hasFeatureAtPixel for canvas 2015-01-08 16:12:52 +01:00
tsauerwein
d0691ecc4d Add hasFeatureAtPixel function to map 2015-01-08 16:12:52 +01:00
tsauerwein
974823dbd4 Refactor createTexture 2015-01-08 15:40:03 +01:00
tsauerwein
38322d615b Use renderBuffer for hit-detection 2015-01-08 15:38:00 +01:00
tsauerwein
060c9f3bc6 Reduce number of arrays created 2015-01-08 15:38:00 +01:00
tsauerwein
6c48b2067b Make icon example work with webgl 2015-01-08 15:38:00 +01:00
tsauerwein
da7f38635b Remove hitDetectionOrigin 2015-01-08 15:38:00 +01:00
tsauerwein
461ec1d3bc Make sure hit-detection atlas is in sync
... with the atlas for the original images, so that
the offsets are the same.
2015-01-08 15:38:00 +01:00
tsauerwein
cf6dd38866 Use hit-detection images 2015-01-08 15:38:00 +01:00
tsauerwein
3ef61fa1c5 Add hit-detection support for webgl 2015-01-08 15:38:00 +01:00
tsauerwein
740420468e Add hit-detection framebuffer to context 2015-01-08 15:38:00 +01:00
Frederic Junod
b827bc126c Don't pass specific options to the parent constructor 2015-01-08 14:07:33 +01:00
Frédéric Junod
1f90aad4ad Merge pull request #3104 from fredj/vector-constr
Don't pass renderBuffer option to the parent constructor
2015-01-08 11:58:39 +01:00
Frederic Junod
91d2b3b87f Don't pass renderBuffer option to the parent constructor 2015-01-08 10:59:42 +01:00
Frédéric Junod
904fac082c Merge pull request #3096 from fredj/example-cleanup
popup example cleanup / simplification
2015-01-08 09:07:25 +01:00
Tim Schaub
b952f118ba Merge pull request #3072 from tschaub/hit-extent
Optimize canvas hit detection by rendering features in a limited extent.
2015-01-07 23:54:21 -07:00
Tim Schaub
1ee03625e9 Optimize hit detection by rendering features in a limited extent 2015-01-07 23:04:42 -07:00
Tim Schaub
3be6a84de6 Merge pull request #3101 from tschaub/object
Use bracket notation instead of goog.object functions.
2015-01-07 22:57:28 -07:00
Tim Schaub
1ff43686f5 Use bracket notation instead of goog.object.get 2015-01-07 22:31:01 -07:00
Tim Schaub
a09a76c766 Merge pull request #3079 from tschaub/sourceless-docs
Exclude source files from docs.
2015-01-07 22:20:57 -07:00
Tim Schaub
f9a92c422c Use bracket notation instead of goog.object.set 2015-01-07 21:08:24 -07:00
Tim Schaub
0a784bfc3b Allow bracket notation
We use bracket notation with string literals instead of dot notation where we don't want the compiler to do any renaming.
2015-01-07 21:06:04 -07:00
Frédéric Junod
d35ea9e4f4 Merge pull request #3100 from fredj/tilelayer-attr
Assert that ol.layer.Tile#getPreload is always set
2015-01-07 17:54:10 +01:00
Frederic Junod
55dda99cfe Assert that ol.layer.Tile#getUseInterimTilesOnError is always set 2015-01-07 16:59:44 +01:00
Frederic Junod
df51e55781 Assert that ol.layer.Tile#getPreload is always set 2015-01-07 16:48:15 +01:00
Frederic Junod
a753135e84 Remove moz-box-shadow CSS rule
Gecko 13 (Firefox 13) removed support for -moz-box-shadow. Since then,
only the unprefixed version is supported.
2015-01-06 09:26:00 +01:00
Frederic Junod
d4ff5527c9 Set the position to undefined to hide the overlay 2015-01-06 09:26:00 +01:00
Tim Schaub
06fe8288ce Merge pull request #3084 from openlayers/v3.1.x
Changes from the v3.1.x branch.
2015-01-05 10:22:14 -07:00
Tim Schaub
8e982b0763 Merge pull request #3094 from tschaub/authorless
Remove AUTHORS.md.
2015-01-04 13:00:14 -07:00
Tim Schaub
38b890a69a Removing AUTHORS.md
This was a partial, unmaintained list of the project contributors.  For a complete list of contributors, see the Git log.  E.g.

    git shortlog -s | cut -c8-
2015-01-03 22:58:06 -07:00
Bart van den Eijnden
8eb6814e4b Merge pull request #3089 from mike-mcgann/fix_test_readme_url
Fixed URL link for test README
2014-12-29 17:13:02 +01:00
Mike McGann
6b162f813f Fixed URL link for test README 2014-12-29 10:15:34 -05:00
Frédéric Junod
9a4c56d216 Merge pull request #2894 from fredj/simplify-custom-controls
Simplify CSS code in custom-controls example
2014-12-27 11:46:35 +01:00
Tim Schaub
5d2f4630f5 Merge pull request #3085 from mike-mcgann/doc-typo
Fixed documentation typo for return value of ol.proj.Projection.isGlobal().
2014-12-23 16:08:24 -05:00
Mike McGann
cc4a690676 Fixed documentation typo for return value of ol.proj.Projection.isGlobal() 2014-12-23 15:38:49 -05:00
Tim Schaub
68438c7c10 Merge pull request #3083 from tschaub/release-v3.1.1
Release v3.1.1.
2014-12-23 13:40:30 -05:00
Tim Schaub
7dd322dd6f Update package version to 3.1.1 2014-12-23 11:29:04 -05:00
Tim Schaub
676476ec64 Changelog for v3.1.1 2014-12-23 11:28:48 -05:00
Tim Schaub
8f8b7e1f17 Merge pull request #3082 from tschaub/issue-3081
Correct arguments for forEachGeometryAtPixel.
2014-12-23 11:23:01 -05:00
Tim Schaub
e62c333f32 Correct arguments for forEachGeometryAtPixel 2014-12-23 11:10:04 -05:00
Andreas Hocevar
97afb31a65 Merge pull request #3073 from ahocevar/load-tile-options
Make map's deviceOptions map options
2014-12-23 16:11:22 +01:00
Tim Schaub
4b423fca16 Exclude source files from docs 2014-12-22 17:01:01 -05:00
Tim Schaub
78ac65e57d Merge pull request #3077 from tschaub/release-v3.1.0
Release v3.1.0.
2014-12-22 15:27:31 -05:00
Tim Schaub
a796542223 Summarize changes and add upgrade notes 2014-12-22 15:17:05 -05:00
Tim Schaub
dc7f60801a Update package version to 3.1.0 2014-12-22 14:32:35 -05:00
Tim Schaub
9b55d20f90 Changelog for v3.1.0 2014-12-22 14:32:11 -05:00
Tim Schaub
d8a845de39 Merge pull request #3076 from tschaub/changelog
Add script to standardize changelog ceation.
2014-12-22 14:07:58 -05:00
Tim Schaub
ffea25fd6f Merge pull request #3074 from fredj/misplaced-function-annotation
Remove misplaced function annotation.
2014-12-22 13:30:44 -05:00
Bart van den Eijnden
aee37c4f90 Merge pull request #3075 from bartvde/remove-projlike-undefined
Remove unneeded undefined from ol.proj.ProjectionLike definitions (r=@tschaub)
2014-12-22 19:10:20 +01:00
Tim Schaub
62854f6e32 Add script to standardize changelog ceation 2014-12-22 13:02:27 -05:00
Bart van den Eijnden
ab76c2cae3 Remove unneeded undefined from ol.proj.ProjectionLike definitions 2014-12-22 18:28:04 +01:00
Frederic Junod
eabb795624 Remove misplaced function annotation 2014-12-22 11:12:01 +01:00
Andreas Hocevar
38b12d3149 Make map's deviceOptions map options
This removes the map's deviceOptions config option, and instead
introduces loadTilesWhileAnimating and loadTilesWhileInteracting map
options. By default, both are false now, to make zooming and panning
smoother on most devices.
2014-12-21 12:03:28 +01:00
Tim Schaub
0ae00fb277 Merge pull request #3071 from tschaub/publish
Add task for publishing to npm.
2014-12-20 09:46:28 -07:00
Tim Schaub
9b0349f2d5 Variable for builds directory 2014-12-20 02:55:56 -07:00
Tim Schaub
d4763a0fe7 Set CLOSURE_NO_DEPS globally 2014-12-20 02:35:05 -07:00
Tim Schaub
3582445755 Add task for publishing to npm
This task publishes an existing tag to the npm registry.  To publish a new release, create a commit that updates the version number in package.json (e.g. to "3.1.0").  Then create a tag, push to GitHub, and run the publish task.  Assuming "openlayers" is the remote for the canonical repo, this would look like the following:

    git tag -a v3.1.0 -m "3.1.0"
    git push --tags openlayers
    ./tasks/publish.sh 3.1.0

The task creates a build for each of the `PROFILES` in `publish.sh` (these correspond to `.json` files in the `config` directory).  Builds are generated in the `dist` directory.  Our `package.json` specifies `dist/ol.js` as the "main" build.  So when people use a module loader to `require('openlayers')`, they get the full build.  It is also possible to load a debug build (e.g. `require('openlayers/dist/ol-debug')`), and we can publish additional builds by adding `config` files and updating `PROFILES` in `publish.sh`.

The `.npmignore` file determines what is *not* included in the package (note that `node_modules` are always ignored).  So if additional items are added to `.gitignore` that should not be included in the npm package, they need to go in `.npmignore` as well (ideally, we don't need to generate anything else outside of the `build` directory that doesn't belong in the package).
2014-12-19 17:45:48 -07:00
Tim Schaub
27b5036c62 Merge pull request #3070 from tschaub/umd-debug
Define goog and assign to global when generating UMD debug builds.
2014-12-19 16:53:45 -07:00
Tim Schaub
a95327f18e Define goog and assign to global
When concatenating the Closure Library, base.js creates a new `goog` object if there is not already one in scope.  Later, `goog.global` is assigned the value of `this`.  Calls to `goog.provide` create "namespace" objects by assigning to `goog.global`.  To ensure that `goog` is the same as `goog.global.goog`, we need to create a new `goog` object in the scope of base.js and assign it to `this.goog`.
2014-12-19 14:41:47 -07:00
Tim Schaub
95972b354e Merge pull request #3068 from tschaub/pre-3
Update pre-release version.
2014-12-19 11:29:31 -07:00
Tim Schaub
b7e0acf4fa Update pre-release version 2014-12-19 11:05:29 -07:00
Tim Schaub
3d86339b88 Merge pull request #3039 from tschaub/umd
Support for UMD builds.
2014-12-19 11:02:54 -07:00
Bart van den Eijnden
3bc84c7288 Merge pull request #3038 from acanimal/master
Update attribution CSS #2803
2014-12-19 11:35:10 +01:00
Éric Lemoine
85a6de0ed6 Merge pull request #3061 from elemoine/render-bug2
Add a renderBuffer option to ol.layer.Vector
2014-12-19 08:58:38 +01:00
Éric Lemoine
a24716ac8a Merge pull request #3048 from elemoine/drag-features
Add a drag-features example
2014-12-19 08:49:11 +01:00
Éric Lemoine
f1bf782133 Change "recreate batch" strategy
Only recreate batch when the (buffered) rendered extent contains the **buffered** viewport extent.
2014-12-19 08:43:47 +01:00
acanimal
2f5999529a Removed unnecessary max-width from CSS .ol-attribution ul 2014-12-18 20:49:01 +01:00
acanimal
fa68410e5d Merge remote-tracking branch 'upstream/master' 2014-12-18 20:45:12 +01:00
Éric Lemoine
33cf4e6179 Add a drag-feature example
This example also demonstrates how to implement a custom interaction that inherits from ol.interaction.Pointer.
2014-12-18 18:42:36 +01:00
Éric Lemoine
14ea2bf413 Add ol.geom.Geometry#translate 2014-12-18 18:42:36 +01:00
Éric Lemoine
374f916b3a Add ol.geom.flat.transform.translate 2014-12-18 18:42:36 +01:00
Frédéric Junod
6d3103d4a9 Merge pull request #3060 from fredj/update-closure-library
Update closure-library version
2014-12-18 15:32:37 +01:00
Éric Lemoine
4a311e66d7 Add ol.Map#getTargetElement
ol.Map#getTarget returns an element or a string, depending on what was passed to setTarget. This commit adds a getTargetElement method that always returns an Element.
2014-12-18 14:13:44 +01:00
Éric Lemoine
6b46d5c76a Make shouldStopEvent default to the identity func 2014-12-18 14:13:44 +01:00
Éric Lemoine
1907de667a Make ol.interaction.Pointer call handleMoveEvent 2014-12-18 14:13:44 +01:00
Éric Lemoine
711ec705b7 Add handle*Event options to ol.interaction.Pointer
More specifically: handleDownEvent, handleDragEvent, handleMoveEvent, and handleUpEvent.
2014-12-18 14:13:44 +01:00
Éric Lemoine
8e8fc9977c Add a renderBuffer option to ol.layer.Vector 2014-12-18 13:20:32 +01:00
Éric Lemoine
ddc51ee267 Unconditionally draw Replay's 2014-12-18 13:04:29 +01:00
Andreas Hocevar
cd0bed6291 Merge pull request #3058 from ahocevar/extend-coordinate
Use an API function to extend the extent
2014-12-18 11:22:29 +01:00
Frederic Junod
440a85c6f4 Update closure-library version
fixes #3034
2014-12-18 11:18:37 +01:00
Andreas Hocevar
5ca6b5dd81 Use an API function to extend the extent 2014-12-18 11:02:41 +01:00
Andreas Hocevar
fe0e17fdaf Merge pull request #3010 from ahocevar/style-geometry
Allow styles to override feature geometries
2014-12-18 10:45:50 +01:00
Andreas Hocevar
784701641d Add a getGeometry method 2014-12-18 10:28:21 +01:00
Andreas Hocevar
2bf191b5e3 Assert that feature.get('foo') returns a geometry 2014-12-18 10:08:35 +01:00
Andreas Hocevar
19015d2ca9 Create typedef 2014-12-18 10:07:57 +01:00
Frédéric Junod
e95a350203 Merge pull request #3056 from fredj/memory-extent
Reuse previousExtent_ local variable
2014-12-17 13:53:16 +01:00
Frédéric Junod
b0cba674bc Merge pull request #3055 from fredj/coding-style
ol.tilecoord.createOrUpdate: add 'opt_' prefix to optional param
2014-12-17 10:40:34 +01:00
Frederic Junod
7c6ccca572 Reuse previousExtent_ local variable 2014-12-17 10:36:31 +01:00
Frederic Junod
2ea685e18f Add 'opt_' prefix to optional param 2014-12-17 10:29:49 +01:00
Bart van den Eijnden
13ce41a1d5 Merge pull request #3044 from gberaudo/api_image_style_constructor_properties
Mark Image style constructor properties `@api`
2014-12-17 10:25:20 +01:00
Bart van den Eijnden
5192257a6d Merge pull request #3052 from bartvde/tests-2888
Add a testcase for parsing GML feature with only boundedBy
2014-12-16 18:09:43 +01:00
Éric Lemoine
0bc96bb769 Merge pull request #3051 from elemoine/compile-wfs
Remove // NOCOMPILE from vector-wfs
2014-12-16 10:32:12 +01:00
Bart van den Eijnden
1bf4ddac6d Add a testcase for parsing GML feature with only boundedBy 2014-12-16 10:22:37 +01:00
Éric Lemoine
d3365fb3a5 Remove // NOCOMPILE from vector-wfs 2014-12-16 09:43:34 +01:00
Andreas Hocevar
af30b88413 Allow geometryFunction to return undefined 2014-12-16 01:12:08 +01:00
Andreas Hocevar
6478454a93 Use getGeometryFunction() in immediate API 2014-12-15 23:22:26 +01:00
Andreas Hocevar
49f9690786 Add tests for setGeometry 2014-12-15 23:21:02 +01:00
Andreas Hocevar
8d9acb8f48 Add an example showing the use of ol.style.Style#geometry 2014-12-15 23:21:02 +01:00
Andreas Hocevar
2d12531105 Allow styles to override feature geometries
With this change, application developers are able to define styles that
render a different geometry than the feature geometry. This can e.g. be
used to render an interior point of a polygon instead of the polygon, or
to render symbols like arrows along lines.
2014-12-15 23:20:53 +01:00
Bart van den Eijnden
e57ea1e66b Merge pull request #2699 from bartvde/issue-2699
No need for featureNS and featureType to be quoted
2014-12-15 21:06:02 +01:00
Bart van den Eijnden
a1c6662812 Do not quote featureNS and featureType in options 2014-12-15 20:28:13 +01:00
Tim Schaub
a101204ded Merge pull request #3047 from tschaub/jsdoc-warnings
Move description above annotation to avoid JSDoc warnings.
2014-12-15 09:57:02 -07:00
Bart van den Eijnden
fffeeaea97 Merge pull request #2996 from bartvde/regularshape-api
Add getter functions for points and angle in ol.style.RegularShape
2014-12-15 17:33:54 +01:00
Bart van den Eijnden
babc33fcb0 Add getter functions for points and angle in ol.style.RegularShape 2014-12-15 17:04:43 +01:00
Tim Schaub
abdae62481 Move description above annotation to avoid JSDoc warnings 2014-12-15 07:50:48 -08:00
Andreas Hocevar
7ece729d5f Merge pull request #3046 from ahocevar/pointerinteraction-api
Need exportable constructor for constructor options in olx
2014-12-15 16:41:44 +01:00
Éric Lemoine
a8b7f3570d Merge pull request #3043 from elemoine/nocompile-wfs
Use // NOCOMPILE for vector-wfs
2014-12-15 16:31:31 +01:00
Éric Lemoine
3623b4b31d Merge pull request #3042 from gberaudo/example_name_in_check_examples_exception
Print example name in check-examples exception
2014-12-15 16:31:11 +01:00
Andreas Hocevar
5eb1537f48 Need exportable constructor for constructor options in olx
When a constructor options object is created in the olx namespace,
the constructor that uses it must be exportable as well.
2014-12-15 16:15:30 +01:00
Éric Lemoine
7a09b11da5 Use // NOCOMPILE for vector-wfs
This is temporary solution until the demo.boundless.com WFS works again.
2014-12-15 15:24:28 +01:00
Guillaume Beraudo
3c00c7cf4c Print example name in check-examples exception 2014-12-15 15:21:55 +01:00
Guillaume Beraudo
ae998a7585 Mark Image style constructor properties @api 2014-12-15 14:41:35 +01:00
Éric Lemoine
86561e5ef2 Merge pull request #3032 from elemoine/custom-components
Extension points for custom controls and interactions
2014-12-15 13:41:56 +01:00
Andreas Hocevar
e0f574bd25 Merge pull request #3033 from ahocevar/select-return
Allow custom mousemove conditions for Select interaction
2014-12-15 13:26:40 +01:00
Frédéric Junod
f5722bbbf9 Merge pull request #3040 from fredj/memory
Transform the coordinates in place
2014-12-15 11:32:41 +01:00
Andreas Hocevar
9b0b1543e0 Allow custom mousemove conditions
When configuring a Select interaction with a custom condition that
includes mousemove, panning the map will not work any more. This is
because the return value of handleMapBrowserEvent is determined by
checking for a default condition function. By checking for the
underlying event type instead, we gain flexibility with custom condition
functions.
2014-12-15 11:28:45 +01:00
Antoine Abt
aafe698285 Merge pull request #3036 from tonio/modify_stride
Respect geometry stride in modify interaction
2014-12-15 09:46:56 +01:00
Frederic Junod
c167b2b49d Transform the coordinates in place 2014-12-15 09:30:37 +01:00
Tim Schaub
b60b0ecdb0 Add support for wrapping the build in UMD syntax. 2014-12-13 13:23:10 -08:00
Tim Schaub
7fd017879f Merge pull request #3020 from tschaub/err-message
Correct error message from generate-info.js.
2014-12-12 12:06:50 -08:00
acanimal
6dc90aefa2 Update attribution CSS #2803 2014-12-12 18:52:46 +01:00
Éric Lemoine
a9f3367310 Rename handleMapPostrender to render (overlay) 2014-12-12 18:30:43 +01:00
Éric Lemoine
d07185e8f2 Add an "handleEvent" interaction option 2014-12-12 18:30:31 +01:00
Éric Lemoine
df170859cc Add a "render" control option 2014-12-12 18:30:02 +01:00
Bart van den Eijnden
ca355d2887 Merge pull request #3037 from bartvde/regularshape-rotation
Implement rotation for ol.style.RegularShape
2014-12-12 16:48:02 +01:00
Bart van den Eijnden
38dca7792c Implement rotation for ol.style.RegularShape 2014-12-12 15:19:31 +01:00
Andreas Hocevar
2c9fab22c8 Merge pull request #3015 from klokantech/utfgrid
UTFGrid Support
2014-12-12 12:37:37 +01:00
Petr Sloup
65583a8b77 preemptive is now true by default + improved documentation 2014-12-12 12:19:20 +01:00
Petr Sloup
7bcd925cdb Minor code style fix 2014-12-12 11:55:55 +01:00
Petr Sloup
82a30b4cd5 Modified the sync/async behavior logic of the forDataAtCoordinate* methods 2014-12-12 11:47:35 +01:00
Antoine Abt
e7db23761c Respect geometry stride in modify interaction 2014-12-12 11:22:15 +01:00
Bart van den Eijnden
31f7279de1 Merge pull request #3012 from bartvde/fix-ie9-tests
Failing tests in IE9
2014-12-10 16:10:38 +01:00
Bart van den Eijnden
c3beae6b16 Fix failing tests in IE9 2014-12-10 12:02:06 +01:00
Frédéric Junod
ae8f5149a7 Merge pull request #3029 from fredj/update-closure
Update closure compiler and library
2014-12-10 07:47:30 +01:00
Frédéric Junod
0052116860 Merge pull request #3031 from fredj/FitGeometryOptions
Add missing maxZoom property in olx.view.FitGeometryOptions
2014-12-09 15:28:29 +01:00
Frederic Junod
5c2501d982 Add missing maxZoom property in olx.view.FitGeometryOptions 2014-12-09 14:59:13 +01:00
Frederic Junod
1238ab0df0 Remove ol.Object.capitalize and use goog.string.capitalize 2014-12-09 11:55:27 +01:00
Frederic Junod
f8b59dbd53 Use goog.array.extend instead of ol.array.safeExtend
The upstream implementation now supports large arrays.
See https://github.com/google/closure-library/pull/356
2014-12-09 11:55:27 +01:00
Frederic Junod
443c9749fb Update closure-library version 2014-12-09 11:55:27 +01:00
Frederic Junod
7bc2081138 Update closure-util to v1.2.0 2014-12-09 11:55:09 +01:00
Frédéric Junod
0a01204bb3 Merge pull request #3028 from fredj/wfsformat-cleanup
ol.format.WFS cleanup
2014-12-09 09:35:00 +01:00
Frederic Junod
aaf689bbec Uppercase ol.format.WFS.SCHEMA_LOCATION const 2014-12-09 09:19:15 +01:00
Frederic Junod
7922c08fe0 Uppercase ol.format.WFS.XMLNS const 2014-12-09 09:18:12 +01:00
Frederic Junod
045109aaab Uppercase ol.format.WFS.FEATURE_PREFIX const 2014-12-09 09:16:41 +01:00
Frederic Junod
de058c7889 Remove unneeded type cast 2014-12-09 09:15:00 +01:00
Frédéric Junod
39cb30308d Merge pull request #3024 from fredj/wfs_gmlFormat
Add missing gmlFormat to olx.format.WFSOptions
2014-12-08 17:55:21 +01:00
Frederic Junod
a9e6b7115f Remove gmlFormat from olx.format.WFSWriteGetFeatureOptions 2014-12-08 17:36:43 +01:00
Frederic Junod
ddcfe77897 Add missing gmlFormat to olx.format.WFSOptions 2014-12-08 17:28:17 +01:00
Frédéric Junod
f3824ec244 Merge pull request #3023 from fredj/server-vector-source
Change loader function return type
2014-12-08 15:39:55 +01:00
Frederic Junod
0c7e9a823c Remove loader function return type 2014-12-08 14:56:25 +01:00
Frédéric Junod
eb6aeee819 Merge pull request #3021 from fredj/attribution-options-typedef
Add missing properties in olx.control.AttributionOptions typedef
2014-12-08 14:38:01 +01:00
Éric Lemoine
bcd983723f Merge pull request #3013 from gberaudo/performance_vector_source_clear
Improve vector source clear() performance
2014-12-08 14:05:24 +01:00
Frederic Junod
8fa628a11d Add missing properties in olx.control.AttributionOptions typedef 2014-12-08 12:09:16 +01:00
Tim Schaub
4c504ede74 Doc fix regarding externs 2014-12-07 16:35:58 -08:00
Tim Schaub
32a67801e5 Include correct path in error message 2014-12-07 16:27:31 -08:00
Bart van den Eijnden
b7d0e06f05 Merge pull request #3017 from bartvde/format-write-string-example
Use writeFeatures instead of writeFeaturesNode in GPX and KML example (r=@elemoine)
2014-12-07 18:14:49 +01:00
Bart van den Eijnden
0fef608683 Use writeFeatures instead of writeFeaturesNode in GPX and KML example 2014-12-07 18:04:35 +01:00
Petr Sloup
d28ffc4808 Use null instead of undefined in the callback 2014-12-06 15:42:40 +01:00
Petr Sloup
b03b762500 More properties made private 2014-12-06 15:26:49 +01:00
Petr Sloup
48478c6868 Listen 'mousemove' and 'click' rather than 'pointermove' in the TileUTFGrid example 2014-12-06 15:21:14 +01:00
Petr Sloup
ca77a20b57 Improved TileUTFGrid example 2014-12-06 15:07:52 +01:00
Petr Sloup
ac144d934f Documentation blocks for the option members 2014-12-06 14:19:56 +01:00
Petr Sloup
250a1e4da3 Various code style fixes 2014-12-06 14:13:22 +01:00
Petr Sloup
363ac54509 Suppress warning about dot notation (compiler would report undefined properties) 2014-12-05 20:26:33 +01:00
Guillaume Beraudo
e3947fb09a Add optional fast parameter for clearing vector source 2014-12-05 18:06:23 +01:00
Petr Sloup
c8bc3620d3 Added TileUTFGrid example 2014-12-05 17:33:30 +01:00
Éric Lemoine
347c4c869d Merge pull request #3014 from elemoine/simplifyreplay
Simplify hit detection code
2014-12-05 16:53:47 +01:00
Petr Sloup
4b605d40d9 getTemplate method to get the Mustache template from the TileJSON 2014-12-05 16:07:37 +01:00
Petr Sloup
ef816d30ed The preemptive loading of UTFGrid tiles is now optional 2014-12-05 16:07:37 +01:00
Petr Sloup
99eab24b20 Implementation of the ol.source.TileUTFGridTile_#getData method 2014-12-05 16:07:36 +01:00
Petr Sloup
9f7e94ec85 Added UTFGridJSON to the TileJSON externs 2014-12-05 16:07:35 +01:00
Petr Sloup
641a829918 Incomplete getFeatureInfo implementation 2014-12-05 16:07:34 +01:00
Petr Sloup
794c7950c8 Added ol.source.TileUTFGrid 2014-12-05 16:07:34 +01:00
Bart van den Eijnden
d62ad47338 Merge pull request #3006 from bartvde/issue-3006
gml3.js and gml2.js don't follow file naming conventions
2014-12-05 15:53:29 +01:00
Éric Lemoine
fdf52c1865 Simplify hit detection code 2014-12-05 15:42:54 +01:00
Bart van den Eijnden
bdc05472bc Rename GML format files to match conventions 2014-12-05 15:28:27 +01:00
Bart van den Eijnden
47325cd4ae Merge pull request #3003 from bartvde/writefeatures
The writeFeatures method should always return a string (r=@elemoine)
2014-12-05 15:05:25 +01:00
Guillaume Beraudo
17e56d8357 Introduce clear event on vector source
Three seconds speed up when clearing 100'000 features.
Clearing is now around 350ms.
2014-12-05 15:03:23 +01:00
Guillaume Beraudo
3e2cc3c246 Faster vector source clear
Three seconds speed up for clearing 100'000 features.
2014-12-05 15:03:20 +01:00
Guillaume Beraudo
e4063102b7 Potentialy faster array allocation in rbush 2014-12-05 15:03:07 +01:00
Bart van den Eijnden
3587418888 The writeFeatures method should always return a string 2014-12-05 14:54:59 +01:00
Paul Spencer
9802cfd56f Merge pull request #3011 from pagameba/master
opt_options may not be defined, use options
2014-12-05 08:50:51 -05:00
Paul Spencer
12ddc7da57 opt_options may not be defined, use options
Constructing an instance of `ol.interaction.DragPan` with no options should be possible, the reference to `opt_options` makes this throw an error when no options are passed.
2014-12-05 08:30:14 -05:00
Éric Lemoine
571cd1c57a Merge pull request #3009 from elemoine/hitdetectionfix
Fix hit detection bug
2014-12-05 14:12:49 +01:00
Éric Lemoine
a820ccea5a Use alphabetical order for canvas ReplayGroup methods 2014-12-05 12:32:54 +01:00
Éric Lemoine
9421bbd362 More clean-ups in the canvas replay code 2014-12-05 12:29:53 +01:00
Éric Lemoine
4c2a0d2053 Remove unused code in the canvas replay code 2014-12-05 12:24:54 +01:00
Éric Lemoine
b3ad50018d Remove unused local variable 2014-12-05 12:24:54 +01:00
Éric Lemoine
27d30e4286 Replay replays in correct order for hit detection 2014-12-05 12:24:54 +01:00
Éric Lemoine
3fb539460c Merge pull request #3002 from elemoine/regularstyle
Passing options to RegularShape is mandatory
2014-12-04 13:45:18 +01:00
Éric Lemoine
61f0c55975 Passing options to RegularShape is mandatory 2014-12-04 13:33:30 +01:00
Éric Lemoine
dfb55fb6a5 Merge pull request #2967 from camptocamp/webgl-point
Add support for drawing points with WebGL
2014-12-04 13:11:31 +01:00
Bart van den Eijnden
e716428895 Merge pull request #2701 from bartvde/geojson-geometryname
Writing GeoJSON does not respect the feature's geometryName
2014-12-04 13:04:17 +01:00
Éric Lemoine
87bb1b956b Merge remote-tracking branch 'upstream/master' into webgl-point
Conflicts:
	src/ol/style/circlestyle.js
	src/ol/style/regularshapestyle.js
	test/spec/ol/style/regularshapestyle.test.js
2014-12-04 12:57:46 +01:00
Éric Lemoine
b2e419654b Add ol.INITIAL_ATLAS_SIZE and ol.MAX_ATLAS_SIZE 2014-12-04 12:13:47 +01:00
tsauerwein
e109be4b57 Rename size to initialSize 2014-12-04 11:49:50 +01:00
tsauerwein
0fd1a575a9 Use string instead of ol.structs.Checksum 2014-12-04 11:48:43 +01:00
Bart van den Eijnden
f0bf61bbf3 Do not encode geometry in properties if geometryName is different 2014-12-04 11:23:01 +01:00
Éric Lemoine
6d1d47a918 Remove @api for ol.render.webgl.Immediate#flush 2014-12-04 11:22:15 +01:00
Éric Lemoine
aef11b7471 Better comment in ivectorcontext.js 2014-12-04 11:18:58 +01:00
tsauerwein
b5d80679d8 Add and fix documentation for atlas manager 2014-12-04 10:21:32 +01:00
Bart van den Eijnden
dcd81ab4b3 Merge pull request #3000 from bartvde/color-docs
Explain that return of ol.color.asArray should not be modified
2014-12-04 10:02:06 +01:00
Bart van den Eijnden
ccc7c1b9b7 Remove code that suggests that color arrays may be modified 2014-12-04 09:24:18 +01:00
tsauerwein
88a3fda514 Remove star example in favor of #2976 2014-12-04 09:23:00 +01:00
Bart van den Eijnden
22e33519c8 Explain that return of ol.color.asArray should not be modified 2014-12-04 09:07:21 +01:00
Andreas Hocevar
6255d8b493 Merge pull request #2997 from ahocevar/opengeo-boundless
Use new demo GeoServer location
2014-12-03 14:25:05 +01:00
Andreas Hocevar
0d16e0f0c8 Use new demo GeoServer location
demo.opengeo.org currently redirects to demo.boundlessgeo.com, so this
change makes it so the new location is used directly.
2014-12-03 14:13:36 +01:00
Bart van den Eijnden
c30233d9c7 Merge pull request #2976 from bartvde/regularstyle-example
Add an example to show off ol.style.RegularShape
2014-12-03 11:09:33 +01:00
Bart van den Eijnden
4a07327dab Add an example to show off ol.style.RegularShape (see #2706) 2014-12-03 10:58:00 +01:00
Pierre GIRAUD
cc39c26132 Merge pull request #2992 from pgiraud/tilevector_featureatcoordinate
Add support for finding features at a given coordinates for vector tiles - fixes
2014-12-02 08:54:46 +01:00
Pierre GIRAUD
9f725f99ca Rename methods 2014-12-01 14:22:03 +01:00
Andreas Hocevar
4cbeb5ee22 Merge pull request #2987 from kartverket/2966
Image layer renderers use source projection if given and equivalent
2014-12-01 13:06:42 +01:00
Thomas Hirsch
8e4d7c0715 isDefAndNotNull -> !isNull 2014-12-01 12:57:35 +01:00
Frédéric Junod
6790b8655a Merge pull request #2975 from fredj/mouseevent-offset
Use offsetX and offsetY if available
2014-12-01 11:23:09 +01:00
Frederic Junod
fabf05977a Use offsetX and offsetY if available 2014-12-01 10:56:34 +01:00
Frederic Junod
26ce8032eb Use ol.Map#getEventPixel in mouse position control 2014-12-01 10:56:34 +01:00
Thomas Hirsch
d5bafc5e9f linting 2014-12-01 10:53:36 +01:00
Pierre GIRAUD
ce4ecb711b getFeaturesAtCoordinateAtResolution is not stable yet 2014-12-01 09:49:02 +01:00
Éric Lemoine
4734530ce2 Merge pull request #2973 from s093294/patch-1
Making GetTileCoordFor methods public avaible
2014-12-01 09:05:29 +01:00
Poul Kjeldager Sørensen
1d7bae6b26 Update tilegrid.js 2014-11-30 21:53:42 +01:00
Thomas Hirsch
e385e81a20 linting 2014-11-30 10:08:41 +01:00
Pierre GIRAUD
25516fead9 Merge pull request #2986 from pgiraud/tilevector_featureatcoordinate
Add support for finding features at a given coordinates for vector tiles
2014-11-29 23:12:47 +01:00
Tim Schaub
f57f0e17ab Merge pull request #2937 from tschaub/clipped
Clip layer rendering to limited extent.
2014-11-29 14:01:43 -07:00
Éric Lemoine
56ad3ea9aa Merge pull request #2971 from elemoine/tilevector
Two ol.source.TileVector fixes
2014-11-29 20:07:33 +01:00
Bart van den Eijnden
1a2544d30a Merge pull request #2988 from bartvde/radius1-olx
Correct olx.style.RegularShapeOptions definition (r=@elemoine)
2014-11-29 14:08:40 +01:00
Bart van den Eijnden
6cd1f3f262 Correct olx.style.RegularShapeOptions definition 2014-11-29 13:52:36 +01:00
Bart van den Eijnden
275f5bc796 Merge pull request #2981 from bartvde/circle-linedash
Use lineDash in ol.style.Circle's and ol.style.RegularShape's stroke (r=@fredj,@elemoine)
2014-11-29 12:19:14 +01:00
Thomas Hirsch
c42ec27a4a image layer renderers use source projection if given and equivalent 2014-11-28 22:09:45 +01:00
Bart van den Eijnden
6556e5eb52 Merge pull request #2982 from bartvde/radius1
Allow radius1 as an alias for radius in ol.style.RegularShape
2014-11-28 19:58:46 +01:00
Bart van den Eijnden
da39e9f96a For stars, use radius1 and radius2 in ol.style.RegularShape 2014-11-28 19:44:16 +01:00
Pierre GIRAUD
5878e7f839 Adding getFeaturesAtCoordinateAtResolution in ol.source.TileVector 2014-11-28 17:30:45 +01:00
Pierre GIRAUD
802cfb59d5 Merge pull request #2980 from pgiraud/tilevector_getfeatures
Export ol.source.TileVector#getFeatures in built mode
2014-11-28 14:44:04 +01:00
Bart van den Eijnden
2d74a6b10f Use lineDash in ol.style.Circle's and ol.style.RegularShape's stroke 2014-11-28 13:11:25 +01:00
Pierre GIRAUD
34e82de8c8 Export ol.source.TileVector#getFeatures in built mode 2014-11-28 11:54:35 +01:00
Bart van den Eijnden
9e591d21d0 Merge pull request #2979 from bartvde/proj-urns
Support OGC srs urns without an EPSG database version
2014-11-27 20:09:54 +01:00
Bart van den Eijnden
890b96f1e9 Support OGC srs urns without an EPSG database version 2014-11-27 20:01:53 +01:00
Andreas Hocevar
5a29834555 Merge pull request #2978 from ahocevar/mapquest-zoom
Fix zoom levels for the MapQuest Street layer
2014-11-27 19:41:26 +01:00
Andreas Hocevar
5155e7a6ac Fix zoom levels for the MapQuest Street layer
A typo in 65b8e0f915 introduced this bug.
Before that, 18 zoom levels were used. Now we're using 19, which appears
to be available with full world coverage.
2014-11-27 19:13:02 +01:00
Éric Lemoine
1845665306 Correct spelling for "performance" 2014-11-27 17:14:22 +01:00
Antoine Abt
ed4bae064d Merge pull request #2889 from fgravin/getFeatureInfo
Add GetFeatureInfo format
2014-11-27 10:30:20 +01:00
Poul Kjeldager Sørensen
b72fddf7f4 Making GetTileCoordFor methods public avaible
I am using tilegrid to request elevation data tiles side by side of a raster layer. It would be nice if these two method was public avaible such I could use the tilegrid to convert mouse coordinates to tile coordinates to request backend tiles. 

The elevation tiles are not shown as a layer directly but rather used to compute and show information in relationship to mouse curser or map view.

This would save me the time of adding another tilegrid implementation in my application specific context.
2014-11-26 01:24:00 +01:00
Antoine Abt
22491601ba Restore proj4 state after tests 2014-11-25 17:38:06 +01:00
Antoine Abt
638f8275aa Export readFeatures method 2014-11-25 16:24:51 +01:00
Antoine Abt
fc16c4500d Renaming & better typing 2014-11-25 16:24:32 +01:00
Éric Lemoine
ec01aa45b9 Make createTileCoordTransform return identity func
This makes ol.tilegrid.TileGrid#createTileCoordTransform return the identity function. This makes it possible to use ol.source.TileVector with an ol.tilegrid.TileGrid (as opposed to an ol.tilegrid.XYZ).
2014-11-24 15:19:24 +01:00
Éric Lemoine
8ba830f91f Make loadFeaturesFromUrl accept an error callback 2014-11-24 15:13:17 +01:00
tsauerwein
d6841e6d9d Fix tests for when not run with WebGL support 2014-11-24 13:26:45 +01:00
tsauerwein
b8b48afc82 Use WEBGL_MAX_TEXTURE_SIZE as default 2014-11-24 09:57:09 +01:00
tsauerwein
e307579d49 Move constants from ol.has to ol 2014-11-24 09:42:10 +01:00
Éric Lemoine
3ed46c50cc Merge pull request #46 from elemoine/webgl-point-delete-resources
[webgl-point] Delete WebGL resources
2014-11-21 18:02:38 +01:00
Éric Lemoine
c0bbb6c4fa Disable vertex attrib array after replay 2014-11-21 17:48:58 +01:00
Éric Lemoine
fe2f83e878 Merge pull request #43 from elemoine/webgl-point-examples
[webgl-point] Revert changes to examples
2014-11-21 16:45:51 +01:00
Éric Lemoine
b3369cd516 Delete WebGL resources used by immediate API 2014-11-21 16:35:05 +01:00
Éric Lemoine
857a8ca2bb Delete WebGL resources used at postcompose time 2014-11-21 16:35:05 +01:00
Éric Lemoine
37f91690f1 Merge pull request #45 from elemoine/webgl-point-buffer
[webgl-point] Rename ol.structs.Buffer to ol.webgl.Buffer
2014-11-21 16:14:01 +01:00
Éric Lemoine
b904427087 Merge pull request #44 from elemoine/webgl-point-delete
[webgl-point] Add a comment to WebGL ImageReplay
2014-11-21 15:49:41 +01:00
Éric Lemoine
57db47ac18 Rename ol.structs.Buffer to ol.webgl.Buffer
The Buffer class is WebGL specific, and it's not really a "data structure", in the pure sense of the term.
2014-11-21 15:48:31 +01:00
Éric Lemoine
6360e4497d Add a comment to WebGL ImageReplay
A comment explaining why we don't need to call deleteProgram and deleteShader in the function returned by getDeleteResourcesFunction.
2014-11-21 15:39:23 +01:00
Éric Lemoine
2e873d3e6d Revert changes to the synthetic-points example
These changes were made for testing WebGL. We now have specific examples for WebGL point.
2014-11-21 15:15:06 +01:00
Éric Lemoine
336de4b1b1 Revert changes to the icon example
The changes were made for testing WebGL, and we now have specific examples for WebGL point.
2014-11-21 15:13:51 +01:00
Éric Lemoine
34953e8266 No need to mention WebGL in draw-feature example 2014-11-21 15:12:26 +01:00
Éric Lemoine
dae5bd53b7 Merge pull request #41 from elemoine/webgl-point-cleanup
[webgl-point] Use ol WebGL infrastructure in WebGL replay
2014-11-21 14:56:19 +01:00
gberaudo
a324f9805f Merge pull request #42 from gberaudo/webgl_immediate_fixes
[webgl-point] Webgl Immediate fixes
2014-11-21 14:43:12 +01:00
Antoine Abt
32d5300682 Merge pull request #2965 from tonio/pan_selectinteraction
Fix pan with select interaction in mousemove mode.
2014-11-21 14:01:51 +01:00
Guillaume Beraudo
fe74bd1b2c Add missing call to flush in webgl map renderer 2014-11-21 13:36:09 +01:00
Guillaume Beraudo
235f7c5bd1 Fix lack of @api doc in webgl Immediate 2014-11-21 13:35:20 +01:00
Éric Lemoine
fd9db053c0 Use ol WebGL infrastructure in WebGL replay 2014-11-21 11:39:47 +01:00
Tobias Sauerwein
ac24b615c3 Merge pull request #39 from tsauerwein/webgl-point-hit-detection-atlas
[webgl-point] Add hit-detection images of symbols to separate atlas
2014-11-21 11:37:48 +01:00
Éric Lemoine
44782c59a5 Merge pull request #40 from elemoine/webgl-point-cleanup
[webgl-point] Remove unused WebGL related code
2014-11-21 11:37:21 +01:00
Antoine Abt
374f02c725 Fix pan with select interaction in mousemove mode. 2014-11-21 11:23:06 +01:00
Éric Lemoine
1e12e7ca90 Remove unused WebGL related code 2014-11-21 10:51:00 +01:00
tsauerwein
fb8af71f25 Use goog.isNull and goog.isDef 2014-11-21 10:42:06 +01:00
Tobias Sauerwein
283d878177 Merge pull request #36 from tsauerwein/webgl-point-has-stable
Mark ol.has.WEBGL_MAX_TEXTURE_SIZE as API
2014-11-21 10:33:18 +01:00
Éric Lemoine
a665b76f8f Merge pull request #38 from elemoine/webgl-point-uint
Fix assert in WebGL replay
2014-11-21 10:20:44 +01:00
tsauerwein
8fcde092c7 Set the default of WEBGL_MAX_TEXTURE_SIZE to undefined
By doing so the examples will also work if WebGL is not supported.
2014-11-21 09:54:55 +01:00
tsauerwein
40c33a21eb Mark ol.has.WEBGL_MAX_TEXTURE_SIZE as API 2014-11-21 09:52:09 +01:00
tsauerwein
ab42965aa2 Add hit-detection image to atlas (RegularShape) 2014-11-21 09:41:38 +01:00
tsauerwein
4132505313 Add hit-detection image to atlas (Circle) 2014-11-21 09:41:10 +01:00
tsauerwein
97f8e4ac8d Keep separate atlas for hit-detection images 2014-11-21 09:40:22 +01:00
tsauerwein
82ef80cf60 Add imageSize and origin for hit-detection image 2014-11-21 09:39:38 +01:00
Éric Lemoine
05f71383f9 Fix assert in WebGL replay 2014-11-21 09:33:45 +01:00
Éric Lemoine
ee54d21b89 Merge pull request #37 from elemoine/webgl-point-uint
[webgl-point] Use OES_element_index_uint when available
2014-11-20 17:08:16 +01:00
Éric Lemoine
7c88329354 Use 50000 features in the WebGL vector examples 2014-11-20 16:39:25 +01:00
Éric Lemoine
2f7c97f25a Use OES_element_index_uint when available 2014-11-20 16:39:25 +01:00
gberaudo
3af2257345 Merge pull request #22 from gberaudo/webgl_immediate_point
[webgl-point] Webgl immediate implementation using a replay group
2014-11-20 14:01:08 +01:00
Guillaume Beraudo
7d01946fef Removing webgl Immediate delegation code for drawing text 2014-11-20 13:53:00 +01:00
Guillaume Beraudo
257784e277 More lenient webgl Immediate drawing of a feature.
Remove assert to handle drawing features with supported geometries.
2014-11-20 13:53:00 +01:00
Guillaume Beraudo
f1402522b5 More lenient Immediate geometry collection rendering
Render geometry collection elements with a valid renderer inspite of
throwing an assertion error. Allows support of hierarchies of points.
2014-11-20 13:53:00 +01:00
Guillaume Beraudo
20ceae2655 Webgl immediate implementation for points
Internally uses a replay group to share code.

Modifies the dynamic data example to use PointGeometry
and Feature in addition to MultiPoint.
2014-11-20 13:53:00 +01:00
Tobias Sauerwein
9681ec3e10 Merge pull request #35 from tsauerwein/webgl-point-fix-examples
Fix examples (minor)
2014-11-20 12:01:22 +01:00
Tobias Sauerwein
d5ffd8abac Merge pull request #34 from camptocamp/webgl-point-texture-per-image
Make sure only one texture is created per image
2014-11-20 12:01:11 +01:00
tsauerwein
d73e183c89 Fix examples
The very last style was not used.
2014-11-20 11:50:46 +01:00
tsauerwein
d12db0419c Make sure only one texture is created per image 2014-11-20 11:39:25 +01:00
Tobias Sauerwein
c564a0963c Merge pull request #33 from tsauerwein/webgl-point-symbol-atlas
[webgl-point] Use the atlas manager for symbols [WIP]
2014-11-20 09:50:03 +01:00
Bart van den Eijnden
4b61e864e7 Merge pull request #2960 from bartvde/layergroup-extent
LayerGroup extent should be used if extent not set on child layer
2014-11-20 08:53:23 +01:00
Bart van den Eijnden
3db26f1d2b Use the layergroup's extent if no extent provided 2014-11-20 08:35:40 +01:00
Frédéric Junod
aba47907ca Merge pull request #2956 from fredj/mousewheel-event-name
Revert "Remove mousewheel event name workaround"
2014-11-19 08:19:59 +01:00
Andreas Hocevar
ca3dfe2b35 Merge pull request #2959 from ahocevar/unstable-doc-fix
Fix typo in selector
2014-11-18 16:53:25 +01:00
Andreas Hocevar
4714c9b380 Fix typo in selector 2014-11-18 16:37:18 +01:00
Frederic Junod
552f9483cb Revert "Remove mousewheel event name workaround"
This reverts commit 20ce664068.

Reverted upstream: 4ee0daca0e
2014-11-18 09:00:50 +01:00
Frédéric Junod
a77b7aa817 Merge pull request #2895 from fredj/remove-font-family
Move font-family customization to layout.css
2014-11-17 16:43:57 +01:00
Éric Lemoine
3bf4cf28f8 Merge pull request #2896 from kalinbas/patch-1
Remove duplicated style parameter
2014-11-16 20:24:31 +01:00
Tim Schaub
b1ac2ff2f2 Merge pull request #2938 from tschaub/image-static-docs
Additional image static docs.
2014-11-16 08:47:19 -08:00
Tim Schaub
46e33a2979 Merge pull request #2939 from tschaub/sticky-stability
Make stability checkbox sticky.
2014-11-14 16:36:34 -08:00
Éric Lemoine
a306c5327c Merge pull request #2949 from elemoine/rbush-debug
Add ol.ext to hosted dir
2014-11-13 21:33:07 -09:00
Éric Lemoine
2b2f745248 Add ol.ext to hosted dir 2014-11-14 00:16:28 +01:00
tsauerwein
327763cc82 Add stars to example 2014-11-13 12:04:51 +01:00
tsauerwein
f07e59d63f Add regular shape example 2014-11-13 11:52:35 +01:00
tsauerwein
e9e76954b2 Integrate atlas manager into RegularShape 2014-11-13 11:48:23 +01:00
Frédéric Junod
41eeed5f35 Merge pull request #2943 from fredj/applyTransform-api
Mark applyTransform api stable
2014-11-13 11:05:18 +01:00
tsauerwein
7593a18a19 Add atlas manager to RegularShapeOptions 2014-11-13 10:53:03 +01:00
tsauerwein
ea65f65b37 Implement getChecksum for RegularShape 2014-11-13 10:50:07 +01:00
Frederic Junod
c701ad6749 Mark applyTransform api stable 2014-11-13 10:46:06 +01:00
tsauerwein
7e9dd65f8b Add example for symbols in an atlas 2014-11-13 10:24:28 +01:00
Andreas Hocevar
cee1575a6c Merge pull request #2936 from ahocevar/unselect-index
Fix unselection of selected features
2014-11-13 08:39:40 +01:00
tsauerwein
62e9d259b2 Fix @type annotation
A description for @type annotation emits a warning.
2014-11-12 17:22:27 +01:00
tsauerwein
b3b7579f84 Use atlas manager for circle style 2014-11-12 17:22:27 +01:00
tsauerwein
ffced21893 Add atlas manager to CircleOptions 2014-11-12 17:22:27 +01:00
Tobias Sauerwein
2a5fffaee4 Merge pull request #32 from tsauerwein/webgl-point-offset
[webgl-point] Fix call to drawElements
2014-11-12 17:21:21 +01:00
tsauerwein
41887e660b Fix call to drawElements
The offset must be given in bytes.
2014-11-12 16:29:46 +01:00
Tim Schaub
39010238b9 Make stability checkbox sticky 2014-11-11 20:06:26 -08:00
Tim Schaub
b991895c61 Similar detail for all crossOrigin options 2014-11-11 19:04:25 -08:00
Tim Schaub
b269161276 A bit more static image doc 2014-11-11 19:01:05 -08:00
Andreas Hocevar
96729baa9f Push the feature, not the index 2014-11-11 20:09:24 +01:00
Tim Schaub
3685626187 Example demonstrating limited layer extent 2014-11-11 09:11:12 -08:00
Tim Schaub
50c0bc6879 Clip rendering to layer extent 2014-11-11 08:59:57 -08:00
Andreas Hocevar
08aa6ee82d Do not rely on unstable index 2014-11-11 12:35:19 +01:00
Éric Lemoine
84889d9dc5 Merge pull request #2935 from geosense/master
Fix jsdoc comment
2014-11-11 11:05:47 +01:00
paulsimon
89248cf60a Fix jsdoc comment 2014-11-10 20:49:20 +01:00
Éric Lemoine
01bc02214c Merge pull request #31 from elemoine/webgl-point-refactoring
[webgl-point] Minor refactoring to WebGL image replay func
2014-11-10 18:21:42 +01:00
Éric Lemoine
a7a2499bc7 Merge pull request #2933 from elemoine/fix-warning
Fix compile warning
2014-11-10 18:20:45 +01:00
Éric Lemoine
344658edb0 Fix compile warning 2014-11-10 17:24:29 +01:00
Éric Lemoine
46e436b599 Minor refactoring to WebGL image replay func 2014-11-10 17:19:31 +01:00
Éric Lemoine
23a24973eb Merge pull request #30 from elemoine/webgl-point-delete
[webgl-point] Add ol.renderer.webgl.VectorLayer#disposeInternal
2014-11-10 17:18:28 +01:00
Éric Lemoine
c8e22bdb44 Merge pull request #29 from elemoine/webgl-point-merge
[webgl-point] Merge openlayers:master into the branch
2014-11-10 17:18:04 +01:00
Éric Lemoine
d9a4482393 Add ol.renderer.webgl.VectorLayer#disposeInternal
Implement disposeInternal to free WebGL resources (deleteBuffer and deleteTexture).
2014-11-10 16:52:32 +01:00
Éric Lemoine
501e7456c0 Merge remote-tracking branch 'upstream/master' into webgl-point-merge 2014-11-10 15:40:03 +01:00
Éric Lemoine
6c80ddcb14 Merge pull request #28 from elemoine/webgl-point-shaders
[webgl-point] Add support for changing "colors"
2014-11-10 15:35:48 +01:00
Éric Lemoine
87865be9f4 Add "color" support to WebGL image replay
This adds support for layer brightness, contrast, hue, saturation.
2014-11-10 15:00:35 +01:00
Éric Lemoine
240f425c46 Add global opacity support to WebGL image replay
vectorLayer.setOpacity() now works as expected.
2014-11-10 14:58:57 +01:00
Éric Lemoine
1de46c68d7 Use "discard" in image shader
This leads to better looking Timeline profiles in Chrome's developer tools!
2014-11-10 14:58:56 +01:00
Éric Lemoine
ce879e115f Merge pull request #2931 from elemoine/viewdocs
Improvement to view docs
2014-11-10 13:47:12 +01:00
Éric Lemoine
cb8167b31a Merge pull request #27 from elemoine/webgl-point-texture-coords
Fix texture coordinates in WebGL image replay
2014-11-10 13:05:38 +01:00
Éric Lemoine
96f8a806a6 Improvement to view docs 2014-11-10 12:48:43 +01:00
Éric Lemoine
fb816b7ab5 Fix texture coordinates in WebGL image replay 2014-11-10 12:30:59 +01:00
Éric Lemoine
bdf3798c7a Merge pull request #26 from elemoine/webgl-point-tests
[webgl-point] Add unit tests for WebGL image replay
2014-11-10 12:30:25 +01:00
Frédéric Junod
1df7f6c2c7 Merge pull request #2906 from fredj/polyline-order
Assume a latitude, longitude order for Polyline format
2014-11-10 12:13:35 +01:00
Éric Lemoine
a2cf5b0889 Add unit tests for WebGL image replay 2014-11-10 11:02:32 +01:00
Éric Lemoine
d91330d83d Merge pull request #25 from elemoine/webgl-point-delete-buffers
[webgl-point] Delete WebGL buffers
2014-11-10 11:00:12 +01:00
Éric Lemoine
c79f3aa101 Delete WebGL buffers 2014-11-10 09:54:04 +01:00
Éric Lemoine
b7376779fb Merge pull request #2927 from elemoine/finishdrawing
Make it possible to programmatically finish drawing
2014-11-10 08:55:45 +01:00
Éric Lemoine
2f17106b68 Merge pull request #2928 from elemoine/patch-3
Do not rename handleMapBrowserEvent internally
2014-11-09 22:44:55 +01:00
Éric Lemoine
f32c550dbe Better docs for handleMapBrowserEvent 2014-11-09 22:08:29 +01:00
Éric Lemoine
bdeb195bfb Add finishDrawing to API
This makes it posssible to programmatically finish drawing.
2014-11-09 20:50:36 +01:00
Éric Lemoine
583f47d24d No need to pass event to finishDrawing_ 2014-11-09 20:49:52 +01:00
Éric Lemoine
d85c31e112 Merge pull request #23 from elemoine/webgl-point-comment
[webgl-point] Some explanation to the icon-sprite-webgl example
2014-11-07 18:51:53 +01:00
Éric Lemoine
97dafa6425 Some explanation to the icon-sprite-webgl example 2014-11-07 18:50:56 +01:00
Éric Lemoine
5998011985 Merge pull request #21 from elemoine/webgl-point-compile-err
[webgl-point] Add an assertion to avoid compile error
2014-11-07 17:02:11 +01:00
Éric Lemoine
73e76fe468 Add an assertion to avoid compile error 2014-11-07 16:48:29 +01:00
Tobias Sauerwein
4c3a7d0248 Merge pull request #14 from tsauerwein/webgl-point-atlas-manager
[webgl-point] Add atlas manager
2014-11-07 14:50:33 +01:00
gberaudo
dee4d3b130 Merge pull request #20 from gberaudo/webgl_feature_overlay
[webgl-point] Add feature overlay support to webgl map renderer.
2014-11-07 14:24:08 +01:00
Guillaume Beraudo
c05ffff629 Dynamically selected renderer in draw feature example 2014-11-07 14:20:51 +01:00
Guillaume Beraudo
6abe3047ec Add feature overlay support to webgl map renderer. 2014-11-07 14:17:31 +01:00
Éric Lemoine
89e682ba9c Merge pull request #2924 from gberaudo/canvasmaprenderer_readability
Readability rearangement in canvasmaprenderer.js
2014-11-07 14:00:39 +01:00
Guillaume Beraudo
f715e3186a Readability rearangement in canvasmaprenderer.js 2014-11-07 11:15:02 +01:00
tsauerwein
fe3cdd8d1b Add AtlasManagerOptions and improve docs 2014-11-07 11:12:32 +01:00
Éric Lemoine
440d253335 Merge pull request #19 from elemoine/webgl-point-rotation
[webgl-point] Add support for icon rotation
2014-11-07 11:12:31 +01:00
Éric Lemoine
3268b20333 Make icon-sprite-webgl example usable with Canvas 2014-11-07 10:57:59 +01:00
Éric Lemoine
e0c5e742ad Use 30000 points in icon-sprite-webgl example 2014-11-07 10:52:05 +01:00
Éric Lemoine
0a364b32ed Use LINEAR for icon textures 2014-11-07 10:49:58 +01:00
Éric Lemoine
c0acc8d825 Add comment describing the vertices sent to GPU 2014-11-07 09:59:56 +01:00
Tim Schaub
c50b7d759c Merge pull request #2911 from tschaub/fires
List events fired in the navigation.
2014-11-06 11:10:37 -07:00
Tim Schaub
d4658837e2 Use toggleClass instead of addClass and removeClass 2014-11-06 10:42:40 -07:00
Andreas Hocevar
1d221f8166 Add ability to filter out unstable Fires items 2014-11-06 10:32:17 -07:00
tsauerwein
ebe0c6a88c Move AtlasManager to ol.style.AtlasManager 2014-11-06 17:51:15 +01:00
Éric Lemoine
0c6a40f5b5 Support image rotateWithView 2014-11-06 17:16:58 +01:00
tsauerwein
64da2647a6 Take space into account when checking size 2014-11-06 17:09:34 +01:00
tsauerwein
f0841b38cd Use id string instead of hash code 2014-11-06 16:22:46 +01:00
Éric Lemoine
4924f34287 Merge pull request #2921 from gberaudo/small_overlay_optimization
Small feature overlay optimization
2014-11-06 15:45:40 +01:00
tsauerwein
5ba6ddcecf Only create new atlas after testing all existing 2014-11-06 15:28:44 +01:00
Éric Lemoine
fb24c68b9c Support image rotation 2014-11-06 15:27:25 +01:00
tsauerwein
509fbaee1c Replace hashCode with checksum
Hash codes are not collision free, so what we
actually need is a checksum.
2014-11-06 15:08:34 +01:00
Éric Lemoine
815a22bd22 Merge pull request #18 from elemoine/webgl-point-misc
[webgl-point] Misc changes
2014-11-06 14:30:53 +01:00
Guillaume Beraudo
6b8a5870ba Small feature overlay optimization
Compute `getSquaredTolerance` once, out of the loops.
2014-11-06 11:49:44 +01:00
Frederic Junod
83025fb97d Assume a latitude, longitude order for Polyline format 2014-11-06 10:58:52 +01:00
tsauerwein
581b372c6a Add constant ol.has.WEBGL_MAX_TEXTURE_SIZE 2014-11-06 10:24:14 +01:00
Éric Lemoine
43756a2d59 Support image scale 2014-11-06 09:47:24 +01:00
Éric Lemoine
64a7cdf372 Implement getImageSize in ol.style.Circle and RegularShape 2014-11-06 09:35:47 +01:00
Éric Lemoine
9029c0fdad Use replay maxExtent center as the coord system origin 2014-11-06 09:24:47 +01:00
Frédéric Junod
afe1467ddf Merge pull request #2897 from fredj/longclick
Remove pointerup listener on controls
2014-11-04 17:32:14 +01:00
Frédéric Junod
03ed3fe43f Merge pull request #2912 from fredj/jquery-externs
jQuery externs update
2014-11-04 14:57:18 +01:00
Frederic Junod
84c11b08fa Fix filter() function parameter in jquery externs
Submitted upstream: https://github.com/google/closure-compiler/pull/672
2014-11-04 14:26:05 +01:00
Frederic Junod
161d75dd22 Update jquery externs
From https://github.com/google/closure-compiler/blob/master/contrib/externs/jquery-1.9.js
2014-11-04 14:23:34 +01:00
Frederic Junod
1253177ae4 Add FastClick in mobile-full-screen example 2014-11-04 11:48:33 +01:00
Florent gravin
0f99f113e3 Change format name to WMSGetFeatureInfo 2014-11-04 09:39:19 +01:00
Antoine Abt
c0f2187310 Make GetFeatureInfo format pass ol2 test suite 2014-11-04 09:25:13 +01:00
Florent gravin
d0d6215550 Add tests suite for GetFeatureInfo format 2014-11-04 09:25:13 +01:00
Florent gravin
759386e37e Add WMS GetFeatureInfo reader format 2014-11-04 09:25:13 +01:00
Frederic Junod
4c8d8c21dc Remove 'pointerup' listener in ol.control.OverviewMap 2014-11-04 09:21:41 +01:00
Frederic Junod
e32be091a4 Remove 'pointerup' listener in ol.control.Attribution 2014-11-04 09:21:41 +01:00
Frederic Junod
cc442d964b Remove 'pointerup' listener in ol.control.ZoomToExtent 2014-11-04 09:21:40 +01:00
Frederic Junod
e55caef0d2 Remove 'pointerup' listener in ol.control.Rotate 2014-11-04 09:21:40 +01:00
Frederic Junod
c7a3fcd426 Remove 'pointerup' listener in ol.control.Zoom 2014-11-04 09:21:40 +01:00
Frederic Junod
224d86802e Remove 'pointerup' listener in ol.control.FullScreen 2014-11-04 09:21:40 +01:00
Éric Lemoine
8415a0c8ba Fix type for image replay origin 2014-11-04 08:48:43 +01:00
Tim Schaub
02bfa42736 List events fired in the navigation 2014-11-03 16:52:17 -07:00
Éric Lemoine
0115368649 Merge pull request #17 from elemoine/webgl-point-jitter
[webgl-point] Address precision/jitter problems
2014-11-03 18:10:19 +01:00
tsauerwein
7618c96c29 Double the size when creating new atlases 2014-11-03 18:00:57 +01:00
Éric Lemoine
28e51740c6 Address precision/jitter problems
Address precision/jitter problems by using coordinates relative to the Replay max extent rather that the world.
2014-11-03 17:45:50 +01:00
Éric Lemoine
1c9a87d50d Merge pull request #16 from elemoine/webgl-point-opacity
[webgl-point] Add support for icon opacity
2014-11-03 17:04:05 +01:00
Éric Lemoine
209d39a460 Support image opacity 2014-11-03 16:50:33 +01:00
Éric Lemoine
d7a992ba83 Merge pull request #15 from elemoine/webgl-point-anchor
[webgl-point] Add support for icon anchors
2014-11-03 16:15:59 +01:00
tsauerwein
1bd388188b Add atlas manager 2014-11-03 15:40:42 +01:00
Éric Lemoine
05bbfd58a8 Support image anchor 2014-11-03 15:40:00 +01:00
Éric Lemoine
c99b1772ed Merge pull request #13 from elemoine/webgl-point-merge
[webgl-point] Merge openlayers:master into the branch
2014-11-03 15:05:29 +01:00
Éric Lemoine
46b03e79a4 Merge remote-tracking branch 'upstream/master' into webgl-point 2014-11-03 15:02:22 +01:00
Éric Lemoine
787f98c5f2 Merge pull request #12 from elemoine/webgl-point-refactor
[webgl-point] Refactoring and fixes
2014-11-03 15:01:35 +01:00
Éric Lemoine
2c92d9a709 Fix drawElement call 2014-11-03 14:54:41 +01:00
Éric Lemoine
14d7f2a797 Delete ImageReplay textures 2014-11-03 14:16:32 +01:00
Éric Lemoine
4534bb8861 Make shaders closer to WebGL image replay 2014-11-03 13:46:34 +01:00
Andreas Hocevar
bf43816b66 Merge pull request #2706 from yportier/master 2014-11-03 13:24:37 +01:00
Yannick
a1dded3c27 Add ol.style.RegularShape 2014-11-03 13:24:30 +01:00
Antoine Abt
26f025a409 Merge pull request #2888 from fgravin/boundedBy
Element boundedBy must not be set as geometry field on GML reading
2014-11-03 11:34:30 +01:00
Éric Lemoine
00f20a11b5 Merge pull request #2903 from elemoine/icon-docs
Improved docs for icon options
2014-10-31 19:54:05 +01:00
tsauerwein
22e1159736 Implement hashCode for ol.style.Circle 2014-10-31 17:22:44 +01:00
Éric Lemoine
6eea0a1fc6 Improved docs for icon options 2014-10-31 17:16:04 +01:00
Éric Lemoine
95d2085cc4 Merge pull request #11 from elemoine/webgl-point-refactor
Clean up WebGL replay code
2014-10-31 15:56:27 +01:00
Éric Lemoine
495a7c95a1 Clearer comment 2014-10-31 15:42:52 +01:00
Éric Lemoine
64bc8f74be Better typing, fewer arrays 2014-10-31 15:41:25 +01:00
Éric Lemoine
8bff6a1abe Flatten the WebGL replay class hierarchy 2014-10-31 15:23:50 +01:00
Éric Lemoine
ed1be0d4e7 Merge pull request #10 from elemoine/icon-sprite
[webgl-point] Make WebGL image replay support icon sprites
2014-10-31 14:52:24 +01:00
Frederic Junod
d4bd5f24c6 Move font-family customization to layout.css 2014-10-31 11:57:27 +01:00
Éric Lemoine
f332cdacf1 Add an icon sprite webgl example 2014-10-31 11:17:24 +01:00
tsauerwein
46ec078501 Add Hashable interface 2014-10-31 11:17:03 +01:00
Éric Lemoine
9201312737 Add support for icon sprites 2014-10-31 11:16:51 +01:00
Tim Schaub
178e3f1856 Merge pull request #2900 from tschaub/wrapper
Allow build.js task to add header.
2014-10-30 13:07:39 -06:00
Tim Schaub
4b7e52c76f Allow build.js task to add header 2014-10-30 12:18:08 -06:00
Frédéric Junod
127818f9b7 Merge pull request #2893 from fredj/simplify-createDom
Don't pass an object to goog.dom.createDom for the class name
2014-10-30 17:57:44 +01:00
Frederic Junod
6ca1640659 Don't pass an object to goog.dom.createDom for the class name
If the second argument to goog.dom.createDom is a string, then this is
the className of the new element.
2014-10-30 16:53:42 +01:00
Frédéric Junod
2d53eb7667 Merge pull request #2781 from fredj/button-title
Use a standard title attribute for the control buttons
2014-10-30 16:52:09 +01:00
kalinbas
08c6e601b8 Update wmtssource.js
- "duplicated" style parameter is not supported by Intergraph GeoMedia
- Uppercase Parameter is needed by ARCGis 
- are there other constraints?
2014-10-30 13:23:09 +01:00
Frederic Junod
a715a38d75 Simplify CSS code in custom-controls example
By using the ol-control css class and a button instead of a link.
2014-10-30 12:37:44 +01:00
Frédéric Junod
ffeda3f25a Merge pull request #2852 from fredj/issue-2845
Add missing space between class names
2014-10-30 12:17:54 +01:00
Andreas Hocevar
8027c577bc Merge pull request #2891 from ahocevar/imageloadfunction
Introduce a load function for image sources
2014-10-30 09:33:47 +01:00
Andreas Hocevar
765189b86e Add missing types to olx.js 2014-10-30 09:22:45 +01:00
Andreas Hocevar
fed6376e26 Add imageLoadFunction option for ol.source.ImageWMS 2014-10-30 09:22:45 +01:00
Andreas Hocevar
a1e19b4905 Add imageLoadFunction option for ol.source.ImageStatic 2014-10-30 09:22:44 +01:00
Andreas Hocevar
46870456ac Add imageLoadFunction option to ol.source.ImageMapGuide 2014-10-30 09:22:44 +01:00
Andreas Hocevar
f5761daa61 Add a default imageLoadFunction to be used by sources 2014-10-30 09:22:44 +01:00
Andreas Hocevar
46eb14dc96 Give ol.Image an imageLoadFunction argument 2014-10-30 09:22:34 +01:00
Andreas Hocevar
87a06c0086 Rename #getImageElement to #getImage
This adds consistency between ol.Image and ol.ImageTile. Now both have
an exportable getImage method.
2014-10-30 08:42:09 +01:00
Frederic Junod
b40c439d33 Add new button-title example 2014-10-29 16:21:34 +01:00
Florent gravin
74410487aa Refactor the use of ol.xml.getLocalName(n) 2014-10-28 16:48:16 +01:00
Frederic Junod
9ebde652dc Use a standard title attribute for the control buttons 2014-10-28 15:22:46 +01:00
Éric Lemoine
abb86e16f0 Merge pull request #2885 from elemoine/tilejson
Add wrapX option to TileJSON source
2014-10-28 14:58:08 +01:00
Éric Lemoine
cd80ca6024 Merge pull request #2890 from elemoine/layerproperty
Use correct layer property names
2014-10-28 14:57:56 +01:00
Éric Lemoine
6fe80c4111 Use correct layer property names 2014-10-28 14:22:27 +01:00
Florent gravin
51da7bad8c Element boundedBy must not be set as geometry field on GML reading 2014-10-28 09:56:55 +01:00
Tim Schaub
f863386f39 Merge pull request #2887 from tschaub/more-d
Explicitly pass coordinate dimension before transforming.
2014-10-27 13:27:43 -06:00
Tim Schaub
e68eb726d2 Test 3d points and proj4 defs 2014-10-27 12:39:28 -06:00
Éric Lemoine
44d9950e8c Merge pull request #2886 from elemoine/ternary
Use ternary notation
2014-10-27 17:47:10 +01:00
Tim Schaub
8a82048c12 Explicitly pass coordinate dimension before transforming 2014-10-27 10:33:46 -06:00
Éric Lemoine
1f54b33961 Add wrapX option to TileJSON source 2014-10-27 17:23:00 +01:00
Éric Lemoine
dc7aee1974 Use ternary notation 2014-10-27 17:22:17 +01:00
Antoine Abt
4d4d9abe76 Merge pull request #2869 from tonio/xmlexport
Export useful xml functions
2014-10-27 17:13:52 +01:00
Tim Schaub
aa41da1318 Merge pull request #2884 from tschaub/wkt-returns
Make WKT methods throw errors instead of calling a method that throws.
2014-10-27 09:15:20 -06:00
Antoine Abt
ef435d9deb Improve doc for xml functions 2014-10-27 16:00:42 +01:00
Antoine Abt
88d1258e83 Rename ol.xml.load to ol.xml.parse 2014-10-27 16:00:42 +01:00
Antoine Abt
757b6a214c Rename ol.xml.parse to ol.xml.parseNode 2014-10-27 16:00:42 +01:00
Tim Schaub
7c2e0fa627 Verbose warnings 2014-10-27 08:45:11 -06:00
Antoine Abt
ba2d39e683 Export useful xml functions 2014-10-27 15:45:06 +01:00
Tim Schaub
aad9e4e8d3 Throw instead of calling a function that throws 2014-10-27 08:44:31 -06:00
Antoine Abt
67ec0b5988 Merge pull request #2746 from fgravin/gmlVersionFormat
Add versioning for GML format
2014-10-27 15:44:06 +01:00
Frédéric Junod
ee3259d13e Merge pull request #2882 from fredj/wmts_requestEncoding_string
Allow olx.source.WMTSOptions#requestEncoding to be a string
2014-10-27 14:24:15 +01:00
Frederic Junod
398b1f86ce Allow olx.source.WMTSOptions#requestEncoding to be a string 2014-10-27 13:48:47 +01:00
Frédéric Junod
f938ce82d9 Merge pull request #2881 from fredj/doc
Add default requestEncoding in documentation
2014-10-27 13:41:18 +01:00
Frederic Junod
70375d5227 Add default requestEncoding in documentation 2014-10-27 13:38:37 +01:00
Frédéric Junod
d77d504d01 Merge pull request #2877 from fredj/rm_fixme
Remove FIXME in src/ol/structs/rbush.js
2014-10-27 09:34:52 +01:00
Frederic Junod
bd72f6117b Remove FIXME in src/ol/structs/rbush.js 2014-10-27 09:24:27 +01:00
Éric Lemoine
bbea205a9c Use texture to draw points with WebGL 2014-10-27 09:18:19 +01:00
Éric Lemoine
2ecd2eadf7 Remove snap code from synthetic-points example 2014-10-27 09:18:19 +01:00
Éric Lemoine
c8225e49b1 Use triangles to draw points with WebGL 2014-10-27 09:18:19 +01:00
Éric Lemoine
9f108391ae Get renderer from query string in vector point examples 2014-10-27 09:18:19 +01:00
Éric Lemoine
33adcd3903 Add very basic webgl vector renderer 2014-10-27 09:18:19 +01:00
Tobias Sauerwein
5ddbe54310 Merge pull request #2870 from tsauerwein/rbush-bulk-insert
Use bulk-insertion for addFeatures
2014-10-27 09:12:23 +01:00
Tim Schaub
2d415b6ce8 Merge pull request #2856 from tschaub/set-source
Allow layer source to be set.
2014-10-26 15:04:13 -06:00
Tim Schaub
aa6a5d52dd Merge pull request #2875 from tschaub/orphan-logos
Avoid modifying `map.logos_` with each frame.
2014-10-26 13:11:54 -06:00
Tim Schaub
8fb5dc75ef Merge pull request #2874 from tschaub/tiny-logo
Avoid shrinking logos.
2014-10-26 00:32:28 -06:00
Tim Schaub
03fa9965c5 Avoid modifying map.logos_ with each frame 2014-10-25 23:54:42 -06:00
Tim Schaub
7152cdc87f Guard against Bootstrap's max-width setting
Bootstrap sets both the max-width and max-height of all image elements to 100%.  When attributions are removed from their containing element, this causes logos to shrink.
2014-10-25 23:37:20 -06:00
Tim Schaub
d712b2ba54 Allow source to be set after layer construction 2014-10-25 15:34:47 -06:00
Tim Schaub
c06774acb5 Allow source to be set with set method as well 2014-10-25 15:31:08 -06:00
Tim Schaub
88030dbce7 Allow layer source to be set 2014-10-25 15:31:07 -06:00
Frédéric Junod
773ac433ce Merge pull request #2872 from fredj/remove_beforechange_event
Remove the beforepropertychange event from ol.Object
2014-10-24 21:03:31 +02:00
Tim Schaub
771c418de3 Merge pull request #2868 from tschaub/event-doc
Remove doc about dispatching events.
2014-10-24 12:07:45 -06:00
Tim Schaub
1652da8e9d Merge pull request #2871 from tschaub/npm-install
Make `npm install` a dependency of node based targets.
2014-10-24 12:07:02 -06:00
Frederic Junod
1d533d2924 Remove the beforepropertychange event from ol.Object
propertychange events include the oldValue so remove the beforepropertychange
event type.
2014-10-24 18:09:34 +02:00
Tim Schaub
5cab561f12 Make npm install a dependency of node based targets 2014-10-24 09:28:27 -06:00
tsauerwein
56e3ba4578 Use bulk insertion for addFeatures 2014-10-24 17:10:02 +02:00
tsauerwein
97acd989a2 Add support for bulk insertion to rbush wrapper 2014-10-24 17:10:02 +02:00
Tim Schaub
8eaeb7bc35 Merge pull request #2867 from openlayers/module
Support for importing CommonJS style modules (like rbush).
2014-10-24 09:07:25 -06:00
Tim Schaub
c6b172aef2 Work with modules that assign to exports
CommonJS style modules will either assign `exports` to `module` or will assign properties to `exports`.  This allows us to work with either style:

    module.exports = Foo;

or

    exports.Foo = Foo;

Support for additional properties that are assigned to `exports` (or non-function values assigned to `module.exports`) will likely take additional typedef work in the wrapper.
2014-10-24 08:45:59 -06:00
Tim Schaub
120ace5cef Minimal typedef 2014-10-24 08:45:31 -06:00
tsauerwein
47d17342ca Set type for ol.ext.* 2014-10-24 08:39:03 -06:00
Éric Lemoine
478ecb80fd Merge pull request #2865 from elemoine/oldvalue
Add old value to property change events
2014-10-24 10:58:06 +02:00
Éric Lemoine
6d095bdf7c Add old value to property change events 2014-10-24 09:24:37 +02:00
Tim Schaub
bf314f30d5 Remove doc about dispatching events 2014-10-23 17:10:29 -06:00
tsauerwein
af4184e743 Add wrapper for the RBush 2014-10-23 15:57:27 -06:00
Tim Schaub
4785001548 Parse examples and build external modules on install 2014-10-23 15:57:10 -06:00
Éric Lemoine
780df9819b Merge pull request #2866 from elemoine/2801
Cluster source calls loadFeatures on vector source
2014-10-23 22:59:19 +02:00
Joseph Miller
d917952615 Cluster source calls loadFeatures on vector source
Closes #2801
2014-10-23 22:29:44 +02:00
Bart van den Eijnden
fd6a5d8df3 Merge pull request #2864 from bartvde/bing-mixed-content
Avoid mixed content in Bing Maps (r=@elemoine)
2014-10-23 22:25:57 +02:00
Tim Schaub
01b64bc655 General purpose task for building external modules 2014-10-23 13:40:31 -06:00
Bart van den Eijnden
ed980e0e73 Add uriScheme parameter to Bing Maps metadata request to avoid mixed content 2014-10-23 21:33:41 +02:00
Frédéric Junod
a6c3607897 Merge pull request #2855 from fredj/blur_preventDefault
Move touchstart preventDefault to ol.renderer.dom.Map
2014-10-23 17:38:44 +02:00
Andreas Hocevar
45967992fb Merge pull request #2690 from ahocevar/layer-vectoroverlay
Vector rendering with the DOM renderer
2014-10-23 10:19:20 +02:00
Frederic Junod
c83caa9686 Add ol.renderer.dom.Map#disposeInternal 2014-10-23 08:53:55 +02:00
Frederic Junod
f440de2446 Move touchstart preventDefault to ol.renderer.dom.Map
`preventDefault` is called to prevent the img context menu on mobile devices.
2014-10-23 08:48:22 +02:00
Tim Schaub
0a93ad5430 Merge pull request #2859 from tschaub/vector-doc
Document exportable vector source symbols.
2014-10-22 17:43:21 -06:00
Tim Schaub
473023d146 Document exportable vector source symbols 2014-10-22 09:12:37 -06:00
Tim Schaub
fa7f580053 Merge pull request #2857 from tschaub/osm-attribution
Update the OSM attribution.
2014-10-21 23:16:21 -06:00
Tim Schaub
3f5dd45310 One OSM attribution 2014-10-21 23:00:10 -06:00
Pol Dell'Aiera
119289040f Issue #2802: Update OSM attribution 2014-10-21 22:48:46 -06:00
Frederic Junod
d8d0f87ad6 Add missing space between class names
Fixes #2845
2014-10-18 12:06:24 +02:00
Éric Lemoine
b42b6ae1c5 Merge pull request #2847 from elemoine/zoomify-example
Constrain center in zoomify example
2014-10-17 08:07:38 +02:00
Éric Lemoine
6d531cdc29 Constrain center in zoomify example 2014-10-16 19:42:26 +02:00
Éric Lemoine
b61c257124 Merge pull request #2838 from mike-mcgann/wmts-tile-class
ol.source.WMTS now passes tileClass option to ol.source.TileImage
2014-10-15 15:33:12 +02:00
Mike McGann
5a2c206cab ol.source.WMTS now passes tileClass option to ol.source.TileImage
The constructor for ol.source.TileImage accepts an option for the tileClass,
but ol.source.WMTS does not pass this to the parent. This pull request adds
that in.
2014-10-15 09:13:35 -04:00
Éric Lemoine
74fd55a3e8 Merge pull request #2821 from elemoine/polygon-from-extent
Add ol.geom.Polygon.fromExtent
2014-10-15 07:48:58 +02:00
Tim Schaub
017703f05d Merge pull request #2835 from j16sdiz/master
Use correct Stamen URL for SSL.
2014-10-14 16:25:34 -06:00
Daniel Cheng
da479908e7 Fix HTTPS server name for stamen source (Close: #2830) 2014-10-15 01:11:51 +08:00
Éric Lemoine
1ce43e323d Add ol.geom.Polygon.fromExtent 2014-10-14 11:32:20 +02:00
Andreas Hocevar
dd337f3526 Add a canvas for FeatureOverlay and pre-/postcompose rendering 2014-10-10 16:17:19 +02:00
Björn Harrtell
c4d6e04e4b Do not rename handleMapBrowserEvent internally 2014-10-10 10:43:59 +02:00
Andreas Hocevar
4702aa496a Add DOM vector layer renderer 2014-10-09 19:10:22 +02:00
Florent gravin
27f32621ab Update comments on WFS format version 2014-10-03 12:13:36 +02:00
Florent gravin
93db3d42b7 Add tests for gml2 gml:box element 2014-10-03 12:02:14 +02:00
Florent gravin
8a07d241ff Add support for gml2 gml:box element 2014-10-03 12:01:52 +02:00
Florent gravin
d290445048 Make sure alias ol.format.GML show its content in apidoc 2014-10-03 11:16:19 +02:00
Florent gravin
1a7cbfd6ac Use Object() for objects in prototype
to avoid linter warning
2014-10-03 10:01:31 +02:00
Florent gravin
47e182524f Put PARSERS object into prototype too
This is to avoid the use of this.constructor that breaks advanced build
2014-10-03 09:45:24 +02:00
Florent gravin
bea721349a Rename gml format files to match convention
also changes some comments and syntax (feedback from PR comments
2014-10-03 09:45:24 +02:00
Florent gravin
0646056751 Overrides schemaLocation in subclasses 2014-10-03 09:45:24 +02:00
Florent gravin
678c66f50c Move GML subclasses to ol.format namespace
to avoid issue with ol.format.GML alias
ol.format.GMLBase
ol.format.GML2
ol.format.GML3
2014-10-03 09:44:56 +02:00
Florent gravin
607543e4e7 Create an alias ol.format.GML to ol.format.GML3
for backward compatibility
2014-10-03 09:44:47 +02:00
Florent gravin
563174383a Merge GML versions tests in base GML suite 2014-10-03 09:44:06 +02:00
Florent gravin
d3ac01445e Use by default instance of ol.format.GML.v3 in WFS format 2014-10-03 09:44:06 +02:00
Florent gravin
58485fc1f1 Instanciate ol.format.GML.v3 by default in gml tests 2014-10-03 09:44:06 +02:00
Florent gravin
07d6b83154 Redefine some PARSERS_ that are different in v2 and v3 2014-10-03 09:44:06 +02:00
Florent gravin
8182396454 Make class members public or protected
to be accessed from subclasses or static objects
2014-10-03 09:43:05 +02:00
Florent gravin
9324580c87 add format for GML v3 version
all writing methods & objects are defined in v3, as writing for v2 is not done yet
2014-10-03 09:43:04 +02:00
Florent gravin
d8114012bb Remove from GML base all objects and methods that should belong to v3 2014-10-03 09:42:51 +02:00
Florent gravin
c9171b8682 Pass options from v2 to its parent constructor 2014-10-03 09:42:51 +02:00
Florent gravin
82f267f0c5 Add test to parse WFS with GML 2.1.2 2014-10-03 09:42:51 +02:00
Florent gravin
f8e8653480 Add gmlFormat as option for WFS format 2014-10-03 09:42:45 +02:00
Florent gravin
192c7827c9 Add tests suite for ol.format.GML.v2 class 2014-10-03 09:42:22 +02:00
Florent gravin
13f10f6a98 Change GML method call signature from WFS format 2014-10-03 09:42:22 +02:00
Florent gravin
074330707c Call dedicated version format methods with 'this.constructor' object 2014-10-03 09:42:17 +02:00
Florent gravin
8efab3d4be Make protected some shared methods or objects 2014-10-03 09:42:13 +02:00
Florent gravin
8b38367e2b Add subclass for version ol.format.GML.v2 2014-10-03 09:42:09 +02:00
Florent gravin
b8e5ffaf31 Use current scope on remote methods call if arg opt_this is undefined 2014-10-03 09:42:09 +02:00
Florent gravin
4aad872d71 Send ol.format.GML instance reference to ol.xml static methods 2014-10-03 09:42:09 +02:00
Florent gravin
5884f7343a Call method in ol.format.GML.prototype from ol.format.GML static objects 2014-10-03 09:42:09 +02:00
Florent gravin
c49891dcce Call inner methods from 'this' object 2014-10-03 09:42:08 +02:00
Florent gravin
42b58cddbd Move all method declarations into ol.format.GML.prototype 2014-10-03 09:42:08 +02:00
Florent gravin
f5e5419cb6 Move gmlformat.js to gml/base.js 2014-10-03 09:41:59 +02:00
339 changed files with 19294 additions and 6675 deletions

3
.gitignore vendored
View File

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

View File

@@ -1,4 +1,5 @@
{
"-W030": true,
"-W083": true
"-W030": true,
"-W083": true,
"-W069": true
}

5
.npmignore Normal file
View File

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

View File

@@ -1,58 +0,0 @@
OpenLayers contributors:
* Antoine Abt
* Mike Adair
* Jeff Adams
* Seb Benthall
* Bruno Binet
* Stéphane Brunner
* Howard Butler
* Bertil Chaupis
* John Cole
* Tim Coulter
* Robert Coup
* Jeff Dege
* Roald de Wit
* Schuyler Erle
* Christian López Espínola
* John Frank
* Sean Gilles
* Pierre Giraud
* Ivan Grcic
* Andreas Hocevar
* Marc Jansen
* Ian Johnson
* Frédéric Junod
* Eric Lemoine
* Philip Lindsay
* Martijn van Oosterhout
* David Overstrom
* Tom Payne
* Corey Puffault
* Peter William Robins
* Gregers Rygg
* Tim Schaub
* Christopher Schmidt
* Tobias Schwinger
* Cameron Shorter
* Pedro Simonetti
* Paul Spencer
* Paul Smith
* Glen Stampoultzis
* James Stembridge
* Erik Uzureau
* Bart van den Eijnden
* Ivan Willig
* Thomas Wood
* Bill Woodall
* Steve Woodbridge
* David Zwarg
Some portions of OpenLayers are used under the Apache 2.0 license, available
in doc/licenses/APACHE-2.0.txt.
Some portions of OpenLayers are used under the MIT license, availabie in
doc/licenses/MIT-LICENSE.txt.
Some portions of OpenLayers are Copyright 2001 Robert Penner, and are used
under the BSD license, available in doc/licenses/BSD-LICENSE.txt

View File

@@ -42,7 +42,7 @@ as described below.
The minimum requirements are:
* Git
* [Node.js](http://nodejs.org/)
* [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)
@@ -132,7 +132,7 @@ To run the tests on the console (headless testing with PhantomJS) use the `test`
$ ./build.py test
See also the test-specific [README](../blob/master/test/README.md).
See also the test-specific [README](../master/test/README.md).
## Running the integration tests
@@ -239,6 +239,14 @@ style of the existing OpenLayers 3 code, which includes:
* Do not use assignments inside expressions.
* Avoid the use of `goog.array.clone` with arrays (use slice instead).
* Use `array.length = 0` instead of `goog.array.clear`.
* Use bracket notation instead of `goog.object.set` and `goog.object.get` (with
two arguments).
* Use uppercase for `@const` variables.
### Pass the integration tests run automatically by the Travis CI system

View File

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

View File

@@ -1,11 +1,14 @@
# OpenLayers 3
[![Travis CI Status](https://secure.travis-ci.org/openlayers/ol3.png)](http://travis-ci.org/#!/openlayers/ol3)
[![Travis CI Status](https://secure.travis-ci.org/openlayers/ol3.svg)](http://travis-ci.org/#!/openlayers/ol3)
Welcome to [OpenLayers 3](http://openlayers.org/)!
## Examples
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/).
Please don't ask questions in the github issue tracker but use [the mailing list](https://groups.google.com/forum/#!forum/ol3-dev) instead.
## Questions
Please don't ask questions in the github issue tracker but use [stackoverflow with tag openlayers](http://stackoverflow.com/questions/tagged/openlayers) or [the mailing list](https://groups.google.com/forum/#!forum/ol3-dev) instead.
## Contributing
Please see our guide on [contributing](CONTRIBUTING.md) if you're interested in getting involved.

View File

@@ -1095,7 +1095,7 @@ class BeautifulStoneSoup(Tag, SGMLParser):
p = self.tagStack[i]
if (not p or p.name == name) and not isNestable:
#Non-nestable tags get popped to the top or to their
#last occurance.
#last occurrence.
popTo = name
break
if (nestingResetTriggers != None
@@ -1242,14 +1242,14 @@ class BeautifulSoup(BeautifulStoneSoup):
* Tag nesting rules:
Most tags can't be nested at all. For instance, the occurance of
Most tags can't be nested at all. For instance, the occurrence of
a <p> tag should implicitly close the previous <p> tag.
<p>Para1<p>Para2
should be transformed into:
<p>Para1</p><p>Para2
Some tags can be nested arbitrarily. For instance, the occurance
Some tags can be nested arbitrarily. For instance, the occurrence
of a <blockquote> tag should _not_ implicitly close the previous
<blockquote> tag.

View File

@@ -140,7 +140,7 @@
console.log('Capturing ' + lenHtmlFiles + ' example screenshots.');
// The main interval function that is executed regularily and renders a
// The main interval function that is executed regularly and renders a
// page to a file
var interval = setInterval(function() {
if (!loadInProgress && pageindex < lenHtmlFiles) {

View File

@@ -32,7 +32,11 @@ class ThreadPool:
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()
@@ -146,6 +150,7 @@ SRC = [path
if path.endswith('.js')
if path not in SHADER_SRC]
NPM_INSTALL = 'build/npm-install-timestamp'
def report_sizes(t):
stringio = StringIO()
@@ -167,7 +172,8 @@ 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')
virtual('build', 'build/ol.css', 'build/ol.js', 'build/ol-debug.js',
'build/ol.js.map')
virtual('check', 'lint', 'build/ol.js', 'test')
@@ -176,18 +182,34 @@ virtual('check', 'lint', 'build/ol.js', 'test')
virtual('todo', 'fixme')
@target('build/ol.css', 'css/ol.css')
@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')
@target('build/ol.js', SRC, SHADER_SRC, 'config/ol.json')
def build_ol_new_js(t):
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-debug.js', SRC, SHADER_SRC, 'config/ol-debug.json')
@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)
@@ -236,7 +258,7 @@ def examples_examples_list_js(t):
@target('build/examples/all.combined.js', 'build/examples/all.js',
SRC, SHADER_SRC, 'config/examples-all.json')
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')
@@ -270,6 +292,7 @@ def examples_star_json(name, match):
"exports": [],
"src": [
"src/**/*.js",
"build/ol.ext/*.js",
"examples/%(id)s.js" % match.groupdict()],
"compile": {
"js": [
@@ -281,6 +304,7 @@ def examples_star_json(name, match):
"externs/bootstrap.js",
"externs/closure-compiler.js",
"externs/example.js",
"externs/fastclick.js",
"externs/geojson.js",
"externs/jquery-1.9.js",
"externs/proj4js.js",
@@ -336,14 +360,16 @@ def examples_star_json(name, match):
"api", "observable"
],
"compilation_level": "ADVANCED",
"output_wrapper": "// OpenLayers 3. See http://ol3.js.org/\n(function(){%output%})();",
"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__])
return Target(name, action=action,
dependencies=[__file__, NPM_INSTALL])
@rule(r'\Abuild/examples/(?P<id>.*).combined.js\Z')
@@ -354,11 +380,12 @@ def examples_star_combined_js(name, match):
report_sizes(t)
dependencies = [SRC, SHADER_SRC,
'examples/%(id)s.js' % match.groupdict(),
'build/examples/%(id)s.json' % match.groupdict()]
'build/examples/%(id)s.json' % match.groupdict(),
NPM_INSTALL]
return Target(name, action=action, dependencies=dependencies)
@target('serve', 'examples')
@target('serve', 'examples', NPM_INSTALL)
def serve(t):
t.run('node', 'tasks/serve.js')
@@ -376,11 +403,10 @@ def build_lint_src_timestamp(t):
t.newer(t.dependencies))
t.touch()
virtual('jshint', 'build/jshint-timestamp')
@target('build/jshint-timestamp', SRC, EXAMPLES_SRC, SPEC, TASKS,
precious=True)
NPM_INSTALL, precious=True)
def build_jshint_timestamp(t):
t.run(variables.JSHINT, '--verbose', t.newer(t.dependencies))
t.touch()
@@ -586,7 +612,8 @@ 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'))
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',
@@ -660,8 +687,11 @@ def host_examples(t):
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',
@@ -683,7 +713,7 @@ def check_examples(t):
sys.exit(1)
@target('test', phony=True)
@target('test', NPM_INSTALL, phony=True)
def test(t):
t.run('node', 'tasks/test.js')
@@ -774,7 +804,7 @@ Other less frequently used targets are:
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 seldomly called targets.
and only seldom called targets.
'''
if __name__ == '__main__':

View File

@@ -0,0 +1,12 @@
## Upgrade notes
### 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`:
```js
var selectInteraction = new ol.interaction.Select({
condition: ol.events.condition.pointerMove
// …
});
```

234
changelog/v3.1.0.md Normal file
View File

@@ -0,0 +1,234 @@
# 3.1.0
## Summary
The 3.1.0 release includes a whopping 214 merged pull requests since 3.0.0. Of note, the WebGL renderer [now supports point rendering](https://github.com/openlayers/ol3/pull/2967). You can use [UTFGrids for interaction](https://github.com/openlayers/ol3/pull/3015)! Styles can now specify [alternate geometries for rendering](https://github.com/openlayers/ol3/pull/3010). Library builds [can now be loaded](https://github.com/openlayers/ol3/pull/3039) with module loaders like Browserify or RequireJS. You can now symbolize point features with stars, squares, enneadecagons, or [any other regular(ish) polygon](https://github.com/openlayers/ol3/pull/2706). See the full list of [changes](#changes) below.
## Upgrade notes
The 3.1.0 release maintains a backwards-compatible API with the 3.0.0 release, so upgrades should be painless. Some special considerations below.
* If you are using a `ol.source.ImageStatic`, you no longer need to provide an `imageSize` option if you don't want any special scaling on your image (see [#2796](https://github.com/openlayers/ol3/pull/2796)).
* Instead of calling `obj.unByKey(key)` you can now call `ol.Observable.unByKey(key)` (see [#2794](https://github.com/openlayers/ol3/pull/2794)).
* If you were using `format.writeFeatures(features)`, note that this method returns a string for all feature formats. We considered the previous behavior a bug (see [#3003](https://github.com/openlayers/ol3/pull/3003)).
* The `obj.dispatchChangeEvent()` method is now spelled `obj.changed()`. This method is still unstable (see [#2684](https://github.com/openlayers/ol3/pull/2684)).
## Changes
* [#3076](https://github.com/openlayers/ol3/pull/3076) - Add script to standardize changelog creation. ([@tschaub](https://github.com/tschaub))
* [#3074](https://github.com/openlayers/ol3/pull/3074) - Remove misplaced function annotation. ([@fredj](https://github.com/fredj))
* [#3075](https://github.com/openlayers/ol3/pull/3075) - Remove unneeded undefined from ol.proj.ProjectionLike definitions (r=@tschaub) ([@bartvde](https://github.com/bartvde))
* [#3071](https://github.com/openlayers/ol3/pull/3071) - Add task for publishing to npm. ([@tschaub](https://github.com/tschaub))
* [#3070](https://github.com/openlayers/ol3/pull/3070) - Define goog and assign to global when generating UMD debug builds. ([@tschaub](https://github.com/tschaub))
* [#3068](https://github.com/openlayers/ol3/pull/3068) - Update pre-release version. ([@tschaub](https://github.com/tschaub))
* [#3039](https://github.com/openlayers/ol3/pull/3039) - Support for UMD builds. ([@tschaub](https://github.com/tschaub))
* [#3038](https://github.com/openlayers/ol3/pull/3038) - Update attribution CSS #2803 ([@acanimal](https://github.com/acanimal))
* [#3061](https://github.com/openlayers/ol3/pull/3061) - Add a renderBuffer option to ol.layer.Vector ([@elemoine](https://github.com/elemoine))
* [#3048](https://github.com/openlayers/ol3/pull/3048) - Add a drag-features example ([@elemoine](https://github.com/elemoine))
* [#3060](https://github.com/openlayers/ol3/pull/3060) - Update closure-library version ([@fredj](https://github.com/fredj))
* [#3058](https://github.com/openlayers/ol3/pull/3058) - Use an API function to extend the extent ([@ahocevar](https://github.com/ahocevar))
* [#3010](https://github.com/openlayers/ol3/pull/3010) - Allow styles to override feature geometries ([@ahocevar](https://github.com/ahocevar))
* [#3056](https://github.com/openlayers/ol3/pull/3056) - Reuse previousExtent_ local variable ([@fredj](https://github.com/fredj))
* [#3055](https://github.com/openlayers/ol3/pull/3055) - ol.tilecoord.createOrUpdate: add 'opt_' prefix to optional param ([@fredj](https://github.com/fredj))
* [#3044](https://github.com/openlayers/ol3/pull/3044) - Mark Image style constructor properties `@api` ([@gberaudo](https://github.com/gberaudo))
* [#3052](https://github.com/openlayers/ol3/pull/3052) - Add a testcase for parsing GML feature with only boundedBy ([@bartvde](https://github.com/bartvde))
* [#3051](https://github.com/openlayers/ol3/pull/3051) - Remove // NOCOMPILE from vector-wfs ([@elemoine](https://github.com/elemoine))
* [#2699](https://github.com/openlayers/ol3/pull/2699) - No need for featureNS and featureType to be quoted ([@bartvde](https://github.com/bartvde))
* [#3047](https://github.com/openlayers/ol3/pull/3047) - Move description above annotation to avoid JSDoc warnings. ([@tschaub](https://github.com/tschaub))
* [#2996](https://github.com/openlayers/ol3/pull/2996) - Add getter functions for points and angle in ol.style.RegularShape ([@bartvde](https://github.com/bartvde))
* [#3046](https://github.com/openlayers/ol3/pull/3046) - Need exportable constructor for constructor options in olx ([@ahocevar](https://github.com/ahocevar))
* [#3043](https://github.com/openlayers/ol3/pull/3043) - Use // NOCOMPILE for vector-wfs ([@elemoine](https://github.com/elemoine))
* [#3042](https://github.com/openlayers/ol3/pull/3042) - Print example name in check-examples exception ([@gberaudo](https://github.com/gberaudo))
* [#3032](https://github.com/openlayers/ol3/pull/3032) - Extension points for custom controls and interactions ([@elemoine](https://github.com/elemoine))
* [#3033](https://github.com/openlayers/ol3/pull/3033) - Allow custom mousemove conditions for Select interaction ([@ahocevar](https://github.com/ahocevar))
* [#3040](https://github.com/openlayers/ol3/pull/3040) - Transform the coordinates in place ([@fredj](https://github.com/fredj))
* [#3036](https://github.com/openlayers/ol3/pull/3036) - Respect geometry stride in modify interaction ([@tonio](https://github.com/tonio))
* [#3020](https://github.com/openlayers/ol3/pull/3020) - Correct error message from generate-info.js. ([@tschaub](https://github.com/tschaub))
* [#3037](https://github.com/openlayers/ol3/pull/3037) - Implement rotation for ol.style.RegularShape ([@bartvde](https://github.com/bartvde))
* [#3015](https://github.com/openlayers/ol3/pull/3015) - UTFGrid Support ([@klokantech](https://github.com/klokantech))
* [#3012](https://github.com/openlayers/ol3/pull/3012) - Failing tests in IE9 ([@bartvde](https://github.com/bartvde))
* [#3029](https://github.com/openlayers/ol3/pull/3029) - Update closure compiler and library ([@fredj](https://github.com/fredj))
* [#3031](https://github.com/openlayers/ol3/pull/3031) - Add missing maxZoom property in olx.view.FitGeometryOptions ([@fredj](https://github.com/fredj))
* [#3028](https://github.com/openlayers/ol3/pull/3028) - ol.format.WFS cleanup ([@fredj](https://github.com/fredj))
* [#3024](https://github.com/openlayers/ol3/pull/3024) - Add missing gmlFormat to olx.format.WFSOptions ([@fredj](https://github.com/fredj))
* [#3023](https://github.com/openlayers/ol3/pull/3023) - Change loader function return type ([@fredj](https://github.com/fredj))
* [#3021](https://github.com/openlayers/ol3/pull/3021) - Add missing properties in olx.control.AttributionOptions typedef ([@fredj](https://github.com/fredj))
* [#3013](https://github.com/openlayers/ol3/pull/3013) - Improve vector source clear() performance ([@gberaudo](https://github.com/gberaudo))
* [#3017](https://github.com/openlayers/ol3/pull/3017) - Use writeFeatures instead of writeFeaturesNode in GPX and KML example (r=@elemoine) ([@bartvde](https://github.com/bartvde))
* [#3014](https://github.com/openlayers/ol3/pull/3014) - Simplify hit detection code ([@elemoine](https://github.com/elemoine))
* [#3006](https://github.com/openlayers/ol3/pull/3006) - gml3.js and gml2.js don't follow file naming conventions ([@bartvde](https://github.com/bartvde))
* [#3003](https://github.com/openlayers/ol3/pull/3003) - The writeFeatures method should always return a string (r=@elemoine) ([@bartvde](https://github.com/bartvde))
* [#3011](https://github.com/openlayers/ol3/pull/3011) - opt_options may not be defined, use options ([@pagameba](https://github.com/pagameba))
* [#3009](https://github.com/openlayers/ol3/pull/3009) - Fix hit detection bug ([@elemoine](https://github.com/elemoine))
* [#3002](https://github.com/openlayers/ol3/pull/3002) - Passing options to RegularShape is mandatory ([@elemoine](https://github.com/elemoine))
* [#2967](https://github.com/openlayers/ol3/pull/2967) - Add support for drawing points with WebGL ([@camptocamp](https://github.com/camptocamp))
* [#2701](https://github.com/openlayers/ol3/pull/2701) - Writing GeoJSON does not respect the feature's geometryName ([@bartvde](https://github.com/bartvde))
* [#3000](https://github.com/openlayers/ol3/pull/3000) - Explain that return of ol.color.asArray should not be modified ([@bartvde](https://github.com/bartvde))
* [#2997](https://github.com/openlayers/ol3/pull/2997) - Use new demo GeoServer location ([@ahocevar](https://github.com/ahocevar))
* [#2976](https://github.com/openlayers/ol3/pull/2976) - Add an example to show off ol.style.RegularShape ([@bartvde](https://github.com/bartvde))
* [#2992](https://github.com/openlayers/ol3/pull/2992) - Add support for finding features at a given coordinates for vector tiles - fixes ([@pgiraud](https://github.com/pgiraud))
* [#2987](https://github.com/openlayers/ol3/pull/2987) - Image layer renderers use source projection if given and equivalent ([@kartverket](https://github.com/kartverket))
* [#2975](https://github.com/openlayers/ol3/pull/2975) - Use offsetX and offsetY if available ([@fredj](https://github.com/fredj))
* [#2973](https://github.com/openlayers/ol3/pull/2973) - Making GetTileCoordFor methods public avaible ([@s093294](https://github.com/s093294))
* [#2986](https://github.com/openlayers/ol3/pull/2986) - Add support for finding features at a given coordinates for vector tiles ([@pgiraud](https://github.com/pgiraud))
* [#2937](https://github.com/openlayers/ol3/pull/2937) - Clip layer rendering to limited extent. ([@tschaub](https://github.com/tschaub))
* [#2971](https://github.com/openlayers/ol3/pull/2971) - Two ol.source.TileVector fixes ([@elemoine](https://github.com/elemoine))
* [#2988](https://github.com/openlayers/ol3/pull/2988) - Correct olx.style.RegularShapeOptions definition (r=@elemoine) ([@bartvde](https://github.com/bartvde))
* [#2981](https://github.com/openlayers/ol3/pull/2981) - Use lineDash in ol.style.Circle's and ol.style.RegularShape's stroke (r=@fredj,@elemoine) ([@bartvde](https://github.com/bartvde))
* [#2982](https://github.com/openlayers/ol3/pull/2982) - Allow radius1 as an alias for radius in ol.style.RegularShape ([@bartvde](https://github.com/bartvde))
* [#2980](https://github.com/openlayers/ol3/pull/2980) - Export ol.source.TileVector#getFeatures in built mode ([@pgiraud](https://github.com/pgiraud))
* [#2979](https://github.com/openlayers/ol3/pull/2979) - Support OGC srs urns without an EPSG database version ([@bartvde](https://github.com/bartvde))
* [#2978](https://github.com/openlayers/ol3/pull/2978) - Fix zoom levels for the MapQuest Street layer ([@ahocevar](https://github.com/ahocevar))
* [#2889](https://github.com/openlayers/ol3/pull/2889) - Add GetFeatureInfo format ([@fgravin](https://github.com/fgravin))
* [#2965](https://github.com/openlayers/ol3/pull/2965) - Fix pan with select interaction in mousemove mode. ([@tonio](https://github.com/tonio))
* [#2960](https://github.com/openlayers/ol3/pull/2960) - LayerGroup extent should be used if extent not set on child layer ([@bartvde](https://github.com/bartvde))
* [#2956](https://github.com/openlayers/ol3/pull/2956) - Revert "Remove mousewheel event name workaround" ([@fredj](https://github.com/fredj))
* [#2959](https://github.com/openlayers/ol3/pull/2959) - Fix typo in selector ([@ahocevar](https://github.com/ahocevar))
* [#2895](https://github.com/openlayers/ol3/pull/2895) - Move font-family customization to layout.css ([@fredj](https://github.com/fredj))
* [#2896](https://github.com/openlayers/ol3/pull/2896) - Remove duplicated style parameter ([@kalinbas](https://github.com/kalinbas))
* [#2938](https://github.com/openlayers/ol3/pull/2938) - Additional image static docs. ([@tschaub](https://github.com/tschaub))
* [#2939](https://github.com/openlayers/ol3/pull/2939) - Make stability checkbox sticky. ([@tschaub](https://github.com/tschaub))
* [#2949](https://github.com/openlayers/ol3/pull/2949) - Add ol.ext to hosted dir ([@elemoine](https://github.com/elemoine))
* [#2943](https://github.com/openlayers/ol3/pull/2943) - Mark applyTransform api stable ([@fredj](https://github.com/fredj))
* [#2936](https://github.com/openlayers/ol3/pull/2936) - Fix unselection of selected features ([@ahocevar](https://github.com/ahocevar))
* [#2935](https://github.com/openlayers/ol3/pull/2935) - Fix jsdoc comment ([@geosense](https://github.com/geosense))
* [#2933](https://github.com/openlayers/ol3/pull/2933) - Fix compile warning ([@elemoine](https://github.com/elemoine))
* [#2931](https://github.com/openlayers/ol3/pull/2931) - Improvement to view docs ([@elemoine](https://github.com/elemoine))
* [#2906](https://github.com/openlayers/ol3/pull/2906) - Assume a latitude, longitude order for Polyline format ([@fredj](https://github.com/fredj))
* [#2927](https://github.com/openlayers/ol3/pull/2927) - Make it possible to programmatically finish drawing ([@elemoine](https://github.com/elemoine))
* [#2928](https://github.com/openlayers/ol3/pull/2928) - Do not rename handleMapBrowserEvent internally ([@elemoine](https://github.com/elemoine))
* [#2924](https://github.com/openlayers/ol3/pull/2924) - Readability rearangement in canvasmaprenderer.js ([@gberaudo](https://github.com/gberaudo))
* [#2911](https://github.com/openlayers/ol3/pull/2911) - List events fired in the navigation. ([@tschaub](https://github.com/tschaub))
* [#2921](https://github.com/openlayers/ol3/pull/2921) - Small feature overlay optimization ([@gberaudo](https://github.com/gberaudo))
* [#2897](https://github.com/openlayers/ol3/pull/2897) - Remove pointerup listener on controls ([@fredj](https://github.com/fredj))
* [#2912](https://github.com/openlayers/ol3/pull/2912) - jQuery externs update ([@fredj](https://github.com/fredj))
* [#2888](https://github.com/openlayers/ol3/pull/2888) - Element boundedBy must not be set as geometry field on GML reading ([@fgravin](https://github.com/fgravin))
* [#2903](https://github.com/openlayers/ol3/pull/2903) - Improved docs for icon options ([@elemoine](https://github.com/elemoine))
* [#2900](https://github.com/openlayers/ol3/pull/2900) - Allow build.js task to add header. ([@tschaub](https://github.com/tschaub))
* [#2893](https://github.com/openlayers/ol3/pull/2893) - Don't pass an object to goog.dom.createDom for the class name ([@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))
* [#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))
* [#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))
* [#2886](https://github.com/openlayers/ol3/pull/2886) - Use ternary notation ([@elemoine](https://github.com/elemoine))
* [#2869](https://github.com/openlayers/ol3/pull/2869) - Export useful xml functions ([@tonio](https://github.com/tonio))
* [#2884](https://github.com/openlayers/ol3/pull/2884) - Make WKT methods throw errors instead of calling a method that throws. ([@tschaub](https://github.com/tschaub))
* [#2746](https://github.com/openlayers/ol3/pull/2746) - Add versioning for GML format ([@fgravin](https://github.com/fgravin))
* [#2882](https://github.com/openlayers/ol3/pull/2882) - Allow olx.source.WMTSOptions#requestEncoding to be a string ([@fredj](https://github.com/fredj))
* [#2881](https://github.com/openlayers/ol3/pull/2881) - Add default requestEncoding in documentation ([@fredj](https://github.com/fredj))
* [#2877](https://github.com/openlayers/ol3/pull/2877) - Remove FIXME in src/ol/structs/rbush.js ([@fredj](https://github.com/fredj))
* [#2870](https://github.com/openlayers/ol3/pull/2870) - Use bulk-insertion for addFeatures ([@tsauerwein](https://github.com/tsauerwein))
* [#2856](https://github.com/openlayers/ol3/pull/2856) - Allow layer source to be set. ([@tschaub](https://github.com/tschaub))
* [#2875](https://github.com/openlayers/ol3/pull/2875) - Avoid modifying `map.logos_` with each frame. ([@tschaub](https://github.com/tschaub))
* [#2874](https://github.com/openlayers/ol3/pull/2874) - Avoid shrinking logos. ([@tschaub](https://github.com/tschaub))
* [#2872](https://github.com/openlayers/ol3/pull/2872) - Remove the beforepropertychange event from ol.Object ([@fredj](https://github.com/fredj))
* [#2868](https://github.com/openlayers/ol3/pull/2868) - Remove doc about dispatching events. ([@tschaub](https://github.com/tschaub))
* [#2871](https://github.com/openlayers/ol3/pull/2871) - Make `npm install` a dependency of node based targets. ([@tschaub](https://github.com/tschaub))
* [#2867](https://github.com/openlayers/ol3/pull/2867) - Support for importing CommonJS style modules (like rbush). ([@openlayers](https://github.com/openlayers))
* [#2865](https://github.com/openlayers/ol3/pull/2865) - Add old value to property change events ([@elemoine](https://github.com/elemoine))
* [#2866](https://github.com/openlayers/ol3/pull/2866) - Cluster source calls loadFeatures on vector source ([@elemoine](https://github.com/elemoine))
* [#2864](https://github.com/openlayers/ol3/pull/2864) - Avoid mixed content in Bing Maps (r=@elemoine) ([@bartvde](https://github.com/bartvde))
* [#2855](https://github.com/openlayers/ol3/pull/2855) - Move touchstart preventDefault to ol.renderer.dom.Map ([@fredj](https://github.com/fredj))
* [#2690](https://github.com/openlayers/ol3/pull/2690) - Vector rendering with the DOM renderer ([@ahocevar](https://github.com/ahocevar))
* [#2859](https://github.com/openlayers/ol3/pull/2859) - Document exportable vector source symbols. ([@tschaub](https://github.com/tschaub))
* [#2857](https://github.com/openlayers/ol3/pull/2857) - Update the OSM attribution. ([@tschaub](https://github.com/tschaub))
* [#2847](https://github.com/openlayers/ol3/pull/2847) - Constrain center in zoomify example ([@elemoine](https://github.com/elemoine))
* [#2838](https://github.com/openlayers/ol3/pull/2838) - ol.source.WMTS now passes tileClass option to ol.source.TileImage ([@mike-mcgann](https://github.com/mike-mcgann))
* [#2821](https://github.com/openlayers/ol3/pull/2821) - Add ol.geom.Polygon.fromExtent ([@elemoine](https://github.com/elemoine))
* [#2835](https://github.com/openlayers/ol3/pull/2835) - Use correct Stamen URL for SSL. ([@j16sdiz](https://github.com/j16sdiz))
* [#2839](https://github.com/openlayers/ol3/pull/2839) - Dependency updates and new package name. ([@tschaub](https://github.com/tschaub))
* [#2840](https://github.com/openlayers/ol3/pull/2840) - Fewer point resolution tests. ([@tschaub](https://github.com/tschaub))
* [#2836](https://github.com/openlayers/ol3/pull/2836) - Give priority to feature's style instead of source's style ([@oterral](https://github.com/oterral))
* [#2834](https://github.com/openlayers/ol3/pull/2834) - Use ADVANCED instead of ADVANCED_OPTIMIZATIONS ([@fredj](https://github.com/fredj))
* [#2833](https://github.com/openlayers/ol3/pull/2833) - Avoid too many files open with graceful-fs@3.0.3. ([@tschaub](https://github.com/tschaub))
* [#2829](https://github.com/openlayers/ol3/pull/2829) - Zoom slider refactor. ([@tschaub](https://github.com/tschaub))
* [#2757](https://github.com/openlayers/ol3/pull/2757) - Clear the canvas on layer extent changes. ([@tschaub](https://github.com/tschaub))
* [#2796](https://github.com/openlayers/ol3/pull/2796) - Determine image size on load. ([@tschaub](https://github.com/tschaub))
* [#2825](https://github.com/openlayers/ol3/pull/2825) - Change comments for examples_star_json build target ([@elemoine](https://github.com/elemoine))
* [#2822](https://github.com/openlayers/ol3/pull/2822) - Remove obsolete comment ([@gingerik](https://github.com/gingerik))
* [#2769](https://github.com/openlayers/ol3/pull/2769) - OverviewMap control ([@adube](https://github.com/adube))
* [#2820](https://github.com/openlayers/ol3/pull/2820) - Add parsing of LabelStyle in KML format ([@oterral](https://github.com/oterral))
* [#2819](https://github.com/openlayers/ol3/pull/2819) - Improvements to the xyz-esri-4326-512 example ([@elemoine](https://github.com/elemoine))
* [#2743](https://github.com/openlayers/ol3/pull/2743) - Handle ol.interaction.Draw activation/deactivation ([@elemoine](https://github.com/elemoine))
* [#2816](https://github.com/openlayers/ol3/pull/2816) - Exit on check-examples failure ([@gberaudo](https://github.com/gberaudo))
* [#2794](https://github.com/openlayers/ol3/pull/2794) - Add ol.Observable.unByKey ([@elemoine](https://github.com/elemoine))
* [#2815](https://github.com/openlayers/ol3/pull/2815) - Fix jquery.min.js path in xyz-esri-4326-512 example ([@fredj](https://github.com/fredj))
* [#2756](https://github.com/openlayers/ol3/pull/2756) - Add an example for using an Esri 512x512 tile server in EPSG:4326 (r=@elemoine) ([@bartvde](https://github.com/bartvde))
* [#2814](https://github.com/openlayers/ol3/pull/2814) - Add missing whitespaces in CSS calc ([@fredj](https://github.com/fredj))
* [#2811](https://github.com/openlayers/ol3/pull/2811) - Remove defaultProjection and object from typedef ([@fredj](https://github.com/fredj))
* [#2779](https://github.com/openlayers/ol3/pull/2779) - Update jQuery to 1.9.1 ([@fredj](https://github.com/fredj))
* [#2810](https://github.com/openlayers/ol3/pull/2810) - Remove unused properties from olx.source.TileVectorOptions ([@pagameba](https://github.com/pagameba))
* [#2808](https://github.com/openlayers/ol3/pull/2808) - Remove reprojectTo option from olx.source.OSMXMLOptions ([@fredj](https://github.com/fredj))
* [#2809](https://github.com/openlayers/ol3/pull/2809) - Miscellaneous controls cleanups ([@fredj](https://github.com/fredj))
* [#2805](https://github.com/openlayers/ol3/pull/2805) - Enable subclassing Interaction in public API ([@sweco-sebhar](https://github.com/sweco-sebhar))
* [#2798](https://github.com/openlayers/ol3/pull/2798) - Update closure-util to version 1.0.0 ([@fredj](https://github.com/fredj))
* [#2785](https://github.com/openlayers/ol3/pull/2785) - Use goog.* types in externs ([@ahocevar](https://github.com/ahocevar))
* [#2795](https://github.com/openlayers/ol3/pull/2795) - Externs ([@gingerik](https://github.com/gingerik))
* [#2792](https://github.com/openlayers/ol3/pull/2792) - Use valid mediatype for GPX export. ([@pgiraud](https://github.com/pgiraud))
* [#2784](https://github.com/openlayers/ol3/pull/2784) - Add 'tooltip'-tag to KML example. ([@marcjansen](https://github.com/marcjansen))
* [#2782](https://github.com/openlayers/ol3/pull/2782) - Hide the rotate control when the rotation is 0 ([@fredj](https://github.com/fredj))
* [#2774](https://github.com/openlayers/ol3/pull/2774) - Remove unused distinctFeatures object in ol.interaction.Modify#handlePointerDown ([@fredj](https://github.com/fredj))
* [#2771](https://github.com/openlayers/ol3/pull/2771) - Allow package to be published in npm registry. ([@tschaub](https://github.com/tschaub))
* [#2773](https://github.com/openlayers/ol3/pull/2773) - Type-related changes to ol.style.Image ([@elemoine](https://github.com/elemoine))
* [#2751](https://github.com/openlayers/ol3/pull/2751) - Export constructors and options of ol.source.Source children ([@gberaudo](https://github.com/gberaudo))
* [#2772](https://github.com/openlayers/ol3/pull/2772) - Rename updatefeature event to changefeature ([@fredj](https://github.com/fredj))
* [#2766](https://github.com/openlayers/ol3/pull/2766) - Make interaction "active" an ol.Object property ([@elemoine](https://github.com/elemoine))
* [#2765](https://github.com/openlayers/ol3/pull/2765) - Treat unknown opt types as Object in ol externs ([@elemoine](https://github.com/elemoine))
* [#2759](https://github.com/openlayers/ol3/pull/2759) - Fix test failures. ([@tschaub](https://github.com/tschaub))
* [#2762](https://github.com/openlayers/ol3/pull/2762) - Report test failures to the console. ([@tschaub](https://github.com/tschaub))
* [#2768](https://github.com/openlayers/ol3/pull/2768) - Write the function name correctly in the doc. ([@xamgreen](https://github.com/xamgreen))
* [#2764](https://github.com/openlayers/ol3/pull/2764) - Remove rtree example ([@fredj](https://github.com/fredj))
* [#2763](https://github.com/openlayers/ol3/pull/2763) - Miscellaneous coding style and typo fixes ([@fredj](https://github.com/fredj))
* [#2758](https://github.com/openlayers/ol3/pull/2758) - Correctly generate child tile ranges for XYZ tiles. ([@tschaub](https://github.com/tschaub))
* [#2734](https://github.com/openlayers/ol3/pull/2734) - Add maxZoom option to BingMaps ([@elemoine](https://github.com/elemoine))
* [#2752](https://github.com/openlayers/ol3/pull/2752) - Call loadFeatures from ol.source.ImageVector ([@elemoine](https://github.com/elemoine))
* [#2658](https://github.com/openlayers/ol3/pull/2658) - Set inherited values when parsing a GetCapabilities ([@oterral](https://github.com/oterral))
* [#2750](https://github.com/openlayers/ol3/pull/2750) - Export ol.layer.Base ([@fredj](https://github.com/fredj))
* [#2749](https://github.com/openlayers/ol3/pull/2749) - Export ol.source.Source ([@fredj](https://github.com/fredj))
* [#2742](https://github.com/openlayers/ol3/pull/2742) - Dispatch an 'updatefeature' from the vector source ([@fredj](https://github.com/fredj))
* [#2747](https://github.com/openlayers/ol3/pull/2747) - Fix incorrect web address. ([@lazaruslarue](https://github.com/lazaruslarue))
* [#2745](https://github.com/openlayers/ol3/pull/2745) - DragBox Interaction: getGeometry return type can be ol.geom.Polygon (r=@fredj) ([@bartvde](https://github.com/bartvde))
* [#2744](https://github.com/openlayers/ol3/pull/2744) - Fix ol.Feature 'change' event documentation ([@fredj](https://github.com/fredj))
* [#2741](https://github.com/openlayers/ol3/pull/2741) - issue with reading scientific notation coordinates in ol.format.GML (r=@fredj) ([@bartvde](https://github.com/bartvde))
* [#2739](https://github.com/openlayers/ol3/pull/2739) - Revert "Function circular renamed to createCircularOnSphere" ([@elemoine](https://github.com/elemoine))
* [#2616](https://github.com/openlayers/ol3/pull/2616) - Target for attribution links differs between maps ([@fredj](https://github.com/fredj))
* [#2740](https://github.com/openlayers/ol3/pull/2740) - Make interactions activable and deactivable ([@elemoine](https://github.com/elemoine))
* [#2727](https://github.com/openlayers/ol3/pull/2727) - Rename ol.geom.Polygon#circular to createCircularOnSphere ([@elemoine](https://github.com/elemoine))
* [#2730](https://github.com/openlayers/ol3/pull/2730) - Do not call toLowerCase when forming a change:property event ([@elemoine](https://github.com/elemoine))
* [#2728](https://github.com/openlayers/ol3/pull/2728) - Mark `ol.extent.getIntersection` as stable. ([@tschaub](https://github.com/tschaub))
* [#2726](https://github.com/openlayers/ol3/pull/2726) - Make ol.Feature#setStyle accept null ([@elemoine](https://github.com/elemoine))
* [#2724](https://github.com/openlayers/ol3/pull/2724) - Error when compiling individual example ([@fredj](https://github.com/fredj))
* [#1959](https://github.com/openlayers/ol3/pull/1959) - Add a feature box selection example ([@elemoine](https://github.com/elemoine))
* [#2722](https://github.com/openlayers/ol3/pull/2722) - Make ol.Map#setView do not accept undefined ([@elemoine](https://github.com/elemoine))
* [#2696](https://github.com/openlayers/ol3/pull/2696) - Consistent circle transform. ([@gberaudo](https://github.com/gberaudo))
* [#2717](https://github.com/openlayers/ol3/pull/2717) - Change the control visibility by using css class ([@fredj](https://github.com/fredj))
* [#2715](https://github.com/openlayers/ol3/pull/2715) - Add an EPSG:3857 map to Tissot example ([@elemoine](https://github.com/elemoine))
* [#2714](https://github.com/openlayers/ol3/pull/2714) - Set the opacity directly to element.style.opacity ([@fredj](https://github.com/fredj))
* [#2647](https://github.com/openlayers/ol3/pull/2647) - Upgrade closure library version ([@fredj](https://github.com/fredj))
* [#2549](https://github.com/openlayers/ol3/pull/2549) - Use goog.array.ASSUME_NATIVE_FUNCTIONS define ([@fredj](https://github.com/fredj))
* [#2711](https://github.com/openlayers/ol3/pull/2711) - Remove Google Maps example ([@elemoine](https://github.com/elemoine))
* [#2684](https://github.com/openlayers/ol3/pull/2684) - Rename ol.Observable#dispatchChangeEvent() to #changed() ([@ahocevar](https://github.com/ahocevar))
* [#2678](https://github.com/openlayers/ol3/pull/2678) - Mutable symbolizer properties for styles ([@ahocevar](https://github.com/ahocevar))
* [#2568](https://github.com/openlayers/ol3/pull/2568) - re-implement auto-configure code for ol.format.GML (r=@ahocevar) ([@bartvde](https://github.com/bartvde))
* [#2704](https://github.com/openlayers/ol3/pull/2704) - Use pool thread for calling bin/check-example.js. ([@gberaudo](https://github.com/gberaudo))
* [#2698](https://github.com/openlayers/ol3/pull/2698) - StaticVector is not an abstract base class ([@ahocevar](https://github.com/ahocevar))
* [#2702](https://github.com/openlayers/ol3/pull/2702) - Add vector layer in export-map example ([@fredj](https://github.com/fredj))
* [#2687](https://github.com/openlayers/ol3/pull/2687) - Use ol.LEGACY_IE_SUPPORT and ol.IS_LEGACY_IE define ([@fredj](https://github.com/fredj))
* [#2675](https://github.com/openlayers/ol3/pull/2675) - Remove undefined from ol.Map#getLayers return type ([@fredj](https://github.com/fredj))
* [#2692](https://github.com/openlayers/ol3/pull/2692) - Unset z-index in overlay example ([@fredj](https://github.com/fredj))
* [#2681](https://github.com/openlayers/ol3/pull/2681) - Make tileSize a config option for ol.source.XYZ ([@ahocevar](https://github.com/ahocevar))
* [#2534](https://github.com/openlayers/ol3/pull/2534) - Document ol.geom.Polygon#getLinearRing function ([@fredj](https://github.com/fredj))
* [#2677](https://github.com/openlayers/ol3/pull/2677) - Add TextStyle offsets getters to API. ([@gberaudo](https://github.com/gberaudo))
* [#2676](https://github.com/openlayers/ol3/pull/2676) - ol.FeatureOverlay: use the feature style if defined ([@fredj](https://github.com/fredj))
* [#2656](https://github.com/openlayers/ol3/pull/2656) - Set ol.layer.Image#getSource return type to ol.source.Image ([@fredj](https://github.com/fredj))
* [#2651](https://github.com/openlayers/ol3/pull/2651) - ol.layer.Vector.getSource return type specialisation. ([@gberaudo](https://github.com/gberaudo))
* [#2669](https://github.com/openlayers/ol3/pull/2669) - Revert "snapshot" ([@fredj](https://github.com/fredj))
* [#2663](https://github.com/openlayers/ol3/pull/2663) - Set tracking property to false on geolocation error ([@fredj](https://github.com/fredj))
* [#2662](https://github.com/openlayers/ol3/pull/2662) - Delegate transformation in ol.source.FormatVector#readFeatures to `ol.format.*` ([@gingerik](https://github.com/gingerik))
* [#2447](https://github.com/openlayers/ol3/pull/2447) - Correct documentation typo. ([@lazaruslarue](https://github.com/lazaruslarue))
* [#2660](https://github.com/openlayers/ol3/pull/2660) - New domain in the build header ([@elemoine](https://github.com/elemoine))

9
changelog/v3.1.1.md Normal file
View File

@@ -0,0 +1,9 @@
# 3.1.0
## Summary
This is a patch release to fix an issue with the select interaction in the 3.1.0 release.
## Changes
* [#3082](https://github.com/openlayers/ol3/pull/3082) - Correct arguments for forEachGeometryAtPixel. ([@tschaub](https://github.com/tschaub))

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

@@ -0,0 +1,86 @@
# 3.2.0
## 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.
## Upgrade notes
The 3.2.0 release maintains a backwards-compatible API with the 3.1.0 release, so upgrades should be painless. Some special considerations below.
* You should not call `view.setRotation` with `undefined`, to reset the view rotation to `0` then use `view.setRotation(0)` (see [#3176](https://github.com/openlayers/ol3/pull/3176)).
* If you use `$(map.getViewport()).on('mousemove')` to detect features when the mouse is hovered on the map, you should now rely on the `pointermove` map event type and check in the `pointermove` listener that the `dragging` event property is `false` (see [#3190](https://github.com/openlayers/ol3/pull/3190)).
## Changes
* [#3171](https://github.com/openlayers/ol3/pull/3171) - KML: Parsing of NetworkLink tag ([@oterral](https://github.com/oterral))
* [#3209](https://github.com/openlayers/ol3/pull/3209) - Coding style fixes ([@fredj](https://github.com/fredj))
* [#3208](https://github.com/openlayers/ol3/pull/3208) - Add setters and getters for imageLoadFunction ([@bartvde](https://github.com/bartvde))
* [#3019](https://github.com/openlayers/ol3/pull/3019) - Add option to allow Select interaction logic to select overlapping features ([@bjornharrtell](https://github.com/bjornharrtell))
* [#3206](https://github.com/openlayers/ol3/pull/3206) - Add tooltip to show measure + help message while drawing ([@pgiraud](https://github.com/pgiraud))
* [#3205](https://github.com/openlayers/ol3/pull/3205) - Use ol.extent.createOrUpdateFromCoordinate ([@fredj](https://github.com/fredj))
* [#3026](https://github.com/openlayers/ol3/pull/3026) - Add support of reading WMTS Get Cap document ([@htulipe](https://github.com/htulipe))
* [#3201](https://github.com/openlayers/ol3/pull/3201) - Pass on opt_fast to parent clear function in ol.source.ServerVector (r=@elemoine,@gberaudo) ([@bartvde](https://github.com/bartvde))
* [#3199](https://github.com/openlayers/ol3/pull/3199) - Minor jsdoc fixes ([@fredj](https://github.com/fredj))
* [#3059](https://github.com/openlayers/ol3/pull/3059) - Cache the buffered extent value ([@fredj](https://github.com/fredj))
* [#3196](https://github.com/openlayers/ol3/pull/3196) - Remove unnecessary newlines ([@fredj](https://github.com/fredj))
* [#3099](https://github.com/openlayers/ol3/pull/3099) - Fix up parsing of OGR GML with ol.format.GML ([@bartvde](https://github.com/bartvde))
* [#3195](https://github.com/openlayers/ol3/pull/3195) - Coding style ([@fredj](https://github.com/fredj))
* [#3192](https://github.com/openlayers/ol3/pull/3192) - Add "url" option to ol.source.MapQuest ([@elemoine](https://github.com/elemoine))
* [#3172](https://github.com/openlayers/ol3/pull/3172) - Introduce forEachLayerAtPixel ([@tsauerwein](https://github.com/tsauerwein))
* [#3178](https://github.com/openlayers/ol3/pull/3178) - GeoJSON externs fixes ([@fredj](https://github.com/fredj))
* [#3179](https://github.com/openlayers/ol3/pull/3179) - Disallow undefined values for ol.layer.Base ([@fredj](https://github.com/fredj))
* [#3161](https://github.com/openlayers/ol3/pull/3161) - Doc fix. writeFeaturesNode receives an array of Feature ([@3x0dv5](https://github.com/3x0dv5))
* [#3169](https://github.com/openlayers/ol3/pull/3169) - Fix default icon style in kml format ([@oterral](https://github.com/oterral))
* [#3190](https://github.com/openlayers/ol3/pull/3190) - Introduce `dragging` flag for MapBrowserEvent ([@tsauerwein](https://github.com/tsauerwein))
* [#3135](https://github.com/openlayers/ol3/pull/3135) - Make changing the label of ZoomToExtent/FullScreen control consistent ([@tsauerwein](https://github.com/tsauerwein))
* [#3186](https://github.com/openlayers/ol3/pull/3186) - Take the pixel ratio into account when clipping the layer ([@fredj](https://github.com/fredj))
* [#3183](https://github.com/openlayers/ol3/pull/3183) - Allow other params than 'mode' in example page query string. ([@htulipe](https://github.com/htulipe))
* [#2791](https://github.com/openlayers/ol3/pull/2791) - Re enable rotation button transition ([@fredj](https://github.com/fredj))
* [#3180](https://github.com/openlayers/ol3/pull/3180) - Add a getMap function to ol.FeatureOverlay (r=@ahocevar) ([@bartvde](https://github.com/bartvde))
* [#3176](https://github.com/openlayers/ol3/pull/3176) - Disallowed undefined rotation value ([@fredj](https://github.com/fredj))
* [#3177](https://github.com/openlayers/ol3/pull/3177) - Add example showing how to style polygon vertices ([@tsauerwein](https://github.com/tsauerwein))
* [#3174](https://github.com/openlayers/ol3/pull/3174) - Use view.getRotation or view.getResolution instead of view.getState ([@fredj](https://github.com/fredj))
* [#3170](https://github.com/openlayers/ol3/pull/3170) - Coding style ([@fredj](https://github.com/fredj))
* [#3108](https://github.com/openlayers/ol3/pull/3108) - Support skipping features in the WebGL renderer ([@tsauerwein](https://github.com/tsauerwein))
* [#3163](https://github.com/openlayers/ol3/pull/3163) - Use the layerStatesArray property from the frameState ([@fredj](https://github.com/fredj))
* [#3159](https://github.com/openlayers/ol3/pull/3159) - Don't pass specific options to the parent constructor ([@fredj](https://github.com/fredj))
* [#3066](https://github.com/openlayers/ol3/pull/3066) - Introduce hasFeatureAtPixel ([@tsauerwein](https://github.com/tsauerwein))
* [#3065](https://github.com/openlayers/ol3/pull/3065) - Add hit-detection support for WebGL ([@tsauerwein](https://github.com/tsauerwein))
* [#3128](https://github.com/openlayers/ol3/pull/3128) - Allow rendering of feature when download of icon failed ([@oterral](https://github.com/oterral))
* [#3156](https://github.com/openlayers/ol3/pull/3156) - Move readProjectionFrom* functions to the base classes ([@fredj](https://github.com/fredj))
* [#3107](https://github.com/openlayers/ol3/pull/3107) - Also listen on loading images ([@elemoine](https://github.com/elemoine))
* [#3153](https://github.com/openlayers/ol3/pull/3153) - Add missing GeoJSONFeature#bbox property ([@fredj](https://github.com/fredj))
* [#3154](https://github.com/openlayers/ol3/pull/3154) - Remove unnecessary newlines ([@fredj](https://github.com/fredj))
* [#3146](https://github.com/openlayers/ol3/pull/3146) - Enable tests for ol.geom.flat.reverse ([@icholy](https://github.com/icholy))
* [#3152](https://github.com/openlayers/ol3/pull/3152) - Update closure-library and closure-util version ([@fredj](https://github.com/fredj))
* [#3145](https://github.com/openlayers/ol3/pull/3145) - Add wrapX option to source.OSM and source.BingMaps ([@elemoine](https://github.com/elemoine))
* [#3139](https://github.com/openlayers/ol3/pull/3139) - Add ol.control.Control#setTarget ([@elemoine](https://github.com/elemoine))
* [#3144](https://github.com/openlayers/ol3/pull/3144) - Update CONTRIBUTING style guide with recent guidelines ([@bartvde](https://github.com/bartvde))
* [#3136](https://github.com/openlayers/ol3/pull/3136) - Use array.length = 0 instead of goog.array.clear ([@fredj](https://github.com/fredj))
* [#3140](https://github.com/openlayers/ol3/pull/3140) - Avoid use of goog.array.clone with arrays. ([@tschaub](https://github.com/tschaub))
* [#3122](https://github.com/openlayers/ol3/pull/3122) - Revert "Use offsetX and offsetY if available" ([@fredj](https://github.com/fredj))
* [#2385](https://github.com/openlayers/ol3/pull/2385) - Option to update vector layers while animating ([@ahocevar](https://github.com/ahocevar))
* [#3129](https://github.com/openlayers/ol3/pull/3129) - Only update the rbush item if the extent has changed ([@fredj](https://github.com/fredj))
* [#3117](https://github.com/openlayers/ol3/pull/3117) - Add pixelRatio support for DOM vector renderer ([@ahocevar](https://github.com/ahocevar))
* [#3124](https://github.com/openlayers/ol3/pull/3124) - Add a space between scale -value and -unit ([@sirtet](https://github.com/sirtet))
* [#3130](https://github.com/openlayers/ol3/pull/3130) - Document default value ([@fredj](https://github.com/fredj))
* [#3105](https://github.com/openlayers/ol3/pull/3105) - ol.geom.Geometry#getExtent re-factoring ([@fredj](https://github.com/fredj))
* [#3118](https://github.com/openlayers/ol3/pull/3118) - Bugfix: "Cannot read property 'firstElementChild' of null" (WFS) ([@naturalatlas](https://github.com/naturalatlas))
* [#3114](https://github.com/openlayers/ol3/pull/3114) - Specify node version in CONTRIBUTING.md ([@elemoine](https://github.com/elemoine))
* [#3106](https://github.com/openlayers/ol3/pull/3106) - Don't pass specific options to the parent constructor ([@fredj](https://github.com/fredj))
* [#3110](https://github.com/openlayers/ol3/pull/3110) - Use svg instead of png to get better image quality ([@PeterDaveHello](https://github.com/PeterDaveHello))
* [#2707](https://github.com/openlayers/ol3/pull/2707) - Generate source map of minified ol.js ([@gberaudo](https://github.com/gberaudo))
* [#3104](https://github.com/openlayers/ol3/pull/3104) - Don't pass renderBuffer option to the parent constructor ([@fredj](https://github.com/fredj))
* [#3096](https://github.com/openlayers/ol3/pull/3096) - popup example cleanup / simplification ([@fredj](https://github.com/fredj))
* [#3072](https://github.com/openlayers/ol3/pull/3072) - Optimize canvas hit detection by rendering features in a limited extent. ([@tschaub](https://github.com/tschaub))
* [#3101](https://github.com/openlayers/ol3/pull/3101) - Use bracket notation instead of goog.object functions. ([@tschaub](https://github.com/tschaub))
* [#3079](https://github.com/openlayers/ol3/pull/3079) - Exclude source files from docs. ([@tschaub](https://github.com/tschaub))
* [#3100](https://github.com/openlayers/ol3/pull/3100) - Assert that ol.layer.Tile#getPreload is always set ([@fredj](https://github.com/fredj))
* [#3084](https://github.com/openlayers/ol3/pull/3084) - Changes from the v3.1.x branch. ([@openlayers](https://github.com/openlayers))
* [#3094](https://github.com/openlayers/ol3/pull/3094) - Remove AUTHORS.md. ([@tschaub](https://github.com/tschaub))
* [#3089](https://github.com/openlayers/ol3/pull/3089) - Fixed URL link for test README ([@mike-mcgann](https://github.com/mike-mcgann))
* [#2894](https://github.com/openlayers/ol3/pull/2894) - Simplify CSS code in custom-controls example ([@fredj](https://github.com/fredj))
* [#3085](https://github.com/openlayers/ol3/pull/3085) - Fixed documentation typo for return value of ol.proj.Projection.isGlobal(). ([@mike-mcgann](https://github.com/mike-mcgann))
* [#3073](https://github.com/openlayers/ol3/pull/3073) - Make map's deviceOptions map options ([@ahocevar](https://github.com/ahocevar))

9
changelog/v3.2.1.md Normal file
View File

@@ -0,0 +1,9 @@
# 3.2.1
## Summary
This is a patch release that fixes a regression with the select interaction in the [3.2.0 release](https://github.com/openlayers/ol3/releases/tag/v3.2.0).
## Changes
* [#3236](https://github.com/openlayers/ol3/pull/3236) - Select the uppermost feature. ([@tschaub](https://github.com/tschaub))

51
changelog/v3.3.0.md Normal file
View File

@@ -0,0 +1,51 @@
## Upgrade notes
* 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`:
```js
var selectInteraction = new ol.interaction.Select({
condition: ol.events.condition.pointerMove
// …
});
```
## Overview of all changes
* [#3263](https://github.com/openlayers/ol3/pull/3263) - Support ArcGIS Rest Services ([@cwgrant](https://github.com/cwgrant))
* [#3295](https://github.com/openlayers/ol3/pull/3295) - Add RESTful to WMTS GetCapabilities optionsFromCapabilities ([@sarametz](https://github.com/sarametz))
* [#3304](https://github.com/openlayers/ol3/pull/3304) - Remove scale line inner padding ([@fredj](https://github.com/fredj))
* [#3296](https://github.com/openlayers/ol3/pull/3296) - Add upgrade-notes.md file ([@elemoine](https://github.com/elemoine))
* [#3303](https://github.com/openlayers/ol3/pull/3303) - Add constant for us-ft units ([@ahocevar](https://github.com/ahocevar))
* [#3018](https://github.com/openlayers/ol3/pull/3018) - Add SelectEvent to interaction ([@bjornharrtell](https://github.com/bjornharrtell))
* [#3301](https://github.com/openlayers/ol3/pull/3301) - Select interaction unit tests ([@bjornharrtell](https://github.com/bjornharrtell))
* [#3298](https://github.com/openlayers/ol3/pull/3298) - Make ol.source.Source inherit from ol.Object ([@fredj](https://github.com/fredj))
* [#3297](https://github.com/openlayers/ol3/pull/3297) - Add getters to ol.source.WMTS ([@fredj](https://github.com/fredj))
* [#3281](https://github.com/openlayers/ol3/pull/3281) - Fix mouseMove event type comparison for IE10-11, pointermove ([@adube](https://github.com/adube))
* [#3293](https://github.com/openlayers/ol3/pull/3293) - Add missing opacity option for ol.style.IconOptions ([@ahocevar](https://github.com/ahocevar))
* [#3284](https://github.com/openlayers/ol3/pull/3284) - Fix jsdoc type for arrays of listening keys ([@fredj](https://github.com/fredj))
* [#3278](https://github.com/openlayers/ol3/pull/3278) - Add goog.provide for ol.DrawEventType ([@elemoine](https://github.com/elemoine))
* [#3272](https://github.com/openlayers/ol3/pull/3272) - Added getter function to return the wrapped source within the cluster ([@acanimal](https://github.com/acanimal))
* [#3275](https://github.com/openlayers/ol3/pull/3275) - Add ol.layer.Heatmap#blur getter and setter ([@fredj](https://github.com/fredj))
* [#3142](https://github.com/openlayers/ol3/pull/3142) - WMTS Get Cap document with updated WMTS.optionsFromCapabilities function ([@sarametz](https://github.com/sarametz))
* [#3271](https://github.com/openlayers/ol3/pull/3271) - [wip] Fix misplaced comment blocks ([@fredj](https://github.com/fredj))
* [#3273](https://github.com/openlayers/ol3/pull/3273) - Remove unused createGetTileIfLoadedFunction function. ([@tschaub](https://github.com/tschaub))
* [#3270](https://github.com/openlayers/ol3/pull/3270) - Make ol.Overlay autoPan default to false ([@elemoine](https://github.com/elemoine))
* [#3268](https://github.com/openlayers/ol3/pull/3268) - Fix autoPan in examples with ol.Overlay on hover ([@tsauerwein](https://github.com/tsauerwein))
* [#3256](https://github.com/openlayers/ol3/pull/3256) - Add autoPan option to ol.Overlay ([@tsauerwein](https://github.com/tsauerwein))
* [#3261](https://github.com/openlayers/ol3/pull/3261) - Fix forEachCorner extent, add TopLeft ([@adube](https://github.com/adube))
* [#3260](https://github.com/openlayers/ol3/pull/3260) - Remove unused goog.require ([@fredj](https://github.com/fredj))
* [#3246](https://github.com/openlayers/ol3/pull/3246) - Avoid creating unnecessary images in tile layers. ([@tschaub](https://github.com/tschaub))
* [#3254](https://github.com/openlayers/ol3/pull/3254) - Use lineCap, lineJoin and miterLimit stroke properties in RegularShape ([@fredj](https://github.com/fredj))
* [#3252](https://github.com/openlayers/ol3/pull/3252) - Avoid leaking global listenerSpy. ([@tschaub](https://github.com/tschaub))
* [#3248](https://github.com/openlayers/ol3/pull/3248) - Add tile loading events to image tile sources. ([@tschaub](https://github.com/tschaub))
* [#3240](https://github.com/openlayers/ol3/pull/3240) - Changes from the v3.2.x branch. ([@openlayers](https://github.com/openlayers))
* [#3233](https://github.com/openlayers/ol3/pull/3233) - Four small fixes. ([@stweil](https://github.com/stweil))
* [#3232](https://github.com/openlayers/ol3/pull/3232) - Fix typos found by codespell. ([@stweil](https://github.com/stweil))
* [#3231](https://github.com/openlayers/ol3/pull/3231) - Make ol.layer.Heatmap#radius configurable ([@fredj](https://github.com/fredj))
* [#3225](https://github.com/openlayers/ol3/pull/3225) - Respect attributions passed to TileJSON source. ([@tschaub](https://github.com/tschaub))
* [#3223](https://github.com/openlayers/ol3/pull/3223) - Resize the canvas when the tile size changes. ([@tschaub](https://github.com/tschaub))
* [#3224](https://github.com/openlayers/ol3/pull/3224) - Provide the ability to get the layer name from a MapQuest source ([@bartvde](https://github.com/bartvde))
* [#3222](https://github.com/openlayers/ol3/pull/3222) - Add geodesic option for measure ([@bartvde](https://github.com/bartvde))
* [#3221](https://github.com/openlayers/ol3/pull/3221) - Select the uppermost feature ([@fredj](https://github.com/fredj))
* [#3211](https://github.com/openlayers/ol3/pull/3211) - Bing https logo fix. ([@photostu](https://github.com/photostu))
* [#3215](https://github.com/openlayers/ol3/pull/3215) - Allow reuse of layer rendering code without creating a map. ([@tschaub](https://github.com/tschaub))

View File

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

View File

@@ -2,6 +2,7 @@
"exports": [],
"src": [
"src/**/*.js",
"build/ol.ext/*.js",
"build/examples/all.js"
],
"compile": {
@@ -14,6 +15,7 @@
"externs/bootstrap.js",
"externs/closure-compiler.js",
"externs/example.js",
"externs/fastclick.js",
"externs/geojson.js",
"externs/jquery-1.9.js",
"externs/proj4js.js",
@@ -67,7 +69,8 @@
"api", "observable"
],
"compilation_level": "ADVANCED",
"output_wrapper": "// OpenLayers 3. See http://ol3js.org/\n(function(){%output%})();",
"warning_level": "VERBOSE",
"output_wrapper": "(function(){%output%})();",
"use_types_for_optimization": true,
"manage_closure_dependencies": true

View File

@@ -34,7 +34,7 @@
"cleverLinks": true,
"monospaceLinks": true,
"default": {
"outputSourceFiles": true
"outputSourceFiles": false
},
"applicationName": "OpenLayers 3"
},

View File

@@ -54,11 +54,25 @@ $(function () {
_onResize();
// show/hide unstable items
var links = $('a[href^="ol."]');
var unstable = $('.unstable');
var stabilityToggle = $('#stability-toggle');
stabilityToggle.change(function() {
unstable.toggle(!this.checked);
unstable.toggleClass('hidden', this.checked);
var search = this.checked ? '' : '?unstable=true';
links.each(function(i, el) {
this.href = this.pathname + search + this.hash;
});
if (history.replaceState) {
var url = window.location.pathname + search + window.location.hash;
history.replaceState({}, '', url);
}
return false;
});
unstable.toggle(!stabilityToggle[0].checked);
var search = window.location.search;
links.each(function(i, el) {
this.href = this.pathname + search + this.hash;
});
stabilityToggle.prop('checked', search !== '?unstable=true');
unstable.toggleClass('hidden', stabilityToggle[0].checked);
});

View File

@@ -372,7 +372,7 @@ footer {
.main .readme table ul li {
margin-bottom: 0;
}
.unstable {
.hidden {
display: none;
}
#stability {

View File

@@ -64,6 +64,23 @@ var self = this;
}
?>
</ul>
<ul class="fires itemMembers">
<?js
if (item.fires && item.fires.length) {
?>
<span class="subtitle">Fires</span>
<?js
item.fires.forEach(function (v) {
v = self.find({longname: v})[0] || {longname: v, name: v.split(/#?event:/)[1]};
?>
<li data-name="<?js= v.longname ?>" class="<?js= (v.stability != 'stable' ? 'unstable' : '') ?>">
<?js= self.linkto(v.longname, v.name) ?>
</li>
<?js
});
}
?>
</ul>
</li>
<?js }); ?>
</ul>

View File

@@ -1,3 +1,4 @@
{
"exports": ["*"]
"exports": ["*"],
"umd": true
}

View File

@@ -1,5 +1,6 @@
{
"exports": ["*"],
"umd": true,
"compile": {
"externs": [
"externs/bingmaps.js",
@@ -58,8 +59,10 @@
"api", "observable"
],
"compilation_level": "ADVANCED",
"output_wrapper": "(function(){%output%})();",
"warning_level": "VERBOSE",
"use_types_for_optimization": true,
"manage_closure_dependencies": true
"manage_closure_dependencies": true,
"create_source_map": "build/ol.js.map",
"source_map_format": "V3"
}
}

View File

@@ -21,7 +21,6 @@
font-size: 10px;
text-align: center;
margin: 1px;
padding: 0px 2px;
}
.ol-unsupported {
display: none;
@@ -53,11 +52,12 @@
.ol-rotate {
top: .5em;
right: .5em;
transition: opacity .25s;
transition: opacity .25s linear, visibility 0s linear;
}
.ol-rotate.ol-hidden {
opacity: 0;
display: none;
visibility: hidden;
transition: opacity .25s linear, visibility 0s linear .25s;
}
.ol-zoom-extent {
top: 4.643em;
@@ -99,7 +99,6 @@
}
.ol-compass {
display: block;
font-family: Arial;
font-weight: normal;
font-size: 1.2em;
}
@@ -115,81 +114,13 @@
background-color: #4c6079;
background-color: rgba(0,60,136,0.7);
}
.ol-zoom-extent button:after {
content: "E";
}
.ol-zoom .ol-zoom-in {
border-radius: 2px 2px 0 0;
}
.ol-zoom .ol-zoom-out {
border-radius: 0 0 2px 2px;
}
button.ol-full-screen-false:after {
content: "\2194";
}
button.ol-full-screen-true:after {
content: "\00d7";
}
/* invisible but not hidden */
.ol-has-tooltip [role=tooltip] {
position: absolute;
clip: rect(1px 1px 1px 1px); /* < IE8 */
clip: rect(1px, 1px, 1px, 1px);
padding: 0;
border: 0;
height: 1px;
width: 1px;
overflow: hidden;
font-weight: normal;
font-size: 14px;
text-shadow: 0 0 2px #fff;
}
/* show a tooltip offset to below and right */
.ol-has-tooltip:hover [role=tooltip], .ol-has-tooltip:focus [role=tooltip] {
-moz-box-sizing: content-box;
-webkit-box-sizing: content-box;
box-sizing: content-box;
clip: auto;
padding: 0 .4em;
font-size: .8em;
height: 1.2em;
width: auto;
line-height: 1.2em;
z-index: 1100;
max-height: 100px;
white-space: nowrap;
display: inline-block;
background: #FFF;
background: rgba(255,255,255,0.6);
color: #000;
border: 3px solid rgba(255,255,255,0);
border-left-width: 0;
border-radius: 0 4px 4px 0;
bottom: .3em;
left: 2.2em;
}
.ol-touch .ol-has-tooltip:hover [role=tooltip],
.ol-touch .ol-has-tooltip:focus [role=tooltip] {
display: none;
}
.ol-zoom .ol-has-tooltip:hover [role=tooltip],
.ol-zoom .ol-has-tooltip:focus [role=tooltip] {
top: 1.1em;
}
.ol-rotate .ol-has-tooltip:hover [role=tooltip],
.ol-rotate .ol-has-tooltip:focus [role=tooltip],
.ol-attribution .ol-has-tooltip:hover [role=tooltip],
.ol-attribution .ol-has-tooltip:focus [role=tooltip],
.ol-full-screen .ol-has-tooltip:hover [role=tooltip],
.ol-full-screen .ol-has-tooltip:focus [role=tooltip] {
right: 2.2em;
left: auto;
border-radius: 4px 0 0 4px;
border-left-width: 3px;
border-right-width: 0;
}
.ol-attribution {
text-align: right;
@@ -205,7 +136,6 @@ button.ol-full-screen-true:after {
line-height: 1.375em;
color: #000;
text-shadow: 0 0 2px #fff;
max-width: calc(100% - 3.6em);
}
.ol-attribution li {
display: inline;
@@ -217,11 +147,11 @@ button.ol-full-screen-true:after {
}
.ol-attribution img {
max-height: 2em;
max-width: inherit;
}
.ol-attribution ul, .ol-attribution button {
display: inline-block;
}
.ol-attribution:not(.ol-collapsed) button:hover [role=tooltip],
.ol-attribution.ol-collapsed ul {
display: none;
}
@@ -281,13 +211,6 @@ button.ol-full-screen-true:after {
width: 1.8em;
}
.ol-control button,
.ol-attribution,
.ol-scale-line-inner,
.ol-has-tooltip [role=tooltip] {
font-family: 'Lucida Grande',Verdana,Geneva,Lucida,Arial,Helvetica,sans-serif;
}
.ol-overviewmap {
position: absolute;
left: 0.5em;
@@ -313,7 +236,6 @@ button.ol-full-screen-true:after {
left: 2px;
position: absolute;
}
.ol-overviewmap:not(.ol-collapsed) button:hover [role=tooltip],
.ol-overviewmap.ol-collapsed .ol-overviewmap-map,
.ol-overviewmap.ol-uncollapsible button {
display: none;

View File

@@ -55,6 +55,9 @@ var map = new ol.Map({
})
],
renderer: exampleNS.getRendererFromQueryString(),
// Improve user experience by loading tiles while animating. Will make
// animations stutter on mobile or slow devices.
loadTilesWhileAnimating: true,
target: 'map',
controls: ol.control.defaults({
attributionOptions: /** @type {olx.control.AttributionOptions} */ ({

View File

@@ -0,0 +1,51 @@
<!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>Tiled ArcGIS MapServer 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">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>

28
examples/arcgis-tiled.js Normal file
View File

@@ -0,0 +1,28 @@
goog.require('ol.Map');
goog.require('ol.View');
goog.require('ol.layer.Tile');
goog.require('ol.source.MapQuest');
goog.require('ol.source.TileArcGISRest');
var url = 'http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/' +
'Specialty/ESRI_StateCityHighway_USA/MapServer';
var layers = [
new ol.layer.Tile({
source: new ol.source.MapQuest({layer: 'sat'})
}),
new ol.layer.Tile({
extent: [-13884991, 2870341, -7455066, 6338219],
source: new ol.source.TileArcGISRest({
url: url
})
})
];
var map = new ol.Map({
layers: layers,
target: 'map',
view: new ol.View({
center: [-10997148, 4569099],
zoom: 4
})
});

View File

@@ -29,6 +29,9 @@ for (i = 0, ii = styles.length; i < ii; ++i) {
var map = new ol.Map({
layers: layers,
renderer: exampleNS.getRendererFromQueryString(),
// Improve user experience by loading tiles while dragging/zooming. Will make
// zooming choppy on mobile or slow devices.
loadTilesWhileInteracting: true,
target: 'map',
view: new ol.View({
center: [-6655.5402445057125, 6709968.258934638],

View File

@@ -0,0 +1,62 @@
<!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">
<style type="text/css">
.tooltip-inner {
white-space: nowrap;
}
</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>

27
examples/button-title.js Normal file
View File

@@ -0,0 +1,27 @@
goog.require('ol.Map');
goog.require('ol.View');
goog.require('ol.layer.Tile');
goog.require('ol.source.OSM');
var map = new ol.Map({
layers: [
new ol.layer.Tile({
source: new ol.source.OSM()
})
],
renderer: exampleNS.getRendererFromQueryString(),
target: 'map',
view: new ol.View({
center: [-8730000, 5930000],
rotation: Math.PI / 5,
zoom: 8
})
});
$('.ol-zoom-in, .ol-zoom-out').tooltip({
placement: 'right'
});
$('.ol-rotate-reset, .ol-attribution button[title]').tooltip({
placement: 'left'
});

View File

@@ -10,39 +10,12 @@
<link rel="stylesheet" href="../resources/bootstrap/css/bootstrap-responsive.min.css" type="text/css">
<style type="text/css">
.rotate-north {
position: absolute;
top: 65px;
left: 8px;
background: rgba(255,255,255,0.4);
border-radius: 4px;
padding: 2px;
left: .5em;
}
.ol-touch .rotate-north {
top: 80px;
}
.rotate-north a {
display: block;
color: white;
font-size: 16px;
font-family: 'Lucida Grande',Verdana,Geneva,Lucida,Arial,Helvetica,sans-serif;
font-weight: bold;
margin: 1px;
text-decoration: none;
text-align: center;
border-radius: 2px;
height: 22px;
width: 22px;
background: rgba(0,60,136,0.5);
}
.ol-touch .rotate-north a {
font-size: 20px;
height: 30px;
width: 30px;
line-height: 26px;
}
.rotate-north a:hover {
background: rgba(0,60,136,0.7);
}
</style>
<title>ol3 custom controls example</title>
</head>

View File

@@ -29,23 +29,20 @@ app.RotateNorthControl = function(opt_options) {
var options = opt_options || {};
var anchor = document.createElement('a');
anchor.href = '#rotate-north';
anchor.innerHTML = 'N';
var button = document.createElement('button');
button.innerHTML = 'N';
var this_ = this;
var handleRotateNorth = function(e) {
// prevent #rotate-north anchor from getting appended to the url
e.preventDefault();
this_.getMap().getView().setRotation(0);
};
anchor.addEventListener('click', handleRotateNorth, false);
anchor.addEventListener('touchstart', handleRotateNorth, false);
button.addEventListener('click', handleRotateNorth, false);
button.addEventListener('touchstart', handleRotateNorth, false);
var element = document.createElement('div');
element.className = 'rotate-north ol-unselectable';
element.appendChild(anchor);
element.className = 'rotate-north ol-unselectable ol-control';
element.appendChild(button);
ol.control.Control.call(this, {
element: element,

BIN
examples/data/Butterfly.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

View File

@@ -1,374 +1,279 @@
<?xml version="1.0" encoding="UTF-8"?>
<Capabilities xmlns="http://www.opengis.net/wmts/1.0" xmlns:ows="http://www.opengis.net/ows/1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:gml="http://www.opengis.net/gml" xsi:schemaLocation="http://www.opengis.net/wmts/1.0 http://schemas.opengis.net/wmts/1.0/wmtsGetCapabilities_response.xsd" version="1.0.0">
<ows:ServiceIdentification>
<ows:Title>Web Map Tile Service</ows:Title>
<ows:ServiceType>OGC WMTS</ows:ServiceType>
<ows:ServiceTypeVersion>1.0.0</ows:ServiceTypeVersion>
<ows:Fees>none</ows:Fees>
<ows:AccessConstraints>http://data.wien.gv.at/nutzungsbedingungen</ows:AccessConstraints>
</ows:ServiceIdentification>
<ows:ServiceProvider>
<ows:ProviderName>Magistrat Wien</ows:ProviderName>
<ows:ProviderSite xlink:href="http://www.wien.gv.at"/>
<ows:ServiceContact>
<ows:IndividualName>Gerhard Sommer</ows:IndividualName>
</ows:ServiceContact>
</ows:ServiceProvider>
<ows:OperationsMetadata>
<ows:Operation name="GetCapabilities">
<ows:DCP>
<ows:HTTP>
<ows:Get xlink:href="http://maps.wien.gv.at/wmts">
<ows:Constraint name="GetEncoding">
<ows:AllowedValues>
<ows:Value>RESTful</ows:Value>
</ows:AllowedValues>
</ows:Constraint>
</ows:Get>
<ows:Get xlink:href="http://maps1.wien.gv.at/wmts">
<ows:Constraint name="GetEncoding">
<ows:AllowedValues>
<ows:Value>RESTful</ows:Value>
</ows:AllowedValues>
</ows:Constraint>
</ows:Get>
<ows:Get xlink:href="http://maps2.wien.gv.at/wmts">
<ows:Constraint name="GetEncoding">
<ows:AllowedValues>
<ows:Value>RESTful</ows:Value>
</ows:AllowedValues>
</ows:Constraint>
</ows:Get>
<ows:Get xlink:href="http://maps3.wien.gv.at/wmts">
<ows:Constraint name="GetEncoding">
<ows:AllowedValues>
<ows:Value>RESTful</ows:Value>
</ows:AllowedValues>
</ows:Constraint>
</ows:Get>
<ows:Get xlink:href="http://maps4.wien.gv.at/wmts">
<ows:Constraint name="GetEncoding">
<ows:AllowedValues>
<ows:Value>RESTful</ows:Value>
</ows:AllowedValues>
</ows:Constraint>
</ows:Get>
</ows:HTTP>
</ows:DCP>
</ows:Operation>
<ows:Operation name="GetTile">
<ows:DCP>
<ows:HTTP>
<ows:Get xlink:href="http://maps.wien.gv.at/wmts">
<ows:Constraint name="GetEncoding">
<ows:AllowedValues>
<ows:Value>RESTful</ows:Value>
</ows:AllowedValues>
</ows:Constraint>
</ows:Get>
<ows:Get xlink:href="http://maps1.wien.gv.at/wmts">
<ows:Constraint name="GetEncoding">
<ows:AllowedValues>
<ows:Value>RESTful</ows:Value>
</ows:AllowedValues>
</ows:Constraint>
</ows:Get>
<ows:Get xlink:href="http://maps2.wien.gv.at/wmts">
<ows:Constraint name="GetEncoding">
<ows:AllowedValues>
<ows:Value>RESTful</ows:Value>
</ows:AllowedValues>
</ows:Constraint>
</ows:Get>
<ows:Get xlink:href="http://maps3.wien.gv.at/wmts">
<ows:Constraint name="GetEncoding">
<ows:AllowedValues>
<ows:Value>RESTful</ows:Value>
</ows:AllowedValues>
</ows:Constraint>
</ows:Get>
<ows:Get xlink:href="http://maps4.wien.gv.at/wmts">
<ows:Constraint name="GetEncoding">
<ows:AllowedValues>
<ows:Value>RESTful</ows:Value>
</ows:AllowedValues>
</ows:Constraint>
</ows:Get>
</ows:HTTP>
</ows:DCP>
</ows:Operation>
</ows:OperationsMetadata>
<Contents>
<Layer>
<ows:Title>Luftbild</ows:Title>
<ows:WGS84BoundingBox crs="urn:ogc:def:crs:OGC:2:84">
<ows:LowerCorner>16.17 48.10</ows:LowerCorner>
<ows:UpperCorner>16.58 48.33</ows:UpperCorner>
</ows:WGS84BoundingBox>
<ows:Identifier>lb</ows:Identifier>
<Style isDefault="true">
<ows:Identifier>farbe</ows:Identifier>
</Style>
<Format>image/jpeg</Format>
<TileMatrixSetLink>
<TileMatrixSet>google3857</TileMatrixSet>
</TileMatrixSetLink>
<ResourceURL format="image/jpeg" template="http://maps1.wien.gv.at/wmts/lb/{Style}/{TileMatrixSet}/{TileMatrix}/{TileRow}/{TileCol}.jpeg" resourceType="tile"/>
<ResourceURL format="image/jpeg" template="http://maps2.wien.gv.at/wmts/lb/{Style}/{TileMatrixSet}/{TileMatrix}/{TileRow}/{TileCol}.jpeg" resourceType="tile"/>
<ResourceURL format="image/jpeg" template="http://maps3.wien.gv.at/wmts/lb/{Style}/{TileMatrixSet}/{TileMatrix}/{TileRow}/{TileCol}.jpeg" resourceType="tile"/>
<ResourceURL format="image/jpeg" template="http://maps4.wien.gv.at/wmts/lb/{Style}/{TileMatrixSet}/{TileMatrix}/{TileRow}/{TileCol}.jpeg" resourceType="tile"/>
<ResourceURL format="image/jpeg" template="http://maps.wien.gv.at/wmts/lb/{Style}/{TileMatrixSet}/{TileMatrix}/{TileRow}/{TileCol}.jpeg" resourceType="tile"/>
</Layer>
<Layer>
<ows:Title>MZK Flächen</ows:Title>
<ows:WGS84BoundingBox crs="urn:ogc:def:crs:OGC:2:84">
<ows:LowerCorner>16.17 48.10</ows:LowerCorner>
<ows:UpperCorner>16.58 48.33</ows:UpperCorner>
</ows:WGS84BoundingBox>
<ows:Identifier>fmzk</ows:Identifier>
<Style isDefault="true">
<ows:Identifier>pastell</ows:Identifier>
</Style>
<Format>image/jpeg</Format>
<TileMatrixSetLink>
<TileMatrixSet>google3857</TileMatrixSet>
</TileMatrixSetLink>
<ResourceURL format="image/jpeg" template="http://maps1.wien.gv.at/wmts/fmzk/{Style}/{TileMatrixSet}/{TileMatrix}/{TileRow}/{TileCol}.jpeg" resourceType="tile"/>
<ResourceURL format="image/jpeg" template="http://maps2.wien.gv.at/wmts/fmzk/{Style}/{TileMatrixSet}/{TileMatrix}/{TileRow}/{TileCol}.jpeg" resourceType="tile"/>
<ResourceURL format="image/jpeg" template="http://maps3.wien.gv.at/wmts/fmzk/{Style}/{TileMatrixSet}/{TileMatrix}/{TileRow}/{TileCol}.jpeg" resourceType="tile"/>
<ResourceURL format="image/jpeg" template="http://maps4.wien.gv.at/wmts/fmzk/{Style}/{TileMatrixSet}/{TileMatrix}/{TileRow}/{TileCol}.jpeg" resourceType="tile"/>
<ResourceURL format="image/jpeg" template="http://maps.wien.gv.at/wmts/fmzk/{Style}/{TileMatrixSet}/{TileMatrix}/{TileRow}/{TileCol}.jpeg" resourceType="tile"/>
</Layer>
<Layer>
<ows:Title>Flächenwidmungs- und Bebauungsplan</ows:Title>
<ows:WGS84BoundingBox crs="urn:ogc:def:crs:OGC:2:84">
<ows:LowerCorner>16.17 48.10</ows:LowerCorner>
<ows:UpperCorner>16.58 48.33</ows:UpperCorner>
</ows:WGS84BoundingBox>
<ows:Identifier>flwbplmzk</ows:Identifier>
<Style isDefault="true">
<ows:Identifier>rot</ows:Identifier>
</Style>
<Format>image/jpeg</Format>
<TileMatrixSetLink>
<TileMatrixSet>google3857</TileMatrixSet>
</TileMatrixSetLink>
<ResourceURL format="image/jpeg" template="http://maps1.wien.gv.at/wmts/flwbplmzk/{Style}/{TileMatrixSet}/{TileMatrix}/{TileRow}/{TileCol}.jpeg" resourceType="tile"/>
<ResourceURL format="image/jpeg" template="http://maps2.wien.gv.at/wmts/flwbplmzk/{Style}/{TileMatrixSet}/{TileMatrix}/{TileRow}/{TileCol}.jpeg" resourceType="tile"/>
<ResourceURL format="image/jpeg" template="http://maps3.wien.gv.at/wmts/flwbplmzk/{Style}/{TileMatrixSet}/{TileMatrix}/{TileRow}/{TileCol}.jpeg" resourceType="tile"/>
<ResourceURL format="image/jpeg" template="http://maps4.wien.gv.at/wmts/flwbplmzk/{Style}/{TileMatrixSet}/{TileMatrix}/{TileRow}/{TileCol}.jpeg" resourceType="tile"/>
<ResourceURL format="image/jpeg" template="http://maps.wien.gv.at/wmts/flwbplmzk/{Style}/{TileMatrixSet}/{TileMatrix}/{TileRow}/{TileCol}.jpeg" resourceType="tile"/>
</Layer>
<Layer>
<ows:Title>Beschriftung</ows:Title>
<ows:WGS84BoundingBox crs="urn:ogc:def:crs:OGC:2:84">
<ows:LowerCorner>16.17 48.10</ows:LowerCorner>
<ows:UpperCorner>16.58 48.33</ows:UpperCorner>
</ows:WGS84BoundingBox>
<ows:Identifier>beschriftung</ows:Identifier>
<Style isDefault="true">
<ows:Identifier>normal</ows:Identifier>
</Style>
<Format>image/png</Format>
<TileMatrixSetLink>
<TileMatrixSet>google3857</TileMatrixSet>
</TileMatrixSetLink>
<ResourceURL format="image/png" template="http://maps1.wien.gv.at/wmts/beschriftung/{Style}/{TileMatrixSet}/{TileMatrix}/{TileRow}/{TileCol}.png" resourceType="tile"/>
<ResourceURL format="image/png" template="http://maps2.wien.gv.at/wmts/beschriftung/{Style}/{TileMatrixSet}/{TileMatrix}/{TileRow}/{TileCol}.png" resourceType="tile"/>
<ResourceURL format="image/png" template="http://maps3.wien.gv.at/wmts/beschriftung/{Style}/{TileMatrixSet}/{TileMatrix}/{TileRow}/{TileCol}.png" resourceType="tile"/>
<ResourceURL format="image/png" template="http://maps4.wien.gv.at/wmts/beschriftung/{Style}/{TileMatrixSet}/{TileMatrix}/{TileRow}/{TileCol}.png" resourceType="tile"/>
<ResourceURL format="image/png" template="http://maps.wien.gv.at/wmts/beschriftung/{Style}/{TileMatrixSet}/{TileMatrix}/{TileRow}/{TileCol}.png" resourceType="tile"/>
</Layer>
<TileMatrixSet>
<!-- -180 85.05112878 -->
<ows:Identifier>google3857</ows:Identifier>
<ows:BoundingBox crs="urn:ogc:def:crs:EPSG:6.18:3:3857">
<ows:LowerCorner>1799448.394855 6124949.747770</ows:LowerCorner>
<ows:UpperCorner>1848250.442089 6162571.828177</ows:UpperCorner>
</ows:BoundingBox>
<ows:SupportedCRS>urn:ogc:def:crs:EPSG:6.18:3:3857</ows:SupportedCRS>
<WellKnownScaleSet>urn:ogc:def:wkss:OGC:1.0:GoogleMapsCompatible</WellKnownScaleSet>
<TileMatrix>
<ows:Identifier>0</ows:Identifier>
<ScaleDenominator>559082264.029</ScaleDenominator>
<TopLeftCorner>-20037508.3428 20037508.3428</TopLeftCorner>
<TileWidth>256</TileWidth>
<TileHeight>256</TileHeight>
<MatrixWidth>1</MatrixWidth>
<MatrixHeight>1</MatrixHeight>
</TileMatrix>
<TileMatrix>
<ows:Identifier>1</ows:Identifier>
<ScaleDenominator>279541132.015</ScaleDenominator>
<TopLeftCorner>-20037508.3428 20037508.3428</TopLeftCorner>
<TileWidth>256</TileWidth>
<TileHeight>256</TileHeight>
<MatrixWidth>2</MatrixWidth>
<MatrixHeight>2</MatrixHeight>
</TileMatrix>
<TileMatrix>
<ows:Identifier>2</ows:Identifier>
<ScaleDenominator>139770566.007</ScaleDenominator>
<TopLeftCorner>-20037508.3428 20037508.3428</TopLeftCorner>
<TileWidth>256</TileWidth>
<TileHeight>256</TileHeight>
<MatrixWidth>4</MatrixWidth>
<MatrixHeight>4</MatrixHeight>
</TileMatrix>
<TileMatrix>
<ows:Identifier>3</ows:Identifier>
<ScaleDenominator>69885283.0036</ScaleDenominator>
<TopLeftCorner>-20037508.3428 20037508.3428</TopLeftCorner>
<TileWidth>256</TileWidth>
<TileHeight>256</TileHeight>
<MatrixWidth>8</MatrixWidth>
<MatrixHeight>8</MatrixHeight>
</TileMatrix>
<TileMatrix>
<ows:Identifier>4</ows:Identifier>
<ScaleDenominator>34942641.5018</ScaleDenominator>
<TopLeftCorner>-20037508.3428 20037508.3428</TopLeftCorner>
<TileWidth>256</TileWidth>
<TileHeight>256</TileHeight>
<MatrixWidth>16</MatrixWidth>
<MatrixHeight>16</MatrixHeight>
</TileMatrix>
<TileMatrix>
<ows:Identifier>5</ows:Identifier>
<ScaleDenominator>17471320.7509</ScaleDenominator>
<TopLeftCorner>-20037508.3428 20037508.3428</TopLeftCorner>
<TileWidth>256</TileWidth>
<TileHeight>256</TileHeight>
<MatrixWidth>32</MatrixWidth>
<MatrixHeight>32</MatrixHeight>
</TileMatrix>
<TileMatrix>
<ows:Identifier>6</ows:Identifier>
<ScaleDenominator>8735660.37545</ScaleDenominator>
<TopLeftCorner>-20037508.3428 20037508.3428</TopLeftCorner>
<TileWidth>256</TileWidth>
<TileHeight>256</TileHeight>
<MatrixWidth>64</MatrixWidth>
<MatrixHeight>64</MatrixHeight>
</TileMatrix>
<TileMatrix>
<ows:Identifier>7</ows:Identifier>
<ScaleDenominator>4367830.18773</ScaleDenominator>
<TopLeftCorner>-20037508.3428 20037508.3428</TopLeftCorner>
<TileWidth>256</TileWidth>
<TileHeight>256</TileHeight>
<MatrixWidth>128</MatrixWidth>
<MatrixHeight>128</MatrixHeight>
</TileMatrix>
<TileMatrix>
<ows:Identifier>8</ows:Identifier>
<ScaleDenominator>2183915.09386</ScaleDenominator>
<TopLeftCorner>-20037508.3428 20037508.3428</TopLeftCorner>
<TileWidth>256</TileWidth>
<TileHeight>256</TileHeight>
<MatrixWidth>256</MatrixWidth>
<MatrixHeight>256</MatrixHeight>
</TileMatrix>
<TileMatrix>
<ows:Identifier>9</ows:Identifier>
<ScaleDenominator>1091957.54693</ScaleDenominator>
<TopLeftCorner>-20037508.3428 20037508.3428</TopLeftCorner>
<TileWidth>256</TileWidth>
<TileHeight>256</TileHeight>
<MatrixWidth>512</MatrixWidth>
<MatrixHeight>512</MatrixHeight>
</TileMatrix>
<TileMatrix>
<ows:Identifier>10</ows:Identifier>
<ScaleDenominator>545978.773466</ScaleDenominator>
<TopLeftCorner>-20037508.3428 20037508.3428</TopLeftCorner>
<TileWidth>256</TileWidth>
<TileHeight>256</TileHeight>
<MatrixWidth>1024</MatrixWidth>
<MatrixHeight>1024</MatrixHeight>
</TileMatrix>
<TileMatrix>
<ows:Identifier>11</ows:Identifier>
<ScaleDenominator>272989.386733</ScaleDenominator>
<TopLeftCorner>-20037508.3428 20037508.3428</TopLeftCorner>
<TileWidth>256</TileWidth>
<TileHeight>256</TileHeight>
<MatrixWidth>2048</MatrixWidth>
<MatrixHeight>2048</MatrixHeight>
</TileMatrix>
<TileMatrix>
<ows:Identifier>12</ows:Identifier>
<ScaleDenominator>136494.693366</ScaleDenominator>
<TopLeftCorner>-20037508.3428 20037508.3428</TopLeftCorner>
<TileWidth>256</TileWidth>
<TileHeight>256</TileHeight>
<MatrixWidth>4096</MatrixWidth>
<MatrixHeight>4096</MatrixHeight>
</TileMatrix>
<TileMatrix>
<ows:Identifier>13</ows:Identifier>
<ScaleDenominator>68247.3466832</ScaleDenominator>
<TopLeftCorner>-20037508.3428 20037508.3428</TopLeftCorner>
<TileWidth>256</TileWidth>
<TileHeight>256</TileHeight>
<MatrixWidth>8192</MatrixWidth>
<MatrixHeight>8192</MatrixHeight>
</TileMatrix>
<TileMatrix>
<ows:Identifier>14</ows:Identifier>
<ScaleDenominator>34123.6733416</ScaleDenominator>
<TopLeftCorner>-20037508.3428 20037508.3428</TopLeftCorner>
<TileWidth>256</TileWidth>
<TileHeight>256</TileHeight>
<MatrixWidth>16384</MatrixWidth>
<MatrixHeight>16384</MatrixHeight>
</TileMatrix>
<TileMatrix>
<ows:Identifier>15</ows:Identifier>
<ScaleDenominator>17061.8366708</ScaleDenominator>
<TopLeftCorner>-20037508.3428 20037508.3428</TopLeftCorner>
<TileWidth>256</TileWidth>
<TileHeight>256</TileHeight>
<MatrixWidth>32768</MatrixWidth>
<MatrixHeight>32768</MatrixHeight>
</TileMatrix>
<TileMatrix>
<ows:Identifier>16</ows:Identifier>
<ScaleDenominator>8530.91833540</ScaleDenominator>
<TopLeftCorner>-20037508.3428 20037508.3428</TopLeftCorner>
<TileWidth>256</TileWidth>
<TileHeight>256</TileHeight>
<MatrixWidth>65536</MatrixWidth>
<MatrixHeight>65536</MatrixHeight>
</TileMatrix>
<TileMatrix>
<ows:Identifier>17</ows:Identifier>
<ScaleDenominator>4265.45916770</ScaleDenominator>
<TopLeftCorner>-20037508.3428 20037508.3428</TopLeftCorner>
<TileWidth>256</TileWidth>
<TileHeight>256</TileHeight>
<MatrixWidth>131072</MatrixWidth>
<MatrixHeight>131072</MatrixHeight>
</TileMatrix>
<TileMatrix>
<ows:Identifier>18</ows:Identifier>
<ScaleDenominator>2132.72958385</ScaleDenominator>
<TopLeftCorner>-20037508.3428 20037508.3428</TopLeftCorner>
<TileWidth>256</TileWidth>
<TileHeight>256</TileHeight>
<MatrixWidth>262144</MatrixWidth>
<MatrixHeight>262144</MatrixHeight>
</TileMatrix>
<TileMatrix>
<ows:Identifier>19</ows:Identifier>
<ScaleDenominator>1066.36479193</ScaleDenominator>
<TopLeftCorner>-20037508.3428 20037508.3428</TopLeftCorner>
<TileWidth>256</TileWidth>
<TileHeight>256</TileHeight>
<MatrixWidth>524288</MatrixWidth>
<MatrixHeight>524288</MatrixHeight>
</TileMatrix>
</TileMatrixSet>
</Contents>
<ServiceMetadataURL xlink:href="http://maps.wien.gv.at/wmts/1.0.0/WMTSCapabilities.xml"/>
<Capabilities version="1.0.0" xmlns="http://www.opengis.net/wmts/1.0" xmlns:gml="http://www.opengis.net/gml" xmlns:ows="http://www.opengis.net/ows/1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/wmts/1.0 http://schemas.opengis.net/wmts/1.0/wmtsGetCapabilities_response.xsd">
<ows:ServiceIdentification>
<ows:Title>Koordinates Labs</ows:Title>
<ows:ServiceType>OGC WMTS</ows:ServiceType>
<ows:ServiceTypeVersion>1.0.0</ows:ServiceTypeVersion>
</ows:ServiceIdentification>
<ows:ServiceProvider>
<ows:ProviderName>Koordinates</ows:ProviderName>
<ows:ProviderSite xlink:href="http://labs.koordinates.com"/>
<ows:ServiceContact/>
</ows:ServiceProvider>
<ows:OperationsMetadata>
<ows:Operation name="GetCapabilities">
<ows:DCP>
<ows:HTTP>
<ows:Get xlink:href="https://labs.koordinates.com/services;key=d740ea02e0c44cafb70dce31a774ca10/wmts/1.0.0/layer/7328/WMTSCapabilities.xml?">
<ows:Constraint name="GetEncoding">
<ows:AllowedValues>
<ows:Value>KVP</ows:Value>
</ows:AllowedValues>
</ows:Constraint>
</ows:Get>
</ows:HTTP>
</ows:DCP>
</ows:Operation>
<ows:Operation name="GetFeatureInfo">
<ows:DCP>
<ows:HTTP>
<ows:Get xlink:href="https://labs.koordinates.com/services;key=d740ea02e0c44cafb70dce31a774ca10/wmts/?">
<ows:Constraint name="GetEncoding">
<ows:AllowedValues>
<ows:Value>KVP</ows:Value>
</ows:AllowedValues>
</ows:Constraint>
</ows:Get>
</ows:HTTP>
</ows:DCP>
</ows:Operation>
</ows:OperationsMetadata>
<Contents>
<Layer>
<ows:Title>New Zealand Earthquakes</ows:Title>
<ows:Abstract>Historical earthquake data, accessed via the [GeoNet WFS feed](http://info.geonet.org.nz/display/appdata/Advanced+Queries). The data has been filtered to only include quakes in proximity to New Zealand with an `eventtype` of &quot;Earthquake&quot; or &quot;none&quot; per the [GeoNet catalogue](http://info.geonet.org.nz/display/appdata/Catalogue+Output). Most fields have been removed. Please also note the excluded data per this [GeoNet page](http://info.geonet.org.nz/display/appdata/The+Gap). We acknowledge the New Zealand GeoNet project and its sponsors EQC, GNS Science and LINZ, for providing data used in this layer.</ows:Abstract>
<ows:Identifier>layer-7328</ows:Identifier>
<ows:BoundingBox crs="urn:ogc:def:crs:EPSG::3857">
<ows:LowerCorner>-20037508.342789 -6406581.708337</ows:LowerCorner>
<ows:UpperCorner>20037508.342789 -3653545.667928</ows:UpperCorner>
</ows:BoundingBox>
<ows:WGS84BoundingBox crs="urn:ogc:def:crs:OGC:2:84">
<ows:LowerCorner>-180.000000 -49.454297</ows:LowerCorner>
<ows:UpperCorner>180.000000 -31.160000</ows:UpperCorner>
</ows:WGS84BoundingBox>
<Style isDefault="true">
<ows:Title>Weighted point styles</ows:Title>
<ows:Identifier>style=39</ows:Identifier>
</Style>
<Format>image/png</Format>
<InfoFormat>application/json</InfoFormat>
<InfoFormat>text/html</InfoFormat>
<TileMatrixSetLink>
<TileMatrixSet>EPSG:3857</TileMatrixSet>
</TileMatrixSetLink>
<ResourceURL format="image/png" resourceType="tile" template="https://koordinates-tiles-a.global.ssl.fastly.net/services;key=d740ea02e0c44cafb70dce31a774ca10/tiles/v4/layer=7328,{style}/{TileMatrixSet}/{TileMatrix}/{TileCol}/{TileRow}.png"/>
<ResourceURL format="application/json" resourceType="FeatureInfo" template="https://labs.koordinates.com/services;key=d740ea02e0c44cafb70dce31a774ca10/wmts/1.0.0/layer/7328/featureinfo/{TileMatrixSet}/{TileMatrix}/{TileCol}/{TileRow}/{I}/{J}.json"/>
<ResourceURL format="text/html" resourceType="FeatureInfo" template="https://labs.koordinates.com/services;key=d740ea02e0c44cafb70dce31a774ca10/wmts/1.0.0/layer/7328/featureinfo/{TileMatrixSet}/{TileMatrix}/{TileCol}/{TileRow}/{I}/{J}.html"/>
</Layer>
<TileMatrixSet>
<ows:Title>GoogleMapsCompatible</ows:Title>
<ows:Abstract>The well-known 'GoogleMapsCompatible' tile matrix set defined by the OGC WMTS specification</ows:Abstract>
<ows:Identifier>EPSG:3857</ows:Identifier>
<ows:BoundingBox crs="urn:ogc:def:crs:EPSG::3857">
<ows:LowerCorner>-20037508.342789 -20037508.342789</ows:LowerCorner>
<ows:UpperCorner>20037508.342789 20037508.342789</ows:UpperCorner>
</ows:BoundingBox>
<ows:SupportedCRS>urn:ogc:def:crs:EPSG::3857</ows:SupportedCRS>
<WellKnownScaleSet>urn:ogc:def:wkss:OGC:1.0:GoogleMapsCompatible</WellKnownScaleSet>
<TileMatrix>
<ows:Identifier>0</ows:Identifier>
<ScaleDenominator>559082264.029</ScaleDenominator>
<TopLeftCorner>-20037508.3428 20037508.3428</TopLeftCorner>
<TileWidth>256</TileWidth>
<TileHeight>256</TileHeight>
<MatrixWidth>1</MatrixWidth>
<MatrixHeight>1</MatrixHeight>
</TileMatrix>
<TileMatrix>
<ows:Identifier>1</ows:Identifier>
<ScaleDenominator>279541132.014</ScaleDenominator>
<TopLeftCorner>-20037508.3428 20037508.3428</TopLeftCorner>
<TileWidth>256</TileWidth>
<TileHeight>256</TileHeight>
<MatrixWidth>2</MatrixWidth>
<MatrixHeight>2</MatrixHeight>
</TileMatrix>
<TileMatrix>
<ows:Identifier>2</ows:Identifier>
<ScaleDenominator>139770566.007</ScaleDenominator>
<TopLeftCorner>-20037508.3428 20037508.3428</TopLeftCorner>
<TileWidth>256</TileWidth>
<TileHeight>256</TileHeight>
<MatrixWidth>4</MatrixWidth>
<MatrixHeight>4</MatrixHeight>
</TileMatrix>
<TileMatrix>
<ows:Identifier>3</ows:Identifier>
<ScaleDenominator>69885283.0036</ScaleDenominator>
<TopLeftCorner>-20037508.3428 20037508.3428</TopLeftCorner>
<TileWidth>256</TileWidth>
<TileHeight>256</TileHeight>
<MatrixWidth>8</MatrixWidth>
<MatrixHeight>8</MatrixHeight>
</TileMatrix>
<TileMatrix>
<ows:Identifier>4</ows:Identifier>
<ScaleDenominator>34942641.5018</ScaleDenominator>
<TopLeftCorner>-20037508.3428 20037508.3428</TopLeftCorner>
<TileWidth>256</TileWidth>
<TileHeight>256</TileHeight>
<MatrixWidth>16</MatrixWidth>
<MatrixHeight>16</MatrixHeight>
</TileMatrix>
<TileMatrix>
<ows:Identifier>5</ows:Identifier>
<ScaleDenominator>17471320.7509</ScaleDenominator>
<TopLeftCorner>-20037508.3428 20037508.3428</TopLeftCorner>
<TileWidth>256</TileWidth>
<TileHeight>256</TileHeight>
<MatrixWidth>32</MatrixWidth>
<MatrixHeight>32</MatrixHeight>
</TileMatrix>
<TileMatrix>
<ows:Identifier>6</ows:Identifier>
<ScaleDenominator>8735660.37545</ScaleDenominator>
<TopLeftCorner>-20037508.3428 20037508.3428</TopLeftCorner>
<TileWidth>256</TileWidth>
<TileHeight>256</TileHeight>
<MatrixWidth>64</MatrixWidth>
<MatrixHeight>64</MatrixHeight>
</TileMatrix>
<TileMatrix>
<ows:Identifier>7</ows:Identifier>
<ScaleDenominator>4367830.18772</ScaleDenominator>
<TopLeftCorner>-20037508.3428 20037508.3428</TopLeftCorner>
<TileWidth>256</TileWidth>
<TileHeight>256</TileHeight>
<MatrixWidth>128</MatrixWidth>
<MatrixHeight>128</MatrixHeight>
</TileMatrix>
<TileMatrix>
<ows:Identifier>8</ows:Identifier>
<ScaleDenominator>2183915.09386</ScaleDenominator>
<TopLeftCorner>-20037508.3428 20037508.3428</TopLeftCorner>
<TileWidth>256</TileWidth>
<TileHeight>256</TileHeight>
<MatrixWidth>256</MatrixWidth>
<MatrixHeight>256</MatrixHeight>
</TileMatrix>
<TileMatrix>
<ows:Identifier>9</ows:Identifier>
<ScaleDenominator>1091957.54693</ScaleDenominator>
<TopLeftCorner>-20037508.3428 20037508.3428</TopLeftCorner>
<TileWidth>256</TileWidth>
<TileHeight>256</TileHeight>
<MatrixWidth>512</MatrixWidth>
<MatrixHeight>512</MatrixHeight>
</TileMatrix>
<TileMatrix>
<ows:Identifier>10</ows:Identifier>
<ScaleDenominator>545978.773466</ScaleDenominator>
<TopLeftCorner>-20037508.3428 20037508.3428</TopLeftCorner>
<TileWidth>256</TileWidth>
<TileHeight>256</TileHeight>
<MatrixWidth>1024</MatrixWidth>
<MatrixHeight>1024</MatrixHeight>
</TileMatrix>
<TileMatrix>
<ows:Identifier>11</ows:Identifier>
<ScaleDenominator>272989.386733</ScaleDenominator>
<TopLeftCorner>-20037508.3428 20037508.3428</TopLeftCorner>
<TileWidth>256</TileWidth>
<TileHeight>256</TileHeight>
<MatrixWidth>2048</MatrixWidth>
<MatrixHeight>2048</MatrixHeight>
</TileMatrix>
<TileMatrix>
<ows:Identifier>12</ows:Identifier>
<ScaleDenominator>136494.693366</ScaleDenominator>
<TopLeftCorner>-20037508.3428 20037508.3428</TopLeftCorner>
<TileWidth>256</TileWidth>
<TileHeight>256</TileHeight>
<MatrixWidth>4096</MatrixWidth>
<MatrixHeight>4096</MatrixHeight>
</TileMatrix>
<TileMatrix>
<ows:Identifier>13</ows:Identifier>
<ScaleDenominator>68247.3466832</ScaleDenominator>
<TopLeftCorner>-20037508.3428 20037508.3428</TopLeftCorner>
<TileWidth>256</TileWidth>
<TileHeight>256</TileHeight>
<MatrixWidth>8192</MatrixWidth>
<MatrixHeight>8192</MatrixHeight>
</TileMatrix>
<TileMatrix>
<ows:Identifier>14</ows:Identifier>
<ScaleDenominator>34123.6733416</ScaleDenominator>
<TopLeftCorner>-20037508.3428 20037508.3428</TopLeftCorner>
<TileWidth>256</TileWidth>
<TileHeight>256</TileHeight>
<MatrixWidth>16384</MatrixWidth>
<MatrixHeight>16384</MatrixHeight>
</TileMatrix>
<TileMatrix>
<ows:Identifier>15</ows:Identifier>
<ScaleDenominator>17061.8366708</ScaleDenominator>
<TopLeftCorner>-20037508.3428 20037508.3428</TopLeftCorner>
<TileWidth>256</TileWidth>
<TileHeight>256</TileHeight>
<MatrixWidth>32768</MatrixWidth>
<MatrixHeight>32768</MatrixHeight>
</TileMatrix>
<TileMatrix>
<ows:Identifier>16</ows:Identifier>
<ScaleDenominator>8530.9183354</ScaleDenominator>
<TopLeftCorner>-20037508.3428 20037508.3428</TopLeftCorner>
<TileWidth>256</TileWidth>
<TileHeight>256</TileHeight>
<MatrixWidth>65536</MatrixWidth>
<MatrixHeight>65536</MatrixHeight>
</TileMatrix>
<TileMatrix>
<ows:Identifier>17</ows:Identifier>
<ScaleDenominator>4265.4591677</ScaleDenominator>
<TopLeftCorner>-20037508.3428 20037508.3428</TopLeftCorner>
<TileWidth>256</TileWidth>
<TileHeight>256</TileHeight>
<MatrixWidth>131072</MatrixWidth>
<MatrixHeight>131072</MatrixHeight>
</TileMatrix>
<TileMatrix>
<ows:Identifier>18</ows:Identifier>
<ScaleDenominator>2132.72958385</ScaleDenominator>
<TopLeftCorner>-20037508.3428 20037508.3428</TopLeftCorner>
<TileWidth>256</TileWidth>
<TileHeight>256</TileHeight>
<MatrixWidth>262144</MatrixWidth>
<MatrixHeight>262144</MatrixHeight>
</TileMatrix>
<TileMatrix>
<ows:Identifier>19</ows:Identifier>
<ScaleDenominator>1066.36479192</ScaleDenominator>
<TopLeftCorner>-20037508.3428 20037508.3428</TopLeftCorner>
<TileWidth>256</TileWidth>
<TileHeight>256</TileHeight>
<MatrixWidth>524288</MatrixWidth>
<MatrixHeight>524288</MatrixHeight>
</TileMatrix>
<TileMatrix>
<ows:Identifier>20</ows:Identifier>
<ScaleDenominator>533.182395962</ScaleDenominator>
<TopLeftCorner>-20037508.3428 20037508.3428</TopLeftCorner>
<TileWidth>256</TileWidth>
<TileHeight>256</TileHeight>
<MatrixWidth>1048576</MatrixWidth>
<MatrixHeight>1048576</MatrixHeight>
</TileMatrix>
<TileMatrix>
<ows:Identifier>21</ows:Identifier>
<ScaleDenominator>266.591197981</ScaleDenominator>
<TopLeftCorner>-20037508.3428 20037508.3428</TopLeftCorner>
<TileWidth>256</TileWidth>
<TileHeight>256</TileHeight>
<MatrixWidth>2097152</MatrixWidth>
<MatrixHeight>2097152</MatrixHeight>
</TileMatrix>
</TileMatrixSet>
</Contents>
<ServiceMetadataURL xlink:href="https://labs.koordinates.com/services;key=d740ea02e0c44cafb70dce31a774ca10/wmts/1.0.0/layer/7328/WMTSCapabilities.xml"/>
</Capabilities>

View File

@@ -145,7 +145,10 @@ var displayFeatureInfo = function(pixel) {
}
};
$(map.getViewport()).on('mousemove', function(evt) {
map.on('pointermove', function(evt) {
if (evt.dragging) {
return;
}
var pixel = map.getEventPixel(evt.originalEvent);
displayFeatureInfo(pixel);
});

View File

@@ -141,7 +141,10 @@ var displayFeatureInfo = function(pixel) {
}
};
$(map.getViewport()).on('mousemove', function(evt) {
map.on('pointermove', function(evt) {
if (evt.dragging) {
return;
}
var pixel = map.getEventPixel(evt.originalEvent);
displayFeatureInfo(pixel);
});

View File

@@ -0,0 +1,51 @@
<!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>Drag features 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">Drag features example</h4>
<p id="shortdesc">Example of a drag features interaction.</p>
<div id="docs">
<p>See the <a href="drag-features.js" target="_blank">drag-features.js source</a> to see how this is done.</p>
</div>
<div id="tags">drag, feature, vector, editing</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=drag-features" type="text/javascript"></script>
</body>
</html>

192
examples/drag-features.js Normal file
View File

@@ -0,0 +1,192 @@
goog.require('ol.Feature');
goog.require('ol.Map');
goog.require('ol.View');
goog.require('ol.geom.LineString');
goog.require('ol.geom.Point');
goog.require('ol.geom.Polygon');
goog.require('ol.interaction');
goog.require('ol.interaction.Pointer');
goog.require('ol.layer.Tile');
goog.require('ol.layer.Vector');
goog.require('ol.source.TileJSON');
goog.require('ol.source.Vector');
goog.require('ol.style.Fill');
goog.require('ol.style.Icon');
goog.require('ol.style.Stroke');
goog.require('ol.style.Style');
/**
* Define a namespace for the application.
*/
window.app = {};
var app = window.app;
/**
* @constructor
* @extends {ol.interaction.Pointer}
*/
app.Drag = function() {
ol.interaction.Pointer.call(this, {
handleDownEvent: app.Drag.prototype.handleDownEvent,
handleDragEvent: app.Drag.prototype.handleDragEvent,
handleMoveEvent: app.Drag.prototype.handleMoveEvent,
handleUpEvent: app.Drag.prototype.handleUpEvent
});
/**
* @type {ol.Pixel}
* @private
*/
this.coordinate_ = null;
/**
* @type {string|undefined}
* @private
*/
this.cursor_ = 'pointer';
/**
* @type {ol.Feature}
* @private
*/
this.feature_ = null;
/**
* @type {string|undefined}
* @private
*/
this.previousCursor_ = undefined;
};
ol.inherits(app.Drag, ol.interaction.Pointer);
/**
* @param {ol.MapBrowserEvent} evt Map browser event.
* @return {boolean} `true` to start the drag sequence.
*/
app.Drag.prototype.handleDownEvent = function(evt) {
var map = evt.map;
var feature = map.forEachFeatureAtPixel(evt.pixel,
function(feature, layer) {
return feature;
});
if (feature) {
this.coordinate_ = evt.coordinate;
this.feature_ = feature;
}
return !!feature;
};
/**
* @param {ol.MapBrowserEvent} evt Map browser event.
*/
app.Drag.prototype.handleDragEvent = function(evt) {
var map = evt.map;
var feature = map.forEachFeatureAtPixel(evt.pixel,
function(feature, layer) {
return feature;
});
var deltaX = evt.coordinate[0] - this.coordinate_[0];
var deltaY = evt.coordinate[1] - this.coordinate_[1];
var geometry = /** @type {ol.geom.SimpleGeometry} */
(this.feature_.getGeometry());
geometry.translate(deltaX, deltaY);
this.coordinate_[0] = evt.coordinate[0];
this.coordinate_[1] = evt.coordinate[1];
};
/**
* @param {ol.MapBrowserEvent} evt Event.
*/
app.Drag.prototype.handleMoveEvent = function(evt) {
if (this.cursor_) {
var map = evt.map;
var feature = map.forEachFeatureAtPixel(evt.pixel,
function(feature, layer) {
return feature;
});
var element = evt.map.getTargetElement();
if (feature) {
if (element.style.cursor != this.cursor_) {
this.previousCursor_ = element.style.cursor;
element.style.cursor = this.cursor_;
}
} else if (this.previousCursor_ !== undefined) {
element.style.cursor = this.previousCursor_;
this.previousCursor_ = undefined;
}
}
};
/**
* @param {ol.MapBrowserEvent} evt Map browser event.
* @return {boolean} `false` to stop the drag sequence.
*/
app.Drag.prototype.handleUpEvent = function(evt) {
this.coordinate_ = null;
this.feature_ = null;
return false;
};
var pointFeature = new ol.Feature(new ol.geom.Point([0, 0]));
var lineFeature = new ol.Feature(
new ol.geom.LineString([[-1e7, 1e6], [-1e6, 3e6]]));
var polygonFeature = new ol.Feature(
new ol.geom.Polygon([[[-3e6, -1e6], [-3e6, 1e6],
[-1e6, 1e6], [-1e6, -1e6], [-3e6, -1e6]]]));
var map = new ol.Map({
interactions: ol.interaction.defaults().extend([new app.Drag()]),
layers: [
new ol.layer.Tile({
source: new ol.source.TileJSON({
url: 'http://api.tiles.mapbox.com/v3/mapbox.geography-class.jsonp'
})
}),
new ol.layer.Vector({
source: new ol.source.Vector({
features: [pointFeature, lineFeature, polygonFeature]
}),
style: new ol.style.Style({
image: new ol.style.Icon(/** @type {olx.style.IconOptions} */ ({
anchor: [0.5, 46],
anchorXUnits: 'fraction',
anchorYUnits: 'pixels',
opacity: 0.95,
src: 'data/icon.png'
})),
stroke: new ol.style.Stroke({
width: 3,
color: [255, 0, 0, 1]
}),
fill: new ol.style.Fill({
color: [0, 0, 255, 0.6]
})
})
})
],
target: 'map',
view: new ol.View({
center: [0, 0],
zoom: 2
})
});

View File

@@ -38,6 +38,7 @@ var vector = new ol.layer.Vector({
var map = new ol.Map({
layers: [raster, vector],
renderer: exampleNS.getRendererFromQueryString(),
target: 'map',
view: new ol.View({
center: [-11000000, 4600000],

View File

@@ -1,11 +1,14 @@
goog.require('ol.Feature');
goog.require('ol.Map');
goog.require('ol.View');
goog.require('ol.geom.MultiPoint');
goog.require('ol.geom.Point');
goog.require('ol.layer.Tile');
goog.require('ol.source.MapQuest');
goog.require('ol.style.Circle');
goog.require('ol.style.Fill');
goog.require('ol.style.Stroke');
goog.require('ol.style.Style');
var map = new ol.Map({
@@ -14,6 +17,7 @@ var map = new ol.Map({
source: new ol.source.MapQuest({layer: 'sat'})
})
],
renderer: exampleNS.getRendererFromQueryString(),
target: 'map',
view: new ol.View({
center: [0, 0],
@@ -28,6 +32,20 @@ var imageStyle = new ol.style.Circle({
stroke: new ol.style.Stroke({color: 'red', width: 1})
});
var headInnerImageStyle = new ol.style.Style({
image: new ol.style.Circle({
radius: 2,
snapToPixel: false,
fill: new ol.style.Fill({color: 'blue'})
})
});
var headOuterImageStyle = new ol.style.Circle({
radius: 5,
snapToPixel: false,
fill: new ol.style.Fill({color: 'black'})
});
var n = 200;
var omegaTheta = 30000; // Rotation period in ms
var R = 7e6;
@@ -48,6 +66,14 @@ map.on('postcompose', function(event) {
vectorContext.setImageStyle(imageStyle);
vectorContext.drawMultiPointGeometry(
new ol.geom.MultiPoint(coordinates), null);
var headPoint = new ol.geom.Point(coordinates[coordinates.length - 1]);
var headFeature = new ol.Feature(headPoint);
vectorContext.drawFeature(headFeature, headInnerImageStyle);
vectorContext.setImageStyle(headOuterImageStyle);
vectorContext.drawMultiPointGeometry(headPoint, null);
map.render();
});
map.render();

View File

@@ -0,0 +1,75 @@
<!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>Earthquake Clusters</title>
<style>
#map {
position: relative;
}
#info {
position: absolute;
height: 1px;
width: 1px;
z-index: 100;
}
.tooltip.in {
opacity: 1;
filter: alpha(opacity=100);
}
.tooltip.top .tooltip-arrow {
border-top-color: white;
}
.tooltip-inner {
border: 2px solid white;
}
</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>
</div>
<div class="row-fluid">
<div class="span12">
<h4 id="title">Earthquake Clusters</h4>
<p id="shortdesc">Demonstrates the use of style geometries to render source features of a cluster.</p>
<div id="docs">
<p>
This example parses a KML file and renders the features as clusters on a vector layer. The styling in this example is quite involved. Single earthquake locations (rendered as stars) have a size relative to their magnitude. Clusters have an opacity relative to the number of features in the cluster, and a size that represents the extent of the features that make up the cluster. When clicking or hovering on a cluster, the individual features that make up the cluster will be shown.
</p>
<p>To achieve this, we make heavy use of style functions and <code>ol.style.Style#geometry</code>. See the <a href="earthquake-clusters.js" target="_blank">earthquake-clusters.js source</a> to see how this is done.</p>
</div>
<div id="tags">KML, vector, style, geometry, cluster</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=earthquake-clusters" type="text/javascript"></script>
</body>
</html>

View File

@@ -0,0 +1,154 @@
goog.require('ol.Map');
goog.require('ol.View');
goog.require('ol.extent');
goog.require('ol.interaction');
goog.require('ol.interaction.Select');
goog.require('ol.layer.Tile');
goog.require('ol.layer.Vector');
goog.require('ol.source.Cluster');
goog.require('ol.source.KML');
goog.require('ol.source.Stamen');
goog.require('ol.style.Circle');
goog.require('ol.style.Fill');
goog.require('ol.style.RegularShape');
goog.require('ol.style.Stroke');
goog.require('ol.style.Style');
goog.require('ol.style.Text');
var earthquakeFill = new ol.style.Fill({
color: 'rgba(255, 153, 0, 0.8)'
});
var earthquakeStroke = new ol.style.Stroke({
color: 'rgba(255, 204, 0, 0.2)',
width: 1
});
var textFill = new ol.style.Fill({
color: '#fff'
});
var textStroke = new ol.style.Stroke({
color: 'rgba(0, 0, 0, 0.6)',
width: 3
});
var invisibleFill = new ol.style.Fill({
color: 'rgba(255, 255, 255, 0.01)'
});
function createEarthquakeStyle(feature) {
// 2012_Earthquakes_Mag5.kml stores the magnitude of each earthquake in a
// standards-violating <magnitude> tag in each Placemark. We extract it
// from the Placemark's name instead.
var name = feature.get('name');
var magnitude = parseFloat(name.substr(2));
var radius = 5 + 20 * (magnitude - 5);
return new ol.style.Style({
geometry: feature.getGeometry(),
image: new ol.style.RegularShape({
radius1: radius,
radius2: 3,
points: 5,
angle: Math.PI,
fill: earthquakeFill,
stroke: earthquakeStroke
})
});
}
var maxFeatureCount;
function calculateClusterInfo(resolution) {
maxFeatureCount = 0;
var features = vector.getSource().getFeatures();
var feature, radius;
for (var i = features.length - 1; i >= 0; --i) {
feature = features[i];
var originalFeatures = feature.get('features');
var extent = ol.extent.createEmpty();
for (var j = 0, jj = originalFeatures.length; j < jj; ++j) {
ol.extent.extend(extent, originalFeatures[j].getGeometry().getExtent());
}
maxFeatureCount = Math.max(maxFeatureCount, jj);
radius = 0.25 * (ol.extent.getWidth(extent) + ol.extent.getHeight(extent)) /
resolution;
feature.set('radius', radius);
}
}
var currentResolution;
function styleFunction(feature, resolution) {
if (resolution != currentResolution) {
calculateClusterInfo(resolution);
currentResolution = resolution;
}
var style;
var size = feature.get('features').length;
if (size > 1) {
style = [new ol.style.Style({
image: new ol.style.Circle({
radius: feature.get('radius'),
fill: new ol.style.Fill({
color: [255, 153, 0, Math.min(0.8, 0.4 + (size / maxFeatureCount))]
})
}),
text: new ol.style.Text({
text: size.toString(),
fill: textFill,
stroke: textStroke
})
})];
} else {
var originalFeature = feature.get('features')[0];
style = [createEarthquakeStyle(originalFeature)];
}
return style;
}
function selectStyleFunction(feature, resolution) {
var styles = [new ol.style.Style({
image: new ol.style.Circle({
radius: feature.get('radius'),
fill: invisibleFill
})
})];
var originalFeatures = feature.get('features');
var originalFeature;
for (var i = originalFeatures.length - 1; i >= 0; --i) {
originalFeature = originalFeatures[i];
styles.push(createEarthquakeStyle(originalFeature));
}
return styles;
}
var vector = new ol.layer.Vector({
source: new ol.source.Cluster({
distance: 40,
source: new ol.source.KML({
extractStyles: false,
projection: 'EPSG:3857',
url: 'data/kml/2012_Earthquakes_Mag5.kml'
})
}),
style: styleFunction
});
var raster = new ol.layer.Tile({
source: new ol.source.Stamen({
layer: 'toner'
})
});
var map = new ol.Map({
layers: [raster, vector],
interactions: ol.interaction.defaults().extend([new ol.interaction.Select({
condition: function(evt) {
return evt.originalEvent.type == 'mousemove' ||
evt.type == 'singleclick';
},
style: selectStyleFunction
})]),
target: 'map',
view: new ol.View({
center: [0, 0],
zoom: 2
})
});

View File

@@ -9,7 +9,7 @@ goog.require('ol.source.TileWMS');
var layers = [
new ol.layer.Tile({
source: new ol.source.TileWMS({
url: 'http://demo.opengeo.org/geoserver/wms',
url: 'http://demo.boundlessgeo.com/geoserver/wms',
params: {
'LAYERS': 'ne:NE1_HR_LC_SR_W_DR'
}

View File

@@ -35,9 +35,11 @@
<h4 id="title">GetFeatureInfo example (image layer)</h4>
<p id="shortdesc">This example shows how to trigger WMS GetFeatureInfo requests on click for a WMS image layer.</p>
<div id="docs">
<p>Additionally <code>map.forEachLayerAtPixel</code> is used to change the mouse
pointer when hovering a non-transparent pixel on the map.</p>
<p>See the <a href="getfeatureinfo-image.js" target="_blank">getfeatureinfo-image.js source</a> to see how this is done.</p>
</div>
<div id="tags">getfeatureinfo</div>
<div id="tags">getfeatureinfo, forEachLayerAtPixel</div>
</div>
<div class="span4 offset4">
<div id="info" class="alert alert-success">

View File

@@ -5,9 +5,10 @@ goog.require('ol.source.ImageWMS');
var wmsSource = new ol.source.ImageWMS({
url: 'http://demo.opengeo.org/geoserver/wms',
url: 'http://demo.boundlessgeo.com/geoserver/wms',
params: {'LAYERS': 'ne:ne'},
serverType: 'geoserver'
serverType: 'geoserver',
crossOrigin: ''
});
var wmsLayer = new ol.layer.Image({
@@ -20,6 +21,7 @@ var view = new ol.View({
});
var map = new ol.Map({
renderer: exampleNS.getRendererFromQueryString(),
layers: [wmsLayer],
target: 'map',
view: view
@@ -36,3 +38,14 @@ map.on('singleclick', function(evt) {
'<iframe seamless src="' + url + '"></iframe>';
}
});
map.on('pointermove', function(evt) {
if (evt.dragging) {
return;
}
var pixel = map.getEventPixel(evt.originalEvent);
var hit = map.forEachLayerAtPixel(pixel, function(layer) {
return true;
});
map.getTargetElement().style.cursor = hit ? 'pointer' : '';
});

View File

@@ -35,9 +35,11 @@
<h4 id="title">WMS GetFeatureInfo example (tile layer)</h4>
<p id="shortdesc">This example shows how to trigger WMS GetFeatureInfo requests on click for a WMS tile layer.</p>
<div id="docs">
<p>Additionally <code>map.forEachLayerAtPixel</code> is used to change the mouse
pointer when hovering a non-transparent pixel on the map.</p>
<p>See the <a href="getfeatureinfo-tile.js" target="_blank">getfeatureinfo-tile.js source</a> to see how this is done.</p>
</div>
<div id="tags">getfeatureinfo</div>
<div id="tags">getfeatureinfo, forEachLayerAtPixel</div>
</div>
<div class="span4 offset4">
<div id="info" class="alert alert-success">

View File

@@ -5,9 +5,10 @@ goog.require('ol.source.TileWMS');
var wmsSource = new ol.source.TileWMS({
url: 'http://demo.opengeo.org/geoserver/wms',
url: 'http://demo.boundlessgeo.com/geoserver/wms',
params: {'LAYERS': 'ne:ne'},
serverType: 'geoserver'
serverType: 'geoserver',
crossOrigin: ''
});
var wmsLayer = new ol.layer.Tile({
@@ -20,6 +21,7 @@ var view = new ol.View({
});
var map = new ol.Map({
renderer: exampleNS.getRendererFromQueryString(),
layers: [wmsLayer],
target: 'map',
view: view
@@ -36,3 +38,14 @@ map.on('singleclick', function(evt) {
'<iframe seamless src="' + url + '"></iframe>';
}
});
map.on('pointermove', function(evt) {
if (evt.dragging) {
return;
}
var pixel = map.getEventPixel(evt.originalEvent);
var hit = map.forEachLayerAtPixel(pixel, function(layer) {
return true;
});
map.getTargetElement().style.cursor = hit ? 'pointer' : '';
});

View File

@@ -85,7 +85,10 @@ var displayFeatureInfo = function(pixel) {
}
};
$(map.getViewport()).on('mousemove', function(evt) {
map.on('pointermove', function(evt) {
if (evt.dragging) {
return;
}
var pixel = map.getEventPixel(evt.originalEvent);
displayFeatureInfo(pixel);
});
@@ -105,9 +108,7 @@ if ('download' in exportGPXElement) {
clone.getGeometry().transform(projection, 'EPSG:4326');
features.push(clone);
});
var node = new ol.format.GPX().writeFeatures(features);
var string = new XMLSerializer().serializeToString(
/** @type {Node} */ (node));
var string = new ol.format.GPX().writeFeatures(features);
var base64 = exampleNS.strToBase64(string);
exportGPXElement.href =
'data:text/gpx+xml;base64,' + base64;

View File

@@ -29,7 +29,7 @@
<div class="row-fluid">
<div class="span12">
<div class="span8">
<h4 id="title">Earthquakes heatmap</h4>
<p id="shortdesc">Demonstrates the use of a heatmap layer.</p>
<div id="docs">
@@ -40,8 +40,17 @@
</div>
<div id="tags">heatmap, kml, vector, style</div>
</div>
</div>
<div class="span4">
<form>
<label>radius size</label>
<input id="radius" type="range" min="1" max="50" step="1" value="5"/>
<label>blur size</label>
<input id="blur" type="range" min="1" max="50" step="1" value="15"/>
</form>
</div>
</div>
</div>
<script src="../resources/jquery.min.js" type="text/javascript"></script>

View File

@@ -5,6 +5,8 @@ goog.require('ol.layer.Tile');
goog.require('ol.source.KML');
goog.require('ol.source.Stamen');
var blur = $('#blur');
var radius = $('#radius');
var vector = new ol.layer.Heatmap({
source: new ol.source.KML({
@@ -12,7 +14,8 @@ var vector = new ol.layer.Heatmap({
projection: 'EPSG:3857',
url: 'data/kml/2012_Earthquakes_Mag5.kml'
}),
radius: 5
blur: parseInt(blur.val(), 10),
radius: parseInt(radius.val(), 10)
});
vector.getSource().on('addfeature', function(event) {
@@ -38,3 +41,12 @@ var map = new ol.Map({
zoom: 2
})
});
blur.on('input', function() {
vector.setBlur(parseInt(blur.val(), 10));
});
radius.on('input', function() {
vector.setRadius(parseInt(radius.val(), 10));
});

View File

@@ -0,0 +1,58 @@
<!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>Icon sprites with WebGL 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="span8">
<h4 id="title">Icon sprite with WebGL example</h4>
<p id="shortdesc">Icon sprite with WebGL.</p>
<div id="docs">
<p>See the <a href="icon-sprite-webgl.js" target="_blank">icon-sprite-webgl.js source</a> to see how this is done.</p>
<p>In this example a sprite image is used for the icon styles. Using a sprite is required to get good performance with WebGL.</p>
</div>
<div id="tags">webgl, icon, sprite, vector, point</div>
</div>
<div class="span2 offset2">
<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/bootstrap/js/bootstrap.min.js" type="text/javascript"></script>
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
<script src="loader.js?id=icon-sprite-webgl" type="text/javascript"></script>
</body>
</html>

View File

@@ -0,0 +1,142 @@
goog.require('ol.Feature');
goog.require('ol.FeatureOverlay');
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.Icon');
goog.require('ol.style.Style');
var iconInfo = [{
offset: [0, 0],
opacity: 1.0,
rotateWithView: true,
rotation: 0.0,
scale: 1.0,
size: [55, 55]
}, {
offset: [110, 86],
opacity: 0.75,
rotateWithView: false,
rotation: Math.PI / 2.0,
scale: 1.25,
size: [55, 55]
}, {
offset: [55, 0],
opacity: 0.5,
rotateWithView: true,
rotation: Math.PI / 3.0,
scale: 1.5,
size: [55, 86]
}, {
offset: [212, 0],
opacity: 1.0,
rotateWithView: true,
rotation: 0.0,
scale: 1.0,
size: [44, 44]
}];
var i;
var iconCount = iconInfo.length;
var icons = new Array(iconCount);
for (i = 0; i < iconCount; ++i) {
var info = iconInfo[i];
icons[i] = new ol.style.Icon({
offset: info.offset,
opacity: info.opacity,
rotateWithView: info.rotateWithView,
rotation: info.rotation,
scale: info.scale,
size: info.size,
src: 'data/Butterfly.png'
});
}
var featureCount = 50000;
var features = new Array(featureCount);
var feature, geometry;
var e = 25000000;
for (i = 0; i < featureCount; ++i) {
geometry = new ol.geom.Point(
[2 * e * Math.random() - e, 2 * e * Math.random() - e]);
feature = new ol.Feature(geometry);
feature.setStyle(
new ol.style.Style({
image: icons[i % (iconCount - 1)]
})
);
features[i] = feature;
}
var vectorSource = new ol.source.Vector({
features: features
});
var vector = new ol.layer.Vector({
source: vectorSource
});
// Use the "webgl" renderer by default.
var renderer = exampleNS.getRendererFromQueryString();
if (!renderer) {
renderer = 'webgl';
}
var map = new ol.Map({
renderer: renderer,
layers: [vector],
target: document.getElementById('map'),
view: new ol.View({
center: [0, 0],
zoom: 5
})
});
var overlayFeatures = [];
for (i = 0; i < featureCount; i += 30) {
var clone = features[i].clone();
clone.setStyle(null);
overlayFeatures.push(clone);
}
var featureOverlay = new ol.FeatureOverlay({
map: map,
style: new ol.style.Style({
image: icons[iconCount - 1]
}),
features: overlayFeatures
});
map.on('click', function(evt) {
var info = document.getElementById('info');
info.innerHTML =
'Hold on a second, while I catch those butterflies for you ...';
window.setTimeout(function() {
var features = [];
map.forEachFeatureAtPixel(evt.pixel, function(feature, layer) {
features.push(features);
return false;
});
if (features.length === 1) {
info.innerHTML = 'Got one butterfly';
} else if (features.length > 1) {
info.innerHTML = 'Got ' + features.length + ' butterflies';
} else {
info.innerHTML = 'Couldn\'t catch a single butterfly';
}
}, 1);
});
map.on('pointermove', function(evt) {
if (evt.dragging) {
return;
}
var pixel = map.getEventPixel(evt.originalEvent);
var hit = map.hasFeatureAtPixel(pixel);
map.getTarget().style.cursor = hit ? 'pointer' : '';
});

View File

@@ -40,11 +40,13 @@ var vectorLayer = new ol.layer.Vector({
var rasterLayer = new ol.layer.Tile({
source: new ol.source.TileJSON({
url: 'http://api.tiles.mapbox.com/v3/mapbox.geography-class.jsonp'
url: 'http://api.tiles.mapbox.com/v3/mapbox.geography-class.jsonp',
crossOrigin: ''
})
});
var map = new ol.Map({
renderer: exampleNS.getRendererFromQueryString(),
layers: [rasterLayer, vectorLayer],
target: document.getElementById('map'),
view: new ol.View({
@@ -84,14 +86,12 @@ map.on('click', function(evt) {
});
// change mouse cursor when over marker
$(map.getViewport()).on('mousemove', function(e) {
var pixel = map.getEventPixel(e.originalEvent);
var hit = map.forEachFeatureAtPixel(pixel, function(feature, layer) {
return true;
});
if (hit) {
map.getTarget().style.cursor = 'pointer';
} else {
map.getTarget().style.cursor = '';
map.on('pointermove', function(e) {
if (e.dragging) {
$(element).popover('destroy');
return;
}
var pixel = map.getEventPixel(e.originalEvent);
var hit = map.hasFeatureAtPixel(pixel);
map.getTarget().style.cursor = hit ? 'pointer' : '';
});

View File

@@ -73,7 +73,7 @@ var map = new ol.Map({
html: 'All maps &copy; ' +
'<a href="http://www.opencyclemap.org/">OpenCycleMap</a>'
}),
ol.source.OSM.DATA_ATTRIBUTION
ol.source.OSM.ATTRIBUTION
],
url: 'http://{a-c}.tile.opencyclemap.org/cycle/{z}/{x}/{y}.png'
})
@@ -126,7 +126,10 @@ var displaySnap = function(coordinate) {
map.render();
};
$(map.getViewport()).on('mousemove', function(evt) {
map.on('pointermove', function(evt) {
if (evt.dragging) {
return;
}
var coordinate = map.getEventCoordinate(evt.originalEvent);
displaySnap(coordinate);
});

View File

@@ -80,7 +80,10 @@ var displayFeatureInfo = function(pixel) {
};
$(map.getViewport()).on('mousemove', function(evt) {
map.on('pointermove', function(evt) {
if (evt.dragging) {
return;
}
var pixel = map.getEventPixel(evt.originalEvent);
displayFeatureInfo(pixel);
});

View File

@@ -85,7 +85,11 @@ var displayFeatureInfo = function(pixel) {
}
};
$(map.getViewport()).on('mousemove', function(evt) {
map.on('pointermove', function(evt) {
if (evt.dragging) {
info.tooltip('hide');
return;
}
displayFeatureInfo(map.getEventPixel(evt.originalEvent));
});

View File

@@ -92,7 +92,11 @@ var displayFeatureInfo = function(pixel) {
}
};
$(map.getViewport()).on('mousemove', function(evt) {
map.on('pointermove', function(evt) {
if (evt.dragging) {
info.tooltip('hide');
return;
}
displayFeatureInfo(map.getEventPixel(evt.originalEvent));
});

View File

@@ -52,7 +52,10 @@ var displayFeatureInfo = function(pixel) {
}
};
$(map.getViewport()).on('mousemove', function(evt) {
map.on('pointermove', function(evt) {
if (evt.dragging) {
return;
}
var pixel = map.getEventPixel(evt.originalEvent);
displayFeatureInfo(pixel);
});
@@ -73,9 +76,7 @@ if ('download' in exportKMLElement) {
clone.getGeometry().transform(projection, 'EPSG:4326');
features.push(clone);
});
var node = new ol.format.KML().writeFeatures(features);
var string = new XMLSerializer().serializeToString(
/** @type {Node} */ (node));
var string = new ol.format.KML().writeFeatures(features);
var base64 = exampleNS.strToBase64(string);
exportKMLElement.href =
'data:application/vnd.google-earth.kml+xml;base64,' + base64;

View File

@@ -0,0 +1,68 @@
<!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>Limited Layer Extent</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">Limited layer extent</h4>
<p id="shortdesc">Restricting layer rendering to a limited extent.</p>
<div id="docs">
<p>
This example uses the <code>layer.setExtent()</code> method to
modify the extent of the overlay layer. Use the controls below
to limit rendering based on an extent.
</p>
<p>
<div class="btn-group">
<button type="button" class="btn btn-default" id="northwest">northwest</button>
<button type="button" class="btn btn-default" id="northeast">northeast</button>
<button type="button" class="btn btn-default" id="southeast">southeast</button>
<button type="button" class="btn btn-default" id="southwest">southwest</button>
<button type="button" class="btn btn-default" id="world">world</button>
</div>
</p>
<p>
See the <a href="layer-extent.js" target="_blank">layer-extent.js
source</a> for details on how this is done.
</p>
</div>
<div id="tags">extent, tilejson</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=layer-extent" type="text/javascript"></script>
</body>
</html>

50
examples/layer-extent.js Normal file
View File

@@ -0,0 +1,50 @@
goog.require('ol.Map');
goog.require('ol.View');
goog.require('ol.layer.Tile');
goog.require('ol.proj');
goog.require('ol.source.TileJSON');
function transform(extent) {
return ol.proj.transformExtent(extent, 'EPSG:4326', 'EPSG:3857');
}
var extents = {
northwest: transform([-180, 0, 0, 85]),
northeast: transform([0, 0, 180, 85]),
southeast: transform([0, -85, 180, 0]),
southwest: transform([-180, -85, 0, 0]),
world: transform([-180, -85, 180, 85])
};
var base = new ol.layer.Tile({
source: new ol.source.TileJSON({
url: 'http://api.tiles.mapbox.com/v3/' +
'mapbox.world-black.jsonp',
crossOrigin: 'anonymous'
})
});
var overlay = new ol.layer.Tile({
extent: extents.northwest,
source: new ol.source.TileJSON({
url: 'http://api.tiles.mapbox.com/v3/' +
'mapbox.world-glass.jsonp',
crossOrigin: 'anonymous'
})
});
var map = new ol.Map({
layers: [base, overlay],
renderer: exampleNS.getRendererFromQueryString(),
target: 'map',
view: new ol.View({
center: [0, 0],
zoom: 1
})
});
for (var key in extents) {
document.getElementById(key).onclick = function(event) {
overlay.setExtent(extents[event.target.id]);
};
}

73
examples/lazy-source.html Normal file
View File

@@ -0,0 +1,73 @@
<!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>Lazy Source</title>
<style>
button.code {
font-family: Monaco,Menlo,Consolas,"Courier New",monospace;
font-size: 12px;
padding: 5px;
margin: 0 5px;
}
</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>
</div>
<div class="row-fluid">
<div class="span12">
<h4 id="title">Lazy source example</h4>
<p id="shortdesc">Example of setting a layer source after construction.</p>
<div id="docs">
<p>
Typically, the source for a layer is provided to the layer constructor.
If you need to set a layer source after construction, this can be
done with the <code>layer.setSource()</code> method.
</p>
<p>
The layer in the map above is constructed with no source. Use the
links below to set/unset the layer source. A layer is not rendered
until its source is set.
</p>
<p>
<button id="set-source" class="code">layer.setSource(source)</button>
<button id="unset-source" class="code">layer.setSource(null)</button>
</p>
<p>See the <a href="lazy-source.js" target="_blank">lazy-source.js source</a> for details on how this is done.</p>
</div>
<div id="tags">source</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=lazy-source" type="text/javascript"></script>
</body>
</html>

26
examples/lazy-source.js Normal file
View File

@@ -0,0 +1,26 @@
goog.require('ol.Map');
goog.require('ol.View');
goog.require('ol.layer.Tile');
goog.require('ol.source.MapQuest');
var source = new ol.source.MapQuest({layer: 'sat'});
var layer = new ol.layer.Tile();
var map = new ol.Map({
layers: [layer],
renderer: exampleNS.getRendererFromQueryString(),
target: 'map',
view: new ol.View({
center: [0, 0],
zoom: 2
})
});
document.getElementById('set-source').onclick = function() {
layer.setSource(source);
};
document.getElementById('unset-source').onclick = function() {
layer.setSource(null);
};

View File

@@ -16,7 +16,7 @@ var openCycleMapLayer = new ol.layer.Tile({
html: 'All maps &copy; ' +
'<a href="http://www.opencyclemap.org/">OpenCycleMap</a>'
}),
ol.source.OSM.DATA_ATTRIBUTION
ol.source.OSM.ATTRIBUTION
],
url: 'http://{a-c}.tile.opencyclemap.org/cycle/{z}/{x}/{y}.png'
})
@@ -29,7 +29,7 @@ var openSeaMapLayer = new ol.layer.Tile({
html: 'All maps &copy; ' +
'<a href="http://www.openseamap.org/">OpenSeaMap</a>'
}),
ol.source.OSM.DATA_ATTRIBUTION
ol.source.OSM.ATTRIBUTION
],
crossOrigin: null,
url: 'http://tiles.openseamap.org/seamark/{z}/{x}/{y}.png'

View File

@@ -9,6 +9,40 @@
<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>Measure example</title>
<style>
.tooltip {
position: relative;
background: rgba(0, 0, 0, 0.5);
border-radius: 4px;
color: white;
padding: 4px 8px;
opacity: 0.7;
white-space: nowrap;
}
.tooltip-measure {
opacity: 1;
font-weight: bold;
}
.tooltip-static {
background-color: #ffcc33;
color: black;
border: 1px solid white;
}
.tooltip-measure:before,
.tooltip-static:before {
border-top: 6px solid rgba(0, 0, 0, 0.5);
border-right: 6px solid transparent;
border-left: 6px solid transparent;
content: "";
position: absolute;
bottom: -6px;
margin-left: -7px;
left: 50%;
}
.tooltip-static:before {
border-top-color: #ffcc33;
}
</style>
</head>
<body>
@@ -41,12 +75,11 @@
<option value="length">Length</option>
<option value="area">Area</option>
</select>
<label class="checkbox"><input type="checkbox" id="geodesic"/>use geodesic measures</label>
</form>
<ol id="measureOutput" reversed></ol>
<div id="docs">
<p><i>NOTE: Measure is done in simple way on projected plane. Earth
<p><i>NOTE: If use geodesic measures is not checked, measure is done in simple way on projected plane. Earth
curvature is not taken into account</i></p>
<p>See the <a href="measure.js" target="_blank">measure.js source</a> to see how this is done.</p>
</div>

View File

@@ -1,4 +1,6 @@
goog.require('ol.Map');
goog.require('ol.Overlay');
goog.require('ol.Sphere');
goog.require('ol.View');
goog.require('ol.geom.LineString');
goog.require('ol.geom.Polygon');
@@ -6,6 +8,7 @@ goog.require('ol.interaction');
goog.require('ol.interaction.Draw');
goog.require('ol.layer.Tile');
goog.require('ol.layer.Vector');
goog.require('ol.proj');
goog.require('ol.source.MapQuest');
goog.require('ol.source.Vector');
goog.require('ol.style.Circle');
@@ -13,6 +16,9 @@ goog.require('ol.style.Fill');
goog.require('ol.style.Stroke');
goog.require('ol.style.Style');
var wgs84Sphere = new ol.Sphere(6378137);
var raster = new ol.layer.Tile({
source: new ol.source.MapQuest({layer: 'sat'})
});
@@ -40,35 +46,85 @@ var vector = new ol.layer.Vector({
/**
* Currently drawed feature
* Currently drawn feature.
* @type {ol.Feature}
*/
var sketch;
/**
* Element for currently drawed feature
* The help tooltip element.
* @type {Element}
*/
var sketchElement;
var helpTooltipElement;
/**
* handle pointer move
* @param {Event} evt
* Overlay to show the help messages.
* @type {ol.Overlay}
*/
var mouseMoveHandler = function(evt) {
var helpTooltip;
/**
* The measure tooltip element.
* @type {Element}
*/
var measureTooltipElement;
/**
* Overlay to show the measurement.
* @type {ol.Overlay}
*/
var measureTooltip;
/**
* Message to show when the user is drawing a polygon.
* @type {string}
*/
var continuePolygonMsg = 'Click to continue drawing the polygon';
/**
* Message to show when the user is drawing a line.
* @type {string}
*/
var continueLineMsg = 'Click to continue drawing the line';
/**
* Handle pointer move.
* @param {ol.MapBrowserEvent} evt
*/
var pointerMoveHandler = function(evt) {
if (evt.dragging) {
return;
}
/** @type {string} */
var helpMsg = 'Click to start drawing';
/** @type {ol.Coordinate|undefined} */
var tooltipCoord = evt.coordinate;
if (sketch) {
var output;
var geom = (sketch.getGeometry());
if (geom instanceof ol.geom.Polygon) {
output = formatArea(/** @type {ol.geom.Polygon} */ (geom));
helpMsg = continuePolygonMsg;
tooltipCoord = geom.getInteriorPoint().getCoordinates();
} else if (geom instanceof ol.geom.LineString) {
output = formatLength( /** @type {ol.geom.LineString} */ (geom));
helpMsg = continueLineMsg;
tooltipCoord = geom.getLastCoordinate();
}
sketchElement.innerHTML = output;
measureTooltipElement.innerHTML = output;
measureTooltip.setPosition(tooltipCoord);
}
helpTooltipElement.innerHTML = helpMsg;
helpTooltip.setPosition(evt.coordinate);
};
@@ -81,42 +137,97 @@ var map = new ol.Map({
})
});
$(map.getViewport()).on('mousemove', mouseMoveHandler);
map.on('pointermove', pointerMoveHandler);
var typeSelect = document.getElementById('type');
var geodesicCheckbox = document.getElementById('geodesic');
var draw; // global so we can remove it later
function addInteraction() {
var type = (typeSelect.value == 'area' ? 'Polygon' : 'LineString');
draw = new ol.interaction.Draw({
source: source,
type: /** @type {ol.geom.GeometryType} */ (type)
type: /** @type {ol.geom.GeometryType} */ (type),
style: new ol.style.Style({
fill: new ol.style.Fill({
color: 'rgba(255, 255, 255, 0.2)'
}),
stroke: new ol.style.Stroke({
color: 'rgba(0, 0, 0, 0.5)',
lineDash: [10, 10],
width: 2
}),
image: new ol.style.Circle({
radius: 5,
stroke: new ol.style.Stroke({
color: 'rgba(0, 0, 0, 0.7)'
}),
fill: new ol.style.Fill({
color: 'rgba(255, 255, 255, 0.2)'
})
})
})
});
map.addInteraction(draw);
createMeasureTooltip();
createHelpTooltip();
draw.on('drawstart',
function(evt) {
// set sketch
sketch = evt.feature;
sketchElement = document.createElement('li');
var outputList = document.getElementById('measureOutput');
if (outputList.childNodes) {
outputList.insertBefore(sketchElement, outputList.firstChild);
} else {
outputList.appendChild(sketchElement);
}
}, this);
draw.on('drawend',
function(evt) {
measureTooltipElement.className = 'tooltip tooltip-static';
measureTooltip.setOffset([0, -7]);
// unset sketch
sketch = null;
sketchElement = null;
// unset tooltip so that a new one can be created
measureTooltipElement = null;
createMeasureTooltip();
}, this);
}
/**
* Creates a new help tooltip
*/
function createHelpTooltip() {
if (helpTooltipElement) {
helpTooltipElement.parentNode.removeChild(helpTooltipElement);
}
helpTooltipElement = document.createElement('div');
helpTooltipElement.className = 'tooltip';
helpTooltip = new ol.Overlay({
element: helpTooltipElement,
offset: [15, 0],
positioning: 'center-left'
});
map.addOverlay(helpTooltip);
}
/**
* Creates a new measure tooltip
*/
function createMeasureTooltip() {
if (measureTooltipElement) {
measureTooltipElement.parentNode.removeChild(measureTooltipElement);
}
measureTooltipElement = document.createElement('div');
measureTooltipElement.className = 'tooltip tooltip-measure';
measureTooltip = new ol.Overlay({
element: measureTooltipElement,
offset: [0, -15],
positioning: 'bottom-center'
});
map.addOverlay(measureTooltip);
}
/**
* Let user change the geometry type.
* @param {Event} e Change event.
@@ -133,7 +244,19 @@ typeSelect.onchange = function(e) {
* @return {string}
*/
var formatLength = function(line) {
var length = Math.round(line.getLength() * 100) / 100;
var length;
if (geodesicCheckbox.checked) {
var coordinates = line.getCoordinates();
length = 0;
var sourceProj = map.getView().getProjection();
for (var i = 0, ii = coordinates.length - 1; i < ii; ++i) {
var c1 = ol.proj.transform(coordinates[i], sourceProj, 'EPSG:4326');
var c2 = ol.proj.transform(coordinates[i + 1], sourceProj, 'EPSG:4326');
length += wgs84Sphere.haversineDistance(c1, c2);
}
} else {
length = Math.round(line.getLength() * 100) / 100;
}
var output;
if (length > 100) {
output = (Math.round(length / 1000 * 100) / 100) +
@@ -152,7 +275,16 @@ var formatLength = function(line) {
* @return {string}
*/
var formatArea = function(polygon) {
var area = polygon.getArea();
var area;
if (geodesicCheckbox.checked) {
var sourceProj = map.getView().getProjection();
var geom = /** @type {ol.geom.Polygon} */(polygon.clone().transform(
sourceProj, 'EPSG:4326'));
var coordinates = geom.getLinearRing(0).getCoordinates();
area = Math.abs(wgs84Sphere.geodesicArea(coordinates));
} else {
area = polygon.getArea();
}
var output;
if (area > 10000) {
output = (Math.round(area / 1000000 * 100) / 100) +

View File

@@ -18,6 +18,7 @@
<div id="map" class="map"></div>
<script src="../resources/jquery.min.js" type="text/javascript"></script>
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/fastclick/1.0.3/fastclick.js" type="text/javascript"></script>
<script src="loader.js?id=mobile-full-screen" type="text/javascript"></script>
<div style="display: none;">

View File

@@ -32,3 +32,11 @@ geolocation.once('change:position', function() {
view.setCenter(geolocation.getPosition());
view.setResolution(2.388657133911758);
});
// Use FastClick to eliminate the 300ms delay between a physical tap
// and the firing of a click event on mobile browsers.
// See http://updates.html5rocks.com/2013/12/300ms-tap-delay-gone-away
// for more information.
$(function() {
FastClick.attach(document.body);
});

View File

@@ -0,0 +1,57 @@
<!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="../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>Custom styles for polygons</title>
<style>
.map {
background: grey;
}
</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>
</div>
<div class="row-fluid">
<div class="span12">
<h4 id="title">Custom styles for polygons</h4>
<p id="shortdesc">Showing the vertices of a polygon with a custom style geometry.</p>
<div id="docs">
<p>See the <a href="polygon-styles.js" target="_blank">polygon-styles.js source</a> to see how this is done.</p>
</div>
<div id="tags">polygon, vector, style, GeometryFunction</div>
</div>
</div>
</div>
<script src="../resources/jquery.min.js" type="text/javascript"></script>
<script src="loader.js?id=polygon-styles" type="text/javascript"></script>
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
</body>
</html>

101
examples/polygon-styles.js Normal file
View File

@@ -0,0 +1,101 @@
goog.require('ol.Map');
goog.require('ol.View');
goog.require('ol.geom.MultiPoint');
goog.require('ol.layer.Vector');
goog.require('ol.source.GeoJSON');
goog.require('ol.style.Circle');
goog.require('ol.style.Fill');
goog.require('ol.style.Stroke');
goog.require('ol.style.Style');
var styles = [
/* We are using two different styles for the polygons:
* - The first style is for the polygons themselves.
* - The second style is to draw the vertices of the polygons.
* In a custom `geometry` function the vertices of a polygon are
* returned as `MultiPoint` geometry, which will be used to render
* the style.
*/
new ol.style.Style({
stroke: new ol.style.Stroke({
color: 'blue',
width: 3
}),
fill: new ol.style.Fill({
color: 'rgba(0, 0, 255, 0.1)'
})
}),
new ol.style.Style({
image: new ol.style.Circle({
radius: 5,
fill: new ol.style.Fill({
color: 'orange'
})
}),
geometry: function(feature) {
// return the coordinates of the first ring of the polygon
var coordinates = feature.getGeometry().getCoordinates()[0];
return new ol.geom.MultiPoint(coordinates);
}
})
];
var source = new ol.source.GeoJSON(/** @type {olx.source.GeoJSONOptions} */ ({
object: {
'type': 'FeatureCollection',
'crs': {
'type': 'name',
'properties': {
'name': 'EPSG:3857'
}
},
'features': [
{
'type': 'Feature',
'geometry': {
'type': 'Polygon',
'coordinates': [[[-5e6, 6e6], [-5e6, 8e6], [-3e6, 8e6],
[-3e6, 6e6], [-5e6, 6e6]]]
}
},
{
'type': 'Feature',
'geometry': {
'type': 'Polygon',
'coordinates': [[[-2e6, 6e6], [-2e6, 8e6], [0, 8e6],
[0, 6e6], [-2e6, 6e6]]]
}
},
{
'type': 'Feature',
'geometry': {
'type': 'Polygon',
'coordinates': [[[1e6, 6e6], [1e6, 8e6], [3e6, 8e6],
[3e6, 6e6], [1e6, 6e6]]]
}
},
{
'type': 'Feature',
'geometry': {
'type': 'Polygon',
'coordinates': [[[-2e6, -1e6], [-1e6, 1e6],
[0, -1e6], [-2e6, -1e6]]]
}
}
]
}
}));
var layer = new ol.layer.Vector({
source: source,
style: styles
});
var map = new ol.Map({
layers: [layer],
target: 'map',
view: new ol.View({
center: [0, 1000000],
zoom: 2
})
});

View File

@@ -10,10 +10,8 @@
<link rel="stylesheet" href="../resources/bootstrap/css/bootstrap-responsive.min.css" type="text/css">
<style type="text/css">
.ol-popup {
display: none;
position: absolute;
background-color: white;
-moz-box-shadow: 0 1px 4px rgba(0,0,0,0.2);
-webkit-filter: drop-shadow(0 1px 4px rgba(0,0,0,0.2));
filter: drop-shadow(0 1px 4px rgba(0,0,0,0.2));
padding: 15px;

View File

@@ -20,7 +20,7 @@ var closer = document.getElementById('popup-closer');
* @return {boolean} Don't follow the href.
*/
closer.onclick = function() {
container.style.display = 'none';
overlay.setPosition(undefined);
closer.blur();
return false;
};
@@ -29,9 +29,13 @@ closer.onclick = function() {
/**
* Create an overlay to anchor the popup to the map.
*/
var overlay = new ol.Overlay({
element: container
});
var overlay = new ol.Overlay(/** @type {olx.OverlayOptions} */ ({
element: container,
autoPan: true,
autoPanAnimation: {
duration: 250
}
}));
/**
@@ -60,14 +64,12 @@ var map = new ol.Map({
/**
* Add a click handler to the map to render the popup.
*/
map.on('click', function(evt) {
map.on('singleclick', function(evt) {
var coordinate = evt.coordinate;
var hdms = ol.coordinate.toStringHDMS(ol.proj.transform(
coordinate, 'EPSG:3857', 'EPSG:4326'));
overlay.setPosition(coordinate);
content.innerHTML = '<p>You clicked here:</p><code>' + hdms +
'</code>';
container.style.display = 'block';
overlay.setPosition(coordinate);
});

View File

@@ -0,0 +1,51 @@
<!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>Regular Shape 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">Regular Shape example</h4>
<p id="shortdesc">Example of some Regular Shape styles.</p>
<div id="docs">
<p>See the <a href="regularshape.js" target="_blank">regularshape.js source</a> to see how this is done.</p>
</div>
<div id="tags">vector, symbol, regularshape, style, square, cross, star, triangle, x</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=regularshape" type="text/javascript"></script>
</body>
</html>

101
examples/regularshape.js Normal file
View File

@@ -0,0 +1,101 @@
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.Fill');
goog.require('ol.style.RegularShape');
goog.require('ol.style.Stroke');
goog.require('ol.style.Style');
var stroke = new ol.style.Stroke({color: 'black', width: 2});
var fill = new ol.style.Fill({color: 'red'});
var styles = {
'square': [new ol.style.Style({
image: new ol.style.RegularShape(
/** @type {olx.style.RegularShapeOptions} */({
fill: fill,
stroke: stroke,
points: 4,
radius: 10,
angle: Math.PI / 4
}))
})],
'triangle': [new ol.style.Style({
image: new ol.style.RegularShape(
/** @type {olx.style.RegularShapeOptions} */({
fill: fill,
stroke: stroke,
points: 3,
radius: 10,
rotation: Math.PI / 4,
angle: 0
}))
})],
'star': [new ol.style.Style({
image: new ol.style.RegularShape(
/** @type {olx.style.RegularShapeOptions} */({
fill: fill,
stroke: stroke,
points: 5,
radius: 10,
radius2: 4,
angle: 0
}))
})],
'cross': [new ol.style.Style({
image: new ol.style.RegularShape(
/** @type {olx.style.RegularShapeOptions} */({
fill: fill,
stroke: stroke,
points: 4,
radius: 10,
radius2: 0,
angle: 0
}))
})],
'x': [new ol.style.Style({
image: new ol.style.RegularShape(
/** @type {olx.style.RegularShapeOptions} */({
fill: fill,
stroke: stroke,
points: 4,
radius: 10,
radius2: 0,
angle: Math.PI / 4
}))
})]
};
var styleKeys = ['x', 'cross', 'star', 'triangle', 'square'];
var count = 250;
var features = new Array(count);
var e = 4500000;
for (var i = 0; i < count; ++i) {
var coordinates = [2 * e * Math.random() - e, 2 * e * Math.random() - e];
features[i] = new ol.Feature(new ol.geom.Point(coordinates));
features[i].setStyle(styles[styleKeys[Math.floor(Math.random() * 5)]]);
}
var source = new ol.source.Vector({
features: features
});
var vectorLayer = new ol.layer.Vector({
source: source
});
var map = new ol.Map({
layers: [
vectorLayer
],
target: 'map',
view: new ol.View({
center: [0, 0],
zoom: 2
})
});

View File

@@ -35,14 +35,16 @@
<h4 id="title">Select features example</h4>
<p id="shortdesc">Example of using the Select interaction. Choose between <code>Single-click</code>, <code>Click</code> and <code>Hover</code> as the event type for selection in the combobox below. When using <code>Single-click</code> or <code>Click</code> you can hold do <code>Shift</code> key to toggle the feature in the selection.</p>
<p>Note: when <code>Single-click</code> is used double-clicks won't select features. This in contrast to <code>Click</code>, where a double-click will both select the feature and zoom the map (because of the <code>DoubleClickZoom</code> interaction). Note that <code>Single-click</code> is less responsive than <code>Click</code> because of the delay it uses to detect double-clicks.</p>
<p>In this example, a listener is registered for the Select interaction's <code>select</code> event in order to update the selection status below.
<form class="form-inline">
<label>Action type &nbsp;</label>
<select id="type">
<option value="none" selected>None</option>
<option value="singleclick">Single-click</option>
<option value="click">Click</option>
<option value="mousemove">Hover</option>
<option value="pointermove">Hover</option>
</select>
<span id="status">&nbsp;0 selected features</span>
</form>
<div id="docs">
<p>See the <a href="select-features.js" target="_blank">select-features.js source</a> to see how this is done.</p>

View File

@@ -38,9 +38,9 @@ var selectClick = new ol.interaction.Select({
condition: ol.events.condition.click
});
// select interaction working on "mousemove"
var selectMouseMove = new ol.interaction.Select({
condition: ol.events.condition.mouseMove
// select interaction working on "pointermove"
var selectPointerMove = new ol.interaction.Select({
condition: ol.events.condition.pointerMove
});
var selectElement = document.getElementById('type');
@@ -54,13 +54,18 @@ var changeInteraction = function() {
select = selectSingleClick;
} else if (value == 'click') {
select = selectClick;
} else if (value == 'mousemove') {
select = selectMouseMove;
} else if (value == 'pointermove') {
select = selectPointerMove;
} else {
select = null;
}
if (select !== null) {
map.addInteraction(select);
select.on('select', function(e) {
$('#status').html('&nbsp;' + e.target.getFeatures().getLength() +
' selected features (last operation selected ' + e.selected.length +
' and deselected ' + e.deselected.length + ' features)');
});
}
};

View File

@@ -0,0 +1,58 @@
<!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>Symbols with WebGL 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">Symbols with WebGL example</h4>
<p id="shortdesc">Using symbols in an atlas with WebGL.</p>
<div id="docs">
<p>When using symbol styles with WebGL, OpenLayers would render the symbol
on a temporary image and would create a WebGL texture for each image. For a
better performance, it is recommended to use atlas images (similar to
image sprites with CSS), so that the number of textures is reduced. OpenLayers
provides an <code>AtlasManager</code>, which when passed to the constructor
of a symbol style, will create atlases for the symbols.</p>
<p>See the <a href="symbol-atlas-webgl.js" target="_blank">symbol-atlas-webgl.js source</a> to see how this is done.</p>
</div>
<div id="tags">webgl, symbol, atlas, vector, point</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=symbol-atlas-webgl" type="text/javascript"></script>
</body>
</html>

View File

@@ -0,0 +1,123 @@
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.AtlasManager');
goog.require('ol.style.Circle');
goog.require('ol.style.Fill');
goog.require('ol.style.RegularShape');
goog.require('ol.style.Stroke');
goog.require('ol.style.Style');
var atlasManager = new ol.style.AtlasManager({
// we increase the initial size so that all symbols fit into
// a single atlas image
initialSize: 512
});
var symbolInfo = [{
opacity: 1.0,
scale: 1.0,
fillColor: 'rgba(255, 153, 0, 0.4)',
strokeColor: 'rgba(255, 204, 0, 0.2)'
}, {
opacity: 0.75,
scale: 1.25,
fillColor: 'rgba(70, 80, 224, 0.4)',
strokeColor: 'rgba(12, 21, 138, 0.2)'
}, {
opacity: 0.5,
scale: 1.5,
fillColor: 'rgba(66, 150, 79, 0.4)',
strokeColor: 'rgba(20, 99, 32, 0.2)'
}, {
opacity: 1.0,
scale: 1.0,
fillColor: 'rgba(176, 61, 35, 0.4)',
strokeColor: 'rgba(145, 43, 20, 0.2)'
}];
var radiuses = [3, 6, 9, 15, 19, 25];
var symbolCount = symbolInfo.length * radiuses.length * 2;
var symbols = [];
var i, j;
for (i = 0; i < symbolInfo.length; ++i) {
var info = symbolInfo[i];
for (j = 0; j < radiuses.length; ++j) {
// circle symbol
symbols.push(new ol.style.Circle({
opacity: info.opacity,
scale: info.scale,
radius: radiuses[j],
fill: new ol.style.Fill({
color: info.fillColor
}),
stroke: new ol.style.Stroke({
color: info.strokeColor,
width: 1
}),
// by passing the atlas manager to the symbol,
// the symbol will be added to an atlas
atlasManager: atlasManager
}));
// star symbol
symbols.push(new ol.style.RegularShape({
points: 8,
opacity: info.opacity,
scale: info.scale,
radius: radiuses[j],
radius2: radiuses[j] * 0.7,
angle: 1.4,
fill: new ol.style.Fill({
color: info.fillColor
}),
stroke: new ol.style.Stroke({
color: info.strokeColor,
width: 1
}),
atlasManager: atlasManager
}));
}
}
var featureCount = 50000;
var features = new Array(featureCount);
var feature, geometry;
var e = 25000000;
for (i = 0; i < featureCount; ++i) {
geometry = new ol.geom.Point(
[2 * e * Math.random() - e, 2 * e * Math.random() - e]);
feature = new ol.Feature(geometry);
feature.setStyle(
new ol.style.Style({
image: symbols[i % symbolCount]
})
);
features[i] = feature;
}
var vectorSource = new ol.source.Vector({
features: features
});
var vector = new ol.layer.Vector({
source: vectorSource
});
// Use the "webgl" renderer by default.
var renderer = exampleNS.getRendererFromQueryString();
if (!renderer) {
renderer = 'webgl';
}
var map = new ol.Map({
renderer: renderer,
layers: [vector],
target: document.getElementById('map'),
view: new ol.View({
center: [0, 0],
zoom: 4
})
});

View File

@@ -83,7 +83,10 @@ var displaySnap = function(coordinate) {
map.render();
};
$(map.getViewport()).on('mousemove', function(evt) {
map.on('pointermove', function(evt) {
if (evt.dragging) {
return;
}
var coordinate = map.getEventCoordinate(evt.originalEvent);
displaySnap(coordinate);
});
@@ -116,13 +119,12 @@ map.on('postcompose', function(evt) {
}
});
$(map.getViewport()).on('mousemove', function(e) {
var pixel = map.getEventPixel(e.originalEvent);
var hit = map.forEachFeatureAtPixel(pixel, function(feature, layer) {
return true;
});
map.on('pointermove', function(evt) {
if (evt.dragging) {
return;
}
var pixel = map.getEventPixel(evt.originalEvent);
var hit = map.hasFeatureAtPixel(pixel);
if (hit) {
map.getTarget().style.cursor = 'pointer';
} else {

View File

@@ -0,0 +1,79 @@
<!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>Tile load events example</title>
<style>
.map {
background: #E0ECED;
}
.wrapper {
position: relative;
}
#progress {
position: absolute;
bottom: 0;
left: 0;
height: 2px;
background: rgba(0, 60, 136, 0.4);
width: 0;
transition: width 250ms;
}
</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 wrapper">
<div id="map" class="map"></div>
<div id="progress"></div>
</div>
</div>
<div class="row-fluid">
<div class="span12">
<h4 id="title">Tile load events example</h4>
<p id="shortdesc">Example using tile load events.</p>
<div id="docs">
<p>
Image tile sources fire events related to tile loading. You can
listen for <code>tileloadstart</code>, <code>tileloadend</code>,
and <code>tileloaderror</code> type events to monitor tile loading
progress. This example registers listeners for these events and
renders a tile loading progress bar at the bottom of the map.
</p>
<p>
See the <a href="tile-load-events.js" target="_blank">tile-load-events.js source</a>
for more detail on how this is done.
</p>
</div>
<div id="tags">tile, events, loading</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=tile-load-events" type="text/javascript"></script>
</body>
</html>

View File

@@ -0,0 +1,104 @@
goog.require('ol.Map');
goog.require('ol.View');
goog.require('ol.layer.Tile');
goog.require('ol.source.TileJSON');
/**
* Renders a progress bar.
* @param {Element} el The target element.
* @constructor
*/
function Progress(el) {
this.el = el;
this.loading = 0;
this.loaded = 0;
}
/**
* Increment the count of loading tiles.
*/
Progress.prototype.addLoading = function() {
if (this.loading === 0) {
this.show();
}
++this.loading;
this.update();
};
/**
* Increment the count of loaded tiles.
*/
Progress.prototype.addLoaded = function() {
setTimeout(function() {
++this.loaded;
this.update();
}.bind(this), 100);
};
/**
* Update the progress bar.
*/
Progress.prototype.update = function() {
var width = (this.loaded / this.loading * 100).toFixed(1) + '%';
this.el.style.width = width;
if (this.loading === this.loaded) {
this.loading = 0;
this.loaded = 0;
setTimeout(this.hide.bind(this), 500);
}
};
/**
* Show the progress bar.
*/
Progress.prototype.show = function() {
this.el.style.visibility = 'visible';
};
/**
* Hide the progress bar.
*/
Progress.prototype.hide = function() {
if (this.loading === this.loaded) {
this.el.style.visibility = 'hidden';
this.el.style.width = 0;
}
};
var progress = new Progress(document.getElementById('progress'));
var source = new ol.source.TileJSON({
url: 'http://api.tiles.mapbox.com/v3/mapbox.world-bright.jsonp',
crossOrigin: 'anonymous'
});
source.on('tileloadstart', function(event) {
progress.addLoading();
});
source.on('tileloadend', function(event) {
progress.addLoaded();
});
source.on('tileloaderror', function(event) {
progress.addLoaded();
});
var map = new ol.Map({
logo: false,
layers: [
new ol.layer.Tile({source: source})
],
renderer: exampleNS.getRendererFromQueryString(),
target: 'map',
view: new ol.View({
center: [0, 0],
zoom: 2
})
});

69
examples/tileutfgrid.html Normal file
View File

@@ -0,0 +1,69 @@
<!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">
<style type="text/css">
#country-name {
color: black;
font-size: 12pt;
font-weight: bold;
text-shadow: white 0.1em 0.1em 0.2em;
}
</style>
<title>TileUTFGrid 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">TileUTFGrid example</h4>
<p id="shortdesc">This example shows how to read data from a TileUTFGrid layer.</p>
<p>Point to a country to see its name and flag.</p>
<div id="docs">
<p>Tiles made with <a href="http://tilemill.com/">TileMill</a>. Hosting on MapBox.com or with open-source <a href="https://github.com/klokantech/tileserver-php/">TileServer</a>.</p>
<p>See the <a href="tileutfgrid.js" target="_blank">tileutfgrid.js source</a> to see how this is done.</p>
</div>
<div id="tags">utfgrid, tileutfgrid, tilejson</div>
</div>
</div>
</div>
<div style="display: none;">
<!-- Overlay with the country info -->
<div id="country-info">
<div id="country-name">&nbsp;</div>
<img id="country-flag" src="" />
</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=tileutfgrid" type="text/javascript"></script>
</body>
</html>

71
examples/tileutfgrid.js Normal file
View File

@@ -0,0 +1,71 @@
goog.require('ol.Map');
goog.require('ol.Overlay');
goog.require('ol.View');
goog.require('ol.layer.Tile');
goog.require('ol.source.TileJSON');
goog.require('ol.source.TileUTFGrid');
var mapLayer = new ol.layer.Tile({
source: new ol.source.TileJSON({
url: 'http://api.tiles.mapbox.com/v3/mapbox.geography-class.json'
})
});
var gridSource = new ol.source.TileUTFGrid({
url: 'http://api.tiles.mapbox.com/v3/mapbox.geography-class.json'
});
var gridLayer = new ol.layer.Tile({source: gridSource});
var view = new ol.View({
center: [0, 0],
zoom: 1
});
var mapElement = document.getElementById('map');
var map = new ol.Map({
layers: [mapLayer, gridLayer],
target: mapElement,
view: view
});
var infoElement = document.getElementById('country-info');
var flagElement = document.getElementById('country-flag');
var nameElement = document.getElementById('country-name');
var infoOverlay = new ol.Overlay({
element: infoElement,
offset: [15, 15],
stopEvent: false
});
map.addOverlay(infoOverlay);
var displayCountryInfo = function(coordinate) {
var viewResolution = /** @type {number} */ (view.getResolution());
gridSource.forDataAtCoordinateAndResolution(coordinate, viewResolution,
function(data) {
// If you want to use the template from the TileJSON,
// load the mustache.js library separately and call
// info.innerHTML = Mustache.render(gridSource.getTemplate(), data);
mapElement.style.cursor = data ? 'pointer' : '';
if (data) {
/* jshint -W069 */
flagElement.src = 'data:image/png;base64,' + data['flag_png'];
nameElement.innerHTML = data['admin'];
/* jshint +W069 */
}
infoOverlay.setPosition(data ? coordinate : undefined);
});
};
map.on('pointermove', function(evt) {
if (evt.dragging) {
return;
}
var coordinate = map.getEventCoordinate(evt.originalEvent);
displayCountryInfo(coordinate);
});
map.on('click', function(evt) {
displayCountryInfo(evt.coordinate);
});

View File

@@ -20,7 +20,7 @@ var map4326 = new ol.Map({
layers: [
new ol.layer.Tile({
source: new ol.source.TileWMS({
url: 'http://demo.opengeo.org/geoserver/wms',
url: 'http://demo.boundlessgeo.com/geoserver/wms',
params: {
'LAYERS': 'ne:NE1_HR_LC_SR_W_DR'
}
@@ -41,7 +41,7 @@ var map3857 = new ol.Map({
layers: [
new ol.layer.Tile({
source: new ol.source.TileWMS({
url: 'http://demo.opengeo.org/geoserver/wms',
url: 'http://demo.boundlessgeo.com/geoserver/wms',
params: {
'LAYERS': 'ne:NE1_HR_LC_SR_W_DR'
}

View File

@@ -12,7 +12,7 @@
h2 {
font-size: 1.5em;
line-height: 15px;
};
}
.scale-cnt {
margin: 5px;

View File

@@ -114,7 +114,10 @@ var displayFeatureInfo = function(pixel) {
};
$(map.getViewport()).on('mousemove', function(evt) {
map.on('pointermove', function(evt) {
if (evt.dragging) {
return;
}
var pixel = map.getEventPixel(evt.originalEvent);
displayFeatureInfo(pixel);
});

View File

@@ -13,7 +13,7 @@ goog.require('ol.tilegrid.XYZ');
var vectorSource = new ol.source.ServerVector({
format: new ol.format.GeoJSON(),
loader: function(extent, resolution, projection) {
var url = 'http://demo.opengeo.org/geoserver/wfs?service=WFS&' +
var url = 'http://demo.boundlessgeo.com/geoserver/wfs?service=WFS&' +
'version=1.1.0&request=GetFeature&typename=osm:water_areas&' +
'outputFormat=text/javascript&format_options=callback:loadFeatures' +
'&srsname=EPSG:3857&bbox=' + extent.join(',') + ',EPSG:3857';

View File

@@ -13,7 +13,7 @@ var layers = [
new ol.layer.Image({
extent: [-13884991, 2870341, -7455066, 6338219],
source: new ol.source.ImageWMS({
url: 'http://demo.opengeo.org/geoserver/wms',
url: 'http://demo.boundlessgeo.com/geoserver/wms',
params: {'LAYERS': 'topp:states'},
serverType: 'geoserver'
})

View File

@@ -12,7 +12,7 @@ var layers = [
new ol.layer.Tile({
extent: [-13884991, 2870341, -7455066, 6338219],
source: new ol.source.TileWMS(/** @type {olx.source.TileWMSOptions} */ ({
url: 'http://demo.opengeo.org/geoserver/wms',
url: 'http://demo.boundlessgeo.com/geoserver/wms',
params: {'LAYERS': 'topp:states', 'TILED': true},
serverType: 'geoserver'
}))

View File

@@ -0,0 +1,49 @@
<!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>WMTS GetCapabilities parsing 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="span4">
<h4 id="title">WMTS GetCapabilities parsing example</h4>
<p id="shortdesc">Example of parsing a WMTS GetCapabilities response.</p>
<div id="docs">
<p>See the <a href="wmts-capabilities.js" target="_blank">wmts-capabilities.js source</a> to see how this is done.</p>
</div>
<div id="tags">wmts, capabilities, getcapabilities</div>
</div>
<div class="span8">
<pre id="log"></pre>
</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=wmts-capabilities" type="text/javascript"></script>
</body>
</html>

View File

@@ -0,0 +1,8 @@
goog.require('ol.format.WMTSCapabilities');
var parser = new ol.format.WMTSCapabilities();
$.ajax('data/WMTSCapabilities.xml').then(function(response) {
var result = parser.read(response);
$('#log').html(window.JSON.stringify(result, null, 2));
});

View File

@@ -29,7 +29,7 @@ var source = new ol.source.WMTS({
style: 'normal',
matrixSet: 'google3857',
urls: urls,
requestEncoding: /** @type {ol.source.WMTSRequestEncoding} */ ('REST'),
requestEncoding: 'REST',
tileGrid: new ol.tilegrid.WMTS({
origin: [-20037508.3428, 20037508.3428],
resolutions: [

View File

@@ -0,0 +1,51 @@
<!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>WMTS Layer example from capabilities </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">WMTS Capabilities example</h4>
<p id="shortdesc">Example of a WMTS source created from a WMTS capabilities document.</p>
<div id="docs">
<p>See the <a href="wmts-layer-from-capabilities.js" target="_blank">wmts-layer-from-capabilities.js source</a> to see how this is done.</p>
</div>
<div id="tags">wmts, capabilities, getcapabilities</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=wmts-layer-from-capabilities" type="text/javascript"></script>
</body>
</html>

View File

@@ -0,0 +1,37 @@
goog.require('ol.Map');
goog.require('ol.View');
goog.require('ol.format.WMTSCapabilities');
goog.require('ol.layer.Tile');
goog.require('ol.proj');
goog.require('ol.source.OSM');
goog.require('ol.source.WMTS');
var parser = new ol.format.WMTSCapabilities();
var map;
$.ajax('data/WMTSCapabilities.xml').then(function(response) {
var result = parser.read(response);
var options = ol.source.WMTS.optionsFromCapabilities(result,
{layer: 'layer-7328', matrixSet: 'EPSG:3857'});
var projection = ol.proj.get('EPSG:3857');
var projectionExtent = projection.getExtent();
map = new ol.Map({
layers: [
new ol.layer.Tile({
source: new ol.source.OSM(),
opacity: 0.7
}),
new ol.layer.Tile({
opacity: 1,
extent: projectionExtent,
source: new ol.source.WMTS(options)
})
],
target: 'map',
view: new ol.View({
center: [19412406.33, -5050500.21],
zoom: 5
})
});
});

View File

@@ -27,7 +27,7 @@ var map = new ol.Map({
html: 'Tiles &copy; <a href="http://www.opencyclemap.org/">' +
'OpenCycleMap</a>'
}),
ol.source.OSM.DATA_ATTRIBUTION
ol.source.OSM.ATTRIBUTION
],
url: 'http://{a-c}.tile.opencyclemap.org/cycle/{z}/{x}/{y}.png'
})

View File

@@ -45,6 +45,9 @@ var map = new ol.Map({
view: new ol.View({
projection: proj,
center: imgCenter,
zoom: 0
zoom: 0,
// constrain the center: center cannot be set outside
// this extent
extent: [0, -imgHeight, imgWidth, 0]
})
});

25
externs/fastclick.js Normal file
View File

@@ -0,0 +1,25 @@
/**
* @fileoverview Externs for FastClick 1.0.3
* @see https://github.com/ftlabs/fastclick
* @externs
*/
/**
* @type {Object}
* @const
*/
var FastClick = {};
/**
* @typedef {{
* touchBoundary: (number|undefined),
* tapDelay: (number|undefined)
* }}
*/
FastClick.AttachOptions;
/**
* @param {Element} layer
* @param {FastClick.AttachOptions=} opt_options
*/
FastClick.attach = function(layer, opt_options) {};

View File

@@ -13,6 +13,12 @@
var GeoJSONObject = function() {};
/**
* @type {!Array.<number>|undefined}
*/
GeoJSONObject.prototype.bbox;
/**
* @type {string}
*/
@@ -28,15 +34,21 @@ GeoJSONObject.prototype.crs;
/**
* @constructor
* @extends {GeoJSONObject}
*/
var GeoJSONCRS = function() {};
/**
* @type {!GeoJSONCRSCode|!GeoJSONCRSName|!GeoJSONLink}
* CRS type. One of `link` or `name`.
* @type {string}
*/
GeoJSONCRS.prototype.type;
/**
* TODO: remove GeoJSONCRSCode when http://jira.codehaus.org/browse/GEOS-5996
* is fixed and widely deployed.
* @type {!GeoJSONCRSCode|!GeoJSONCRSName|!GeoJSONLink}
*/
GeoJSONCRS.prototype.properties;
@@ -60,9 +72,9 @@ var GeoJSONCRSName = function() {};
/**
* @type {string}
* TODO: remove this when http://jira.codehaus.org/browse/GEOS-5996 is fixed
* and widely deployed.
* @type {string}
*/
GeoJSONCRSName.prototype.code;
@@ -142,16 +154,9 @@ var GeoJSONFeatureCollection = function() {};
GeoJSONFeatureCollection.prototype.features;
/**
* @type {!Array.<number>|undefined}
*/
GeoJSONFeatureCollection.prototype.bbox;
/**
* @constructor
* @extends {GeoJSONObject}
*/
var GeoJSONLink = function() {};
@@ -160,3 +165,8 @@ var GeoJSONLink = function() {};
* @type {string}
*/
GeoJSONLink.prototype.href;
/**
* @type {string}
*/
GeoJSONLink.prototype.type;

143
externs/jquery-1.9.js vendored
View File

@@ -36,6 +36,44 @@ var jQuerySelector;
/** @typedef {function(...)|Array.<function(...)>} */
var jQueryCallback;
/** @typedef {
{
accepts: (Object.<string, string>|undefined),
async: (?boolean|undefined),
beforeSend: (function(jQuery.jqXHR, (jQueryAjaxSettings|Object.<string, *>))|undefined),
cache: (?boolean|undefined),
complete: (function(jQuery.jqXHR, string)|undefined),
contents: (Object.<string, RegExp>|undefined),
contentType: (?string|undefined),
context: (Object.<?, ?>|jQueryAjaxSettings|undefined),
converters: (Object.<string, Function>|undefined),
crossDomain: (?boolean|undefined),
data: (Object.<?, ?>|?string|Array.<?>|undefined),
dataFilter: (function(string, string):Object.<?,?>|undefined),
dataType: (?string|undefined),
error: (function(jQuery.jqXHR, string, string)|undefined),
global: (?boolean|undefined),
headers: (Object.<?, ?>|undefined),
ifModified: (?boolean|undefined),
isLocal: (?boolean|undefined),
jsonp: (?string|undefined),
jsonpCallback: (?string|function()|undefined),
mimeType: (?string|undefined),
password: (?string|undefined),
processData: (?boolean|undefined),
scriptCharset: (?string|undefined),
statusCode: (Object.<number, function()>|undefined),
success: (function(?, string, jQuery.jqXHR)|undefined),
timeout: (?number|undefined),
traditional: (?boolean|undefined),
type: (?string|undefined),
url: (?string|undefined),
username: (?string|undefined),
xhr: (function():(ActiveXObject|XMLHttpRequest)|undefined),
xhrFields: (Object.<?, ?>|undefined)
}} */
var jQueryAjaxSettings;
/**
* @constructor
* @param {(jQuerySelector|Element|Object|Array.<Element>|jQuery|string|
@@ -86,105 +124,61 @@ jQuery.prototype.addClass = function(arg1) {};
jQuery.prototype.after = function(arg1, content) {};
/**
* @param {(string|Object.<string,*>)} arg1
* @param {Object.<string,*>=} settings
* @param {(string|jQueryAjaxSettings|Object.<string,*>)} arg1
* @param {(jQueryAjaxSettings|Object.<string, *>)=} settings
* @return {jQuery.jqXHR}
*/
jQuery.ajax = function(arg1, settings) {};
/**
* @param {(string|Object.<string,*>)} arg1
* @param {Object.<string,*>=} settings
* @param {(string|jQueryAjaxSettings|Object.<string, *>)} arg1
* @param {(jQueryAjaxSettings|Object.<string, *>)=} settings
* @return {jQuery.jqXHR}
*/
$.ajax = function(arg1, settings) {};
/**
* @param {function(!jQuery.event,XMLHttpRequest,Object.<string, *>)} handler
* @param {function(!jQuery.event,XMLHttpRequest,(jQueryAjaxSettings|Object.<string, *>))} handler
* @return {!jQuery}
*/
jQuery.prototype.ajaxComplete = function(handler) {};
/**
* @param {function(!jQuery.event,jQuery.jqXHR,Object.<string, *>,*)} handler
* @param {function(!jQuery.event,jQuery.jqXHR,(jQueryAjaxSettings|Object.<string, *>),*)} handler
* @return {!jQuery}
*/
jQuery.prototype.ajaxError = function(handler) {};
/**
* @param {(string|
* function(Object.<string,*>,Object.<string, *>,jQuery.jqXHR))} dataTypes
* @param {function(Object.<string,*>,Object.<string, *>,jQuery.jqXHR)=} handler
* @param {(string|function((jQueryAjaxSettings|Object.<string, *>),(jQueryAjaxSettings|Object.<string, *>),jQuery.jqXHR))} dataTypes
* @param {function((jQueryAjaxSettings|Object.<string, *>),(jQueryAjaxSettings|Object.<string, *>),jQuery.jqXHR)=} handler
*/
jQuery.ajaxPrefilter = function(dataTypes, handler) {};
/**
* @param {(string|
* function(Object.<string,*>,Object.<string, *>,jQuery.jqXHR))} dataTypes
* @param {function(Object.<string,*>,Object.<string, *>,jQuery.jqXHR)=} handler
* @param {(string|function((jQueryAjaxSettings|Object.<string, *>),(jQueryAjaxSettings|Object.<string, *>),jQuery.jqXHR))} dataTypes
* @param {function((jQueryAjaxSettings|Object.<string, *>),(jQueryAjaxSettings|Object.<string, *>),jQuery.jqXHR)=} handler
*/
$.ajaxPrefilter = function(dataTypes, handler) {};
/**
* @param {function(!jQuery.event,jQuery.jqXHR,Object.<string, *>)} handler
* @param {function(!jQuery.event,jQuery.jqXHR,(jQueryAjaxSettings|Object.<string, *>))} handler
* @return {!jQuery}
*/
jQuery.prototype.ajaxSend = function(handler) {};
/** @const */
jQuery.ajaxSettings = {};
/** @const {jQueryAjaxSettings|Object.<string, *>} */
jQuery.ajaxSettings;
/** @const */
/** @const {jQueryAjaxSettings|Object.<string, *>} */
$.ajaxSettings = {};
/** @type {Object.<string, string>} */
jQuery.ajaxSettings.accepts = {};
/** @type {Object.<string, string>} */
$.ajaxSettings.accepts = {};
/** @type {boolean} */
jQuery.ajaxSettings.async;
/** @type {boolean} */
$.ajaxSettings.async;
/** @type {Object.<string, RegExp>} */
jQuery.ajaxSettings.contents = {};
/** @type {Object.<string, RegExp>} */
$.ajaxSettings.contents = {};
/** @type {string} */
jQuery.ajaxSettings.contentType;
/** @type {string} */
$.ajaxSettings.contentType;
/** @type {Object.<string, *>} */
jQuery.ajaxSettings.converters = {};
/** @type {Object.<string, *>} */
$.ajaxSettings.converters = {};
/** @type {Object.<string, boolean>} */
jQuery.ajaxSettings.flatOptions = {};
/** @type {Object.<string, boolean>} */
$.ajaxSettings.flatOptions = {};
/** @type {boolean} */
jQuery.ajaxSettings.global;
/** @type {boolean} */
$.ajaxSettings.global;
/** @type {boolean} */
jQuery.ajaxSettings.isLocal;
/** @type {boolean} */
$.ajaxSettings.isLocal;
/** @type {boolean} */
jQuery.ajaxSettings.processData;
@@ -197,34 +191,10 @@ jQuery.ajaxSettings.responseFields = {};
/** @type {Object.<string, string>} */
$.ajaxSettings.responseFields = {};
/** @type {boolean} */
jQuery.ajaxSettings.traditional;
/** @type {boolean} */
$.ajaxSettings.traditional;
/** @type {string} */
jQuery.ajaxSettings.type;
/** @type {string} */
$.ajaxSettings.type;
/** @type {string} */
jQuery.ajaxSettings.url;
/** @type {string} */
$.ajaxSettings.url;
/** @return {XMLHttpRequest|ActiveXObject} */
jQuery.ajaxSettings.xhr = function() {};
/** @return {XMLHttpRequest|ActiveXObject} */
$.ajaxSettings.xhr = function() {};
/** @param {Object.<string,*>} options */
/** @param {jQueryAjaxSettings|Object.<string, *>} options */
jQuery.ajaxSetup = function(options) {};
/** @param {Object.<string,*>} options */
/** @param {jQueryAjaxSettings|Object.<string, *>} options */
$.ajaxSetup = function(options) {};
/**
@@ -240,7 +210,7 @@ jQuery.prototype.ajaxStart = function(handler) {};
jQuery.prototype.ajaxStop = function(handler) {};
/**
* @param {function(!jQuery.event,XMLHttpRequest,Object.<string, *>)} handler
* @param {function(!jQuery.event,XMLHttpRequest,(jQueryAjaxSettings|Object.<string, *>), ?)} handler
* @return {!jQuery}
*/
jQuery.prototype.ajaxSuccess = function(handler) {};
@@ -834,8 +804,9 @@ jQuery.prototype.fadeTo = function(duration, opacity, arg3, callback) {};
jQuery.prototype.fadeToggle = function(duration, easing, callback) {};
/**
* @param {(jQuerySelector|function(number)|Element|jQuery)} arg1
* @param {(jQuerySelector|function(number,Element)|Element|jQuery)} arg1
* @return {!jQuery}
* @see http://api.jquery.com/filter/
*/
jQuery.prototype.filter = function(arg1) {};

View File

@@ -55,10 +55,18 @@ oli.DrawEvent.prototype.feature;
oli.ObjectEvent = function() {};
/** @type {string} */
/**
* @type {string}
*/
oli.ObjectEvent.prototype.key;
/**
* @type {*}
*/
oli.ObjectEvent.prototype.oldValue;
/**
* @interface
@@ -84,6 +92,12 @@ oli.MapBrowserEvent.prototype.originalEvent;
oli.MapBrowserEvent.prototype.pixel;
/**
* @type {boolean}
*/
oli.MapBrowserEvent.prototype.dragging;
/**
* @interface
@@ -122,13 +136,13 @@ oli.control.Control = function() {};
oli.control.Control.prototype.setMap = function(map) {};
/**
* @type {Object}
*/
oli.interaction;
/**
* @interface
*/
@@ -196,6 +210,17 @@ oli.render.Event.prototype.vectorContext;
oli.source;
/**
* @interface
*/
oli.source.TileEvent = function() {};
/**
* @type {ol.Tile}
*/
oli.source.TileEvent.prototype.tile;
/**
* @interface

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