Compare commits

..

468 Commits

Author SHA1 Message Date
Andreas Hocevar
c9c845394f Merge pull request #4238 from openlayers/release-v3.10.0
Release v3.10.0
2015-10-08 19:17:58 +02:00
Andreas Hocevar
63bc9459d9 Update package version to 3.10.0 2015-10-08 19:16:23 +02:00
Andreas Hocevar
f6d40faa3d Changelog for v3.10.0 2015-10-08 19:15:48 +02:00
Andreas Hocevar
c475902e19 Merge pull request #4237 from awaterme/master
#3328: GML3 - Writing features with multiple geometries
2015-10-08 18:11:53 +02:00
Andreas Watermeyer
687a65aa95 #3328: reformatted fixjsstyle 2015-10-08 17:21:15 +02:00
Andreas Watermeyer
4c207d9460 #3328: Reformat once again 2015-10-08 17:09:48 +02:00
awaterme
5fb7a8bc34 #3328: Reformatted details. 2015-10-08 16:52:32 +02:00
Andreas Hocevar
391e2b6fea Merge pull request #4218 from jonataswalker/getlayer-from-selectinteraction
Add 'getLayer()' method to 'ol.interaction.Select'
2015-10-08 16:20:31 +02:00
jonataswalker
04c16106cd Add unit test to ol.interaction.Select#getLayer 2015-10-08 16:18:33 +02:00
jonataswalker
85163bceb6 Add 'getLayer()' method to 'ol.interaction.Select' 2015-10-08 16:18:33 +02:00
jonataswalker
094f8d5391 Add 'getLayer()' method to 'ol.interaction.Select' 2015-10-08 16:18:33 +02:00
Andreas Hocevar
09026af4fa Merge pull request #4236 from ahocevar/recover-from-conflict-4036
Recover from bad merge conflict resolution in #4036
2015-10-08 15:34:37 +02:00
Andreas Hocevar
d429eba4ae Merge pull request #3858 from Jebjum/master
Fix graticule on wrapped views
2015-10-08 15:27:37 +02:00
Andreas Hocevar
dc0c0877d7 Recover from bad merge conflict resolution in #4036 2015-10-08 15:18:11 +02:00
Andreas Hocevar
21d001b22a Merge pull request #4036 from alvinlindstam/fix-modify-events
Fix modify interaction event order
2015-10-08 12:23:38 +02:00
Alvin Lindstam
487c22ceae Fix miswritten test 2015-10-08 12:23:11 +02:00
Alvin Lindstam
72a9460ff6 Fix modify event trigger order, should trigger modifystart before any modification and modifyend last. 2015-10-08 12:23:11 +02:00
Andreas Hocevar
46a1140583 Merge pull request #4036 from alvinlindstam/fix-modify-events
Fix modify interaction event order
2015-10-08 12:17:57 +02:00
Andreas Hocevar
f95b154117 Merge pull request #4116 from ahocevar/overviewmap-view
Make ol.control.OverviewMap's view configurable
2015-10-08 11:44:38 +02:00
Andreas Hocevar
7c5bec260b Merge pull request #4234 from tbarsballe/ogcwkt-proj4
Support OGC WKT proj4 def.units and def.to_meter
2015-10-07 20:59:00 +02:00
Torben Barsbsballe
7cefe56167 Support OGC WKT proj4 def.units and def.to_meter 2015-10-07 11:18:52 -07:00
Frédéric Junod
ce9ac92028 Merge pull request #4224 from fredj/simplify_rotate
Don't transform the angle into degrees to rotate the element
2015-10-07 09:04:41 +02:00
Andreas Hocevar
da830a7670 Merge pull request #4231 from ahocevar/revert-4217
Revert "Merge pull request #4217 from ThomasG77/clipboardjs-replacement"
2015-10-06 16:19:25 +02:00
Andreas Hocevar
e242c2ca1d Revert "Merge pull request #4217 from ThomasG77/clipboardjs-replacement"
This reverts commit 82e989b652, reversing
changes made to 0e83c90377.
2015-10-06 16:17:43 +02:00
Andreas Hocevar
82e989b652 Merge pull request #4217 from ThomasG77/clipboardjs-replacement
Replace ZeroClipboard with Clipboard.js to remove flash dependency
2015-10-06 16:08:15 +02:00
Frédéric Junod
0e83c90377 Merge pull request #4223 from fredj/rm_easing
Remove goog.fx.easing
2015-10-06 14:38:52 +02:00
Frédéric Junod
fb243807e8 Merge pull request #4222 from fredj/cleanup
Remove unnecessary cast
2015-10-06 14:27:55 +02:00
Frederic Junod
d495b19448 Don't transform the angle into degrees to rotate the element 2015-10-06 14:04:47 +02:00
Frederic Junod
ef5cdb0ec6 Remove goog.fx.easing 2015-10-06 14:00:06 +02:00
Frederic Junod
b3493c6382 Remove unnecessary cast 2015-10-06 11:26:39 +02:00
Andreas Hocevar
17bac04030 Merge pull request #4209 from gberaudo/remove_goog_string_remove
Remove goog.string.remove
2015-10-05 10:04:13 +02:00
Andreas Hocevar
e01c16c00b Merge pull request #4207 from gberaudo/remove_goog_string_startsWith
Remove goog.string.startsWith
2015-10-05 09:28:44 +02:00
Frédéric Junod
5abeaf3716 Merge pull request #4208 from gberaudo/remove_goog_string_trim
Remove goog.string.trim()
2015-10-05 09:06:32 +02:00
Andreas Hocevar
1d86ae3e3f Merge pull request #4216 from ahocevar/fill-stroke-boolean
Fix canvas replay which broke with 31a68e2
2015-10-05 08:57:36 +02:00
ThomasG77
7192a6d1a5 Replace ZeroClipboard with Clipboard.js to remove flash dependency 2015-10-05 01:23:20 +02:00
Andreas Hocevar
deea8060af Fix canvas replay which broke with 31a68e2
See #4192
2015-10-04 23:12:39 +02:00
Andreas Hocevar
faff14c44c Merge pull request #4164 from spatialillusions/patch-1 2015-10-02 11:11:08 +02:00
Andreas Hocevar
2d7d002c85 Fix coding style 2015-10-02 11:05:19 +02:00
Guillaume Beraudo
9b3f61a084 Remove goog.string.remove
Use standard replace method instead.
2015-10-01 14:54:04 +02:00
Frédéric Junod
4cf1ee769e Merge pull request #4202 from fredj/rm_appendChild
Remove use of goog.dom.appendChild
2015-10-01 14:49:15 +02:00
Frédéric Junod
0a617bef12 Merge pull request #4205 from fredj/cleanup
Minor cleanup
2015-10-01 14:23:43 +02:00
Guillaume Beraudo
fef1b0981e Remove goog.string.trim()
Replace with standard ECMAScript 5.1.
2015-10-01 14:14:06 +02:00
Guillaume Beraudo
b092bce4ff Remove goog.string.startsWith
Replace with simple indexOf test
2015-10-01 14:00:42 +02:00
Frederic Junod
ef9b64673e Remove unused local variables 2015-10-01 13:38:55 +02:00
Frederic Junod
4d53049a7f Remove unnecessary cast 2015-10-01 13:38:49 +02:00
Marc Jansen
900827987a Merge pull request #4203 from marcjansen/formatting-post-4184
Cosmetic changes to example html / css
2015-10-01 13:00:05 +02:00
Marc Jansen
53d079ed95 Cosmetic changes to example html / css 2015-10-01 12:35:53 +02:00
Marc Jansen
63ae481dae Merge pull request #4184 from jonataswalker/getfeatureinfo-example
Adjust iframe's position of GetFeatureInfo examples
2015-10-01 12:32:15 +02:00
Frederic Junod
9b6ad1b36f Remove use of goog.dom.appendChild
Use `parent.appendChild(child)` instead.
2015-10-01 12:06:38 +02:00
Marc Jansen
e5397cbfca Merge pull request #4192 from marcjansen/simpler-no-is-null
Remove use of goog.isNull in favor of simple truthy checks
2015-10-01 09:30:34 +02:00
Marc Jansen
a38ac3a07b Use !!expr and not the verbose expr !== null
This addresses review comments by @tschaub.
2015-10-01 09:18:53 +02:00
Marc Jansen
d5c5d651cb Remove goog.isNull in xml class 2015-10-01 09:18:53 +02:00
Marc Jansen
ef0153692e Remove goog.isNull in tileurlfunction class 2015-10-01 09:18:53 +02:00
Marc Jansen
5daf741922 Remove goog.isNull in tilecoord class 2015-10-01 09:18:53 +02:00
Marc Jansen
ae657518c5 Remove goog.isNull in view class 2015-10-01 09:18:53 +02:00
Marc Jansen
7d110c829f Remove goog.isNull in tilegrid class 2015-10-01 09:18:53 +02:00
Marc Jansen
369f5a6171 Remove goog.isNull in lrucache class 2015-10-01 09:18:53 +02:00
Marc Jansen
b11c9c3b9c Remove goog.isNull in proj class 2015-10-01 09:18:53 +02:00
Marc Jansen
7530e46cfa Remove goog.isNull in pointereventhandler class 2015-10-01 09:18:53 +02:00
Marc Jansen
2b84e0f245 Remove goog.isNull in overlay class 2015-10-01 09:18:53 +02:00
Marc Jansen
5502083af9 Remove goog.isNull in mapbrowserevent class 2015-10-01 09:18:53 +02:00
Marc Jansen
02fe825113 Remove goog.isNull in map class 2015-10-01 09:18:53 +02:00
Marc Jansen
6aa75c490b Remove goog.isNull in has class 2015-10-01 09:18:53 +02:00
Marc Jansen
89456e7906 Remove goog.isNull in graticule class 2015-10-01 09:18:53 +02:00
Marc Jansen
442caade91 Remove goog.isNull in geolocation class 2015-10-01 09:18:53 +02:00
Marc Jansen
e479411614 Remove goog.isNull in feature class 2015-10-01 09:18:53 +02:00
Marc Jansen
f360080fa7 Remove goog.isNull in dom class 2015-10-01 09:18:53 +02:00
Marc Jansen
e65384a407 Remove goog.isNull in deviceorientation class 2015-10-01 09:18:53 +02:00
Marc Jansen
3552f5ff66 Remove goog.isNull in attribution class 2015-10-01 09:18:53 +02:00
Marc Jansen
54d4434900 Remove goog.isNull in animation class 2015-10-01 09:18:53 +02:00
Marc Jansen
7ceb7a439e Remove goog.isNull in webgl classes 2015-10-01 09:18:53 +02:00
Marc Jansen
f9b07991e1 Remove goog.isNull in style classes 2015-10-01 09:18:53 +02:00
Marc Jansen
e1f477ad8c Remove goog.isNull in source classes 2015-10-01 09:18:52 +02:00
Marc Jansen
30e2f44825 Remove goog.isNull in image classes 2015-10-01 09:17:14 +02:00
Marc Jansen
138adf0509 Remove goog.isNull in renderer classes 2015-10-01 09:17:14 +02:00
Marc Jansen
31a68e21a5 Remove goog.isNull in render classes 2015-10-01 09:17:14 +02:00
Marc Jansen
f5788a32a7 Remove goog.isNull in layer classes 2015-10-01 09:17:14 +02:00
Marc Jansen
be2e4a33ae Remove goog.isNull in interaction classes 2015-10-01 09:17:14 +02:00
Marc Jansen
3c4e663224 Remove goog.isNull in geom classes 2015-10-01 09:17:14 +02:00
Marc Jansen
eb5088eb40 Remove goog.isNull in format classes 2015-10-01 09:17:14 +02:00
Marc Jansen
d728c71f02 Remove goog.isNull in control classes 2015-10-01 09:15:15 +02:00
Andreas Hocevar
8813180d41 Merge pull request #4187 from ahocevar/dashy-tileurl
Fix {-y} template calculation for custom (TMS) tile grids
2015-10-01 08:11:05 +02:00
Tim Schaub
6bdacced92 Merge pull request #4176 from tschaub/remove-isdefandnotnull
Remove use of goog.isDefAndNotNull().
2015-10-01 00:05:57 -06:00
Marc Jansen
74fffd5851 Merge pull request #4200 from marcjansen/no-object-get
Do not use goog.object.get
2015-10-01 07:09:57 +02:00
Marc Jansen
c4d5036878 Do not use goog.object.get 2015-09-30 22:27:39 +02:00
Andreas Hocevar
e6c5fa9cd7 Merge pull request #4198 from denilsonsa/patch-2
Improve ol.control.Rotate.prototype.resetNorth_ performance
2015-09-30 16:26:09 +02:00
Frédéric Junod
d29db03863 Merge pull request #4197 from denilsonsa/patch-1
Remove blur action on MOUSEOUT on Zoom Out button
2015-09-30 14:42:47 +02:00
Denilson Figueiredo de Sá
c8f0bb0ade Improve ol.control.Rotate.prototype.resetNorth_ performance
Changing. resetNorth_ function from O(n) to O(1).

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

    map.getView().setRotation(5000000000);

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

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

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

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

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

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

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

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

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

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

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

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

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

This patch handles a batched feature without a geometry in the same
fashion as skipped features.
2015-08-04 18:08:54 +02:00
geonux
999880f350 Add missing braces on statement 2015-08-04 15:02:49 +02:00
Frédéric Junod
85815a32a0 Merge pull request #3960 from fredj/extra_require
Remove unused goog.require
2015-08-04 10:25:39 +02:00
Frederic Junod
0a6745f1e4 Remove unused goog.require
Found by the latest version of closure-compiler (v20150729)
2015-08-04 10:01:11 +02:00
Tim Schaub
08c01de6b0 Merge pull request #3959 from tschaub/release-tweaks
Minor updates to release procedure.
2015-08-04 01:09:10 -06:00
Tim Schaub
ad2b4a3863 Configure travis-ci/push job to only build pushes to master 2015-08-04 00:32:39 -06:00
Tim Schaub
91d6844ecd Install latest dependencies before building 2015-08-04 00:30:39 -06:00
cmiles74
89b62cd53b Resolved issue with cluster source reloading
The cluster source was not reloading when a map was panned, only when
the resolution changed.
2015-07-22 09:18:41 -04:00
Julien Enselme
b66a114873 Add test to check that Style is not added a feature property 2015-07-13 17:05:08 +02:00
geonux
64ab764827 Renaming the method description according to 'probins' proposal. 2015-07-06 15:07:56 +02:00
geonux
314b04df7a Add assertions to pass the validation step. 2015-07-06 13:49:42 +02:00
geonux
29b1f0d55d Add the capability to remove(undo) the last drawed segments. 2015-07-06 12:11:34 +02:00
Ryan Curry
9a44895d41 Update graticule.js - fixed style / missing line
My comment on line 375 was too long, so I broke it up into multiple lines. Also I accidentally left a line out of the commit (line 384) when transcribing my changes into the web based editor.
2015-07-02 12:35:38 -07:00
Ryan Curry
56e871f8b5 Update graticule.js - fixed typo/build error
Corrected reference to variable frameState - it was misspelled by the previous commit.
2015-07-02 12:23:05 -07:00
Ryan Curry
de6ecb22a8 graticule.js - Fixed build. No functional change.
viewContext.extent_ is private, so we can't use it directly. Instead, re-calculate the corrected wrapped extent.
2015-07-02 12:20:05 -07:00
Ryan Curry
7b4a954c40 graticule.js now uses vectorContext.extent_
When creating the graticule use the extent from the vectorContext instead of the frameState to determine what parallels and meridians should be created. This will allow the graticule to be drawn correctly on views that wrap across the dateline.
2015-06-30 11:09:20 -07:00
Ryan Curry
1159e1f792 Merge pull request #1 from openlayers/master
Test Merge openlayers master
2015-06-30 11:03:24 -07:00
Éric Lemoine
ae1221d811 Do not add Style as a feature property
This makes the KML format not add a Style property on features, as this may cause problems when serializing to another format such as JSON.
2015-06-22 10:11:46 +02:00
Andreas Watermeyer
c530f872f9 #3328 - GML3: Writing features with multiple geometries 2015-04-07 10:32:26 +02:00
313 changed files with 9826 additions and 6579 deletions

View File

@@ -10,8 +10,6 @@ insert_final_newline = true
[*.md]
indent_size = 2
[*.md]
trim_trailing_whitespace = false
[Makefile]

View File

@@ -7,7 +7,6 @@ env:
- DISPLAY=:99.0
before_install:
- "pip install -r requirements.txt"
- "npm install -g npm && npm install"
before_script:
@@ -19,3 +18,7 @@ script: "make ci"
after_success:
- "make test-coverage"
- "cat coverage/lcov.info | ./node_modules/.bin/coveralls"
branches:
only:
- master

View File

