Compare commits
266 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c9c845394f | ||
|
|
63bc9459d9 | ||
|
|
f6d40faa3d | ||
|
|
c475902e19 | ||
|
|
687a65aa95 | ||
|
|
4c207d9460 | ||
|
|
5fb7a8bc34 | ||
|
|
391e2b6fea | ||
|
|
04c16106cd | ||
|
|
85163bceb6 | ||
|
|
094f8d5391 | ||
|
|
09026af4fa | ||
|
|
d429eba4ae | ||
|
|
dc0c0877d7 | ||
|
|
21d001b22a | ||
|
|
487c22ceae | ||
|
|
72a9460ff6 | ||
|
|
46a1140583 | ||
|
|
f95b154117 | ||
|
|
7c5bec260b | ||
|
|
7cefe56167 | ||
|
|
ce9ac92028 | ||
|
|
da830a7670 | ||
|
|
e242c2ca1d | ||
|
|
82e989b652 | ||
|
|
0e83c90377 | ||
|
|
fb243807e8 | ||
|
|
d495b19448 | ||
|
|
ef5cdb0ec6 | ||
|
|
b3493c6382 | ||
|
|
17bac04030 | ||
|
|
e01c16c00b | ||
|
|
5abeaf3716 | ||
|
|
1d86ae3e3f | ||
|
|
7192a6d1a5 | ||
|
|
deea8060af | ||
|
|
faff14c44c | ||
|
|
2d7d002c85 | ||
|
|
9b3f61a084 | ||
|
|
4cf1ee769e | ||
|
|
0a617bef12 | ||
|
|
fef1b0981e | ||
|
|
b092bce4ff | ||
|
|
ef9b64673e | ||
|
|
4d53049a7f | ||
|
|
900827987a | ||
|
|
53d079ed95 | ||
|
|
63ae481dae | ||
|
|
9b6ad1b36f | ||
|
|
e5397cbfca | ||
|
|
a38ac3a07b | ||
|
|
d5c5d651cb | ||
|
|
ef0153692e | ||
|
|
5daf741922 | ||
|
|
ae657518c5 | ||
|
|
7d110c829f | ||
|
|
369f5a6171 | ||
|
|
b11c9c3b9c | ||
|
|
7530e46cfa | ||
|
|
2b84e0f245 | ||
|
|
5502083af9 | ||
|
|
02fe825113 | ||
|
|
6aa75c490b | ||
|
|
89456e7906 | ||
|
|
442caade91 | ||
|
|
e479411614 | ||
|
|
f360080fa7 | ||
|
|
e65384a407 | ||
|
|
3552f5ff66 | ||
|
|
54d4434900 | ||
|
|
7ceb7a439e | ||
|
|
f9b07991e1 | ||
|
|
e1f477ad8c | ||
|
|
30e2f44825 | ||
|
|
138adf0509 | ||
|
|
31a68e21a5 | ||
|
|
f5788a32a7 | ||
|
|
be2e4a33ae | ||
|
|
3c4e663224 | ||
|
|
eb5088eb40 | ||
|
|
d728c71f02 | ||
|
|
8813180d41 | ||
|
|
6bdacced92 | ||
|
|
74fffd5851 | ||
|
|
c4d5036878 | ||
|
|
e6c5fa9cd7 | ||
|
|
d29db03863 | ||
|
|
c8f0bb0ade | ||
|
|
e7ba63e020 | ||
|
|
8e122334ed | ||
|
|
ea8ffd8b6a | ||
|
|
8248ec63ba | ||
|
|
79766ad25c | ||
|
|
901eee1887 | ||
|
|
cd5b15fa55 | ||
|
|
ab87eb8af0 | ||
|
|
1aca93d297 | ||
|
|
871575607f | ||
|
|
509cb3a3c9 | ||
|
|
5acf9023d0 | ||
|
|
fd729216b5 | ||
|
|
b48cabee28 | ||
|
|
ed3dcd636f | ||
|
|
ac7db89a91 | ||
|
|
8209ed0a4c | ||
|
|
bc58c383ba | ||
|
|
d2dd7584d8 | ||
|
|
23de622d29 | ||
|
|
fbef99ae96 | ||
|
|
496cece074 | ||
|
|
cd152cca14 | ||
|
|
252e60b5af | ||
|
|
f49e82ade1 | ||
|
|
9e2a393426 | ||
|
|
4e7f558234 | ||
|
|
da611b9cb5 | ||
|
|
88c3891bef | ||
|
|
504e67303f | ||
|
|
ba5b950d5c | ||
|
|
d939fcec3f | ||
|
|
e8257e805d | ||
|
|
4c32ec4d67 | ||
|
|
fd69e5f2be | ||
|
|
e877a21b8e | ||
|
|
2ed3f28ab8 | ||
|
|
55908485f2 | ||
|
|
d6f03697d7 | ||
|
|
6c5775e6f6 | ||
|
|
28eef6c479 | ||
|
|
4e48170fac | ||
|
|
f746cb7f57 | ||
|
|
5cac9d61cc | ||
|
|
29a1ea9ae3 | ||
|
|
c48ce003ba | ||
|
|
27d1e808b8 | ||
|
|
b3b31ea16d | ||
|
|
83c59ee255 | ||
|
|
36e336f406 | ||
|
|
e3951fa3c6 | ||
|
|
a86c270f6a | ||
|
|
3a0683f373 | ||
|
|
6638ae855d | ||
|
|
b36d697585 | ||
|
|
7659e47e07 | ||
|
|
cf5eadebaa | ||
|
|
0927c55b3c | ||
|
|
d610b206f7 | ||
|
|
7352ddeb89 | ||
|
|
8eea827343 | ||
|
|
710353784b | ||
|
|
06b34055d1 | ||
|
|
3de0aad52a | ||
|
|
4fa590965c | ||
|
|
2b53d43faa | ||
|
|
0f55d173b8 | ||
|
|
cbb72c1ce4 | ||
|
|
66ad8364e0 | ||
|
|
b5ecc6e43c | ||
|
|
c1c07e2f3c | ||
|
|
4b993727c8 | ||
|
|
6c581b8eaf | ||
|
|
779811b52d | ||
|
|
c7a98f19b7 | ||
|
|
10d4aeb1c6 | ||
|
|
20b694b8c1 | ||
|
|
13273fb632 | ||
|
|
05da0ceaab | ||
|
|
68442578ba | ||
|
|
0e4c73072f | ||
|
|
bd7ff16537 | ||
|
|
241047795f | ||
|
|
293c65088d | ||
|
|
c56ee19763 | ||
|
|
08699e2b04 | ||
|
|
35dfa6c811 | ||
|
|
3e49fc6081 | ||
|
|
a42e4d4f4e | ||
|
|
631b92412e | ||
|
|
27fb1b6fde | ||
|
|
2b77e1601a | ||
|
|
eeba5f4d10 | ||
|
|
ceb39b0d07 | ||
|
|
d7ca176362 | ||
|
|
b0fe36e609 | ||
|
|
1fceb4a709 | ||
|
|
5350e9ba37 | ||
|
|
390153adc8 | ||
|
|
a096ec5bf7 | ||
|
|
007194a18f | ||
|
|
4c0d857f41 | ||
|
|
c8e9525f3b | ||
|
|
37d0176642 | ||
|
|
7c3bf59084 | ||
|
|
e4ea5e17f7 | ||
|
|
0acb2a335d | ||
|
|
c06d7aeacc | ||
|
|
e77d705d52 | ||
|
|
7252227ac6 | ||
|
|
3ddc260687 | ||
|
|
f30744c0b8 | ||
|
|
c37e80cd97 | ||
|
|
0a28c4282e | ||
|
|
dd8422c8a0 | ||
|
|
ee4f009d2f | ||
|
|
901c55bf41 | ||
|
|
e884a8704d | ||
|
|
b53e4e39ad | ||
|
|
6963c3c037 | ||
|
|
d0621a1949 | ||
|
|
0c21afc3e4 | ||
|
|
9a83db1c85 | ||
|
|
85498983c0 | ||
|
|
9894ceda2a | ||
|
|
880be210a1 | ||
|
|
7a38a8945c | ||
|
|
cdf6fe44d8 | ||
|
|
483f567d26 | ||
|
|
436561d9dd | ||
|
|
5162fda686 | ||
|
|
250e86e5f2 | ||
|
|
0bc8858760 | ||
|
|
3978dd87be | ||
|
|
0def9728bb | ||
|
|
b128675e60 | ||
|
|
9f57e57400 | ||
|
|
0d23ab44b3 | ||
|
|
44b1c9da89 | ||
|
|
e81b68ce8b | ||
|
|
167480bde6 | ||
|
|
4f45bbc05d | ||
|
|
8a703640d0 | ||
|
|
a5626a0573 | ||
|
|
33dbaccb68 | ||
|
|
f65129850d | ||
|
|
851d7e065a | ||
|
|
37112e07b6 | ||
|
|
263960aad1 | ||
|
|
b1f56c1e98 | ||
|
|
73b67f7a74 | ||
|
|
80995159b1 | ||
|
|
bfa16529de | ||
|
|
9543cc10dd | ||
|
|
7896350fe4 | ||
|
|
badf14e0f1 | ||
|
|
ea8ad4fc16 | ||
|
|
139bcca26a | ||
|
|
a613420953 | ||
|
|
e88f06b70f | ||
|
|
da627dda4b | ||
|
|
059ee6eaa5 | ||
|
|
8afa911eb5 | ||
|
|
a6f16e58e5 | ||
|
|
758118e00d | ||
|
|
1bebf55d30 | ||
|
|
32c776ba9f | ||
|
|
c2c4dbfc32 | ||
|
|
b2566cb64c | ||
|
|
0a99d0f211 | ||
|
|
cb8e4e0ee7 | ||
|
|
c5fe7df2e4 | ||
|
|
9a44895d41 | ||
|
|
56e871f8b5 | ||
|
|
de6ecb22a8 | ||
|
|
7b4a954c40 | ||
|
|
1159e1f792 | ||
|
|
c530f872f9 |
@@ -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
|
||||
|
||||
|
||||
@@ -1,7 +1,13 @@
|
||||
## 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
|
||||
|
||||
93
changelog/v3.10.0.md
Normal file
93
changelog/v3.10.0.md
Normal 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))
|
||||
@@ -1,3 +1,3 @@
|
||||
{
|
||||
"library_url": "https://github.com/google/closure-library/archive/a5f9b8a.zip"
|
||||
"library_url": "https://github.com/google/closure-library/archive/5b25e65.zip"
|
||||
}
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
#reset-brightness {
|
||||
min-width: 138px;
|
||||
}
|
||||
#reset-contrast {
|
||||
min-width: 120px;
|
||||
}
|
||||
|
||||
@@ -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-danger" 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="fa fa-plus"></i></button>
|
||||
<button id="reset-brightness">Brightness</button>
|
||||
<button id="decrease-brightness"><i class="fa fa-minus"></i></button>
|
||||
</div>
|
||||
<div class="btn-group">
|
||||
<button id="increase-contrast"><i class="fa fa-plus"></i></button>
|
||||
<button id="reset-contrast">Contrast</button>
|
||||
<button id="decrease-contrast"><i class="fa fa-minus"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -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);
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
---
|
||||
template: example.html
|
||||
title: Custom interaction example
|
||||
shortdesc: Example of a custom drag features interaction.
|
||||
shortdesc: Example of a custom interaction.
|
||||
docs: >
|
||||
This example demonstrates using a custom interaction with OpenLayers, by subclassing `ol.interaction.Pointer`.
|
||||
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"
|
||||
---
|
||||
4139
examples/data/geojson/roads-seoul.geojson
Normal file
4139
examples/data/geojson/roads-seoul.geojson
Normal file
File diff suppressed because it is too large
Load Diff
@@ -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
|
||||
})
|
||||
});
|
||||
|
||||
|
||||
@@ -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>
|
||||
</div>
|
||||
<div class="row-fluid">
|
||||
<div class="span4 offset4 iframe-info">
|
||||
<div id="info" class="alert alert-success">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -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>
|
||||
</div>
|
||||
<div class="row-fluid">
|
||||
<div class="span4 offset4 iframe-info">
|
||||
<div id="info" class="alert alert-success">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
#reset-hue {
|
||||
min-width: 90px;
|
||||
}
|
||||
#reset-saturation {
|
||||
min-width: 124px;
|
||||
}
|
||||
@@ -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-danger" 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="fa fa-plus"></i></button>
|
||||
<button id="reset-hue">Hue</button>
|
||||
<button id="decrease-hue"><i class="fa fa-minus"></i></button>
|
||||
</div>
|
||||
<div class="btn-group">
|
||||
<button id="increase-saturation"><i class="fa fa-plus"></i></button>
|
||||
<button id="reset-saturation">Saturation</button>
|
||||
<button id="decrease-saturation"><i class="fa fa-minus"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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"> 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
19
examples/jsts.html
Normal 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
53
examples/jsts.js
Normal 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
|
||||
})
|
||||
});
|
||||
@@ -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>
|
||||
|
||||
@@ -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));
|
||||
var opacityInput = $(layerid + ' input.opacity');
|
||||
opacityInput.on('input change', function() {
|
||||
layer.setOpacity(parseFloat(this.value));
|
||||
});
|
||||
input.val(String(layer.get(v)));
|
||||
}
|
||||
);
|
||||
opacityInput.val(String(layer.getOpacity()));
|
||||
}
|
||||
map.getLayers().forEach(function(layer, i) {
|
||||
bindInputs('#layer' + i, layer);
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -58,6 +58,9 @@ 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;
|
||||
|
||||
19
examples/turf.html
Normal file
19
examples/turf.html
Normal 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
57
examples/turf.js
Normal 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
|
||||
})
|
||||
});
|
||||
@@ -7,26 +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;
|
||||
|
||||
943
externs/jquery-1.9.js
vendored
943
externs/jquery-1.9.js
vendored
File diff suppressed because it is too large
Load Diff
340
externs/olx.js
340
externs/olx.js
@@ -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}
|
||||
@@ -2648,7 +2679,8 @@ olx.interaction.ModifyOptions.prototype.wrapX;
|
||||
|
||||
|
||||
/**
|
||||
* @typedef {{duration: (number|undefined)}}
|
||||
* @typedef {{duration: (number|undefined),
|
||||
* useAnchor: (boolean|undefined)}}
|
||||
* @api
|
||||
*/
|
||||
olx.interaction.MouseWheelZoomOptions;
|
||||
@@ -2662,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)}}
|
||||
@@ -2768,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
|
||||
@@ -2858,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.
|
||||
@@ -2920,11 +2974,7 @@ 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),
|
||||
@@ -2935,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}
|
||||
@@ -2967,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}
|
||||
@@ -3018,11 +3036,7 @@ 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),
|
||||
@@ -3034,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}
|
||||
@@ -3066,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)}
|
||||
@@ -3127,11 +3109,7 @@ 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),
|
||||
@@ -3143,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}
|
||||
@@ -3175,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}
|
||||
@@ -3234,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),
|
||||
@@ -3246,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
|
||||
@@ -3254,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']`.
|
||||
@@ -3354,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}
|
||||
@@ -3379,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),
|
||||
@@ -3395,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}
|
||||
@@ -3427,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}
|
||||
@@ -3488,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),
|
||||
@@ -3506,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}
|
||||
@@ -3547,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}
|
||||
@@ -3616,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),
|
||||
@@ -3636,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
|
||||
@@ -3662,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
|
||||
@@ -3725,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}
|
||||
@@ -6139,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
|
||||
*/
|
||||
@@ -6181,7 +5985,7 @@ olx.style.TextOptions.prototype.rotation;
|
||||
|
||||
|
||||
/**
|
||||
* Text.
|
||||
* Text content.
|
||||
* @type {string|undefined}
|
||||
* @api
|
||||
*/
|
||||
@@ -6189,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
|
||||
*/
|
||||
@@ -6197,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
|
||||
*/
|
||||
@@ -6205,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
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "openlayers",
|
||||
"version": "3.9.0",
|
||||
"version": "3.10.0",
|
||||
"description": "Build tools and sources for developing OpenLayers based mapping applications",
|
||||
"keywords": [
|
||||
"map",
|
||||
@@ -27,7 +27,7 @@
|
||||
"dependencies": {
|
||||
"async": "0.9.0",
|
||||
"browserify": "9.0.3",
|
||||
"closure-util": "1.7.0",
|
||||
"closure-util": "1.8.0",
|
||||
"fs-extra": "0.12.0",
|
||||
"glob": "5.0.3",
|
||||
"graceful-fs": "3.0.2",
|
||||
@@ -55,7 +55,7 @@
|
||||
"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",
|
||||
|
||||
@@ -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 (
|
||||
/**
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -38,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;
|
||||
|
||||
};
|
||||
|
||||
@@ -62,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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -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];
|
||||
|
||||
@@ -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_;
|
||||
};
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
};
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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]
|
||||
|
||||
@@ -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) {
|
||||
if (currentRotation !== undefined) {
|
||||
if (this.duration_ > 0) {
|
||||
currentRotation = currentRotation % (2 * Math.PI);
|
||||
if (currentRotation < -Math.PI) {
|
||||
currentRotation += 2 * Math.PI;
|
||||
}
|
||||
while (currentRotation > Math.PI) {
|
||||
if (currentRotation > Math.PI) {
|
||||
currentRotation -= 2 * Math.PI;
|
||||
}
|
||||
if (goog.isDef(currentRotation)) {
|
||||
if (this.duration_ > 0) {
|
||||
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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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);
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -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);
|
||||
};
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
@@ -209,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);
|
||||
}
|
||||
@@ -245,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();
|
||||
};
|
||||
@@ -321,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;
|
||||
};
|
||||
|
||||
@@ -84,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);
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -42,9 +42,9 @@ ol.format.Feature.prototype.getExtensions = goog.abstractMethod;
|
||||
*/
|
||||
ol.format.Feature.prototype.getReadOptions = function(source, opt_options) {
|
||||
var options;
|
||||
if (goog.isDef(opt_options)) {
|
||||
if (opt_options) {
|
||||
options = {
|
||||
dataProjection: goog.isDef(opt_options.dataProjection) ?
|
||||
dataProjection: opt_options.dataProjection ?
|
||||
opt_options.dataProjection : this.readProjection(source),
|
||||
featureProjection: opt_options.featureProjection
|
||||
};
|
||||
@@ -64,10 +64,10 @@ ol.format.Feature.prototype.getReadOptions = function(source, opt_options) {
|
||||
*/
|
||||
ol.format.Feature.prototype.adaptOptions = function(options) {
|
||||
var updatedOptions;
|
||||
if (goog.isDef(options)) {
|
||||
if (options) {
|
||||
updatedOptions = {
|
||||
featureProjection: options.featureProjection,
|
||||
dataProjection: goog.isDefAndNotNull(options.dataProjection) ?
|
||||
dataProjection: options.dataProjection ?
|
||||
options.dataProjection : this.defaultDataProjection,
|
||||
rightHanded: options.rightHanded
|
||||
};
|
||||
@@ -161,11 +161,11 @@ ol.format.Feature.prototype.writeGeometry = goog.abstractMethod;
|
||||
*/
|
||||
ol.format.Feature.transformWithOptions = function(
|
||||
geometry, write, opt_options) {
|
||||
var featureProjection = goog.isDef(opt_options) ?
|
||||
var featureProjection = opt_options ?
|
||||
ol.proj.get(opt_options.featureProjection) : null;
|
||||
var dataProjection = goog.isDef(opt_options) ?
|
||||
var dataProjection = opt_options ?
|
||||
ol.proj.get(opt_options.dataProjection) : null;
|
||||
if (!goog.isNull(featureProjection) && !goog.isNull(dataProjection) &&
|
||||
if (featureProjection && dataProjection &&
|
||||
!ol.proj.equivalent(featureProjection, dataProjection)) {
|
||||
if (geometry instanceof ol.geom.Geometry) {
|
||||
return (write ? geometry.clone() : geometry).transform(
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
|
||||
goog.provide('ol.format.GeoJSON');
|
||||
|
||||
goog.require('goog.array');
|
||||
goog.require('goog.asserts');
|
||||
goog.require('goog.object');
|
||||
goog.require('ol.Feature');
|
||||
@@ -31,7 +30,7 @@ goog.require('ol.proj');
|
||||
*/
|
||||
ol.format.GeoJSON = function(opt_options) {
|
||||
|
||||
var options = goog.isDef(opt_options) ? opt_options : {};
|
||||
var options = opt_options ? opt_options : {};
|
||||
|
||||
goog.base(this);
|
||||
|
||||
@@ -39,7 +38,7 @@ ol.format.GeoJSON = function(opt_options) {
|
||||
* @inheritDoc
|
||||
*/
|
||||
this.defaultDataProjection = ol.proj.get(
|
||||
goog.isDefAndNotNull(options.defaultDataProjection) ?
|
||||
options.defaultDataProjection ?
|
||||
options.defaultDataProjection : 'EPSG:4326');
|
||||
|
||||
|
||||
@@ -69,12 +68,11 @@ ol.format.GeoJSON.EXTENSIONS_ = ['.geojson'];
|
||||
* @return {ol.geom.Geometry} Geometry.
|
||||
*/
|
||||
ol.format.GeoJSON.readGeometry_ = function(object, opt_options) {
|
||||
if (goog.isNull(object)) {
|
||||
if (!object) {
|
||||
return null;
|
||||
}
|
||||
var geometryReader = ol.format.GeoJSON.GEOMETRY_READERS_[object.type];
|
||||
goog.asserts.assert(goog.isDef(geometryReader),
|
||||
'geometryReader should be defined');
|
||||
goog.asserts.assert(geometryReader, 'geometryReader should be defined');
|
||||
return /** @type {ol.geom.Geometry} */ (
|
||||
ol.format.Feature.transformWithOptions(
|
||||
geometryReader(object), false, opt_options));
|
||||
@@ -91,7 +89,7 @@ ol.format.GeoJSON.readGeometryCollectionGeometry_ = function(
|
||||
object, opt_options) {
|
||||
goog.asserts.assert(object.type == 'GeometryCollection',
|
||||
'object.type should be GeometryCollection');
|
||||
var geometries = goog.array.map(object.geometries,
|
||||
var geometries = object.geometries.map(
|
||||
/**
|
||||
* @param {GeoJSONGeometry} geometry Geometry.
|
||||
* @return {ol.geom.Geometry} geometry Geometry.
|
||||
@@ -183,8 +181,7 @@ ol.format.GeoJSON.readPolygonGeometry_ = function(object) {
|
||||
*/
|
||||
ol.format.GeoJSON.writeGeometry_ = function(geometry, opt_options) {
|
||||
var geometryWriter = ol.format.GeoJSON.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);
|
||||
@@ -214,8 +211,7 @@ ol.format.GeoJSON.writeGeometryCollectionGeometry_ = function(
|
||||
geometry, opt_options) {
|
||||
goog.asserts.assertInstanceof(geometry, ol.geom.GeometryCollection,
|
||||
'geometry should be an ol.geom.GeometryCollection');
|
||||
var geometries = goog.array.map(
|
||||
geometry.getGeometriesArray(), function(geometry) {
|
||||
var geometries = geometry.getGeometriesArray().map(function(geometry) {
|
||||
return ol.format.GeoJSON.writeGeometry_(geometry, opt_options);
|
||||
});
|
||||
return /** @type {GeoJSONGeometryCollection} */ ({
|
||||
@@ -284,7 +280,7 @@ ol.format.GeoJSON.writeMultiPolygonGeometry_ = function(geometry, opt_options) {
|
||||
goog.asserts.assertInstanceof(geometry, ol.geom.MultiPolygon,
|
||||
'geometry should be an ol.geom.MultiPolygon');
|
||||
var right;
|
||||
if (goog.isDef(opt_options)) {
|
||||
if (opt_options) {
|
||||
right = opt_options.rightHanded;
|
||||
}
|
||||
return /** @type {GeoJSONGeometry} */ ({
|
||||
@@ -320,7 +316,7 @@ ol.format.GeoJSON.writePolygonGeometry_ = function(geometry, opt_options) {
|
||||
goog.asserts.assertInstanceof(geometry, ol.geom.Polygon,
|
||||
'geometry should be an ol.geom.Polygon');
|
||||
var right;
|
||||
if (goog.isDef(opt_options)) {
|
||||
if (opt_options) {
|
||||
right = opt_options.rightHanded;
|
||||
}
|
||||
return /** @type {GeoJSONGeometry} */ ({
|
||||
@@ -408,14 +404,14 @@ ol.format.GeoJSON.prototype.readFeatureFromObject = function(
|
||||
var geometry = ol.format.GeoJSON.readGeometry_(geoJSONFeature.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(geoJSONFeature.id)) {
|
||||
if (geoJSONFeature.id) {
|
||||
feature.setId(geoJSONFeature.id);
|
||||
}
|
||||
if (goog.isDef(geoJSONFeature.properties)) {
|
||||
if (geoJSONFeature.properties) {
|
||||
feature.setProperties(geoJSONFeature.properties);
|
||||
}
|
||||
return feature;
|
||||
@@ -488,7 +484,7 @@ ol.format.GeoJSON.prototype.readProjection;
|
||||
ol.format.GeoJSON.prototype.readProjectionFromObject = function(object) {
|
||||
var geoJSONObject = /** @type {GeoJSONObject} */ (object);
|
||||
var crs = geoJSONObject.crs;
|
||||
if (goog.isDefAndNotNull(crs)) {
|
||||
if (crs) {
|
||||
if (crs.type == 'name') {
|
||||
return ol.proj.get(crs.properties.name);
|
||||
} else if (crs.type == 'EPSG') {
|
||||
@@ -534,18 +530,18 @@ ol.format.GeoJSON.prototype.writeFeatureObject = function(
|
||||
'type': 'Feature'
|
||||
};
|
||||
var id = feature.getId();
|
||||
if (goog.isDefAndNotNull(id)) {
|
||||
if (id) {
|
||||
object['id'] = id;
|
||||
}
|
||||
var geometry = feature.getGeometry();
|
||||
if (goog.isDefAndNotNull(geometry)) {
|
||||
if (geometry) {
|
||||
object['geometry'] =
|
||||
ol.format.GeoJSON.writeGeometry_(geometry, opt_options);
|
||||
} else {
|
||||
object['geometry'] = null;
|
||||
}
|
||||
var properties = feature.getProperties();
|
||||
goog.object.remove(properties, feature.getGeometryName());
|
||||
delete properties[feature.getGeometryName()];
|
||||
if (!goog.object.isEmpty(properties)) {
|
||||
object['properties'] = properties;
|
||||
} else {
|
||||
|
||||
@@ -22,7 +22,7 @@ goog.require('ol.xml');
|
||||
*/
|
||||
ol.format.GML2 = function(opt_options) {
|
||||
var options = /** @type {olx.format.GMLOptions} */
|
||||
(goog.isDef(opt_options) ? opt_options : {});
|
||||
(opt_options ? opt_options : {});
|
||||
|
||||
goog.base(this, options);
|
||||
|
||||
@@ -33,7 +33,7 @@ ol.format.GML2 = function(opt_options) {
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
this.schemaLocation = goog.isDef(options.schemaLocation) ?
|
||||
this.schemaLocation = options.schemaLocation ?
|
||||
options.schemaLocation : ol.format.GML2.schemaLocation_;
|
||||
|
||||
};
|
||||
@@ -62,20 +62,20 @@ ol.format.GML2.prototype.readFlatCoordinates_ = function(node, objectStack) {
|
||||
var containerSrs = context['srsName'];
|
||||
var containerDimension = node.parentNode.getAttribute('srsDimension');
|
||||
var axisOrientation = 'enu';
|
||||
if (!goog.isNull(containerSrs)) {
|
||||
if (containerSrs) {
|
||||
var proj = ol.proj.get(containerSrs);
|
||||
axisOrientation = proj.getAxisOrientation();
|
||||
}
|
||||
var coords = s.split(/[\s,]+/);
|
||||
// The "dimension" attribute is from the GML 3.0.1 spec.
|
||||
var dim = 2;
|
||||
if (!goog.isNull(node.getAttribute('srsDimension'))) {
|
||||
if (node.getAttribute('srsDimension')) {
|
||||
dim = ol.format.XSD.readNonNegativeIntegerString(
|
||||
node.getAttribute('srsDimension'));
|
||||
} else if (!goog.isNull(node.getAttribute('dimension'))) {
|
||||
} else if (node.getAttribute('dimension')) {
|
||||
dim = ol.format.XSD.readNonNegativeIntegerString(
|
||||
node.getAttribute('dimension'));
|
||||
} else if (!goog.isNull(containerDimension)) {
|
||||
} else if (containerDimension) {
|
||||
dim = ol.format.XSD.readNonNegativeIntegerString(containerDimension);
|
||||
}
|
||||
var x, y, z;
|
||||
@@ -127,7 +127,7 @@ ol.format.GML2.prototype.innerBoundaryIsParser_ =
|
||||
var flatLinearRing = ol.xml.pushParseAndPop(
|
||||
/** @type {Array.<number>|undefined} */ (undefined),
|
||||
this.RING_PARSERS, node, objectStack, this);
|
||||
if (goog.isDef(flatLinearRing)) {
|
||||
if (flatLinearRing) {
|
||||
var flatLinearRings = /** @type {Array.<Array.<number>>} */
|
||||
(objectStack[objectStack.length - 1]);
|
||||
goog.asserts.assert(goog.isArray(flatLinearRings),
|
||||
@@ -153,7 +153,7 @@ ol.format.GML2.prototype.outerBoundaryIsParser_ =
|
||||
var flatLinearRing = ol.xml.pushParseAndPop(
|
||||
/** @type {Array.<number>|undefined} */ (undefined),
|
||||
this.RING_PARSERS, node, objectStack, this);
|
||||
if (goog.isDef(flatLinearRing)) {
|
||||
if (flatLinearRing) {
|
||||
var flatLinearRings = /** @type {Array.<Array.<number>>} */
|
||||
(objectStack[objectStack.length - 1]);
|
||||
goog.asserts.assert(goog.isArray(flatLinearRings),
|
||||
|
||||
@@ -5,6 +5,7 @@ goog.require('goog.array');
|
||||
goog.require('goog.asserts');
|
||||
goog.require('goog.dom.NodeType');
|
||||
goog.require('goog.object');
|
||||
goog.require('ol');
|
||||
goog.require('ol.Feature');
|
||||
goog.require('ol.extent');
|
||||
goog.require('ol.format.Feature');
|
||||
@@ -37,7 +38,7 @@ goog.require('ol.xml');
|
||||
*/
|
||||
ol.format.GML3 = function(opt_options) {
|
||||
var options = /** @type {olx.format.GMLOptions} */
|
||||
(goog.isDef(opt_options) ? opt_options : {});
|
||||
(opt_options ? opt_options : {});
|
||||
|
||||
goog.base(this, options);
|
||||
|
||||
@@ -45,34 +46,32 @@ ol.format.GML3 = function(opt_options) {
|
||||
* @private
|
||||
* @type {boolean}
|
||||
*/
|
||||
this.surface_ = goog.isDef(options.surface) ?
|
||||
options.surface : false;
|
||||
this.surface_ = options.surface !== undefined ? options.surface : false;
|
||||
|
||||
/**
|
||||
* @private
|
||||
* @type {boolean}
|
||||
*/
|
||||
this.curve_ = goog.isDef(options.curve) ?
|
||||
options.curve : false;
|
||||
this.curve_ = options.curve !== undefined ? options.curve : false;
|
||||
|
||||
/**
|
||||
* @private
|
||||
* @type {boolean}
|
||||
*/
|
||||
this.multiCurve_ = goog.isDef(options.multiCurve) ?
|
||||
this.multiCurve_ = options.multiCurve !== undefined ?
|
||||
options.multiCurve : true;
|
||||
|
||||
/**
|
||||
* @private
|
||||
* @type {boolean}
|
||||
*/
|
||||
this.multiSurface_ = goog.isDef(options.multiSurface) ?
|
||||
this.multiSurface_ = options.multiSurface !== undefined ?
|
||||
options.multiSurface : true;
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
this.schemaLocation = goog.isDef(options.schemaLocation) ?
|
||||
this.schemaLocation = options.schemaLocation ?
|
||||
options.schemaLocation : ol.format.GML3.schemaLocation_;
|
||||
|
||||
};
|
||||
@@ -103,7 +102,7 @@ ol.format.GML3.prototype.readMultiCurve_ = function(node, objectStack) {
|
||||
var lineStrings = ol.xml.pushParseAndPop(
|
||||
/** @type {Array.<ol.geom.LineString>} */ ([]),
|
||||
this.MULTICURVE_PARSERS_, node, objectStack, this);
|
||||
if (goog.isDef(lineStrings)) {
|
||||
if (lineStrings) {
|
||||
var multiLineString = new ol.geom.MultiLineString(null);
|
||||
multiLineString.setLineStrings(lineStrings);
|
||||
return multiLineString;
|
||||
@@ -127,7 +126,7 @@ ol.format.GML3.prototype.readMultiSurface_ = function(node, objectStack) {
|
||||
var polygons = ol.xml.pushParseAndPop(
|
||||
/** @type {Array.<ol.geom.Polygon>} */ ([]),
|
||||
this.MULTISURFACE_PARSERS_, node, objectStack, this);
|
||||
if (goog.isDef(polygons)) {
|
||||
if (polygons) {
|
||||
var multiPolygon = new ol.geom.MultiPolygon(null);
|
||||
multiPolygon.setPolygons(polygons);
|
||||
return multiPolygon;
|
||||
@@ -251,7 +250,7 @@ ol.format.GML3.prototype.interiorParser_ = function(node, objectStack) {
|
||||
var flatLinearRing = ol.xml.pushParseAndPop(
|
||||
/** @type {Array.<number>|undefined} */ (undefined),
|
||||
this.RING_PARSERS, node, objectStack, this);
|
||||
if (goog.isDef(flatLinearRing)) {
|
||||
if (flatLinearRing) {
|
||||
var flatLinearRings = /** @type {Array.<Array.<number>>} */
|
||||
(objectStack[objectStack.length - 1]);
|
||||
goog.asserts.assert(goog.isArray(flatLinearRings),
|
||||
@@ -276,7 +275,7 @@ ol.format.GML3.prototype.exteriorParser_ = function(node, objectStack) {
|
||||
var flatLinearRing = ol.xml.pushParseAndPop(
|
||||
/** @type {Array.<number>|undefined} */ (undefined),
|
||||
this.RING_PARSERS, node, objectStack, this);
|
||||
if (goog.isDef(flatLinearRing)) {
|
||||
if (flatLinearRing) {
|
||||
var flatLinearRings = /** @type {Array.<Array.<number>>} */
|
||||
(objectStack[objectStack.length - 1]);
|
||||
goog.asserts.assert(goog.isArray(flatLinearRings),
|
||||
@@ -302,8 +301,7 @@ ol.format.GML3.prototype.readSurface_ = function(node, objectStack) {
|
||||
var flatLinearRings = ol.xml.pushParseAndPop(
|
||||
/** @type {Array.<Array.<number>>} */ ([null]),
|
||||
this.SURFACE_PARSERS_, node, objectStack, this);
|
||||
if (goog.isDef(flatLinearRings) &&
|
||||
!goog.isNull(flatLinearRings[0])) {
|
||||
if (flatLinearRings && flatLinearRings[0]) {
|
||||
var polygon = new ol.geom.Polygon(null);
|
||||
var flatCoordinates = flatLinearRings[0];
|
||||
var ends = [flatCoordinates.length];
|
||||
@@ -334,7 +332,7 @@ ol.format.GML3.prototype.readCurve_ = function(node, objectStack) {
|
||||
var flatCoordinates = ol.xml.pushParseAndPop(
|
||||
/** @type {Array.<number>} */ ([null]),
|
||||
this.CURVE_PARSERS_, node, objectStack, this);
|
||||
if (goog.isDef(flatCoordinates)) {
|
||||
if (flatCoordinates) {
|
||||
var lineString = new ol.geom.LineString(null);
|
||||
lineString.setFlatCoordinates(ol.geom.GeometryLayout.XYZ, flatCoordinates);
|
||||
return lineString;
|
||||
@@ -387,7 +385,7 @@ ol.format.GML3.prototype.readFlatPos_ = function(node, objectStack) {
|
||||
goog.asserts.assert(goog.isObject(context), 'context should be an Object');
|
||||
var containerSrs = context['srsName'];
|
||||
var axisOrientation = 'enu';
|
||||
if (!goog.isNull(containerSrs)) {
|
||||
if (containerSrs) {
|
||||
var proj = ol.proj.get(containerSrs);
|
||||
axisOrientation = proj.getAxisOrientation();
|
||||
}
|
||||
@@ -424,20 +422,20 @@ ol.format.GML3.prototype.readFlatPosList_ = function(node, objectStack) {
|
||||
var containerSrs = context['srsName'];
|
||||
var containerDimension = node.parentNode.getAttribute('srsDimension');
|
||||
var axisOrientation = 'enu';
|
||||
if (!goog.isNull(containerSrs)) {
|
||||
if (containerSrs) {
|
||||
var proj = ol.proj.get(containerSrs);
|
||||
axisOrientation = proj.getAxisOrientation();
|
||||
}
|
||||
var coords = s.split(/\s+/);
|
||||
// The "dimension" attribute is from the GML 3.0.1 spec.
|
||||
var dim = 2;
|
||||
if (!goog.isNull(node.getAttribute('srsDimension'))) {
|
||||
if (node.getAttribute('srsDimension')) {
|
||||
dim = ol.format.XSD.readNonNegativeIntegerString(
|
||||
node.getAttribute('srsDimension'));
|
||||
} else if (!goog.isNull(node.getAttribute('dimension'))) {
|
||||
} else if (node.getAttribute('dimension')) {
|
||||
dim = ol.format.XSD.readNonNegativeIntegerString(
|
||||
node.getAttribute('dimension'));
|
||||
} else if (!goog.isNull(containerDimension)) {
|
||||
} else if (containerDimension) {
|
||||
dim = ol.format.XSD.readNonNegativeIntegerString(containerDimension);
|
||||
}
|
||||
var x, y, z;
|
||||
@@ -645,7 +643,7 @@ ol.format.GML3.prototype.writePos_ = function(node, value, objectStack) {
|
||||
goog.asserts.assert(goog.isObject(context), 'context should be an Object');
|
||||
var srsName = context['srsName'];
|
||||
var axisOrientation = 'enu';
|
||||
if (goog.isDefAndNotNull(srsName)) {
|
||||
if (srsName) {
|
||||
axisOrientation = ol.proj.get(srsName).getAxisOrientation();
|
||||
}
|
||||
var point = value.getCoordinates();
|
||||
@@ -668,7 +666,7 @@ ol.format.GML3.prototype.writePos_ = function(node, value, objectStack) {
|
||||
*/
|
||||
ol.format.GML3.prototype.getCoords_ = function(point, opt_srsName) {
|
||||
var axisOrientation = 'enu';
|
||||
if (goog.isDefAndNotNull(opt_srsName)) {
|
||||
if (opt_srsName) {
|
||||
axisOrientation = ol.proj.get(opt_srsName).getAxisOrientation();
|
||||
}
|
||||
return ((axisOrientation.substr(0, 2) === 'en') ?
|
||||
@@ -710,7 +708,7 @@ ol.format.GML3.prototype.writePoint_ = function(node, geometry, objectStack) {
|
||||
var context = objectStack[objectStack.length - 1];
|
||||
goog.asserts.assert(goog.isObject(context), 'context should be an Object');
|
||||
var srsName = context['srsName'];
|
||||
if (goog.isDefAndNotNull(srsName)) {
|
||||
if (srsName) {
|
||||
node.setAttribute('srsName', srsName);
|
||||
}
|
||||
var pos = ol.xml.createElementNS(node.namespaceURI, 'pos');
|
||||
@@ -741,7 +739,7 @@ ol.format.GML3.prototype.writeEnvelope = function(node, extent, objectStack) {
|
||||
var context = objectStack[objectStack.length - 1];
|
||||
goog.asserts.assert(goog.isObject(context), 'context should be an Object');
|
||||
var srsName = context['srsName'];
|
||||
if (goog.isDef(srsName)) {
|
||||
if (srsName) {
|
||||
node.setAttribute('srsName', srsName);
|
||||
}
|
||||
var keys = ['lowerCorner', 'upperCorner'];
|
||||
@@ -765,7 +763,7 @@ ol.format.GML3.prototype.writeLinearRing_ =
|
||||
var context = objectStack[objectStack.length - 1];
|
||||
goog.asserts.assert(goog.isObject(context), 'context should be an Object');
|
||||
var srsName = context['srsName'];
|
||||
if (goog.isDefAndNotNull(srsName)) {
|
||||
if (srsName) {
|
||||
node.setAttribute('srsName', srsName);
|
||||
}
|
||||
var posList = ol.xml.createElementNS(node.namespaceURI, 'posList');
|
||||
@@ -787,11 +785,11 @@ ol.format.GML3.prototype.RING_NODE_FACTORY_ =
|
||||
var parentNode = context.node;
|
||||
goog.asserts.assert(goog.isObject(context), 'context should be an Object');
|
||||
var exteriorWritten = context['exteriorWritten'];
|
||||
if (!goog.isDef(exteriorWritten)) {
|
||||
if (exteriorWritten === undefined) {
|
||||
context['exteriorWritten'] = true;
|
||||
}
|
||||
return ol.xml.createElementNS(parentNode.namespaceURI,
|
||||
goog.isDef(exteriorWritten) ? 'interior' : 'exterior');
|
||||
exteriorWritten !== undefined ? 'interior' : 'exterior');
|
||||
};
|
||||
|
||||
|
||||
@@ -806,7 +804,7 @@ ol.format.GML3.prototype.writeSurfaceOrPolygon_ =
|
||||
var context = objectStack[objectStack.length - 1];
|
||||
goog.asserts.assert(goog.isObject(context), 'context should be an Object');
|
||||
var srsName = context['srsName'];
|
||||
if (node.nodeName !== 'PolygonPatch' && goog.isDefAndNotNull(srsName)) {
|
||||
if (node.nodeName !== 'PolygonPatch' && srsName) {
|
||||
node.setAttribute('srsName', srsName);
|
||||
}
|
||||
if (node.nodeName === 'Polygon' || node.nodeName === 'PolygonPatch') {
|
||||
@@ -836,8 +834,7 @@ ol.format.GML3.prototype.writeCurveOrLineString_ =
|
||||
var context = objectStack[objectStack.length - 1];
|
||||
goog.asserts.assert(goog.isObject(context), 'context should be an Object');
|
||||
var srsName = context['srsName'];
|
||||
if (node.nodeName !== 'LineStringSegment' &&
|
||||
goog.isDefAndNotNull(srsName)) {
|
||||
if (node.nodeName !== 'LineStringSegment' && srsName) {
|
||||
node.setAttribute('srsName', srsName);
|
||||
}
|
||||
if (node.nodeName === 'LineString' ||
|
||||
@@ -866,7 +863,7 @@ ol.format.GML3.prototype.writeMultiSurfaceOrPolygon_ =
|
||||
goog.asserts.assert(goog.isObject(context), 'context should be an Object');
|
||||
var srsName = context['srsName'];
|
||||
var surface = context['surface'];
|
||||
if (goog.isDefAndNotNull(srsName)) {
|
||||
if (srsName) {
|
||||
node.setAttribute('srsName', srsName);
|
||||
}
|
||||
var polygons = geometry.getPolygons();
|
||||
@@ -888,7 +885,7 @@ ol.format.GML3.prototype.writeMultiPoint_ = function(node, geometry,
|
||||
var context = objectStack[objectStack.length - 1];
|
||||
goog.asserts.assert(goog.isObject(context), 'context should be an Object');
|
||||
var srsName = context['srsName'];
|
||||
if (goog.isDefAndNotNull(srsName)) {
|
||||
if (srsName) {
|
||||
node.setAttribute('srsName', srsName);
|
||||
}
|
||||
var points = geometry.getPoints();
|
||||
@@ -911,7 +908,7 @@ ol.format.GML3.prototype.writeMultiCurveOrLineString_ =
|
||||
goog.asserts.assert(goog.isObject(context), 'context should be an Object');
|
||||
var srsName = context['srsName'];
|
||||
var curve = context['curve'];
|
||||
if (goog.isDefAndNotNull(srsName)) {
|
||||
if (srsName) {
|
||||
node.setAttribute('srsName', srsName);
|
||||
}
|
||||
var lines = geometry.getLineStrings();
|
||||
@@ -947,7 +944,7 @@ ol.format.GML3.prototype.writeSurfaceOrPolygonMember_ =
|
||||
goog.asserts.assert(goog.isObject(context), 'context should be an Object');
|
||||
var child = this.GEOMETRY_NODE_FACTORY_(
|
||||
polygon, objectStack);
|
||||
if (goog.isDef(child)) {
|
||||
if (child) {
|
||||
node.appendChild(child);
|
||||
this.writeSurfaceOrPolygon_(child, polygon, objectStack);
|
||||
}
|
||||
@@ -979,7 +976,7 @@ ol.format.GML3.prototype.writeLineStringOrCurveMember_ =
|
||||
var context = objectStack[objectStack.length - 1];
|
||||
goog.asserts.assert(goog.isObject(context), 'context should be an Object');
|
||||
var child = this.GEOMETRY_NODE_FACTORY_(line, objectStack);
|
||||
if (goog.isDef(child)) {
|
||||
if (child) {
|
||||
node.appendChild(child);
|
||||
this.writeCurveOrLineString_(child, line, objectStack);
|
||||
}
|
||||
@@ -1028,7 +1025,7 @@ ol.format.GML3.prototype.writeGeometryElement =
|
||||
item.node = node;
|
||||
var value;
|
||||
if (goog.isArray(geometry)) {
|
||||
if (goog.isDef(context.dataProjection)) {
|
||||
if (context.dataProjection) {
|
||||
value = ol.proj.transformExtent(
|
||||
geometry, context.featureProjection, context.dataProjection);
|
||||
} else {
|
||||
@@ -1055,14 +1052,14 @@ ol.format.GML3.prototype.writeGeometryElement =
|
||||
ol.format.GML3.prototype.writeFeatureElement =
|
||||
function(node, feature, objectStack) {
|
||||
var fid = feature.getId();
|
||||
if (goog.isDef(fid)) {
|
||||
if (fid) {
|
||||
node.setAttribute('fid', fid);
|
||||
}
|
||||
var context = objectStack[objectStack.length - 1];
|
||||
goog.asserts.assert(goog.isObject(context), 'context should be an Object');
|
||||
var featureNS = context['featureNS'];
|
||||
var geometryName = feature.getGeometryName();
|
||||
if (!goog.isDef(context.serializers)) {
|
||||
if (!context.serializers) {
|
||||
context.serializers = {};
|
||||
context.serializers[featureNS] = {};
|
||||
}
|
||||
@@ -1070,10 +1067,10 @@ ol.format.GML3.prototype.writeFeatureElement =
|
||||
var keys = [], values = [];
|
||||
for (var key in properties) {
|
||||
var value = properties[key];
|
||||
if (!goog.isNull(value)) {
|
||||
if (value !== null) {
|
||||
keys.push(key);
|
||||
values.push(value);
|
||||
if (key == geometryName) {
|
||||
if (key == geometryName || value instanceof ol.geom.Geometry) {
|
||||
if (!(key in context.serializers[featureNS])) {
|
||||
context.serializers[featureNS][key] = ol.xml.makeChildAppender(
|
||||
this.writeGeometryElement, this);
|
||||
@@ -1293,7 +1290,7 @@ ol.format.GML3.prototype.writeGeometryNode = function(geometry, opt_options) {
|
||||
var context = {node: geom, srsName: this.srsName,
|
||||
curve: this.curve_, surface: this.surface_,
|
||||
multiSurface: this.multiSurface_, multiCurve: this.multiCurve_};
|
||||
if (goog.isDef(opt_options)) {
|
||||
if (opt_options) {
|
||||
goog.object.extend(context, opt_options);
|
||||
}
|
||||
this.writeGeometryElement(geom, geometry, [context]);
|
||||
@@ -1336,7 +1333,7 @@ ol.format.GML3.prototype.writeFeaturesNode = function(features, opt_options) {
|
||||
featureNS: this.featureNS,
|
||||
featureType: this.featureType
|
||||
};
|
||||
if (goog.isDef(opt_options)) {
|
||||
if (opt_options) {
|
||||
goog.object.extend(context, opt_options);
|
||||
}
|
||||
this.writeFeatureMembers_(node, features, [context]);
|
||||
|
||||
@@ -41,7 +41,7 @@ goog.require('ol.xml');
|
||||
*/
|
||||
ol.format.GMLBase = function(opt_options) {
|
||||
var options = /** @type {olx.format.GMLOptions} */
|
||||
(goog.isDef(opt_options) ? opt_options : {});
|
||||
(opt_options ? opt_options : {});
|
||||
|
||||
/**
|
||||
* @protected
|
||||
@@ -116,13 +116,13 @@ ol.format.GMLBase.prototype.readFeaturesInternal = function(node, objectStack) {
|
||||
var featureType = context['featureType'];
|
||||
var featureNS = context['featureNS'];
|
||||
var i, ii, prefix = 'p', defaultPrefix = 'p0';
|
||||
if (!goog.isDef(featureType) && goog.isDefAndNotNull(node.childNodes)) {
|
||||
if (!featureType && node.childNodes) {
|
||||
featureType = [], featureNS = {};
|
||||
for (i = 0, ii = node.childNodes.length; i < ii; ++i) {
|
||||
var child = node.childNodes[i];
|
||||
if (child.nodeType === 1) {
|
||||
var ft = child.nodeName.split(':').pop();
|
||||
if (goog.array.indexOf(featureType, ft) === -1) {
|
||||
if (featureType.indexOf(ft) === -1) {
|
||||
var key;
|
||||
if (!goog.object.contains(featureNS, child.namespaceURI)) {
|
||||
key = prefix + goog.object.getCount(featureNS);
|
||||
@@ -162,7 +162,7 @@ ol.format.GMLBase.prototype.readFeaturesInternal = function(node, objectStack) {
|
||||
}
|
||||
features = ol.xml.pushParseAndPop([], parsersNS, node, objectStack);
|
||||
}
|
||||
if (!goog.isDef(features)) {
|
||||
if (!features) {
|
||||
features = [];
|
||||
}
|
||||
return features;
|
||||
@@ -180,7 +180,7 @@ ol.format.GMLBase.prototype.readGeometryElement = function(node, objectStack) {
|
||||
context['srsName'] = node.firstElementChild.getAttribute('srsName');
|
||||
var geometry = ol.xml.pushParseAndPop(/** @type {ol.geom.Geometry} */(null),
|
||||
this.GEOMETRY_PARSERS_, node, objectStack, this);
|
||||
if (goog.isDefAndNotNull(geometry)) {
|
||||
if (geometry) {
|
||||
return /** @type {ol.geom.Geometry} */ (
|
||||
ol.format.Feature.transformWithOptions(geometry, false, context));
|
||||
} else {
|
||||
@@ -199,8 +199,7 @@ ol.format.GMLBase.prototype.readFeatureElement = function(node, objectStack) {
|
||||
var fid = node.getAttribute('fid') ||
|
||||
ol.xml.getAttributeNS(node, ol.format.GMLBase.GMLNS, 'id');
|
||||
var values = {}, geometryName;
|
||||
for (n = node.firstElementChild; !goog.isNull(n);
|
||||
n = n.nextElementSibling) {
|
||||
for (n = node.firstElementChild; n; n = n.nextElementSibling) {
|
||||
var localName = ol.xml.getLocalName(n);
|
||||
// Assume attribute elements have one child node and that the child
|
||||
// is a text or CDATA node (to be treated as text).
|
||||
@@ -222,7 +221,7 @@ ol.format.GMLBase.prototype.readFeatureElement = function(node, objectStack) {
|
||||
}
|
||||
}
|
||||
var feature = new ol.Feature(values);
|
||||
if (goog.isDef(geometryName)) {
|
||||
if (geometryName) {
|
||||
feature.setGeometryName(geometryName);
|
||||
}
|
||||
if (fid) {
|
||||
@@ -243,7 +242,7 @@ ol.format.GMLBase.prototype.readPoint = function(node, objectStack) {
|
||||
goog.asserts.assert(node.localName == 'Point', 'localName should be Point');
|
||||
var flatCoordinates =
|
||||
this.readFlatCoordinatesFromNode_(node, objectStack);
|
||||
if (goog.isDefAndNotNull(flatCoordinates)) {
|
||||
if (flatCoordinates) {
|
||||
var point = new ol.geom.Point(null);
|
||||
goog.asserts.assert(flatCoordinates.length == 3,
|
||||
'flatCoordinates should have a length of 3');
|
||||
@@ -266,7 +265,7 @@ ol.format.GMLBase.prototype.readMultiPoint = function(node, objectStack) {
|
||||
var coordinates = ol.xml.pushParseAndPop(
|
||||
/** @type {Array.<Array.<number>>} */ ([]),
|
||||
this.MULTIPOINT_PARSERS_, node, objectStack, this);
|
||||
if (goog.isDef(coordinates)) {
|
||||
if (coordinates) {
|
||||
return new ol.geom.MultiPoint(coordinates);
|
||||
} else {
|
||||
return undefined;
|
||||
@@ -287,7 +286,7 @@ ol.format.GMLBase.prototype.readMultiLineString = function(node, objectStack) {
|
||||
var lineStrings = ol.xml.pushParseAndPop(
|
||||
/** @type {Array.<ol.geom.LineString>} */ ([]),
|
||||
this.MULTILINESTRING_PARSERS_, node, objectStack, this);
|
||||
if (goog.isDef(lineStrings)) {
|
||||
if (lineStrings) {
|
||||
var multiLineString = new ol.geom.MultiLineString(null);
|
||||
multiLineString.setLineStrings(lineStrings);
|
||||
return multiLineString;
|
||||
@@ -310,7 +309,7 @@ ol.format.GMLBase.prototype.readMultiPolygon = function(node, objectStack) {
|
||||
var polygons = ol.xml.pushParseAndPop(
|
||||
/** @type {Array.<ol.geom.Polygon>} */ ([]),
|
||||
this.MULTIPOLYGON_PARSERS_, node, objectStack, this);
|
||||
if (goog.isDef(polygons)) {
|
||||
if (polygons) {
|
||||
var multiPolygon = new ol.geom.MultiPolygon(null);
|
||||
multiPolygon.setPolygons(polygons);
|
||||
return multiPolygon;
|
||||
@@ -382,7 +381,7 @@ ol.format.GMLBase.prototype.readLineString = function(node, objectStack) {
|
||||
'localName should be LineString');
|
||||
var flatCoordinates =
|
||||
this.readFlatCoordinatesFromNode_(node, objectStack);
|
||||
if (goog.isDefAndNotNull(flatCoordinates)) {
|
||||
if (flatCoordinates) {
|
||||
var lineString = new ol.geom.LineString(null);
|
||||
lineString.setFlatCoordinates(ol.geom.GeometryLayout.XYZ, flatCoordinates);
|
||||
return lineString;
|
||||
@@ -406,7 +405,7 @@ ol.format.GMLBase.prototype.readFlatLinearRing_ = function(node, objectStack) {
|
||||
var ring = ol.xml.pushParseAndPop(/** @type {Array.<number>} */(null),
|
||||
this.GEOMETRY_FLAT_COORDINATES_PARSERS_, node,
|
||||
objectStack, this);
|
||||
if (goog.isDefAndNotNull(ring)) {
|
||||
if (ring) {
|
||||
return ring;
|
||||
} else {
|
||||
return undefined;
|
||||
@@ -426,7 +425,7 @@ ol.format.GMLBase.prototype.readLinearRing = function(node, objectStack) {
|
||||
'localName should be LinearRing');
|
||||
var flatCoordinates =
|
||||
this.readFlatCoordinatesFromNode_(node, objectStack);
|
||||
if (goog.isDef(flatCoordinates)) {
|
||||
if (flatCoordinates) {
|
||||
var ring = new ol.geom.LinearRing(null);
|
||||
ring.setFlatCoordinates(ol.geom.GeometryLayout.XYZ, flatCoordinates);
|
||||
return ring;
|
||||
@@ -449,8 +448,7 @@ ol.format.GMLBase.prototype.readPolygon = function(node, objectStack) {
|
||||
var flatLinearRings = ol.xml.pushParseAndPop(
|
||||
/** @type {Array.<Array.<number>>} */ ([null]),
|
||||
this.FLAT_LINEAR_RINGS_PARSERS_, node, objectStack, this);
|
||||
if (goog.isDef(flatLinearRings) &&
|
||||
!goog.isNull(flatLinearRings[0])) {
|
||||
if (flatLinearRings && flatLinearRings[0]) {
|
||||
var polygon = new ol.geom.Polygon(null);
|
||||
var flatCoordinates = flatLinearRings[0];
|
||||
var ends = [flatCoordinates.length];
|
||||
@@ -588,8 +586,8 @@ ol.format.GMLBase.prototype.RING_PARSERS = Object({
|
||||
ol.format.GMLBase.prototype.readGeometryFromNode =
|
||||
function(node, opt_options) {
|
||||
var geometry = this.readGeometryElement(node,
|
||||
[this.getReadOptions(node, goog.isDef(opt_options) ? opt_options : {})]);
|
||||
return goog.isDef(geometry) ? geometry : null;
|
||||
[this.getReadOptions(node, opt_options ? opt_options : {})]);
|
||||
return geometry ? geometry : null;
|
||||
};
|
||||
|
||||
|
||||
@@ -614,7 +612,7 @@ ol.format.GMLBase.prototype.readFeaturesFromNode =
|
||||
featureType: this.featureType,
|
||||
featureNS: this.featureNS
|
||||
};
|
||||
if (goog.isDef(opt_options)) {
|
||||
if (opt_options) {
|
||||
goog.object.extend(options, this.getReadOptions(node, opt_options));
|
||||
}
|
||||
return this.readFeaturesInternal(node, [options]);
|
||||
@@ -625,6 +623,6 @@ ol.format.GMLBase.prototype.readFeaturesFromNode =
|
||||
* @inheritDoc
|
||||
*/
|
||||
ol.format.GMLBase.prototype.readProjectionFromNode = function(node) {
|
||||
return ol.proj.get(goog.isDef(this.srsName_) ? this.srsName_ :
|
||||
return ol.proj.get(this.srsName_ ? this.srsName_ :
|
||||
node.firstElementChild.getAttribute('srsName'));
|
||||
};
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
goog.provide('ol.format.GPX');
|
||||
|
||||
goog.require('goog.array');
|
||||
goog.require('goog.asserts');
|
||||
goog.require('goog.dom.NodeType');
|
||||
goog.require('goog.object');
|
||||
goog.require('ol.Feature');
|
||||
goog.require('ol.array');
|
||||
goog.require('ol.format.Feature');
|
||||
goog.require('ol.format.XMLFeature');
|
||||
goog.require('ol.format.XSD');
|
||||
@@ -28,7 +27,7 @@ goog.require('ol.xml');
|
||||
*/
|
||||
ol.format.GPX = function(opt_options) {
|
||||
|
||||
var options = goog.isDef(opt_options) ? opt_options : {};
|
||||
var options = opt_options ? opt_options : {};
|
||||
|
||||
goog.base(this);
|
||||
|
||||
@@ -71,17 +70,15 @@ ol.format.GPX.appendCoordinate_ = function(flatCoordinates, node, values) {
|
||||
flatCoordinates.push(
|
||||
parseFloat(node.getAttribute('lon')),
|
||||
parseFloat(node.getAttribute('lat')));
|
||||
if (goog.object.containsKey(values, 'ele')) {
|
||||
flatCoordinates.push(
|
||||
/** @type {number} */ (values['ele']));
|
||||
goog.object.remove(values, 'ele');
|
||||
if ('ele' in values) {
|
||||
flatCoordinates.push(/** @type {number} */ (values['ele']));
|
||||
delete values['ele'];
|
||||
} else {
|
||||
flatCoordinates.push(0);
|
||||
}
|
||||
if (goog.object.containsKey(values, 'time')) {
|
||||
flatCoordinates.push(
|
||||
/** @type {number} */ (values['time']));
|
||||
goog.object.remove(values, 'time');
|
||||
if ('time' in values) {
|
||||
flatCoordinates.push(/** @type {number} */ (values['time']));
|
||||
delete values['time'];
|
||||
} else {
|
||||
flatCoordinates.push(0);
|
||||
}
|
||||
@@ -100,7 +97,7 @@ ol.format.GPX.parseLink_ = function(node, objectStack) {
|
||||
goog.asserts.assert(node.localName == 'link', 'localName should be link');
|
||||
var values = /** @type {Object} */ (objectStack[objectStack.length - 1]);
|
||||
var href = node.getAttribute('href');
|
||||
if (!goog.isNull(href)) {
|
||||
if (href !== null) {
|
||||
values['link'] = href;
|
||||
}
|
||||
ol.xml.parseNode(ol.format.GPX.LINK_PARSERS_, node, objectStack);
|
||||
@@ -133,7 +130,7 @@ ol.format.GPX.parseRtePt_ = function(node, objectStack) {
|
||||
goog.asserts.assert(node.localName == 'rtept', 'localName should be rtept');
|
||||
var values = ol.xml.pushParseAndPop(
|
||||
{}, ol.format.GPX.RTEPT_PARSERS_, node, objectStack);
|
||||
if (goog.isDef(values)) {
|
||||
if (values) {
|
||||
var rteValues = /** @type {Object} */ (objectStack[objectStack.length - 1]);
|
||||
var flatCoordinates = /** @type {Array.<number>} */
|
||||
(rteValues['flatCoordinates']);
|
||||
@@ -153,7 +150,7 @@ ol.format.GPX.parseTrkPt_ = function(node, objectStack) {
|
||||
goog.asserts.assert(node.localName == 'trkpt', 'localName should be trkpt');
|
||||
var values = ol.xml.pushParseAndPop(
|
||||
{}, ol.format.GPX.TRKPT_PARSERS_, node, objectStack);
|
||||
if (goog.isDef(values)) {
|
||||
if (values) {
|
||||
var trkValues = /** @type {Object} */ (objectStack[objectStack.length - 1]);
|
||||
var flatCoordinates = /** @type {Array.<number>} */
|
||||
(trkValues['flatCoordinates']);
|
||||
@@ -195,12 +192,12 @@ ol.format.GPX.readRte_ = function(node, objectStack) {
|
||||
var values = ol.xml.pushParseAndPop({
|
||||
'flatCoordinates': []
|
||||
}, ol.format.GPX.RTE_PARSERS_, node, objectStack);
|
||||
if (!goog.isDef(values)) {
|
||||
if (!values) {
|
||||
return undefined;
|
||||
}
|
||||
var flatCoordinates = /** @type {Array.<number>} */
|
||||
(values['flatCoordinates']);
|
||||
goog.object.remove(values, 'flatCoordinates');
|
||||
delete values['flatCoordinates'];
|
||||
var geometry = new ol.geom.LineString(null);
|
||||
geometry.setFlatCoordinates(ol.geom.GeometryLayout.XYZM, flatCoordinates);
|
||||
ol.format.Feature.transformWithOptions(geometry, false, options);
|
||||
@@ -225,14 +222,14 @@ ol.format.GPX.readTrk_ = function(node, objectStack) {
|
||||
'flatCoordinates': [],
|
||||
'ends': []
|
||||
}, ol.format.GPX.TRK_PARSERS_, node, objectStack);
|
||||
if (!goog.isDef(values)) {
|
||||
if (!values) {
|
||||
return undefined;
|
||||
}
|
||||
var flatCoordinates = /** @type {Array.<number>} */
|
||||
(values['flatCoordinates']);
|
||||
goog.object.remove(values, 'flatCoordinates');
|
||||
delete values['flatCoordinates'];
|
||||
var ends = /** @type {Array.<number>} */ (values['ends']);
|
||||
goog.object.remove(values, 'ends');
|
||||
delete values['ends'];
|
||||
var geometry = new ol.geom.MultiLineString(null);
|
||||
geometry.setFlatCoordinates(
|
||||
ol.geom.GeometryLayout.XYZM, flatCoordinates, ends);
|
||||
@@ -256,7 +253,7 @@ ol.format.GPX.readWpt_ = function(node, objectStack) {
|
||||
var options = /** @type {olx.format.ReadOptions} */ (objectStack[0]);
|
||||
var values = ol.xml.pushParseAndPop(
|
||||
{}, ol.format.GPX.WPT_PARSERS_, node, objectStack);
|
||||
if (!goog.isDef(values)) {
|
||||
if (!values) {
|
||||
return undefined;
|
||||
}
|
||||
var coordinates = ol.format.GPX.appendCoordinate_([], node, values);
|
||||
@@ -420,12 +417,12 @@ ol.format.GPX.WPT_PARSERS_ = ol.xml.makeStructureNS(
|
||||
* @private
|
||||
*/
|
||||
ol.format.GPX.prototype.handleReadExtensions_ = function(features) {
|
||||
if (goog.isNull(features)) {
|
||||
if (!features) {
|
||||
features = [];
|
||||
}
|
||||
for (var i = 0, ii = features.length; i < ii; ++i) {
|
||||
var feature = features[i];
|
||||
if (goog.isDef(this.readExtensions_)) {
|
||||
if (this.readExtensions_) {
|
||||
var extensionsNode = feature.get('extensionsNode_') || null;
|
||||
this.readExtensions_(feature, extensionsNode);
|
||||
}
|
||||
@@ -452,15 +449,15 @@ ol.format.GPX.prototype.readFeature;
|
||||
ol.format.GPX.prototype.readFeatureFromNode = function(node, opt_options) {
|
||||
goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
|
||||
'node.nodeType should be ELEMENT');
|
||||
if (!goog.array.contains(ol.format.GPX.NAMESPACE_URIS_, node.namespaceURI)) {
|
||||
if (!ol.array.includes(ol.format.GPX.NAMESPACE_URIS_, node.namespaceURI)) {
|
||||
return null;
|
||||
}
|
||||
var featureReader = ol.format.GPX.FEATURE_READER_[node.localName];
|
||||
if (!goog.isDef(featureReader)) {
|
||||
if (!featureReader) {
|
||||
return null;
|
||||
}
|
||||
var feature = featureReader(node, [this.getReadOptions(node, opt_options)]);
|
||||
if (!goog.isDef(feature)) {
|
||||
if (!feature) {
|
||||
return null;
|
||||
}
|
||||
this.handleReadExtensions_([feature]);
|
||||
@@ -486,14 +483,14 @@ ol.format.GPX.prototype.readFeatures;
|
||||
ol.format.GPX.prototype.readFeaturesFromNode = function(node, opt_options) {
|
||||
goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
|
||||
'node.nodeType should be ELEMENT');
|
||||
if (!goog.array.contains(ol.format.GPX.NAMESPACE_URIS_, node.namespaceURI)) {
|
||||
if (!ol.array.includes(ol.format.GPX.NAMESPACE_URIS_, node.namespaceURI)) {
|
||||
return [];
|
||||
}
|
||||
if (node.localName == 'gpx') {
|
||||
var features = ol.xml.pushParseAndPop(
|
||||
/** @type {Array.<ol.Feature>} */ ([]), ol.format.GPX.GPX_PARSERS_,
|
||||
node, [this.getReadOptions(node, opt_options)]);
|
||||
if (goog.isDef(features)) {
|
||||
if (features) {
|
||||
this.handleReadExtensions_(features);
|
||||
return features;
|
||||
} else {
|
||||
@@ -591,7 +588,7 @@ ol.format.GPX.writeRte_ = function(node, feature, objectStack) {
|
||||
var properties = feature.getProperties();
|
||||
var context = {node: node, 'properties': properties};
|
||||
var geometry = feature.getGeometry();
|
||||
if (goog.isDef(geometry)) {
|
||||
if (geometry) {
|
||||
goog.asserts.assertInstanceof(geometry, ol.geom.LineString,
|
||||
'geometry should be an ol.geom.LineString');
|
||||
geometry = /** @type {ol.geom.LineString} */
|
||||
@@ -619,7 +616,7 @@ ol.format.GPX.writeTrk_ = function(node, feature, objectStack) {
|
||||
var properties = feature.getProperties();
|
||||
var context = {node: node, 'properties': properties};
|
||||
var geometry = feature.getGeometry();
|
||||
if (goog.isDef(geometry)) {
|
||||
if (geometry) {
|
||||
goog.asserts.assertInstanceof(geometry, ol.geom.MultiLineString,
|
||||
'geometry should be an ol.geom.MultiLineString');
|
||||
geometry = /** @type {ol.geom.MultiLineString} */
|
||||
@@ -662,7 +659,7 @@ ol.format.GPX.writeWpt_ = function(node, feature, objectStack) {
|
||||
goog.asserts.assert(goog.isObject(context), 'context should be an Object');
|
||||
context['properties'] = feature.getProperties();
|
||||
var geometry = feature.getGeometry();
|
||||
if (goog.isDef(geometry)) {
|
||||
if (geometry) {
|
||||
goog.asserts.assertInstanceof(geometry, ol.geom.Point,
|
||||
'geometry should be an ol.geom.Point');
|
||||
geometry = /** @type {ol.geom.Point} */
|
||||
@@ -841,7 +838,7 @@ ol.format.GPX.GPX_NODE_FACTORY_ = function(value, objectStack, opt_nodeName) {
|
||||
goog.asserts.assertInstanceof(value, ol.Feature,
|
||||
'value should be an ol.Feature');
|
||||
var geometry = value.getGeometry();
|
||||
if (goog.isDef(geometry)) {
|
||||
if (geometry) {
|
||||
var parentNode = objectStack[objectStack.length - 1].node;
|
||||
goog.asserts.assert(ol.xml.isNode(parentNode),
|
||||
'parentNode should be an XML node');
|
||||
|
||||
@@ -36,7 +36,7 @@ ol.format.IGCZ = {
|
||||
*/
|
||||
ol.format.IGC = function(opt_options) {
|
||||
|
||||
var options = goog.isDef(opt_options) ? opt_options : {};
|
||||
var options = opt_options ? opt_options : {};
|
||||
|
||||
goog.base(this);
|
||||
|
||||
@@ -49,7 +49,7 @@ ol.format.IGC = function(opt_options) {
|
||||
* @private
|
||||
* @type {ol.format.IGCZ}
|
||||
*/
|
||||
this.altitudeMode_ = goog.isDef(options.altitudeMode) ?
|
||||
this.altitudeMode_ = options.altitudeMode ?
|
||||
options.altitudeMode : ol.format.IGCZ.NONE;
|
||||
|
||||
};
|
||||
@@ -164,7 +164,7 @@ ol.format.IGC.prototype.readFeatureFromText = function(text, opt_options) {
|
||||
} else {
|
||||
m = ol.format.IGC.H_RECORD_RE_.exec(line);
|
||||
if (m) {
|
||||
properties[m[1]] = goog.string.trim(m[2]);
|
||||
properties[m[1]] = m[2].trim();
|
||||
m = ol.format.IGC.HFDTE_RECORD_RE_.exec(line);
|
||||
}
|
||||
}
|
||||
@@ -202,7 +202,7 @@ ol.format.IGC.prototype.readFeatures;
|
||||
*/
|
||||
ol.format.IGC.prototype.readFeaturesFromText = function(text, opt_options) {
|
||||
var feature = this.readFeatureFromText(text, opt_options);
|
||||
if (!goog.isNull(feature)) {
|
||||
if (feature) {
|
||||
return [feature];
|
||||
} else {
|
||||
return [];
|
||||
|
||||
@@ -32,7 +32,7 @@ ol.format.JSONFeature.prototype.getObject_ = function(source) {
|
||||
return source;
|
||||
} else if (goog.isString(source)) {
|
||||
var object = goog.json.parse(source);
|
||||
return goog.isDef(object) ? object : null;
|
||||
return object ? object : null;
|
||||
} else {
|
||||
goog.asserts.fail();
|
||||
return null;
|
||||
|
||||
@@ -11,10 +11,10 @@ goog.require('goog.array');
|
||||
goog.require('goog.asserts');
|
||||
goog.require('goog.dom.NodeType');
|
||||
goog.require('goog.math');
|
||||
goog.require('goog.object');
|
||||
goog.require('goog.string');
|
||||
goog.require('ol');
|
||||
goog.require('ol.Feature');
|
||||
goog.require('ol.FeatureStyleFunction');
|
||||
goog.require('ol.array');
|
||||
goog.require('ol.color');
|
||||
goog.require('ol.format.Feature');
|
||||
goog.require('ol.format.XMLFeature');
|
||||
@@ -68,7 +68,7 @@ ol.format.KMLGxTrackObject_;
|
||||
*/
|
||||
ol.format.KML = function(opt_options) {
|
||||
|
||||
var options = goog.isDef(opt_options) ? opt_options : {};
|
||||
var options = opt_options ? opt_options : {};
|
||||
|
||||
goog.base(this);
|
||||
|
||||
@@ -81,14 +81,14 @@ ol.format.KML = function(opt_options) {
|
||||
* @private
|
||||
* @type {Array.<ol.style.Style>}
|
||||
*/
|
||||
this.defaultStyle_ = goog.isDef(options.defaultStyle) ?
|
||||
this.defaultStyle_ = options.defaultStyle ?
|
||||
options.defaultStyle : ol.format.KML.DEFAULT_STYLE_ARRAY_;
|
||||
|
||||
/**
|
||||
* @private
|
||||
* @type {boolean}
|
||||
*/
|
||||
this.extractStyles_ = goog.isDef(options.extractStyles) ?
|
||||
this.extractStyles_ = options.extractStyles !== undefined ?
|
||||
options.extractStyles : true;
|
||||
|
||||
/**
|
||||
@@ -296,10 +296,10 @@ ol.format.KML.createFeatureStyleFunction_ = function(
|
||||
* @this {ol.Feature}
|
||||
*/
|
||||
function(resolution) {
|
||||
if (goog.isDef(style)) {
|
||||
if (style) {
|
||||
return style;
|
||||
}
|
||||
if (goog.isDef(styleUrl)) {
|
||||
if (styleUrl) {
|
||||
return ol.format.KML.findStyle_(styleUrl, defaultStyle, sharedStyles);
|
||||
}
|
||||
return defaultStyle;
|
||||
@@ -391,8 +391,8 @@ ol.format.KML.readFlatCoordinates_ = function(node) {
|
||||
* @return {string|undefined} Style URL.
|
||||
*/
|
||||
ol.format.KML.readStyleUrl_ = function(node) {
|
||||
var s = goog.string.trim(ol.xml.getAllTextContent(node, false));
|
||||
if (goog.isDefAndNotNull(node.baseURI)) {
|
||||
var s = ol.xml.getAllTextContent(node, false).trim();
|
||||
if (node.baseURI) {
|
||||
return goog.Uri.resolve(node.baseURI, s).toString();
|
||||
} else {
|
||||
return s;
|
||||
@@ -408,10 +408,10 @@ ol.format.KML.readStyleUrl_ = function(node) {
|
||||
*/
|
||||
ol.format.KML.readURI_ = function(node) {
|
||||
var s = ol.xml.getAllTextContent(node, false);
|
||||
if (goog.isDefAndNotNull(node.baseURI)) {
|
||||
return goog.Uri.resolve(node.baseURI, goog.string.trim(s)).toString();
|
||||
if (node.baseURI) {
|
||||
return goog.Uri.resolve(node.baseURI, s.trim()).toString();
|
||||
} else {
|
||||
return goog.string.trim(s);
|
||||
return s.trim();
|
||||
}
|
||||
};
|
||||
|
||||
@@ -440,7 +440,7 @@ ol.format.KML.readVec2_ = function(node) {
|
||||
*/
|
||||
ol.format.KML.readScale_ = function(node) {
|
||||
var number = ol.format.XSD.readDecimal(node);
|
||||
if (goog.isDef(number)) {
|
||||
if (number !== undefined) {
|
||||
return Math.sqrt(number);
|
||||
} else {
|
||||
return undefined;
|
||||
@@ -479,17 +479,17 @@ ol.format.KML.IconStyleParser_ = function(node, objectStack) {
|
||||
// FIXME httpQuery
|
||||
var object = ol.xml.pushParseAndPop(
|
||||
{}, ol.format.KML.ICON_STYLE_PARSERS_, node, objectStack);
|
||||
if (!goog.isDef(object)) {
|
||||
if (!object) {
|
||||
return;
|
||||
}
|
||||
var styleObject = /** @type {Object} */ (objectStack[objectStack.length - 1]);
|
||||
goog.asserts.assert(goog.isObject(styleObject),
|
||||
'styleObject should be an Object');
|
||||
var IconObject = /** @type {Object} */ (goog.object.get(object, 'Icon', {}));
|
||||
var IconObject = 'Icon' in object ? object['Icon'] : {};
|
||||
var src;
|
||||
var href = /** @type {string|undefined} */
|
||||
(IconObject['href']);
|
||||
if (goog.isDef(href)) {
|
||||
if (href) {
|
||||
src = href;
|
||||
} else {
|
||||
src = ol.format.KML.DEFAULT_IMAGE_STYLE_SRC_;
|
||||
@@ -497,7 +497,7 @@ ol.format.KML.IconStyleParser_ = function(node, objectStack) {
|
||||
var anchor, anchorXUnits, anchorYUnits;
|
||||
var hotSpot = /** @type {ol.format.KMLVec2_|undefined} */
|
||||
(object['hotSpot']);
|
||||
if (goog.isDef(hotSpot)) {
|
||||
if (hotSpot) {
|
||||
anchor = [hotSpot.x, hotSpot.y];
|
||||
anchorXUnits = hotSpot.xunits;
|
||||
anchorYUnits = hotSpot.yunits;
|
||||
@@ -516,7 +516,7 @@ ol.format.KML.IconStyleParser_ = function(node, objectStack) {
|
||||
(IconObject['x']);
|
||||
var y = /** @type {number|undefined} */
|
||||
(IconObject['y']);
|
||||
if (goog.isDef(x) && goog.isDef(y)) {
|
||||
if (x !== undefined && y !== undefined) {
|
||||
offset = [x, y];
|
||||
}
|
||||
|
||||
@@ -525,14 +525,14 @@ ol.format.KML.IconStyleParser_ = function(node, objectStack) {
|
||||
(IconObject['w']);
|
||||
var h = /** @type {number|undefined} */
|
||||
(IconObject['h']);
|
||||
if (goog.isDef(w) && goog.isDef(h)) {
|
||||
if (w !== undefined && h !== undefined) {
|
||||
size = [w, h];
|
||||
}
|
||||
|
||||
var rotation;
|
||||
var heading = /** @type {number|undefined} */
|
||||
var heading = /** @type {number} */
|
||||
(object['heading']);
|
||||
if (goog.isDef(heading)) {
|
||||
if (heading !== undefined) {
|
||||
rotation = goog.math.toRadians(heading);
|
||||
}
|
||||
|
||||
@@ -572,7 +572,7 @@ ol.format.KML.LabelStyleParser_ = function(node, objectStack) {
|
||||
// FIXME colorMode
|
||||
var object = ol.xml.pushParseAndPop(
|
||||
{}, ol.format.KML.LABEL_STYLE_PARSERS_, node, objectStack);
|
||||
if (!goog.isDef(object)) {
|
||||
if (!object) {
|
||||
return;
|
||||
}
|
||||
var styleObject = objectStack[objectStack.length - 1];
|
||||
@@ -581,7 +581,7 @@ ol.format.KML.LabelStyleParser_ = function(node, objectStack) {
|
||||
var textStyle = new ol.style.Text({
|
||||
fill: new ol.style.Fill({
|
||||
color: /** @type {ol.Color} */
|
||||
(goog.object.get(object, 'color', ol.format.KML.DEFAULT_COLOR_))
|
||||
('color' in object ? object['color'] : ol.format.KML.DEFAULT_COLOR_)
|
||||
}),
|
||||
scale: /** @type {number|undefined} */
|
||||
(object['scale'])
|
||||
@@ -607,7 +607,7 @@ ol.format.KML.LineStyleParser_ = function(node, objectStack) {
|
||||
// FIXME gx:labelVisibility
|
||||
var object = ol.xml.pushParseAndPop(
|
||||
{}, ol.format.KML.LINE_STYLE_PARSERS_, node, objectStack);
|
||||
if (!goog.isDef(object)) {
|
||||
if (!object) {
|
||||
return;
|
||||
}
|
||||
var styleObject = objectStack[objectStack.length - 1];
|
||||
@@ -615,8 +615,8 @@ ol.format.KML.LineStyleParser_ = function(node, objectStack) {
|
||||
'styleObject should be an Object');
|
||||
var strokeStyle = new ol.style.Stroke({
|
||||
color: /** @type {ol.Color} */
|
||||
(goog.object.get(object, 'color', ol.format.KML.DEFAULT_COLOR_)),
|
||||
width: /** @type {number} */ (goog.object.get(object, 'width', 1))
|
||||
('color' in object ? object['color'] : ol.format.KML.DEFAULT_COLOR_),
|
||||
width: /** @type {number} */ ('width' in object ? object['width'] : 1)
|
||||
});
|
||||
styleObject['strokeStyle'] = strokeStyle;
|
||||
};
|
||||
@@ -635,7 +635,7 @@ ol.format.KML.PolyStyleParser_ = function(node, objectStack) {
|
||||
// FIXME colorMode
|
||||
var object = ol.xml.pushParseAndPop(
|
||||
{}, ol.format.KML.POLY_STYLE_PARSERS_, node, objectStack);
|
||||
if (!goog.isDef(object)) {
|
||||
if (!object) {
|
||||
return;
|
||||
}
|
||||
var styleObject = objectStack[objectStack.length - 1];
|
||||
@@ -643,16 +643,16 @@ ol.format.KML.PolyStyleParser_ = function(node, objectStack) {
|
||||
'styleObject should be an Object');
|
||||
var fillStyle = new ol.style.Fill({
|
||||
color: /** @type {ol.Color} */
|
||||
(goog.object.get(object, 'color', ol.format.KML.DEFAULT_COLOR_))
|
||||
('color' in object ? object['color'] : ol.format.KML.DEFAULT_COLOR_)
|
||||
});
|
||||
styleObject['fillStyle'] = fillStyle;
|
||||
var fill = /** @type {boolean|undefined} */ (object['fill']);
|
||||
if (goog.isDef(fill)) {
|
||||
if (fill !== undefined) {
|
||||
styleObject['fill'] = fill;
|
||||
}
|
||||
var outline =
|
||||
/** @type {boolean|undefined} */ (object['outline']);
|
||||
if (goog.isDef(outline)) {
|
||||
if (outline !== undefined) {
|
||||
styleObject['outline'] = outline;
|
||||
}
|
||||
};
|
||||
@@ -682,7 +682,7 @@ ol.format.KML.readFlatLinearRing_ = function(node, objectStack) {
|
||||
ol.format.KML.gxCoordParser_ = function(node, objectStack) {
|
||||
goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
|
||||
'node.nodeType should be ELEMENT');
|
||||
goog.asserts.assert(goog.array.contains(
|
||||
goog.asserts.assert(ol.array.includes(
|
||||
ol.format.KML.GX_NAMESPACE_URIS_, node.namespaceURI),
|
||||
'namespaceURI of the node should be known to the KML parser');
|
||||
goog.asserts.assert(node.localName == 'coord', 'localName should be coord');
|
||||
@@ -715,7 +715,7 @@ ol.format.KML.gxCoordParser_ = function(node, objectStack) {
|
||||
ol.format.KML.readGxMultiTrack_ = function(node, objectStack) {
|
||||
goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
|
||||
'node.nodeType should be ELEMENT');
|
||||
goog.asserts.assert(goog.array.contains(
|
||||
goog.asserts.assert(ol.array.includes(
|
||||
ol.format.KML.GX_NAMESPACE_URIS_, node.namespaceURI),
|
||||
'namespaceURI of the node should be known to the KML parser');
|
||||
goog.asserts.assert(node.localName == 'MultiTrack',
|
||||
@@ -723,7 +723,7 @@ ol.format.KML.readGxMultiTrack_ = function(node, objectStack) {
|
||||
var lineStrings = ol.xml.pushParseAndPop(
|
||||
/** @type {Array.<ol.geom.LineString>} */ ([]),
|
||||
ol.format.KML.GX_MULTITRACK_GEOMETRY_PARSERS_, node, objectStack);
|
||||
if (!goog.isDef(lineStrings)) {
|
||||
if (!lineStrings) {
|
||||
return undefined;
|
||||
}
|
||||
var multiLineString = new ol.geom.MultiLineString(null);
|
||||
@@ -741,7 +741,7 @@ ol.format.KML.readGxMultiTrack_ = function(node, objectStack) {
|
||||
ol.format.KML.readGxTrack_ = function(node, objectStack) {
|
||||
goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
|
||||
'node.nodeType should be ELEMENT');
|
||||
goog.asserts.assert(goog.array.contains(
|
||||
goog.asserts.assert(ol.array.includes(
|
||||
ol.format.KML.GX_NAMESPACE_URIS_, node.namespaceURI),
|
||||
'namespaceURI of the node should be known to the KML parser');
|
||||
goog.asserts.assert(node.localName == 'Track', 'localName should be Track');
|
||||
@@ -750,7 +750,7 @@ ol.format.KML.readGxTrack_ = function(node, objectStack) {
|
||||
flatCoordinates: [],
|
||||
whens: []
|
||||
}), ol.format.KML.GX_TRACK_PARSERS_, node, objectStack);
|
||||
if (!goog.isDef(gxTrackObject)) {
|
||||
if (!gxTrackObject) {
|
||||
return undefined;
|
||||
}
|
||||
var flatCoordinates = gxTrackObject.flatCoordinates;
|
||||
@@ -781,7 +781,7 @@ ol.format.KML.readIcon_ = function(node, objectStack) {
|
||||
goog.asserts.assert(node.localName == 'Icon', 'localName should be Icon');
|
||||
var iconObject = ol.xml.pushParseAndPop(
|
||||
{}, ol.format.KML.ICON_PARSERS_, node, objectStack);
|
||||
if (goog.isDef(iconObject)) {
|
||||
if (iconObject) {
|
||||
return iconObject;
|
||||
} else {
|
||||
return null;
|
||||
@@ -819,7 +819,7 @@ ol.format.KML.readLineString_ = function(node, objectStack) {
|
||||
objectStack);
|
||||
var flatCoordinates =
|
||||
ol.format.KML.readFlatCoordinatesFromNode_(node, objectStack);
|
||||
if (goog.isDef(flatCoordinates)) {
|
||||
if (flatCoordinates) {
|
||||
var lineString = new ol.geom.LineString(null);
|
||||
lineString.setFlatCoordinates(ol.geom.GeometryLayout.XYZ, flatCoordinates);
|
||||
lineString.setProperties(properties);
|
||||
@@ -846,7 +846,7 @@ ol.format.KML.readLinearRing_ = function(node, objectStack) {
|
||||
objectStack);
|
||||
var flatCoordinates =
|
||||
ol.format.KML.readFlatCoordinatesFromNode_(node, objectStack);
|
||||
if (goog.isDef(flatCoordinates)) {
|
||||
if (flatCoordinates) {
|
||||
var polygon = new ol.geom.Polygon(null);
|
||||
polygon.setFlatCoordinates(ol.geom.GeometryLayout.XYZ, flatCoordinates,
|
||||
[flatCoordinates.length]);
|
||||
@@ -872,7 +872,7 @@ ol.format.KML.readMultiGeometry_ = function(node, objectStack) {
|
||||
var geometries = ol.xml.pushParseAndPop(
|
||||
/** @type {Array.<ol.geom.Geometry>} */ ([]),
|
||||
ol.format.KML.MULTI_GEOMETRY_PARSERS_, node, objectStack);
|
||||
if (!goog.isDef(geometries)) {
|
||||
if (!geometries) {
|
||||
return null;
|
||||
}
|
||||
if (geometries.length === 0) {
|
||||
@@ -948,7 +948,7 @@ ol.format.KML.readPoint_ = function(node, objectStack) {
|
||||
objectStack);
|
||||
var flatCoordinates =
|
||||
ol.format.KML.readFlatCoordinatesFromNode_(node, objectStack);
|
||||
if (goog.isDefAndNotNull(flatCoordinates)) {
|
||||
if (flatCoordinates) {
|
||||
var point = new ol.geom.Point(null);
|
||||
goog.asserts.assert(flatCoordinates.length == 3,
|
||||
'flatCoordinates should have a length of 3');
|
||||
@@ -978,8 +978,7 @@ ol.format.KML.readPolygon_ = function(node, objectStack) {
|
||||
var flatLinearRings = ol.xml.pushParseAndPop(
|
||||
/** @type {Array.<Array.<number>>} */ ([null]),
|
||||
ol.format.KML.FLAT_LINEAR_RINGS_PARSERS_, node, objectStack);
|
||||
if (goog.isDefAndNotNull(flatLinearRings) &&
|
||||
!goog.isNull(flatLinearRings[0])) {
|
||||
if (flatLinearRings && flatLinearRings[0]) {
|
||||
var polygon = new ol.geom.Polygon(null);
|
||||
var flatCoordinates = flatLinearRings[0];
|
||||
var ends = [flatCoordinates.length];
|
||||
@@ -1010,25 +1009,28 @@ ol.format.KML.readStyle_ = function(node, objectStack) {
|
||||
goog.asserts.assert(node.localName == 'Style', 'localName should be Style');
|
||||
var styleObject = ol.xml.pushParseAndPop(
|
||||
{}, ol.format.KML.STYLE_PARSERS_, node, objectStack);
|
||||
if (!goog.isDef(styleObject)) {
|
||||
if (!styleObject) {
|
||||
return null;
|
||||
}
|
||||
var fillStyle = /** @type {ol.style.Fill} */ (goog.object.get(
|
||||
styleObject, 'fillStyle', ol.format.KML.DEFAULT_FILL_STYLE_));
|
||||
var fill = /** @type {boolean|undefined} */
|
||||
(styleObject['fill']);
|
||||
if (goog.isDef(fill) && !fill) {
|
||||
var fillStyle = /** @type {ol.style.Fill} */
|
||||
('fillStyle' in styleObject ?
|
||||
styleObject['fillStyle'] : ol.format.KML.DEFAULT_FILL_STYLE_);
|
||||
var fill = /** @type {boolean|undefined} */ (styleObject['fill']);
|
||||
if (fill !== undefined && !fill) {
|
||||
fillStyle = null;
|
||||
}
|
||||
var imageStyle = /** @type {ol.style.Image} */ (goog.object.get(
|
||||
styleObject, 'imageStyle', ol.format.KML.DEFAULT_IMAGE_STYLE_));
|
||||
var textStyle = /** @type {ol.style.Text} */ (goog.object.get(
|
||||
styleObject, 'textStyle', ol.format.KML.DEFAULT_TEXT_STYLE_));
|
||||
var strokeStyle = /** @type {ol.style.Stroke} */ (goog.object.get(
|
||||
styleObject, 'strokeStyle', ol.format.KML.DEFAULT_STROKE_STYLE_));
|
||||
var imageStyle = /** @type {ol.style.Image} */
|
||||
('imageStyle' in styleObject ?
|
||||
styleObject['imageStyle'] : ol.format.KML.DEFAULT_IMAGE_STYLE_);
|
||||
var textStyle = /** @type {ol.style.Text} */
|
||||
('textStyle' in styleObject ?
|
||||
styleObject['textStyle'] : ol.format.KML.DEFAULT_TEXT_STYLE_);
|
||||
var strokeStyle = /** @type {ol.style.Stroke} */
|
||||
('strokeStyle' in styleObject ?
|
||||
styleObject['strokeStyle'] : ol.format.KML.DEFAULT_STROKE_STYLE_);
|
||||
var outline = /** @type {boolean|undefined} */
|
||||
(styleObject['outline']);
|
||||
if (goog.isDef(outline) && !outline) {
|
||||
if (outline !== undefined && !outline) {
|
||||
strokeStyle = null;
|
||||
}
|
||||
return [new ol.style.Style({
|
||||
@@ -1060,8 +1062,8 @@ ol.format.KML.setCommonGeometryProperties_ = function(multiGeometry,
|
||||
geometry = geometries[i];
|
||||
extrudes[i] = geometry.get('extrude');
|
||||
altitudeModes[i] = geometry.get('altitudeMode');
|
||||
hasExtrude = hasExtrude || goog.isDef(extrudes[i]);
|
||||
hasAltitudeMode = hasAltitudeMode || goog.isDef(altitudeModes[i]);
|
||||
hasExtrude = hasExtrude || extrudes[i] !== undefined;
|
||||
hasAltitudeMode = hasAltitudeMode || altitudeModes[i];
|
||||
}
|
||||
if (hasExtrude) {
|
||||
multiGeometry.set('extrude', extrudes);
|
||||
@@ -1082,10 +1084,10 @@ ol.format.KML.DataParser_ = function(node, objectStack) {
|
||||
'node.nodeType should be ELEMENT');
|
||||
goog.asserts.assert(node.localName == 'Data', 'localName should be Data');
|
||||
var name = node.getAttribute('name');
|
||||
if (!goog.isNull(name)) {
|
||||
if (name !== null) {
|
||||
var data = ol.xml.pushParseAndPop(
|
||||
undefined, ol.format.KML.DATA_PARSERS_, node, objectStack);
|
||||
if (goog.isDef(data)) {
|
||||
if (data) {
|
||||
var featureObject =
|
||||
/** @type {Object} */ (objectStack[objectStack.length - 1]);
|
||||
goog.asserts.assert(goog.isObject(featureObject),
|
||||
@@ -1121,20 +1123,20 @@ ol.format.KML.PairDataParser_ = function(node, objectStack) {
|
||||
goog.asserts.assert(node.localName == 'Pair', 'localName should be Pair');
|
||||
var pairObject = ol.xml.pushParseAndPop(
|
||||
{}, ol.format.KML.PAIR_PARSERS_, node, objectStack);
|
||||
if (!goog.isDef(pairObject)) {
|
||||
if (!pairObject) {
|
||||
return;
|
||||
}
|
||||
var key = /** @type {string|undefined} */
|
||||
(pairObject['key']);
|
||||
if (goog.isDef(key) && key == 'normal') {
|
||||
if (key && key == 'normal') {
|
||||
var styleUrl = /** @type {string|undefined} */
|
||||
(pairObject['styleUrl']);
|
||||
if (goog.isDef(styleUrl)) {
|
||||
if (styleUrl) {
|
||||
objectStack[objectStack.length - 1] = styleUrl;
|
||||
}
|
||||
var Style = /** @type {ol.style.Style} */
|
||||
(pairObject['Style']);
|
||||
if (goog.isDef(Style)) {
|
||||
if (Style) {
|
||||
objectStack[objectStack.length - 1] = Style;
|
||||
}
|
||||
}
|
||||
@@ -1152,7 +1154,7 @@ ol.format.KML.PlacemarkStyleMapParser_ = function(node, objectStack) {
|
||||
goog.asserts.assert(node.localName == 'StyleMap',
|
||||
'localName should be StyleMap');
|
||||
var styleMapValue = ol.format.KML.readStyleMapValue_(node, objectStack);
|
||||
if (!goog.isDef(styleMapValue)) {
|
||||
if (!styleMapValue) {
|
||||
return;
|
||||
}
|
||||
var placemarkObject = objectStack[objectStack.length - 1];
|
||||
@@ -1193,7 +1195,7 @@ ol.format.KML.SimpleDataParser_ = function(node, objectStack) {
|
||||
goog.asserts.assert(node.localName == 'SimpleData',
|
||||
'localName should be SimpleData');
|
||||
var name = node.getAttribute('name');
|
||||
if (!goog.isNull(name)) {
|
||||
if (name !== null) {
|
||||
var data = ol.format.XSD.readString(node);
|
||||
var featureObject =
|
||||
/** @type {Object} */ (objectStack[objectStack.length - 1]);
|
||||
@@ -1215,7 +1217,7 @@ ol.format.KML.innerBoundaryIsParser_ = function(node, objectStack) {
|
||||
var flatLinearRing = ol.xml.pushParseAndPop(
|
||||
/** @type {Array.<number>|undefined} */ (undefined),
|
||||
ol.format.KML.INNER_BOUNDARY_IS_PARSERS_, node, objectStack);
|
||||
if (goog.isDef(flatLinearRing)) {
|
||||
if (flatLinearRing) {
|
||||
var flatLinearRings = /** @type {Array.<Array.<number>>} */
|
||||
(objectStack[objectStack.length - 1]);
|
||||
goog.asserts.assert(goog.isArray(flatLinearRings),
|
||||
@@ -1240,7 +1242,7 @@ ol.format.KML.outerBoundaryIsParser_ = function(node, objectStack) {
|
||||
var flatLinearRing = ol.xml.pushParseAndPop(
|
||||
/** @type {Array.<number>|undefined} */ (undefined),
|
||||
ol.format.KML.OUTER_BOUNDARY_IS_PARSERS_, node, objectStack);
|
||||
if (goog.isDef(flatLinearRing)) {
|
||||
if (flatLinearRing) {
|
||||
var flatLinearRings = /** @type {Array.<Array.<number>>} */
|
||||
(objectStack[objectStack.length - 1]);
|
||||
goog.asserts.assert(goog.isArray(flatLinearRings),
|
||||
@@ -1285,16 +1287,16 @@ ol.format.KML.whenParser_ = function(node, objectStack) {
|
||||
var m = re.exec(s);
|
||||
if (m) {
|
||||
var year = parseInt(m[1], 10);
|
||||
var month = goog.isDef(m[3]) ? parseInt(m[3], 10) - 1 : 0;
|
||||
var day = goog.isDef(m[5]) ? parseInt(m[5], 10) : 1;
|
||||
var hour = goog.isDef(m[7]) ? parseInt(m[7], 10) : 0;
|
||||
var minute = goog.isDef(m[8]) ? parseInt(m[8], 10) : 0;
|
||||
var second = goog.isDef(m[9]) ? parseInt(m[9], 10) : 0;
|
||||
var month = m[3] ? parseInt(m[3], 10) - 1 : 0;
|
||||
var day = m[5] ? parseInt(m[5], 10) : 1;
|
||||
var hour = m[7] ? parseInt(m[7], 10) : 0;
|
||||
var minute = m[8] ? parseInt(m[8], 10) : 0;
|
||||
var second = m[9] ? parseInt(m[9], 10) : 0;
|
||||
var when = Date.UTC(year, month, day, hour, minute, second);
|
||||
if (goog.isDef(m[10]) && m[10] != 'Z') {
|
||||
if (m[10] && m[10] != 'Z') {
|
||||
var sign = m[11] == '-' ? -1 : 1;
|
||||
when += sign * 60 * parseInt(m[12], 10);
|
||||
if (goog.isDef(m[13])) {
|
||||
if (m[13]) {
|
||||
when += sign * 60 * 60 * parseInt(m[13], 10);
|
||||
}
|
||||
}
|
||||
@@ -1650,7 +1652,7 @@ ol.format.KML.prototype.readDocumentOrFolder_ = function(node, objectStack) {
|
||||
});
|
||||
var features = ol.xml.pushParseAndPop(/** @type {Array.<ol.Feature>} */ ([]),
|
||||
parsersNS, node, objectStack, this);
|
||||
if (goog.isDef(features)) {
|
||||
if (features) {
|
||||
return features;
|
||||
} else {
|
||||
return undefined;
|
||||
@@ -1671,22 +1673,22 @@ ol.format.KML.prototype.readPlacemark_ = function(node, objectStack) {
|
||||
'localName should be Placemark');
|
||||
var object = ol.xml.pushParseAndPop({'geometry': null},
|
||||
ol.format.KML.PLACEMARK_PARSERS_, node, objectStack);
|
||||
if (!goog.isDef(object)) {
|
||||
if (!object) {
|
||||
return undefined;
|
||||
}
|
||||
var feature = new ol.Feature();
|
||||
var id = node.getAttribute('id');
|
||||
if (!goog.isNull(id)) {
|
||||
if (id !== null) {
|
||||
feature.setId(id);
|
||||
}
|
||||
var options = /** @type {olx.format.ReadOptions} */ (objectStack[0]);
|
||||
|
||||
var geometry = object['geometry'];
|
||||
if (goog.isDefAndNotNull(geometry)) {
|
||||
if (geometry) {
|
||||
ol.format.Feature.transformWithOptions(geometry, false, options);
|
||||
}
|
||||
feature.setGeometry(geometry);
|
||||
goog.object.remove(object, 'geometry');
|
||||
delete object['geometry'];
|
||||
|
||||
if (this.extractStyles_) {
|
||||
var style = object['Style'];
|
||||
@@ -1695,7 +1697,7 @@ ol.format.KML.prototype.readPlacemark_ = function(node, objectStack) {
|
||||
style, styleUrl, this.defaultStyle_, this.sharedStyles_);
|
||||
feature.setStyle(styleFunction);
|
||||
}
|
||||
goog.object.remove(object, 'Style');
|
||||
delete object['Style'];
|
||||
// we do not remove the styleUrl property from the object, so it
|
||||
// gets stored on feature when setProperties is called
|
||||
|
||||
@@ -1715,11 +1717,11 @@ ol.format.KML.prototype.readSharedStyle_ = function(node, objectStack) {
|
||||
'node.nodeType should be ELEMENT');
|
||||
goog.asserts.assert(node.localName == 'Style', 'localName should be Style');
|
||||
var id = node.getAttribute('id');
|
||||
if (!goog.isNull(id)) {
|
||||
if (id !== null) {
|
||||
var style = ol.format.KML.readStyle_(node, objectStack);
|
||||
if (goog.isDef(style)) {
|
||||
if (style) {
|
||||
var styleUri;
|
||||
if (goog.isDefAndNotNull(node.baseURI)) {
|
||||
if (node.baseURI) {
|
||||
styleUri = goog.Uri.resolve(node.baseURI, '#' + id).toString();
|
||||
} else {
|
||||
styleUri = '#' + id;
|
||||
@@ -1741,15 +1743,15 @@ ol.format.KML.prototype.readSharedStyleMap_ = function(node, objectStack) {
|
||||
goog.asserts.assert(node.localName == 'StyleMap',
|
||||
'localName should be StyleMap');
|
||||
var id = node.getAttribute('id');
|
||||
if (goog.isNull(id)) {
|
||||
if (id === null) {
|
||||
return;
|
||||
}
|
||||
var styleMapValue = ol.format.KML.readStyleMapValue_(node, objectStack);
|
||||
if (!goog.isDef(styleMapValue)) {
|
||||
if (!styleMapValue) {
|
||||
return;
|
||||
}
|
||||
var styleUri;
|
||||
if (goog.isDefAndNotNull(node.baseURI)) {
|
||||
if (node.baseURI) {
|
||||
styleUri = goog.Uri.resolve(node.baseURI, '#' + id).toString();
|
||||
} else {
|
||||
styleUri = '#' + id;
|
||||
@@ -1776,14 +1778,14 @@ ol.format.KML.prototype.readFeature;
|
||||
ol.format.KML.prototype.readFeatureFromNode = function(node, opt_options) {
|
||||
goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
|
||||
'node.nodeType should be ELEMENT');
|
||||
if (!goog.array.contains(ol.format.KML.NAMESPACE_URIS_, node.namespaceURI)) {
|
||||
if (!ol.array.includes(ol.format.KML.NAMESPACE_URIS_, node.namespaceURI)) {
|
||||
return null;
|
||||
}
|
||||
goog.asserts.assert(node.localName == 'Placemark',
|
||||
'localName should be Placemark');
|
||||
var feature = this.readPlacemark_(
|
||||
node, [this.getReadOptions(node, opt_options)]);
|
||||
if (goog.isDef(feature)) {
|
||||
if (feature) {
|
||||
return feature;
|
||||
} else {
|
||||
return null;
|
||||
@@ -1809,7 +1811,7 @@ ol.format.KML.prototype.readFeatures;
|
||||
ol.format.KML.prototype.readFeaturesFromNode = function(node, opt_options) {
|
||||
goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
|
||||
'node.nodeType should be ELEMENT');
|
||||
if (!goog.array.contains(ol.format.KML.NAMESPACE_URIS_, node.namespaceURI)) {
|
||||
if (!ol.array.includes(ol.format.KML.NAMESPACE_URIS_, node.namespaceURI)) {
|
||||
return [];
|
||||
}
|
||||
var features;
|
||||
@@ -1817,7 +1819,7 @@ ol.format.KML.prototype.readFeaturesFromNode = function(node, opt_options) {
|
||||
if (localName == 'Document' || localName == 'Folder') {
|
||||
features = this.readDocumentOrFolder_(
|
||||
node, [this.getReadOptions(node, opt_options)]);
|
||||
if (goog.isDef(features)) {
|
||||
if (features) {
|
||||
return features;
|
||||
} else {
|
||||
return [];
|
||||
@@ -1825,7 +1827,7 @@ ol.format.KML.prototype.readFeaturesFromNode = function(node, opt_options) {
|
||||
} else if (localName == 'Placemark') {
|
||||
var feature = this.readPlacemark_(
|
||||
node, [this.getReadOptions(node, opt_options)]);
|
||||
if (goog.isDef(feature)) {
|
||||
if (feature) {
|
||||
return [feature];
|
||||
} else {
|
||||
return [];
|
||||
@@ -1833,10 +1835,9 @@ ol.format.KML.prototype.readFeaturesFromNode = function(node, opt_options) {
|
||||
} else if (localName == 'kml') {
|
||||
features = [];
|
||||
var n;
|
||||
for (n = node.firstElementChild; !goog.isNull(n);
|
||||
n = n.nextElementSibling) {
|
||||
for (n = node.firstElementChild; n; n = n.nextElementSibling) {
|
||||
var fs = this.readFeaturesFromNode(n, opt_options);
|
||||
if (goog.isDef(fs)) {
|
||||
if (fs) {
|
||||
goog.array.extend(features, fs);
|
||||
}
|
||||
}
|
||||
@@ -1875,10 +1876,10 @@ ol.format.KML.prototype.readName = function(source) {
|
||||
*/
|
||||
ol.format.KML.prototype.readNameFromDocument = function(doc) {
|
||||
var n;
|
||||
for (n = doc.firstChild; !goog.isNull(n); n = n.nextSibling) {
|
||||
for (n = doc.firstChild; n; n = n.nextSibling) {
|
||||
if (n.nodeType == goog.dom.NodeType.ELEMENT) {
|
||||
var name = this.readNameFromNode(n);
|
||||
if (goog.isDef(name)) {
|
||||
if (name) {
|
||||
return name;
|
||||
}
|
||||
}
|
||||
@@ -1893,21 +1894,21 @@ ol.format.KML.prototype.readNameFromDocument = function(doc) {
|
||||
*/
|
||||
ol.format.KML.prototype.readNameFromNode = function(node) {
|
||||
var n;
|
||||
for (n = node.firstElementChild; !goog.isNull(n); n = n.nextElementSibling) {
|
||||
if (goog.array.contains(ol.format.KML.NAMESPACE_URIS_, n.namespaceURI) &&
|
||||
for (n = node.firstElementChild; n; n = n.nextElementSibling) {
|
||||
if (ol.array.includes(ol.format.KML.NAMESPACE_URIS_, n.namespaceURI) &&
|
||||
n.localName == 'name') {
|
||||
return ol.format.XSD.readString(n);
|
||||
}
|
||||
}
|
||||
for (n = node.firstElementChild; !goog.isNull(n); n = n.nextElementSibling) {
|
||||
for (n = node.firstElementChild; n; n = n.nextElementSibling) {
|
||||
var localName = ol.xml.getLocalName(n);
|
||||
if (goog.array.contains(ol.format.KML.NAMESPACE_URIS_, n.namespaceURI) &&
|
||||
if (ol.array.includes(ol.format.KML.NAMESPACE_URIS_, n.namespaceURI) &&
|
||||
(localName == 'Document' ||
|
||||
localName == 'Folder' ||
|
||||
localName == 'Placemark' ||
|
||||
localName == 'kml')) {
|
||||
var name = this.readNameFromNode(n);
|
||||
if (goog.isDef(name)) {
|
||||
if (name) {
|
||||
return name;
|
||||
}
|
||||
}
|
||||
@@ -1947,7 +1948,7 @@ ol.format.KML.prototype.readNetworkLinks = function(source) {
|
||||
*/
|
||||
ol.format.KML.prototype.readNetworkLinksFromDocument = function(doc) {
|
||||
var n, networkLinks = [];
|
||||
for (n = doc.firstChild; !goog.isNull(n); n = n.nextSibling) {
|
||||
for (n = doc.firstChild; n; n = n.nextSibling) {
|
||||
if (n.nodeType == goog.dom.NodeType.ELEMENT) {
|
||||
goog.array.extend(networkLinks, this.readNetworkLinksFromNode(n));
|
||||
}
|
||||
@@ -1962,17 +1963,17 @@ ol.format.KML.prototype.readNetworkLinksFromDocument = function(doc) {
|
||||
*/
|
||||
ol.format.KML.prototype.readNetworkLinksFromNode = function(node) {
|
||||
var n, networkLinks = [];
|
||||
for (n = node.firstElementChild; !goog.isNull(n); n = n.nextElementSibling) {
|
||||
if (goog.array.contains(ol.format.KML.NAMESPACE_URIS_, n.namespaceURI) &&
|
||||
for (n = node.firstElementChild; n; n = n.nextElementSibling) {
|
||||
if (ol.array.includes(ol.format.KML.NAMESPACE_URIS_, n.namespaceURI) &&
|
||||
n.localName == 'NetworkLink') {
|
||||
var obj = ol.xml.pushParseAndPop({}, ol.format.KML.NETWORK_LINK_PARSERS_,
|
||||
n, []);
|
||||
networkLinks.push(obj);
|
||||
}
|
||||
}
|
||||
for (n = node.firstElementChild; !goog.isNull(n); n = n.nextElementSibling) {
|
||||
for (n = node.firstElementChild; n; n = n.nextElementSibling) {
|
||||
var localName = ol.xml.getLocalName(n);
|
||||
if (goog.array.contains(ol.format.KML.NAMESPACE_URIS_, n.namespaceURI) &&
|
||||
if (ol.array.includes(ol.format.KML.NAMESPACE_URIS_, n.namespaceURI) &&
|
||||
(localName == 'Document' ||
|
||||
localName == 'Folder' ||
|
||||
localName == 'kml')) {
|
||||
@@ -2107,20 +2108,18 @@ ol.format.KML.writeIconStyle_ = function(node, style, objectStack) {
|
||||
'href': src
|
||||
};
|
||||
|
||||
if (!goog.isNull(size)) {
|
||||
if (size) {
|
||||
iconProperties['w'] = size[0];
|
||||
iconProperties['h'] = size[1];
|
||||
var anchor = style.getAnchor(); // top-left
|
||||
var origin = style.getOrigin(); // top-left
|
||||
|
||||
if (!goog.isNull(origin) && !goog.isNull(iconImageSize) &&
|
||||
origin[0] !== 0 && origin[1] !== size[1]) {
|
||||
if (origin && iconImageSize && origin[0] !== 0 && origin[1] !== size[1]) {
|
||||
iconProperties['x'] = origin[0];
|
||||
iconProperties['y'] = iconImageSize[1] - (origin[1] + size[1]);
|
||||
}
|
||||
|
||||
if (!goog.isNull(anchor) &&
|
||||
anchor[0] !== 0 && anchor[1] !== size[1]) {
|
||||
if (anchor && anchor[0] !== 0 && anchor[1] !== size[1]) {
|
||||
var /** @type {ol.format.KMLVec2_} */ hotSpot = {
|
||||
x: anchor[0],
|
||||
xunits: ol.style.IconAnchorUnits.PIXELS,
|
||||
@@ -2161,11 +2160,11 @@ ol.format.KML.writeLabelStyle_ = function(node, style, objectStack) {
|
||||
var /** @type {ol.xml.NodeStackItem} */ context = {node: node};
|
||||
var properties = {};
|
||||
var fill = style.getFill();
|
||||
if (!goog.isNull(fill)) {
|
||||
if (fill) {
|
||||
properties['color'] = fill.getColor();
|
||||
}
|
||||
var scale = style.getScale();
|
||||
if (goog.isDef(scale) && scale !== 1) {
|
||||
if (scale && scale !== 1) {
|
||||
properties['scale'] = scale;
|
||||
}
|
||||
var parentNode = objectStack[objectStack.length - 1].node;
|
||||
@@ -2265,21 +2264,21 @@ ol.format.KML.writePlacemark_ = function(node, feature, objectStack) {
|
||||
var /** @type {ol.xml.NodeStackItem} */ context = {node: node};
|
||||
|
||||
// set id
|
||||
if (goog.isDefAndNotNull(feature.getId())) {
|
||||
if (feature.getId()) {
|
||||
node.setAttribute('id', feature.getId());
|
||||
}
|
||||
|
||||
// serialize properties (properties unknown to KML are not serialized)
|
||||
var properties = feature.getProperties();
|
||||
var styleFunction = feature.getStyleFunction();
|
||||
if (goog.isDef(styleFunction)) {
|
||||
if (styleFunction) {
|
||||
// FIXME the styles returned by the style function are supposed to be
|
||||
// resolution-independent here
|
||||
var styles = styleFunction.call(feature, 0);
|
||||
if (!goog.isNull(styles) && styles.length > 0) {
|
||||
if (styles && styles.length > 0) {
|
||||
properties['Style'] = styles[0];
|
||||
var textStyle = styles[0].getText();
|
||||
if (!goog.isNull(textStyle)) {
|
||||
if (textStyle) {
|
||||
properties['name'] = textStyle.getText();
|
||||
}
|
||||
}
|
||||
@@ -2293,7 +2292,7 @@ ol.format.KML.writePlacemark_ = function(node, feature, objectStack) {
|
||||
// serialize geometry
|
||||
var options = /** @type {olx.format.WriteOptions} */ (objectStack[0]);
|
||||
var geometry = feature.getGeometry();
|
||||
if (goog.isDefAndNotNull(geometry)) {
|
||||
if (geometry) {
|
||||
geometry =
|
||||
ol.format.Feature.transformWithOptions(geometry, true, options);
|
||||
}
|
||||
@@ -2389,16 +2388,16 @@ ol.format.KML.writeStyle_ = function(node, style, objectStack) {
|
||||
var strokeStyle = style.getStroke();
|
||||
var imageStyle = style.getImage();
|
||||
var textStyle = style.getText();
|
||||
if (!goog.isNull(imageStyle)) {
|
||||
if (imageStyle) {
|
||||
properties['IconStyle'] = imageStyle;
|
||||
}
|
||||
if (!goog.isNull(textStyle)) {
|
||||
if (textStyle) {
|
||||
properties['LabelStyle'] = textStyle;
|
||||
}
|
||||
if (!goog.isNull(strokeStyle)) {
|
||||
if (strokeStyle) {
|
||||
properties['LineStyle'] = strokeStyle;
|
||||
}
|
||||
if (!goog.isNull(fillStyle)) {
|
||||
if (fillStyle) {
|
||||
properties['PolyStyle'] = fillStyle;
|
||||
}
|
||||
var parentNode = objectStack[objectStack.length - 1].node;
|
||||
@@ -2749,7 +2748,7 @@ ol.format.KML.DOCUMENT_NODE_FACTORY_ = function(value, objectStack,
|
||||
*/
|
||||
ol.format.KML.GEOMETRY_NODE_FACTORY_ = function(value, objectStack,
|
||||
opt_nodeName) {
|
||||
if (goog.isDefAndNotNull(value)) {
|
||||
if (value) {
|
||||
goog.asserts.assertInstanceof(value, ol.geom.Geometry,
|
||||
'value should be an ol.geom.Geometry');
|
||||
var parentNode = objectStack[objectStack.length - 1].node;
|
||||
|
||||
@@ -223,7 +223,7 @@ ol.format.OSMXML.prototype.readFeaturesFromNode = function(node, opt_options) {
|
||||
nodes: {},
|
||||
features: []
|
||||
}, ol.format.OSMXML.PARSERS_, node, [options]);
|
||||
if (goog.isDef(state.features)) {
|
||||
if (state.features) {
|
||||
return state.features;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,7 +26,7 @@ goog.inherits(ol.format.OWS, ol.format.XML);
|
||||
ol.format.OWS.prototype.readFromDocument = function(doc) {
|
||||
goog.asserts.assert(doc.nodeType == goog.dom.NodeType.DOCUMENT,
|
||||
'doc.nodeType should be DOCUMENT');
|
||||
for (var n = doc.firstChild; !goog.isNull(n); n = n.nextSibling) {
|
||||
for (var n = doc.firstChild; n; n = n.nextSibling) {
|
||||
if (n.nodeType == goog.dom.NodeType.ELEMENT) {
|
||||
return this.readFromNode(n);
|
||||
}
|
||||
@@ -44,7 +44,7 @@ ol.format.OWS.prototype.readFromNode = function(node) {
|
||||
'node.nodeType should be ELEMENT');
|
||||
var owsObject = ol.xml.pushParseAndPop({},
|
||||
ol.format.OWS.PARSERS_, node, []);
|
||||
return goog.isDef(owsObject) ? owsObject : null;
|
||||
return owsObject ? owsObject : null;
|
||||
};
|
||||
|
||||
|
||||
@@ -92,7 +92,7 @@ ol.format.OWS.readConstraint_ = function(node, objectStack) {
|
||||
goog.asserts.assert(node.localName == 'Constraint',
|
||||
'localName should be Constraint');
|
||||
var name = node.getAttribute('name');
|
||||
if (!goog.isDef(name)) {
|
||||
if (!name) {
|
||||
return undefined;
|
||||
}
|
||||
return ol.xml.pushParseAndPop({'name': name},
|
||||
@@ -143,7 +143,7 @@ ol.format.OWS.readGet_ = function(node, objectStack) {
|
||||
'node.nodeType should be ELEMENT');
|
||||
goog.asserts.assert(node.localName == 'Get', 'localName should be Get');
|
||||
var href = ol.format.XLink.readHref(node);
|
||||
if (!goog.isDef(href)) {
|
||||
if (!href) {
|
||||
return undefined;
|
||||
}
|
||||
return ol.xml.pushParseAndPop({'href': href},
|
||||
@@ -180,7 +180,7 @@ ol.format.OWS.readOperation_ = function(node, objectStack) {
|
||||
var name = node.getAttribute('name');
|
||||
var value = ol.xml.pushParseAndPop({},
|
||||
ol.format.OWS.OPERATION_PARSERS_, node, objectStack);
|
||||
if (!goog.isDef(value)) {
|
||||
if (!value) {
|
||||
return undefined;
|
||||
}
|
||||
var object = /** @type {Object} */
|
||||
|
||||
@@ -26,7 +26,7 @@ goog.require('ol.proj');
|
||||
*/
|
||||
ol.format.Polyline = function(opt_options) {
|
||||
|
||||
var options = goog.isDef(opt_options) ? opt_options : {};
|
||||
var options = opt_options ? opt_options : {};
|
||||
|
||||
goog.base(this);
|
||||
|
||||
@@ -39,13 +39,13 @@ ol.format.Polyline = function(opt_options) {
|
||||
* @private
|
||||
* @type {number}
|
||||
*/
|
||||
this.factor_ = goog.isDef(options.factor) ? options.factor : 1e5;
|
||||
this.factor_ = options.factor ? options.factor : 1e5;
|
||||
|
||||
/**
|
||||
* @private
|
||||
* @type {ol.geom.GeometryLayout}
|
||||
*/
|
||||
this.geometryLayout_ = goog.isDef(options.geometryLayout) ?
|
||||
this.geometryLayout_ = options.geometryLayout ?
|
||||
options.geometryLayout : ol.geom.GeometryLayout.XY;
|
||||
};
|
||||
goog.inherits(ol.format.Polyline, ol.format.TextFeature);
|
||||
@@ -65,7 +65,7 @@ goog.inherits(ol.format.Polyline, ol.format.TextFeature);
|
||||
* @api
|
||||
*/
|
||||
ol.format.Polyline.encodeDeltas = function(numbers, stride, opt_factor) {
|
||||
var factor = goog.isDef(opt_factor) ? opt_factor : 1e5;
|
||||
var factor = opt_factor ? opt_factor : 1e5;
|
||||
var d;
|
||||
|
||||
var lastNumbers = new Array(stride);
|
||||
@@ -100,7 +100,7 @@ ol.format.Polyline.encodeDeltas = function(numbers, stride, opt_factor) {
|
||||
* @api
|
||||
*/
|
||||
ol.format.Polyline.decodeDeltas = function(encoded, stride, opt_factor) {
|
||||
var factor = goog.isDef(opt_factor) ? opt_factor : 1e5;
|
||||
var factor = opt_factor ? opt_factor : 1e5;
|
||||
var d;
|
||||
|
||||
/** @type {Array.<number>} */
|
||||
@@ -137,7 +137,7 @@ ol.format.Polyline.decodeDeltas = function(encoded, stride, opt_factor) {
|
||||
* @api
|
||||
*/
|
||||
ol.format.Polyline.encodeFloats = function(numbers, opt_factor) {
|
||||
var factor = goog.isDef(opt_factor) ? opt_factor : 1e5;
|
||||
var factor = opt_factor ? opt_factor : 1e5;
|
||||
var i, ii;
|
||||
for (i = 0, ii = numbers.length; i < ii; ++i) {
|
||||
numbers[i] = Math.round(numbers[i] * factor);
|
||||
@@ -157,7 +157,7 @@ ol.format.Polyline.encodeFloats = function(numbers, opt_factor) {
|
||||
* @api
|
||||
*/
|
||||
ol.format.Polyline.decodeFloats = function(encoded, opt_factor) {
|
||||
var factor = goog.isDef(opt_factor) ? opt_factor : 1e5;
|
||||
var factor = opt_factor ? opt_factor : 1e5;
|
||||
var numbers = ol.format.Polyline.decodeSignedIntegers(encoded);
|
||||
var i, ii;
|
||||
for (i = 0, ii = numbers.length; i < ii; ++i) {
|
||||
@@ -356,7 +356,7 @@ ol.format.Polyline.prototype.readProjection;
|
||||
*/
|
||||
ol.format.Polyline.prototype.writeFeatureText = function(feature, opt_options) {
|
||||
var geometry = feature.getGeometry();
|
||||
if (goog.isDefAndNotNull(geometry)) {
|
||||
if (geometry) {
|
||||
return this.writeGeometryText(geometry, opt_options);
|
||||
} else {
|
||||
goog.asserts.fail('geometry needs to be defined');
|
||||
|
||||
@@ -26,7 +26,7 @@ goog.require('ol.proj');
|
||||
*/
|
||||
ol.format.TopoJSON = function(opt_options) {
|
||||
|
||||
var options = goog.isDef(opt_options) ? opt_options : {};
|
||||
var options = opt_options ? opt_options : {};
|
||||
|
||||
goog.base(this);
|
||||
|
||||
@@ -34,7 +34,7 @@ ol.format.TopoJSON = function(opt_options) {
|
||||
* @inheritDoc
|
||||
*/
|
||||
this.defaultDataProjection = ol.proj.get(
|
||||
goog.isDefAndNotNull(options.defaultDataProjection) ?
|
||||
options.defaultDataProjection ?
|
||||
options.defaultDataProjection : 'EPSG:4326');
|
||||
|
||||
};
|
||||
@@ -97,7 +97,7 @@ ol.format.TopoJSON.concatenateArcs_ = function(indices, arcs) {
|
||||
*/
|
||||
ol.format.TopoJSON.readPointGeometry_ = function(object, scale, translate) {
|
||||
var coordinates = object.coordinates;
|
||||
if (!goog.isNull(scale) && !goog.isNull(translate)) {
|
||||
if (scale && translate) {
|
||||
ol.format.TopoJSON.transformVertex_(coordinates, scale, translate);
|
||||
}
|
||||
return new ol.geom.Point(coordinates);
|
||||
@@ -117,7 +117,7 @@ ol.format.TopoJSON.readMultiPointGeometry_ = function(object, scale,
|
||||
translate) {
|
||||
var coordinates = object.coordinates;
|
||||
var i, ii;
|
||||
if (!goog.isNull(scale) && !goog.isNull(translate)) {
|
||||
if (scale && translate) {
|
||||
for (i = 0, ii = coordinates.length; i < ii; ++i) {
|
||||
ol.format.TopoJSON.transformVertex_(coordinates[i], scale, translate);
|
||||
}
|
||||
@@ -251,8 +251,7 @@ ol.format.TopoJSON.readFeatureFromGeometry_ = function(object, arcs,
|
||||
var geometry;
|
||||
var type = object.type;
|
||||
var geometryReader = ol.format.TopoJSON.GEOMETRY_READERS_[type];
|
||||
goog.asserts.assert(goog.isDef(geometryReader),
|
||||
'geometryReader should be defined');
|
||||
goog.asserts.assert(geometryReader, 'geometryReader should be defined');
|
||||
if ((type === 'Point') || (type === 'MultiPoint')) {
|
||||
geometry = geometryReader(object, scale, translate);
|
||||
} else {
|
||||
@@ -261,10 +260,10 @@ ol.format.TopoJSON.readFeatureFromGeometry_ = function(object, arcs,
|
||||
var feature = new ol.Feature();
|
||||
feature.setGeometry(/** @type {ol.geom.Geometry} */ (
|
||||
ol.format.Feature.transformWithOptions(geometry, false, opt_options)));
|
||||
if (goog.isDef(object.id)) {
|
||||
if (object.id) {
|
||||
feature.setId(object.id);
|
||||
}
|
||||
if (goog.isDef(object.properties)) {
|
||||
if (object.properties) {
|
||||
feature.setProperties(object.properties);
|
||||
}
|
||||
return feature;
|
||||
@@ -290,13 +289,13 @@ ol.format.TopoJSON.prototype.readFeaturesFromObject = function(
|
||||
if (object.type == 'Topology') {
|
||||
var topoJSONTopology = /** @type {TopoJSONTopology} */ (object);
|
||||
var transform, scale = null, translate = null;
|
||||
if (goog.isDef(topoJSONTopology.transform)) {
|
||||
if (topoJSONTopology.transform) {
|
||||
transform = topoJSONTopology.transform;
|
||||
scale = transform.scale;
|
||||
translate = transform.translate;
|
||||
}
|
||||
var arcs = topoJSONTopology.arcs;
|
||||
if (goog.isDef(transform)) {
|
||||
if (transform) {
|
||||
ol.format.TopoJSON.transformArcs_(arcs, scale, translate);
|
||||
}
|
||||
/** @type {Array.<ol.Feature>} */
|
||||
|
||||
@@ -3,6 +3,7 @@ goog.provide('ol.format.WFS');
|
||||
goog.require('goog.asserts');
|
||||
goog.require('goog.dom.NodeType');
|
||||
goog.require('goog.object');
|
||||
goog.require('ol');
|
||||
goog.require('ol.format.GML3');
|
||||
goog.require('ol.format.GMLBase');
|
||||
goog.require('ol.format.XMLFeature');
|
||||
@@ -27,7 +28,7 @@ goog.require('ol.xml');
|
||||
* @api stable
|
||||
*/
|
||||
ol.format.WFS = function(opt_options) {
|
||||
var options = goog.isDef(opt_options) ? opt_options : {};
|
||||
var options = opt_options ? opt_options : {};
|
||||
|
||||
/**
|
||||
* @private
|
||||
@@ -45,14 +46,14 @@ ol.format.WFS = function(opt_options) {
|
||||
* @private
|
||||
* @type {ol.format.GMLBase}
|
||||
*/
|
||||
this.gmlFormat_ = goog.isDef(options.gmlFormat) ?
|
||||
this.gmlFormat_ = options.gmlFormat ?
|
||||
options.gmlFormat : new ol.format.GML3();
|
||||
|
||||
/**
|
||||
* @private
|
||||
* @type {string}
|
||||
*/
|
||||
this.schemaLocation_ = goog.isDef(options.schemaLocation) ?
|
||||
this.schemaLocation_ = options.schemaLocation ?
|
||||
options.schemaLocation : ol.format.WFS.SCHEMA_LOCATION;
|
||||
|
||||
goog.base(this);
|
||||
@@ -123,7 +124,7 @@ ol.format.WFS.prototype.readFeaturesFromNode = function(node, opt_options) {
|
||||
'featureNS': this.featureNS_
|
||||
};
|
||||
goog.object.extend(context, this.getReadOptions(node,
|
||||
goog.isDef(opt_options) ? opt_options : {}));
|
||||
opt_options ? opt_options : {}));
|
||||
var objectStack = [context];
|
||||
this.gmlFormat_.FEATURE_COLLECTION_PARSERS[ol.format.GMLBase.GMLNS][
|
||||
'featureMember'] =
|
||||
@@ -131,7 +132,7 @@ ol.format.WFS.prototype.readFeaturesFromNode = function(node, opt_options) {
|
||||
var features = ol.xml.pushParseAndPop([],
|
||||
this.gmlFormat_.FEATURE_COLLECTION_PARSERS, node,
|
||||
objectStack, this.gmlFormat_);
|
||||
if (!goog.isDef(features)) {
|
||||
if (!features) {
|
||||
features = [];
|
||||
}
|
||||
return features;
|
||||
@@ -195,7 +196,7 @@ ol.format.WFS.prototype.readFeatureCollectionMetadataFromDocument =
|
||||
function(doc) {
|
||||
goog.asserts.assert(doc.nodeType == goog.dom.NodeType.DOCUMENT,
|
||||
'doc.nodeType should be DOCUMENT');
|
||||
for (var n = doc.firstChild; !goog.isNull(n); n = n.nextSibling) {
|
||||
for (var n = doc.firstChild; n; n = n.nextSibling) {
|
||||
if (n.nodeType == goog.dom.NodeType.ELEMENT) {
|
||||
return this.readFeatureCollectionMetadataFromNode(n);
|
||||
}
|
||||
@@ -336,7 +337,7 @@ ol.format.WFS.TRANSACTION_RESPONSE_PARSERS_ = {
|
||||
ol.format.WFS.prototype.readTransactionResponseFromDocument = function(doc) {
|
||||
goog.asserts.assert(doc.nodeType == goog.dom.NodeType.DOCUMENT,
|
||||
'doc.nodeType should be DOCUMENT');
|
||||
for (var n = doc.firstChild; !goog.isNull(n); n = n.nextSibling) {
|
||||
for (var n = doc.firstChild; n; n = n.nextSibling) {
|
||||
if (n.nodeType == goog.dom.NodeType.ELEMENT) {
|
||||
return this.readTransactionResponseFromNode(n);
|
||||
}
|
||||
@@ -414,14 +415,14 @@ ol.format.WFS.writeDelete_ = function(node, feature, objectStack) {
|
||||
goog.asserts.assert(goog.isObject(context), 'context should be an Object');
|
||||
var featureType = context['featureType'];
|
||||
var featurePrefix = context['featurePrefix'];
|
||||
featurePrefix = goog.isDef(featurePrefix) ? featurePrefix :
|
||||
featurePrefix = featurePrefix ? featurePrefix :
|
||||
ol.format.WFS.FEATURE_PREFIX;
|
||||
var featureNS = context['featureNS'];
|
||||
node.setAttribute('typeName', featurePrefix + ':' + featureType);
|
||||
ol.xml.setAttributeNS(node, ol.format.WFS.XMLNS, 'xmlns:' + featurePrefix,
|
||||
featureNS);
|
||||
var fid = feature.getId();
|
||||
if (goog.isDef(fid)) {
|
||||
if (fid) {
|
||||
ol.format.WFS.writeOgcFidFilter_(node, fid, objectStack);
|
||||
}
|
||||
};
|
||||
@@ -438,19 +439,19 @@ ol.format.WFS.writeUpdate_ = function(node, feature, objectStack) {
|
||||
goog.asserts.assert(goog.isObject(context), 'context should be an Object');
|
||||
var featureType = context['featureType'];
|
||||
var featurePrefix = context['featurePrefix'];
|
||||
featurePrefix = goog.isDef(featurePrefix) ? featurePrefix :
|
||||
featurePrefix = featurePrefix ? featurePrefix :
|
||||
ol.format.WFS.FEATURE_PREFIX;
|
||||
var featureNS = context['featureNS'];
|
||||
node.setAttribute('typeName', featurePrefix + ':' + featureType);
|
||||
ol.xml.setAttributeNS(node, ol.format.WFS.XMLNS, 'xmlns:' + featurePrefix,
|
||||
featureNS);
|
||||
var fid = feature.getId();
|
||||
if (goog.isDef(fid)) {
|
||||
if (fid) {
|
||||
var keys = feature.getKeys();
|
||||
var values = [];
|
||||
for (var i = 0, ii = keys.length; i < ii; i++) {
|
||||
var value = feature.get(keys[i]);
|
||||
if (goog.isDef(value)) {
|
||||
if (value !== undefined) {
|
||||
values.push({name: keys[i], value: value});
|
||||
}
|
||||
}
|
||||
@@ -474,7 +475,7 @@ ol.format.WFS.writeProperty_ = function(node, pair, objectStack) {
|
||||
var name = ol.xml.createElementNS('http://www.opengis.net/wfs', 'Name');
|
||||
node.appendChild(name);
|
||||
ol.format.XSD.writeStringTextNode(name, pair.name);
|
||||
if (goog.isDefAndNotNull(pair.value)) {
|
||||
if (pair.value !== undefined && pair.value !== null) {
|
||||
var value = ol.xml.createElementNS('http://www.opengis.net/wfs', 'Value');
|
||||
node.appendChild(value);
|
||||
if (pair.value instanceof ol.geom.Geometry) {
|
||||
@@ -495,13 +496,13 @@ ol.format.WFS.writeProperty_ = function(node, pair, objectStack) {
|
||||
* @private
|
||||
*/
|
||||
ol.format.WFS.writeNative_ = function(node, nativeElement, objectStack) {
|
||||
if (goog.isDef(nativeElement.vendorId)) {
|
||||
if (nativeElement.vendorId) {
|
||||
node.setAttribute('vendorId', nativeElement.vendorId);
|
||||
}
|
||||
if (goog.isDef(nativeElement.safeToIgnore)) {
|
||||
if (nativeElement.safeToIgnore !== undefined) {
|
||||
node.setAttribute('safeToIgnore', nativeElement.safeToIgnore);
|
||||
}
|
||||
if (goog.isDef(nativeElement.value)) {
|
||||
if (nativeElement.value !== undefined) {
|
||||
ol.format.XSD.writeStringTextNode(node, nativeElement.value);
|
||||
}
|
||||
};
|
||||
@@ -535,12 +536,12 @@ ol.format.WFS.writeQuery_ = function(node, featureType, objectStack) {
|
||||
var featureNS = context['featureNS'];
|
||||
var propertyNames = context['propertyNames'];
|
||||
var srsName = context['srsName'];
|
||||
var prefix = goog.isDef(featurePrefix) ? featurePrefix + ':' : '';
|
||||
var prefix = featurePrefix ? featurePrefix + ':' : '';
|
||||
node.setAttribute('typeName', prefix + featureType);
|
||||
if (goog.isDef(srsName)) {
|
||||
if (srsName) {
|
||||
node.setAttribute('srsName', srsName);
|
||||
}
|
||||
if (goog.isDef(featureNS)) {
|
||||
if (featureNS) {
|
||||
ol.xml.setAttributeNS(node, ol.format.WFS.XMLNS, 'xmlns:' + featurePrefix,
|
||||
featureNS);
|
||||
}
|
||||
@@ -551,7 +552,7 @@ ol.format.WFS.writeQuery_ = function(node, featureType, objectStack) {
|
||||
ol.xml.makeSimpleNodeFactory('PropertyName'), propertyNames,
|
||||
objectStack);
|
||||
var bbox = context['bbox'];
|
||||
if (goog.isDef(bbox)) {
|
||||
if (bbox) {
|
||||
var child = ol.xml.createElementNS('http://www.opengis.net/ogc', 'Filter');
|
||||
ol.format.WFS.writeOgcBBOX_(child, bbox, objectStack);
|
||||
node.appendChild(child);
|
||||
@@ -632,23 +633,23 @@ ol.format.WFS.prototype.writeGetFeature = function(options) {
|
||||
'GetFeature');
|
||||
node.setAttribute('service', 'WFS');
|
||||
node.setAttribute('version', '1.1.0');
|
||||
if (goog.isDef(options)) {
|
||||
if (goog.isDef(options.handle)) {
|
||||
if (options) {
|
||||
if (options.handle) {
|
||||
node.setAttribute('handle', options.handle);
|
||||
}
|
||||
if (goog.isDef(options.outputFormat)) {
|
||||
if (options.outputFormat) {
|
||||
node.setAttribute('outputFormat', options.outputFormat);
|
||||
}
|
||||
if (goog.isDef(options.maxFeatures)) {
|
||||
if (options.maxFeatures !== undefined) {
|
||||
node.setAttribute('maxFeatures', options.maxFeatures);
|
||||
}
|
||||
if (goog.isDef(options.resultType)) {
|
||||
if (options.resultType) {
|
||||
node.setAttribute('resultType', options.resultType);
|
||||
}
|
||||
if (goog.isDef(options.startIndex)) {
|
||||
if (options.startIndex !== undefined) {
|
||||
node.setAttribute('startIndex', options.startIndex);
|
||||
}
|
||||
if (goog.isDef(options.count)) {
|
||||
if (options.count !== undefined) {
|
||||
node.setAttribute('count', options.count);
|
||||
}
|
||||
}
|
||||
@@ -657,13 +658,11 @@ ol.format.WFS.prototype.writeGetFeature = function(options) {
|
||||
var context = {
|
||||
node: node,
|
||||
srsName: options.srsName,
|
||||
featureNS: goog.isDef(options.featureNS) ?
|
||||
options.featureNS : this.featureNS_,
|
||||
featureNS: options.featureNS ? options.featureNS : this.featureNS_,
|
||||
featurePrefix: options.featurePrefix,
|
||||
geometryName: options.geometryName,
|
||||
bbox: options.bbox,
|
||||
propertyNames: goog.isDef(options.propertyNames) ?
|
||||
options.propertyNames : []
|
||||
propertyNames: options.propertyNames ? options.propertyNames : []
|
||||
};
|
||||
goog.asserts.assert(goog.isArray(options.featureTypes),
|
||||
'options.featureTypes should be an array');
|
||||
@@ -690,15 +689,15 @@ ol.format.WFS.prototype.writeTransaction = function(inserts, updates, deletes,
|
||||
node.setAttribute('service', 'WFS');
|
||||
node.setAttribute('version', '1.1.0');
|
||||
var baseObj, obj;
|
||||
if (goog.isDef(options)) {
|
||||
baseObj = goog.isDef(options.gmlOptions) ? options.gmlOptions : {};
|
||||
if (goog.isDef(options.handle)) {
|
||||
if (options) {
|
||||
baseObj = options.gmlOptions ? options.gmlOptions : {};
|
||||
if (options.handle) {
|
||||
node.setAttribute('handle', options.handle);
|
||||
}
|
||||
}
|
||||
ol.xml.setAttributeNS(node, 'http://www.w3.org/2001/XMLSchema-instance',
|
||||
'xsi:schemaLocation', this.schemaLocation_);
|
||||
if (goog.isDefAndNotNull(inserts)) {
|
||||
if (inserts) {
|
||||
obj = {node: node, featureNS: options.featureNS,
|
||||
featureType: options.featureType, featurePrefix: options.featurePrefix};
|
||||
goog.object.extend(obj, baseObj);
|
||||
@@ -707,7 +706,7 @@ ol.format.WFS.prototype.writeTransaction = function(inserts, updates, deletes,
|
||||
ol.xml.makeSimpleNodeFactory('Insert'), inserts,
|
||||
objectStack);
|
||||
}
|
||||
if (goog.isDefAndNotNull(updates)) {
|
||||
if (updates) {
|
||||
obj = {node: node, featureNS: options.featureNS,
|
||||
featureType: options.featureType, featurePrefix: options.featurePrefix};
|
||||
goog.object.extend(obj, baseObj);
|
||||
@@ -716,14 +715,14 @@ ol.format.WFS.prototype.writeTransaction = function(inserts, updates, deletes,
|
||||
ol.xml.makeSimpleNodeFactory('Update'), updates,
|
||||
objectStack);
|
||||
}
|
||||
if (goog.isDefAndNotNull(deletes)) {
|
||||
if (deletes) {
|
||||
ol.xml.pushSerializeAndPop({node: node, featureNS: options.featureNS,
|
||||
featureType: options.featureType, featurePrefix: options.featurePrefix},
|
||||
ol.format.WFS.TRANSACTION_SERIALIZERS_,
|
||||
ol.xml.makeSimpleNodeFactory('Delete'), deletes,
|
||||
objectStack);
|
||||
}
|
||||
if (goog.isDef(options.nativeElements)) {
|
||||
if (options.nativeElements) {
|
||||
ol.xml.pushSerializeAndPop({node: node, featureNS: options.featureNS,
|
||||
featureType: options.featureType, featurePrefix: options.featurePrefix},
|
||||
ol.format.WFS.TRANSACTION_SERIALIZERS_,
|
||||
@@ -751,7 +750,7 @@ ol.format.WFS.prototype.readProjection;
|
||||
ol.format.WFS.prototype.readProjectionFromDocument = function(doc) {
|
||||
goog.asserts.assert(doc.nodeType == goog.dom.NodeType.DOCUMENT,
|
||||
'doc.nodeType should be a DOCUMENT');
|
||||
for (var n = doc.firstChild; !goog.isNull(n); n = n.nextSibling) {
|
||||
for (var n = doc.firstChild; n; n = n.nextSibling) {
|
||||
if (n.nodeType == goog.dom.NodeType.ELEMENT) {
|
||||
return this.readProjectionFromNode(n);
|
||||
}
|
||||
@@ -769,11 +768,10 @@ ol.format.WFS.prototype.readProjectionFromNode = function(node) {
|
||||
goog.asserts.assert(node.localName == 'FeatureCollection',
|
||||
'localName should be FeatureCollection');
|
||||
|
||||
if (goog.isDefAndNotNull(node.firstElementChild) &&
|
||||
goog.isDefAndNotNull(node.firstElementChild.firstElementChild)) {
|
||||
if (node.firstElementChild &&
|
||||
node.firstElementChild.firstElementChild) {
|
||||
node = node.firstElementChild.firstElementChild;
|
||||
for (var n = node.firstElementChild; !goog.isNull(n);
|
||||
n = n.nextElementSibling) {
|
||||
for (var n = node.firstElementChild; n; n = n.nextElementSibling) {
|
||||
if (!(n.childNodes.length === 0 ||
|
||||
(n.childNodes.length === 1 &&
|
||||
n.firstChild.nodeType === 3))) {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
goog.provide('ol.format.WKT');
|
||||
|
||||
goog.require('goog.array');
|
||||
goog.require('goog.asserts');
|
||||
goog.require('ol');
|
||||
goog.require('ol.Feature');
|
||||
goog.require('ol.format.Feature');
|
||||
goog.require('ol.format.TextFeature');
|
||||
@@ -29,7 +29,7 @@ goog.require('ol.geom.Polygon');
|
||||
*/
|
||||
ol.format.WKT = function(opt_options) {
|
||||
|
||||
var options = goog.isDef(opt_options) ? opt_options : {};
|
||||
var options = opt_options ? opt_options : {};
|
||||
|
||||
goog.base(this);
|
||||
|
||||
@@ -38,7 +38,7 @@ ol.format.WKT = function(opt_options) {
|
||||
* @type {boolean}
|
||||
* @private
|
||||
*/
|
||||
this.splitCollection_ = goog.isDef(options.splitCollection) ?
|
||||
this.splitCollection_ = options.splitCollection !== undefined ?
|
||||
options.splitCollection : false;
|
||||
|
||||
};
|
||||
@@ -59,7 +59,7 @@ ol.format.WKT.EMPTY = 'EMPTY';
|
||||
*/
|
||||
ol.format.WKT.encodePointGeometry_ = function(geom) {
|
||||
var coordinates = geom.getCoordinates();
|
||||
if (goog.array.isEmpty(coordinates)) {
|
||||
if (coordinates.length === 0) {
|
||||
return '';
|
||||
}
|
||||
return coordinates[0] + ' ' + coordinates[1];
|
||||
@@ -168,8 +168,7 @@ ol.format.WKT.encodeMultiPolygonGeometry_ = function(geom) {
|
||||
ol.format.WKT.encode_ = function(geom) {
|
||||
var type = geom.getType();
|
||||
var geometryEncoder = ol.format.WKT.GeometryEncoder_[type];
|
||||
goog.asserts.assert(goog.isDef(geometryEncoder),
|
||||
'geometryEncoder should be defined');
|
||||
goog.asserts.assert(geometryEncoder, 'geometryEncoder should be defined');
|
||||
var enc = geometryEncoder(geom);
|
||||
type = type.toUpperCase();
|
||||
if (enc.length === 0) {
|
||||
@@ -226,7 +225,7 @@ ol.format.WKT.prototype.readFeature;
|
||||
*/
|
||||
ol.format.WKT.prototype.readFeatureFromText = function(text, opt_options) {
|
||||
var geom = this.readGeometryFromText(text, opt_options);
|
||||
if (goog.isDef(geom)) {
|
||||
if (geom) {
|
||||
var feature = new ol.Feature();
|
||||
feature.setGeometry(geom);
|
||||
return feature;
|
||||
@@ -287,7 +286,7 @@ ol.format.WKT.prototype.readGeometry;
|
||||
*/
|
||||
ol.format.WKT.prototype.readGeometryFromText = function(text, opt_options) {
|
||||
var geometry = this.parse_(text);
|
||||
if (goog.isDef(geometry)) {
|
||||
if (geometry) {
|
||||
return /** @type {ol.geom.Geometry} */ (
|
||||
ol.format.Feature.transformWithOptions(geometry, false, opt_options));
|
||||
} else {
|
||||
@@ -313,7 +312,7 @@ ol.format.WKT.prototype.writeFeature;
|
||||
*/
|
||||
ol.format.WKT.prototype.writeFeatureText = function(feature, opt_options) {
|
||||
var geometry = feature.getGeometry();
|
||||
if (goog.isDef(geometry)) {
|
||||
if (geometry) {
|
||||
return this.writeGeometryText(geometry, opt_options);
|
||||
}
|
||||
return '';
|
||||
@@ -428,7 +427,7 @@ ol.format.WKT.Lexer.prototype.isAlpha_ = function(c) {
|
||||
* @private
|
||||
*/
|
||||
ol.format.WKT.Lexer.prototype.isNumeric_ = function(c, opt_decimal) {
|
||||
var decimal = goog.isDef(opt_decimal) ? opt_decimal : false;
|
||||
var decimal = opt_decimal !== undefined ? opt_decimal : false;
|
||||
return c >= '0' && c <= '9' || c == '.' && !decimal;
|
||||
};
|
||||
|
||||
@@ -604,7 +603,7 @@ ol.format.WKT.Parser.prototype.parseGeometry_ = function() {
|
||||
} else {
|
||||
var parser = ol.format.WKT.Parser.GeometryParser_[geomType];
|
||||
var ctor = ol.format.WKT.Parser.GeometryConstructor_[geomType];
|
||||
if (!goog.isDef(parser) || !goog.isDef(ctor)) {
|
||||
if (!parser || !ctor) {
|
||||
throw new Error('Invalid geometry type: ' + geomType);
|
||||
}
|
||||
var coordinates = parser.call(this);
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
goog.provide('ol.format.WMSCapabilities');
|
||||
|
||||
goog.require('goog.array');
|
||||
goog.require('goog.asserts');
|
||||
goog.require('goog.dom.NodeType');
|
||||
goog.require('goog.object');
|
||||
goog.require('goog.string');
|
||||
goog.require('ol');
|
||||
goog.require('ol.format.XLink');
|
||||
goog.require('ol.format.XML');
|
||||
goog.require('ol.format.XSD');
|
||||
@@ -50,7 +49,7 @@ ol.format.WMSCapabilities.prototype.read;
|
||||
ol.format.WMSCapabilities.prototype.readFromDocument = function(doc) {
|
||||
goog.asserts.assert(doc.nodeType == goog.dom.NodeType.DOCUMENT,
|
||||
'doc.nodeType should be DOCUMENT');
|
||||
for (var n = doc.firstChild; !goog.isNull(n); n = n.nextSibling) {
|
||||
for (var n = doc.firstChild; n; n = n.nextSibling) {
|
||||
if (n.nodeType == goog.dom.NodeType.ELEMENT) {
|
||||
return this.readFromNode(n);
|
||||
}
|
||||
@@ -69,12 +68,12 @@ ol.format.WMSCapabilities.prototype.readFromNode = function(node) {
|
||||
goog.asserts.assert(node.localName == 'WMS_Capabilities' ||
|
||||
node.localName == 'WMT_MS_Capabilities',
|
||||
'localName should be WMS_Capabilities or WMT_MS_Capabilities');
|
||||
this.version = goog.string.trim(node.getAttribute('version'));
|
||||
this.version = node.getAttribute('version').trim();
|
||||
goog.asserts.assertString(this.version, 'this.version should be a string');
|
||||
var wmsCapabilityObject = ol.xml.pushParseAndPop({
|
||||
'version': this.version
|
||||
}, ol.format.WMSCapabilities.PARSERS_, node, []);
|
||||
return goog.isDef(wmsCapabilityObject) ? wmsCapabilityObject : null;
|
||||
return wmsCapabilityObject ? wmsCapabilityObject : null;
|
||||
};
|
||||
|
||||
|
||||
@@ -142,7 +141,7 @@ ol.format.WMSCapabilities.readEXGeographicBoundingBox_ =
|
||||
{},
|
||||
ol.format.WMSCapabilities.EX_GEOGRAPHIC_BOUNDING_BOX_PARSERS_,
|
||||
node, objectStack);
|
||||
if (!goog.isDef(geographicBoundingBox)) {
|
||||
if (!geographicBoundingBox) {
|
||||
return undefined;
|
||||
}
|
||||
var westBoundLongitude = /** @type {number|undefined} */
|
||||
@@ -153,8 +152,8 @@ ol.format.WMSCapabilities.readEXGeographicBoundingBox_ =
|
||||
(geographicBoundingBox['eastBoundLongitude']);
|
||||
var northBoundLatitude = /** @type {number|undefined} */
|
||||
(geographicBoundingBox['northBoundLatitude']);
|
||||
if (!goog.isDef(westBoundLongitude) || !goog.isDef(southBoundLatitude) ||
|
||||
!goog.isDef(eastBoundLongitude) || !goog.isDef(northBoundLatitude)) {
|
||||
if (westBoundLongitude === undefined || southBoundLatitude === undefined ||
|
||||
eastBoundLongitude === undefined || northBoundLatitude === undefined) {
|
||||
return undefined;
|
||||
}
|
||||
return /** @type {ol.Extent} */ ([
|
||||
@@ -297,66 +296,64 @@ ol.format.WMSCapabilities.readLayer_ = function(node, objectStack) {
|
||||
var layerObject = /** @type {Object.<string,*>} */ (ol.xml.pushParseAndPop(
|
||||
{}, ol.format.WMSCapabilities.LAYER_PARSERS_, node, objectStack));
|
||||
|
||||
if (!goog.isDef(layerObject)) {
|
||||
if (!layerObject) {
|
||||
return undefined;
|
||||
}
|
||||
var queryable =
|
||||
ol.format.XSD.readBooleanString(node.getAttribute('queryable'));
|
||||
if (!goog.isDef(queryable)) {
|
||||
if (queryable === undefined) {
|
||||
queryable = parentLayerObject['queryable'];
|
||||
}
|
||||
layerObject['queryable'] = goog.isDef(queryable) ? queryable : false;
|
||||
layerObject['queryable'] = queryable !== undefined ? queryable : false;
|
||||
|
||||
var cascaded = ol.format.XSD.readNonNegativeIntegerString(
|
||||
node.getAttribute('cascaded'));
|
||||
if (!goog.isDef(cascaded)) {
|
||||
if (cascaded === undefined) {
|
||||
cascaded = parentLayerObject['cascaded'];
|
||||
}
|
||||
layerObject['cascaded'] = cascaded;
|
||||
|
||||
var opaque = ol.format.XSD.readBooleanString(node.getAttribute('opaque'));
|
||||
if (!goog.isDef(opaque)) {
|
||||
if (opaque === undefined) {
|
||||
opaque = parentLayerObject['opaque'];
|
||||
}
|
||||
layerObject['opaque'] = goog.isDef(opaque) ? opaque : false;
|
||||
layerObject['opaque'] = opaque !== undefined ? opaque : false;
|
||||
|
||||
var noSubsets =
|
||||
ol.format.XSD.readBooleanString(node.getAttribute('noSubsets'));
|
||||
if (!goog.isDef(noSubsets)) {
|
||||
if (noSubsets === undefined) {
|
||||
noSubsets = parentLayerObject['noSubsets'];
|
||||
}
|
||||
layerObject['noSubsets'] = goog.isDef(noSubsets) ? noSubsets : false;
|
||||
layerObject['noSubsets'] = noSubsets !== undefined ? noSubsets : false;
|
||||
|
||||
var fixedWidth =
|
||||
ol.format.XSD.readDecimalString(node.getAttribute('fixedWidth'));
|
||||
if (!goog.isDef(fixedWidth)) {
|
||||
if (!fixedWidth) {
|
||||
fixedWidth = parentLayerObject['fixedWidth'];
|
||||
}
|
||||
layerObject['fixedWidth'] = fixedWidth;
|
||||
|
||||
var fixedHeight =
|
||||
ol.format.XSD.readDecimalString(node.getAttribute('fixedHeight'));
|
||||
if (!goog.isDef(fixedHeight)) {
|
||||
if (!fixedHeight) {
|
||||
fixedHeight = parentLayerObject['fixedHeight'];
|
||||
}
|
||||
layerObject['fixedHeight'] = fixedHeight;
|
||||
|
||||
// See 7.2.4.8
|
||||
var addKeys = ['Style', 'CRS', 'AuthorityURL'];
|
||||
goog.array.forEach(addKeys, function(key) {
|
||||
var parentValue = parentLayerObject[key];
|
||||
if (goog.isDef(parentValue)) {
|
||||
addKeys.forEach(function(key) {
|
||||
if (key in parentLayerObject) {
|
||||
var childValue = goog.object.setIfUndefined(layerObject, key, []);
|
||||
childValue = childValue.concat(parentValue);
|
||||
childValue = childValue.concat(parentLayerObject[key]);
|
||||
layerObject[key] = childValue;
|
||||
}
|
||||
});
|
||||
|
||||
var replaceKeys = ['EX_GeographicBoundingBox', 'BoundingBox', 'Dimension',
|
||||
'Attribution', 'MinScaleDenominator', 'MaxScaleDenominator'];
|
||||
goog.array.forEach(replaceKeys, function(key) {
|
||||
var childValue = layerObject[key];
|
||||
if (!goog.isDef(childValue)) {
|
||||
replaceKeys.forEach(function(key) {
|
||||
if (!(key in layerObject)) {
|
||||
var parentValue = parentLayerObject[key];
|
||||
layerObject[key] = parentValue;
|
||||
}
|
||||
@@ -482,7 +479,7 @@ ol.format.WMSCapabilities.readSizedFormatOnlineresource_ =
|
||||
'node.nodeType should be ELEMENT');
|
||||
var formatOnlineresource =
|
||||
ol.format.WMSCapabilities.readFormatOnlineresource_(node, objectStack);
|
||||
if (goog.isDef(formatOnlineresource)) {
|
||||
if (formatOnlineresource) {
|
||||
var size = [
|
||||
ol.format.XSD.readNonNegativeIntegerString(node.getAttribute('width')),
|
||||
ol.format.XSD.readNonNegativeIntegerString(node.getAttribute('height'))
|
||||
@@ -507,7 +504,7 @@ ol.format.WMSCapabilities.readAuthorityURL_ = function(node, objectStack) {
|
||||
'localName should be AuthorityURL');
|
||||
var authorityObject =
|
||||
ol.format.WMSCapabilities.readFormatOnlineresource_(node, objectStack);
|
||||
if (goog.isDef(authorityObject)) {
|
||||
if (authorityObject) {
|
||||
authorityObject['name'] = node.getAttribute('name');
|
||||
return authorityObject;
|
||||
}
|
||||
@@ -528,7 +525,7 @@ ol.format.WMSCapabilities.readMetadataURL_ = function(node, objectStack) {
|
||||
'localName should be MetadataURL');
|
||||
var metadataObject =
|
||||
ol.format.WMSCapabilities.readFormatOnlineresource_(node, objectStack);
|
||||
if (goog.isDef(metadataObject)) {
|
||||
if (metadataObject) {
|
||||
metadataObject['type'] = node.getAttribute('type');
|
||||
return metadataObject;
|
||||
}
|
||||
|
||||
@@ -4,7 +4,6 @@ goog.require('goog.array');
|
||||
goog.require('goog.asserts');
|
||||
goog.require('goog.dom.NodeType');
|
||||
goog.require('goog.object');
|
||||
goog.require('goog.string');
|
||||
goog.require('ol.format.GML2');
|
||||
goog.require('ol.format.XMLFeature');
|
||||
goog.require('ol.xml');
|
||||
@@ -75,9 +74,10 @@ ol.format.WMSGetFeatureInfo.prototype.readFeatures_ =
|
||||
return features;
|
||||
}
|
||||
if (localName == 'msGMLOutput') {
|
||||
goog.array.forEach(node.childNodes, function(layer) {
|
||||
for (var i = 0, ii = node.childNodes.length; i < ii; i++) {
|
||||
var layer = node.childNodes[i];
|
||||
if (layer.nodeType !== goog.dom.NodeType.ELEMENT) {
|
||||
return;
|
||||
continue;
|
||||
}
|
||||
var context = objectStack[0];
|
||||
goog.asserts.assert(goog.isObject(context),
|
||||
@@ -87,8 +87,8 @@ ol.format.WMSGetFeatureInfo.prototype.readFeatures_ =
|
||||
ol.format.WMSGetFeatureInfo.layerIdentifier_) >= 0,
|
||||
'localName of layer node should match layerIdentifier');
|
||||
|
||||
var featureType = goog.string.remove(layer.localName,
|
||||
ol.format.WMSGetFeatureInfo.layerIdentifier_) +
|
||||
var toRemove = ol.format.WMSGetFeatureInfo.layerIdentifier_;
|
||||
var featureType = layer.localName.replace(toRemove, '') +
|
||||
ol.format.WMSGetFeatureInfo.featureIdentifier_;
|
||||
|
||||
context['featureType'] = featureType;
|
||||
@@ -102,16 +102,16 @@ ol.format.WMSGetFeatureInfo.prototype.readFeatures_ =
|
||||
layer.namespaceURI = this.featureNS_;
|
||||
var layerFeatures = ol.xml.pushParseAndPop(
|
||||
[], parsersNS, layer, objectStack, this.gmlFormat_);
|
||||
if (goog.isDef(layerFeatures)) {
|
||||
if (layerFeatures) {
|
||||
goog.array.extend(features, layerFeatures);
|
||||
}
|
||||
}, this);
|
||||
}
|
||||
}
|
||||
if (localName == 'FeatureCollection') {
|
||||
var gmlFeatures = ol.xml.pushParseAndPop([],
|
||||
this.gmlFormat_.FEATURE_COLLECTION_PARSERS, node,
|
||||
[{}], this.gmlFormat_);
|
||||
if (goog.isDef(gmlFeatures)) {
|
||||
if (gmlFeatures) {
|
||||
features = gmlFeatures;
|
||||
}
|
||||
}
|
||||
@@ -140,7 +140,7 @@ ol.format.WMSGetFeatureInfo.prototype.readFeaturesFromNode =
|
||||
'featureType': this.featureType,
|
||||
'featureNS': this.featureNS
|
||||
};
|
||||
if (goog.isDef(opt_options)) {
|
||||
if (opt_options) {
|
||||
goog.object.extend(options, this.getReadOptions(node, opt_options));
|
||||
}
|
||||
return this.readFeatures_(node, [options]);
|
||||
|
||||
@@ -2,7 +2,6 @@ goog.provide('ol.format.WMTSCapabilities');
|
||||
|
||||
goog.require('goog.asserts');
|
||||
goog.require('goog.dom.NodeType');
|
||||
goog.require('goog.string');
|
||||
goog.require('ol.extent');
|
||||
goog.require('ol.format.OWS');
|
||||
goog.require('ol.format.XLink');
|
||||
@@ -50,7 +49,7 @@ ol.format.WMTSCapabilities.prototype.read;
|
||||
ol.format.WMTSCapabilities.prototype.readFromDocument = function(doc) {
|
||||
goog.asserts.assert(doc.nodeType == goog.dom.NodeType.DOCUMENT,
|
||||
'doc.nodeType should be DOCUMENT');
|
||||
for (var n = doc.firstChild; !goog.isNull(n); n = n.nextSibling) {
|
||||
for (var n = doc.firstChild; n; n = n.nextSibling) {
|
||||
if (n.nodeType == goog.dom.NodeType.ELEMENT) {
|
||||
return this.readFromNode(n);
|
||||
}
|
||||
@@ -68,16 +67,16 @@ ol.format.WMTSCapabilities.prototype.readFromNode = function(node) {
|
||||
'node.nodeType should be ELEMENT');
|
||||
goog.asserts.assert(node.localName == 'Capabilities',
|
||||
'localName should be Capabilities');
|
||||
this.version = goog.string.trim(node.getAttribute('version'));
|
||||
this.version = node.getAttribute('version').trim();
|
||||
goog.asserts.assertString(this.version, 'this.version should be a string');
|
||||
var WMTSCapabilityObject = this.owsParser_.readFromNode(node);
|
||||
if (!goog.isDef(WMTSCapabilityObject)) {
|
||||
if (!WMTSCapabilityObject) {
|
||||
return null;
|
||||
}
|
||||
WMTSCapabilityObject['version'] = this.version;
|
||||
WMTSCapabilityObject = ol.xml.pushParseAndPop(WMTSCapabilityObject,
|
||||
ol.format.WMTSCapabilities.PARSERS_, node, []);
|
||||
return goog.isDef(WMTSCapabilityObject) ? WMTSCapabilityObject : null;
|
||||
return WMTSCapabilityObject ? WMTSCapabilityObject : null;
|
||||
};
|
||||
|
||||
|
||||
@@ -134,7 +133,7 @@ ol.format.WMTSCapabilities.readTileMatrixSet_ = function(node, objectStack) {
|
||||
ol.format.WMTSCapabilities.readStyle_ = function(node, objectStack) {
|
||||
var style = ol.xml.pushParseAndPop({},
|
||||
ol.format.WMTSCapabilities.STYLE_PARSERS_, node, objectStack);
|
||||
if (!goog.isDef(style)) {
|
||||
if (!style) {
|
||||
return undefined;
|
||||
}
|
||||
var isDefault = node.getAttribute('isDefault') === 'true';
|
||||
@@ -168,13 +167,13 @@ ol.format.WMTSCapabilities.readResourceUrl_ = function(node, objectStack) {
|
||||
var template = node.getAttribute('template');
|
||||
var resourceType = node.getAttribute('resourceType');
|
||||
var resource = {};
|
||||
if (goog.isDef(format)) {
|
||||
if (format) {
|
||||
resource['format'] = format;
|
||||
}
|
||||
if (goog.isDef(template)) {
|
||||
if (template) {
|
||||
resource['template'] = template;
|
||||
}
|
||||
if (goog.isDef(resourceType)) {
|
||||
if (resourceType) {
|
||||
resource['resourceType'] = resourceType;
|
||||
}
|
||||
return resource;
|
||||
@@ -219,7 +218,7 @@ ol.format.WMTSCapabilities.readLegendUrl_ = function(node, objectStack) {
|
||||
*/
|
||||
ol.format.WMTSCapabilities.readCoordinates_ = function(node, objectStack) {
|
||||
var coordinates = ol.format.XSD.readString(node).split(' ');
|
||||
if (!goog.isDef(coordinates) || coordinates.length != 2) {
|
||||
if (!coordinates || coordinates.length != 2) {
|
||||
return undefined;
|
||||
}
|
||||
var x = +coordinates[0];
|
||||
|
||||
@@ -107,7 +107,7 @@ ol.format.XMLFeature.prototype.readFeaturesFromDocument = function(
|
||||
/** @type {Array.<ol.Feature>} */
|
||||
var features = [];
|
||||
var n;
|
||||
for (n = doc.firstChild; !goog.isNull(n); n = n.nextSibling) {
|
||||
for (n = doc.firstChild; n; n = n.nextSibling) {
|
||||
if (n.nodeType == goog.dom.NodeType.ELEMENT) {
|
||||
goog.array.extend(features, this.readFeaturesFromNode(n, opt_options));
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ goog.provide('ol.format.XSD');
|
||||
|
||||
goog.require('goog.asserts');
|
||||
goog.require('goog.string');
|
||||
goog.require('ol');
|
||||
goog.require('ol.xml');
|
||||
|
||||
|
||||
@@ -29,7 +30,7 @@ ol.format.XSD.readBoolean = function(node) {
|
||||
ol.format.XSD.readBooleanString = function(string) {
|
||||
var m = /^\s*(true|1)|(false|0)\s*$/.exec(string);
|
||||
if (m) {
|
||||
return goog.isDef(m[1]) || false;
|
||||
return m[1] !== undefined || false;
|
||||
} else {
|
||||
return undefined;
|
||||
}
|
||||
@@ -56,7 +57,7 @@ ol.format.XSD.readDateTime = function(node) {
|
||||
if (m[7] != 'Z') {
|
||||
var sign = m[8] == '-' ? -1 : 1;
|
||||
dateTime += sign * 60 * parseInt(m[9], 10);
|
||||
if (goog.isDef(m[10])) {
|
||||
if (m[10] !== undefined) {
|
||||
dateTime += sign * 60 * 60 * parseInt(m[10], 10);
|
||||
}
|
||||
}
|
||||
@@ -121,8 +122,7 @@ ol.format.XSD.readNonNegativeIntegerString = function(string) {
|
||||
* @return {string|undefined} String.
|
||||
*/
|
||||
ol.format.XSD.readString = function(node) {
|
||||
var s = ol.xml.getAllTextContent(node, false);
|
||||
return goog.string.trim(s);
|
||||
return ol.xml.getAllTextContent(node, false).trim();
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -62,7 +62,7 @@ ol.Geolocation = function(opt_options) {
|
||||
|
||||
goog.base(this);
|
||||
|
||||
var options = goog.isDef(opt_options) ? opt_options : {};
|
||||
var options = opt_options || {};
|
||||
|
||||
/**
|
||||
* The unprojected (EPSG:4326) device position.
|
||||
@@ -90,14 +90,14 @@ ol.Geolocation = function(opt_options) {
|
||||
this, ol.Object.getChangeEventType(ol.GeolocationProperty.TRACKING),
|
||||
this.handleTrackingChanged_, false, this);
|
||||
|
||||
if (goog.isDef(options.projection)) {
|
||||
if (options.projection !== undefined) {
|
||||
this.setProjection(ol.proj.get(options.projection));
|
||||
}
|
||||
if (goog.isDef(options.trackingOptions)) {
|
||||
if (options.trackingOptions !== undefined) {
|
||||
this.setTrackingOptions(options.trackingOptions);
|
||||
}
|
||||
|
||||
this.setTracking(goog.isDef(options.tracking) ? options.tracking : false);
|
||||
this.setTracking(options.tracking !== undefined ? options.tracking : false);
|
||||
|
||||
};
|
||||
goog.inherits(ol.Geolocation, ol.Object);
|
||||
@@ -117,10 +117,10 @@ ol.Geolocation.prototype.disposeInternal = function() {
|
||||
*/
|
||||
ol.Geolocation.prototype.handleProjectionChanged_ = function() {
|
||||
var projection = this.getProjection();
|
||||
if (goog.isDefAndNotNull(projection)) {
|
||||
if (projection) {
|
||||
this.transform_ = ol.proj.getTransformFromProjections(
|
||||
ol.proj.get('EPSG:4326'), projection);
|
||||
if (!goog.isNull(this.position_)) {
|
||||
if (this.position_) {
|
||||
this.set(
|
||||
ol.GeolocationProperty.POSITION, this.transform_(this.position_));
|
||||
}
|
||||
@@ -134,12 +134,12 @@ ol.Geolocation.prototype.handleProjectionChanged_ = function() {
|
||||
ol.Geolocation.prototype.handleTrackingChanged_ = function() {
|
||||
if (ol.has.GEOLOCATION) {
|
||||
var tracking = this.getTracking();
|
||||
if (tracking && !goog.isDef(this.watchId_)) {
|
||||
if (tracking && this.watchId_ === undefined) {
|
||||
this.watchId_ = goog.global.navigator.geolocation.watchPosition(
|
||||
goog.bind(this.positionChange_, this),
|
||||
goog.bind(this.positionError_, this),
|
||||
this.getTrackingOptions());
|
||||
} else if (!tracking && goog.isDef(this.watchId_)) {
|
||||
} else if (!tracking && this.watchId_ !== undefined) {
|
||||
goog.global.navigator.geolocation.clearWatch(this.watchId_);
|
||||
this.watchId_ = undefined;
|
||||
}
|
||||
@@ -155,13 +155,13 @@ ol.Geolocation.prototype.positionChange_ = function(position) {
|
||||
var coords = position.coords;
|
||||
this.set(ol.GeolocationProperty.ACCURACY, coords.accuracy);
|
||||
this.set(ol.GeolocationProperty.ALTITUDE,
|
||||
goog.isNull(coords.altitude) ? undefined : coords.altitude);
|
||||
coords.altitude === null ? undefined : coords.altitude);
|
||||
this.set(ol.GeolocationProperty.ALTITUDE_ACCURACY,
|
||||
goog.isNull(coords.altitudeAccuracy) ?
|
||||
coords.altitudeAccuracy === null ?
|
||||
undefined : coords.altitudeAccuracy);
|
||||
this.set(ol.GeolocationProperty.HEADING, goog.isNull(coords.heading) ?
|
||||
this.set(ol.GeolocationProperty.HEADING, coords.heading === null ?
|
||||
undefined : goog.math.toRadians(coords.heading));
|
||||
if (goog.isNull(this.position_)) {
|
||||
if (!this.position_) {
|
||||
this.position_ = [coords.longitude, coords.latitude];
|
||||
} else {
|
||||
this.position_[0] = coords.longitude;
|
||||
@@ -170,7 +170,7 @@ ol.Geolocation.prototype.positionChange_ = function(position) {
|
||||
var projectedPosition = this.transform_(this.position_);
|
||||
this.set(ol.GeolocationProperty.POSITION, projectedPosition);
|
||||
this.set(ol.GeolocationProperty.SPEED,
|
||||
goog.isNull(coords.speed) ? undefined : coords.speed);
|
||||
coords.speed === null ? undefined : coords.speed);
|
||||
var geometry = ol.geom.Polygon.circular(
|
||||
ol.sphere.WGS84, this.position_, coords.accuracy);
|
||||
geometry.applyTransform(this.transform_);
|
||||
|
||||
@@ -23,7 +23,7 @@ goog.require('ol.proj');
|
||||
*/
|
||||
ol.geom.Circle = function(center, opt_radius, opt_layout) {
|
||||
goog.base(this);
|
||||
var radius = goog.isDef(opt_radius) ? opt_radius : 0;
|
||||
var radius = opt_radius ? opt_radius : 0;
|
||||
this.setCenterAndRadius(center, radius, opt_layout);
|
||||
};
|
||||
goog.inherits(ol.geom.Circle, ol.geom.SimpleGeometry);
|
||||
@@ -189,11 +189,11 @@ ol.geom.Circle.prototype.setCenter = function(center) {
|
||||
*/
|
||||
ol.geom.Circle.prototype.setCenterAndRadius =
|
||||
function(center, radius, opt_layout) {
|
||||
if (goog.isNull(center)) {
|
||||
if (!center) {
|
||||
this.setFlatCoordinates(ol.geom.GeometryLayout.XY, null);
|
||||
} else {
|
||||
this.setLayout(opt_layout, center, 0);
|
||||
if (goog.isNull(this.flatCoordinates)) {
|
||||
if (!this.flatCoordinates) {
|
||||
this.flatCoordinates = [];
|
||||
}
|
||||
/** @type {Array.<number>} */
|
||||
@@ -228,8 +228,8 @@ ol.geom.Circle.prototype.setFlatCoordinates =
|
||||
* @api
|
||||
*/
|
||||
ol.geom.Circle.prototype.setRadius = function(radius) {
|
||||
goog.asserts.assert(!goog.isNull(this.flatCoordinates),
|
||||
'this.flatCoordinates cannot be null');
|
||||
goog.asserts.assert(this.flatCoordinates,
|
||||
'truthy this.flatCoordinates expected');
|
||||
this.flatCoordinates[this.stride] = this.flatCoordinates[0] + radius;
|
||||
this.changed();
|
||||
};
|
||||
|
||||
@@ -154,7 +154,7 @@ ol.geom.flat.closest.getClosestPoint = function(flatCoordinates, offset, end,
|
||||
}
|
||||
}
|
||||
goog.asserts.assert(maxDelta > 0, 'maxDelta should be larger than 0');
|
||||
var tmpPoint = goog.isDef(opt_tmpPoint) ? opt_tmpPoint : [NaN, NaN];
|
||||
var tmpPoint = opt_tmpPoint ? opt_tmpPoint : [NaN, NaN];
|
||||
var index = offset + stride;
|
||||
while (index < end) {
|
||||
ol.geom.flat.closest.point(
|
||||
@@ -217,7 +217,7 @@ ol.geom.flat.closest.getClosestPoint = function(flatCoordinates, offset, end,
|
||||
ol.geom.flat.closest.getsClosestPoint = function(flatCoordinates, offset, ends,
|
||||
stride, maxDelta, isRing, x, y, closestPoint, minSquaredDistance,
|
||||
opt_tmpPoint) {
|
||||
var tmpPoint = goog.isDef(opt_tmpPoint) ? opt_tmpPoint : [NaN, NaN];
|
||||
var tmpPoint = opt_tmpPoint ? opt_tmpPoint : [NaN, NaN];
|
||||
var i, ii;
|
||||
for (i = 0, ii = ends.length; i < ii; ++i) {
|
||||
var end = ends[i];
|
||||
@@ -247,7 +247,7 @@ ol.geom.flat.closest.getsClosestPoint = function(flatCoordinates, offset, ends,
|
||||
ol.geom.flat.closest.getssClosestPoint = function(flatCoordinates, offset,
|
||||
endss, stride, maxDelta, isRing, x, y, closestPoint, minSquaredDistance,
|
||||
opt_tmpPoint) {
|
||||
var tmpPoint = goog.isDef(opt_tmpPoint) ? opt_tmpPoint : [NaN, NaN];
|
||||
var tmpPoint = opt_tmpPoint ? opt_tmpPoint : [NaN, NaN];
|
||||
var i, ii;
|
||||
for (i = 0, ii = endss.length; i < ii; ++i) {
|
||||
var ends = endss[i];
|
||||
|
||||
@@ -55,7 +55,7 @@ ol.geom.flat.deflate.coordinates =
|
||||
*/
|
||||
ol.geom.flat.deflate.coordinatess =
|
||||
function(flatCoordinates, offset, coordinatess, stride, opt_ends) {
|
||||
var ends = goog.isDef(opt_ends) ? opt_ends : [];
|
||||
var ends = opt_ends ? opt_ends : [];
|
||||
var i = 0;
|
||||
var j, jj;
|
||||
for (j = 0, jj = coordinatess.length; j < jj; ++j) {
|
||||
@@ -79,7 +79,7 @@ ol.geom.flat.deflate.coordinatess =
|
||||
*/
|
||||
ol.geom.flat.deflate.coordinatesss =
|
||||
function(flatCoordinates, offset, coordinatesss, stride, opt_endss) {
|
||||
var endss = goog.isDef(opt_endss) ? opt_endss : [];
|
||||
var endss = opt_endss ? opt_endss : [];
|
||||
var i = 0;
|
||||
var j, jj;
|
||||
for (j = 0, jj = coordinatesss.length; j < jj; ++j) {
|
||||
|
||||
@@ -15,11 +15,11 @@ goog.require('goog.asserts');
|
||||
ol.geom.flat.flip.flipXY =
|
||||
function(flatCoordinates, offset, end, stride, opt_dest, opt_destOffset) {
|
||||
var dest, destOffset;
|
||||
if (goog.isDef(opt_dest)) {
|
||||
if (opt_dest !== undefined) {
|
||||
dest = opt_dest;
|
||||
destOffset = goog.isDef(opt_destOffset) ? opt_destOffset : 0;
|
||||
destOffset = opt_destOffset !== undefined ? opt_destOffset : 0;
|
||||
} else {
|
||||
goog.asserts.assert(!goog.isDef(opt_destOffset),
|
||||
goog.asserts.assert(opt_destOffset === undefined,
|
||||
'opt_destOffSet should be defined');
|
||||
dest = [];
|
||||
destOffset = 0;
|
||||
|
||||
@@ -11,7 +11,7 @@ goog.provide('ol.geom.flat.inflate');
|
||||
*/
|
||||
ol.geom.flat.inflate.coordinates =
|
||||
function(flatCoordinates, offset, end, stride, opt_coordinates) {
|
||||
var coordinates = goog.isDef(opt_coordinates) ? opt_coordinates : [];
|
||||
var coordinates = opt_coordinates !== undefined ? opt_coordinates : [];
|
||||
var i = 0;
|
||||
var j;
|
||||
for (j = offset; j < end; j += stride) {
|
||||
@@ -32,7 +32,7 @@ ol.geom.flat.inflate.coordinates =
|
||||
*/
|
||||
ol.geom.flat.inflate.coordinatess =
|
||||
function(flatCoordinates, offset, ends, stride, opt_coordinatess) {
|
||||
var coordinatess = goog.isDef(opt_coordinatess) ? opt_coordinatess : [];
|
||||
var coordinatess = opt_coordinatess !== undefined ? opt_coordinatess : [];
|
||||
var i = 0;
|
||||
var j, jj;
|
||||
for (j = 0, jj = ends.length; j < jj; ++j) {
|
||||
@@ -57,7 +57,7 @@ ol.geom.flat.inflate.coordinatess =
|
||||
*/
|
||||
ol.geom.flat.inflate.coordinatesss =
|
||||
function(flatCoordinates, offset, endss, stride, opt_coordinatesss) {
|
||||
var coordinatesss = goog.isDef(opt_coordinatesss) ? opt_coordinatesss : [];
|
||||
var coordinatesss = opt_coordinatesss !== undefined ? opt_coordinatesss : [];
|
||||
var i = 0;
|
||||
var j, jj;
|
||||
for (j = 0, jj = endss.length; j < jj; ++j) {
|
||||
|
||||
@@ -60,7 +60,7 @@ ol.geom.flat.interiorpoint.linearRings = function(flatCoordinates, offset,
|
||||
// ring. Use the center of the the linear ring's extent.
|
||||
pointX = flatCenters[flatCentersOffset];
|
||||
}
|
||||
if (goog.isDef(opt_dest)) {
|
||||
if (opt_dest) {
|
||||
opt_dest.push(pointX, y);
|
||||
return opt_dest;
|
||||
} else {
|
||||
|
||||
@@ -61,7 +61,7 @@ ol.geom.flat.interpolate.lineString =
|
||||
pointY = flatCoordinates[offset + index * stride + 1];
|
||||
}
|
||||
}
|
||||
if (goog.isDefAndNotNull(opt_dest)) {
|
||||
if (opt_dest) {
|
||||
opt_dest[0] = pointX;
|
||||
opt_dest[1] = pointY;
|
||||
return opt_dest;
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
goog.provide('ol.geom.flat.orient');
|
||||
|
||||
goog.require('ol');
|
||||
goog.require('ol.geom.flat.reverse');
|
||||
|
||||
|
||||
@@ -43,7 +44,7 @@ ol.geom.flat.orient.linearRingIsClockwise =
|
||||
*/
|
||||
ol.geom.flat.orient.linearRingsAreOriented =
|
||||
function(flatCoordinates, offset, ends, stride, opt_right) {
|
||||
var right = goog.isDef(opt_right) ? opt_right : false;
|
||||
var right = opt_right !== undefined ? opt_right : false;
|
||||
var i, ii;
|
||||
for (i = 0, ii = ends.length; i < ii; ++i) {
|
||||
var end = ends[i];
|
||||
@@ -105,7 +106,7 @@ ol.geom.flat.orient.linearRingssAreOriented =
|
||||
*/
|
||||
ol.geom.flat.orient.orientLinearRings =
|
||||
function(flatCoordinates, offset, ends, stride, opt_right) {
|
||||
var right = goog.isDef(opt_right) ? opt_right : false;
|
||||
var right = opt_right !== undefined ? opt_right : false;
|
||||
var i, ii;
|
||||
for (i = 0, ii = ends.length; i < ii; ++i) {
|
||||
var end = ends[i];
|
||||
|
||||
@@ -42,7 +42,7 @@ goog.require('ol.math');
|
||||
*/
|
||||
ol.geom.flat.simplify.lineString = function(flatCoordinates, offset, end,
|
||||
stride, squaredTolerance, highQuality, opt_simplifiedFlatCoordinates) {
|
||||
var simplifiedFlatCoordinates = goog.isDef(opt_simplifiedFlatCoordinates) ?
|
||||
var simplifiedFlatCoordinates = opt_simplifiedFlatCoordinates !== undefined ?
|
||||
opt_simplifiedFlatCoordinates : [];
|
||||
if (!highQuality) {
|
||||
end = ol.geom.flat.simplify.radialDistance(flatCoordinates, offset, end,
|
||||
|
||||
@@ -20,7 +20,7 @@ ol.geom.flat.transform.transform2D =
|
||||
var m11 = goog.vec.Mat4.getElement(transform, 1, 1);
|
||||
var m03 = goog.vec.Mat4.getElement(transform, 0, 3);
|
||||
var m13 = goog.vec.Mat4.getElement(transform, 1, 3);
|
||||
var dest = goog.isDef(opt_dest) ? opt_dest : [];
|
||||
var dest = opt_dest ? opt_dest : [];
|
||||
var i = 0;
|
||||
var j;
|
||||
for (j = offset; j < end; j += stride) {
|
||||
@@ -29,7 +29,7 @@ ol.geom.flat.transform.transform2D =
|
||||
dest[i++] = m00 * x + m01 * y + m03;
|
||||
dest[i++] = m10 * x + m11 * y + m13;
|
||||
}
|
||||
if (goog.isDef(opt_dest) && dest.length != i) {
|
||||
if (opt_dest && dest.length != i) {
|
||||
dest.length = i;
|
||||
}
|
||||
return dest;
|
||||
@@ -48,7 +48,7 @@ ol.geom.flat.transform.transform2D =
|
||||
*/
|
||||
ol.geom.flat.transform.translate =
|
||||
function(flatCoordinates, offset, end, stride, deltaX, deltaY, opt_dest) {
|
||||
var dest = goog.isDef(opt_dest) ? opt_dest : [];
|
||||
var dest = opt_dest ? opt_dest : [];
|
||||
var i = 0;
|
||||
var j, k;
|
||||
for (j = offset; j < end; j += stride) {
|
||||
@@ -58,7 +58,7 @@ ol.geom.flat.transform.translate =
|
||||
dest[i++] = flatCoordinates[k];
|
||||
}
|
||||
}
|
||||
if (goog.isDef(opt_dest) && dest.length != i) {
|
||||
if (opt_dest && dest.length != i) {
|
||||
dest.length = i;
|
||||
}
|
||||
return dest;
|
||||
|
||||
@@ -122,8 +122,7 @@ ol.geom.Geometry.prototype.closestPointXY = goog.abstractMethod;
|
||||
* @api stable
|
||||
*/
|
||||
ol.geom.Geometry.prototype.getClosestPoint = function(point, opt_closestPoint) {
|
||||
var closestPoint = goog.isDef(opt_closestPoint) ?
|
||||
opt_closestPoint : [NaN, NaN];
|
||||
var closestPoint = opt_closestPoint ? opt_closestPoint : [NaN, NaN];
|
||||
this.closestPointXY(point[0], point[1], closestPoint, Infinity);
|
||||
return closestPoint;
|
||||
};
|
||||
@@ -169,10 +168,27 @@ ol.geom.Geometry.prototype.getExtent = function(opt_extent) {
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Create a simplified version of this geometry. For linestrings, this uses
|
||||
* the the {@link
|
||||
* https://en.wikipedia.org/wiki/Ramer-Douglas-Peucker_algorithm
|
||||
* Douglas Peucker} algorithm. For polygons, a quantization-based
|
||||
* simplification is used to preserve topology.
|
||||
* @function
|
||||
* @param {number} tolerance The tolerance distance for simplification.
|
||||
* @return {ol.geom.Geometry} A new, simplified version of the original
|
||||
* geometry.
|
||||
* @api
|
||||
*/
|
||||
ol.geom.Geometry.prototype.simplify = function(tolerance) {
|
||||
return this.getSimplifiedGeometry(tolerance * tolerance);
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Create a simplified version of this geometry using the Douglas Peucker
|
||||
* algorithm.
|
||||
* @see http://en.wikipedia.org/wiki/Ramer%E2%80%93Douglas%E2%80%93Peucker_algorithm
|
||||
* @see https://en.wikipedia.org/wiki/Ramer-Douglas-Peucker_algorithm
|
||||
* @function
|
||||
* @param {number} squaredTolerance Squared tolerance.
|
||||
* @return {ol.geom.Geometry} Simplified geometry.
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
goog.provide('ol.geom.GeometryCollection');
|
||||
|
||||
goog.require('goog.array');
|
||||
goog.require('goog.events');
|
||||
goog.require('goog.events.EventType');
|
||||
goog.require('goog.object');
|
||||
@@ -27,7 +26,7 @@ ol.geom.GeometryCollection = function(opt_geometries) {
|
||||
* @private
|
||||
* @type {Array.<ol.geom.Geometry>}
|
||||
*/
|
||||
this.geometries_ = goog.isDef(opt_geometries) ? opt_geometries : null;
|
||||
this.geometries_ = opt_geometries ? opt_geometries : null;
|
||||
|
||||
this.listenGeometriesChange_();
|
||||
};
|
||||
@@ -54,7 +53,7 @@ ol.geom.GeometryCollection.cloneGeometries_ = function(geometries) {
|
||||
*/
|
||||
ol.geom.GeometryCollection.prototype.unlistenGeometriesChange_ = function() {
|
||||
var i, ii;
|
||||
if (goog.isNull(this.geometries_)) {
|
||||
if (!this.geometries_) {
|
||||
return;
|
||||
}
|
||||
for (i = 0, ii = this.geometries_.length; i < ii; ++i) {
|
||||
@@ -70,7 +69,7 @@ ol.geom.GeometryCollection.prototype.unlistenGeometriesChange_ = function() {
|
||||
*/
|
||||
ol.geom.GeometryCollection.prototype.listenGeometriesChange_ = function() {
|
||||
var i, ii;
|
||||
if (goog.isNull(this.geometries_)) {
|
||||
if (!this.geometries_) {
|
||||
return;
|
||||
}
|
||||
for (i = 0, ii = this.geometries_.length; i < ii; ++i) {
|
||||
@@ -231,7 +230,7 @@ ol.geom.GeometryCollection.prototype.intersectsExtent = function(extent) {
|
||||
* @return {boolean} Is empty.
|
||||
*/
|
||||
ol.geom.GeometryCollection.prototype.isEmpty = function() {
|
||||
return goog.array.isEmpty(this.geometries_);
|
||||
return this.geometries_.length === 0;
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -132,11 +132,11 @@ ol.geom.LinearRing.prototype.getType = function() {
|
||||
*/
|
||||
ol.geom.LinearRing.prototype.setCoordinates =
|
||||
function(coordinates, opt_layout) {
|
||||
if (goog.isNull(coordinates)) {
|
||||
if (!coordinates) {
|
||||
this.setFlatCoordinates(ol.geom.GeometryLayout.XY, null);
|
||||
} else {
|
||||
this.setLayout(opt_layout, coordinates, 1);
|
||||
if (goog.isNull(this.flatCoordinates)) {
|
||||
if (!this.flatCoordinates) {
|
||||
this.flatCoordinates = [];
|
||||
}
|
||||
this.flatCoordinates.length = ol.geom.flat.deflate.coordinates(
|
||||
|
||||
@@ -2,6 +2,7 @@ goog.provide('ol.geom.LineString');
|
||||
|
||||
goog.require('goog.array');
|
||||
goog.require('goog.asserts');
|
||||
goog.require('ol');
|
||||
goog.require('ol.extent');
|
||||
goog.require('ol.geom.GeometryLayout');
|
||||
goog.require('ol.geom.GeometryType');
|
||||
@@ -69,7 +70,7 @@ goog.inherits(ol.geom.LineString, ol.geom.SimpleGeometry);
|
||||
ol.geom.LineString.prototype.appendCoordinate = function(coordinate) {
|
||||
goog.asserts.assert(coordinate.length == this.stride,
|
||||
'length of coordinate array should match stride');
|
||||
if (goog.isNull(this.flatCoordinates)) {
|
||||
if (!this.flatCoordinates) {
|
||||
this.flatCoordinates = coordinate.slice();
|
||||
} else {
|
||||
goog.array.extend(this.flatCoordinates, coordinate);
|
||||
@@ -148,7 +149,7 @@ ol.geom.LineString.prototype.getCoordinateAtM = function(m, opt_extrapolate) {
|
||||
this.layout != ol.geom.GeometryLayout.XYZM) {
|
||||
return null;
|
||||
}
|
||||
var extrapolate = goog.isDef(opt_extrapolate) ? opt_extrapolate : false;
|
||||
var extrapolate = opt_extrapolate !== undefined ? opt_extrapolate : false;
|
||||
return ol.geom.flat.lineStringCoordinateAtM(this.flatCoordinates, 0,
|
||||
this.flatCoordinates.length, this.stride, m, extrapolate);
|
||||
};
|
||||
@@ -234,11 +235,11 @@ ol.geom.LineString.prototype.intersectsExtent = function(extent) {
|
||||
*/
|
||||
ol.geom.LineString.prototype.setCoordinates =
|
||||
function(coordinates, opt_layout) {
|
||||
if (goog.isNull(coordinates)) {
|
||||
if (!coordinates) {
|
||||
this.setFlatCoordinates(ol.geom.GeometryLayout.XY, null);
|
||||
} else {
|
||||
this.setLayout(opt_layout, coordinates, 1);
|
||||
if (goog.isNull(this.flatCoordinates)) {
|
||||
if (!this.flatCoordinates) {
|
||||
this.flatCoordinates = [];
|
||||
}
|
||||
this.flatCoordinates.length = ol.geom.flat.deflate.coordinates(
|
||||
|
||||
@@ -2,6 +2,7 @@ goog.provide('ol.geom.MultiLineString');
|
||||
|
||||
goog.require('goog.array');
|
||||
goog.require('goog.asserts');
|
||||
goog.require('ol');
|
||||
goog.require('ol.extent');
|
||||
goog.require('ol.geom.GeometryLayout');
|
||||
goog.require('ol.geom.GeometryType');
|
||||
@@ -62,7 +63,7 @@ goog.inherits(ol.geom.MultiLineString, ol.geom.SimpleGeometry);
|
||||
ol.geom.MultiLineString.prototype.appendLineString = function(lineString) {
|
||||
goog.asserts.assert(lineString.getLayout() == this.layout,
|
||||
'layout of lineString should match the layout');
|
||||
if (goog.isNull(this.flatCoordinates)) {
|
||||
if (!this.flatCoordinates) {
|
||||
this.flatCoordinates = lineString.getFlatCoordinates().slice();
|
||||
} else {
|
||||
goog.array.extend(
|
||||
@@ -135,8 +136,8 @@ ol.geom.MultiLineString.prototype.getCoordinateAtM =
|
||||
this.flatCoordinates.length === 0) {
|
||||
return null;
|
||||
}
|
||||
var extrapolate = goog.isDef(opt_extrapolate) ? opt_extrapolate : false;
|
||||
var interpolate = goog.isDef(opt_interpolate) ? opt_interpolate : false;
|
||||
var extrapolate = opt_extrapolate !== undefined ? opt_extrapolate : false;
|
||||
var interpolate = opt_interpolate !== undefined ? opt_interpolate : false;
|
||||
return ol.geom.flat.lineStringsCoordinateAtM(this.flatCoordinates, 0,
|
||||
this.ends_, this.stride, m, extrapolate, interpolate);
|
||||
};
|
||||
@@ -269,11 +270,11 @@ ol.geom.MultiLineString.prototype.intersectsExtent = function(extent) {
|
||||
*/
|
||||
ol.geom.MultiLineString.prototype.setCoordinates =
|
||||
function(coordinates, opt_layout) {
|
||||
if (goog.isNull(coordinates)) {
|
||||
if (!coordinates) {
|
||||
this.setFlatCoordinates(ol.geom.GeometryLayout.XY, null, this.ends_);
|
||||
} else {
|
||||
this.setLayout(opt_layout, coordinates, 2);
|
||||
if (goog.isNull(this.flatCoordinates)) {
|
||||
if (!this.flatCoordinates) {
|
||||
this.flatCoordinates = [];
|
||||
}
|
||||
var ends = ol.geom.flat.deflate.coordinatess(
|
||||
@@ -291,9 +292,9 @@ ol.geom.MultiLineString.prototype.setCoordinates =
|
||||
*/
|
||||
ol.geom.MultiLineString.prototype.setFlatCoordinates =
|
||||
function(layout, flatCoordinates, ends) {
|
||||
if (goog.isNull(flatCoordinates)) {
|
||||
goog.asserts.assert(!goog.isNull(ends) && ends.length === 0,
|
||||
'ends cannot be null and ends.length should be 0');
|
||||
if (!flatCoordinates) {
|
||||
goog.asserts.assert(ends && ends.length === 0,
|
||||
'ends must be truthy and ends.length should be 0');
|
||||
} else if (ends.length === 0) {
|
||||
goog.asserts.assert(flatCoordinates.length === 0,
|
||||
'flatCoordinates should be an empty array');
|
||||
@@ -311,7 +312,7 @@ ol.geom.MultiLineString.prototype.setFlatCoordinates =
|
||||
* @param {Array.<ol.geom.LineString>} lineStrings LineStrings.
|
||||
*/
|
||||
ol.geom.MultiLineString.prototype.setLineStrings = function(lineStrings) {
|
||||
var layout = ol.geom.GeometryLayout.XY;
|
||||
var layout = this.getLayout();
|
||||
var flatCoordinates = [];
|
||||
var ends = [];
|
||||
var i, ii;
|
||||
|
||||
@@ -38,7 +38,7 @@ goog.inherits(ol.geom.MultiPoint, ol.geom.SimpleGeometry);
|
||||
ol.geom.MultiPoint.prototype.appendPoint = function(point) {
|
||||
goog.asserts.assert(point.getLayout() == this.layout,
|
||||
'the layout of point should match layout');
|
||||
if (goog.isNull(this.flatCoordinates)) {
|
||||
if (!this.flatCoordinates) {
|
||||
this.flatCoordinates = point.getFlatCoordinates().slice();
|
||||
} else {
|
||||
goog.array.extend(this.flatCoordinates, point.getFlatCoordinates());
|
||||
@@ -104,7 +104,7 @@ ol.geom.MultiPoint.prototype.getCoordinates = function() {
|
||||
* @api stable
|
||||
*/
|
||||
ol.geom.MultiPoint.prototype.getPoint = function(index) {
|
||||
var n = goog.isNull(this.flatCoordinates) ?
|
||||
var n = !this.flatCoordinates ?
|
||||
0 : this.flatCoordinates.length / this.stride;
|
||||
goog.asserts.assert(0 <= index && index < n,
|
||||
'index should be in between 0 and n');
|
||||
@@ -175,11 +175,11 @@ ol.geom.MultiPoint.prototype.intersectsExtent = function(extent) {
|
||||
*/
|
||||
ol.geom.MultiPoint.prototype.setCoordinates =
|
||||
function(coordinates, opt_layout) {
|
||||
if (goog.isNull(coordinates)) {
|
||||
if (!coordinates) {
|
||||
this.setFlatCoordinates(ol.geom.GeometryLayout.XY, null);
|
||||
} else {
|
||||
this.setLayout(opt_layout, coordinates, 1);
|
||||
if (goog.isNull(this.flatCoordinates)) {
|
||||
if (!this.flatCoordinates) {
|
||||
this.flatCoordinates = [];
|
||||
}
|
||||
this.flatCoordinates.length = ol.geom.flat.deflate.coordinates(
|
||||
|
||||
@@ -3,6 +3,7 @@ goog.provide('ol.geom.MultiPolygon');
|
||||
goog.require('goog.array');
|
||||
goog.require('goog.asserts');
|
||||
goog.require('goog.object');
|
||||
goog.require('ol');
|
||||
goog.require('ol.extent');
|
||||
goog.require('ol.geom.GeometryLayout');
|
||||
goog.require('ol.geom.GeometryType');
|
||||
@@ -94,7 +95,7 @@ ol.geom.MultiPolygon.prototype.appendPolygon = function(polygon) {
|
||||
'layout of polygon should match layout');
|
||||
/** @type {Array.<number>} */
|
||||
var ends;
|
||||
if (goog.isNull(this.flatCoordinates)) {
|
||||
if (!this.flatCoordinates) {
|
||||
this.flatCoordinates = polygon.getFlatCoordinates().slice();
|
||||
ends = polygon.getEnds().slice();
|
||||
this.endss_.push();
|
||||
@@ -182,7 +183,7 @@ ol.geom.MultiPolygon.prototype.getArea = function() {
|
||||
*/
|
||||
ol.geom.MultiPolygon.prototype.getCoordinates = function(opt_right) {
|
||||
var flatCoordinates;
|
||||
if (goog.isDef(opt_right)) {
|
||||
if (opt_right !== undefined) {
|
||||
flatCoordinates = this.getOrientedFlatCoordinates().slice();
|
||||
ol.geom.flat.orient.orientLinearRingss(
|
||||
flatCoordinates, 0, this.endss_, this.stride, opt_right);
|
||||
@@ -362,11 +363,11 @@ ol.geom.MultiPolygon.prototype.intersectsExtent = function(extent) {
|
||||
*/
|
||||
ol.geom.MultiPolygon.prototype.setCoordinates =
|
||||
function(coordinates, opt_layout) {
|
||||
if (goog.isNull(coordinates)) {
|
||||
if (!coordinates) {
|
||||
this.setFlatCoordinates(ol.geom.GeometryLayout.XY, null, this.endss_);
|
||||
} else {
|
||||
this.setLayout(opt_layout, coordinates, 3);
|
||||
if (goog.isNull(this.flatCoordinates)) {
|
||||
if (!this.flatCoordinates) {
|
||||
this.flatCoordinates = [];
|
||||
}
|
||||
var endss = ol.geom.flat.deflate.coordinatesss(
|
||||
@@ -390,8 +391,8 @@ ol.geom.MultiPolygon.prototype.setCoordinates =
|
||||
*/
|
||||
ol.geom.MultiPolygon.prototype.setFlatCoordinates =
|
||||
function(layout, flatCoordinates, endss) {
|
||||
goog.asserts.assert(!goog.isNull(endss), 'endss cannot be null');
|
||||
if (goog.isNull(flatCoordinates) || flatCoordinates.length === 0) {
|
||||
goog.asserts.assert(endss, 'endss must be truthy');
|
||||
if (!flatCoordinates || flatCoordinates.length === 0) {
|
||||
goog.asserts.assert(endss.length === 0, 'the length of endss should be 0');
|
||||
} else {
|
||||
goog.asserts.assert(endss.length > 0, 'endss cannot be an empty array');
|
||||
@@ -409,7 +410,7 @@ ol.geom.MultiPolygon.prototype.setFlatCoordinates =
|
||||
* @param {Array.<ol.geom.Polygon>} polygons Polygons.
|
||||
*/
|
||||
ol.geom.MultiPolygon.prototype.setPolygons = function(polygons) {
|
||||
var layout = ol.geom.GeometryLayout.XY;
|
||||
var layout = this.getLayout();
|
||||
var flatCoordinates = [];
|
||||
var endss = [];
|
||||
var i, ii, ends;
|
||||
|
||||
@@ -66,7 +66,7 @@ ol.geom.Point.prototype.closestPointXY =
|
||||
* @api stable
|
||||
*/
|
||||
ol.geom.Point.prototype.getCoordinates = function() {
|
||||
return goog.isNull(this.flatCoordinates) ? [] : this.flatCoordinates.slice();
|
||||
return !this.flatCoordinates ? [] : this.flatCoordinates.slice();
|
||||
};
|
||||
|
||||
|
||||
@@ -104,11 +104,11 @@ ol.geom.Point.prototype.intersectsExtent = function(extent) {
|
||||
* @api stable
|
||||
*/
|
||||
ol.geom.Point.prototype.setCoordinates = function(coordinates, opt_layout) {
|
||||
if (goog.isNull(coordinates)) {
|
||||
if (!coordinates) {
|
||||
this.setFlatCoordinates(ol.geom.GeometryLayout.XY, null);
|
||||
} else {
|
||||
this.setLayout(opt_layout, coordinates, 0);
|
||||
if (goog.isNull(this.flatCoordinates)) {
|
||||
if (!this.flatCoordinates) {
|
||||
this.flatCoordinates = [];
|
||||
}
|
||||
this.flatCoordinates.length = ol.geom.flat.deflate.coordinate(
|
||||
|
||||
@@ -3,6 +3,7 @@ goog.provide('ol.geom.Polygon');
|
||||
goog.require('goog.array');
|
||||
goog.require('goog.asserts');
|
||||
goog.require('goog.math');
|
||||
goog.require('ol');
|
||||
goog.require('ol.extent');
|
||||
goog.require('ol.geom.GeometryLayout');
|
||||
goog.require('ol.geom.GeometryType');
|
||||
@@ -91,7 +92,7 @@ goog.inherits(ol.geom.Polygon, ol.geom.SimpleGeometry);
|
||||
ol.geom.Polygon.prototype.appendLinearRing = function(linearRing) {
|
||||
goog.asserts.assert(linearRing.getLayout() == this.layout,
|
||||
'layout of linearRing should match layout');
|
||||
if (goog.isNull(this.flatCoordinates)) {
|
||||
if (!this.flatCoordinates) {
|
||||
this.flatCoordinates = linearRing.getFlatCoordinates().slice();
|
||||
} else {
|
||||
goog.array.extend(this.flatCoordinates, linearRing.getFlatCoordinates());
|
||||
@@ -169,7 +170,7 @@ ol.geom.Polygon.prototype.getArea = function() {
|
||||
*/
|
||||
ol.geom.Polygon.prototype.getCoordinates = function(opt_right) {
|
||||
var flatCoordinates;
|
||||
if (goog.isDef(opt_right)) {
|
||||
if (opt_right !== undefined) {
|
||||
flatCoordinates = this.getOrientedFlatCoordinates().slice();
|
||||
ol.geom.flat.orient.orientLinearRings(
|
||||
flatCoordinates, 0, this.ends_, this.stride, opt_right);
|
||||
@@ -338,11 +339,11 @@ ol.geom.Polygon.prototype.intersectsExtent = function(extent) {
|
||||
* @api stable
|
||||
*/
|
||||
ol.geom.Polygon.prototype.setCoordinates = function(coordinates, opt_layout) {
|
||||
if (goog.isNull(coordinates)) {
|
||||
if (!coordinates) {
|
||||
this.setFlatCoordinates(ol.geom.GeometryLayout.XY, null, this.ends_);
|
||||
} else {
|
||||
this.setLayout(opt_layout, coordinates, 2);
|
||||
if (goog.isNull(this.flatCoordinates)) {
|
||||
if (!this.flatCoordinates) {
|
||||
this.flatCoordinates = [];
|
||||
}
|
||||
var ends = ol.geom.flat.deflate.coordinatess(
|
||||
@@ -360,9 +361,9 @@ ol.geom.Polygon.prototype.setCoordinates = function(coordinates, opt_layout) {
|
||||
*/
|
||||
ol.geom.Polygon.prototype.setFlatCoordinates =
|
||||
function(layout, flatCoordinates, ends) {
|
||||
if (goog.isNull(flatCoordinates)) {
|
||||
goog.asserts.assert(!goog.isNull(ends) && ends.length === 0,
|
||||
'ends cannot be null and should be an empty array');
|
||||
if (!flatCoordinates) {
|
||||
goog.asserts.assert(ends && ends.length === 0,
|
||||
'ends must be an empty array');
|
||||
} else if (ends.length === 0) {
|
||||
goog.asserts.assert(flatCoordinates.length === 0,
|
||||
'flatCoordinates should be an empty array');
|
||||
@@ -388,7 +389,7 @@ ol.geom.Polygon.prototype.setFlatCoordinates =
|
||||
* @api stable
|
||||
*/
|
||||
ol.geom.Polygon.circular = function(sphere, center, radius, opt_n) {
|
||||
var n = goog.isDef(opt_n) ? opt_n : 32;
|
||||
var n = opt_n ? opt_n : 32;
|
||||
/** @type {Array.<number>} */
|
||||
var flatCoordinates = [];
|
||||
var i;
|
||||
@@ -434,7 +435,7 @@ ol.geom.Polygon.fromExtent = function(extent) {
|
||||
* @api
|
||||
*/
|
||||
ol.geom.Polygon.fromCircle = function(circle, opt_sides, opt_angle) {
|
||||
var sides = goog.isDef(opt_sides) ? opt_sides : 32;
|
||||
var sides = opt_sides ? opt_sides : 32;
|
||||
var stride = circle.getStride();
|
||||
var layout = circle.getLayout();
|
||||
var polygon = new ol.geom.Polygon(null, layout);
|
||||
@@ -462,8 +463,8 @@ ol.geom.Polygon.makeRegular = function(polygon, center, radius, opt_angle) {
|
||||
var ends = polygon.getEnds();
|
||||
goog.asserts.assert(ends.length === 1, 'only 1 ring is supported');
|
||||
var sides = flatCoordinates.length / stride - 1;
|
||||
var startAngle = goog.isDef(opt_angle) ? opt_angle : 0;
|
||||
var angle, coord, offset;
|
||||
var startAngle = opt_angle ? opt_angle : 0;
|
||||
var angle, offset;
|
||||
for (var i = 0; i <= sides; ++i) {
|
||||
offset = i * stride;
|
||||
angle = startAngle + (goog.math.modulo(i, sides) * 2 * Math.PI / sides);
|
||||
|
||||
@@ -232,7 +232,7 @@ ol.geom.SimpleGeometry.prototype.setLayout =
|
||||
function(layout, coordinates, nesting) {
|
||||
/** @type {number} */
|
||||
var stride;
|
||||
if (goog.isDef(layout)) {
|
||||
if (layout) {
|
||||
stride = ol.geom.SimpleGeometry.getStrideForLayout(layout);
|
||||
} else {
|
||||
var i;
|
||||
@@ -258,7 +258,7 @@ ol.geom.SimpleGeometry.prototype.setLayout =
|
||||
* @api stable
|
||||
*/
|
||||
ol.geom.SimpleGeometry.prototype.applyTransform = function(transformFn) {
|
||||
if (!goog.isNull(this.flatCoordinates)) {
|
||||
if (this.flatCoordinates) {
|
||||
transformFn(this.flatCoordinates, this.flatCoordinates, this.stride);
|
||||
this.changed();
|
||||
}
|
||||
@@ -271,7 +271,7 @@ ol.geom.SimpleGeometry.prototype.applyTransform = function(transformFn) {
|
||||
*/
|
||||
ol.geom.SimpleGeometry.prototype.translate = function(deltaX, deltaY) {
|
||||
var flatCoordinates = this.getFlatCoordinates();
|
||||
if (!goog.isNull(flatCoordinates)) {
|
||||
if (flatCoordinates) {
|
||||
var stride = this.getStride();
|
||||
ol.geom.flat.transform.translate(
|
||||
flatCoordinates, 0, flatCoordinates.length, stride,
|
||||
@@ -290,7 +290,7 @@ ol.geom.SimpleGeometry.prototype.translate = function(deltaX, deltaY) {
|
||||
ol.geom.transformSimpleGeometry2D =
|
||||
function(simpleGeometry, transform, opt_dest) {
|
||||
var flatCoordinates = simpleGeometry.getFlatCoordinates();
|
||||
if (goog.isNull(flatCoordinates)) {
|
||||
if (!flatCoordinates) {
|
||||
return null;
|
||||
} else {
|
||||
var stride = simpleGeometry.getStride();
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
goog.provide('ol.Graticule');
|
||||
|
||||
goog.require('goog.asserts');
|
||||
goog.require('goog.math');
|
||||
goog.require('ol.extent');
|
||||
goog.require('ol.geom.GeometryLayout');
|
||||
goog.require('ol.geom.LineString');
|
||||
goog.require('ol.geom.flat.geodesic');
|
||||
goog.require('ol.math');
|
||||
goog.require('ol.proj');
|
||||
goog.require('ol.render.EventType');
|
||||
goog.require('ol.style.Stroke');
|
||||
@@ -20,7 +20,7 @@ goog.require('ol.style.Stroke');
|
||||
*/
|
||||
ol.Graticule = function(opt_options) {
|
||||
|
||||
var options = goog.isDef(opt_options) ? opt_options : {};
|
||||
var options = opt_options || {};
|
||||
|
||||
/**
|
||||
* @type {ol.Map}
|
||||
@@ -86,14 +86,14 @@ ol.Graticule = function(opt_options) {
|
||||
* @type {number}
|
||||
* @private
|
||||
*/
|
||||
this.targetSize_ = goog.isDef(options.targetSize) ?
|
||||
this.targetSize_ = options.targetSize !== undefined ?
|
||||
options.targetSize : 100;
|
||||
|
||||
/**
|
||||
* @type {number}
|
||||
* @private
|
||||
*/
|
||||
this.maxLines_ = goog.isDef(options.maxLines) ? options.maxLines : 100;
|
||||
this.maxLines_ = options.maxLines !== undefined ? options.maxLines : 100;
|
||||
goog.asserts.assert(this.maxLines_ > 0,
|
||||
'this.maxLines_ should be more than 0');
|
||||
|
||||
@@ -113,7 +113,7 @@ ol.Graticule = function(opt_options) {
|
||||
* @type {ol.style.Stroke}
|
||||
* @private
|
||||
*/
|
||||
this.strokeStyle_ = goog.isDef(options.strokeStyle) ?
|
||||
this.strokeStyle_ = options.strokeStyle !== undefined ?
|
||||
options.strokeStyle : ol.Graticule.DEFAULT_STROKE_STYLE_;
|
||||
|
||||
/**
|
||||
@@ -134,7 +134,7 @@ ol.Graticule = function(opt_options) {
|
||||
*/
|
||||
this.projectionCenterLonLat_ = null;
|
||||
|
||||
this.setMap(goog.isDef(options.map) ? options.map : null);
|
||||
this.setMap(options.map !== undefined ? options.map : null);
|
||||
};
|
||||
|
||||
|
||||
@@ -238,7 +238,7 @@ ol.Graticule.prototype.createGraticule_ =
|
||||
// Create meridians
|
||||
|
||||
centerLon = Math.floor(centerLon / interval) * interval;
|
||||
lon = goog.math.clamp(centerLon, this.minLon_, this.maxLon_);
|
||||
lon = ol.math.clamp(centerLon, this.minLon_, this.maxLon_);
|
||||
|
||||
idx = this.addMeridian_(lon, minLat, maxLat, squaredTolerance, extent, 0);
|
||||
|
||||
@@ -248,7 +248,7 @@ ol.Graticule.prototype.createGraticule_ =
|
||||
idx = this.addMeridian_(lon, minLat, maxLat, squaredTolerance, extent, idx);
|
||||
}
|
||||
|
||||
lon = goog.math.clamp(centerLon, this.minLon_, this.maxLon_);
|
||||
lon = ol.math.clamp(centerLon, this.minLon_, this.maxLon_);
|
||||
|
||||
cnt = 0;
|
||||
while (lon != this.maxLon_ && cnt++ < maxLines) {
|
||||
@@ -261,7 +261,7 @@ ol.Graticule.prototype.createGraticule_ =
|
||||
// Create parallels
|
||||
|
||||
centerLat = Math.floor(centerLat / interval) * interval;
|
||||
lat = goog.math.clamp(centerLat, this.minLat_, this.maxLat_);
|
||||
lat = ol.math.clamp(centerLat, this.minLat_, this.maxLat_);
|
||||
|
||||
idx = this.addParallel_(lat, minLon, maxLon, squaredTolerance, extent, 0);
|
||||
|
||||
@@ -271,7 +271,7 @@ ol.Graticule.prototype.createGraticule_ =
|
||||
idx = this.addParallel_(lat, minLon, maxLon, squaredTolerance, extent, idx);
|
||||
}
|
||||
|
||||
lat = goog.math.clamp(centerLat, this.minLat_, this.maxLat_);
|
||||
lat = ol.math.clamp(centerLat, this.minLat_, this.maxLat_);
|
||||
|
||||
cnt = 0;
|
||||
while (lat != this.maxLat_ && cnt++ < maxLines) {
|
||||
@@ -346,7 +346,7 @@ ol.Graticule.prototype.getMeridian_ = function(lon, minLat, maxLat,
|
||||
minLat, maxLat, this.projection_, squaredTolerance);
|
||||
goog.asserts.assert(flatCoordinates.length > 0,
|
||||
'flatCoordinates cannot be empty');
|
||||
var lineString = goog.isDef(this.meridians_[index]) ?
|
||||
var lineString = this.meridians_[index] !== undefined ?
|
||||
this.meridians_[index] : new ol.geom.LineString(null);
|
||||
lineString.setFlatCoordinates(ol.geom.GeometryLayout.XY, flatCoordinates);
|
||||
return lineString;
|
||||
@@ -382,7 +382,7 @@ ol.Graticule.prototype.getParallel_ = function(lat, minLon, maxLon,
|
||||
this.minLon_, this.maxLon_, this.projection_, squaredTolerance);
|
||||
goog.asserts.assert(flatCoordinates.length > 0,
|
||||
'flatCoordinates cannot be empty');
|
||||
var lineString = goog.isDef(this.parallels_[index]) ?
|
||||
var lineString = this.parallels_[index] !== undefined ?
|
||||
this.parallels_[index] : new ol.geom.LineString(null);
|
||||
lineString.setFlatCoordinates(ol.geom.GeometryLayout.XY, flatCoordinates);
|
||||
return lineString;
|
||||
@@ -415,13 +415,30 @@ ol.Graticule.prototype.handlePostCompose_ = function(e) {
|
||||
var squaredTolerance =
|
||||
resolution * resolution / (4 * pixelRatio * pixelRatio);
|
||||
|
||||
var updateProjectionInfo = goog.isNull(this.projection_) ||
|
||||
var updateProjectionInfo = !this.projection_ ||
|
||||
!ol.proj.equivalent(this.projection_, projection);
|
||||
|
||||
if (updateProjectionInfo) {
|
||||
this.updateProjectionInfo_(projection);
|
||||
}
|
||||
|
||||
//Fix the extent if wrapped.
|
||||
//(note: this is the same extent as vectorContext.extent_)
|
||||
var offsetX = 0;
|
||||
if (projection.canWrapX()) {
|
||||
var projectionExtent = projection.getExtent();
|
||||
var worldWidth = ol.extent.getWidth(projectionExtent);
|
||||
var x = frameState.focus[0];
|
||||
if (x < projectionExtent[0] || x > projectionExtent[2]) {
|
||||
var worldsAway = Math.ceil((projectionExtent[0] - x) / worldWidth);
|
||||
offsetX = worldWidth * worldsAway;
|
||||
extent = [
|
||||
extent[0] + offsetX, extent[1],
|
||||
extent[2] + offsetX, extent[3]
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
this.createGraticule_(extent, center, resolution, squaredTolerance);
|
||||
|
||||
// Draw the lines
|
||||
@@ -443,7 +460,7 @@ ol.Graticule.prototype.handlePostCompose_ = function(e) {
|
||||
* @private
|
||||
*/
|
||||
ol.Graticule.prototype.updateProjectionInfo_ = function(projection) {
|
||||
goog.asserts.assert(!goog.isNull(projection), 'projection cannot be null');
|
||||
goog.asserts.assert(projection, 'projection cannot be null');
|
||||
|
||||
var epsg4326Projection = ol.proj.get('EPSG:4326');
|
||||
|
||||
@@ -462,19 +479,19 @@ ol.Graticule.prototype.updateProjectionInfo_ = function(projection) {
|
||||
var minLatP = worldExtentP[1];
|
||||
var minLonP = worldExtentP[0];
|
||||
|
||||
goog.asserts.assert(!goog.isNull(extent), 'extent cannot be null');
|
||||
goog.asserts.assert(goog.isDef(maxLat), 'maxLat should be defined');
|
||||
goog.asserts.assert(goog.isDef(maxLon), 'maxLon should be defined');
|
||||
goog.asserts.assert(goog.isDef(minLat), 'minLat should be defined');
|
||||
goog.asserts.assert(goog.isDef(minLon), 'minLon should be defined');
|
||||
goog.asserts.assert(extent, 'extent cannot be null');
|
||||
goog.asserts.assert(maxLat !== undefined, 'maxLat should be defined');
|
||||
goog.asserts.assert(maxLon !== undefined, 'maxLon should be defined');
|
||||
goog.asserts.assert(minLat !== undefined, 'minLat should be defined');
|
||||
goog.asserts.assert(minLon !== undefined, 'minLon should be defined');
|
||||
|
||||
goog.asserts.assert(goog.isDef(maxLatP),
|
||||
goog.asserts.assert(maxLatP !== undefined,
|
||||
'projected maxLat should be defined');
|
||||
goog.asserts.assert(goog.isDef(maxLonP),
|
||||
goog.asserts.assert(maxLonP !== undefined,
|
||||
'projected maxLon should be defined');
|
||||
goog.asserts.assert(goog.isDef(minLatP),
|
||||
goog.asserts.assert(minLatP !== undefined,
|
||||
'projected minLat should be defined');
|
||||
goog.asserts.assert(goog.isDef(minLonP),
|
||||
goog.asserts.assert(minLonP !== undefined,
|
||||
'projected minLon should be defined');
|
||||
|
||||
this.maxLat_ = maxLat;
|
||||
@@ -508,12 +525,12 @@ ol.Graticule.prototype.updateProjectionInfo_ = function(projection) {
|
||||
* @api
|
||||
*/
|
||||
ol.Graticule.prototype.setMap = function(map) {
|
||||
if (!goog.isNull(this.map_)) {
|
||||
if (this.map_) {
|
||||
this.map_.un(ol.render.EventType.POSTCOMPOSE,
|
||||
this.handlePostCompose_, this);
|
||||
this.map_.render();
|
||||
}
|
||||
if (!goog.isNull(map)) {
|
||||
if (map) {
|
||||
map.on(ol.render.EventType.POSTCOMPOSE,
|
||||
this.handlePostCompose_, this);
|
||||
map.render();
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user