@@ -38,7 +38,7 @@ Contributor License Agreement](https://docs.google.com/spreadsheet/viewform?form
## Setting up development environment
You will obviously start by
[forking](https://github.com/openlayers/ol3/fork_select) the ol3 repository.
[forking](https://github.com/openlayers/ol3/fork) the ol3 repository.
### Travis CI

View File

@@ -171,7 +171,7 @@ host-libraries: build/timestamps/node-modules-timestamp
@mkdir -p $(BUILD_HOSTED)/ol.ext
@cp -r build/ol.ext/* $(BUILD_HOSTED)/ol.ext/
$(BUILD_EXAMPLES): $(EXAMPLES)
$(BUILD_EXAMPLES): $(EXAMPLES) package.json
@mkdir -p $(@D)
@node tasks/build-examples.js
@@ -188,13 +188,13 @@ build/timestamps/check-%-timestamp: $(BUILD_HOSTED)/examples/%.html \
build/timestamps/check-requires-timestamp: $(SRC_JS) $(EXAMPLES_JS) \
$(SRC_SHADER_JS) $(SPEC_JS) \
$(SPEC_RENDERING JS)
$(SPEC_RENDERING_JS)
@mkdir -p $(@D)
@python bin/check-requires.py $(CLOSURE_LIB) $^
@touch $@
build/timestamps/check-whitespace-timestamp: $(SRC_JS) $(EXAMPLES_JS) \
$(SPEC_JS) $(SPEC_RENDERING JS) \
$(SPEC_JS) $(SPEC_RENDERING_JS) \
$(SRC_JSDOC)
@mkdir -p $(@D)
@python bin/check-whitespace.py $^
@@ -323,5 +323,5 @@ build/test_rendering_requires.js: $(SPEC_RENDERING_JS)
@mkdir -p $(@D)
@node tasks/generate-requires.js $^ > $@
%shader.js: %.glsl src/ol/webgl/shader.mustache bin/pyglslunit.py
@python bin/pyglslunit.py --input $< --template src/ol/webgl/shader.mustache --output $@
%shader.js: %.glsl src/ol/webgl/shader.mustache bin/pyglslunit.py build/timestamps/node-modules-timestamp
@python bin/pyglslunit.py --input $< | ./node_modules/.bin/mustache - src/ol/webgl/shader.mustache > $@

View File

@@ -13,7 +13,7 @@
## Documentation
Check out the [hosted examples](http://openlayers.org/en/master/examples/), the [workshop](http://openlayers.org/ol3-workshop/) or [API docs](http://openlayers.org/en/master/apidoc/).
Check out the [hosted examples](http://openlayers.org/en/master/examples/), the [workshop](http://openlayers.org/workshop/) or [API docs](http://openlayers.org/en/master/apidoc/).
## Bugs

View File

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

View File

@@ -1,5 +1,27 @@
## Upgrade notes
### v3.11.0
### v3.10.0
#### `ol.layer.Layer` changes
The experimental `setHue`, `setContrast`, `setBrightness`, `setSaturation`, and the corresponding getter methods have been removed. These properties only worked with the WebGL renderer. If are interested in applying color transforms, look for the `postcompose` event in the API docs. In addition, the `ol.source.Raster` source provides a way to create new raster data based on arbitrary transforms run on any number of input sources.
### v3.9.0
#### `ol.style.Circle` changes
The experimental `getAnchor`, `getOrigin`, and `getSize` methods have been removed. The anchor and origin of a circle symbolizer are not modifiable, so these properties should not need to be accessed. The radius and stroke width can be used to calculate the rendered size of a circle symbolizer if needed:
```js
// calculate rendered size of a circle symbolizer
var width = 2 * circle.getRadius();
if (circle.getStroke()) {
width += circle.getStroke().getWidth() + 1;
}
```
### v3.8.0
There should be nothing special required when upgrading from v3.7.0 to v3.8.0.

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

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

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

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

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

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

View File

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

View File

@@ -14,6 +14,7 @@
"externs/bingmaps.js",
"externs/bootstrap.js",
"externs/closure-compiler.js",
"externs/esrijson.js",
"externs/example.js",
"externs/fastclick.js",
"externs/geojson.js",
@@ -29,41 +30,13 @@
"goog.DEBUG=false"
],
"jscomp_error": [
"accessControls",
"ambiguousFunctionDecl",
"checkEventfulObjectDisposal",
"checkRegExp",
"checkStructDictInheritance",
"checkTypes",
"checkVars",
"const",
"constantProperty",
"deprecated",
"duplicateMessage",
"es3",
"es5Strict",
"externsValidation",
"fileoverviewTags",
"globalThis",
"internetExplorerChecks",
"invalidCasts",
"misplacedTypeAnnotation",
"missingGetCssName",
"missingProperties",
"missingProvide",
"missingRequire",
"missingReturn",
"newCheckTypes",
"nonStandardJsDocs",
"suspiciousCode",
"strictModuleDepCheck",
"typeInvalidation",
"undefinedNames",
"undefinedVars",
"uselessCode",
"visibility"
"*"
],
"jscomp_off": [
"useOfGoogBase",
"unnecessaryCasts",
"lintChecks",
"missingProvide",
"unknownDefines"
],
"extra_annotation_name": [

View File

@@ -30,40 +30,12 @@
"goog.DEBUG=false"
],
"jscomp_error": [
"accessControls",
"ambiguousFunctionDecl",
"checkEventfulObjectDisposal",
"checkRegExp",
"checkStructDictInheritance",
"checkTypes",
"checkVars",
"const",
"constantProperty",
"deprecated",
"duplicateMessage",
"es3",
"es5Strict",
"externsValidation",
"fileoverviewTags",
"globalThis",
"internetExplorerChecks",
"invalidCasts",
"misplacedTypeAnnotation",
"missingGetCssName",
"missingProperties",
"missingProvide",
"missingRequire",
"missingReturn",
"newCheckTypes",
"nonStandardJsDocs",
"suspiciousCode",
"strictModuleDepCheck",
"typeInvalidation",
"undefinedNames",
"undefinedVars",
"unknownDefines",
"uselessCode",
"visibility"
"*"
],
"jscomp_off": [
"useOfGoogBase",
"unnecessaryCasts",
"lintChecks"
],
"extra_annotation_name": [
"api", "observable"

View File

@@ -4,12 +4,13 @@
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="chrome=1">
<meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css" type="text/css">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" type="text/css">
<link rel="stylesheet" href="./resources/prism/prism.css" type="text/css">
<link rel="stylesheet" href="../css/ol.css" type="text/css">
<link rel="stylesheet" href="./resources/layout.css" type="text/css">
{{{ extraHead }}}
{{{ css.tag }}}
<link rel="stylesheet" href="./resources/prism/prism.css" type="text/css">
<script src="./resources/zeroclipboard/ZeroClipboard.min.js"></script>
<title>{{ title }}</title>
</head>
@@ -36,24 +37,26 @@
</div>
<div class="row-fluid">
<hr>
<form method="POST" target="_blank" action="http://jsfiddle.net/api/post/jquery/1.11.0/">
<input type="button" class="btn btn-info" id="copy-button" value="Copy example code">
<input type="submit" class="btn btn-primary" id="jsfiddle-button" value="Create JSFiddle">
<div id="source-controls">
<a id="copy-button"><i class="fa fa-clipboard"></i> Copy</a>
<a id="jsfiddle-button"><i class="fa fa-jsfiddle"></i> Edit</a>
</div>
<form method="POST" id="jsfiddle-form" target="_blank" action="http://jsfiddle.net/api/post/jquery/1.11.0/">
<textarea class="hidden" name="js">{{ js.source }}</textarea>
<textarea class="hidden" name="css">{{ css.source }}</textarea>
<textarea class="hidden" name="html">{{ contents }}</textarea>
<input type="hidden" name="wrap" value="l">
<input type="hidden" name="resources" value="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css,https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js,http://openlayers.org/en/{{ olVersion }}/css/ol.css,http://openlayers.org/en/{{ olVersion }}/build/ol.js">
<pre><code id="example-source" class="language-markup">&lt;!DOCTYPE html&gt;
<input type="hidden" name="resources" value="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css,https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js,http://openlayers.org/en/v{{ olVersion }}/css/ol.css,http://openlayers.org/en/v{{ olVersion }}/build/ol.js">
</form>
<pre><code id="example-source" class="language-markup">&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;{{ title }}&lt;/title&gt;
&lt;script src="https://code.jquery.com/jquery-1.11.2.min.js"&gt;&lt;/script&gt;
&lt;link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css"&gt;
&lt;script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"&gt;&lt;/script&gt;
&lt;link rel="stylesheet" href="http://openlayers.org/en/{{ olVersion }}/css/ol.css" type="text/css"&gt;
&lt;script src="http://openlayers.org/en/{{ olVersion }}/build/ol.js"&gt;&lt;/script&gt;
&lt;link rel="stylesheet" href="http://openlayers.org/en/v{{ olVersion }}/css/ol.css" type="text/css"&gt;
&lt;script src="http://openlayers.org/en/v{{ olVersion }}/build/ol.js"&gt;&lt;/script&gt;
{{ extraHead }}
{{#if css.source}}
&lt;style&gt;
@@ -71,7 +74,6 @@
&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;</code></pre>
</form>
</div>
</div>

View File

@@ -18,7 +18,6 @@
"plugins": [
"node_modules/jsdoc/plugins/markdown",
"config/jsdoc/api/plugins/inheritdoc",
"config/jsdoc/api/plugins/interface",
"config/jsdoc/api/plugins/typedefs",
"config/jsdoc/api/plugins/events",
"config/jsdoc/api/plugins/observable",

View File

@@ -35,6 +35,5 @@ Interactions for [vector features](ol.Feature.html)
<td><p>Changes to all [ol.Objects](ol.Object.html) can observed by calling the [object.on('propertychange')](ol.Object.html#on) method. Listeners receive an [ol.ObjectEvent](ol.ObjectEvent.html) with information on the changed property and old value.</p>
<td>[ol.DeviceOrientation](ol.DeviceOrientation.html)<br>
[ol.Geolocation](ol.Geolocation.html)<br>
[ol.Overlay](ol.Overlay.html)<br>
[ol.FeatureOverlay](ol.FeatureOverlay.html)<br></td>
[ol.Overlay](ol.Overlay.html)<br></td>
</tr></table>

View File

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

View File

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

View File

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

View File

@@ -37,10 +37,6 @@
<div class="main">
<h1 class="page-title" data-filename="<?js= filename ?>"><?js= title ?></h1>
<?js= content ?>
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc <?js= env.version.number ?></a> on <?js= (new Date()) ?>
</footer>
</div>
</div>
<script>prettyPrint();</script>

View File

@@ -49,7 +49,7 @@ exports.publish = function(data, opts) {
var externs = [];
var base = [];
var augments = {};
var names = {};
var symbolsByName = {};
docs.filter(function(doc) {
var include = true;
var constructor = doc.memberof;
@@ -144,8 +144,13 @@ exports.publish = function(data, opts) {
}
var target = isExterns ? externs : (doc.api ? symbols : base);
var existingSymbol = symbolsByName[symbol.name];
if (existingSymbol) {
var idx = target.indexOf(existingSymbol);
target.splice(idx, 1);
}
target.push(symbol);
names[symbol.name] = true;
symbolsByName[symbol.name] = symbol;
if (doc.api && symbol.extends) {
while (symbol.extends in classes && !classes[symbol.extends].api &&

View File

@@ -20,40 +20,12 @@
"goog.DEBUG=false"
],
"jscomp_error": [
"accessControls",
"ambiguousFunctionDecl",
"checkEventfulObjectDisposal",
"checkRegExp",
"checkStructDictInheritance",
"checkTypes",
"checkVars",
"const",
"constantProperty",
"deprecated",
"duplicateMessage",
"es3",
"es5Strict",
"externsValidation",
"fileoverviewTags",
"globalThis",
"internetExplorerChecks",
"invalidCasts",
"misplacedTypeAnnotation",
"missingGetCssName",
"missingProperties",
"missingProvide",
"missingRequire",
"missingReturn",
"newCheckTypes",
"nonStandardJsDocs",
"suspiciousCode",
"strictModuleDepCheck",
"typeInvalidation",
"undefinedNames",
"undefinedVars",
"unknownDefines",
"uselessCode",
"visibility"
"*"
],
"jscomp_off": [
"useOfGoogBase",
"unnecessaryCasts",
"lintChecks"
],
"extra_annotation_name": [
"api", "observable"

View File

@@ -9,7 +9,7 @@ If you're eager to get your first OpenLayers 3 map on a page, dive into the [qui
For a more in-depth overview of OpenLayers 3 core concepts, check out the [tutorials](tutorials/).
Make sure to also check out the [OpenLayers 3 workshop](../../../ol3-workshop/).
Make sure to also check out the [OpenLayers 3 workshop](/workshop/).
Find additional reference material in the [API docs](../apidoc).

View File

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

View File

@@ -239,7 +239,6 @@ Here is a version of `config.json` with more compilation checks enabled:
"ambiguousFunctionDecl",
"checkEventfulObjectDisposal",
"checkRegExp",
"checkStructDictInheritance",
"checkTypes",
"checkVars",
"const",

View File

@@ -14,8 +14,8 @@ tags: "animation"
</div>
<div class="row-fluid">
<div class="span12">
<button id="rotate-left"><i class="icon-arrow-left"></i></button>
<button id="rotate-right"><i class="icon-arrow-right"></i></button>
<button id="rotate-left" title="Rotate clockwise"></button>
<button id="rotate-right" title="Rotate counterclockwise"></button>
<button id="rotate-around-rome">Rotate around Rome</button>
<button id="pan-to-london">Pan to London</button>
<button id="elastic-to-moscow">Elastic to Moscow</button>

View File

@@ -1,7 +0,0 @@
#reset-brightness {
min-width: 138px;
}
#reset-contrast {
min-width: 120px;
}

View File

@@ -1,27 +0,0 @@
---
template: example.html
title: Brightness/contrast example
shortdesc: Example of brightness/contrast control on the client (WebGL only).
docs: >
This example shows how to control brightness/contrast on the client,
the example is limited to WebGL.
tags: "brightness, contrast, webgl"
---
<div class="row-fluid">
<div class="span12">
<div id="map" class="map"></div>
<div id="no-webgl" class="alert alert-error" style="display: none">
This example requires a browser that supports <a href="http://get.webgl.org/">WebGL</a>.
</div>
<div class="btn-group">
<button id="increase-brightness"><i class="icon-plus"></i></button>
<button id="reset-brightness">Brightness</button>
<button id="decrease-brightness"><i class="icon-minus"></i></button>
</div>
<div class="btn-group">
<button id="increase-contrast"><i class="icon-plus"></i></button>
<button id="reset-contrast">Contrast</button>
<button id="decrease-contrast"><i class="icon-minus"></i></button>
</div>
</div>
</div>

View File

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

View File

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

File diff suppressed because it is too large Load Diff

View File

@@ -1,13 +0,0 @@
---
template: example.html
title: Drag features example
shortdesc: Example of a drag features interaction.
docs: >
The drag features interaction can be used to drag features to a new position.
tags: "drag, feature, vector, editing"
---
<div class="row-fluid">
<div class="span12">
<div id="map" class="map"></div>
</div>
</div>

View File

@@ -9,10 +9,10 @@ tags: "export, png, openstreetmap"
<div class="row-fluid">
<div class="span12">
<div id="map" class="map"></div>
<div id="no-download" class="alert alert-error" style="display: none">
<div id="no-download" class="alert alert-danger" style="display: none">
This example requires a browser that supports the
<a href="http://caniuse.com/#feat=download">link download</a> attribute.
</div>
<a id="export-png" class="btn" download="map.png"><i class="icon-download"></i> Export PNG</a>
<a id="export-png" class="btn btn-default" download="map.png"><i class="fa fa-download"></i> Export PNG</a>
</div>
</div>

View File

@@ -72,8 +72,7 @@ function flash(feature) {
snapToPixel: false,
stroke: new ol.style.Stroke({
color: 'rgba(255, 0, 0, ' + opacity + ')',
width: 1,
opacity: opacity
width: 1
})
});

View File

@@ -10,7 +10,7 @@ tags: "geolocation, openstreetmap"
<div class="span12">
<div id="map" class="map"></div>
<div class="span4 pull-right">
<div id="info" class="alert alert-error" style="display: none;"></div>
<div id="info" class="alert alert-danger" style="display: none;"></div>
</div>
<label class="checkbox" for="track">
<input id="track" type="checkbox"/>track position

View File

@@ -9,10 +9,12 @@ tags: "getfeatureinfo, forEachLayerAtPixel"
<div class="row-fluid">
<div class="span12">
<div id="map" class="map"></div>
<div class="span4 offset4 pull-right">
<div id="info" class="alert alert-success">
&nbsp;
</div>
</div>
</div>
<div class="row-fluid">
<div class="span4 offset4 iframe-info">
<div id="info" class="alert alert-success">
&nbsp;
</div>
</div>
</div>

View File

@@ -9,10 +9,12 @@ tags: "getfeatureinfo, forEachLayerAtPixel"
<div class="row-fluid">
<div class="span12">
<div id="map" class="map"></div>
<div class="span4 offset4 pull-right">
<div id="info" class="alert alert-success">
&nbsp;
</div>
</div>
</div>
<div class="row-fluid">
<div class="span4 offset4 iframe-info">
<div id="info" class="alert alert-success">
&nbsp;
</div>
</div>
</div>

View File

@@ -1,6 +0,0 @@
#reset-hue {
min-width: 90px;
}
#reset-saturation {
min-width: 124px;
}

View File

@@ -1,26 +0,0 @@
---
template: example.html
title: Hue/saturation example
shortdesc: Example of hue/saturation control on the client (WebGL only).
docs: >
Example of hue/saturation control on the client (WebGL only).
tags: "custom, control"
---
<div class="row-fluid">
<div class="span12">
<div id="map" class="map"></div>
<div id="no-webgl" class="alert alert-error" style="display: none">
This example requires a browser that supports <a href="http://get.webgl.org/">WebGL</a>.
</div>
<div class="btn-group">
<button id="increase-hue"><i class="icon-plus"></i></button>
<button id="reset-hue">Hue</button>
<button id="decrease-hue"><i class="icon-minus"></i></button>
</div>
<div class="btn-group">
<button id="increase-saturation"><i class="icon-plus"></i></button>
<button id="reset-saturation">Saturation</button>
<button id="decrease-saturation"><i class="icon-minus"></i></button>
</div>
</div>
</div>

View File

@@ -1,79 +0,0 @@
goog.require('ol.Map');
goog.require('ol.View');
goog.require('ol.has');
goog.require('ol.layer.Tile');
goog.require('ol.proj');
goog.require('ol.source.BingMaps');
function setResetHueButtonHTML() {
resetHue.innerHTML = 'Hue (' + layer.getHue().toFixed(2) + ')';
}
function setResetSaturationButtonHTML() {
resetSaturation.innerHTML = 'Saturation (' +
layer.getSaturation().toFixed(2) + ')';
}
if (!ol.has.WEBGL) {
var info = document.getElementById('no-webgl');
/**
* display error message
*/
info.style.display = '';
} else {
var layer = new ol.layer.Tile({
source: new ol.source.BingMaps({
key: 'Ak-dzM4wZjSqTlzveKz5u0d4IQ4bRzVI309GxmkgSVr1ewS6iPSrOvOKhA-CJlm3',
imagerySet: 'Aerial'
})
});
var map = new ol.Map({
layers: [layer],
renderer: 'webgl',
target: 'map',
view: new ol.View({
center: ol.proj.fromLonLat([-9.375, 51.483333]),
zoom: 15
})
});
var increaseHue = document.getElementById('increase-hue');
var resetHue = document.getElementById('reset-hue');
var decreaseHue = document.getElementById('decrease-hue');
setResetHueButtonHTML();
increaseHue.addEventListener('click', function() {
layer.setHue(layer.getHue() + 0.25);
setResetHueButtonHTML();
}, false);
resetHue.addEventListener('click', function() {
layer.setHue(0);
setResetHueButtonHTML();
}, false);
decreaseHue.addEventListener('click', function() {
layer.setHue(layer.getHue() - 0.25);
setResetHueButtonHTML();
}, false);
var increaseSaturation = document.getElementById('increase-saturation');
var resetSaturation = document.getElementById('reset-saturation');
var decreaseSaturation = document.getElementById('decrease-saturation');
setResetSaturationButtonHTML();
increaseSaturation.addEventListener('click', function() {
layer.setSaturation(layer.getSaturation() + 0.25);
setResetSaturationButtonHTML();
}, false);
resetSaturation.addEventListener('click', function() {
layer.setSaturation(1);
setResetSaturationButtonHTML();
}, false);
decreaseSaturation.addEventListener('click', function() {
layer.setSaturation(Math.max(layer.getSaturation() - 0.25, 0));
setResetSaturationButtonHTML();
}, false);
}

View File

@@ -33,10 +33,11 @@ Progress.prototype.addLoading = function() {
* Increment the count of loaded tiles.
*/
Progress.prototype.addLoaded = function() {
var this_ = this;
setTimeout(function() {
++this.loaded;
this.update();
}.bind(this), 100);
++this_.loaded;
this_.update();
}, 100);
};
@@ -49,7 +50,10 @@ Progress.prototype.update = function() {
if (this.loading === this.loaded) {
this.loading = 0;
this.loaded = 0;
setTimeout(this.hide.bind(this), 500);
var this_ = this;
setTimeout(function() {
this_.hide();
}, 500);
}
};

View File

@@ -170,13 +170,13 @@
for (var i = 0; i < info.examples.length; ++i) {
info.examples[i].link += window.location.search;
}
// document.getElementById('keywords').focus();
template = new jugl.Template("template");
target = document.getElementById("examples");
listExamples(info.examples);
document.getElementById("keywords").onkeyup = inputChange;
parseQuery();
};
</script>
<title>OpenLayers 3 Examples</title>
@@ -187,7 +187,7 @@
<div class="container">
<a class="navbar-brand" href="./"><img src="./resources/logo-70x70.png">&nbsp;OpenLayers 3 Examples</a>
<form class="navbar-form navbar-left" role="search">
<input name="q" type="text" id="keywords" class="search-query" placeholder="Search">
<input name="q" type="text" id="keywords" class="search-query" placeholder="Search" autofocus>
<span id="count"></span>
</form>
</div>

19
examples/jsts.html Normal file
View File

@@ -0,0 +1,19 @@
---
template: example.html
title: JSTS Example
shortdesc: Example on how to use JSTS with OpenLayers 3.
docs: >
Example showing the integration of <a href="https://github.com/bjornharrtell/jsts">JSTS</a>
with OpenLayers 3.
tags: "vector, jsts, buffer"
resources:
- https://cdn.rawgit.com/bjornharrtell/jsts/gh-pages/lib/0.16.0/javascript.util.min.js
- https://cdn.rawgit.com/bjornharrtell/jsts/gh-pages/lib/0.16.0/jsts.min.js
---
<div class="row-fluid">
<div class="span12">
<div id="map" class="map"></div>
</div>
</div>

53
examples/jsts.js Normal file
View File

@@ -0,0 +1,53 @@
// NOCOMPILE
// this example uses JSTS for which we don't have an externs file.
goog.require('ol.Feature');
goog.require('ol.Map');
goog.require('ol.View');
goog.require('ol.format.GeoJSON');
goog.require('ol.layer.Tile');
goog.require('ol.layer.Vector');
goog.require('ol.proj');
goog.require('ol.source.MapQuest');
goog.require('ol.source.Vector');
var source = new ol.source.Vector();
$.ajax('data/geojson/roads-seoul.geojson').then(function(response) {
var format = new ol.format.GeoJSON();
var features = format.readFeatures(response,
{featureProjection: 'EPSG:3857'});
var parser = new jsts.io.olParser();
for (var i = 0; i < features.length; i++) {
var feature = features[i];
// convert the OpenLayers geometry to a JSTS geometry
var jstsGeom = parser.read(feature.getGeometry());
// create a buffer of 40 meters around each line
var buffered = jstsGeom.buffer(40);
// convert back from JSTS and replace the geometry on the feature
feature.setGeometry(parser.write(buffered));
}
source.addFeatures(features);
});
var vectorLayer = new ol.layer.Vector({
source: source
});
var rasterLayer = new ol.layer.Tile({
source: new ol.source.MapQuest({
layer: 'osm'
})
});
var map = new ol.Map({
layers: [rasterLayer, vectorLayer],
target: document.getElementById('map'),
view: new ol.View({
center: ol.proj.fromLonLat([126.979293, 37.528787]),
zoom: 15
})
});

View File

@@ -11,6 +11,6 @@ tags: "clipping, webgl, openstreetmap"
<div id="map" class="map"></div>
</div>
</div>
<div id="no-webgl" class="alert alert-error" style="display: none">
<div id="no-webgl" class="alert alert-danger" style="display: none">
This example requires a browser that supports <a href="http://get.webgl.org/">WebGL</a>.
</div>

View File

@@ -20,14 +20,6 @@ tags: "tilejson, input, bind, group, layergroup"
</label>
<label>opacity</label>
<input class="opacity" type="range" min="0" max="1" step="0.01"/>
<label>hue</label>
<input class="hue" type="range" min="-3.141592653589793" max="3.141592653589793" step="0.01"/>
<label>saturation</label>
<input class="saturation" type="range" min="0" max="5" step="0.01"/>
<label>contrast</label>
<input class="contrast" type="range" min="0" max="2" step="0.01"/>
<label>brightness</label>
<input class="brightness" type="range" min="-1" max="1" step="0.01"/>
</fieldset>
</li>
<li><span>Layer group</span>
@@ -37,14 +29,6 @@ tags: "tilejson, input, bind, group, layergroup"
</label>
<label>opacity</label>
<input class="opacity" type="range" min="0" max="1" step="0.01"/>
<label>hue</label>
<input class="hue" type="range" min="-3.141592653589793" max="3.141592653589793" step="0.01"/>
<label>saturation</label>
<input class="saturation" type="range" min="0" max="5" step="0.01"/>
<label>contrast</label>
<input class="contrast" type="range" min="0" max="2" step="0.01"/>
<label>brightness</label>
<input class="brightness" type="range" min="-1" max="1" step="0.01"/>
</fieldset>
<ul>
<li><span>Food insecurity layer</span>
@@ -54,14 +38,6 @@ tags: "tilejson, input, bind, group, layergroup"
</label>
<label>opacity</label>
<input class="opacity" type="range" min="0" max="1" step="0.01"/>
<label>hue</label>
<input class="hue" type="range" min="-3.141592653589793" max="3.141592653589793" step="0.01"/>
<label>saturation</label>
<input class="saturation" type="range" min="0" max="5" step="0.01"/>
<label>contrast</label>
<input class="contrast" type="range" min="0" max="2" step="0.01"/>
<label>brightness</label>
<input class="brightness" type="range" min="-1" max="1" step="0.01"/>
</fieldset>
</li>
<li><span>World borders layer</span>
@@ -71,14 +47,6 @@ tags: "tilejson, input, bind, group, layergroup"
</label>
<label>opacity</label>
<input class="opacity" type="range" min="0" max="1" step="0.01"/>
<label>hue</label>
<input class="hue" type="range" min="-3.141592653589793" max="3.141592653589793" step="0.01"/>
<label>saturation</label>
<input class="saturation" type="range" min="0" max="5" step="0.01"/>
<label>contrast</label>
<input class="contrast" type="range" min="0" max="2" step="0.01"/>
<label>brightness</label>
<input class="brightness" type="range" min="-1" max="1" step="0.01"/>
</fieldset>
</li>
</ul>

View File

@@ -44,15 +44,11 @@ function bindInputs(layerid, layer) {
});
visibilityInput.prop('checked', layer.getVisible());
$.each(['opacity', 'hue', 'saturation', 'contrast', 'brightness'],
function(i, v) {
var input = $(layerid + ' input.' + v);
input.on('input change', function() {
layer.set(v, parseFloat(this.value));
});
input.val(String(layer.get(v)));
}
);
var opacityInput = $(layerid + ' input.opacity');
opacityInput.on('input change', function() {
layer.setOpacity(parseFloat(this.value));
});
opacityInput.val(String(layer.getOpacity()));
}
map.getLayers().forEach(function(layer, i) {
bindInputs('#layer' + i, layer);

View File

@@ -0,0 +1,28 @@
---
template: example.html
title: Z-index layer ordering example
shortdesc: Example of ordering layers using Z-index.
docs: >
tags: "layer, ordering, z-index"
---
<div class="row-fluid">
<div class="span12">
<div id="map" class="map"></div>
</div>
</div>
<div>
There are are two managed layers (square and triangle) and one unmanaged layer (star).</br>
The Z-index determines the rendering order; with {square: 1, triangle: 0, star: unmanaged} indices, the rendering order is triangle, square and star on top.
</div>
<div>
<label for="idx1">
<input type="number" id="idx1"></input>
Square layer Z-index
</label></br>
<label for="idx2">
<input type="number" id="idx2"></input>
Triangle layer Z-index
</label>
</div>

92
examples/layer-z-index.js Normal file
View File

@@ -0,0 +1,92 @@
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: 1});
var styles = {
'square': [new ol.style.Style({
image: new ol.style.RegularShape({
fill: new ol.style.Fill({color: 'blue'}),
stroke: stroke,
points: 4,
radius: 80,
angle: Math.PI / 4
})
})],
'triangle': [new ol.style.Style({
image: new ol.style.RegularShape({
fill: new ol.style.Fill({color: 'red'}),
stroke: stroke,
points: 3,
radius: 80,
rotation: Math.PI / 4,
angle: 0
})
})],
'star': [new ol.style.Style({
image: new ol.style.RegularShape({
fill: new ol.style.Fill({color: 'green'}),
stroke: stroke,
points: 5,
radius: 80,
radius2: 4,
angle: 0
})
})]
};
function createLayer(coordinates, styles, zIndex) {
var feature = new ol.Feature(new ol.geom.Point(coordinates));
feature.setStyle(styles);
var source = new ol.source.Vector({
features: [feature]
});
var vectorLayer = new ol.layer.Vector({
source: source
});
vectorLayer.setZIndex(zIndex);
return vectorLayer;
}
var layer0 = createLayer([40, 40], styles['star'], 0);
var layer1 = createLayer([0, 0], styles['square'], 1);
var layer2 = createLayer([0, 40], styles['triangle'], 0);
var layers = [];
layers.push(layer1);
layers.push(layer2);
var map = new ol.Map({
layers: layers,
target: 'map',
view: new ol.View({
center: [0, 0],
zoom: 18
})
});
layer0.setMap(map);
function bindInputs(id, layer) {
var idxInput = $('#idx' + id);
idxInput.on('input change', function() {
layer.setZIndex(parseInt(this.value, 10) || 0);
});
idxInput.val(String(layer.getZIndex()));
}
bindInputs(1, layer1);
bindInputs(2, layer2);

View File

@@ -8,6 +8,7 @@
border: 1px solid #cccccc;
bottom: 12px;
left: -50px;
min-width: 280px;
}
.ol-popup:after, .ol-popup:before {
top: 100%;

View File

@@ -3,7 +3,7 @@ template: example.html
title: Preload example
shortdesc: Example of tile preloading.
docs: >
<p>The map on the left preloads low resolution tiles. The map on the right does not use any preloading. Try zooming out and panning to see the difference.</p>
<p>The map on the top preloads low resolution tiles. The map on the bottom does not use any preloading. Try zooming out and panning to see the difference.</p>
tags: "preload, bing"
---
<div class="row-fluid">

View File

@@ -12,7 +12,7 @@ docs: >
</p>
<p>
In this case, a single tiled source of imagery is used as input.
For each pixel, the Vegetaion Greenness Index
For each pixel, the Vegetation Greenness Index
(<a href="http://www.tandfonline.com/doi/abs/10.1080/10106040108542184#.Vb90ITBViko">VGI</a>)
is calculated from the input pixels. A second operation colors
those pixels based on a threshold value (values above the

View File

@@ -10,6 +10,14 @@
});
}
var fiddleButton = document.getElementById('jsfiddle-button');
if (fiddleButton) {
fiddleButton.onclick = function(event) {
event.preventDefault();
document.getElementById('jsfiddle-form').submit();
};
}
if (window.location.host === 'localhost:3000') {
return;
}

View File

@@ -58,6 +58,39 @@ ol.inline>li {
.ol-control button, .ol-attribution, .ol-scale-line-inner {
font-family: 'Lucida Grande',Verdana,Geneva,Lucida,Arial,Helvetica,sans-serif;
}
.iframe-info iframe {
width: 100%;
}
pre[class*="language-"] {
margin-top: 20px;
background: #FFFFFF;
}
#source-controls {
position: absolute;
margin-top: 20px;
right: 40px;
}
#source-controls a {
margin-left: 15px;
}
#copy-button {
text-decoration: none;
cursor: pointer;
}
#jsfiddle-button {
text-decoration: none;
cursor: pointer;
}
pre {
border: 1px solid #eee;
border-radius: 0;
}
#tags, #shortdesc, .hidden {
display: none;

View File

@@ -13,7 +13,7 @@ goog.require('ol.source.XYZ');
* neighborhood for determining slope and aspect.
* @param {Array.<ImageData>} inputs Array of input images.
* @param {Object} data Data added in the "beforeoperations" event.
* @return {Array.<ImageData>} Output images (only the first is rendered).
* @return {ImageData} Output image.
*/
function shade(inputs, data) {
var elevationImage = inputs[0];

View File

@@ -14,7 +14,7 @@ tags: "side-by-side, canvas, webgl, dom, canvas, sync, object"
<div class="span4">
<h4>WebGL</h4>
<div id="webglMap" class="map"></div>
<div id="no-webgl" class="alert alert-error" style="display: none">
<div id="no-webgl" class="alert alert-danger" style="display: none">
This map requires a browser that supports <a href="http://get.webgl.org/">WebGL</a>.
</div>
</div>

View File

@@ -16,7 +16,7 @@ var sphereMollweideProjection = new ol.proj.Projection({
code: 'ESRI:53009',
extent: [-9009954.605703328, -9009954.605703328,
9009954.605703328, 9009954.605703328],
worldExtent: [-179, -90, 179, 90]
worldExtent: [-179, -89.99, 179, 89.99]
});
var map = new ol.Map({

View File

@@ -33,10 +33,11 @@ Progress.prototype.addLoading = function() {
* Increment the count of loaded tiles.
*/
Progress.prototype.addLoaded = function() {
var this_ = this;
setTimeout(function() {
++this.loaded;
this.update();
}.bind(this), 100);
++this_.loaded;
this_.update();
}, 100);
};
@@ -49,7 +50,10 @@ Progress.prototype.update = function() {
if (this.loading === this.loaded) {
this.loading = 0;
this.loaded = 0;
setTimeout(this.hide.bind(this), 500);
var this_ = this;
setTimeout(function() {
this_.hide();
}, 500);
}
};

View File

@@ -0,0 +1,13 @@
---
template: example.html
title: Translate features example
shortdesc: Example of a translate features interaction.
docs: >
This example demonstrates how the translate and select interactions can be used together. Zoom in to an area of interest and click to select a feature. Then drag the feature around to move it elsewhere on the map.
tags: "drag, translate, feature, vector, editing"
---
<div class="row-fluid">
<div class="span12">
<div id="map" class="map"></div>
</div>
</div>

View File

@@ -0,0 +1,52 @@
goog.require('ol.Feature');
goog.require('ol.Map');
goog.require('ol.View');
goog.require('ol.format.GeoJSON');
goog.require('ol.geom.LineString');
goog.require('ol.geom.Point');
goog.require('ol.interaction');
goog.require('ol.interaction.Select');
goog.require('ol.interaction.Translate');
goog.require('ol.layer.Tile');
goog.require('ol.layer.Vector');
goog.require('ol.source.MapQuest');
goog.require('ol.source.Vector');
var raster = new ol.layer.Tile({
source: new ol.source.MapQuest({layer: 'sat'})
});
var vector = new ol.layer.Vector({
source: new ol.source.Vector({
url: 'data/geojson/countries.geojson',
format: new ol.format.GeoJSON()
})
});
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 vector2 = new ol.layer.Vector({
source: new ol.source.Vector({
features: [pointFeature, lineFeature]
})
});
var select = new ol.interaction.Select();
var translate = new ol.interaction.Translate({
features: select.getFeatures()
});
var map = new ol.Map({
interactions: ol.interaction.defaults().extend([select, translate]),
layers: [raster, vector, vector2],
target: 'map',
view: new ol.View({
center: [0, 0],
zoom: 2
})
});

19
examples/turf.html Normal file
View File

@@ -0,0 +1,19 @@
---
template: example.html
title: turf.js Example
shortdesc: Example on how to use turf.js with OpenLayers 3.
docs: >
Example showing the integration of <a href="http://turfjs.org">turf.js</a>
with OpenLayers 3. The turf.js function <code>along</code> is used to
display a marker every 200 meters along a street.
tags: "vector, turfjs, along, distance"
resources:
- https://api.tiles.mapbox.com/mapbox.js/plugins/turf/v2.0.0/turf.min.js
---
<div class="row-fluid">
<div class="span12">
<div id="map" class="map"></div>
</div>
</div>

57
examples/turf.js Normal file
View File

@@ -0,0 +1,57 @@
// NOCOMPILE
// this example uses turf.js for which we don't have an externs file.
goog.require('ol.Feature');
goog.require('ol.Map');
goog.require('ol.View');
goog.require('ol.format.GeoJSON');
goog.require('ol.layer.Tile');
goog.require('ol.layer.Vector');
goog.require('ol.proj');
goog.require('ol.source.MapQuest');
goog.require('ol.source.Vector');
var source = new ol.source.Vector();
$.ajax('data/geojson/roads-seoul.geojson').then(function(response) {
var format = new ol.format.GeoJSON();
var features = format.readFeatures(response);
var street = features[0];
// convert to a turf.js feature
var turfLine = format.writeFeatureObject(street);
// show a marker every 200 meters
var distance = 0.2;
// get the line length in kilometers
var length = turf.lineDistance(turfLine, 'kilometers');
for (var i = 1; i <= length / distance; i++) {
var turfPoint = turf.along(turfLine, i * distance, 'kilometers');
// convert the generated point to a OpenLayers feature
var marker = format.readFeature(turfPoint);
marker.getGeometry().transform('EPSG:4326', 'EPSG:3857');
source.addFeature(marker);
}
street.getGeometry().transform('EPSG:4326', 'EPSG:3857');
source.addFeature(street);
});
var vectorLayer = new ol.layer.Vector({
source: source
});
var rasterLayer = new ol.layer.Tile({
source: new ol.source.MapQuest({
layer: 'osm'
})
});
var map = new ol.Map({
layers: [rasterLayer, vectorLayer],
target: document.getElementById('map'),
view: new ol.View({
center: ol.proj.fromLonLat([126.980366, 37.526540]),
zoom: 15
})
});

View File

@@ -1,4 +1,3 @@
goog.require('ol.Feature');
goog.require('ol.Map');
goog.require('ol.View');
goog.require('ol.format.GeoJSON');

View File

@@ -87,19 +87,13 @@ var styles = {
}
};
var osmxmlFormat = new ol.format.OSMXML();
var vectorSource = new ol.source.Vector({
loader: function(extent, resolution, projection) {
format: new ol.format.OSMXML(),
url: function(extent, resolution, projection) {
var epsg4326Extent =
ol.proj.transformExtent(extent, projection, 'EPSG:4326');
var url = 'http://overpass-api.de/api/xapi?map?bbox=' +
return 'http://overpass-api.de/api/xapi?map?bbox=' +
epsg4326Extent.join(',');
$.ajax(url).then(function(response) {
var features = osmxmlFormat.readFeatures(response,
{featureProjection: projection});
vectorSource.addFeatures(features);
});
},
strategy: ol.loadingstrategy.tile(ol.tilegrid.createXYZ({
maxZoom: 19

View File

@@ -10,18 +10,14 @@ goog.require('ol.style.Stroke');
goog.require('ol.style.Style');
// format used to parse WFS GetFeature responses
var geojsonFormat = new ol.format.GeoJSON();
var vectorSource = new ol.source.Vector({
loader: function(extent, resolution, projection) {
var url = 'http://demo.boundlessgeo.com/geoserver/wfs?service=WFS&' +
format: new ol.format.GeoJSON(),
url: function(extent, resolution, projection) {
return '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';
// use jsonp: false to prevent jQuery from adding the "callback"
// parameter to the URL
$.ajax({url: url, dataType: 'jsonp', jsonp: false});
'outputFormat=application/json&srsname=EPSG:3857&' +
'bbox=' + extent.join(',') + ',EPSG:3857';
},
strategy: ol.loadingstrategy.tile(ol.tilegrid.createXYZ({
maxZoom: 19
@@ -29,14 +25,6 @@ var vectorSource = new ol.source.Vector({
});
/**
* JSONP WFS callback function.
* @param {Object} response The response object.
*/
window.loadFeatures = function(response) {
vectorSource.addFeatures(geojsonFormat.readFeatures(response));
};
var vector = new ol.layer.Vector({
source: vectorSource,
style: new ol.style.Style({

View File

@@ -1,4 +1,3 @@
goog.require('ol.Feature');
goog.require('ol.Map');
goog.require('ol.View');
goog.require('ol.format.WKT');

View File

@@ -7,38 +7,3 @@
*
* @externs
*/
/** @type {number} */
Touch.prototype.force;
/** @type {number} */
Touch.prototype.radiusX;
/** @type {number} */
Touch.prototype.radiusY;
/** @type {number} */
Touch.prototype.webkitForce;
/** @type {number} */
Touch.prototype.webkitRadiusX;
/** @type {number} */
Touch.prototype.webkitRadiusY;
/**
* @type {boolean}
*/
WebGLContextAttributes.prototype.preferLowPowerToHighPerformance;
/**
* @type {boolean}
*/
WebGLContextAttributes.prototype.failIfMajorPerformanceCaveat;

943
externs/jquery-1.9.js vendored

File diff suppressed because it is too large Load Diff

View File

@@ -1160,7 +1160,8 @@ olx.control.MousePositionOptions.prototype.undefinedHTML;
* layers: (Array.<ol.layer.Layer>|ol.Collection|undefined),
* render: (function(ol.MapEvent)|undefined),
* target: (Element|undefined),
* tipLabel: (string|undefined)}}
* tipLabel: (string|undefined),
* view: (ol.View|undefined)}}
* @api
*/
olx.control.OverviewMapOptions;
@@ -1236,6 +1237,15 @@ olx.control.OverviewMapOptions.prototype.target;
olx.control.OverviewMapOptions.prototype.tipLabel;
/**
* Custom view for the overview map. If not provided, a default view with
* an EPSG:3857 projection will be used.
* @type {ol.View|undefined}
* @api
*/
olx.control.OverviewMapOptions.prototype.view;
/**
* @typedef {{className: (string|undefined),
* minWidth: (number|undefined),
@@ -1291,7 +1301,7 @@ olx.control.ScaleLineOptions.prototype.units;
/**
* @typedef {{duration: (number|undefined),
* className: (string|undefined),
* label: (string|Node|undefined),
* label: (string|Element|undefined),
* tipLabel: (string|undefined),
* target: (Element|undefined),
* render: (function(ol.MapEvent)|undefined),
@@ -1914,6 +1924,8 @@ olx.format.WFSOptions.prototype.schemaLocation;
* maxFeatures: (number|undefined),
* geometryName: (string|undefined),
* propertyNames: (Array.<string>|undefined),
* startIndex: (number|undefined),
* count: (number|undefined),
* bbox: (ol.Extent|undefined)}}
* @api
*/
@@ -1993,6 +2005,25 @@ olx.format.WFSWriteGetFeatureOptions.prototype.geometryName;
olx.format.WFSWriteGetFeatureOptions.prototype.propertyNames;
/**
* Start index to use for WFS paging. This is a WFS 2.0 feature backported to
* WFS 1.1.0 by some Web Feature Services.
* @type {number|undefined}
* @api
*/
olx.format.WFSWriteGetFeatureOptions.prototype.startIndex;
/**
* Number of features to retrieve when paging. This is a WFS 2.0 feature
* backported to WFS 1.1.0 by some Web Feature Services. Please note that some
* Web Feature Services have repurposed `maxfeatures` instead.
* @type {number|undefined}
* @api
*/
olx.format.WFSWriteGetFeatureOptions.prototype.count;
/**
* Extent to use for the BBOX filter.
* @type {ol.Extent|undefined}
@@ -2504,6 +2535,22 @@ olx.interaction.DrawOptions.prototype.freehandCondition;
olx.interaction.DrawOptions.prototype.wrapX;
/**
* @typedef {{features: (ol.Collection.<ol.Feature>|undefined)}}
* @api
*/
olx.interaction.TranslateOptions;
/**
* Only features contained in this collection will be able to be translated. If
* not specified, all features on the map will be able to be translated.
* @type {ol.Collection.<ol.Feature>|undefined}
* @api
*/
olx.interaction.TranslateOptions.prototype.features;
/**
* @typedef {{condition: (ol.events.ConditionType|undefined),
* duration: (number|undefined),
@@ -2632,7 +2679,8 @@ olx.interaction.ModifyOptions.prototype.wrapX;
/**
* @typedef {{duration: (number|undefined)}}
* @typedef {{duration: (number|undefined),
* useAnchor: (boolean|undefined)}}
* @api
*/
olx.interaction.MouseWheelZoomOptions;
@@ -2646,6 +2694,16 @@ olx.interaction.MouseWheelZoomOptions;
olx.interaction.MouseWheelZoomOptions.prototype.duration;
/**
* Enable zooming using the mouse's location as the anchor. Default is `true`.
* When set to false, zooming in and out will zoom to the center of the screen
* instead of zooming on the mouse's location.
* @type {boolean|undefined}
* @api
*/
olx.interaction.MouseWheelZoomOptions.prototype.useAnchor;
/**
* @typedef {{threshold: (number|undefined),
* duration: (number|undefined)}}
@@ -2752,6 +2810,7 @@ olx.interaction.PointerOptions.prototype.handleUpEvent;
* removeCondition: (ol.events.ConditionType|undefined),
* toggleCondition: (ol.events.ConditionType|undefined),
* multi: (boolean|undefined),
* features: (ol.Collection.<ol.Feature>|undefined),
* filter: (ol.interaction.SelectFilterFunction|undefined),
* wrapX: (boolean|undefined)}}
* @api
@@ -2842,6 +2901,17 @@ olx.interaction.SelectOptions.prototype.toggleCondition;
olx.interaction.SelectOptions.prototype.multi;
/**
* Collection where the interaction will place selected features. Optional. If
* not set the interaction will create a collection. In any case the collection
* used by the interaction is returned by
* {@link ol.interaction.Select#getFeatures}.
* @type {ol.Collection.<ol.Feature>}
* @api
*/
olx.interaction.SelectOptions.prototype.features;
/**
* A function that takes an {@link ol.Feature} and an {@link ol.layer.Layer} and
* returns `true` if the feature may be selected or `false` otherwise.
@@ -2904,13 +2974,10 @@ olx.layer;
/**
* @typedef {{brightness: (number|undefined),
* contrast: (number|undefined),
* hue: (number|undefined),
* opacity: (number|undefined),
* saturation: (number|undefined),
* @typedef {{opacity: (number|undefined),
* visible: (boolean|undefined),
* extent: (ol.Extent|undefined),
* zIndex: (number|undefined),
* minResolution: (number|undefined),
* maxResolution: (number|undefined)}}
* @api
@@ -2918,30 +2985,6 @@ olx.layer;
olx.layer.BaseOptions;
/**
* Brightness. Default is `0`.
* @type {number|undefined}
* @api
*/
olx.layer.BaseOptions.prototype.brightness;
/**
* Contrast. Default is `1`.
* @type {number|undefined}
* @api
*/
olx.layer.BaseOptions.prototype.contrast;
/**
* Hue. Default is `0`.
* @type {number|undefined}
* @api
*/
olx.layer.BaseOptions.prototype.hue;
/**
* Opacity (0, 1). Default is `1`.
* @type {number|undefined}
@@ -2950,14 +2993,6 @@ olx.layer.BaseOptions.prototype.hue;
olx.layer.BaseOptions.prototype.opacity;
/**
* Saturation. Default is `1`.
* @type {number|undefined}
* @api
*/
olx.layer.BaseOptions.prototype.saturation;
/**
* Visibility. Default is `true`.
* @type {boolean|undefined}
@@ -2975,6 +3010,15 @@ olx.layer.BaseOptions.prototype.visible;
olx.layer.BaseOptions.prototype.extent;
/**
* The z-index for layer rendering. At rendering time, the layers will be
* ordered, first by Z-index and then by position. The default Z-index is 0.
* @type {number|undefined}
* @api
*/
olx.layer.BaseOptions.prototype.zIndex;
/**
* The minimum resolution (inclusive) at which this layer will be visible.
* @type {number|undefined}
@@ -2992,14 +3036,11 @@ olx.layer.BaseOptions.prototype.maxResolution;
/**
* @typedef {{brightness: (number|undefined),
* contrast: (number|undefined),
* hue: (number|undefined),
* opacity: (number|undefined),
* saturation: (number|undefined),
* @typedef {{opacity: (number|undefined),
* source: (ol.source.Source|undefined),
* visible: (boolean|undefined),
* extent: (ol.Extent|undefined),
* zIndex: (number|undefined),
* minResolution: (number|undefined),
* maxResolution: (number|undefined)}}
* @api
@@ -3007,30 +3048,6 @@ olx.layer.BaseOptions.prototype.maxResolution;
olx.layer.LayerOptions;
/**
* Brightness. Default is `0`.
* @type {number|undefined}
* @api
*/
olx.layer.LayerOptions.prototype.brightness;
/**
* Contrast. Default is `1`.
* @type {number|undefined}
* @api
*/
olx.layer.LayerOptions.prototype.contrast;
/**
* Hue. Default is `0`.
* @type {number|undefined}
* @api
*/
olx.layer.LayerOptions.prototype.hue;
/**
* Opacity (0, 1). Default is `1`.
* @type {number|undefined}
@@ -3039,14 +3056,6 @@ olx.layer.LayerOptions.prototype.hue;
olx.layer.LayerOptions.prototype.opacity;
/**
* Saturation. Default is `1`.
* @type {number|undefined}
* @api
*/
olx.layer.LayerOptions.prototype.saturation;
/**
* Source for this layer. If not provided to the constructor, the source can
* be set by calling {@link ol.layer.Layer#setSource layer.setSource(source)}
@@ -3074,6 +3083,15 @@ olx.layer.LayerOptions.prototype.visible;
olx.layer.LayerOptions.prototype.extent;
/**
* The z-index for layer rendering. At rendering time, the layers will be
* ordered, first by Z-index and then by position. The default Z-index is 0.
* @type {number|undefined}
* @api
*/
olx.layer.LayerOptions.prototype.zIndex;
/**
* The minimum resolution (inclusive) at which this layer will be visible.
* @type {number|undefined}
@@ -3091,13 +3109,10 @@ olx.layer.LayerOptions.prototype.maxResolution;
/**
* @typedef {{brightness: (number|undefined),
* contrast: (number|undefined),
* hue: (number|undefined),
* opacity: (number|undefined),
* saturation: (number|undefined),
* @typedef {{opacity: (number|undefined),
* visible: (boolean|undefined),
* extent: (ol.Extent|undefined),
* zIndex: (number|undefined),
* minResolution: (number|undefined),
* maxResolution: (number|undefined),
* layers: (Array.<ol.layer.Base>|ol.Collection.<ol.layer.Base>|undefined)}}
@@ -3106,30 +3121,6 @@ olx.layer.LayerOptions.prototype.maxResolution;
olx.layer.GroupOptions;
/**
* Brightness. Default is `0`.
* @type {number|undefined}
* @api
*/
olx.layer.GroupOptions.prototype.brightness;
/**
* Contrast. Default is `1`.
* @type {number|undefined}
* @api
*/
olx.layer.GroupOptions.prototype.contrast;
/**
* Hue. Default is `0`.
* @type {number|undefined}
* @api
*/
olx.layer.GroupOptions.prototype.hue;
/**
* Opacity (0, 1). Default is `1`.
* @type {number|undefined}
@@ -3138,14 +3129,6 @@ olx.layer.GroupOptions.prototype.hue;
olx.layer.GroupOptions.prototype.opacity;
/**
* Saturation. Default is `1`.
* @type {number|undefined}
* @api
*/
olx.layer.GroupOptions.prototype.saturation;
/**
* Visibility. Default is `true`.
* @type {boolean|undefined}
@@ -3163,6 +3146,15 @@ olx.layer.GroupOptions.prototype.visible;
olx.layer.GroupOptions.prototype.extent;
/**
* The z-index for layer rendering. At rendering time, the layers will be
* ordered, first by Z-index and then by position. The default Z-index is 0.
* @type {number|undefined}
* @api
*/
olx.layer.GroupOptions.prototype.zIndex;
/**
* The minimum resolution (inclusive) at which this layer will be visible.
* @type {number|undefined}
@@ -3188,10 +3180,7 @@ olx.layer.GroupOptions.prototype.layers;
/**
* @typedef {{brightness: (number|undefined),
* contrast: (number|undefined),
* hue: (number|undefined),
* gradient: (Array.<string>|undefined),
* @typedef {{gradient: (Array.<string>|undefined),
* radius: (number|undefined),
* blur: (number|undefined),
* shadow: (number|undefined),
@@ -3200,7 +3189,6 @@ olx.layer.GroupOptions.prototype.layers;
* minResolution: (number|undefined),
* maxResolution: (number|undefined),
* opacity: (number|undefined),
* saturation: (number|undefined),
* source: (ol.source.Vector|undefined),
* visible: (boolean|undefined)}}
* @api
@@ -3208,30 +3196,6 @@ olx.layer.GroupOptions.prototype.layers;
olx.layer.HeatmapOptions;
/**
* Brightness.
* @type {number|undefined}
* @api
*/
olx.layer.HeatmapOptions.prototype.brightness;
/**
* Contrast.
* @type {number|undefined}
* @api
*/
olx.layer.HeatmapOptions.prototype.contrast;
/**
* Hue.
* @type {number|undefined}
* @api
*/
olx.layer.HeatmapOptions.prototype.hue;
/**
* The color gradient of the heatmap, specified as an array of CSS color
* strings. Default is `['#00f', '#0ff', '#0f0', '#ff0', '#f00']`.
@@ -3308,14 +3272,6 @@ olx.layer.HeatmapOptions.prototype.maxResolution;
olx.layer.HeatmapOptions.prototype.opacity;
/**
* Saturation.
* @type {number|undefined}
* @api
*/
olx.layer.HeatmapOptions.prototype.saturation;
/**
* Source.
* @type {ol.source.Vector}
@@ -3333,11 +3289,7 @@ olx.layer.HeatmapOptions.prototype.visible;
/**
* @typedef {{brightness: (number|undefined),
* contrast: (number|undefined),
* hue: (number|undefined),
* opacity: (number|undefined),
* saturation: (number|undefined),
* @typedef {{opacity: (number|undefined),
* map: (ol.Map|undefined),
* source: (ol.source.Image|undefined),
* visible: (boolean|undefined),
@@ -3349,30 +3301,6 @@ olx.layer.HeatmapOptions.prototype.visible;
olx.layer.ImageOptions;
/**
* Brightness. Default is `0`.
* @type {number|undefined}
* @api
*/
olx.layer.ImageOptions.prototype.brightness;
/**
* Contrast. Default is `1`.
* @type {number|undefined}
* @api
*/
olx.layer.ImageOptions.prototype.contrast;
/**
* Hue. Default is `0`.
* @type {number|undefined}
* @api
*/
olx.layer.ImageOptions.prototype.hue;
/**
* Opacity (0, 1). Default is `1`.
* @type {number|undefined}
@@ -3381,14 +3309,6 @@ olx.layer.ImageOptions.prototype.hue;
olx.layer.ImageOptions.prototype.opacity;
/**
* Saturation. Default is `1`.
* @type {number|undefined}
* @api
*/
olx.layer.ImageOptions.prototype.saturation;
/**
* Source for this layer.
* @type {ol.source.Image}
@@ -3442,12 +3362,8 @@ olx.layer.ImageOptions.prototype.maxResolution;
/**
* @typedef {{brightness: (number|undefined),
* contrast: (number|undefined),
* hue: (number|undefined),
* opacity: (number|undefined),
* @typedef {{opacity: (number|undefined),
* preload: (number|undefined),
* saturation: (number|undefined),
* source: (ol.source.Tile|undefined),
* map: (ol.Map|undefined),
* visible: (boolean|undefined),
@@ -3460,30 +3376,6 @@ olx.layer.ImageOptions.prototype.maxResolution;
olx.layer.TileOptions;
/**
* Brightness. Default is `0`.
* @type {number|undefined}
* @api
*/
olx.layer.TileOptions.prototype.brightness;
/**
* Contrast. Default is `1`.
* @type {number|undefined}
* @api
*/
olx.layer.TileOptions.prototype.contrast;
/**
* Hue. Default is `0`.
* @type {number|undefined}
* @api
*/
olx.layer.TileOptions.prototype.hue;
/**
* Opacity (0, 1). Default is `1`.
* @type {number|undefined}
@@ -3501,14 +3393,6 @@ olx.layer.TileOptions.prototype.opacity;
olx.layer.TileOptions.prototype.preload;
/**
* Saturation. Default is `1`.
* @type {number|undefined}
* @api
*/
olx.layer.TileOptions.prototype.saturation;
/**
* Source for this layer.
* @type {ol.source.Tile}
@@ -3570,15 +3454,11 @@ olx.layer.TileOptions.prototype.useInterimTilesOnError;
/**
* @typedef {{brightness: (number|undefined),
* contrast: (number|undefined),
* renderOrder: (function(ol.Feature, ol.Feature):number|null|undefined),
* hue: (number|undefined),
* @typedef {{renderOrder: (function(ol.Feature, ol.Feature):number|null|undefined),
* minResolution: (number|undefined),
* maxResolution: (number|undefined),
* opacity: (number|undefined),
* renderBuffer: (number|undefined),
* saturation: (number|undefined),
* source: (ol.source.Vector|undefined),
* map: (ol.Map|undefined),
* style: (ol.style.Style|Array.<ol.style.Style>|ol.style.StyleFunction|undefined),
@@ -3590,22 +3470,6 @@ olx.layer.TileOptions.prototype.useInterimTilesOnError;
olx.layer.VectorOptions;
/**
* Brightness.
* @type {number|undefined}
* @api
*/
olx.layer.VectorOptions.prototype.brightness;
/**
* Contrast.
* @type {number|undefined}
* @api
*/
olx.layer.VectorOptions.prototype.contrast;
/**
* Render order. Function to be used when sorting features before rendering. By
* default features are drawn in the order that they are created. Use `null` to
@@ -3616,14 +3480,6 @@ olx.layer.VectorOptions.prototype.contrast;
olx.layer.VectorOptions.prototype.renderOrder;
/**
* Hue.
* @type {number|undefined}
* @api
*/
olx.layer.VectorOptions.prototype.hue;
/**
* Sets the layer as overlay on a map. The map will not manage this layer in its
* layers collection, and the layer will be rendered on top. This is useful for
@@ -3679,14 +3535,6 @@ olx.layer.VectorOptions.prototype.opacity;
olx.layer.VectorOptions.prototype.renderBuffer;
/**
* Saturation.
* @type {number|undefined}
* @api
*/
olx.layer.VectorOptions.prototype.saturation;
/**
* Source.
* @type {ol.source.Vector}
@@ -4184,7 +4032,7 @@ olx.source.ImageMapGuideOptions.prototype.projection;
/**
* Ratio. `1` means image requests are the size of the map viewport, `2` means
* twice the width and height of the map viewport, and so on. Must be `1` or
* twice the width and height of the map viewport, and so on. Must be `1` or
* higher. Default is `1`.
* @type {number|undefined}
* @api stable
@@ -4467,7 +4315,7 @@ olx.source.ImageVectorOptions.prototype.projection;
/**
* Ratio. 1 means canvases are the size of the map viewport, 2 means twice the
* width and height of the map viewport, and so on. Must be `1` or higher.
* width and height of the map viewport, and so on. Must be `1` or higher.
* Default is `1.5`.
* @type {number|undefined}
* @api
@@ -4651,7 +4499,7 @@ olx.source.ImageWMSOptions.prototype.projection;
/**
* Ratio. `1` means image requests are the size of the map viewport, `2` means
* twice the width and height of the map viewport, and so on. Must be `1` or
* twice the width and height of the map viewport, and so on. Must be `1` or
* higher. Default is `1.5`.
* @type {number|undefined}
* @api stable
@@ -5149,7 +4997,7 @@ olx.source.TileWMSOptions.prototype.wrapX;
* loader: (ol.FeatureLoader|undefined),
* logo: (string|olx.LogoOptions|undefined),
* strategy: (ol.LoadingStrategy|undefined),
* url: (string|undefined),
* url: (string|ol.FeatureUrlFunction|undefined),
* useSpatialIndex: (boolean|undefined),
* wrapX: (boolean|undefined)}}
* @api
@@ -5212,10 +5060,12 @@ olx.source.VectorOptions.prototype.strategy;
/**
* Setting this option instructs the source to use an XHR loader (see
* {@link ol.featureloader.xhr}) and an {@link ol.loadingstrategy.all} for a
* one-off download of all features from that URL.
* {@link ol.featureloader.xhr}). Use a `string` and an
* {@link ol.loadingstrategy.all} for a one-off download of all features from
* the given URL. Use a {@link ol.FeatureUrlFunction} to generate the url with
* other loading strategies.
* Requires `format` to be set as well.
* @type {string|undefined}
* @type {string|ol.FeatureUrlFunction|undefined}
* @api
*/
olx.source.VectorOptions.prototype.url;
@@ -6091,7 +5941,9 @@ olx.style.TextOptions;
/**
* Font.
* Font style as CSS 'font' value, see:
* {@link https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/font}.
* Default is '10px sans-serif'
* @type {string|undefined}
* @api
*/
@@ -6133,7 +5985,7 @@ olx.style.TextOptions.prototype.rotation;
/**
* Text.
* Text content.
* @type {string|undefined}
* @api
*/
@@ -6141,7 +5993,8 @@ olx.style.TextOptions.prototype.text;
/**
* Text alignment.
* Text alignment. Possible values: 'left', 'right', 'center', 'end' or 'start'.
* Default is 'start'.
* @type {string|undefined}
* @api
*/
@@ -6149,7 +6002,8 @@ olx.style.TextOptions.prototype.textAlign;
/**
* Text base line.
* Text base line. Possible values: 'bottom', 'top', 'middle', 'alphabetic',
* 'hanging', 'ideographic'. Default is 'alphabetic'.
* @type {string|undefined}
* @api
*/
@@ -6157,7 +6011,7 @@ olx.style.TextOptions.prototype.textBaseline;
/**
* Fill style.
* Fill style. If none is provided, we'll use a dark fill-style (#333).
* @type {ol.style.Fill|undefined}
* @api
*/

View File

@@ -1,6 +1,6 @@
{
"name": "openlayers",
"version": "3.8.1",
"version": "3.10.0",
"description": "Build tools and sources for developing OpenLayers based mapping applications",
"keywords": [
"map",
@@ -27,21 +27,20 @@
"dependencies": {
"async": "0.9.0",
"browserify": "9.0.3",
"closure-util": "1.5.0",
"closure-util": "1.8.0",
"fs-extra": "0.12.0",
"glob": "5.0.3",
"graceful-fs": "3.0.2",
"handlebars": "3.0.1",
"jsdoc": "3.3.0-alpha9",
"marked": "0.3.3",
"jsdoc": "3.3.2",
"marked": "0.3.5",
"metalsmith": "1.6.0",
"metalsmith-templates": "0.7.0",
"nomnom": "1.8.0",
"pixelworks": "1.0.0",
"rbush": "1.3.5",
"temp": "0.8.1",
"walk": "2.3.4",
"wrench": "1.5.8"
"walk": "2.3.4"
},
"devDependencies": {
"clean-css": "2.2.16",
@@ -51,14 +50,16 @@
"gaze": "^0.5.1",
"istanbul": "0.3.13",
"jquery": "2.1.1",
"jshint": "2.5.6",
"jshint": "2.8.0",
"mocha": "1.21.5",
"mocha-phantomjs": "3.5.1",
"mustache": "2.1.3",
"phantomjs": "1.9.10",
"proj4": "2.3.6",
"proj4": "2.3.12",
"resemblejs": "1.2.0",
"sinon": "1.10.3",
"slimerjs-edge": "0.10.0-pre-2"
"slimerjs-edge": "0.10.0-pre-2",
"wrench": "1.5.8"
},
"ext": [
"rbush",

View File

@@ -1,2 +1 @@
http://closure-linter.googlecode.com/files/closure_linter-latest.tar.gz
pystache

View File

@@ -1,5 +1,6 @@
goog.provide('ol.animation');
goog.require('ol');
goog.require('ol.PreRenderFunction');
goog.require('ol.ViewHint');
goog.require('ol.coordinate');
@@ -15,9 +16,9 @@ goog.require('ol.easing');
*/
ol.animation.bounce = function(options) {
var resolution = options.resolution;
var start = goog.isDef(options.start) ? options.start : goog.now();
var duration = goog.isDef(options.duration) ? options.duration : 1000;
var easing = goog.isDef(options.easing) ?
var start = options.start ? options.start : Date.now();
var duration = options.duration !== undefined ? options.duration : 1000;
var easing = options.easing ?
options.easing : ol.easing.upAndDown;
return (
/**
@@ -51,11 +52,11 @@ ol.animation.bounce = function(options) {
*/
ol.animation.pan = function(options) {
var source = options.source;
var start = goog.isDef(options.start) ? options.start : goog.now();
var start = options.start ? options.start : Date.now();
var sourceX = source[0];
var sourceY = source[1];
var duration = goog.isDef(options.duration) ? options.duration : 1000;
var easing = goog.isDef(options.easing) ?
var duration = options.duration !== undefined ? options.duration : 1000;
var easing = options.easing ?
options.easing : ol.easing.inAndOut;
return (
/**
@@ -90,12 +91,12 @@ ol.animation.pan = function(options) {
* @api
*/
ol.animation.rotate = function(options) {
var sourceRotation = goog.isDef(options.rotation) ? options.rotation : 0;
var start = goog.isDef(options.start) ? options.start : goog.now();
var duration = goog.isDef(options.duration) ? options.duration : 1000;
var easing = goog.isDef(options.easing) ?
var sourceRotation = options.rotation ? options.rotation : 0;
var start = options.start ? options.start : Date.now();
var duration = options.duration !== undefined ? options.duration : 1000;
var easing = options.easing ?
options.easing : ol.easing.inAndOut;
var anchor = goog.isDef(options.anchor) ?
var anchor = options.anchor ?
options.anchor : null;
return (
@@ -114,7 +115,7 @@ ol.animation.rotate = function(options) {
(sourceRotation - frameState.viewState.rotation) * delta;
frameState.animate = true;
frameState.viewState.rotation += deltaRotation;
if (!goog.isNull(anchor)) {
if (anchor) {
var center = frameState.viewState.center;
ol.coordinate.sub(center, anchor);
ol.coordinate.rotate(center, deltaRotation);
@@ -137,9 +138,9 @@ ol.animation.rotate = function(options) {
*/
ol.animation.zoom = function(options) {
var sourceResolution = options.resolution;
var start = goog.isDef(options.start) ? options.start : goog.now();
var duration = goog.isDef(options.duration) ? options.duration : 1000;
var easing = goog.isDef(options.easing) ?
var start = options.start ? options.start : Date.now();
var duration = options.duration !== undefined ? options.duration : 1000;
var easing = options.easing ?
options.easing : ol.easing.inAndOut;
return (
/**

View File

@@ -37,6 +37,17 @@ ol.array.binaryFindNearest = function(arr, target) {
};
/**
* Whether the array contains the given object.
* @param {Array.<*>} arr The array to test for the presence of the element.
* @param {*} obj The object for which to test.
* @return {boolean} The object is in the array.
*/
ol.array.includes = function(arr, obj) {
return arr.indexOf(obj) >= 0;
};
/**
* @param {Array.<number>} arr Array.
* @param {number} target Target.

View File

@@ -1,6 +1,5 @@
goog.provide('ol.Attribution');
goog.require('goog.asserts');
goog.require('goog.math');
goog.require('ol.TileRange');
@@ -39,8 +38,7 @@ ol.Attribution = function(options) {
* @private
* @type {Object.<string, Array.<ol.TileRange>>}
*/
this.tileRanges_ = goog.isDef(options.tileRanges) ?
options.tileRanges : null;
this.tileRanges_ = options.tileRanges ? options.tileRanges : null;
};
@@ -63,7 +61,7 @@ ol.Attribution.prototype.getHTML = function() {
*/
ol.Attribution.prototype.intersectsAnyTileRange =
function(tileRanges, tileGrid, projection) {
if (goog.isNull(this.tileRanges_)) {
if (!this.tileRanges_) {
return true;
}
var i, ii, tileRange, zKey;

View File

@@ -1,7 +1,7 @@
goog.provide('ol.CenterConstraint');
goog.provide('ol.CenterConstraintType');
goog.require('goog.math');
goog.require('ol.math');
/**
@@ -21,10 +21,10 @@ ol.CenterConstraint.createExtent = function(extent) {
* @return {ol.Coordinate|undefined} Center.
*/
function(center) {
if (goog.isDef(center)) {
if (center) {
return [
goog.math.clamp(center[0], extent[0], extent[2]),
goog.math.clamp(center[1], extent[1], extent[3])
ol.math.clamp(center[0], extent[0], extent[2]),
ol.math.clamp(center[1], extent[1], extent[3])
];
} else {
return undefined;

View File

@@ -91,7 +91,7 @@ ol.Collection = function(opt_array) {
* @private
* @type {!Array.<T>}
*/
this.array_ = goog.isDef(opt_array) ? opt_array : [];
this.array_ = opt_array ? opt_array : [];
this.updateLength_();
@@ -136,7 +136,7 @@ ol.Collection.prototype.extend = function(arr) {
* @api stable
*/
ol.Collection.prototype.forEach = function(f, opt_this) {
goog.array.forEach(this.array_, f, opt_this);
this.array_.forEach(f, opt_this);
};

View File

@@ -9,9 +9,9 @@ goog.provide('ol.color');
goog.require('goog.asserts');
goog.require('goog.color');
goog.require('goog.color.names');
goog.require('goog.math');
goog.require('goog.vec.Mat4');
goog.require('ol');
goog.require('ol.math');
/**
@@ -62,7 +62,7 @@ ol.color.rgbaColorRe_ =
ol.color.blend = function(dst, src, opt_color) {
// http://en.wikipedia.org/wiki/Alpha_compositing
// FIXME do we need to scale by 255?
var out = goog.isDef(opt_color) ? opt_color : [];
var out = opt_color ? opt_color : [];
var dstA = dst[3];
var srcA = src[3];
if (dstA == 1) {
@@ -271,11 +271,11 @@ ol.color.isValid = function(color) {
* @return {ol.Color} Clamped color.
*/
ol.color.normalize = function(color, opt_color) {
var result = goog.isDef(opt_color) ? opt_color : [];
result[0] = goog.math.clamp((color[0] + 0.5) | 0, 0, 255);
result[1] = goog.math.clamp((color[1] + 0.5) | 0, 0, 255);
result[2] = goog.math.clamp((color[2] + 0.5) | 0, 0, 255);
result[3] = goog.math.clamp(color[3], 0, 1);
var result = opt_color || [];
result[0] = ol.math.clamp((color[0] + 0.5) | 0, 0, 255);
result[1] = ol.math.clamp((color[1] + 0.5) | 0, 0, 255);
result[2] = ol.math.clamp((color[2] + 0.5) | 0, 0, 255);
result[3] = ol.math.clamp(color[3], 0, 1);
return result;
};
@@ -309,7 +309,7 @@ ol.color.toString = function(color) {
* @return {ol.Color} Transformed color.
*/
ol.color.transform = function(color, transform, opt_color) {
var result = goog.isDef(opt_color) ? opt_color : [];
var result = opt_color ? opt_color : [];
result = goog.vec.Mat4.multVec3(transform, color, result);
goog.asserts.assert(goog.isArray(result), 'result should be an array');
result[3] = color[3];

View File

@@ -1,205 +0,0 @@
goog.provide('ol.color.Matrix');
goog.require('goog.vec.Mat4');
/**
* @constructor
*/
ol.color.Matrix = function() {
/**
* @private
* @type {!goog.vec.Mat4.Number}
*/
this.colorMatrix_ = goog.vec.Mat4.createNumber();
/**
* @private
* @type {number|undefined}
*/
this.brightness_ = undefined;
/**
* @private
* @type {!goog.vec.Mat4.Number}
*/
this.brightnessMatrix_ = goog.vec.Mat4.createNumber();
/**
* @private
* @type {number|undefined}
*/
this.contrast_ = undefined;
/**
* @private
* @type {!goog.vec.Mat4.Number}
*/
this.contrastMatrix_ = goog.vec.Mat4.createNumber();
/**
* @private
* @type {number|undefined}
*/
this.hue_ = undefined;
/**
* @private
* @type {!goog.vec.Mat4.Number}
*/
this.hueMatrix_ = goog.vec.Mat4.createNumber();
/**
* @private
* @type {number|undefined}
*/
this.saturation_ = undefined;
/**
* @private
* @type {!goog.vec.Mat4.Number}
*/
this.saturationMatrix_ = goog.vec.Mat4.createNumber();
};
/**
* @param {!goog.vec.Mat4.Number} matrix Matrix.
* @param {number} value Brightness value.
* @return {!goog.vec.Mat4.Number} Matrix.
*/
ol.color.Matrix.makeBrightness = function(matrix, value) {
goog.vec.Mat4.makeTranslate(matrix, value, value, value);
return matrix;
};
/**
* @param {!goog.vec.Mat4.Number} matrix Matrix.
* @param {number} value Contrast value.
* @return {!goog.vec.Mat4.Number} Matrix.
*/
ol.color.Matrix.makeContrast = function(matrix, value) {
goog.vec.Mat4.makeScale(matrix, value, value, value);
var translateValue = (-0.5 * value + 0.5);
goog.vec.Mat4.setColumnValues(matrix, 3,
translateValue, translateValue, translateValue, 1);
return matrix;
};
/**
* @param {!goog.vec.Mat4.Number} matrix Matrix.
* @param {number} value Hue value.
* @return {!goog.vec.Mat4.Number} Matrix.
*/
ol.color.Matrix.makeHue = function(matrix, value) {
var cosHue = Math.cos(value);
var sinHue = Math.sin(value);
var v00 = 0.213 + cosHue * 0.787 - sinHue * 0.213;
var v01 = 0.715 - cosHue * 0.715 - sinHue * 0.715;
var v02 = 0.072 - cosHue * 0.072 + sinHue * 0.928;
var v03 = 0;
var v10 = 0.213 - cosHue * 0.213 + sinHue * 0.143;
var v11 = 0.715 + cosHue * 0.285 + sinHue * 0.140;
var v12 = 0.072 - cosHue * 0.072 - sinHue * 0.283;
var v13 = 0;
var v20 = 0.213 - cosHue * 0.213 - sinHue * 0.787;
var v21 = 0.715 - cosHue * 0.715 + sinHue * 0.715;
var v22 = 0.072 + cosHue * 0.928 + sinHue * 0.072;
var v23 = 0;
var v30 = 0;
var v31 = 0;
var v32 = 0;
var v33 = 1;
goog.vec.Mat4.setFromValues(matrix,
v00, v10, v20, v30,
v01, v11, v21, v31,
v02, v12, v22, v32,
v03, v13, v23, v33);
return matrix;
};
/**
* @param {!goog.vec.Mat4.Number} matrix Matrix.
* @param {number} value Saturation value.
* @return {!goog.vec.Mat4.Number} Matrix.
*/
ol.color.Matrix.makeSaturation = function(matrix, value) {
var v00 = 0.213 + 0.787 * value;
var v01 = 0.715 - 0.715 * value;
var v02 = 0.072 - 0.072 * value;
var v03 = 0;
var v10 = 0.213 - 0.213 * value;
var v11 = 0.715 + 0.285 * value;
var v12 = 0.072 - 0.072 * value;
var v13 = 0;
var v20 = 0.213 - 0.213 * value;
var v21 = 0.715 - 0.715 * value;
var v22 = 0.072 + 0.928 * value;
var v23 = 0;
var v30 = 0;
var v31 = 0;
var v32 = 0;
var v33 = 1;
goog.vec.Mat4.setFromValues(matrix,
v00, v10, v20, v30,
v01, v11, v21, v31,
v02, v12, v22, v32,
v03, v13, v23, v33);
return matrix;
};
/**
* @param {number|undefined} brightness Brightness.
* @param {number|undefined} contrast Contrast.
* @param {number|undefined} hue Hue.
* @param {number|undefined} saturation Saturation.
* @return {!goog.vec.Mat4.Number} Matrix.
*/
ol.color.Matrix.prototype.getMatrix = function(
brightness, contrast, hue, saturation) {
var colorMatrixDirty = false;
if (goog.isDef(brightness) && brightness !== this.brightness_) {
ol.color.Matrix.makeBrightness(this.brightnessMatrix_, brightness);
this.brightness_ = brightness;
colorMatrixDirty = true;
}
if (goog.isDef(contrast) && contrast !== this.contrast_) {
ol.color.Matrix.makeContrast(this.contrastMatrix_, contrast);
this.contrast_ = contrast;
colorMatrixDirty = true;
}
if (goog.isDef(hue) && hue !== this.hue_) {
ol.color.Matrix.makeHue(this.hueMatrix_, hue);
this.hue_ = hue;
colorMatrixDirty = true;
}
if (goog.isDef(saturation) && saturation !== this.saturation_) {
ol.color.Matrix.makeSaturation(this.saturationMatrix_, saturation);
this.saturation_ = saturation;
colorMatrixDirty = true;
}
if (colorMatrixDirty) {
var colorMatrix = this.colorMatrix_;
goog.vec.Mat4.makeIdentity(colorMatrix);
if (goog.isDef(contrast)) {
goog.vec.Mat4.multMat(colorMatrix, this.contrastMatrix_, colorMatrix);
}
if (goog.isDef(brightness)) {
goog.vec.Mat4.multMat(colorMatrix, this.brightnessMatrix_, colorMatrix);
}
if (goog.isDef(saturation)) {
goog.vec.Mat4.multMat(colorMatrix, this.saturationMatrix_, colorMatrix);
}
if (goog.isDef(hue)) {
goog.vec.Mat4.multMat(colorMatrix, this.hueMatrix_, colorMatrix);
}
}
return this.colorMatrix_;
};

View File

@@ -10,6 +10,7 @@ goog.require('goog.events');
goog.require('goog.events.EventType');
goog.require('goog.object');
goog.require('goog.style');
goog.require('ol');
goog.require('ol.Attribution');
goog.require('ol.control.Control');
goog.require('ol.css');
@@ -31,7 +32,7 @@ goog.require('ol.source.Tile');
*/
ol.control.Attribution = function(opt_options) {
var options = goog.isDef(opt_options) ? opt_options : {};
var options = opt_options ? opt_options : {};
/**
* @private
@@ -45,52 +46,49 @@ ol.control.Attribution = function(opt_options) {
*/
this.logoLi_ = goog.dom.createElement(goog.dom.TagName.LI);
goog.dom.appendChild(this.ulElement_, this.logoLi_);
this.ulElement_.appendChild(this.logoLi_);
goog.style.setElementShown(this.logoLi_, false);
/**
* @private
* @type {boolean}
*/
this.collapsed_ = goog.isDef(options.collapsed) ? options.collapsed : true;
this.collapsed_ = options.collapsed !== undefined ? options.collapsed : true;
/**
* @private
* @type {boolean}
*/
this.collapsible_ = goog.isDef(options.collapsible) ?
this.collapsible_ = options.collapsible !== undefined ?
options.collapsible : true;
if (!this.collapsible_) {
this.collapsed_ = false;
}
var className = goog.isDef(options.className) ?
options.className : 'ol-attribution';
var className = options.className ? options.className : 'ol-attribution';
var tipLabel = goog.isDef(options.tipLabel) ?
options.tipLabel : 'Attributions';
var tipLabel = options.tipLabel ? options.tipLabel : 'Attributions';
var collapseLabel = goog.isDef(options.collapseLabel) ?
options.collapseLabel : '\u00BB';
var collapseLabel = options.collapseLabel ? options.collapseLabel : '\u00BB';
/**
* @private
* @type {Node}
*/
this.collapseLabel_ = /** @type {Node} */ (goog.isString(collapseLabel) ?
this.collapseLabel_ = goog.isString(collapseLabel) ?
goog.dom.createDom(goog.dom.TagName.SPAN, {}, collapseLabel) :
collapseLabel);
collapseLabel;
var label = goog.isDef(options.label) ? options.label : 'i';
var label = options.label ? options.label : 'i';
/**
* @private
* @type {Node}
*/
this.label_ = /** @type {Node} */ (goog.isString(label) ?
this.label_ = goog.isString(label) ?
goog.dom.createDom(goog.dom.TagName.SPAN, {}, label) :
label);
label;
var activeLabel = (this.collapsible_ && !this.collapsed_) ?
this.collapseLabel_ : this.label_;
@@ -116,8 +114,7 @@ ol.control.Attribution = function(opt_options) {
var element = goog.dom.createDom(goog.dom.TagName.DIV,
cssClasses, this.ulElement_, button);
var render = goog.isDef(options.render) ?
options.render : ol.control.Attribution.render;
var render = options.render ? options.render : ol.control.Attribution.render;
goog.base(this, {
element: element,
@@ -167,15 +164,15 @@ ol.control.Attribution.prototype.getSourceAttributions = function(frameState) {
/** @type {Object.<string, ol.Attribution>} */
var hiddenAttributions = {};
var projection = frameState.viewState.projection;
goog.asserts.assert(!goog.isNull(projection), 'projection cannot be null');
goog.asserts.assert(projection, 'projection of viewState required');
for (i = 0, ii = layerStatesArray.length; i < ii; i++) {
source = layerStatesArray[i].layer.getSource();
if (goog.isNull(source)) {
if (!source) {
continue;
}
sourceKey = goog.getUid(source).toString();
sourceAttributions = source.getAttributions();
if (goog.isNull(sourceAttributions)) {
if (!sourceAttributions) {
continue;
}
for (j = 0, jj = sourceAttributions.length; j < jj; j++) {
@@ -185,11 +182,11 @@ ol.control.Attribution.prototype.getSourceAttributions = function(frameState) {
continue;
}
tileRanges = frameState.usedTiles[sourceKey];
if (goog.isDef(tileRanges)) {
if (tileRanges) {
goog.asserts.assertInstanceof(source, ol.source.Tile,
'source should be an ol.source.Tile');
var tileGrid = source.getTileGridForProjection(projection);
goog.asserts.assert(!goog.isNull(tileGrid), 'tileGrid cannot be null');
goog.asserts.assert(tileGrid, 'tileGrid required for projection');
intersectsTileRange = sourceAttribution.intersectsAnyTileRange(
tileRanges, tileGrid, projection);
} else {
@@ -226,7 +223,7 @@ ol.control.Attribution.render = function(mapEvent) {
*/
ol.control.Attribution.prototype.updateElement_ = function(frameState) {
if (goog.isNull(frameState)) {
if (!frameState) {
if (this.renderedVisible_) {
goog.style.setElementShown(this.element, false);
this.renderedVisible_ = false;
@@ -268,7 +265,7 @@ ol.control.Attribution.prototype.updateElement_ = function(frameState) {
attributionElement = goog.dom.createElement(goog.dom.TagName.LI);
attributionElement.innerHTML =
visibleAttributions[attributionKey].getHTML();
goog.dom.appendChild(this.ulElement_, attributionElement);
this.ulElement_.appendChild(attributionElement);
this.attributionElements_[attributionKey] = attributionElement;
this.attributionElementRenderedVisible_[attributionKey] = true;
}
@@ -277,7 +274,7 @@ ol.control.Attribution.prototype.updateElement_ = function(frameState) {
attributionElement.innerHTML =
hiddenAttributions[attributionKey].getHTML();
goog.style.setElementShown(attributionElement, false);
goog.dom.appendChild(this.ulElement_, attributionElement);
this.ulElement_.appendChild(attributionElement);
this.attributionElements_[attributionKey] = attributionElement;
}
@@ -331,7 +328,7 @@ ol.control.Attribution.prototype.insertLogos_ = function(frameState) {
});
logoElement.appendChild(image);
}
goog.dom.appendChild(this.logoLi_, logoElement);
this.logoLi_.appendChild(logoElement);
logoElements[logoKey] = logoElement;
}
}

View File

@@ -1,8 +1,8 @@
goog.provide('ol.control.Control');
goog.require('goog.array');
goog.require('goog.dom');
goog.require('goog.events');
goog.require('ol');
goog.require('ol.MapEventType');
goog.require('ol.Object');
@@ -45,7 +45,7 @@ ol.control.Control = function(options) {
* @protected
* @type {Element}
*/
this.element = goog.isDef(options.element) ? options.element : null;
this.element = options.element ? options.element : null;
/**
* @private
@@ -68,9 +68,9 @@ ol.control.Control = function(options) {
/**
* @type {function(ol.MapEvent)}
*/
this.render = goog.isDef(options.render) ? options.render : goog.nullFunction;
this.render = options.render ? options.render : ol.nullFunction;
if (goog.isDef(options.target)) {
if (options.target) {
this.setTarget(options.target);
}
@@ -105,19 +105,19 @@ ol.control.Control.prototype.getMap = function() {
* @api stable
*/
ol.control.Control.prototype.setMap = function(map) {
if (!goog.isNull(this.map_)) {
if (this.map_) {
goog.dom.removeNode(this.element);
}
if (!goog.array.isEmpty(this.listenerKeys)) {
goog.array.forEach(this.listenerKeys, goog.events.unlistenByKey);
if (this.listenerKeys.length > 0) {
this.listenerKeys.forEach(goog.events.unlistenByKey);
this.listenerKeys.length = 0;
}
this.map_ = map;
if (!goog.isNull(this.map_)) {
var target = !goog.isNull(this.target_) ?
if (this.map_) {
var target = this.target_ ?
this.target_ : map.getOverlayContainerStopEvent();
goog.dom.appendChild(target, this.element);
if (this.render !== goog.nullFunction) {
target.appendChild(this.element);
if (this.render !== ol.nullFunction) {
this.listenerKeys.push(goog.events.listen(map,
ol.MapEventType.POSTRENDER, this.render, false, this));
}

View File

@@ -1,5 +1,6 @@
goog.provide('ol.control');
goog.require('ol');
goog.require('ol.Collection');
goog.require('ol.control.Attribution');
goog.require('ol.control.Rotate');
@@ -20,23 +21,21 @@ goog.require('ol.control.Zoom');
*/
ol.control.defaults = function(opt_options) {
var options = goog.isDef(opt_options) ? opt_options : {};
var options = opt_options ? opt_options : {};
var controls = new ol.Collection();
var zoomControl = goog.isDef(options.zoom) ?
options.zoom : true;
var zoomControl = options.zoom !== undefined ? options.zoom : true;
if (zoomControl) {
controls.push(new ol.control.Zoom(options.zoomOptions));
}
var rotateControl = goog.isDef(options.rotate) ?
options.rotate : true;
var rotateControl = options.rotate !== undefined ? options.rotate : true;
if (rotateControl) {
controls.push(new ol.control.Rotate(options.rotateOptions));
}
var attributionControl = goog.isDef(options.attribution) ?
var attributionControl = options.attribution !== undefined ?
options.attribution : true;
if (attributionControl) {
controls.push(new ol.control.Attribution(options.attributionOptions));

View File

@@ -8,6 +8,7 @@ goog.require('goog.dom.fullscreen');
goog.require('goog.dom.fullscreen.EventType');
goog.require('goog.events');
goog.require('goog.events.EventType');
goog.require('ol');
goog.require('ol.control.Control');
goog.require('ol.css');
@@ -28,36 +29,33 @@ goog.require('ol.css');
*/
ol.control.FullScreen = function(opt_options) {
var options = goog.isDef(opt_options) ? opt_options : {};
var options = opt_options ? opt_options : {};
/**
* @private
* @type {string}
*/
this.cssClassName_ = goog.isDef(options.className) ?
options.className : 'ol-full-screen';
this.cssClassName_ = options.className ? options.className : 'ol-full-screen';
var label = goog.isDef(options.label) ? options.label : '\u2194';
var label = options.label ? options.label : '\u2194';
/**
* @private
* @type {Node}
*/
this.labelNode_ = /** @type {Node} */ (goog.isString(label) ?
goog.dom.createTextNode(label) : label);
this.labelNode_ = goog.isString(label) ?
goog.dom.createTextNode(label) : label;
var labelActive = goog.isDef(options.labelActive) ?
options.labelActive : '\u00d7';
var labelActive = options.labelActive ? options.labelActive : '\u00d7';
/**
* @private
* @type {Node}
*/
this.labelActiveNode_ = /** @type {Node} */ (goog.isString(labelActive) ?
goog.dom.createTextNode(labelActive) : labelActive);
this.labelActiveNode_ = goog.isString(labelActive) ?
goog.dom.createTextNode(labelActive) : labelActive;
var tipLabel = goog.isDef(options.tipLabel) ?
options.tipLabel : 'Toggle full-screen';
var tipLabel = options.tipLabel ? options.tipLabel : 'Toggle full-screen';
var button = goog.dom.createDom(goog.dom.TagName.BUTTON, {
'class': this.cssClassName_ + '-' + goog.dom.fullscreen.isFullScreen(),
'type': 'button',
@@ -85,7 +83,7 @@ ol.control.FullScreen = function(opt_options) {
* @private
* @type {boolean}
*/
this.keys_ = goog.isDef(options.keys) ? options.keys : false;
this.keys_ = options.keys !== undefined ? options.keys : false;
};
goog.inherits(ol.control.FullScreen, ol.control.Control);
@@ -109,18 +107,16 @@ ol.control.FullScreen.prototype.handleFullScreen_ = function() {
return;
}
var map = this.getMap();
if (goog.isNull(map)) {
if (!map) {
return;
}
if (goog.dom.fullscreen.isFullScreen()) {
goog.dom.fullscreen.exitFullScreen();
} else {
var target = map.getTarget();
goog.asserts.assert(goog.isDefAndNotNull(target),
'target should be defined');
goog.asserts.assert(target, 'target should be defined');
var element = goog.dom.getElement(target);
goog.asserts.assert(goog.isDefAndNotNull(element),
'element should be defined');
goog.asserts.assert(element, 'element should be defined');
if (this.keys_) {
goog.dom.fullscreen.requestFullScreenWithKeys(element);
} else {
@@ -145,7 +141,7 @@ ol.control.FullScreen.prototype.handleFullScreenChange_ = function() {
goog.dom.classlist.swap(button, opened, closed);
goog.dom.replaceNode(this.labelNode_, this.labelActiveNode_);
}
if (!goog.isNull(map)) {
if (map) {
map.updateSize();
}
};

View File

@@ -40,14 +40,13 @@ ol.control.MousePositionProperty = {
*/
ol.control.MousePosition = function(opt_options) {
var options = goog.isDef(opt_options) ? opt_options : {};
var options = opt_options ? opt_options : {};
var className = goog.isDef(options.className) ?
options.className : 'ol-mouse-position';
var className = options.className ? options.className : 'ol-mouse-position';
var element = goog.dom.createDom(goog.dom.TagName.DIV, className);
var render = goog.isDef(options.render) ?
var render = options.render ?
options.render : ol.control.MousePosition.render;
goog.base(this, {
@@ -60,10 +59,10 @@ ol.control.MousePosition = function(opt_options) {
ol.Object.getChangeEventType(ol.control.MousePositionProperty.PROJECTION),
this.handleProjectionChanged_, false, this);
if (goog.isDef(options.coordinateFormat)) {
if (options.coordinateFormat) {
this.setCoordinateFormat(options.coordinateFormat);
}
if (goog.isDef(options.projection)) {
if (options.projection) {
this.setProjection(ol.proj.get(options.projection));
}
@@ -71,8 +70,7 @@ ol.control.MousePosition = function(opt_options) {
* @private
* @type {string}
*/
this.undefinedHTML_ = goog.isDef(options.undefinedHTML) ?
options.undefinedHTML : '';
this.undefinedHTML_ = options.undefinedHTML ? options.undefinedHTML : '';
/**
* @private
@@ -110,7 +108,7 @@ goog.inherits(ol.control.MousePosition, ol.control.Control);
*/
ol.control.MousePosition.render = function(mapEvent) {
var frameState = mapEvent.frameState;
if (goog.isNull(frameState)) {
if (!frameState) {
this.mapProjection_ = null;
} else {
if (this.mapProjection_ != frameState.viewState.projection) {
@@ -184,7 +182,7 @@ ol.control.MousePosition.prototype.handleMouseOut = function(browserEvent) {
*/
ol.control.MousePosition.prototype.setMap = function(map) {
goog.base(this, 'setMap', map);
if (!goog.isNull(map)) {
if (map) {
var viewport = map.getViewport();
this.listenerKeys.push(
goog.events.listen(viewport, goog.events.EventType.MOUSEMOVE,
@@ -226,10 +224,10 @@ ol.control.MousePosition.prototype.setProjection = function(projection) {
*/
ol.control.MousePosition.prototype.updateHTML_ = function(pixel) {
var html = this.undefinedHTML_;
if (!goog.isNull(pixel) && !goog.isNull(this.mapProjection_)) {
if (goog.isNull(this.transform_)) {
if (pixel && this.mapProjection_) {
if (!this.transform_) {
var projection = this.getProjection();
if (goog.isDef(projection)) {
if (projection) {
this.transform_ = ol.proj.getTransformFromProjections(
this.mapProjection_, projection);
} else {
@@ -238,17 +236,17 @@ ol.control.MousePosition.prototype.updateHTML_ = function(pixel) {
}
var map = this.getMap();
var coordinate = map.getCoordinateFromPixel(pixel);
if (!goog.isNull(coordinate)) {
if (coordinate) {
this.transform_(coordinate, coordinate);
var coordinateFormat = this.getCoordinateFormat();
if (goog.isDef(coordinateFormat)) {
if (coordinateFormat) {
html = coordinateFormat(coordinate);
} else {
html = coordinate.toString();
}
}
}
if (!goog.isDef(this.renderedHTML_) || html != this.renderedHTML_) {
if (!this.renderedHTML_ || html != this.renderedHTML_) {
this.element.innerHTML = html;
this.renderedHTML_ = html;
}

View File

@@ -8,6 +8,7 @@ goog.require('goog.events');
goog.require('goog.events.EventType');
goog.require('goog.math.Size');
goog.require('goog.style');
goog.require('ol');
goog.require('ol.Collection');
goog.require('ol.Map');
goog.require('ol.MapEventType');
@@ -34,51 +35,48 @@ goog.require('ol.extent');
*/
ol.control.OverviewMap = function(opt_options) {
var options = goog.isDef(opt_options) ? opt_options : {};
var options = opt_options ? opt_options : {};
/**
* @type {boolean}
* @private
*/
this.collapsed_ = goog.isDef(options.collapsed) ? options.collapsed : true;
this.collapsed_ = options.collapsed !== undefined ? options.collapsed : true;
/**
* @private
* @type {boolean}
*/
this.collapsible_ = goog.isDef(options.collapsible) ?
this.collapsible_ = options.collapsible !== undefined ?
options.collapsible : true;
if (!this.collapsible_) {
this.collapsed_ = false;
}
var className = goog.isDef(options.className) ?
options.className : 'ol-overviewmap';
var className = options.className ? options.className : 'ol-overviewmap';
var tipLabel = goog.isDef(options.tipLabel) ?
options.tipLabel : 'Overview map';
var tipLabel = options.tipLabel ? options.tipLabel : 'Overview map';
var collapseLabel = goog.isDef(options.collapseLabel) ?
options.collapseLabel : '\u00AB';
var collapseLabel = options.collapseLabel ? options.collapseLabel : '\u00AB';
/**
* @private
* @type {Node}
*/
this.collapseLabel_ = /** @type {Node} */ (goog.isString(collapseLabel) ?
this.collapseLabel_ = goog.isString(collapseLabel) ?
goog.dom.createDom(goog.dom.TagName.SPAN, {}, collapseLabel) :
collapseLabel);
collapseLabel;
var label = goog.isDef(options.label) ? options.label : '\u00BB';
var label = options.label ? options.label : '\u00BB';
/**
* @private
* @type {Node}
*/
this.label_ = /** @type {Node} */ (goog.isString(label) ?
this.label_ = goog.isString(label) ?
goog.dom.createDom(goog.dom.TagName.SPAN, {}, label) :
label);
label;
var activeLabel = (this.collapsible_ && !this.collapsed_) ?
this.collapseLabel_ : this.label_;
@@ -99,11 +97,12 @@ ol.control.OverviewMap = function(opt_options) {
this.ovmap_ = new ol.Map({
controls: new ol.Collection(),
interactions: new ol.Collection(),
target: ovmapDiv
target: ovmapDiv,
view: options.view
});
var ovmap = this.ovmap_;
if (goog.isDef(options.layers)) {
if (options.layers) {
options.layers.forEach(
/**
* @param {ol.layer.Layer} layer Layer.
@@ -133,8 +132,7 @@ ol.control.OverviewMap = function(opt_options) {
var element = goog.dom.createDom(goog.dom.TagName.DIV,
cssClasses, ovmapDiv, button);
var render = goog.isDef(options.render) ?
options.render : ol.control.OverviewMap.render;
var render = options.render ? options.render : ol.control.OverviewMap.render;
goog.base(this, {
element: element,
@@ -271,14 +269,14 @@ ol.control.OverviewMap.prototype.validateExtent_ = function() {
goog.asserts.assertArray(mapSize, 'mapSize should be an array');
var view = map.getView();
goog.asserts.assert(goog.isDef(view), 'view should be defined');
goog.asserts.assert(view, 'view should be defined');
var extent = view.calculateExtent(mapSize);
var ovmapSize = ovmap.getSize();
goog.asserts.assertArray(ovmapSize, 'ovmapSize should be an array');
var ovview = ovmap.getView();
goog.asserts.assert(goog.isDef(ovview), 'ovview should be defined');
goog.asserts.assert(ovview, 'ovview should be defined');
var ovextent = ovview.calculateExtent(ovmapSize);
var topLeftPixel =
@@ -320,14 +318,14 @@ ol.control.OverviewMap.prototype.resetExtent_ = function() {
goog.asserts.assertArray(mapSize, 'mapSize should be an array');
var view = map.getView();
goog.asserts.assert(goog.isDef(view), 'view should be defined');
goog.asserts.assert(view, 'view should be defined');
var extent = view.calculateExtent(mapSize);
var ovmapSize = ovmap.getSize();
goog.asserts.assertArray(ovmapSize, 'ovmapSize should be an array');
var ovview = ovmap.getView();
goog.asserts.assert(goog.isDef(ovview), 'ovview should be defined');
goog.asserts.assert(ovview, 'ovview should be defined');
// get how many times the current map overview could hold different
// box sizes using the min and max ratio, pick the step in the middle used
@@ -350,10 +348,10 @@ ol.control.OverviewMap.prototype.recenter_ = function() {
var ovmap = this.ovmap_;
var view = map.getView();
goog.asserts.assert(goog.isDef(view), 'view should be defined');
goog.asserts.assert(view, 'view should be defined');
var ovview = ovmap.getView();
goog.asserts.assert(goog.isDef(ovview), 'ovview should be defined');
goog.asserts.assert(ovview, 'ovview should be defined');
ovview.setCenter(view.getCenter());
};
@@ -375,16 +373,16 @@ ol.control.OverviewMap.prototype.updateBox_ = function() {
goog.asserts.assertArray(mapSize, 'mapSize should be an array');
var view = map.getView();
goog.asserts.assert(goog.isDef(view), 'view should be defined');
goog.asserts.assert(view, 'view should be defined');
var ovview = ovmap.getView();
goog.asserts.assert(goog.isDef(ovview), 'ovview should be defined');
goog.asserts.assert(ovview, 'ovview should be defined');
var ovmapSize = ovmap.getSize();
goog.asserts.assertArray(ovmapSize, 'ovmapSize should be an array');
var rotation = view.getRotation();
goog.asserts.assert(goog.isDef(rotation), 'rotation should be defined');
goog.asserts.assert(rotation !== undefined, 'rotation should be defined');
var overlay = this.boxOverlay_;
var box = this.boxOverlay_.getElement();
@@ -398,7 +396,7 @@ ol.control.OverviewMap.prototype.updateBox_ = function() {
overlay.setPosition(rotateBottomLeft);
// set box size calculated from map extent size and overview map resolution
if (goog.isDefAndNotNull(box)) {
if (box) {
var boxWidth = Math.abs((bottomLeft[0] - topRight[0]) / ovresolution);
var boxHeight = Math.abs((topRight[1] - bottomLeft[1]) / ovresolution);
goog.style.setBorderBoxSize(box, new goog.math.Size(
@@ -419,11 +417,11 @@ ol.control.OverviewMap.prototype.calculateCoordinateRotate_ = function(
var map = this.getMap();
var view = map.getView();
goog.asserts.assert(goog.isDef(view), 'view should be defined');
goog.asserts.assert(view, 'view should be defined');
var currentCenter = view.getCenter();
if (goog.isDef(currentCenter)) {
if (currentCenter) {
coordinateRotate = [
coordinate[0] - currentCenter[0],
coordinate[1] - currentCenter[1]
@@ -515,7 +513,8 @@ ol.control.OverviewMap.prototype.setCollapsed = function(collapsed) {
/**
* @return {boolean} True if the widget is collapsed.
* Determine if the overview map is collapsed.
* @return {boolean} The overview map is collapsed.
* @api stable
*/
ol.control.OverviewMap.prototype.getCollapsed = function() {

View File

@@ -5,7 +5,7 @@ goog.require('goog.dom.TagName');
goog.require('goog.dom.classlist');
goog.require('goog.events');
goog.require('goog.events.EventType');
goog.require('goog.math');
goog.require('ol');
goog.require('ol.animation');
goog.require('ol.control.Control');
goog.require('ol.css');
@@ -26,16 +26,15 @@ goog.require('ol.easing');
*/
ol.control.Rotate = function(opt_options) {
var options = goog.isDef(opt_options) ? opt_options : {};
var options = opt_options ? opt_options : {};
var className = goog.isDef(options.className) ?
var className = options.className ?
options.className : 'ol-rotate';
var label = goog.isDef(options.label) ?
options.label : '\u21E7';
var label = options.label ? options.label : '\u21E7';
/**
* @type {Node}
* @type {Element}
* @private
*/
this.label_ = null;
@@ -48,8 +47,7 @@ ol.control.Rotate = function(opt_options) {
goog.dom.classlist.add(this.label_, 'ol-compass');
}
var tipLabel = goog.isDef(options.tipLabel) ?
options.tipLabel : 'Reset rotation';
var tipLabel = options.tipLabel ? options.tipLabel : 'Reset rotation';
var button = goog.dom.createDom(goog.dom.TagName.BUTTON, {
'class': className + '-reset',
@@ -64,8 +62,7 @@ ol.control.Rotate = function(opt_options) {
ol.css.CLASS_CONTROL;
var element = goog.dom.createDom(goog.dom.TagName.DIV, cssClasses, button);
var render = goog.isDef(options.render) ?
options.render : ol.control.Rotate.render;
var render = options.render ? options.render : ol.control.Rotate.render;
goog.base(this, {
element: element,
@@ -77,13 +74,13 @@ ol.control.Rotate = function(opt_options) {
* @type {number}
* @private
*/
this.duration_ = goog.isDef(options.duration) ? options.duration : 250;
this.duration_ = options.duration ? options.duration : 250;
/**
* @type {boolean}
* @private
*/
this.autoHide_ = goog.isDef(options.autoHide) ? options.autoHide : true;
this.autoHide_ = options.autoHide !== undefined ? options.autoHide : true;
/**
* @private
@@ -115,20 +112,21 @@ ol.control.Rotate.prototype.handleClick_ = function(event) {
ol.control.Rotate.prototype.resetNorth_ = function() {
var map = this.getMap();
var view = map.getView();
if (goog.isNull(view)) {
if (!view) {
// the map does not have a view, so we can't act
// upon it
return;
}
var currentRotation = view.getRotation();
while (currentRotation < -Math.PI) {
currentRotation += 2 * Math.PI;
}
while (currentRotation > Math.PI) {
currentRotation -= 2 * Math.PI;
}
if (goog.isDef(currentRotation)) {
if (currentRotation !== undefined) {
if (this.duration_ > 0) {
currentRotation = currentRotation % (2 * Math.PI);
if (currentRotation < -Math.PI) {
currentRotation += 2 * Math.PI;
}
if (currentRotation > Math.PI) {
currentRotation -= 2 * Math.PI;
}
map.beforeRender(ol.animation.rotate({
rotation: currentRotation,
duration: this.duration_,
@@ -148,12 +146,12 @@ ol.control.Rotate.prototype.resetNorth_ = function() {
*/
ol.control.Rotate.render = function(mapEvent) {
var frameState = mapEvent.frameState;
if (goog.isNull(frameState)) {
if (!frameState) {
return;
}
var rotation = frameState.viewState.rotation;
if (rotation != this.rotation_) {
var transform = 'rotate(' + goog.math.toDegrees(rotation) + 'deg)';
var transform = 'rotate(' + rotation + 'rad)';
if (this.autoHide_) {
goog.dom.classlist.enable(
this.element, ol.css.CLASS_HIDDEN, rotation === 0);

View File

@@ -8,6 +8,7 @@ goog.require('goog.dom.TagName');
goog.require('goog.events');
goog.require('goog.math');
goog.require('goog.style');
goog.require('ol');
goog.require('ol.Object');
goog.require('ol.TransformFunction');
goog.require('ol.control.Control');
@@ -58,10 +59,9 @@ ol.control.ScaleLineUnits = {
*/
ol.control.ScaleLine = function(opt_options) {
var options = goog.isDef(opt_options) ? opt_options : {};
var options = opt_options ? opt_options : {};
var className = goog.isDef(options.className) ?
options.className : 'ol-scale-line';
var className = options.className ? options.className : 'ol-scale-line';
/**
* @private
@@ -87,7 +87,7 @@ ol.control.ScaleLine = function(opt_options) {
* @private
* @type {number}
*/
this.minWidth_ = goog.isDef(options.minWidth) ? options.minWidth : 64;
this.minWidth_ = options.minWidth !== undefined ? options.minWidth : 64;
/**
* @private
@@ -113,8 +113,7 @@ ol.control.ScaleLine = function(opt_options) {
*/
this.toEPSG4326_ = null;
var render = goog.isDef(options.render) ?
options.render : ol.control.ScaleLine.render;
var render = options.render ? options.render : ol.control.ScaleLine.render;
goog.base(this, {
element: this.element_,
@@ -161,7 +160,7 @@ ol.control.ScaleLine.prototype.getUnits = function() {
*/
ol.control.ScaleLine.render = function(mapEvent) {
var frameState = mapEvent.frameState;
if (goog.isNull(frameState)) {
if (!frameState) {
this.viewState_ = null;
} else {
this.viewState_ = frameState.viewState;
@@ -195,7 +194,7 @@ ol.control.ScaleLine.prototype.setUnits = function(units) {
ol.control.ScaleLine.prototype.updateElement_ = function() {
var viewState = this.viewState_;
if (goog.isNull(viewState)) {
if (!viewState) {
if (this.renderedVisible_) {
goog.style.setElementShown(this.element_, false);
this.renderedVisible_ = false;
@@ -227,13 +226,13 @@ ol.control.ScaleLine.prototype.updateElement_ = function() {
units == ol.control.ScaleLineUnits.DEGREES) {
// Convert pointResolution from other units to degrees
if (goog.isNull(this.toEPSG4326_)) {
if (!this.toEPSG4326_) {
this.toEPSG4326_ = ol.proj.getTransformFromProjections(
projection, ol.proj.get('EPSG:4326'));
}
cosLatitude = Math.cos(goog.math.toRadians(this.toEPSG4326_(center)[1]));
var radius = ol.sphere.NORMAL.radius;
goog.asserts.assert(goog.isDef(ol.proj.METERS_PER_UNIT[projectionUnits]),
goog.asserts.assert(ol.proj.METERS_PER_UNIT[projectionUnits],
'Meters per unit should be defined for the projection unit');
radius /= ol.proj.METERS_PER_UNIT[projectionUnits];
pointResolution *= 180 / (Math.PI * cosLatitude * radius);

View File

@@ -24,20 +24,18 @@ goog.require('ol.easing');
*/
ol.control.Zoom = function(opt_options) {
var options = goog.isDef(opt_options) ? opt_options : {};
var options = opt_options ? opt_options : {};
var className = goog.isDef(options.className) ? options.className : 'ol-zoom';
var className = options.className ? options.className : 'ol-zoom';
var delta = goog.isDef(options.delta) ? options.delta : 1;
var delta = options.delta ? options.delta : 1;
var zoomInLabel = goog.isDef(options.zoomInLabel) ?
options.zoomInLabel : '+';
var zoomOutLabel = goog.isDef(options.zoomOutLabel) ?
options.zoomOutLabel : '\u2212';
var zoomInLabel = options.zoomInLabel ? options.zoomInLabel : '+';
var zoomOutLabel = options.zoomOutLabel ? options.zoomOutLabel : '\u2212';
var zoomInTipLabel = goog.isDef(options.zoomInTipLabel) ?
var zoomInTipLabel = options.zoomInTipLabel ?
options.zoomInTipLabel : 'Zoom in';
var zoomOutTipLabel = goog.isDef(options.zoomOutTipLabel) ?
var zoomOutTipLabel = options.zoomOutTipLabel ?
options.zoomOutTipLabel : 'Zoom out';
var inElement = goog.dom.createDom(goog.dom.TagName.BUTTON, {
@@ -60,13 +58,6 @@ ol.control.Zoom = function(opt_options) {
goog.events.EventType.CLICK, goog.partial(
ol.control.Zoom.prototype.handleClick_, -delta), false, this);
goog.events.listen(outElement, [
goog.events.EventType.MOUSEOUT,
goog.events.EventType.FOCUSOUT
], function() {
this.blur();
}, false);
var cssClasses = className + ' ' + ol.css.CLASS_UNSELECTABLE + ' ' +
ol.css.CLASS_CONTROL;
var element = goog.dom.createDom(goog.dom.TagName.DIV, cssClasses, inElement,
@@ -81,7 +72,7 @@ ol.control.Zoom = function(opt_options) {
* @type {number}
* @private
*/
this.duration_ = goog.isDef(options.duration) ? options.duration : 250;
this.duration_ = options.duration ? options.duration : 250;
};
goog.inherits(ol.control.Zoom, ol.control.Control);
@@ -105,13 +96,13 @@ ol.control.Zoom.prototype.handleClick_ = function(delta, event) {
ol.control.Zoom.prototype.zoomByDelta_ = function(delta) {
var map = this.getMap();
var view = map.getView();
if (goog.isNull(view)) {
if (!view) {
// the map does not have a view, so we can't act
// upon it
return;
}
var currentResolution = view.getResolution();
if (goog.isDef(currentResolution)) {
if (currentResolution) {
if (this.duration_ > 0) {
map.beforeRender(ol.animation.zoom({
resolution: currentResolution,

View File

@@ -11,7 +11,6 @@ goog.require('goog.events.EventType');
goog.require('goog.fx.DragEvent');
goog.require('goog.fx.Dragger');
goog.require('goog.fx.Dragger.EventType');
goog.require('goog.math');
goog.require('goog.math.Rect');
goog.require('goog.style');
goog.require('ol.Size');
@@ -20,6 +19,7 @@ goog.require('ol.animation');
goog.require('ol.control.Control');
goog.require('ol.css');
goog.require('ol.easing');
goog.require('ol.math');
@@ -38,7 +38,7 @@ goog.require('ol.easing');
*/
ol.control.ZoomSlider = function(opt_options) {
var options = goog.isDef(opt_options) ? opt_options : {};
var options = opt_options ? opt_options : {};
/**
* Will hold the current resolution of the view.
@@ -76,10 +76,9 @@ ol.control.ZoomSlider = function(opt_options) {
* @private
* @type {number}
*/
this.duration_ = goog.isDef(options.duration) ? options.duration : 200;
this.duration_ = options.duration ? options.duration : 200;
var className = goog.isDef(options.className) ?
options.className : 'ol-zoomslider';
var className = options.className ? options.className : 'ol-zoomslider';
var thumbElement = goog.dom.createDom(goog.dom.TagName.DIV,
[className + '-thumb', ol.css.CLASS_UNSELECTABLE]);
var containerElement = goog.dom.createDom(goog.dom.TagName.DIV,
@@ -105,8 +104,7 @@ ol.control.ZoomSlider = function(opt_options) {
goog.events.listen(thumbElement, goog.events.EventType.CLICK,
goog.events.Event.stopPropagation);
var render = goog.isDef(options.render) ?
options.render : ol.control.ZoomSlider.render;
var render = options.render ? options.render : ol.control.ZoomSlider.render;
goog.base(this, {
element: containerElement,
@@ -132,7 +130,7 @@ ol.control.ZoomSlider.direction = {
*/
ol.control.ZoomSlider.prototype.setMap = function(map) {
goog.base(this, 'setMap', map);
if (!goog.isNull(map)) {
if (map) {
map.render();
}
};
@@ -181,10 +179,10 @@ ol.control.ZoomSlider.prototype.initSlider_ = function() {
* @api
*/
ol.control.ZoomSlider.render = function(mapEvent) {
if (goog.isNull(mapEvent.frameState)) {
if (!mapEvent.frameState) {
return;
}
goog.asserts.assert(goog.isDefAndNotNull(mapEvent.frameState.viewState),
goog.asserts.assert(mapEvent.frameState.viewState,
'viewState should be defined');
if (!this.sliderInitialized_) {
this.initSlider_();
@@ -205,7 +203,7 @@ ol.control.ZoomSlider.prototype.handleContainerClick_ = function(browserEvent) {
var map = this.getMap();
var view = map.getView();
var currentResolution = view.getResolution();
goog.asserts.assert(goog.isDef(currentResolution),
goog.asserts.assert(currentResolution,
'currentResolution should be defined');
map.beforeRender(ol.animation.zoom({
resolution: currentResolution,
@@ -252,7 +250,7 @@ ol.control.ZoomSlider.prototype.handleDraggerEnd_ = function(event) {
var map = this.getMap();
var view = map.getView();
view.setHint(ol.ViewHint.INTERACTING, -1);
goog.asserts.assert(goog.isDef(this.currentResolution_),
goog.asserts.assert(this.currentResolution_,
'this.currentResolution_ should be defined');
map.beforeRender(ol.animation.zoom({
resolution: this.currentResolution_,
@@ -303,7 +301,7 @@ ol.control.ZoomSlider.prototype.getRelativePosition_ = function(x, y) {
} else {
amount = (y - draggerLimits.top) / draggerLimits.height;
}
return goog.math.clamp(amount, 0, 1);
return ol.math.clamp(amount, 0, 1);
};

View File

@@ -21,19 +21,19 @@ goog.require('ol.css');
* @api stable
*/
ol.control.ZoomToExtent = function(opt_options) {
var options = goog.isDef(opt_options) ? opt_options : {};
var options = opt_options ? opt_options : {};
/**
* @type {ol.Extent}
* @private
*/
this.extent_ = goog.isDef(options.extent) ? options.extent : null;
this.extent_ = options.extent ? options.extent : null;
var className = goog.isDef(options.className) ? options.className :
var className = options.className ? options.className :
'ol-zoom-extent';
var label = goog.isDef(options.label) ? options.label : 'E';
var tipLabel = goog.isDef(options.tipLabel) ?
var label = options.label ? options.label : 'E';
var tipLabel = options.tipLabel ?
options.tipLabel : 'Fit to extent';
var button = goog.dom.createDom(goog.dom.TagName.BUTTON, {
'type': 'button',
@@ -71,9 +71,9 @@ ol.control.ZoomToExtent.prototype.handleClick_ = function(event) {
ol.control.ZoomToExtent.prototype.handleZoomToExtent_ = function() {
var map = this.getMap();
var view = map.getView();
var extent = goog.isNull(this.extent_) ?
var extent = !this.extent_ ?
view.getProjection().getExtent() : this.extent_;
var size = map.getSize();
goog.asserts.assert(goog.isDef(size), 'size should be defined');
goog.asserts.assert(size, 'size should be defined');
view.fit(extent, size);
};

View File

@@ -164,7 +164,7 @@ ol.coordinate.degreesToStringHDMS_ = function(degrees, hemispheres) {
* @api stable
*/
ol.coordinate.format = function(coordinate, template, opt_fractionDigits) {
if (goog.isDef(coordinate)) {
if (coordinate) {
return template
.replace('{x}', coordinate[0].toFixed(opt_fractionDigits))
.replace('{y}', coordinate[1].toFixed(opt_fractionDigits));
@@ -295,7 +295,7 @@ ol.coordinate.squaredDistanceToSegment = function(coordinate, segment) {
* @api stable
*/
ol.coordinate.toStringHDMS = function(coordinate) {
if (goog.isDef(coordinate)) {
if (coordinate) {
return ol.coordinate.degreesToStringHDMS_(coordinate[1], 'NS') + ' ' +
ol.coordinate.degreesToStringHDMS_(coordinate[0], 'EW');
} else {

View File

@@ -3,6 +3,7 @@ goog.provide('ol.DeviceOrientationProperty');
goog.require('goog.events');
goog.require('goog.math');
goog.require('ol');
goog.require('ol.Object');
goog.require('ol.has');
@@ -79,7 +80,7 @@ ol.DeviceOrientation = function(opt_options) {
goog.base(this);
var options = goog.isDef(opt_options) ? opt_options : {};
var options = opt_options ? opt_options : {};
/**
* @private
@@ -91,7 +92,7 @@ ol.DeviceOrientation = function(opt_options) {
ol.Object.getChangeEventType(ol.DeviceOrientationProperty.TRACKING),
this.handleTrackingChanged_, false, this);
this.setTracking(goog.isDef(options.tracking) ? options.tracking : false);
this.setTracking(options.tracking !== undefined ? options.tracking : false);
};
goog.inherits(ol.DeviceOrientation, ol.Object);
@@ -113,24 +114,23 @@ ol.DeviceOrientation.prototype.disposeInternal = function() {
ol.DeviceOrientation.prototype.orientationChange_ = function(browserEvent) {
var event = /** @type {DeviceOrientationEvent} */
(browserEvent.getBrowserEvent());
if (goog.isDefAndNotNull(event.alpha)) {
if (event.alpha !== null) {
var alpha = goog.math.toRadians(event.alpha);
this.set(ol.DeviceOrientationProperty.ALPHA, alpha);
// event.absolute is undefined in iOS.
if (goog.isBoolean(event.absolute) && event.absolute) {
this.set(ol.DeviceOrientationProperty.HEADING, alpha);
} else if (goog.isDefAndNotNull(event.webkitCompassHeading) &&
goog.isDefAndNotNull(event.webkitCompassAccuracy) &&
} else if (goog.isNumber(event.webkitCompassHeading) &&
event.webkitCompassAccuracy != -1) {
var heading = goog.math.toRadians(event.webkitCompassHeading);
this.set(ol.DeviceOrientationProperty.HEADING, heading);
}
}
if (goog.isDefAndNotNull(event.beta)) {
if (event.beta !== null) {
this.set(ol.DeviceOrientationProperty.BETA,
goog.math.toRadians(event.beta));
}
if (goog.isDefAndNotNull(event.gamma)) {
if (event.gamma !== null) {
this.set(ol.DeviceOrientationProperty.GAMMA,
goog.math.toRadians(event.gamma));
}
@@ -208,10 +208,10 @@ ol.DeviceOrientation.prototype.getTracking = function() {
ol.DeviceOrientation.prototype.handleTrackingChanged_ = function() {
if (ol.has.DEVICE_ORIENTATION) {
var tracking = this.getTracking();
if (tracking && goog.isNull(this.listenerKey_)) {
if (tracking && !this.listenerKey_) {
this.listenerKey_ = goog.events.listen(goog.global, 'deviceorientation',
this.orientationChange_, false, this);
} else if (!tracking && !goog.isNull(this.listenerKey_)) {
} else if (!tracking && this.listenerKey_) {
goog.events.unlistenByKey(this.listenerKey_);
this.listenerKey_ = null;
}

View File

@@ -19,25 +19,16 @@ goog.require('ol');
*/
ol.dom.createCanvasContext2D = function(opt_width, opt_height) {
var canvas = goog.dom.createElement(goog.dom.TagName.CANVAS);
if (goog.isDef(opt_width)) {
if (opt_width) {
canvas.width = opt_width;
}
if (goog.isDef(opt_height)) {
if (opt_height) {
canvas.height = opt_height;
}
return canvas.getContext('2d');
};
/**
* @enum {boolean}
*/
ol.dom.BrowserFeature = {
USE_MS_MATRIX_TRANSFORM: ol.LEGACY_IE_SUPPORT && ol.IS_LEGACY_IE,
USE_MS_ALPHA_FILTER: ol.LEGACY_IE_SUPPORT && ol.IS_LEGACY_IE
};
/**
* Detect 2d transform.
* Adapted from http://stackoverflow.com/q/5661671/130442
@@ -47,8 +38,8 @@ ol.dom.BrowserFeature = {
ol.dom.canUseCssTransform = (function() {
var canUseCssTransform;
return function() {
if (!goog.isDef(canUseCssTransform)) {
goog.asserts.assert(!goog.isNull(document.body),
if (canUseCssTransform === undefined) {
goog.asserts.assert(document.body,
'document.body should not be null');
if (!goog.global.getComputedStyle) {
// this browser is ancient
@@ -63,7 +54,7 @@ ol.dom.canUseCssTransform = (function() {
'MozTransform': '-moz-transform',
'transform': 'transform'
};
goog.dom.appendChild(document.body, el);
document.body.appendChild(el);
for (var t in transforms) {
if (t in el.style) {
el.style[t] = 'translate(1px,1px)';
@@ -90,8 +81,8 @@ ol.dom.canUseCssTransform = (function() {
ol.dom.canUseCssTransform3D = (function() {
var canUseCssTransform3D;
return function() {
if (!goog.isDef(canUseCssTransform3D)) {
goog.asserts.assert(!goog.isNull(document.body),
if (canUseCssTransform3D === undefined) {
goog.asserts.assert(document.body,
'document.body should not be null');
if (!goog.global.getComputedStyle) {
// this browser is ancient
@@ -106,7 +97,7 @@ ol.dom.canUseCssTransform3D = (function() {
'MozTransform': '-moz-transform',
'transform': 'transform'
};
goog.dom.appendChild(document.body, el);
document.body.appendChild(el);
for (var t in transforms) {
if (t in el.style) {
el.style[t] = 'translate3d(1px,1px,1px)';
@@ -137,94 +128,25 @@ ol.dom.setTransform = function(element, value) {
style.transform = value;
// IE 9+ seems to assume transform-origin: 100% 100%; for some unknown reason
if (goog.userAgent.IE && !ol.IS_LEGACY_IE) {
if (goog.userAgent.IE && goog.userAgent.isVersionOrHigher('9.0')) {
element.style.transformOrigin = '0 0';
}
};
/**
* Sets the opacity of an element, in an IE-compatible way
* @param {!Element} element Element
* @param {number} value Opacity, [0..1]
*/
ol.dom.setOpacity = function(element, value) {
if (ol.dom.BrowserFeature.USE_MS_ALPHA_FILTER) {
/** @type {string} */
var filter = element.currentStyle.filter;
/** @type {RegExp} */
var regex;
/** @type {string} */
var alpha;
if (goog.userAgent.VERSION == '8.0') {
regex = /progid:DXImageTransform\.Microsoft\.Alpha\(.*?\)/i;
alpha = 'progid:DXImageTransform.Microsoft.Alpha(Opacity=' +
(value * 100) + ')';
} else {
regex = /alpha\(.*?\)/i;
alpha = 'alpha(opacity=' + (value * 100) + ')';
}
var newFilter = filter.replace(regex, alpha);
if (newFilter === filter) {
// no replace was made? just append the new alpha filter instead
newFilter += ' ' + alpha;
}
element.style.filter = newFilter;
// Fix to apply filter to absolutely-positioned children element
if (element.currentStyle.zIndex === 'auto') {
element.style.zIndex = 0;
}
} else {
element.style.opacity = value;
}
};
/**
* Sets the IE matrix transform without replacing other filters
* @private
* @param {!Element} element Element
* @param {string} value The new progid string
*/
ol.dom.setIEMatrix_ = function(element, value) {
var filter = element.currentStyle.filter;
var newFilter =
filter.replace(/progid:DXImageTransform.Microsoft.Matrix\(.*?\)/i, value);
if (newFilter === filter) {
newFilter = ' ' + value;
}
element.style.filter = newFilter;
// Fix to apply filter to absolutely-positioned children element
if (element.currentStyle.zIndex === 'auto') {
element.style.zIndex = 0;
}
};
/**
* @param {!Element} element Element.
* @param {goog.vec.Mat4.Number} transform Matrix.
* @param {number=} opt_precision Precision.
* @param {Element=} opt_translationElement Required for IE7-8
*/
ol.dom.transformElement2D =
function(element, transform, opt_precision, opt_translationElement) {
ol.dom.transformElement2D = function(element, transform, opt_precision) {
// using matrix() causes gaps in Chrome and Firefox on Mac OS X, so prefer
// matrix3d()
var i;
if (ol.dom.canUseCssTransform3D()) {
var value3D;
if (goog.isDef(opt_precision)) {
if (opt_precision !== undefined) {
/** @type {Array.<string>} */
var strings3D = new Array(16);
for (i = 0; i < 16; ++i) {
@@ -246,7 +168,7 @@ ol.dom.transformElement2D =
goog.vec.Mat4.getElement(transform, 1, 3)
];
var value2D;
if (goog.isDef(opt_precision)) {
if (opt_precision !== undefined) {
/** @type {Array.<string>} */
var strings2D = new Array(6);
for (i = 0; i < 6; ++i) {
@@ -257,38 +179,6 @@ ol.dom.transformElement2D =
value2D = transform2D.join(',');
}
ol.dom.setTransform(element, 'matrix(' + value2D + ')');
} else if (ol.dom.BrowserFeature.USE_MS_MATRIX_TRANSFORM) {
var m11 = goog.vec.Mat4.getElement(transform, 0, 0),
m12 = goog.vec.Mat4.getElement(transform, 0, 1),
m21 = goog.vec.Mat4.getElement(transform, 1, 0),
m22 = goog.vec.Mat4.getElement(transform, 1, 1),
dx = goog.vec.Mat4.getElement(transform, 0, 3),
dy = goog.vec.Mat4.getElement(transform, 1, 3);
// See: http://msdn.microsoft.com/en-us/library/ms533014(v=vs.85).aspx
// and: http://extremelysatisfactorytotalitarianism.com/blog/?p=1002
// @TODO: fix terrible IE bbox rotation issue.
var s = 'progid:DXImageTransform.Microsoft.Matrix(';
s += 'sizingMethod="auto expand"';
s += ',M11=' + m11.toFixed(opt_precision || 20);
s += ',M12=' + m12.toFixed(opt_precision || 20);
s += ',M21=' + m21.toFixed(opt_precision || 20);
s += ',M22=' + m22.toFixed(opt_precision || 20);
s += ')';
ol.dom.setIEMatrix_(element, s);
// scale = m11 = m22 = target resolution [m/px] / current res [m/px]
// dx = (viewport width [px] / 2) * scale
// + (layer.x [m] - view.x [m]) / target resolution [m / px]
// except that we're positioning the child element relative to the
// viewport, not the map.
// dividing by the scale factor isn't the exact correction, but it's
// close enough that you can barely tell unless you're looking for it
dx /= m11;
dy /= m22;
opt_translationElement.style.left = Math.round(dx) + 'px';
opt_translationElement.style.top = Math.round(dy) + 'px';
} else {
element.style.left =
Math.round(goog.vec.Mat4.getElement(transform, 0, 3)) + 'px';

View File

@@ -1,36 +1,37 @@
goog.provide('ol.easing');
goog.require('goog.fx.easing');
/**
* Start slow and speed up.
* @function
* @param {number} t Input between 0 and 1.
* @return {number} Output between 0 and 1.
* @api
*/
ol.easing.easeIn = goog.fx.easing.easeIn;
ol.easing.easeIn = function(t) {
return Math.pow(t, 3);
};
/**
* Start fast and slow down.
* @function
* @param {number} t Input between 0 and 1.
* @return {number} Output between 0 and 1.
* @api
*/
ol.easing.easeOut = goog.fx.easing.easeOut;
ol.easing.easeOut = function(t) {
return 1 - ol.easing.easeIn(1 - t);
};
/**
* Start slow, speed up, and then slow down again.
* @function
* @param {number} t Input between 0 and 1.
* @return {number} Output between 0 and 1.
* @api
*/
ol.easing.inAndOut = goog.fx.easing.inAndOut;
ol.easing.inAndOut = function(t) {
return 3 * t * t - 2 * t * t * t;
};
/**

View File

@@ -1,185 +0,0 @@
goog.provide('ol.Ellipsoid');
goog.require('goog.math');
goog.require('ol.Coordinate');
/**
* @constructor
* @param {number} a Major radius.
* @param {number} flattening Flattening.
*/
ol.Ellipsoid = function(a, flattening) {
/**
* @const
* @type {number}
*/
this.a = a;
/**
* @const
* @type {number}
*/
this.flattening = flattening;
/**
* @const
* @type {number}
*/
this.b = this.a * (1 - this.flattening);
/**
* @const
* @type {number}
*/
this.eSquared = 2 * flattening - flattening * flattening;
/**
* @const
* @type {number}
*/
this.e = Math.sqrt(this.eSquared);
};
/**
* @param {ol.Coordinate} c1 Coordinate 1.
* @param {ol.Coordinate} c2 Coordinate 1.
* @param {number=} opt_minDeltaLambda Minimum delta lambda for convergence.
* @param {number=} opt_maxIterations Maximum iterations.
* @return {{distance: number, initialBearing: number, finalBearing: number}}
* Vincenty.
*/
ol.Ellipsoid.prototype.vincenty =
function(c1, c2, opt_minDeltaLambda, opt_maxIterations) {
var minDeltaLambda = goog.isDef(opt_minDeltaLambda) ?
opt_minDeltaLambda : 1e-12;
var maxIterations = goog.isDef(opt_maxIterations) ?
opt_maxIterations : 100;
var f = this.flattening;
var lat1 = goog.math.toRadians(c1[1]);
var lat2 = goog.math.toRadians(c2[1]);
var deltaLon = goog.math.toRadians(c2[0] - c1[0]);
var U1 = Math.atan((1 - f) * Math.tan(lat1));
var cosU1 = Math.cos(U1);
var sinU1 = Math.sin(U1);
var U2 = Math.atan((1 - f) * Math.tan(lat2));
var cosU2 = Math.cos(U2);
var sinU2 = Math.sin(U2);
var lambda = deltaLon;
var cosSquaredAlpha, sinAlpha;
var cosLambda, deltaLambda = Infinity, sinLambda;
var cos2SigmaM, cosSigma, sigma, sinSigma;
var i;
for (i = maxIterations; i > 0; --i) {
cosLambda = Math.cos(lambda);
sinLambda = Math.sin(lambda);
var x = cosU2 * sinLambda;
var y = cosU1 * sinU2 - sinU1 * cosU2 * cosLambda;
sinSigma = Math.sqrt(x * x + y * y);
if (sinSigma === 0) {
return {
distance: 0,
initialBearing: 0,
finalBearing: 0
};
}
cosSigma = sinU1 * sinU2 + cosU1 * cosU2 * cosLambda;
sigma = Math.atan2(sinSigma, cosSigma);
sinAlpha = cosU1 * cosU2 * sinLambda / sinSigma;
cosSquaredAlpha = 1 - sinAlpha * sinAlpha;
cos2SigmaM = cosSigma - 2 * sinU1 * sinU2 / cosSquaredAlpha;
if (isNaN(cos2SigmaM)) {
cos2SigmaM = 0;
}
var C = f / 16 * cosSquaredAlpha * (4 + f * (4 - 3 * cosSquaredAlpha));
var lambdaPrime = deltaLon + (1 - C) * f * sinAlpha * (sigma +
C * sinSigma * (cos2SigmaM +
C * cosSigma * (2 * cos2SigmaM * cos2SigmaM - 1)));
deltaLambda = Math.abs(lambdaPrime - lambda);
lambda = lambdaPrime;
if (deltaLambda < minDeltaLambda) {
break;
}
}
if (i === 0) {
return {
distance: NaN,
finalBearing: NaN,
initialBearing: NaN
};
}
var aSquared = this.a * this.a;
var bSquared = this.b * this.b;
var uSquared = cosSquaredAlpha * (aSquared - bSquared) / bSquared;
var A = 1 + uSquared / 16384 *
(4096 + uSquared * (uSquared * (320 - 175 * uSquared) - 768));
var B = uSquared / 1024 *
(256 + uSquared * (uSquared * (74 - 47 * uSquared) - 128));
var deltaSigma = B * sinSigma * (cos2SigmaM + B / 4 *
(cosSigma * (2 * cos2SigmaM * cos2SigmaM - 1) -
B / 6 * cos2SigmaM * (4 * sinSigma * sinSigma - 3) *
(4 * cos2SigmaM * cos2SigmaM - 3)));
cosLambda = Math.cos(lambda);
sinLambda = Math.sin(lambda);
var alpha1 = Math.atan2(cosU2 * sinLambda,
cosU1 * sinU2 - sinU1 * cosU2 * cosLambda);
var alpha2 = Math.atan2(cosU1 * sinLambda,
cosU1 * sinU2 * cosLambda - sinU1 * cosU2);
return {
distance: this.b * A * (sigma - deltaSigma),
initialBearing: goog.math.toDegrees(alpha1),
finalBearing: goog.math.toDegrees(alpha2)
};
};
/**
* Returns the distance from c1 to c2 using Vincenty.
*
* @param {ol.Coordinate} c1 Coordinate 1.
* @param {ol.Coordinate} c2 Coordinate 1.
* @param {number=} opt_minDeltaLambda Minimum delta lambda for convergence.
* @param {number=} opt_maxIterations Maximum iterations.
* @return {number} Vincenty distance.
*/
ol.Ellipsoid.prototype.vincentyDistance =
function(c1, c2, opt_minDeltaLambda, opt_maxIterations) {
var vincenty = this.vincenty(c1, c2, opt_minDeltaLambda, opt_maxIterations);
return vincenty.distance;
};
/**
* Returns the final bearing from c1 to c2 using Vincenty.
*
* @param {ol.Coordinate} c1 Coordinate 1.
* @param {ol.Coordinate} c2 Coordinate 1.
* @param {number=} opt_minDeltaLambda Minimum delta lambda for convergence.
* @param {number=} opt_maxIterations Maximum iterations.
* @return {number} Initial bearing.
*/
ol.Ellipsoid.prototype.vincentyFinalBearing =
function(c1, c2, opt_minDeltaLambda, opt_maxIterations) {
var vincenty = this.vincenty(c1, c2, opt_minDeltaLambda, opt_maxIterations);
return vincenty.finalBearing;
};
/**
* Returns the initial bearing from c1 to c2 using Vincenty.
*
* @param {ol.Coordinate} c1 Coordinate 1.
* @param {ol.Coordinate} c2 Coordinate 1.
* @param {number=} opt_minDeltaLambda Minimum delta lambda for convergence.
* @param {number=} opt_maxIterations Maximum iterations.
* @return {number} Initial bearing.
*/
ol.Ellipsoid.prototype.vincentyInitialBearing =
function(c1, c2, opt_minDeltaLambda, opt_maxIterations) {
var vincenty = this.vincenty(c1, c2, opt_minDeltaLambda, opt_maxIterations);
return vincenty.initialBearing;
};

View File

@@ -1,10 +0,0 @@
goog.provide('ol.ellipsoid.WGS84');
goog.require('ol.Ellipsoid');
/**
* @const
* @type {ol.Ellipsoid}
*/
ol.ellipsoid.WGS84 = new ol.Ellipsoid(6378137, 1 / 298.257223563);

View File

@@ -87,7 +87,7 @@ ol.extent.boundingExtentXYs_ = function(xs, ys, opt_extent) {
* @api stable
*/
ol.extent.buffer = function(extent, value, opt_extent) {
if (goog.isDef(opt_extent)) {
if (opt_extent) {
opt_extent[0] = extent[0] - value;
opt_extent[1] = extent[1] - value;
opt_extent[2] = extent[2] + value;
@@ -112,7 +112,7 @@ ol.extent.buffer = function(extent, value, opt_extent) {
* @return {ol.Extent} The clone.
*/
ol.extent.clone = function(extent, opt_extent) {
if (goog.isDef(opt_extent)) {
if (opt_extent) {
opt_extent[0] = extent[0];
opt_extent[1] = extent[1];
opt_extent[2] = extent[2];
@@ -247,7 +247,7 @@ ol.extent.createEmpty = function() {
* @return {ol.Extent} Extent.
*/
ol.extent.createOrUpdate = function(minX, minY, maxX, maxY, opt_extent) {
if (goog.isDef(opt_extent)) {
if (opt_extent) {
opt_extent[0] = minX;
opt_extent[1] = minY;
opt_extent[2] = maxX;
@@ -545,7 +545,7 @@ ol.extent.getCorner = function(extent, corner) {
} else {
goog.asserts.fail('Invalid corner: %s', corner);
}
goog.asserts.assert(goog.isDef(coordinate), 'coordinate should be defined');
goog.asserts.assert(coordinate, 'coordinate should be defined');
return coordinate;
};
@@ -624,8 +624,7 @@ ol.extent.getIntersectionArea = function(extent1, extent2) {
* @api stable
*/
ol.extent.getIntersection = function(extent1, extent2, opt_extent) {
var intersection = goog.isDef(opt_extent) ?
opt_extent : ol.extent.createEmpty();
var intersection = opt_extent ? opt_extent : ol.extent.createEmpty();
if (ol.extent.intersects(extent1, extent2)) {
if (extent1[0] > extent2[0]) {
intersection[0] = extent1[0];
@@ -760,7 +759,7 @@ ol.extent.normalize = function(extent, coordinate) {
* @return {ol.Extent} Extent.
*/
ol.extent.returnOrUpdate = function(extent, opt_extent) {
if (goog.isDef(opt_extent)) {
if (opt_extent) {
opt_extent[0] = extent[0];
opt_extent[1] = extent[1];
opt_extent[2] = extent[2];
@@ -886,7 +885,7 @@ ol.extent.applyTransform = function(extent, transformFn, opt_extent) {
* @return {ol.Extent} The transformed extent.
*/
ol.extent.transform2D = function(extent, transform, opt_extent) {
var dest = goog.isDef(opt_extent) ? opt_extent : [];
var dest = opt_extent ? opt_extent : [];
var m00 = goog.vec.Mat4.getElement(transform, 0, 0);
var m10 = goog.vec.Mat4.getElement(transform, 1, 0);
var m01 = goog.vec.Mat4.getElement(transform, 0, 1);

View File

@@ -4,7 +4,7 @@ goog.provide('ol.FeatureStyleFunction');
goog.require('goog.asserts');
goog.require('goog.events');
goog.require('goog.events.EventType');
goog.require('goog.functions');
goog.require('ol');
goog.require('ol.Object');
goog.require('ol.geom.Geometry');
goog.require('ol.style.Style');
@@ -96,9 +96,9 @@ ol.Feature = function(opt_geometryOrProperties) {
this, ol.Object.getChangeEventType(this.geometryName_),
this.handleGeometryChanged_, false, this);
if (goog.isDef(opt_geometryOrProperties)) {
if (opt_geometryOrProperties !== undefined) {
if (opt_geometryOrProperties instanceof ol.geom.Geometry ||
goog.isNull(opt_geometryOrProperties)) {
!opt_geometryOrProperties) {
var geometry = /** @type {ol.geom.Geometry} */ (opt_geometryOrProperties);
this.setGeometry(geometry);
} else {
@@ -123,11 +123,11 @@ ol.Feature.prototype.clone = function() {
var clone = new ol.Feature(this.getProperties());
clone.setGeometryName(this.getGeometryName());
var geometry = this.getGeometry();
if (goog.isDefAndNotNull(geometry)) {
if (geometry) {
clone.setGeometry(geometry.clone());
}
var style = this.getStyle();
if (!goog.isNull(style)) {
if (style) {
clone.setStyle(style);
}
return clone;
@@ -149,6 +149,9 @@ ol.Feature.prototype.getGeometry = function() {
/**
* Get the feature identifier. This is a stable identifier for the feature and
* is either set when reading data from a remote source or set explicitly by
* calling {@link ol.Feature#setId}.
* @return {number|string|undefined} Id.
* @api stable
* @observable
@@ -206,12 +209,12 @@ ol.Feature.prototype.handleGeometryChange_ = function() {
* @private
*/
ol.Feature.prototype.handleGeometryChanged_ = function() {
if (!goog.isNull(this.geometryChangeKey_)) {
if (this.geometryChangeKey_) {
goog.events.unlistenByKey(this.geometryChangeKey_);
this.geometryChangeKey_ = null;
}
var geometry = this.getGeometry();
if (goog.isDefAndNotNull(geometry)) {
if (geometry) {
this.geometryChangeKey_ = goog.events.listen(geometry,
goog.events.EventType.CHANGE, this.handleGeometryChange_, false, this);
}
@@ -242,7 +245,7 @@ ol.Feature.prototype.setGeometry = function(geometry) {
*/
ol.Feature.prototype.setStyle = function(style) {
this.style_ = style;
this.styleFunction_ = goog.isNull(style) ?
this.styleFunction_ = !style ?
undefined : ol.Feature.createStyleFunction(style);
this.changed();
};
@@ -283,8 +286,9 @@ ol.Feature.prototype.setGeometryName = function(name) {
/**
* A function that returns a style given a resolution. The `this` keyword inside
* the function references the {@link ol.Feature} to be styled.
* A function that returns an array of {@link ol.style.Style styles} given a
* resolution. The `this` keyword inside the function references the
* {@link ol.Feature} to be styled.
*
* @typedef {function(this: ol.Feature, number): Array.<ol.style.Style>}
* @api stable
@@ -301,13 +305,10 @@ ol.FeatureStyleFunction;
* @return {ol.FeatureStyleFunction} A style function.
*/
ol.Feature.createStyleFunction = function(obj) {
/**
* @type {ol.FeatureStyleFunction}
*/
var styleFunction;
if (goog.isFunction(obj)) {
styleFunction = /** @type {ol.FeatureStyleFunction} */ (obj);
styleFunction = obj;
} else {
/**
* @type {Array.<ol.style.Style>}
@@ -320,7 +321,9 @@ ol.Feature.createStyleFunction = function(obj) {
'obj should be an ol.style.Style');
styles = [obj];
}
styleFunction = goog.functions.constant(styles);
styleFunction = function() {
return styles;
};
}
return styleFunction;
};

View File

@@ -1,4 +1,5 @@
goog.provide('ol.FeatureLoader');
goog.provide('ol.FeatureUrlFunction');
goog.provide('ol.featureloader');
goog.require('goog.asserts');
@@ -11,6 +12,16 @@ goog.require('ol.xml');
/**
* {@link ol.source.Vector} sources use a function of this type to load
* features.
*
* This function takes an {@link ol.Extent} representing the area to be loaded,
* a `{number}` representing the resolution (map units per pixel) and an
* {@link ol.proj.Projection} for the projection as arguments. `this` within
* the function is bound to the {@link ol.source.Vector} it's called from.
*
* The function is responsible for loading the features and adding them to the
* source.
* @api
* @typedef {function(this:ol.source.Vector, ol.Extent, number,
* ol.proj.Projection)}
@@ -19,7 +30,21 @@ ol.FeatureLoader;
/**
* @param {string} url Feature URL service.
* {@link ol.source.Vector} sources use a function of this type to get the url
* to load features from.
*
* This function takes an {@link ol.Extent} representing the area to be loaded,
* a `{number}` representing the resolution (map units per pixel) and an
* {@link ol.proj.Projection} for the projection as arguments and returns a
* `{string}` representing the URL.
* @api
* @typedef {function(ol.Extent, number, ol.proj.Projection) : string}
*/
ol.FeatureUrlFunction;
/**
* @param {string|ol.FeatureUrlFunction} url Feature URL service.
* @param {ol.format.Feature} format Feature format.
* @param {function(this:ol.source.Vector, Array.<ol.Feature>)} success
* Function called with the loaded features. Called with the vector
@@ -59,13 +84,13 @@ ol.featureloader.loadFeaturesXhr = function(url, format, success) {
if (!goog.userAgent.IE) {
source = xhrIo.getResponseXml();
}
if (!goog.isDefAndNotNull(source)) {
if (!source) {
source = ol.xml.parse(xhrIo.getResponseText());
}
} else {
goog.asserts.fail('unexpected format type');
}
if (goog.isDefAndNotNull(source)) {
if (source) {
var features = format.readFeatures(source,
{featureProjection: projection});
success.call(this, features);
@@ -77,7 +102,12 @@ ol.featureloader.loadFeaturesXhr = function(url, format, success) {
}
goog.dispose(xhrIo);
}, false, this);
xhrIo.send(url);
if (goog.isFunction(url)) {
xhrIo.send(url(extent, resolution, projection));
} else {
xhrIo.send(url);
}
});
};
@@ -86,7 +116,7 @@ ol.featureloader.loadFeaturesXhr = function(url, format, success) {
* Create an XHR feature loader for a `url` and `format`. The feature loader
* loads features (with XHR), parses the features, and adds them to the
* vector source.
* @param {string} url Feature URL service.
* @param {string|ol.FeatureUrlFunction} url Feature URL service.
* @param {ol.format.Feature} format Feature format.
* @return {ol.FeatureLoader} The feature loader.
* @api

View File

@@ -32,7 +32,7 @@ goog.require('ol.proj');
*/
ol.format.EsriJSON = function(opt_options) {
var options = goog.isDef(opt_options) ? opt_options : {};
var options = opt_options ? opt_options : {};
goog.base(this);
@@ -54,21 +54,21 @@ goog.inherits(ol.format.EsriJSON, ol.format.JSONFeature);
* @return {ol.geom.Geometry} Geometry.
*/
ol.format.EsriJSON.readGeometry_ = function(object, opt_options) {
if (goog.isNull(object)) {
if (!object) {
return null;
}
var type;
if (goog.isNumber(object.x) && goog.isNumber(object.y)) {
type = ol.geom.GeometryType.POINT;
} else if (goog.isDefAndNotNull(object.points)) {
} else if (object.points) {
type = ol.geom.GeometryType.MULTI_POINT;
} else if (goog.isDefAndNotNull(object.paths)) {
} else if (object.paths) {
if (object.paths.length === 1) {
type = ol.geom.GeometryType.LINE_STRING;
} else {
type = ol.geom.GeometryType.MULTI_LINE_STRING;
}
} else if (goog.isDefAndNotNull(object.rings)) {
} else if (object.rings) {
var layout = ol.format.EsriJSON.getGeometryLayout_(object);
var rings = ol.format.EsriJSON.convertRings_(object.rings, layout);
object = /** @type {EsriJSONGeometry} */(goog.object.clone(object));
@@ -80,9 +80,9 @@ ol.format.EsriJSON.readGeometry_ = function(object, opt_options) {
object.rings = rings;
}
}
goog.asserts.assert(goog.isDef(type), 'geometry type should be defined');
goog.asserts.assert(type, 'geometry type should be defined');
var geometryReader = ol.format.EsriJSON.GEOMETRY_READERS_[type];
goog.asserts.assert(goog.isDef(geometryReader),
goog.asserts.assert(geometryReader,
'geometryReader should be defined');
return /** @type {ol.geom.Geometry} */ (
ol.format.Feature.transformWithOptions(
@@ -149,13 +149,13 @@ ol.format.EsriJSON.readPointGeometry_ = function(object) {
goog.asserts.assert(goog.isNumber(object.x), 'object.x should be number');
goog.asserts.assert(goog.isNumber(object.y), 'object.y should be number');
var point;
if (goog.isDefAndNotNull(object.m) && goog.isDefAndNotNull(object.z)) {
if (object.m !== undefined && object.z !== undefined) {
point = new ol.geom.Point([object.x, object.y, object.z, object.m],
ol.geom.GeometryLayout.XYZM);
} else if (goog.isDefAndNotNull(object.z)) {
} else if (object.z !== undefined) {
point = new ol.geom.Point([object.x, object.y, object.z],
ol.geom.GeometryLayout.XYZ);
} else if (goog.isDefAndNotNull(object.m)) {
} else if (object.m !== undefined) {
point = new ol.geom.Point([object.x, object.y, object.m],
ol.geom.GeometryLayout.XYM);
} else {
@@ -219,8 +219,7 @@ ol.format.EsriJSON.getGeometryLayout_ = function(object) {
* @return {ol.geom.Geometry} MultiPoint.
*/
ol.format.EsriJSON.readMultiPointGeometry_ = function(object) {
goog.asserts.assert(goog.isDefAndNotNull(object.points),
'object.points should be defined');
goog.asserts.assert(object.points, 'object.points should be defined');
var layout = ol.format.EsriJSON.getGeometryLayout_(object);
return new ol.geom.MultiPoint(object.points, layout);
};
@@ -232,7 +231,7 @@ ol.format.EsriJSON.readMultiPointGeometry_ = function(object) {
* @return {ol.geom.Geometry} MultiPolygon.
*/
ol.format.EsriJSON.readMultiPolygonGeometry_ = function(object) {
goog.asserts.assert(goog.isDefAndNotNull(object.rings));
goog.asserts.assert(object.rings);
goog.asserts.assert(object.rings.length > 1,
'object.rings should have length larger than 1');
var layout = ol.format.EsriJSON.getGeometryLayout_(object);
@@ -248,7 +247,7 @@ ol.format.EsriJSON.readMultiPolygonGeometry_ = function(object) {
* @return {ol.geom.Geometry} Polygon.
*/
ol.format.EsriJSON.readPolygonGeometry_ = function(object) {
goog.asserts.assert(goog.isDefAndNotNull(object.rings));
goog.asserts.assert(object.rings);
var layout = ol.format.EsriJSON.getGeometryLayout_(object);
return new ol.geom.Polygon(object.rings, layout);
};
@@ -483,26 +482,25 @@ ol.format.EsriJSON.prototype.readFeatures;
ol.format.EsriJSON.prototype.readFeatureFromObject = function(
object, opt_options) {
var esriJSONFeature = /** @type {EsriJSONFeature} */ (object);
goog.asserts.assert(goog.isDefAndNotNull(esriJSONFeature.geometry) ||
goog.isDefAndNotNull(esriJSONFeature.compressedGeometry) ||
goog.isDefAndNotNull(esriJSONFeature.attributes),
'geometry, compressedGeometry or attributes should be defined');
goog.asserts.assert(esriJSONFeature.geometry ||
esriJSONFeature.attributes,
'geometry or attributes should be defined');
var geometry = ol.format.EsriJSON.readGeometry_(esriJSONFeature.geometry,
opt_options);
var feature = new ol.Feature();
if (goog.isDef(this.geometryName_)) {
if (this.geometryName_) {
feature.setGeometryName(this.geometryName_);
}
feature.setGeometry(geometry);
if (goog.isDef(opt_options) && goog.isDef(opt_options.idField) &&
goog.isDef(esriJSONFeature.attributes[opt_options.idField])) {
if (opt_options && opt_options.idField &&
esriJSONFeature.attributes[opt_options.idField]) {
goog.asserts.assert(
goog.isNumber(esriJSONFeature.attributes[opt_options.idField]),
'objectIdFieldName value should be a number');
feature.setId(/** @type {number} */(
esriJSONFeature.attributes[opt_options.idField]));
}
if (goog.isDef(esriJSONFeature.attributes)) {
if (esriJSONFeature.attributes) {
feature.setProperties(esriJSONFeature.attributes);
}
return feature;
@@ -515,8 +513,8 @@ ol.format.EsriJSON.prototype.readFeatureFromObject = function(
ol.format.EsriJSON.prototype.readFeaturesFromObject = function(
object, opt_options) {
var esriJSONObject = /** @type {EsriJSONObject} */ (object);
var options = goog.isDef(opt_options) ? opt_options : {};
if (goog.isDefAndNotNull(esriJSONObject.features)) {
var options = opt_options ? opt_options : {};
if (esriJSONObject.features) {
var esriJSONFeatureCollection = /** @type {EsriJSONFeatureCollection} */
(object);
/** @type {Array.<ol.Feature>} */
@@ -573,8 +571,7 @@ ol.format.EsriJSON.prototype.readProjection;
*/
ol.format.EsriJSON.prototype.readProjectionFromObject = function(object) {
var esriJSONObject = /** @type {EsriJSONObject} */ (object);
if (goog.isDefAndNotNull(esriJSONObject.spatialReference) &&
goog.isDefAndNotNull(esriJSONObject.spatialReference.wkid)) {
if (esriJSONObject.spatialReference && esriJSONObject.spatialReference.wkid) {
var crs = esriJSONObject.spatialReference.wkid;
return ol.proj.get('EPSG:' + crs);
} else {
@@ -591,8 +588,7 @@ ol.format.EsriJSON.prototype.readProjectionFromObject = function(object) {
*/
ol.format.EsriJSON.writeGeometry_ = function(geometry, opt_options) {
var geometryWriter = ol.format.EsriJSON.GEOMETRY_WRITERS_[geometry.getType()];
goog.asserts.assert(goog.isDef(geometryWriter),
'geometryWriter should be defined');
goog.asserts.assert(geometryWriter, 'geometryWriter should be defined');
return geometryWriter(/** @type {ol.geom.Geometry} */ (
ol.format.Feature.transformWithOptions(geometry, true, opt_options)),
opt_options);
@@ -651,18 +647,18 @@ ol.format.EsriJSON.prototype.writeFeatureObject = function(
opt_options = this.adaptOptions(opt_options);
var object = {};
var geometry = feature.getGeometry();
if (goog.isDefAndNotNull(geometry)) {
if (geometry) {
object['geometry'] =
ol.format.EsriJSON.writeGeometry_(geometry, opt_options);
}
var properties = feature.getProperties();
goog.object.remove(properties, feature.getGeometryName());
delete properties[feature.getGeometryName()];
if (!goog.object.isEmpty(properties)) {
object['attributes'] = properties;
} else {
object['attributes'] = {};
}
if (goog.isDef(opt_options) && goog.isDef(opt_options.featureProjection)) {
if (opt_options && opt_options.featureProjection) {
object['spatialReference'] = /** @type {EsriJSONCRS} */({
wkid: ol.proj.get(
opt_options.featureProjection).getCode().split(':').pop()

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