Compare commits
206 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
dedf0a5d63 | ||
|
|
41bb512952 | ||
|
|
a1da682722 | ||
|
|
6da7cf3f84 | ||
|
|
216be8a673 | ||
|
|
411419e45f | ||
|
|
6617bdd57f | ||
|
|
6838fdd4c9 | ||
|
|
085c2d7e33 | ||
|
|
6c854ed056 | ||
|
|
d0b87ecd63 | ||
|
|
0469a31ea9 | ||
|
|
31f2e334cf | ||
|
|
b7f199c8cd | ||
|
|
d3a4fd115b | ||
|
|
0fec4c5ff7 | ||
|
|
d0722cab6a | ||
|
|
f02ad3e584 | ||
|
|
bb5b711dac | ||
|
|
7c2fffed68 | ||
|
|
989adabb1f | ||
|
|
1e78c45466 | ||
|
|
9b738b6cb6 | ||
|
|
4aa2369244 | ||
|
|
d702aad450 | ||
|
|
d41bb2663b | ||
|
|
07b1f5ea45 | ||
|
|
bf35b32a20 | ||
|
|
dba6e04a1b | ||
|
|
cb9054f7fd | ||
|
|
ad56dea388 | ||
|
|
529f869803 | ||
|
|
5371d8dd34 | ||
|
|
fc51ab05f4 | ||
|
|
053538cc42 | ||
|
|
8311f090de | ||
|
|
a09c07a427 | ||
|
|
eed926fa94 | ||
|
|
fe153b94fb | ||
|
|
fce931afbe | ||
|
|
d036602cec | ||
|
|
1a240ccf9d | ||
|
|
91f47a876c | ||
|
|
9f5d8d3901 | ||
|
|
0bfd22b235 | ||
|
|
965a27b115 | ||
|
|
47fbbf6ce2 | ||
|
|
cc6e0f1b3c | ||
|
|
0001e0989b | ||
|
|
6d87fffb73 | ||
|
|
5760e427d2 | ||
|
|
c4d4962806 | ||
|
|
250cb35f8e | ||
|
|
2b995fd8cf | ||
|
|
fd4eff7292 | ||
|
|
6f40544732 | ||
|
|
4e58ebd360 | ||
|
|
43f72031f9 | ||
|
|
3811228ac7 | ||
|
|
c57f5e5f0a | ||
|
|
0d32a49244 | ||
|
|
6a0fa114da | ||
|
|
7b805ead9e | ||
|
|
95030cd838 | ||
|
|
e568eb3ccf | ||
|
|
813afe1e3f | ||
|
|
8b6ab65ca7 | ||
|
|
f5df71ba70 | ||
|
|
1553dce3dc | ||
|
|
055df25c58 | ||
|
|
4dddf4c3d9 | ||
|
|
4d5cf372b0 | ||
|
|
34f65a8908 | ||
|
|
b4dec522f1 | ||
|
|
af553366d4 | ||
|
|
66524a8075 | ||
|
|
33229597c8 | ||
|
|
e41ba12445 | ||
|
|
31a074daf5 | ||
|
|
4045e06aa9 | ||
|
|
61fe8a8418 | ||
|
|
954c1c313e | ||
|
|
c1575e810b | ||
|
|
16d687205d | ||
|
|
15ef7eec85 | ||
|
|
db68c09e4d | ||
|
|
9d07300e71 | ||
|
|
ffc24e892e | ||
|
|
49b8f90e66 | ||
|
|
eb4dab90e5 | ||
|
|
7b9828a7a7 | ||
|
|
727586ecb9 | ||
|
|
b3860a8fd5 | ||
|
|
e189667d20 | ||
|
|
fe69c0e354 | ||
|
|
1c549b4df3 | ||
|
|
931100e030 | ||
|
|
6c13de715e | ||
|
|
37cdbcc72f | ||
|
|
da5bf46dbf | ||
|
|
2c8e5600ce | ||
|
|
0194c8e3c2 | ||
|
|
980dbc121a | ||
|
|
d09506f5b1 | ||
|
|
13a9d2f6af | ||
|
|
d91f5ecc48 | ||
|
|
b180149100 | ||
|
|
6bbc411521 | ||
|
|
0ba7856d49 | ||
|
|
90ec289c89 | ||
|
|
b724ce6c0d | ||
|
|
9cccbd0712 | ||
|
|
3852be0d7e | ||
|
|
daa4781072 | ||
|
|
8ec2bcef17 | ||
|
|
c74277cae8 | ||
|
|
bc1328528a | ||
|
|
ff01bba55a | ||
|
|
8329da8d1c | ||
|
|
5865d5bc55 | ||
|
|
6d7f51f111 | ||
|
|
da4b863ad8 | ||
|
|
2d92791b17 | ||
|
|
4c615d8ddf | ||
|
|
c14d64b4e7 | ||
|
|
c2f4b38981 | ||
|
|
b1973fcdf4 | ||
|
|
6260c4d744 | ||
|
|
5029b5dc97 | ||
|
|
7505460d65 | ||
|
|
e211c908f8 | ||
|
|
87a1031de5 | ||
|
|
fef0088bf9 | ||
|
|
8a4bdd4046 | ||
|
|
da4d5caea8 | ||
|
|
2aa7812fc5 | ||
|
|
fdba4fc381 | ||
|
|
8730fc8824 | ||
|
|
35d26f1280 | ||
|
|
7e7494d5c7 | ||
|
|
a8797ae1ff | ||
|
|
a6c49dabcf | ||
|
|
296564a4ce | ||
|
|
5f7e6ac61a | ||
|
|
33da0e7b66 | ||
|
|
d042b4c277 | ||
|
|
338d0570fd | ||
|
|
cafbb82c41 | ||
|
|
de0266ded7 | ||
|
|
e703a58c5d | ||
|
|
fefc39147c | ||
|
|
d204d7764a | ||
|
|
92655b2d20 | ||
|
|
204f8f9813 | ||
|
|
b0dd3782a8 | ||
|
|
2ae22a934d | ||
|
|
594eb7fe95 | ||
|
|
c60b80b566 | ||
|
|
0578e8f2f6 | ||
|
|
daf85c75c7 | ||
|
|
b94a4832f7 | ||
|
|
ab24d9043e | ||
|
|
6dc7f2cfec | ||
|
|
5b80da7f6e | ||
|
|
0691d1d74e | ||
|
|
ade361479a | ||
|
|
0c06a429fb | ||
|
|
4233061dda | ||
|
|
7e579f1ec0 | ||
|
|
0e538b29c0 | ||
|
|
23f29ab65a | ||
|
|
464ce13b13 | ||
|
|
861e1515d4 | ||
|
|
2bd0fdf07b | ||
|
|
1921e009e6 | ||
|
|
b0584acaa5 | ||
|
|
eb8be03792 | ||
|
|
e57919e55b | ||
|
|
b01fa94ecd | ||
|
|
47b53ded6d | ||
|
|
3c8aeb7287 | ||
|
|
7b899fa767 | ||
|
|
73d4ba2a51 | ||
|
|
a673c39251 | ||
|
|
a1946a6e69 | ||
|
|
f695cb012a | ||
|
|
317a27d6f3 | ||
|
|
eb2a30e461 | ||
|
|
e49ce543a4 | ||
|
|
575fff6737 | ||
|
|
b3f14f09c4 | ||
|
|
6812de6a77 | ||
|
|
0ec70256d6 | ||
|
|
23ae91cfd5 | ||
|
|
999880f350 | ||
|
|
85815a32a0 | ||
|
|
0a6745f1e4 | ||
|
|
08c01de6b0 | ||
|
|
ad2b4a3863 | ||
|
|
91d6844ecd | ||
|
|
89b62cd53b | ||
|
|
b66a114873 | ||
|
|
64ab764827 | ||
|
|
314b04df7a | ||
|
|
29b1f0d55d | ||
|
|
ae1221d811 |
@@ -10,8 +10,6 @@ insert_final_newline = true
|
||||
|
||||
[*.md]
|
||||
indent_size = 2
|
||||
|
||||
[*.md]
|
||||
trim_trailing_whitespace = false
|
||||
|
||||
[Makefile]
|
||||
|
||||
@@ -7,7 +7,6 @@ env:
|
||||
- DISPLAY=:99.0
|
||||
|
||||
before_install:
|
||||
- "pip install -r requirements.txt"
|
||||
- "npm install -g npm && npm install"
|
||||
|
||||
before_script:
|
||||
@@ -19,3 +18,7 @@ script: "make ci"
|
||||
after_success:
|
||||
- "make test-coverage"
|
||||
- "cat coverage/lcov.info | ./node_modules/.bin/coveralls"
|
||||
|
||||
branches:
|
||||
only:
|
||||
- master
|
||||
|
||||
10
Makefile
10
Makefile
@@ -171,7 +171,7 @@ host-libraries: build/timestamps/node-modules-timestamp
|
||||
@mkdir -p $(BUILD_HOSTED)/ol.ext
|
||||
@cp -r build/ol.ext/* $(BUILD_HOSTED)/ol.ext/
|
||||
|
||||
$(BUILD_EXAMPLES): $(EXAMPLES)
|
||||
$(BUILD_EXAMPLES): $(EXAMPLES) package.json
|
||||
@mkdir -p $(@D)
|
||||
@node tasks/build-examples.js
|
||||
|
||||
@@ -188,13 +188,13 @@ build/timestamps/check-%-timestamp: $(BUILD_HOSTED)/examples/%.html \
|
||||
|
||||
build/timestamps/check-requires-timestamp: $(SRC_JS) $(EXAMPLES_JS) \
|
||||
$(SRC_SHADER_JS) $(SPEC_JS) \
|
||||
$(SPEC_RENDERING JS)
|
||||
$(SPEC_RENDERING_JS)
|
||||
@mkdir -p $(@D)
|
||||
@python bin/check-requires.py $(CLOSURE_LIB) $^
|
||||
@touch $@
|
||||
|
||||
build/timestamps/check-whitespace-timestamp: $(SRC_JS) $(EXAMPLES_JS) \
|
||||
$(SPEC_JS) $(SPEC_RENDERING JS) \
|
||||
$(SPEC_JS) $(SPEC_RENDERING_JS) \
|
||||
$(SRC_JSDOC)
|
||||
@mkdir -p $(@D)
|
||||
@python bin/check-whitespace.py $^
|
||||
@@ -323,5 +323,5 @@ build/test_rendering_requires.js: $(SPEC_RENDERING_JS)
|
||||
@mkdir -p $(@D)
|
||||
@node tasks/generate-requires.js $^ > $@
|
||||
|
||||
%shader.js: %.glsl src/ol/webgl/shader.mustache bin/pyglslunit.py
|
||||
@python bin/pyglslunit.py --input $< --template src/ol/webgl/shader.mustache --output $@
|
||||
%shader.js: %.glsl src/ol/webgl/shader.mustache bin/pyglslunit.py build/timestamps/node-modules-timestamp
|
||||
@python bin/pyglslunit.py --input $< | ./node_modules/.bin/mustache - src/ol/webgl/shader.mustache > $@
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
|
||||
## Documentation
|
||||
|
||||
Check out the [hosted examples](http://openlayers.org/en/master/examples/), the [workshop](http://openlayers.org/ol3-workshop/) or [API docs](http://openlayers.org/en/master/apidoc/).
|
||||
Check out the [hosted examples](http://openlayers.org/en/master/examples/), the [workshop](http://openlayers.org/workshop/) or [API docs](http://openlayers.org/en/master/apidoc/).
|
||||
|
||||
## Bugs
|
||||
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
from optparse import OptionParser
|
||||
import json
|
||||
import re
|
||||
import sys
|
||||
|
||||
import pystache
|
||||
|
||||
|
||||
ESCAPE_SEQUENCE = {
|
||||
@@ -42,7 +42,6 @@ def main(argv):
|
||||
option_parser = OptionParser()
|
||||
option_parser.add_option('--input')
|
||||
option_parser.add_option('--output')
|
||||
option_parser.add_option('--template')
|
||||
options, args = option_parser.parse_args(argv[1:])
|
||||
|
||||
context = {}
|
||||
@@ -114,7 +113,7 @@ def main(argv):
|
||||
output = open(options.output, 'wb')
|
||||
else:
|
||||
output = sys.stdout
|
||||
output.write(pystache.render(open(options.template, 'rb').read(), context))
|
||||
json.dump(context, output)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
||||
@@ -1,5 +1,21 @@
|
||||
## Upgrade notes
|
||||
|
||||
### v3.10.0
|
||||
|
||||
### v3.9.0
|
||||
|
||||
#### `ol.style.Circle` changes
|
||||
|
||||
The experimental `getAnchor`, `getOrigin`, and `getSize` methods have been removed. The anchor and origin of a circle symbolizer are not modifiable, so these properties should not need to be accessed. The radius and stroke width can be used to calculate the rendered size of a circle symbolizer if needed:
|
||||
|
||||
```js
|
||||
// calculate rendered size of a circle symbolizer
|
||||
var width = 2 * circle.getRadius();
|
||||
if (circle.getStroke()) {
|
||||
width += circle.getStroke().getWidth() + 1;
|
||||
}
|
||||
```
|
||||
|
||||
### v3.8.0
|
||||
|
||||
There should be nothing special required when upgrading from v3.7.0 to v3.8.0.
|
||||
|
||||
7
changelog/v3.8.1.md
Normal file
7
changelog/v3.8.1.md
Normal file
@@ -0,0 +1,7 @@
|
||||
# v3.8.1
|
||||
|
||||
## Summary
|
||||
|
||||
This is a patch release that updates the URL for builds shown in the examples. Details below.
|
||||
|
||||
* [#3970](https://github.com/openlayers/ol3/pull/3970) - Pull builds from openlayers.org. ([@tschaub](https://github.com/tschaub))
|
||||
7
changelog/v3.8.2.md
Normal file
7
changelog/v3.8.2.md
Normal file
@@ -0,0 +1,7 @@
|
||||
# v3.8.2
|
||||
|
||||
## Summary
|
||||
|
||||
This is a patch release that corrects the URL for builds shown in the examples. Details below.
|
||||
|
||||
* [#3979](https://github.com/openlayers/ol3/pull/3979) - Fix URLs for openlayers.org resources. ([@tschaub](https://github.com/tschaub))
|
||||
91
changelog/v3.9.0.md
Normal file
91
changelog/v3.9.0.md
Normal file
@@ -0,0 +1,91 @@
|
||||
# v3.9.0
|
||||
|
||||
## Summary
|
||||
|
||||
The v3.9.0 release includes features and fixes from 62 pull requests since the v3.8.2 release. New features include:
|
||||
|
||||
* [#3986](https://github.com/openlayers/ol3/pull/3986) - Modify 'url' option of ol.source.Vector to accept a function ([@alvinlindstam](https://github.com/alvinlindstam))
|
||||
* [#4069](https://github.com/openlayers/ol3/pull/4069) - Add Z-index to layers ([@gberaudo](https://github.com/gberaudo))
|
||||
* [#4044](https://github.com/openlayers/ol3/pull/4044) - Add ol.interaction.Draw#continueDrawing ([@elemoine](https://github.com/elemoine))
|
||||
* [#4008](https://github.com/openlayers/ol3/pull/4008) - Add a Translate interaction ([@elemoine](https://github.com/elemoine))
|
||||
|
||||
See the complete list below for details. And see the following notes to know how to upgrade from v3.8.x to v3.9.0.
|
||||
|
||||
## Upgrade notes
|
||||
|
||||
#### `ol.style.Circle` changes
|
||||
|
||||
The experimental `getAnchor`, `getOrigin`, and `getSize` methods have been removed. The anchor and origin of a circle symbolizer are not modifiable, so these properties should not need to be accessed. The radius and stroke width can be used to calculate the rendered size of a circle symbolizer if needed:
|
||||
|
||||
```js
|
||||
// calculate rendered size of a circle symbolizer
|
||||
var width = 2 * circle.getRadius();
|
||||
if (circle.getStroke()) {
|
||||
width += circle.getStroke().getWidth() + 1;
|
||||
}
|
||||
```
|
||||
|
||||
## New features and fixes
|
||||
|
||||
* [#4055](https://github.com/openlayers/ol3/pull/4055) - Improve graticule perf ([@fgravin](https://github.com/fgravin))
|
||||
* [#4088](https://github.com/openlayers/ol3/pull/4088) - Update jshint to v2.8.0 ([@fredj](https://github.com/fredj))
|
||||
* [#4089](https://github.com/openlayers/ol3/pull/4089) - SelectEventType in ol.interaction namespace ([@pgiraud](https://github.com/pgiraud))
|
||||
* [#4095](https://github.com/openlayers/ol3/pull/4095) - Zoom to the extent of the drag box. ([@tschaub](https://github.com/tschaub))
|
||||
* [#4084](https://github.com/openlayers/ol3/pull/4084) - Fewer circle exports. ([@tschaub](https://github.com/tschaub))
|
||||
* [#4094](https://github.com/openlayers/ol3/pull/4094) - Allow source.setAttributions() to be exported. ([@tschaub](https://github.com/tschaub))
|
||||
* [#4096](https://github.com/openlayers/ol3/pull/4096) - Reinstate inheritdoc to fix #4082 ([@bjornharrtell](https://github.com/bjornharrtell))
|
||||
* [#4091](https://github.com/openlayers/ol3/pull/4091) - Remove unused ol.renderer.webgl.Map.DEFAULT_COLOR_VALUES_ ([@fredj](https://github.com/fredj))
|
||||
* [#4092](https://github.com/openlayers/ol3/pull/4092) - Minor coding style fixes ([@fredj](https://github.com/fredj))
|
||||
* [#4083](https://github.com/openlayers/ol3/pull/4083) - Add API descriptions. ([@tschaub](https://github.com/tschaub))
|
||||
* [#4078](https://github.com/openlayers/ol3/pull/4078) - Enable all the compiler checks ([@fredj](https://github.com/fredj))
|
||||
* [#4085](https://github.com/openlayers/ol3/pull/4085) - Parse nested document tag ([@oterral](https://github.com/oterral))
|
||||
* [#4060](https://github.com/openlayers/ol3/pull/4060) - Remove unnecessary cast ([@fredj](https://github.com/fredj))
|
||||
* [#4064](https://github.com/openlayers/ol3/pull/4064) - Use a private variable to cache the default style array ([@fredj](https://github.com/fredj))
|
||||
* [#4081](https://github.com/openlayers/ol3/pull/4081) - Update link to workshop. ([@tschaub](https://github.com/tschaub))
|
||||
* [#4062](https://github.com/openlayers/ol3/pull/4062) - Remove ol.xml.makeParsersNS and use ol.xml.makeStructureNS instead ([@fredj](https://github.com/fredj))
|
||||
* [#3986](https://github.com/openlayers/ol3/pull/3986) - Modify 'url' option of ol.source.Vector to accept a function ([@alvinlindstam](https://github.com/alvinlindstam))
|
||||
* [#4077](https://github.com/openlayers/ol3/pull/4077) - Add missing const jsdoc annotation ([@fredj](https://github.com/fredj))
|
||||
* [#4080](https://github.com/openlayers/ol3/pull/4080) - Remove unused goog.require in examples ([@fredj](https://github.com/fredj))
|
||||
* [#4041](https://github.com/openlayers/ol3/pull/4041) - Fix custom build issue ([@elemoine](https://github.com/elemoine))
|
||||
* [#4059](https://github.com/openlayers/ol3/pull/4059) - Clarify drag interaction example to inform about ol.interaction.Translate ([@alvinlindstam](https://github.com/alvinlindstam))
|
||||
* [#4069](https://github.com/openlayers/ol3/pull/4069) - Add Z-index to layers ([@gberaudo](https://github.com/gberaudo))
|
||||
* [#4076](https://github.com/openlayers/ol3/pull/4076) - Add assertion for required option 'code' on ol.proj.Projection ([@weskamm](https://github.com/weskamm))
|
||||
* [#4075](https://github.com/openlayers/ol3/pull/4075) - setOpacity of Image undefined ([@bartvde](https://github.com/bartvde))
|
||||
* [#4044](https://github.com/openlayers/ol3/pull/4044) - Add ol.interaction.Draw#continueDrawing ([@elemoine](https://github.com/elemoine))
|
||||
* [#4073](https://github.com/openlayers/ol3/pull/4073) - Better type definition ([@fredj](https://github.com/fredj))
|
||||
* [#4072](https://github.com/openlayers/ol3/pull/4072) - Update to closure-util 1.7.0 ([@elemoine](https://github.com/elemoine))
|
||||
* [#4070](https://github.com/openlayers/ol3/pull/4070) - Make the debug server work regardless of the current working directory. ([@tschaub](https://github.com/tschaub))
|
||||
* [#4067](https://github.com/openlayers/ol3/pull/4067) - Fix bootstrap class name in examples ([@fredj](https://github.com/fredj))
|
||||
* [#4050](https://github.com/openlayers/ol3/pull/4050) - Use view.getRotation and view.getResolution instead of view.getState ([@fredj](https://github.com/fredj))
|
||||
* [#4051](https://github.com/openlayers/ol3/pull/4051) - Move wrench node package to devDependencies ([@fredj](https://github.com/fredj))
|
||||
* [#4047](https://github.com/openlayers/ol3/pull/4047) - Remove pystache dependency ([@fredj](https://github.com/fredj))
|
||||
* [#4027](https://github.com/openlayers/ol3/pull/4027) - closure-compiler v20150729 compatibility ([@fredj](https://github.com/fredj))
|
||||
* [#4040](https://github.com/openlayers/ol3/pull/4040) - Better docs for ol.ENABLE_[WEBGL|CANVAS|DOM] ([@elemoine](https://github.com/elemoine))
|
||||
* [#4032](https://github.com/openlayers/ol3/pull/4032) - Improve ol.Overlay extensibility ([@gberaudo](https://github.com/gberaudo))
|
||||
* [#4037](https://github.com/openlayers/ol3/pull/4037) - Don't install python packages in before_install ([@fredj](https://github.com/fredj))
|
||||
* [#4028](https://github.com/openlayers/ol3/pull/4028) - Update to closure-util 1.6 ([@elemoine](https://github.com/elemoine))
|
||||
* [#4014](https://github.com/openlayers/ol3/pull/4014) - Remove deprecated checkStructDictInheritance ([@fredj](https://github.com/fredj))
|
||||
* [#3987](https://github.com/openlayers/ol3/pull/3987) - Remove unnecessary cast ([@fredj](https://github.com/fredj))
|
||||
* [#4035](https://github.com/openlayers/ol3/pull/4035) - Remove unused sphere and ellipsoid methods. ([@tschaub](https://github.com/tschaub))
|
||||
* [#4031](https://github.com/openlayers/ol3/pull/4031) - Fixing size of popup ([@pgiraud](https://github.com/pgiraud))
|
||||
* [#4023](https://github.com/openlayers/ol3/pull/4023) - Render map when layer.setMap(map) called ([@elemoine](https://github.com/elemoine))
|
||||
* [#4026](https://github.com/openlayers/ol3/pull/4026) - Fix Font Awesome CSS class in examples ([@fredj](https://github.com/fredj))
|
||||
* [#4024](https://github.com/openlayers/ol3/pull/4024) - Correct documentation for ol.FeatureStyleFunction ([@marcjansen](https://github.com/marcjansen))
|
||||
* [#4011](https://github.com/openlayers/ol3/pull/4011) - Make Modify interaction listen to feature changes ([@elemoine](https://github.com/elemoine))
|
||||
* [#3917](https://github.com/openlayers/ol3/pull/3917) - Resolved issue with cluster source reloading ([@cmiles74](https://github.com/cmiles74))
|
||||
* [#4015](https://github.com/openlayers/ol3/pull/4015) - Add a getUrls Method to ol.source.XYZ ([@weskamm](https://github.com/weskamm))
|
||||
* [#4019](https://github.com/openlayers/ol3/pull/4019) - Simplify .editorconfig file ([@marcjansen](https://github.com/marcjansen))
|
||||
* [#4002](https://github.com/openlayers/ol3/pull/4002) - Update closure-library to latest commit ([@fredj](https://github.com/fredj))
|
||||
* [#4018](https://github.com/openlayers/ol3/pull/4018) - Fix rotate buttons in animation example ([@marcjansen](https://github.com/marcjansen))
|
||||
* [#4013](https://github.com/openlayers/ol3/pull/4013) - Use a more recent version of marked ([@marcjansen](https://github.com/marcjansen))
|
||||
* [#4017](https://github.com/openlayers/ol3/pull/4017) - Do not overwrite projections in the registry simply by using `new ol.proj.Projection()` ([@ahocevar](https://github.com/ahocevar))
|
||||
* [#4008](https://github.com/openlayers/ol3/pull/4008) - Add a Translate interaction ([@elemoine](https://github.com/elemoine))
|
||||
* [#3230](https://github.com/openlayers/ol3/pull/3230) - Add stroke to default editing style for geometry collections ([@pgiraud](https://github.com/pgiraud))
|
||||
* [#4007](https://github.com/openlayers/ol3/pull/4007) - Do not use Function.prototype.bind in examples ([@elemoine](https://github.com/elemoine))
|
||||
* [#4006](https://github.com/openlayers/ol3/pull/4006) - Fix typo (vegetaion -> vegetation) ([@elemoine](https://github.com/elemoine))
|
||||
* [#3993](https://github.com/openlayers/ol3/pull/3993) - Replace base symbols with overridden ones when generating info.json ([@ahocevar](https://github.com/ahocevar))
|
||||
* [#3992](https://github.com/openlayers/ol3/pull/3992) - Fix typo in Makefile ([@fredj](https://github.com/fredj))
|
||||
* [#3989](https://github.com/openlayers/ol3/pull/3989) - Handle JSONP errors in ol.source.TileJSON ([@fredj](https://github.com/fredj))
|
||||
* [#3983](https://github.com/openlayers/ol3/pull/3983) - Remove doc footer with timestamp. ([@tschaub](https://github.com/tschaub))
|
||||
* [#3984](https://github.com/openlayers/ol3/pull/3984) - Style source control links in examples. ([@tschaub](https://github.com/tschaub))
|
||||
* [#3982](https://github.com/openlayers/ol3/pull/3982) - Rebuild examples if package.json changes. ([@tschaub](https://github.com/tschaub))
|
||||
@@ -1,3 +1,3 @@
|
||||
{
|
||||
"library_url": "https://github.com/google/closure-library/archive/0011afd534469ba111786fe68300a634e08a4d80.zip"
|
||||
"library_url": "https://github.com/google/closure-library/archive/a5f9b8a.zip"
|
||||
}
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
"externs/bingmaps.js",
|
||||
"externs/bootstrap.js",
|
||||
"externs/closure-compiler.js",
|
||||
"externs/esrijson.js",
|
||||
"externs/example.js",
|
||||
"externs/fastclick.js",
|
||||
"externs/geojson.js",
|
||||
@@ -29,41 +30,13 @@
|
||||
"goog.DEBUG=false"
|
||||
],
|
||||
"jscomp_error": [
|
||||
"accessControls",
|
||||
"ambiguousFunctionDecl",
|
||||
"checkEventfulObjectDisposal",
|
||||
"checkRegExp",
|
||||
"checkStructDictInheritance",
|
||||
"checkTypes",
|
||||
"checkVars",
|
||||
"const",
|
||||
"constantProperty",
|
||||
"deprecated",
|
||||
"duplicateMessage",
|
||||
"es3",
|
||||
"es5Strict",
|
||||
"externsValidation",
|
||||
"fileoverviewTags",
|
||||
"globalThis",
|
||||
"internetExplorerChecks",
|
||||
"invalidCasts",
|
||||
"misplacedTypeAnnotation",
|
||||
"missingGetCssName",
|
||||
"missingProperties",
|
||||
"missingProvide",
|
||||
"missingRequire",
|
||||
"missingReturn",
|
||||
"newCheckTypes",
|
||||
"nonStandardJsDocs",
|
||||
"suspiciousCode",
|
||||
"strictModuleDepCheck",
|
||||
"typeInvalidation",
|
||||
"undefinedNames",
|
||||
"undefinedVars",
|
||||
"uselessCode",
|
||||
"visibility"
|
||||
"*"
|
||||
],
|
||||
"jscomp_off": [
|
||||
"useOfGoogBase",
|
||||
"unnecessaryCasts",
|
||||
"lintChecks",
|
||||
"missingProvide",
|
||||
"unknownDefines"
|
||||
],
|
||||
"extra_annotation_name": [
|
||||
|
||||
@@ -30,40 +30,12 @@
|
||||
"goog.DEBUG=false"
|
||||
],
|
||||
"jscomp_error": [
|
||||
"accessControls",
|
||||
"ambiguousFunctionDecl",
|
||||
"checkEventfulObjectDisposal",
|
||||
"checkRegExp",
|
||||
"checkStructDictInheritance",
|
||||
"checkTypes",
|
||||
"checkVars",
|
||||
"const",
|
||||
"constantProperty",
|
||||
"deprecated",
|
||||
"duplicateMessage",
|
||||
"es3",
|
||||
"es5Strict",
|
||||
"externsValidation",
|
||||
"fileoverviewTags",
|
||||
"globalThis",
|
||||
"internetExplorerChecks",
|
||||
"invalidCasts",
|
||||
"misplacedTypeAnnotation",
|
||||
"missingGetCssName",
|
||||
"missingProperties",
|
||||
"missingProvide",
|
||||
"missingRequire",
|
||||
"missingReturn",
|
||||
"newCheckTypes",
|
||||
"nonStandardJsDocs",
|
||||
"suspiciousCode",
|
||||
"strictModuleDepCheck",
|
||||
"typeInvalidation",
|
||||
"undefinedNames",
|
||||
"undefinedVars",
|
||||
"unknownDefines",
|
||||
"uselessCode",
|
||||
"visibility"
|
||||
"*"
|
||||
],
|
||||
"jscomp_off": [
|
||||
"useOfGoogBase",
|
||||
"unnecessaryCasts",
|
||||
"lintChecks"
|
||||
],
|
||||
"extra_annotation_name": [
|
||||
"api", "observable"
|
||||
|
||||
@@ -4,12 +4,13 @@
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="chrome=1">
|
||||
<meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width">
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css" type="text/css">
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" type="text/css">
|
||||
<link rel="stylesheet" href="./resources/prism/prism.css" type="text/css">
|
||||
<link rel="stylesheet" href="../css/ol.css" type="text/css">
|
||||
<link rel="stylesheet" href="./resources/layout.css" type="text/css">
|
||||
{{{ extraHead }}}
|
||||
{{{ css.tag }}}
|
||||
<link rel="stylesheet" href="./resources/prism/prism.css" type="text/css">
|
||||
<script src="./resources/zeroclipboard/ZeroClipboard.min.js"></script>
|
||||
<title>{{ title }}</title>
|
||||
</head>
|
||||
@@ -36,24 +37,26 @@
|
||||
</div>
|
||||
|
||||
<div class="row-fluid">
|
||||
<hr>
|
||||
<form method="POST" target="_blank" action="http://jsfiddle.net/api/post/jquery/1.11.0/">
|
||||
<input type="button" class="btn btn-info" id="copy-button" value="Copy example code">
|
||||
<input type="submit" class="btn btn-primary" id="jsfiddle-button" value="Create JSFiddle">
|
||||
<div id="source-controls">
|
||||
<a id="copy-button"><i class="fa fa-clipboard"></i> Copy</a>
|
||||
<a id="jsfiddle-button"><i class="fa fa-jsfiddle"></i> Edit</a>
|
||||
</div>
|
||||
<form method="POST" id="jsfiddle-form" target="_blank" action="http://jsfiddle.net/api/post/jquery/1.11.0/">
|
||||
<textarea class="hidden" name="js">{{ js.source }}</textarea>
|
||||
<textarea class="hidden" name="css">{{ css.source }}</textarea>
|
||||
<textarea class="hidden" name="html">{{ contents }}</textarea>
|
||||
<input type="hidden" name="wrap" value="l">
|
||||
<input type="hidden" name="resources" value="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css,https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js,https://cdnjs.cloudflare.com/ajax/libs/ol3/{{ olVersion }}/ol.css,https://cdnjs.cloudflare.com/ajax/libs/ol3/{{ olVersion }}/ol.js">
|
||||
<pre><code id="example-source" class="language-markup"><!DOCTYPE html>
|
||||
<input type="hidden" name="resources" value="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css,https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js,http://openlayers.org/en/v{{ olVersion }}/css/ol.css,http://openlayers.org/en/v{{ olVersion }}/build/ol.js">
|
||||
</form>
|
||||
<pre><code id="example-source" class="language-markup"><!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>{{ title }}</title>
|
||||
<script src="https://code.jquery.com/jquery-1.11.2.min.js"></script>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
|
||||
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/ol3/{{ olVersion }}/ol.css" type="text/css">
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/ol3/{{ olVersion }}/ol.js"></script>
|
||||
<link rel="stylesheet" href="http://openlayers.org/en/v{{ olVersion }}/css/ol.css" type="text/css">
|
||||
<script src="http://openlayers.org/en/v{{ olVersion }}/build/ol.js"></script>
|
||||
{{ extraHead }}
|
||||
{{#if css.source}}
|
||||
<style>
|
||||
@@ -71,7 +74,6 @@
|
||||
</script>
|
||||
</body>
|
||||
</html></code></pre>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -18,7 +18,6 @@
|
||||
"plugins": [
|
||||
"node_modules/jsdoc/plugins/markdown",
|
||||
"config/jsdoc/api/plugins/inheritdoc",
|
||||
"config/jsdoc/api/plugins/interface",
|
||||
"config/jsdoc/api/plugins/typedefs",
|
||||
"config/jsdoc/api/plugins/events",
|
||||
"config/jsdoc/api/plugins/observable",
|
||||
|
||||
@@ -106,4 +106,4 @@ exports.handlers = {
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
@@ -1,25 +0,0 @@
|
||||
exports.defineTags = function(dictionary) {
|
||||
|
||||
var classTag = dictionary.lookUp('class');
|
||||
dictionary.defineTag('interface', {
|
||||
mustHaveValue: false,
|
||||
onTagged: function(doclet, tag) {
|
||||
classTag.onTagged.apply(this, arguments);
|
||||
doclet.interface = true;
|
||||
}
|
||||
});
|
||||
|
||||
var augmentsTag = dictionary.lookUp('augments');
|
||||
dictionary.defineTag('implements', {
|
||||
mustHaveValue: true,
|
||||
onTagged: function(doclet, tag) {
|
||||
tag.value = tag.value.match(/^\{?([^\}]*)\}?$/)[1];
|
||||
augmentsTag.onTagged.apply(this, arguments);
|
||||
if (!doclet.implements) {
|
||||
doclet.implements = [];
|
||||
}
|
||||
doclet.implements.push(tag.value);
|
||||
}
|
||||
});
|
||||
|
||||
};
|
||||
@@ -37,10 +37,6 @@
|
||||
<div class="main">
|
||||
<h1 class="page-title" data-filename="<?js= filename ?>"><?js= title ?></h1>
|
||||
<?js= content ?>
|
||||
|
||||
<footer>
|
||||
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc <?js= env.version.number ?></a> on <?js= (new Date()) ?>
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
<script>prettyPrint();</script>
|
||||
|
||||
@@ -49,7 +49,7 @@ exports.publish = function(data, opts) {
|
||||
var externs = [];
|
||||
var base = [];
|
||||
var augments = {};
|
||||
var names = {};
|
||||
var symbolsByName = {};
|
||||
docs.filter(function(doc) {
|
||||
var include = true;
|
||||
var constructor = doc.memberof;
|
||||
@@ -144,8 +144,13 @@ exports.publish = function(data, opts) {
|
||||
}
|
||||
|
||||
var target = isExterns ? externs : (doc.api ? symbols : base);
|
||||
var existingSymbol = symbolsByName[symbol.name];
|
||||
if (existingSymbol) {
|
||||
var idx = target.indexOf(existingSymbol);
|
||||
target.splice(idx, 1);
|
||||
}
|
||||
target.push(symbol);
|
||||
names[symbol.name] = true;
|
||||
symbolsByName[symbol.name] = symbol;
|
||||
|
||||
if (doc.api && symbol.extends) {
|
||||
while (symbol.extends in classes && !classes[symbol.extends].api &&
|
||||
|
||||
@@ -20,40 +20,12 @@
|
||||
"goog.DEBUG=false"
|
||||
],
|
||||
"jscomp_error": [
|
||||
"accessControls",
|
||||
"ambiguousFunctionDecl",
|
||||
"checkEventfulObjectDisposal",
|
||||
"checkRegExp",
|
||||
"checkStructDictInheritance",
|
||||
"checkTypes",
|
||||
"checkVars",
|
||||
"const",
|
||||
"constantProperty",
|
||||
"deprecated",
|
||||
"duplicateMessage",
|
||||
"es3",
|
||||
"es5Strict",
|
||||
"externsValidation",
|
||||
"fileoverviewTags",
|
||||
"globalThis",
|
||||
"internetExplorerChecks",
|
||||
"invalidCasts",
|
||||
"misplacedTypeAnnotation",
|
||||
"missingGetCssName",
|
||||
"missingProperties",
|
||||
"missingProvide",
|
||||
"missingRequire",
|
||||
"missingReturn",
|
||||
"newCheckTypes",
|
||||
"nonStandardJsDocs",
|
||||
"suspiciousCode",
|
||||
"strictModuleDepCheck",
|
||||
"typeInvalidation",
|
||||
"undefinedNames",
|
||||
"undefinedVars",
|
||||
"unknownDefines",
|
||||
"uselessCode",
|
||||
"visibility"
|
||||
"*"
|
||||
],
|
||||
"jscomp_off": [
|
||||
"useOfGoogBase",
|
||||
"unnecessaryCasts",
|
||||
"lintChecks"
|
||||
],
|
||||
"extra_annotation_name": [
|
||||
"api", "observable"
|
||||
|
||||
@@ -9,7 +9,7 @@ If you're eager to get your first OpenLayers 3 map on a page, dive into the [qui
|
||||
|
||||
For a more in-depth overview of OpenLayers 3 core concepts, check out the [tutorials](tutorials/).
|
||||
|
||||
Make sure to also check out the [OpenLayers 3 workshop](../../../ol3-workshop/).
|
||||
Make sure to also check out the [OpenLayers 3 workshop](/workshop/).
|
||||
|
||||
Find additional reference material in the [API docs](../apidoc).
|
||||
|
||||
|
||||
@@ -239,7 +239,6 @@ Here is a version of `config.json` with more compilation checks enabled:
|
||||
"ambiguousFunctionDecl",
|
||||
"checkEventfulObjectDisposal",
|
||||
"checkRegExp",
|
||||
"checkStructDictInheritance",
|
||||
"checkTypes",
|
||||
"checkVars",
|
||||
"const",
|
||||
|
||||
@@ -14,8 +14,8 @@ tags: "animation"
|
||||
</div>
|
||||
<div class="row-fluid">
|
||||
<div class="span12">
|
||||
<button id="rotate-left"><i class="icon-arrow-left"></i></button>
|
||||
<button id="rotate-right"><i class="icon-arrow-right"></i></button>
|
||||
<button id="rotate-left" title="Rotate clockwise">↻</button>
|
||||
<button id="rotate-right" title="Rotate counterclockwise">↺</button>
|
||||
<button id="rotate-around-rome">Rotate around Rome</button>
|
||||
<button id="pan-to-london">Pan to London</button>
|
||||
<button id="elastic-to-moscow">Elastic to Moscow</button>
|
||||
|
||||
@@ -10,18 +10,18 @@ tags: "brightness, contrast, webgl"
|
||||
<div class="row-fluid">
|
||||
<div class="span12">
|
||||
<div id="map" class="map"></div>
|
||||
<div id="no-webgl" class="alert alert-error" style="display: none">
|
||||
<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="icon-plus"></i></button>
|
||||
<button id="increase-brightness"><i class="fa fa-plus"></i></button>
|
||||
<button id="reset-brightness">Brightness</button>
|
||||
<button id="decrease-brightness"><i class="icon-minus"></i></button>
|
||||
<button id="decrease-brightness"><i class="fa fa-minus"></i></button>
|
||||
</div>
|
||||
<div class="btn-group">
|
||||
<button id="increase-contrast"><i class="icon-plus"></i></button>
|
||||
<button id="increase-contrast"><i class="fa fa-plus"></i></button>
|
||||
<button id="reset-contrast">Contrast</button>
|
||||
<button id="decrease-contrast"><i class="icon-minus"></i></button>
|
||||
<button id="decrease-contrast"><i class="fa fa-minus"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
---
|
||||
template: example.html
|
||||
title: Drag features example
|
||||
shortdesc: Example of a drag features interaction.
|
||||
title: Custom interaction example
|
||||
shortdesc: Example of a custom drag features interaction.
|
||||
docs: >
|
||||
The drag features interaction can be used to drag features to a new position.
|
||||
tags: "drag, feature, vector, editing"
|
||||
This example demonstrates using a custom interaction with OpenLayers, by subclassing `ol.interaction.Pointer`.
|
||||
Note that the built in interaction `ol.interaction.Translate` might be a better option for moving features.
|
||||
tags: "drag, feature, vector, editing, custom, interaction"
|
||||
---
|
||||
<div class="row-fluid">
|
||||
<div class="span12">
|
||||
|
||||
@@ -9,10 +9,10 @@ tags: "export, png, openstreetmap"
|
||||
<div class="row-fluid">
|
||||
<div class="span12">
|
||||
<div id="map" class="map"></div>
|
||||
<div id="no-download" class="alert alert-error" style="display: none">
|
||||
<div id="no-download" class="alert alert-danger" style="display: none">
|
||||
This example requires a browser that supports the
|
||||
<a href="http://caniuse.com/#feat=download">link download</a> attribute.
|
||||
</div>
|
||||
<a id="export-png" class="btn" download="map.png"><i class="icon-download"></i> Export PNG</a>
|
||||
<a id="export-png" class="btn btn-default" download="map.png"><i class="fa fa-download"></i> Export PNG</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -10,7 +10,7 @@ tags: "geolocation, openstreetmap"
|
||||
<div class="span12">
|
||||
<div id="map" class="map"></div>
|
||||
<div class="span4 pull-right">
|
||||
<div id="info" class="alert alert-error" style="display: none;"></div>
|
||||
<div id="info" class="alert alert-danger" style="display: none;"></div>
|
||||
</div>
|
||||
<label class="checkbox" for="track">
|
||||
<input id="track" type="checkbox"/>track position
|
||||
|
||||
@@ -9,18 +9,18 @@ tags: "custom, control"
|
||||
<div class="row-fluid">
|
||||
<div class="span12">
|
||||
<div id="map" class="map"></div>
|
||||
<div id="no-webgl" class="alert alert-error" style="display: none">
|
||||
<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="icon-plus"></i></button>
|
||||
<button id="increase-hue"><i class="fa fa-plus"></i></button>
|
||||
<button id="reset-hue">Hue</button>
|
||||
<button id="decrease-hue"><i class="icon-minus"></i></button>
|
||||
<button id="decrease-hue"><i class="fa fa-minus"></i></button>
|
||||
</div>
|
||||
<div class="btn-group">
|
||||
<button id="increase-saturation"><i class="icon-plus"></i></button>
|
||||
<button id="increase-saturation"><i class="fa fa-plus"></i></button>
|
||||
<button id="reset-saturation">Saturation</button>
|
||||
<button id="decrease-saturation"><i class="icon-minus"></i></button>
|
||||
<button id="decrease-saturation"><i class="fa fa-minus"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -33,10 +33,11 @@ Progress.prototype.addLoading = function() {
|
||||
* Increment the count of loaded tiles.
|
||||
*/
|
||||
Progress.prototype.addLoaded = function() {
|
||||
var this_ = this;
|
||||
setTimeout(function() {
|
||||
++this.loaded;
|
||||
this.update();
|
||||
}.bind(this), 100);
|
||||
++this_.loaded;
|
||||
this_.update();
|
||||
}, 100);
|
||||
};
|
||||
|
||||
|
||||
@@ -49,7 +50,10 @@ Progress.prototype.update = function() {
|
||||
if (this.loading === this.loaded) {
|
||||
this.loading = 0;
|
||||
this.loaded = 0;
|
||||
setTimeout(this.hide.bind(this), 500);
|
||||
var this_ = this;
|
||||
setTimeout(function() {
|
||||
this_.hide();
|
||||
}, 500);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -11,6 +11,6 @@ tags: "clipping, webgl, openstreetmap"
|
||||
<div id="map" class="map"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="no-webgl" class="alert alert-error" style="display: none">
|
||||
<div id="no-webgl" class="alert alert-danger" style="display: none">
|
||||
This example requires a browser that supports <a href="http://get.webgl.org/">WebGL</a>.
|
||||
</div>
|
||||
|
||||
28
examples/layer-z-index.html
Normal file
28
examples/layer-z-index.html
Normal file
@@ -0,0 +1,28 @@
|
||||
---
|
||||
template: example.html
|
||||
title: Z-index layer ordering example
|
||||
shortdesc: Example of ordering layers using Z-index.
|
||||
docs: >
|
||||
|
||||
tags: "layer, ordering, z-index"
|
||||
---
|
||||
<div class="row-fluid">
|
||||
<div class="span12">
|
||||
<div id="map" class="map"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
There are are two managed layers (square and triangle) and one unmanaged layer (star).</br>
|
||||
The Z-index determines the rendering order; with {square: 1, triangle: 0, star: unmanaged} indices, the rendering order is triangle, square and star on top.
|
||||
</div>
|
||||
<div>
|
||||
<label for="idx1">
|
||||
<input type="number" id="idx1"></input>
|
||||
Square layer Z-index
|
||||
</label></br>
|
||||
|
||||
<label for="idx2">
|
||||
<input type="number" id="idx2"></input>
|
||||
Triangle layer Z-index
|
||||
</label>
|
||||
</div>
|
||||
92
examples/layer-z-index.js
Normal file
92
examples/layer-z-index.js
Normal file
@@ -0,0 +1,92 @@
|
||||
goog.require('ol.Feature');
|
||||
goog.require('ol.Map');
|
||||
goog.require('ol.View');
|
||||
goog.require('ol.geom.Point');
|
||||
goog.require('ol.layer.Vector');
|
||||
goog.require('ol.source.Vector');
|
||||
goog.require('ol.style.Fill');
|
||||
goog.require('ol.style.RegularShape');
|
||||
goog.require('ol.style.Stroke');
|
||||
goog.require('ol.style.Style');
|
||||
|
||||
|
||||
var stroke = new ol.style.Stroke({color: 'black', width: 1});
|
||||
|
||||
var styles = {
|
||||
'square': [new ol.style.Style({
|
||||
image: new ol.style.RegularShape({
|
||||
fill: new ol.style.Fill({color: 'blue'}),
|
||||
stroke: stroke,
|
||||
points: 4,
|
||||
radius: 80,
|
||||
angle: Math.PI / 4
|
||||
})
|
||||
})],
|
||||
'triangle': [new ol.style.Style({
|
||||
image: new ol.style.RegularShape({
|
||||
fill: new ol.style.Fill({color: 'red'}),
|
||||
stroke: stroke,
|
||||
points: 3,
|
||||
radius: 80,
|
||||
rotation: Math.PI / 4,
|
||||
angle: 0
|
||||
})
|
||||
})],
|
||||
'star': [new ol.style.Style({
|
||||
image: new ol.style.RegularShape({
|
||||
fill: new ol.style.Fill({color: 'green'}),
|
||||
stroke: stroke,
|
||||
points: 5,
|
||||
radius: 80,
|
||||
radius2: 4,
|
||||
angle: 0
|
||||
})
|
||||
})]
|
||||
};
|
||||
|
||||
|
||||
function createLayer(coordinates, styles, zIndex) {
|
||||
var feature = new ol.Feature(new ol.geom.Point(coordinates));
|
||||
feature.setStyle(styles);
|
||||
|
||||
var source = new ol.source.Vector({
|
||||
features: [feature]
|
||||
});
|
||||
|
||||
var vectorLayer = new ol.layer.Vector({
|
||||
source: source
|
||||
});
|
||||
vectorLayer.setZIndex(zIndex);
|
||||
|
||||
return vectorLayer;
|
||||
}
|
||||
|
||||
var layer0 = createLayer([40, 40], styles['star'], 0);
|
||||
var layer1 = createLayer([0, 0], styles['square'], 1);
|
||||
var layer2 = createLayer([0, 40], styles['triangle'], 0);
|
||||
|
||||
var layers = [];
|
||||
layers.push(layer1);
|
||||
layers.push(layer2);
|
||||
|
||||
var map = new ol.Map({
|
||||
layers: layers,
|
||||
target: 'map',
|
||||
view: new ol.View({
|
||||
center: [0, 0],
|
||||
zoom: 18
|
||||
})
|
||||
});
|
||||
|
||||
layer0.setMap(map);
|
||||
|
||||
|
||||
function bindInputs(id, layer) {
|
||||
var idxInput = $('#idx' + id);
|
||||
idxInput.on('input change', function() {
|
||||
layer.setZIndex(parseInt(this.value, 10) || 0);
|
||||
});
|
||||
idxInput.val(String(layer.getZIndex()));
|
||||
}
|
||||
bindInputs(1, layer1);
|
||||
bindInputs(2, layer2);
|
||||
@@ -8,6 +8,7 @@
|
||||
border: 1px solid #cccccc;
|
||||
bottom: 12px;
|
||||
left: -50px;
|
||||
min-width: 280px;
|
||||
}
|
||||
.ol-popup:after, .ol-popup:before {
|
||||
top: 100%;
|
||||
|
||||
@@ -12,7 +12,7 @@ docs: >
|
||||
</p>
|
||||
<p>
|
||||
In this case, a single tiled source of imagery is used as input.
|
||||
For each pixel, the Vegetaion Greenness Index
|
||||
For each pixel, the Vegetation Greenness Index
|
||||
(<a href="http://www.tandfonline.com/doi/abs/10.1080/10106040108542184#.Vb90ITBViko">VGI</a>)
|
||||
is calculated from the input pixels. A second operation colors
|
||||
those pixels based on a threshold value (values above the
|
||||
|
||||
@@ -10,6 +10,14 @@
|
||||
});
|
||||
}
|
||||
|
||||
var fiddleButton = document.getElementById('jsfiddle-button');
|
||||
if (fiddleButton) {
|
||||
fiddleButton.onclick = function(event) {
|
||||
event.preventDefault();
|
||||
document.getElementById('jsfiddle-form').submit();
|
||||
};
|
||||
}
|
||||
|
||||
if (window.location.host === 'localhost:3000') {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -59,6 +59,36 @@ ol.inline>li {
|
||||
font-family: 'Lucida Grande',Verdana,Geneva,Lucida,Arial,Helvetica,sans-serif;
|
||||
}
|
||||
|
||||
pre[class*="language-"] {
|
||||
margin-top: 20px;
|
||||
background: #FFFFFF;
|
||||
}
|
||||
|
||||
#source-controls {
|
||||
position: absolute;
|
||||
margin-top: 20px;
|
||||
right: 40px;
|
||||
}
|
||||
|
||||
#source-controls a {
|
||||
margin-left: 15px;
|
||||
}
|
||||
|
||||
#copy-button {
|
||||
text-decoration: none;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
#jsfiddle-button {
|
||||
text-decoration: none;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
pre {
|
||||
border: 1px solid #eee;
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
#tags, #shortdesc, .hidden {
|
||||
display: none;
|
||||
}
|
||||
|
||||
@@ -13,7 +13,7 @@ goog.require('ol.source.XYZ');
|
||||
* neighborhood for determining slope and aspect.
|
||||
* @param {Array.<ImageData>} inputs Array of input images.
|
||||
* @param {Object} data Data added in the "beforeoperations" event.
|
||||
* @return {Array.<ImageData>} Output images (only the first is rendered).
|
||||
* @return {ImageData} Output image.
|
||||
*/
|
||||
function shade(inputs, data) {
|
||||
var elevationImage = inputs[0];
|
||||
|
||||
@@ -14,7 +14,7 @@ tags: "side-by-side, canvas, webgl, dom, canvas, sync, object"
|
||||
<div class="span4">
|
||||
<h4>WebGL</h4>
|
||||
<div id="webglMap" class="map"></div>
|
||||
<div id="no-webgl" class="alert alert-error" style="display: none">
|
||||
<div id="no-webgl" class="alert alert-danger" style="display: none">
|
||||
This map requires a browser that supports <a href="http://get.webgl.org/">WebGL</a>.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -16,7 +16,7 @@ var sphereMollweideProjection = new ol.proj.Projection({
|
||||
code: 'ESRI:53009',
|
||||
extent: [-9009954.605703328, -9009954.605703328,
|
||||
9009954.605703328, 9009954.605703328],
|
||||
worldExtent: [-179, -90, 179, 90]
|
||||
worldExtent: [-179, -89.99, 179, 89.99]
|
||||
});
|
||||
|
||||
var map = new ol.Map({
|
||||
|
||||
@@ -33,10 +33,11 @@ Progress.prototype.addLoading = function() {
|
||||
* Increment the count of loaded tiles.
|
||||
*/
|
||||
Progress.prototype.addLoaded = function() {
|
||||
var this_ = this;
|
||||
setTimeout(function() {
|
||||
++this.loaded;
|
||||
this.update();
|
||||
}.bind(this), 100);
|
||||
++this_.loaded;
|
||||
this_.update();
|
||||
}, 100);
|
||||
};
|
||||
|
||||
|
||||
@@ -49,7 +50,10 @@ Progress.prototype.update = function() {
|
||||
if (this.loading === this.loaded) {
|
||||
this.loading = 0;
|
||||
this.loaded = 0;
|
||||
setTimeout(this.hide.bind(this), 500);
|
||||
var this_ = this;
|
||||
setTimeout(function() {
|
||||
this_.hide();
|
||||
}, 500);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
13
examples/translate-features.html
Normal file
13
examples/translate-features.html
Normal file
@@ -0,0 +1,13 @@
|
||||
---
|
||||
template: example.html
|
||||
title: Translate features example
|
||||
shortdesc: Example of a translate features interaction.
|
||||
docs: >
|
||||
This example demonstrates how the translate and select interactions can be used together. Zoom in to an area of interest and click to select a feature. Then drag the feature around to move it elsewhere on the map.
|
||||
tags: "drag, translate, feature, vector, editing"
|
||||
---
|
||||
<div class="row-fluid">
|
||||
<div class="span12">
|
||||
<div id="map" class="map"></div>
|
||||
</div>
|
||||
</div>
|
||||
52
examples/translate-features.js
Normal file
52
examples/translate-features.js
Normal file
@@ -0,0 +1,52 @@
|
||||
goog.require('ol.Feature');
|
||||
goog.require('ol.Map');
|
||||
goog.require('ol.View');
|
||||
goog.require('ol.format.GeoJSON');
|
||||
goog.require('ol.geom.LineString');
|
||||
goog.require('ol.geom.Point');
|
||||
goog.require('ol.interaction');
|
||||
goog.require('ol.interaction.Select');
|
||||
goog.require('ol.interaction.Translate');
|
||||
goog.require('ol.layer.Tile');
|
||||
goog.require('ol.layer.Vector');
|
||||
goog.require('ol.source.MapQuest');
|
||||
goog.require('ol.source.Vector');
|
||||
|
||||
|
||||
var raster = new ol.layer.Tile({
|
||||
source: new ol.source.MapQuest({layer: 'sat'})
|
||||
});
|
||||
|
||||
var vector = new ol.layer.Vector({
|
||||
source: new ol.source.Vector({
|
||||
url: 'data/geojson/countries.geojson',
|
||||
format: new ol.format.GeoJSON()
|
||||
})
|
||||
});
|
||||
|
||||
var pointFeature = new ol.Feature(new ol.geom.Point([0, 0]));
|
||||
|
||||
var lineFeature = new ol.Feature(
|
||||
new ol.geom.LineString([[-1e7, 1e6], [-1e6, 3e6]]));
|
||||
|
||||
var vector2 = new ol.layer.Vector({
|
||||
source: new ol.source.Vector({
|
||||
features: [pointFeature, lineFeature]
|
||||
})
|
||||
});
|
||||
|
||||
var select = new ol.interaction.Select();
|
||||
|
||||
var translate = new ol.interaction.Translate({
|
||||
features: select.getFeatures()
|
||||
});
|
||||
|
||||
var map = new ol.Map({
|
||||
interactions: ol.interaction.defaults().extend([select, translate]),
|
||||
layers: [raster, vector, vector2],
|
||||
target: 'map',
|
||||
view: new ol.View({
|
||||
center: [0, 0],
|
||||
zoom: 2
|
||||
})
|
||||
});
|
||||
@@ -1,4 +1,3 @@
|
||||
goog.require('ol.Feature');
|
||||
goog.require('ol.Map');
|
||||
goog.require('ol.View');
|
||||
goog.require('ol.format.GeoJSON');
|
||||
|
||||
@@ -87,19 +87,13 @@ var styles = {
|
||||
}
|
||||
};
|
||||
|
||||
var osmxmlFormat = new ol.format.OSMXML();
|
||||
|
||||
var vectorSource = new ol.source.Vector({
|
||||
loader: function(extent, resolution, projection) {
|
||||
format: new ol.format.OSMXML(),
|
||||
url: function(extent, resolution, projection) {
|
||||
var epsg4326Extent =
|
||||
ol.proj.transformExtent(extent, projection, 'EPSG:4326');
|
||||
var url = 'http://overpass-api.de/api/xapi?map?bbox=' +
|
||||
return 'http://overpass-api.de/api/xapi?map?bbox=' +
|
||||
epsg4326Extent.join(',');
|
||||
$.ajax(url).then(function(response) {
|
||||
var features = osmxmlFormat.readFeatures(response,
|
||||
{featureProjection: projection});
|
||||
vectorSource.addFeatures(features);
|
||||
});
|
||||
},
|
||||
strategy: ol.loadingstrategy.tile(ol.tilegrid.createXYZ({
|
||||
maxZoom: 19
|
||||
|
||||
@@ -10,18 +10,14 @@ goog.require('ol.style.Stroke');
|
||||
goog.require('ol.style.Style');
|
||||
|
||||
|
||||
// format used to parse WFS GetFeature responses
|
||||
var geojsonFormat = new ol.format.GeoJSON();
|
||||
|
||||
var vectorSource = new ol.source.Vector({
|
||||
loader: function(extent, resolution, projection) {
|
||||
var url = 'http://demo.boundlessgeo.com/geoserver/wfs?service=WFS&' +
|
||||
format: new ol.format.GeoJSON(),
|
||||
url: function(extent, resolution, projection) {
|
||||
return 'http://demo.boundlessgeo.com/geoserver/wfs?service=WFS&' +
|
||||
'version=1.1.0&request=GetFeature&typename=osm:water_areas&' +
|
||||
'outputFormat=text/javascript&format_options=callback:loadFeatures' +
|
||||
'&srsname=EPSG:3857&bbox=' + extent.join(',') + ',EPSG:3857';
|
||||
// use jsonp: false to prevent jQuery from adding the "callback"
|
||||
// parameter to the URL
|
||||
$.ajax({url: url, dataType: 'jsonp', jsonp: false});
|
||||
'outputFormat=application/json&srsname=EPSG:3857&' +
|
||||
'bbox=' + extent.join(',') + ',EPSG:3857';
|
||||
},
|
||||
strategy: ol.loadingstrategy.tile(ol.tilegrid.createXYZ({
|
||||
maxZoom: 19
|
||||
@@ -29,14 +25,6 @@ var vectorSource = new ol.source.Vector({
|
||||
});
|
||||
|
||||
|
||||
/**
|
||||
* JSONP WFS callback function.
|
||||
* @param {Object} response The response object.
|
||||
*/
|
||||
window.loadFeatures = function(response) {
|
||||
vectorSource.addFeatures(geojsonFormat.readFeatures(response));
|
||||
};
|
||||
|
||||
var vector = new ol.layer.Vector({
|
||||
source: vectorSource,
|
||||
style: new ol.style.Style({
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
goog.require('ol.Feature');
|
||||
goog.require('ol.Map');
|
||||
goog.require('ol.View');
|
||||
goog.require('ol.format.WKT');
|
||||
|
||||
@@ -30,15 +30,3 @@ Touch.prototype.webkitRadiusX;
|
||||
|
||||
/** @type {number} */
|
||||
Touch.prototype.webkitRadiusY;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @type {boolean}
|
||||
*/
|
||||
WebGLContextAttributes.prototype.preferLowPowerToHighPerformance;
|
||||
|
||||
/**
|
||||
* @type {boolean}
|
||||
*/
|
||||
WebGLContextAttributes.prototype.failIfMajorPerformanceCaveat;
|
||||
|
||||
@@ -2504,6 +2504,22 @@ olx.interaction.DrawOptions.prototype.freehandCondition;
|
||||
olx.interaction.DrawOptions.prototype.wrapX;
|
||||
|
||||
|
||||
/**
|
||||
* @typedef {{features: (ol.Collection.<ol.Feature>|undefined)}}
|
||||
* @api
|
||||
*/
|
||||
olx.interaction.TranslateOptions;
|
||||
|
||||
|
||||
/**
|
||||
* Only features contained in this collection will be able to be translated. If
|
||||
* not specified, all features on the map will be able to be translated.
|
||||
* @type {ol.Collection.<ol.Feature>|undefined}
|
||||
* @api
|
||||
*/
|
||||
olx.interaction.TranslateOptions.prototype.features;
|
||||
|
||||
|
||||
/**
|
||||
* @typedef {{condition: (ol.events.ConditionType|undefined),
|
||||
* duration: (number|undefined),
|
||||
@@ -2911,6 +2927,7 @@ olx.layer;
|
||||
* saturation: (number|undefined),
|
||||
* visible: (boolean|undefined),
|
||||
* extent: (ol.Extent|undefined),
|
||||
* zIndex: (number|undefined),
|
||||
* minResolution: (number|undefined),
|
||||
* maxResolution: (number|undefined)}}
|
||||
* @api
|
||||
@@ -2975,6 +2992,15 @@ olx.layer.BaseOptions.prototype.visible;
|
||||
olx.layer.BaseOptions.prototype.extent;
|
||||
|
||||
|
||||
/**
|
||||
* The z-index for layer rendering. At rendering time, the layers will be
|
||||
* ordered, first by Z-index and then by position. The default Z-index is 0.
|
||||
* @type {number|undefined}
|
||||
* @api
|
||||
*/
|
||||
olx.layer.BaseOptions.prototype.zIndex;
|
||||
|
||||
|
||||
/**
|
||||
* The minimum resolution (inclusive) at which this layer will be visible.
|
||||
* @type {number|undefined}
|
||||
@@ -3000,6 +3026,7 @@ olx.layer.BaseOptions.prototype.maxResolution;
|
||||
* source: (ol.source.Source|undefined),
|
||||
* visible: (boolean|undefined),
|
||||
* extent: (ol.Extent|undefined),
|
||||
* zIndex: (number|undefined),
|
||||
* minResolution: (number|undefined),
|
||||
* maxResolution: (number|undefined)}}
|
||||
* @api
|
||||
@@ -3074,6 +3101,15 @@ olx.layer.LayerOptions.prototype.visible;
|
||||
olx.layer.LayerOptions.prototype.extent;
|
||||
|
||||
|
||||
/**
|
||||
* The z-index for layer rendering. At rendering time, the layers will be
|
||||
* ordered, first by Z-index and then by position. The default Z-index is 0.
|
||||
* @type {number|undefined}
|
||||
* @api
|
||||
*/
|
||||
olx.layer.LayerOptions.prototype.zIndex;
|
||||
|
||||
|
||||
/**
|
||||
* The minimum resolution (inclusive) at which this layer will be visible.
|
||||
* @type {number|undefined}
|
||||
@@ -3098,6 +3134,7 @@ olx.layer.LayerOptions.prototype.maxResolution;
|
||||
* saturation: (number|undefined),
|
||||
* visible: (boolean|undefined),
|
||||
* extent: (ol.Extent|undefined),
|
||||
* zIndex: (number|undefined),
|
||||
* minResolution: (number|undefined),
|
||||
* maxResolution: (number|undefined),
|
||||
* layers: (Array.<ol.layer.Base>|ol.Collection.<ol.layer.Base>|undefined)}}
|
||||
@@ -3163,6 +3200,15 @@ olx.layer.GroupOptions.prototype.visible;
|
||||
olx.layer.GroupOptions.prototype.extent;
|
||||
|
||||
|
||||
/**
|
||||
* The z-index for layer rendering. At rendering time, the layers will be
|
||||
* ordered, first by Z-index and then by position. The default Z-index is 0.
|
||||
* @type {number|undefined}
|
||||
* @api
|
||||
*/
|
||||
olx.layer.GroupOptions.prototype.zIndex;
|
||||
|
||||
|
||||
/**
|
||||
* The minimum resolution (inclusive) at which this layer will be visible.
|
||||
* @type {number|undefined}
|
||||
@@ -5149,7 +5195,7 @@ olx.source.TileWMSOptions.prototype.wrapX;
|
||||
* loader: (ol.FeatureLoader|undefined),
|
||||
* logo: (string|olx.LogoOptions|undefined),
|
||||
* strategy: (ol.LoadingStrategy|undefined),
|
||||
* url: (string|undefined),
|
||||
* url: (string|ol.FeatureUrlFunction|undefined),
|
||||
* useSpatialIndex: (boolean|undefined),
|
||||
* wrapX: (boolean|undefined)}}
|
||||
* @api
|
||||
@@ -5212,10 +5258,12 @@ olx.source.VectorOptions.prototype.strategy;
|
||||
|
||||
/**
|
||||
* Setting this option instructs the source to use an XHR loader (see
|
||||
* {@link ol.featureloader.xhr}) and an {@link ol.loadingstrategy.all} for a
|
||||
* one-off download of all features from that URL.
|
||||
* {@link ol.featureloader.xhr}). Use a `string` and an
|
||||
* {@link ol.loadingstrategy.all} for a one-off download of all features from
|
||||
* the given URL. Use a {@link ol.FeatureUrlFunction} to generate the url with
|
||||
* other loading strategies.
|
||||
* Requires `format` to be set as well.
|
||||
* @type {string|undefined}
|
||||
* @type {string|ol.FeatureUrlFunction|undefined}
|
||||
* @api
|
||||
*/
|
||||
olx.source.VectorOptions.prototype.url;
|
||||
|
||||
17
package.json
17
package.json
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "openlayers",
|
||||
"version": "3.8.0",
|
||||
"version": "3.9.0",
|
||||
"description": "Build tools and sources for developing OpenLayers based mapping applications",
|
||||
"keywords": [
|
||||
"map",
|
||||
@@ -27,21 +27,20 @@
|
||||
"dependencies": {
|
||||
"async": "0.9.0",
|
||||
"browserify": "9.0.3",
|
||||
"closure-util": "1.5.0",
|
||||
"closure-util": "1.7.0",
|
||||
"fs-extra": "0.12.0",
|
||||
"glob": "5.0.3",
|
||||
"graceful-fs": "3.0.2",
|
||||
"handlebars": "3.0.1",
|
||||
"jsdoc": "3.3.0-alpha9",
|
||||
"marked": "0.3.3",
|
||||
"jsdoc": "3.3.2",
|
||||
"marked": "0.3.5",
|
||||
"metalsmith": "1.6.0",
|
||||
"metalsmith-templates": "0.7.0",
|
||||
"nomnom": "1.8.0",
|
||||
"pixelworks": "1.0.0",
|
||||
"rbush": "1.3.5",
|
||||
"temp": "0.8.1",
|
||||
"walk": "2.3.4",
|
||||
"wrench": "1.5.8"
|
||||
"walk": "2.3.4"
|
||||
},
|
||||
"devDependencies": {
|
||||
"clean-css": "2.2.16",
|
||||
@@ -51,14 +50,16 @@
|
||||
"gaze": "^0.5.1",
|
||||
"istanbul": "0.3.13",
|
||||
"jquery": "2.1.1",
|
||||
"jshint": "2.5.6",
|
||||
"jshint": "2.8.0",
|
||||
"mocha": "1.21.5",
|
||||
"mocha-phantomjs": "3.5.1",
|
||||
"mustache": "2.1.3",
|
||||
"phantomjs": "1.9.10",
|
||||
"proj4": "2.3.6",
|
||||
"resemblejs": "1.2.0",
|
||||
"sinon": "1.10.3",
|
||||
"slimerjs-edge": "0.10.0-pre-2"
|
||||
"slimerjs-edge": "0.10.0-pre-2",
|
||||
"wrench": "1.5.8"
|
||||
},
|
||||
"ext": [
|
||||
"rbush",
|
||||
|
||||
@@ -1,2 +1 @@
|
||||
http://closure-linter.googlecode.com/files/closure_linter-latest.tar.gz
|
||||
pystache
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
goog.provide('ol.Attribution');
|
||||
|
||||
goog.require('goog.asserts');
|
||||
goog.require('goog.math');
|
||||
goog.require('ol.TileRange');
|
||||
|
||||
|
||||
@@ -515,7 +515,8 @@ ol.control.OverviewMap.prototype.setCollapsed = function(collapsed) {
|
||||
|
||||
|
||||
/**
|
||||
* @return {boolean} True if the widget is collapsed.
|
||||
* Determine if the overview map is collapsed.
|
||||
* @return {boolean} The overview map is collapsed.
|
||||
* @api stable
|
||||
*/
|
||||
ol.control.OverviewMap.prototype.getCollapsed = function() {
|
||||
|
||||
@@ -1,185 +0,0 @@
|
||||
goog.provide('ol.Ellipsoid');
|
||||
|
||||
goog.require('goog.math');
|
||||
goog.require('ol.Coordinate');
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
* @param {number} a Major radius.
|
||||
* @param {number} flattening Flattening.
|
||||
*/
|
||||
ol.Ellipsoid = function(a, flattening) {
|
||||
|
||||
/**
|
||||
* @const
|
||||
* @type {number}
|
||||
*/
|
||||
this.a = a;
|
||||
|
||||
/**
|
||||
* @const
|
||||
* @type {number}
|
||||
*/
|
||||
this.flattening = flattening;
|
||||
|
||||
/**
|
||||
* @const
|
||||
* @type {number}
|
||||
*/
|
||||
this.b = this.a * (1 - this.flattening);
|
||||
|
||||
/**
|
||||
* @const
|
||||
* @type {number}
|
||||
*/
|
||||
this.eSquared = 2 * flattening - flattening * flattening;
|
||||
|
||||
/**
|
||||
* @const
|
||||
* @type {number}
|
||||
*/
|
||||
this.e = Math.sqrt(this.eSquared);
|
||||
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @param {ol.Coordinate} c1 Coordinate 1.
|
||||
* @param {ol.Coordinate} c2 Coordinate 1.
|
||||
* @param {number=} opt_minDeltaLambda Minimum delta lambda for convergence.
|
||||
* @param {number=} opt_maxIterations Maximum iterations.
|
||||
* @return {{distance: number, initialBearing: number, finalBearing: number}}
|
||||
* Vincenty.
|
||||
*/
|
||||
ol.Ellipsoid.prototype.vincenty =
|
||||
function(c1, c2, opt_minDeltaLambda, opt_maxIterations) {
|
||||
var minDeltaLambda = goog.isDef(opt_minDeltaLambda) ?
|
||||
opt_minDeltaLambda : 1e-12;
|
||||
var maxIterations = goog.isDef(opt_maxIterations) ?
|
||||
opt_maxIterations : 100;
|
||||
var f = this.flattening;
|
||||
var lat1 = goog.math.toRadians(c1[1]);
|
||||
var lat2 = goog.math.toRadians(c2[1]);
|
||||
var deltaLon = goog.math.toRadians(c2[0] - c1[0]);
|
||||
var U1 = Math.atan((1 - f) * Math.tan(lat1));
|
||||
var cosU1 = Math.cos(U1);
|
||||
var sinU1 = Math.sin(U1);
|
||||
var U2 = Math.atan((1 - f) * Math.tan(lat2));
|
||||
var cosU2 = Math.cos(U2);
|
||||
var sinU2 = Math.sin(U2);
|
||||
var lambda = deltaLon;
|
||||
var cosSquaredAlpha, sinAlpha;
|
||||
var cosLambda, deltaLambda = Infinity, sinLambda;
|
||||
var cos2SigmaM, cosSigma, sigma, sinSigma;
|
||||
var i;
|
||||
for (i = maxIterations; i > 0; --i) {
|
||||
cosLambda = Math.cos(lambda);
|
||||
sinLambda = Math.sin(lambda);
|
||||
var x = cosU2 * sinLambda;
|
||||
var y = cosU1 * sinU2 - sinU1 * cosU2 * cosLambda;
|
||||
sinSigma = Math.sqrt(x * x + y * y);
|
||||
if (sinSigma === 0) {
|
||||
return {
|
||||
distance: 0,
|
||||
initialBearing: 0,
|
||||
finalBearing: 0
|
||||
};
|
||||
}
|
||||
cosSigma = sinU1 * sinU2 + cosU1 * cosU2 * cosLambda;
|
||||
sigma = Math.atan2(sinSigma, cosSigma);
|
||||
sinAlpha = cosU1 * cosU2 * sinLambda / sinSigma;
|
||||
cosSquaredAlpha = 1 - sinAlpha * sinAlpha;
|
||||
cos2SigmaM = cosSigma - 2 * sinU1 * sinU2 / cosSquaredAlpha;
|
||||
if (isNaN(cos2SigmaM)) {
|
||||
cos2SigmaM = 0;
|
||||
}
|
||||
var C = f / 16 * cosSquaredAlpha * (4 + f * (4 - 3 * cosSquaredAlpha));
|
||||
var lambdaPrime = deltaLon + (1 - C) * f * sinAlpha * (sigma +
|
||||
C * sinSigma * (cos2SigmaM +
|
||||
C * cosSigma * (2 * cos2SigmaM * cos2SigmaM - 1)));
|
||||
deltaLambda = Math.abs(lambdaPrime - lambda);
|
||||
lambda = lambdaPrime;
|
||||
if (deltaLambda < minDeltaLambda) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (i === 0) {
|
||||
return {
|
||||
distance: NaN,
|
||||
finalBearing: NaN,
|
||||
initialBearing: NaN
|
||||
};
|
||||
}
|
||||
var aSquared = this.a * this.a;
|
||||
var bSquared = this.b * this.b;
|
||||
var uSquared = cosSquaredAlpha * (aSquared - bSquared) / bSquared;
|
||||
var A = 1 + uSquared / 16384 *
|
||||
(4096 + uSquared * (uSquared * (320 - 175 * uSquared) - 768));
|
||||
var B = uSquared / 1024 *
|
||||
(256 + uSquared * (uSquared * (74 - 47 * uSquared) - 128));
|
||||
var deltaSigma = B * sinSigma * (cos2SigmaM + B / 4 *
|
||||
(cosSigma * (2 * cos2SigmaM * cos2SigmaM - 1) -
|
||||
B / 6 * cos2SigmaM * (4 * sinSigma * sinSigma - 3) *
|
||||
(4 * cos2SigmaM * cos2SigmaM - 3)));
|
||||
cosLambda = Math.cos(lambda);
|
||||
sinLambda = Math.sin(lambda);
|
||||
var alpha1 = Math.atan2(cosU2 * sinLambda,
|
||||
cosU1 * sinU2 - sinU1 * cosU2 * cosLambda);
|
||||
var alpha2 = Math.atan2(cosU1 * sinLambda,
|
||||
cosU1 * sinU2 * cosLambda - sinU1 * cosU2);
|
||||
return {
|
||||
distance: this.b * A * (sigma - deltaSigma),
|
||||
initialBearing: goog.math.toDegrees(alpha1),
|
||||
finalBearing: goog.math.toDegrees(alpha2)
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Returns the distance from c1 to c2 using Vincenty.
|
||||
*
|
||||
* @param {ol.Coordinate} c1 Coordinate 1.
|
||||
* @param {ol.Coordinate} c2 Coordinate 1.
|
||||
* @param {number=} opt_minDeltaLambda Minimum delta lambda for convergence.
|
||||
* @param {number=} opt_maxIterations Maximum iterations.
|
||||
* @return {number} Vincenty distance.
|
||||
*/
|
||||
ol.Ellipsoid.prototype.vincentyDistance =
|
||||
function(c1, c2, opt_minDeltaLambda, opt_maxIterations) {
|
||||
var vincenty = this.vincenty(c1, c2, opt_minDeltaLambda, opt_maxIterations);
|
||||
return vincenty.distance;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Returns the final bearing from c1 to c2 using Vincenty.
|
||||
*
|
||||
* @param {ol.Coordinate} c1 Coordinate 1.
|
||||
* @param {ol.Coordinate} c2 Coordinate 1.
|
||||
* @param {number=} opt_minDeltaLambda Minimum delta lambda for convergence.
|
||||
* @param {number=} opt_maxIterations Maximum iterations.
|
||||
* @return {number} Initial bearing.
|
||||
*/
|
||||
ol.Ellipsoid.prototype.vincentyFinalBearing =
|
||||
function(c1, c2, opt_minDeltaLambda, opt_maxIterations) {
|
||||
var vincenty = this.vincenty(c1, c2, opt_minDeltaLambda, opt_maxIterations);
|
||||
return vincenty.finalBearing;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Returns the initial bearing from c1 to c2 using Vincenty.
|
||||
*
|
||||
* @param {ol.Coordinate} c1 Coordinate 1.
|
||||
* @param {ol.Coordinate} c2 Coordinate 1.
|
||||
* @param {number=} opt_minDeltaLambda Minimum delta lambda for convergence.
|
||||
* @param {number=} opt_maxIterations Maximum iterations.
|
||||
* @return {number} Initial bearing.
|
||||
*/
|
||||
ol.Ellipsoid.prototype.vincentyInitialBearing =
|
||||
function(c1, c2, opt_minDeltaLambda, opt_maxIterations) {
|
||||
var vincenty = this.vincenty(c1, c2, opt_minDeltaLambda, opt_maxIterations);
|
||||
return vincenty.initialBearing;
|
||||
};
|
||||
@@ -1,10 +0,0 @@
|
||||
goog.provide('ol.ellipsoid.WGS84');
|
||||
|
||||
goog.require('ol.Ellipsoid');
|
||||
|
||||
|
||||
/**
|
||||
* @const
|
||||
* @type {ol.Ellipsoid}
|
||||
*/
|
||||
ol.ellipsoid.WGS84 = new ol.Ellipsoid(6378137, 1 / 298.257223563);
|
||||
@@ -149,6 +149,9 @@ ol.Feature.prototype.getGeometry = function() {
|
||||
|
||||
|
||||
/**
|
||||
* Get the feature identifier. This is a stable identifier for the feature and
|
||||
* is either set when reading data from a remote source or set explicitly by
|
||||
* calling {@link ol.Feature#setId}.
|
||||
* @return {number|string|undefined} Id.
|
||||
* @api stable
|
||||
* @observable
|
||||
@@ -283,8 +286,9 @@ ol.Feature.prototype.setGeometryName = function(name) {
|
||||
|
||||
|
||||
/**
|
||||
* A function that returns a style given a resolution. The `this` keyword inside
|
||||
* the function references the {@link ol.Feature} to be styled.
|
||||
* A function that returns an array of {@link ol.style.Style styles} given a
|
||||
* resolution. The `this` keyword inside the function references the
|
||||
* {@link ol.Feature} to be styled.
|
||||
*
|
||||
* @typedef {function(this: ol.Feature, number): Array.<ol.style.Style>}
|
||||
* @api stable
|
||||
@@ -301,13 +305,10 @@ ol.FeatureStyleFunction;
|
||||
* @return {ol.FeatureStyleFunction} A style function.
|
||||
*/
|
||||
ol.Feature.createStyleFunction = function(obj) {
|
||||
/**
|
||||
* @type {ol.FeatureStyleFunction}
|
||||
*/
|
||||
var styleFunction;
|
||||
|
||||
if (goog.isFunction(obj)) {
|
||||
styleFunction = /** @type {ol.FeatureStyleFunction} */ (obj);
|
||||
styleFunction = obj;
|
||||
} else {
|
||||
/**
|
||||
* @type {Array.<ol.style.Style>}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
goog.provide('ol.FeatureLoader');
|
||||
goog.provide('ol.FeatureUrlFunction');
|
||||
goog.provide('ol.featureloader');
|
||||
|
||||
goog.require('goog.asserts');
|
||||
@@ -11,6 +12,16 @@ goog.require('ol.xml');
|
||||
|
||||
|
||||
/**
|
||||
* {@link ol.source.Vector} sources use a function of this type to load
|
||||
* features.
|
||||
*
|
||||
* This function takes an {@link ol.Extent} representing the area to be loaded,
|
||||
* a `{number}` representing the resolution (map units per pixel) and an
|
||||
* {@link ol.proj.Projection} for the projection as arguments. `this` within
|
||||
* the function is bound to the {@link ol.source.Vector} it's called from.
|
||||
*
|
||||
* The function is responsible for loading the features and adding them to the
|
||||
* source.
|
||||
* @api
|
||||
* @typedef {function(this:ol.source.Vector, ol.Extent, number,
|
||||
* ol.proj.Projection)}
|
||||
@@ -19,7 +30,21 @@ ol.FeatureLoader;
|
||||
|
||||
|
||||
/**
|
||||
* @param {string} url Feature URL service.
|
||||
* {@link ol.source.Vector} sources use a function of this type to get the url
|
||||
* to load features from.
|
||||
*
|
||||
* This function takes an {@link ol.Extent} representing the area to be loaded,
|
||||
* a `{number}` representing the resolution (map units per pixel) and an
|
||||
* {@link ol.proj.Projection} for the projection as arguments and returns a
|
||||
* `{string}` representing the URL.
|
||||
* @api
|
||||
* @typedef {function(ol.Extent, number, ol.proj.Projection) : string}
|
||||
*/
|
||||
ol.FeatureUrlFunction;
|
||||
|
||||
|
||||
/**
|
||||
* @param {string|ol.FeatureUrlFunction} url Feature URL service.
|
||||
* @param {ol.format.Feature} format Feature format.
|
||||
* @param {function(this:ol.source.Vector, Array.<ol.Feature>)} success
|
||||
* Function called with the loaded features. Called with the vector
|
||||
@@ -77,7 +102,12 @@ ol.featureloader.loadFeaturesXhr = function(url, format, success) {
|
||||
}
|
||||
goog.dispose(xhrIo);
|
||||
}, false, this);
|
||||
xhrIo.send(url);
|
||||
if (goog.isFunction(url)) {
|
||||
xhrIo.send(url(extent, resolution, projection));
|
||||
} else {
|
||||
xhrIo.send(url);
|
||||
}
|
||||
|
||||
});
|
||||
};
|
||||
|
||||
@@ -86,7 +116,7 @@ ol.featureloader.loadFeaturesXhr = function(url, format, success) {
|
||||
* Create an XHR feature loader for a `url` and `format`. The feature loader
|
||||
* loads features (with XHR), parses the features, and adds them to the
|
||||
* vector source.
|
||||
* @param {string} url Feature URL service.
|
||||
* @param {string|ol.FeatureUrlFunction} url Feature URL service.
|
||||
* @param {ol.format.Feature} format Feature format.
|
||||
* @return {ol.FeatureLoader} The feature loader.
|
||||
* @api
|
||||
|
||||
@@ -3,7 +3,6 @@ goog.provide('ol.format.GML2');
|
||||
goog.require('goog.asserts');
|
||||
goog.require('goog.dom.NodeType');
|
||||
goog.require('ol.extent');
|
||||
goog.require('ol.format.GML');
|
||||
goog.require('ol.format.GMLBase');
|
||||
goog.require('ol.format.XSD');
|
||||
goog.require('ol.proj');
|
||||
|
||||
@@ -286,7 +286,7 @@ ol.format.GPX.FEATURE_READER_ = {
|
||||
* @type {Object.<string, Object.<string, ol.xml.Parser>>}
|
||||
* @private
|
||||
*/
|
||||
ol.format.GPX.GPX_PARSERS_ = ol.xml.makeParsersNS(
|
||||
ol.format.GPX.GPX_PARSERS_ = ol.xml.makeStructureNS(
|
||||
ol.format.GPX.NAMESPACE_URIS_, {
|
||||
'rte': ol.xml.makeArrayPusher(ol.format.GPX.readRte_),
|
||||
'trk': ol.xml.makeArrayPusher(ol.format.GPX.readTrk_),
|
||||
@@ -299,7 +299,7 @@ ol.format.GPX.GPX_PARSERS_ = ol.xml.makeParsersNS(
|
||||
* @type {Object.<string, Object.<string, ol.xml.Parser>>}
|
||||
* @private
|
||||
*/
|
||||
ol.format.GPX.LINK_PARSERS_ = ol.xml.makeParsersNS(
|
||||
ol.format.GPX.LINK_PARSERS_ = ol.xml.makeStructureNS(
|
||||
ol.format.GPX.NAMESPACE_URIS_, {
|
||||
'text':
|
||||
ol.xml.makeObjectPropertySetter(ol.format.XSD.readString, 'linkText'),
|
||||
@@ -313,7 +313,7 @@ ol.format.GPX.LINK_PARSERS_ = ol.xml.makeParsersNS(
|
||||
* @type {Object.<string, Object.<string, ol.xml.Parser>>}
|
||||
* @private
|
||||
*/
|
||||
ol.format.GPX.RTE_PARSERS_ = ol.xml.makeParsersNS(
|
||||
ol.format.GPX.RTE_PARSERS_ = ol.xml.makeStructureNS(
|
||||
ol.format.GPX.NAMESPACE_URIS_, {
|
||||
'name': ol.xml.makeObjectPropertySetter(ol.format.XSD.readString),
|
||||
'cmt': ol.xml.makeObjectPropertySetter(ol.format.XSD.readString),
|
||||
@@ -333,7 +333,7 @@ ol.format.GPX.RTE_PARSERS_ = ol.xml.makeParsersNS(
|
||||
* @type {Object.<string, Object.<string, ol.xml.Parser>>}
|
||||
* @private
|
||||
*/
|
||||
ol.format.GPX.RTEPT_PARSERS_ = ol.xml.makeParsersNS(
|
||||
ol.format.GPX.RTEPT_PARSERS_ = ol.xml.makeStructureNS(
|
||||
ol.format.GPX.NAMESPACE_URIS_, {
|
||||
'ele': ol.xml.makeObjectPropertySetter(ol.format.XSD.readDecimal),
|
||||
'time': ol.xml.makeObjectPropertySetter(ol.format.XSD.readDateTime)
|
||||
@@ -345,7 +345,7 @@ ol.format.GPX.RTEPT_PARSERS_ = ol.xml.makeParsersNS(
|
||||
* @type {Object.<string, Object.<string, ol.xml.Parser>>}
|
||||
* @private
|
||||
*/
|
||||
ol.format.GPX.TRK_PARSERS_ = ol.xml.makeParsersNS(
|
||||
ol.format.GPX.TRK_PARSERS_ = ol.xml.makeStructureNS(
|
||||
ol.format.GPX.NAMESPACE_URIS_, {
|
||||
'name': ol.xml.makeObjectPropertySetter(ol.format.XSD.readString),
|
||||
'cmt': ol.xml.makeObjectPropertySetter(ol.format.XSD.readString),
|
||||
@@ -365,7 +365,7 @@ ol.format.GPX.TRK_PARSERS_ = ol.xml.makeParsersNS(
|
||||
* @type {Object.<string, Object.<string, ol.xml.Parser>>}
|
||||
* @private
|
||||
*/
|
||||
ol.format.GPX.TRKSEG_PARSERS_ = ol.xml.makeParsersNS(
|
||||
ol.format.GPX.TRKSEG_PARSERS_ = ol.xml.makeStructureNS(
|
||||
ol.format.GPX.NAMESPACE_URIS_, {
|
||||
'trkpt': ol.format.GPX.parseTrkPt_
|
||||
});
|
||||
@@ -376,7 +376,7 @@ ol.format.GPX.TRKSEG_PARSERS_ = ol.xml.makeParsersNS(
|
||||
* @type {Object.<string, Object.<string, ol.xml.Parser>>}
|
||||
* @private
|
||||
*/
|
||||
ol.format.GPX.TRKPT_PARSERS_ = ol.xml.makeParsersNS(
|
||||
ol.format.GPX.TRKPT_PARSERS_ = ol.xml.makeStructureNS(
|
||||
ol.format.GPX.NAMESPACE_URIS_, {
|
||||
'ele': ol.xml.makeObjectPropertySetter(ol.format.XSD.readDecimal),
|
||||
'time': ol.xml.makeObjectPropertySetter(ol.format.XSD.readDateTime)
|
||||
@@ -388,7 +388,7 @@ ol.format.GPX.TRKPT_PARSERS_ = ol.xml.makeParsersNS(
|
||||
* @type {Object.<string, Object.<string, ol.xml.Parser>>}
|
||||
* @private
|
||||
*/
|
||||
ol.format.GPX.WPT_PARSERS_ = ol.xml.makeParsersNS(
|
||||
ol.format.GPX.WPT_PARSERS_ = ol.xml.makeStructureNS(
|
||||
ol.format.GPX.NAMESPACE_URIS_, {
|
||||
'ele': ol.xml.makeObjectPropertySetter(ol.format.XSD.readDecimal),
|
||||
'time': ol.xml.makeObjectPropertySetter(ol.format.XSD.readDateTime),
|
||||
|
||||
@@ -77,34 +77,13 @@ ol.format.KML = function(opt_options) {
|
||||
*/
|
||||
this.defaultDataProjection = ol.proj.get('EPSG:4326');
|
||||
|
||||
var defaultStyle = goog.isDef(options.defaultStyle) ?
|
||||
/**
|
||||
* @private
|
||||
* @type {Array.<ol.style.Style>}
|
||||
*/
|
||||
this.defaultStyle_ = goog.isDef(options.defaultStyle) ?
|
||||
options.defaultStyle : ol.format.KML.DEFAULT_STYLE_ARRAY_;
|
||||
|
||||
/** @type {Object.<string, (Array.<ol.style.Style>|string)>} */
|
||||
var sharedStyles = {};
|
||||
|
||||
var findStyle =
|
||||
/**
|
||||
* @param {Array.<ol.style.Style>|string|undefined} styleValue Style
|
||||
* value.
|
||||
* @return {Array.<ol.style.Style>} Style.
|
||||
*/
|
||||
function(styleValue) {
|
||||
if (goog.isArray(styleValue)) {
|
||||
return styleValue;
|
||||
} else if (goog.isString(styleValue)) {
|
||||
// KML files in the wild occasionally forget the leading `#` on styleUrls
|
||||
// defined in the same document. Add a leading `#` if it enables to find
|
||||
// a style.
|
||||
if (!(styleValue in sharedStyles) && ('#' + styleValue in sharedStyles)) {
|
||||
styleValue = '#' + styleValue;
|
||||
}
|
||||
return findStyle(sharedStyles[styleValue]);
|
||||
} else {
|
||||
return defaultStyle;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* @private
|
||||
* @type {boolean}
|
||||
@@ -116,30 +95,7 @@ ol.format.KML = function(opt_options) {
|
||||
* @private
|
||||
* @type {Object.<string, (Array.<ol.style.Style>|string)>}
|
||||
*/
|
||||
this.sharedStyles_ = sharedStyles;
|
||||
|
||||
/**
|
||||
* @private
|
||||
* @type {ol.FeatureStyleFunction}
|
||||
*/
|
||||
this.featureStyleFunction_ =
|
||||
/**
|
||||
* @param {number} resolution Resolution.
|
||||
* @return {Array.<ol.style.Style>} Style.
|
||||
* @this {ol.Feature}
|
||||
*/
|
||||
function(resolution) {
|
||||
var style = /** @type {Array.<ol.style.Style>|undefined} */
|
||||
(this.get('Style'));
|
||||
if (goog.isDef(style)) {
|
||||
return style;
|
||||
}
|
||||
var styleUrl = /** @type {string|undefined} */ (this.get('styleUrl'));
|
||||
if (goog.isDef(styleUrl)) {
|
||||
return findStyle(styleUrl);
|
||||
}
|
||||
return defaultStyle;
|
||||
};
|
||||
this.sharedStyles_ = {};
|
||||
|
||||
};
|
||||
goog.inherits(ol.format.KML, ol.format.XMLFeature);
|
||||
@@ -322,6 +278,61 @@ ol.format.KML.ICON_ANCHOR_UNITS_MAP_ = {
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @param {Array.<ol.style.Style>|undefined} style Style.
|
||||
* @param {string} styleUrl Style URL.
|
||||
* @param {Array.<ol.style.Style>} defaultStyle Default style.
|
||||
* @param {Object.<string, (Array.<ol.style.Style>|string)>} sharedStyles
|
||||
* Shared styles.
|
||||
* @return {ol.FeatureStyleFunction} Feature style function.
|
||||
* @private
|
||||
*/
|
||||
ol.format.KML.createFeatureStyleFunction_ = function(
|
||||
style, styleUrl, defaultStyle, sharedStyles) {
|
||||
return (
|
||||
/**
|
||||
* @param {number} resolution Resolution.
|
||||
* @return {Array.<ol.style.Style>} Style.
|
||||
* @this {ol.Feature}
|
||||
*/
|
||||
function(resolution) {
|
||||
if (goog.isDef(style)) {
|
||||
return style;
|
||||
}
|
||||
if (goog.isDef(styleUrl)) {
|
||||
return ol.format.KML.findStyle_(styleUrl, defaultStyle, sharedStyles);
|
||||
}
|
||||
return defaultStyle;
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @param {Array.<ol.style.Style>|string|undefined} styleValue Style value.
|
||||
* @param {Array.<ol.style.Style>} defaultStyle Default style.
|
||||
* @param {Object.<string, (Array.<ol.style.Style>|string)>} sharedStyles
|
||||
* Shared styles.
|
||||
* @return {Array.<ol.style.Style>} Style.
|
||||
* @private
|
||||
*/
|
||||
ol.format.KML.findStyle_ = function(styleValue, defaultStyle, sharedStyles) {
|
||||
if (goog.isArray(styleValue)) {
|
||||
return styleValue;
|
||||
} else if (goog.isString(styleValue)) {
|
||||
// KML files in the wild occasionally forget the leading `#` on styleUrls
|
||||
// defined in the same document. Add a leading `#` if it enables to find
|
||||
// a style.
|
||||
if (!(styleValue in sharedStyles) && ('#' + styleValue in sharedStyles)) {
|
||||
styleValue = '#' + styleValue;
|
||||
}
|
||||
return ol.format.KML.findStyle_(
|
||||
sharedStyles[styleValue], defaultStyle, sharedStyles);
|
||||
} else {
|
||||
return defaultStyle;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @param {Node} node Node.
|
||||
* @private
|
||||
@@ -1299,7 +1310,7 @@ ol.format.KML.whenParser_ = function(node, objectStack) {
|
||||
* @type {Object.<string, Object.<string, ol.xml.Parser>>}
|
||||
* @private
|
||||
*/
|
||||
ol.format.KML.DATA_PARSERS_ = ol.xml.makeParsersNS(
|
||||
ol.format.KML.DATA_PARSERS_ = ol.xml.makeStructureNS(
|
||||
ol.format.KML.NAMESPACE_URIS_, {
|
||||
'value': ol.xml.makeReplacer(ol.format.XSD.readString)
|
||||
});
|
||||
@@ -1310,7 +1321,7 @@ ol.format.KML.DATA_PARSERS_ = ol.xml.makeParsersNS(
|
||||
* @type {Object.<string, Object.<string, ol.xml.Parser>>}
|
||||
* @private
|
||||
*/
|
||||
ol.format.KML.EXTENDED_DATA_PARSERS_ = ol.xml.makeParsersNS(
|
||||
ol.format.KML.EXTENDED_DATA_PARSERS_ = ol.xml.makeStructureNS(
|
||||
ol.format.KML.NAMESPACE_URIS_, {
|
||||
'Data': ol.format.KML.DataParser_,
|
||||
'SchemaData': ol.format.KML.SchemaDataParser_
|
||||
@@ -1322,7 +1333,7 @@ ol.format.KML.EXTENDED_DATA_PARSERS_ = ol.xml.makeParsersNS(
|
||||
* @type {Object.<string, Object.<string, ol.xml.Parser>>}
|
||||
* @private
|
||||
*/
|
||||
ol.format.KML.EXTRUDE_AND_ALTITUDE_MODE_PARSERS_ = ol.xml.makeParsersNS(
|
||||
ol.format.KML.EXTRUDE_AND_ALTITUDE_MODE_PARSERS_ = ol.xml.makeStructureNS(
|
||||
ol.format.KML.NAMESPACE_URIS_, {
|
||||
'extrude': ol.xml.makeObjectPropertySetter(ol.format.XSD.readBoolean),
|
||||
'altitudeMode': ol.xml.makeObjectPropertySetter(ol.format.XSD.readString)
|
||||
@@ -1334,7 +1345,7 @@ ol.format.KML.EXTRUDE_AND_ALTITUDE_MODE_PARSERS_ = ol.xml.makeParsersNS(
|
||||
* @type {Object.<string, Object.<string, ol.xml.Parser>>}
|
||||
* @private
|
||||
*/
|
||||
ol.format.KML.FLAT_LINEAR_RING_PARSERS_ = ol.xml.makeParsersNS(
|
||||
ol.format.KML.FLAT_LINEAR_RING_PARSERS_ = ol.xml.makeStructureNS(
|
||||
ol.format.KML.NAMESPACE_URIS_, {
|
||||
'coordinates': ol.xml.makeReplacer(ol.format.KML.readFlatCoordinates_)
|
||||
});
|
||||
@@ -1345,7 +1356,7 @@ ol.format.KML.FLAT_LINEAR_RING_PARSERS_ = ol.xml.makeParsersNS(
|
||||
* @type {Object.<string, Object.<string, ol.xml.Parser>>}
|
||||
* @private
|
||||
*/
|
||||
ol.format.KML.FLAT_LINEAR_RINGS_PARSERS_ = ol.xml.makeParsersNS(
|
||||
ol.format.KML.FLAT_LINEAR_RINGS_PARSERS_ = ol.xml.makeStructureNS(
|
||||
ol.format.KML.NAMESPACE_URIS_, {
|
||||
'innerBoundaryIs': ol.format.KML.innerBoundaryIsParser_,
|
||||
'outerBoundaryIs': ol.format.KML.outerBoundaryIsParser_
|
||||
@@ -1357,10 +1368,10 @@ ol.format.KML.FLAT_LINEAR_RINGS_PARSERS_ = ol.xml.makeParsersNS(
|
||||
* @type {Object.<string, Object.<string, ol.xml.Parser>>}
|
||||
* @private
|
||||
*/
|
||||
ol.format.KML.GX_TRACK_PARSERS_ = ol.xml.makeParsersNS(
|
||||
ol.format.KML.GX_TRACK_PARSERS_ = ol.xml.makeStructureNS(
|
||||
ol.format.KML.NAMESPACE_URIS_, {
|
||||
'when': ol.format.KML.whenParser_
|
||||
}, ol.xml.makeParsersNS(
|
||||
}, ol.xml.makeStructureNS(
|
||||
ol.format.KML.GX_NAMESPACE_URIS_, {
|
||||
'coord': ol.format.KML.gxCoordParser_
|
||||
}));
|
||||
@@ -1371,7 +1382,7 @@ ol.format.KML.GX_TRACK_PARSERS_ = ol.xml.makeParsersNS(
|
||||
* @type {Object.<string, Object.<string, ol.xml.Parser>>}
|
||||
* @private
|
||||
*/
|
||||
ol.format.KML.GEOMETRY_FLAT_COORDINATES_PARSERS_ = ol.xml.makeParsersNS(
|
||||
ol.format.KML.GEOMETRY_FLAT_COORDINATES_PARSERS_ = ol.xml.makeStructureNS(
|
||||
ol.format.KML.NAMESPACE_URIS_, {
|
||||
'coordinates': ol.xml.makeReplacer(ol.format.KML.readFlatCoordinates_)
|
||||
});
|
||||
@@ -1382,10 +1393,10 @@ ol.format.KML.GEOMETRY_FLAT_COORDINATES_PARSERS_ = ol.xml.makeParsersNS(
|
||||
* @type {Object.<string, Object.<string, ol.xml.Parser>>}
|
||||
* @private
|
||||
*/
|
||||
ol.format.KML.ICON_PARSERS_ = ol.xml.makeParsersNS(
|
||||
ol.format.KML.ICON_PARSERS_ = ol.xml.makeStructureNS(
|
||||
ol.format.KML.NAMESPACE_URIS_, {
|
||||
'href': ol.xml.makeObjectPropertySetter(ol.format.KML.readURI_)
|
||||
}, ol.xml.makeParsersNS(
|
||||
}, ol.xml.makeStructureNS(
|
||||
ol.format.KML.GX_NAMESPACE_URIS_, {
|
||||
'x': ol.xml.makeObjectPropertySetter(ol.format.XSD.readDecimal),
|
||||
'y': ol.xml.makeObjectPropertySetter(ol.format.XSD.readDecimal),
|
||||
@@ -1399,7 +1410,7 @@ ol.format.KML.ICON_PARSERS_ = ol.xml.makeParsersNS(
|
||||
* @type {Object.<string, Object.<string, ol.xml.Parser>>}
|
||||
* @private
|
||||
*/
|
||||
ol.format.KML.ICON_STYLE_PARSERS_ = ol.xml.makeParsersNS(
|
||||
ol.format.KML.ICON_STYLE_PARSERS_ = ol.xml.makeStructureNS(
|
||||
ol.format.KML.NAMESPACE_URIS_, {
|
||||
'Icon': ol.xml.makeObjectPropertySetter(ol.format.KML.readIcon_),
|
||||
'heading': ol.xml.makeObjectPropertySetter(ol.format.XSD.readDecimal),
|
||||
@@ -1413,7 +1424,7 @@ ol.format.KML.ICON_STYLE_PARSERS_ = ol.xml.makeParsersNS(
|
||||
* @type {Object.<string, Object.<string, ol.xml.Parser>>}
|
||||
* @private
|
||||
*/
|
||||
ol.format.KML.INNER_BOUNDARY_IS_PARSERS_ = ol.xml.makeParsersNS(
|
||||
ol.format.KML.INNER_BOUNDARY_IS_PARSERS_ = ol.xml.makeStructureNS(
|
||||
ol.format.KML.NAMESPACE_URIS_, {
|
||||
'LinearRing': ol.xml.makeReplacer(ol.format.KML.readFlatLinearRing_)
|
||||
});
|
||||
@@ -1424,7 +1435,7 @@ ol.format.KML.INNER_BOUNDARY_IS_PARSERS_ = ol.xml.makeParsersNS(
|
||||
* @type {Object.<string, Object.<string, ol.xml.Parser>>}
|
||||
* @private
|
||||
*/
|
||||
ol.format.KML.LABEL_STYLE_PARSERS_ = ol.xml.makeParsersNS(
|
||||
ol.format.KML.LABEL_STYLE_PARSERS_ = ol.xml.makeStructureNS(
|
||||
ol.format.KML.NAMESPACE_URIS_, {
|
||||
'color': ol.xml.makeObjectPropertySetter(ol.format.KML.readColor_),
|
||||
'scale': ol.xml.makeObjectPropertySetter(ol.format.KML.readScale_)
|
||||
@@ -1436,7 +1447,7 @@ ol.format.KML.LABEL_STYLE_PARSERS_ = ol.xml.makeParsersNS(
|
||||
* @type {Object.<string, Object.<string, ol.xml.Parser>>}
|
||||
* @private
|
||||
*/
|
||||
ol.format.KML.LINE_STYLE_PARSERS_ = ol.xml.makeParsersNS(
|
||||
ol.format.KML.LINE_STYLE_PARSERS_ = ol.xml.makeStructureNS(
|
||||
ol.format.KML.NAMESPACE_URIS_, {
|
||||
'color': ol.xml.makeObjectPropertySetter(ol.format.KML.readColor_),
|
||||
'width': ol.xml.makeObjectPropertySetter(ol.format.XSD.readDecimal)
|
||||
@@ -1448,7 +1459,7 @@ ol.format.KML.LINE_STYLE_PARSERS_ = ol.xml.makeParsersNS(
|
||||
* @type {Object.<string, Object.<string, ol.xml.Parser>>}
|
||||
* @private
|
||||
*/
|
||||
ol.format.KML.MULTI_GEOMETRY_PARSERS_ = ol.xml.makeParsersNS(
|
||||
ol.format.KML.MULTI_GEOMETRY_PARSERS_ = ol.xml.makeStructureNS(
|
||||
ol.format.KML.NAMESPACE_URIS_, {
|
||||
'LineString': ol.xml.makeArrayPusher(ol.format.KML.readLineString_),
|
||||
'LinearRing': ol.xml.makeArrayPusher(ol.format.KML.readLinearRing_),
|
||||
@@ -1463,7 +1474,7 @@ ol.format.KML.MULTI_GEOMETRY_PARSERS_ = ol.xml.makeParsersNS(
|
||||
* @type {Object.<string, Object.<string, ol.xml.Parser>>}
|
||||
* @private
|
||||
*/
|
||||
ol.format.KML.GX_MULTITRACK_GEOMETRY_PARSERS_ = ol.xml.makeParsersNS(
|
||||
ol.format.KML.GX_MULTITRACK_GEOMETRY_PARSERS_ = ol.xml.makeStructureNS(
|
||||
ol.format.KML.GX_NAMESPACE_URIS_, {
|
||||
'Track': ol.xml.makeArrayPusher(ol.format.KML.readGxTrack_)
|
||||
});
|
||||
@@ -1474,7 +1485,7 @@ ol.format.KML.GX_MULTITRACK_GEOMETRY_PARSERS_ = ol.xml.makeParsersNS(
|
||||
* @type {Object.<string, Object.<string, ol.xml.Parser>>}
|
||||
* @private
|
||||
*/
|
||||
ol.format.KML.NETWORK_LINK_PARSERS_ = ol.xml.makeParsersNS(
|
||||
ol.format.KML.NETWORK_LINK_PARSERS_ = ol.xml.makeStructureNS(
|
||||
ol.format.KML.NAMESPACE_URIS_, {
|
||||
'ExtendedData': ol.format.KML.ExtendedDataParser_,
|
||||
'Link': ol.format.KML.LinkParser_,
|
||||
@@ -1492,7 +1503,7 @@ ol.format.KML.NETWORK_LINK_PARSERS_ = ol.xml.makeParsersNS(
|
||||
* @type {Object.<string, Object.<string, ol.xml.Parser>>}
|
||||
* @private
|
||||
*/
|
||||
ol.format.KML.LINK_PARSERS_ = ol.xml.makeParsersNS(
|
||||
ol.format.KML.LINK_PARSERS_ = ol.xml.makeStructureNS(
|
||||
ol.format.KML.NAMESPACE_URIS_, {
|
||||
'href': ol.xml.makeObjectPropertySetter(ol.format.KML.readURI_)
|
||||
});
|
||||
@@ -1503,7 +1514,7 @@ ol.format.KML.LINK_PARSERS_ = ol.xml.makeParsersNS(
|
||||
* @type {Object.<string, Object.<string, ol.xml.Parser>>}
|
||||
* @private
|
||||
*/
|
||||
ol.format.KML.OUTER_BOUNDARY_IS_PARSERS_ = ol.xml.makeParsersNS(
|
||||
ol.format.KML.OUTER_BOUNDARY_IS_PARSERS_ = ol.xml.makeStructureNS(
|
||||
ol.format.KML.NAMESPACE_URIS_, {
|
||||
'LinearRing': ol.xml.makeReplacer(ol.format.KML.readFlatLinearRing_)
|
||||
});
|
||||
@@ -1514,7 +1525,7 @@ ol.format.KML.OUTER_BOUNDARY_IS_PARSERS_ = ol.xml.makeParsersNS(
|
||||
* @type {Object.<string, Object.<string, ol.xml.Parser>>}
|
||||
* @private
|
||||
*/
|
||||
ol.format.KML.PAIR_PARSERS_ = ol.xml.makeParsersNS(
|
||||
ol.format.KML.PAIR_PARSERS_ = ol.xml.makeStructureNS(
|
||||
ol.format.KML.NAMESPACE_URIS_, {
|
||||
'Style': ol.xml.makeObjectPropertySetter(ol.format.KML.readStyle_),
|
||||
'key': ol.xml.makeObjectPropertySetter(ol.format.XSD.readString),
|
||||
@@ -1527,7 +1538,7 @@ ol.format.KML.PAIR_PARSERS_ = ol.xml.makeParsersNS(
|
||||
* @type {Object.<string, Object.<string, ol.xml.Parser>>}
|
||||
* @private
|
||||
*/
|
||||
ol.format.KML.PLACEMARK_PARSERS_ = ol.xml.makeParsersNS(
|
||||
ol.format.KML.PLACEMARK_PARSERS_ = ol.xml.makeStructureNS(
|
||||
ol.format.KML.NAMESPACE_URIS_, {
|
||||
'ExtendedData': ol.format.KML.ExtendedDataParser_,
|
||||
'MultiGeometry': ol.xml.makeObjectPropertySetter(
|
||||
@@ -1549,7 +1560,7 @@ ol.format.KML.PLACEMARK_PARSERS_ = ol.xml.makeParsersNS(
|
||||
'phoneNumber': ol.xml.makeObjectPropertySetter(ol.format.XSD.readString),
|
||||
'styleUrl': ol.xml.makeObjectPropertySetter(ol.format.KML.readURI_),
|
||||
'visibility': ol.xml.makeObjectPropertySetter(ol.format.XSD.readBoolean)
|
||||
}, ol.xml.makeParsersNS(
|
||||
}, ol.xml.makeStructureNS(
|
||||
ol.format.KML.GX_NAMESPACE_URIS_, {
|
||||
'MultiTrack': ol.xml.makeObjectPropertySetter(
|
||||
ol.format.KML.readGxMultiTrack_, 'geometry'),
|
||||
@@ -1564,7 +1575,7 @@ ol.format.KML.PLACEMARK_PARSERS_ = ol.xml.makeParsersNS(
|
||||
* @type {Object.<string, Object.<string, ol.xml.Parser>>}
|
||||
* @private
|
||||
*/
|
||||
ol.format.KML.POLY_STYLE_PARSERS_ = ol.xml.makeParsersNS(
|
||||
ol.format.KML.POLY_STYLE_PARSERS_ = ol.xml.makeStructureNS(
|
||||
ol.format.KML.NAMESPACE_URIS_, {
|
||||
'color': ol.xml.makeObjectPropertySetter(ol.format.KML.readColor_),
|
||||
'fill': ol.xml.makeObjectPropertySetter(ol.format.XSD.readBoolean),
|
||||
@@ -1577,7 +1588,7 @@ ol.format.KML.POLY_STYLE_PARSERS_ = ol.xml.makeParsersNS(
|
||||
* @type {Object.<string, Object.<string, ol.xml.Parser>>}
|
||||
* @private
|
||||
*/
|
||||
ol.format.KML.SCHEMA_DATA_PARSERS_ = ol.xml.makeParsersNS(
|
||||
ol.format.KML.SCHEMA_DATA_PARSERS_ = ol.xml.makeStructureNS(
|
||||
ol.format.KML.NAMESPACE_URIS_, {
|
||||
'SimpleData': ol.format.KML.SimpleDataParser_
|
||||
});
|
||||
@@ -1588,7 +1599,7 @@ ol.format.KML.SCHEMA_DATA_PARSERS_ = ol.xml.makeParsersNS(
|
||||
* @type {Object.<string, Object.<string, ol.xml.Parser>>}
|
||||
* @private
|
||||
*/
|
||||
ol.format.KML.STYLE_PARSERS_ = ol.xml.makeParsersNS(
|
||||
ol.format.KML.STYLE_PARSERS_ = ol.xml.makeStructureNS(
|
||||
ol.format.KML.NAMESPACE_URIS_, {
|
||||
'IconStyle': ol.format.KML.IconStyleParser_,
|
||||
'LabelStyle': ol.format.KML.LabelStyleParser_,
|
||||
@@ -1602,7 +1613,7 @@ ol.format.KML.STYLE_PARSERS_ = ol.xml.makeParsersNS(
|
||||
* @type {Object.<string, Object.<string, ol.xml.Parser>>}
|
||||
* @private
|
||||
*/
|
||||
ol.format.KML.STYLE_MAP_PARSERS_ = ol.xml.makeParsersNS(
|
||||
ol.format.KML.STYLE_MAP_PARSERS_ = ol.xml.makeStructureNS(
|
||||
ol.format.KML.NAMESPACE_URIS_, {
|
||||
'Pair': ol.format.KML.PairDataParser_
|
||||
});
|
||||
@@ -1629,8 +1640,9 @@ ol.format.KML.prototype.readDocumentOrFolder_ = function(node, objectStack) {
|
||||
goog.asserts.assert(localName == 'Document' || localName == 'Folder',
|
||||
'localName should be Document or Folder');
|
||||
// FIXME use scope somehow
|
||||
var parsersNS = ol.xml.makeParsersNS(
|
||||
var parsersNS = ol.xml.makeStructureNS(
|
||||
ol.format.KML.NAMESPACE_URIS_, {
|
||||
'Document': ol.xml.makeArrayExtender(this.readDocumentOrFolder_, this),
|
||||
'Folder': ol.xml.makeArrayExtender(this.readDocumentOrFolder_, this),
|
||||
'Placemark': ol.xml.makeArrayPusher(this.readPlacemark_, this),
|
||||
'Style': goog.bind(this.readSharedStyle_, this),
|
||||
@@ -1668,13 +1680,27 @@ ol.format.KML.prototype.readPlacemark_ = function(node, objectStack) {
|
||||
feature.setId(id);
|
||||
}
|
||||
var options = /** @type {olx.format.ReadOptions} */ (objectStack[0]);
|
||||
if (goog.isDefAndNotNull(object.geometry)) {
|
||||
ol.format.Feature.transformWithOptions(object.geometry, false, options);
|
||||
|
||||
var geometry = object['geometry'];
|
||||
if (goog.isDefAndNotNull(geometry)) {
|
||||
ol.format.Feature.transformWithOptions(geometry, false, options);
|
||||
}
|
||||
feature.setProperties(object);
|
||||
feature.setGeometry(geometry);
|
||||
goog.object.remove(object, 'geometry');
|
||||
|
||||
if (this.extractStyles_) {
|
||||
feature.setStyle(this.featureStyleFunction_);
|
||||
var style = object['Style'];
|
||||
var styleUrl = object['styleUrl'];
|
||||
var styleFunction = ol.format.KML.createFeatureStyleFunction_(
|
||||
style, styleUrl, this.defaultStyle_, this.sharedStyles_);
|
||||
feature.setStyle(styleFunction);
|
||||
}
|
||||
goog.object.remove(object, 'Style');
|
||||
// we do not remove the styleUrl property from the object, so it
|
||||
// gets stored on feature when setProperties is called
|
||||
|
||||
feature.setProperties(object);
|
||||
|
||||
return feature;
|
||||
};
|
||||
|
||||
|
||||
@@ -169,7 +169,7 @@ ol.format.OSMXML.NAMESPACE_URIS_ = [
|
||||
* @type {Object.<string, Object.<string, ol.xml.Parser>>}
|
||||
* @private
|
||||
*/
|
||||
ol.format.OSMXML.WAY_PARSERS_ = ol.xml.makeParsersNS(
|
||||
ol.format.OSMXML.WAY_PARSERS_ = ol.xml.makeStructureNS(
|
||||
ol.format.OSMXML.NAMESPACE_URIS_, {
|
||||
'nd': ol.format.OSMXML.readNd_,
|
||||
'tag': ol.format.OSMXML.readTag_
|
||||
@@ -181,7 +181,7 @@ ol.format.OSMXML.WAY_PARSERS_ = ol.xml.makeParsersNS(
|
||||
* @type {Object.<string, Object.<string, ol.xml.Parser>>}
|
||||
* @private
|
||||
*/
|
||||
ol.format.OSMXML.PARSERS_ = ol.xml.makeParsersNS(
|
||||
ol.format.OSMXML.PARSERS_ = ol.xml.makeStructureNS(
|
||||
ol.format.OSMXML.NAMESPACE_URIS_, {
|
||||
'node': ol.format.OSMXML.readNode_,
|
||||
'way': ol.format.OSMXML.readWay_
|
||||
@@ -193,7 +193,7 @@ ol.format.OSMXML.PARSERS_ = ol.xml.makeParsersNS(
|
||||
* @type {Object.<string, Object.<string, ol.xml.Parser>>}
|
||||
* @private
|
||||
*/
|
||||
ol.format.OSMXML.NODE_PARSERS_ = ol.xml.makeParsersNS(
|
||||
ol.format.OSMXML.NODE_PARSERS_ = ol.xml.makeStructureNS(
|
||||
ol.format.OSMXML.NAMESPACE_URIS_, {
|
||||
'tag': ol.format.OSMXML.readTag_
|
||||
});
|
||||
|
||||
@@ -306,7 +306,7 @@ ol.format.OWS.NAMESPACE_URIS_ = [
|
||||
* @type {Object.<string, Object.<string, ol.xml.Parser>>}
|
||||
* @private
|
||||
*/
|
||||
ol.format.OWS.PARSERS_ = ol.xml.makeParsersNS(
|
||||
ol.format.OWS.PARSERS_ = ol.xml.makeStructureNS(
|
||||
ol.format.OWS.NAMESPACE_URIS_, {
|
||||
'ServiceIdentification': ol.xml.makeObjectPropertySetter(
|
||||
ol.format.OWS.readServiceIdentification_),
|
||||
@@ -322,7 +322,7 @@ ol.format.OWS.PARSERS_ = ol.xml.makeParsersNS(
|
||||
* @type {Object.<string, Object.<string, ol.xml.Parser>>}
|
||||
* @private
|
||||
*/
|
||||
ol.format.OWS.ADDRESS_PARSERS_ = ol.xml.makeParsersNS(
|
||||
ol.format.OWS.ADDRESS_PARSERS_ = ol.xml.makeStructureNS(
|
||||
ol.format.OWS.NAMESPACE_URIS_, {
|
||||
'DeliveryPoint': ol.xml.makeObjectPropertySetter(
|
||||
ol.format.XSD.readString),
|
||||
@@ -341,7 +341,7 @@ ol.format.OWS.ADDRESS_PARSERS_ = ol.xml.makeParsersNS(
|
||||
* @type {Object.<string, Object.<string, ol.xml.Parser>>}
|
||||
* @private
|
||||
*/
|
||||
ol.format.OWS.ALLOWED_VALUES_PARSERS_ = ol.xml.makeParsersNS(
|
||||
ol.format.OWS.ALLOWED_VALUES_PARSERS_ = ol.xml.makeStructureNS(
|
||||
ol.format.OWS.NAMESPACE_URIS_, {
|
||||
'Value': ol.xml.makeObjectPropertyPusher(ol.format.OWS.readValue_)
|
||||
});
|
||||
@@ -352,7 +352,7 @@ ol.format.OWS.ALLOWED_VALUES_PARSERS_ = ol.xml.makeParsersNS(
|
||||
* @type {Object.<string, Object.<string, ol.xml.Parser>>}
|
||||
* @private
|
||||
*/
|
||||
ol.format.OWS.CONSTRAINT_PARSERS_ = ol.xml.makeParsersNS(
|
||||
ol.format.OWS.CONSTRAINT_PARSERS_ = ol.xml.makeStructureNS(
|
||||
ol.format.OWS.NAMESPACE_URIS_, {
|
||||
'AllowedValues': ol.xml.makeObjectPropertySetter(
|
||||
ol.format.OWS.readAllowedValues_)
|
||||
@@ -364,7 +364,7 @@ ol.format.OWS.CONSTRAINT_PARSERS_ = ol.xml.makeParsersNS(
|
||||
* @type {Object.<string, Object.<string, ol.xml.Parser>>}
|
||||
* @private
|
||||
*/
|
||||
ol.format.OWS.CONTACT_INFO_PARSERS_ = ol.xml.makeParsersNS(
|
||||
ol.format.OWS.CONTACT_INFO_PARSERS_ = ol.xml.makeStructureNS(
|
||||
ol.format.OWS.NAMESPACE_URIS_, {
|
||||
'Phone': ol.xml.makeObjectPropertySetter(ol.format.OWS.readPhone_),
|
||||
'Address': ol.xml.makeObjectPropertySetter(ol.format.OWS.readAddress_)
|
||||
@@ -376,7 +376,7 @@ ol.format.OWS.CONTACT_INFO_PARSERS_ = ol.xml.makeParsersNS(
|
||||
* @type {Object.<string, Object.<string, ol.xml.Parser>>}
|
||||
* @private
|
||||
*/
|
||||
ol.format.OWS.DCP_PARSERS_ = ol.xml.makeParsersNS(
|
||||
ol.format.OWS.DCP_PARSERS_ = ol.xml.makeStructureNS(
|
||||
ol.format.OWS.NAMESPACE_URIS_, {
|
||||
'HTTP': ol.xml.makeObjectPropertySetter(ol.format.OWS.readHttp_)
|
||||
});
|
||||
@@ -387,7 +387,7 @@ ol.format.OWS.DCP_PARSERS_ = ol.xml.makeParsersNS(
|
||||
* @type {Object.<string, Object.<string, ol.xml.Parser>>}
|
||||
* @private
|
||||
*/
|
||||
ol.format.OWS.HTTP_PARSERS_ = ol.xml.makeParsersNS(
|
||||
ol.format.OWS.HTTP_PARSERS_ = ol.xml.makeStructureNS(
|
||||
ol.format.OWS.NAMESPACE_URIS_, {
|
||||
'Get': ol.xml.makeObjectPropertyPusher(ol.format.OWS.readGet_),
|
||||
'Post': undefined // TODO
|
||||
@@ -399,7 +399,7 @@ ol.format.OWS.HTTP_PARSERS_ = ol.xml.makeParsersNS(
|
||||
* @type {Object.<string, Object.<string, ol.xml.Parser>>}
|
||||
* @private
|
||||
*/
|
||||
ol.format.OWS.OPERATION_PARSERS_ = ol.xml.makeParsersNS(
|
||||
ol.format.OWS.OPERATION_PARSERS_ = ol.xml.makeStructureNS(
|
||||
ol.format.OWS.NAMESPACE_URIS_, {
|
||||
'DCP': ol.xml.makeObjectPropertySetter(ol.format.OWS.readDcp_)
|
||||
});
|
||||
@@ -410,7 +410,7 @@ ol.format.OWS.OPERATION_PARSERS_ = ol.xml.makeParsersNS(
|
||||
* @type {Object.<string, Object.<string, ol.xml.Parser>>}
|
||||
* @private
|
||||
*/
|
||||
ol.format.OWS.OPERATIONS_METADATA_PARSERS_ = ol.xml.makeParsersNS(
|
||||
ol.format.OWS.OPERATIONS_METADATA_PARSERS_ = ol.xml.makeStructureNS(
|
||||
ol.format.OWS.NAMESPACE_URIS_, {
|
||||
'Operation': ol.format.OWS.readOperation_
|
||||
});
|
||||
@@ -421,7 +421,7 @@ ol.format.OWS.OPERATIONS_METADATA_PARSERS_ = ol.xml.makeParsersNS(
|
||||
* @type {Object.<string, Object.<string, ol.xml.Parser>>}
|
||||
* @private
|
||||
*/
|
||||
ol.format.OWS.PHONE_PARSERS_ = ol.xml.makeParsersNS(
|
||||
ol.format.OWS.PHONE_PARSERS_ = ol.xml.makeStructureNS(
|
||||
ol.format.OWS.NAMESPACE_URIS_, {
|
||||
'Voice': ol.xml.makeObjectPropertySetter(ol.format.XSD.readString),
|
||||
'Facsimile': ol.xml.makeObjectPropertySetter(ol.format.XSD.readString)
|
||||
@@ -433,7 +433,7 @@ ol.format.OWS.PHONE_PARSERS_ = ol.xml.makeParsersNS(
|
||||
* @type {Object.<string, Object.<string, ol.xml.Parser>>}
|
||||
* @private
|
||||
*/
|
||||
ol.format.OWS.REQUEST_METHOD_PARSERS_ = ol.xml.makeParsersNS(
|
||||
ol.format.OWS.REQUEST_METHOD_PARSERS_ = ol.xml.makeStructureNS(
|
||||
ol.format.OWS.NAMESPACE_URIS_, {
|
||||
'Constraint': ol.xml.makeObjectPropertyPusher(
|
||||
ol.format.OWS.readConstraint_)
|
||||
@@ -446,7 +446,7 @@ ol.format.OWS.REQUEST_METHOD_PARSERS_ = ol.xml.makeParsersNS(
|
||||
* @private
|
||||
*/
|
||||
ol.format.OWS.SERVICE_CONTACT_PARSERS_ =
|
||||
ol.xml.makeParsersNS(
|
||||
ol.xml.makeStructureNS(
|
||||
ol.format.OWS.NAMESPACE_URIS_, {
|
||||
'IndividualName': ol.xml.makeObjectPropertySetter(
|
||||
ol.format.XSD.readString),
|
||||
@@ -462,7 +462,7 @@ ol.format.OWS.SERVICE_CONTACT_PARSERS_ =
|
||||
* @private
|
||||
*/
|
||||
ol.format.OWS.SERVICE_IDENTIFICATION_PARSERS_ =
|
||||
ol.xml.makeParsersNS(
|
||||
ol.xml.makeStructureNS(
|
||||
ol.format.OWS.NAMESPACE_URIS_, {
|
||||
'Title': ol.xml.makeObjectPropertySetter(ol.format.XSD.readString),
|
||||
'ServiceTypeVersion': ol.xml.makeObjectPropertySetter(
|
||||
@@ -477,7 +477,7 @@ ol.format.OWS.SERVICE_IDENTIFICATION_PARSERS_ =
|
||||
* @private
|
||||
*/
|
||||
ol.format.OWS.SERVICE_PROVIDER_PARSERS_ =
|
||||
ol.xml.makeParsersNS(
|
||||
ol.xml.makeStructureNS(
|
||||
ol.format.OWS.NAMESPACE_URIS_, {
|
||||
'ProviderName': ol.xml.makeObjectPropertySetter(ol.format.XSD.readString),
|
||||
'ProviderSite': ol.xml.makeObjectPropertySetter(ol.format.XLink.readHref),
|
||||
|
||||
@@ -291,8 +291,7 @@ ol.format.TopoJSON.prototype.readFeaturesFromObject = function(
|
||||
var topoJSONTopology = /** @type {TopoJSONTopology} */ (object);
|
||||
var transform, scale = null, translate = null;
|
||||
if (goog.isDef(topoJSONTopology.transform)) {
|
||||
transform = /** @type {TopoJSONTransform} */
|
||||
(topoJSONTopology.transform);
|
||||
transform = topoJSONTopology.transform;
|
||||
scale = transform.scale;
|
||||
translate = transform.translate;
|
||||
}
|
||||
|
||||
@@ -157,10 +157,10 @@ ol.format.WMSCapabilities.readEXGeographicBoundingBox_ =
|
||||
!goog.isDef(eastBoundLongitude) || !goog.isDef(northBoundLatitude)) {
|
||||
return undefined;
|
||||
}
|
||||
return [
|
||||
return /** @type {ol.Extent} */ ([
|
||||
westBoundLongitude, southBoundLatitude,
|
||||
eastBoundLongitude, northBoundLatitude
|
||||
];
|
||||
]);
|
||||
};
|
||||
|
||||
|
||||
@@ -583,7 +583,7 @@ ol.format.WMSCapabilities.NAMESPACE_URIS_ = [
|
||||
* @type {Object.<string, Object.<string, ol.xml.Parser>>}
|
||||
* @private
|
||||
*/
|
||||
ol.format.WMSCapabilities.PARSERS_ = ol.xml.makeParsersNS(
|
||||
ol.format.WMSCapabilities.PARSERS_ = ol.xml.makeStructureNS(
|
||||
ol.format.WMSCapabilities.NAMESPACE_URIS_, {
|
||||
'Service': ol.xml.makeObjectPropertySetter(
|
||||
ol.format.WMSCapabilities.readService_),
|
||||
@@ -597,7 +597,7 @@ ol.format.WMSCapabilities.PARSERS_ = ol.xml.makeParsersNS(
|
||||
* @type {Object.<string, Object.<string, ol.xml.Parser>>}
|
||||
* @private
|
||||
*/
|
||||
ol.format.WMSCapabilities.CAPABILITY_PARSERS_ = ol.xml.makeParsersNS(
|
||||
ol.format.WMSCapabilities.CAPABILITY_PARSERS_ = ol.xml.makeStructureNS(
|
||||
ol.format.WMSCapabilities.NAMESPACE_URIS_, {
|
||||
'Request': ol.xml.makeObjectPropertySetter(
|
||||
ol.format.WMSCapabilities.readRequest_),
|
||||
@@ -613,7 +613,7 @@ ol.format.WMSCapabilities.CAPABILITY_PARSERS_ = ol.xml.makeParsersNS(
|
||||
* @type {Object.<string, Object.<string, ol.xml.Parser>>}
|
||||
* @private
|
||||
*/
|
||||
ol.format.WMSCapabilities.SERVICE_PARSERS_ = ol.xml.makeParsersNS(
|
||||
ol.format.WMSCapabilities.SERVICE_PARSERS_ = ol.xml.makeStructureNS(
|
||||
ol.format.WMSCapabilities.NAMESPACE_URIS_, {
|
||||
'Name': ol.xml.makeObjectPropertySetter(ol.format.XSD.readString),
|
||||
'Title': ol.xml.makeObjectPropertySetter(ol.format.XSD.readString),
|
||||
@@ -641,7 +641,7 @@ ol.format.WMSCapabilities.SERVICE_PARSERS_ = ol.xml.makeParsersNS(
|
||||
* @type {Object.<string, Object.<string, ol.xml.Parser>>}
|
||||
* @private
|
||||
*/
|
||||
ol.format.WMSCapabilities.CONTACT_INFORMATION_PARSERS_ = ol.xml.makeParsersNS(
|
||||
ol.format.WMSCapabilities.CONTACT_INFORMATION_PARSERS_ = ol.xml.makeStructureNS(
|
||||
ol.format.WMSCapabilities.NAMESPACE_URIS_, {
|
||||
'ContactPersonPrimary': ol.xml.makeObjectPropertySetter(
|
||||
ol.format.WMSCapabilities.readContactPersonPrimary_),
|
||||
@@ -663,7 +663,7 @@ ol.format.WMSCapabilities.CONTACT_INFORMATION_PARSERS_ = ol.xml.makeParsersNS(
|
||||
* @type {Object.<string, Object.<string, ol.xml.Parser>>}
|
||||
* @private
|
||||
*/
|
||||
ol.format.WMSCapabilities.CONTACT_PERSON_PARSERS_ = ol.xml.makeParsersNS(
|
||||
ol.format.WMSCapabilities.CONTACT_PERSON_PARSERS_ = ol.xml.makeStructureNS(
|
||||
ol.format.WMSCapabilities.NAMESPACE_URIS_, {
|
||||
'ContactPerson': ol.xml.makeObjectPropertySetter(
|
||||
ol.format.XSD.readString),
|
||||
@@ -677,7 +677,7 @@ ol.format.WMSCapabilities.CONTACT_PERSON_PARSERS_ = ol.xml.makeParsersNS(
|
||||
* @type {Object.<string, Object.<string, ol.xml.Parser>>}
|
||||
* @private
|
||||
*/
|
||||
ol.format.WMSCapabilities.CONTACT_ADDRESS_PARSERS_ = ol.xml.makeParsersNS(
|
||||
ol.format.WMSCapabilities.CONTACT_ADDRESS_PARSERS_ = ol.xml.makeStructureNS(
|
||||
ol.format.WMSCapabilities.NAMESPACE_URIS_, {
|
||||
'AddressType': ol.xml.makeObjectPropertySetter(ol.format.XSD.readString),
|
||||
'Address': ol.xml.makeObjectPropertySetter(ol.format.XSD.readString),
|
||||
@@ -694,7 +694,7 @@ ol.format.WMSCapabilities.CONTACT_ADDRESS_PARSERS_ = ol.xml.makeParsersNS(
|
||||
* @type {Object.<string, Object.<string, ol.xml.Parser>>}
|
||||
* @private
|
||||
*/
|
||||
ol.format.WMSCapabilities.EXCEPTION_PARSERS_ = ol.xml.makeParsersNS(
|
||||
ol.format.WMSCapabilities.EXCEPTION_PARSERS_ = ol.xml.makeStructureNS(
|
||||
ol.format.WMSCapabilities.NAMESPACE_URIS_, {
|
||||
'Format': ol.xml.makeArrayPusher(ol.format.XSD.readString)
|
||||
});
|
||||
@@ -705,7 +705,7 @@ ol.format.WMSCapabilities.EXCEPTION_PARSERS_ = ol.xml.makeParsersNS(
|
||||
* @type {Object.<string, Object.<string, ol.xml.Parser>>}
|
||||
* @private
|
||||
*/
|
||||
ol.format.WMSCapabilities.LAYER_PARSERS_ = ol.xml.makeParsersNS(
|
||||
ol.format.WMSCapabilities.LAYER_PARSERS_ = ol.xml.makeStructureNS(
|
||||
ol.format.WMSCapabilities.NAMESPACE_URIS_, {
|
||||
'Name': ol.xml.makeObjectPropertySetter(ol.format.XSD.readString),
|
||||
'Title': ol.xml.makeObjectPropertySetter(ol.format.XSD.readString),
|
||||
@@ -746,7 +746,7 @@ ol.format.WMSCapabilities.LAYER_PARSERS_ = ol.xml.makeParsersNS(
|
||||
* @type {Object.<string, Object.<string, ol.xml.Parser>>}
|
||||
* @private
|
||||
*/
|
||||
ol.format.WMSCapabilities.ATTRIBUTION_PARSERS_ = ol.xml.makeParsersNS(
|
||||
ol.format.WMSCapabilities.ATTRIBUTION_PARSERS_ = ol.xml.makeStructureNS(
|
||||
ol.format.WMSCapabilities.NAMESPACE_URIS_, {
|
||||
'Title': ol.xml.makeObjectPropertySetter(ol.format.XSD.readString),
|
||||
'OnlineResource': ol.xml.makeObjectPropertySetter(
|
||||
@@ -762,7 +762,7 @@ ol.format.WMSCapabilities.ATTRIBUTION_PARSERS_ = ol.xml.makeParsersNS(
|
||||
* @private
|
||||
*/
|
||||
ol.format.WMSCapabilities.EX_GEOGRAPHIC_BOUNDING_BOX_PARSERS_ =
|
||||
ol.xml.makeParsersNS(ol.format.WMSCapabilities.NAMESPACE_URIS_, {
|
||||
ol.xml.makeStructureNS(ol.format.WMSCapabilities.NAMESPACE_URIS_, {
|
||||
'westBoundLongitude': ol.xml.makeObjectPropertySetter(
|
||||
ol.format.XSD.readDecimal),
|
||||
'eastBoundLongitude': ol.xml.makeObjectPropertySetter(
|
||||
@@ -779,7 +779,7 @@ ol.format.WMSCapabilities.EX_GEOGRAPHIC_BOUNDING_BOX_PARSERS_ =
|
||||
* @type {Object.<string, Object.<string, ol.xml.Parser>>}
|
||||
* @private
|
||||
*/
|
||||
ol.format.WMSCapabilities.REQUEST_PARSERS_ = ol.xml.makeParsersNS(
|
||||
ol.format.WMSCapabilities.REQUEST_PARSERS_ = ol.xml.makeStructureNS(
|
||||
ol.format.WMSCapabilities.NAMESPACE_URIS_, {
|
||||
'GetCapabilities': ol.xml.makeObjectPropertySetter(
|
||||
ol.format.WMSCapabilities.readOperationType_),
|
||||
@@ -795,7 +795,7 @@ ol.format.WMSCapabilities.REQUEST_PARSERS_ = ol.xml.makeParsersNS(
|
||||
* @type {Object.<string, Object.<string, ol.xml.Parser>>}
|
||||
* @private
|
||||
*/
|
||||
ol.format.WMSCapabilities.OPERATIONTYPE_PARSERS_ = ol.xml.makeParsersNS(
|
||||
ol.format.WMSCapabilities.OPERATIONTYPE_PARSERS_ = ol.xml.makeStructureNS(
|
||||
ol.format.WMSCapabilities.NAMESPACE_URIS_, {
|
||||
'Format': ol.xml.makeObjectPropertyPusher(ol.format.XSD.readString),
|
||||
'DCPType': ol.xml.makeObjectPropertyPusher(
|
||||
@@ -808,7 +808,7 @@ ol.format.WMSCapabilities.OPERATIONTYPE_PARSERS_ = ol.xml.makeParsersNS(
|
||||
* @type {Object.<string, Object.<string, ol.xml.Parser>>}
|
||||
* @private
|
||||
*/
|
||||
ol.format.WMSCapabilities.DCPTYPE_PARSERS_ = ol.xml.makeParsersNS(
|
||||
ol.format.WMSCapabilities.DCPTYPE_PARSERS_ = ol.xml.makeStructureNS(
|
||||
ol.format.WMSCapabilities.NAMESPACE_URIS_, {
|
||||
'HTTP': ol.xml.makeObjectPropertySetter(
|
||||
ol.format.WMSCapabilities.readHTTP_)
|
||||
@@ -820,7 +820,7 @@ ol.format.WMSCapabilities.DCPTYPE_PARSERS_ = ol.xml.makeParsersNS(
|
||||
* @type {Object.<string, Object.<string, ol.xml.Parser>>}
|
||||
* @private
|
||||
*/
|
||||
ol.format.WMSCapabilities.HTTP_PARSERS_ = ol.xml.makeParsersNS(
|
||||
ol.format.WMSCapabilities.HTTP_PARSERS_ = ol.xml.makeStructureNS(
|
||||
ol.format.WMSCapabilities.NAMESPACE_URIS_, {
|
||||
'Get': ol.xml.makeObjectPropertySetter(
|
||||
ol.format.WMSCapabilities.readFormatOnlineresource_),
|
||||
@@ -834,7 +834,7 @@ ol.format.WMSCapabilities.HTTP_PARSERS_ = ol.xml.makeParsersNS(
|
||||
* @type {Object.<string, Object.<string, ol.xml.Parser>>}
|
||||
* @private
|
||||
*/
|
||||
ol.format.WMSCapabilities.STYLE_PARSERS_ = ol.xml.makeParsersNS(
|
||||
ol.format.WMSCapabilities.STYLE_PARSERS_ = ol.xml.makeStructureNS(
|
||||
ol.format.WMSCapabilities.NAMESPACE_URIS_, {
|
||||
'Name': ol.xml.makeObjectPropertySetter(ol.format.XSD.readString),
|
||||
'Title': ol.xml.makeObjectPropertySetter(ol.format.XSD.readString),
|
||||
@@ -853,8 +853,8 @@ ol.format.WMSCapabilities.STYLE_PARSERS_ = ol.xml.makeParsersNS(
|
||||
* @type {Object.<string, Object.<string, ol.xml.Parser>>}
|
||||
* @private
|
||||
*/
|
||||
ol.format.WMSCapabilities.FORMAT_ONLINERESOURCE_PARSERS_ = ol.xml.makeParsersNS(
|
||||
ol.format.WMSCapabilities.NAMESPACE_URIS_, {
|
||||
ol.format.WMSCapabilities.FORMAT_ONLINERESOURCE_PARSERS_ =
|
||||
ol.xml.makeStructureNS(ol.format.WMSCapabilities.NAMESPACE_URIS_, {
|
||||
'Format': ol.xml.makeObjectPropertySetter(ol.format.XSD.readString),
|
||||
'OnlineResource': ol.xml.makeObjectPropertySetter(
|
||||
ol.format.XLink.readHref)
|
||||
@@ -866,7 +866,7 @@ ol.format.WMSCapabilities.FORMAT_ONLINERESOURCE_PARSERS_ = ol.xml.makeParsersNS(
|
||||
* @type {Object.<string, Object.<string, ol.xml.Parser>>}
|
||||
* @private
|
||||
*/
|
||||
ol.format.WMSCapabilities.KEYWORDLIST_PARSERS_ = ol.xml.makeParsersNS(
|
||||
ol.format.WMSCapabilities.KEYWORDLIST_PARSERS_ = ol.xml.makeStructureNS(
|
||||
ol.format.WMSCapabilities.NAMESPACE_URIS_, {
|
||||
'Keyword': ol.xml.makeArrayPusher(ol.format.XSD.readString)
|
||||
});
|
||||
|
||||
@@ -5,7 +5,6 @@ goog.require('goog.asserts');
|
||||
goog.require('goog.dom.NodeType');
|
||||
goog.require('goog.object');
|
||||
goog.require('goog.string');
|
||||
goog.require('ol.format.GML');
|
||||
goog.require('ol.format.GML2');
|
||||
goog.require('ol.format.XMLFeature');
|
||||
goog.require('ol.xml');
|
||||
@@ -98,7 +97,7 @@ ol.format.WMSGetFeatureInfo.prototype.readFeatures_ =
|
||||
var parsers = {};
|
||||
parsers[featureType] = ol.xml.makeArrayPusher(
|
||||
this.gmlFormat_.readFeatureElement, this.gmlFormat_);
|
||||
var parsersNS = ol.xml.makeParsersNS(
|
||||
var parsersNS = ol.xml.makeStructureNS(
|
||||
[context['featureNS'], null], parsers);
|
||||
layer.namespaceURI = this.featureNS_;
|
||||
var layerFeatures = ol.xml.pushParseAndPop(
|
||||
|
||||
@@ -2,7 +2,6 @@ goog.provide('ol.format.WMTSCapabilities');
|
||||
|
||||
goog.require('goog.asserts');
|
||||
goog.require('goog.dom.NodeType');
|
||||
goog.require('goog.object');
|
||||
goog.require('goog.string');
|
||||
goog.require('ol.extent');
|
||||
goog.require('ol.format.OWS');
|
||||
@@ -75,7 +74,7 @@ ol.format.WMTSCapabilities.prototype.readFromNode = function(node) {
|
||||
if (!goog.isDef(WMTSCapabilityObject)) {
|
||||
return null;
|
||||
}
|
||||
goog.object.set(WMTSCapabilityObject, 'version', this.version);
|
||||
WMTSCapabilityObject['version'] = this.version;
|
||||
WMTSCapabilityObject = ol.xml.pushParseAndPop(WMTSCapabilityObject,
|
||||
ol.format.WMTSCapabilities.PARSERS_, node, []);
|
||||
return goog.isDef(WMTSCapabilityObject) ? WMTSCapabilityObject : null;
|
||||
@@ -271,7 +270,7 @@ ol.format.WMTSCapabilities.OWS_NAMESPACE_URIS_ = [
|
||||
* @type {Object.<string, Object.<string, ol.xml.Parser>>}
|
||||
* @private
|
||||
*/
|
||||
ol.format.WMTSCapabilities.PARSERS_ = ol.xml.makeParsersNS(
|
||||
ol.format.WMTSCapabilities.PARSERS_ = ol.xml.makeStructureNS(
|
||||
ol.format.WMTSCapabilities.NAMESPACE_URIS_, {
|
||||
'Contents': ol.xml.makeObjectPropertySetter(
|
||||
ol.format.WMTSCapabilities.readContents_)
|
||||
@@ -283,7 +282,7 @@ ol.format.WMTSCapabilities.PARSERS_ = ol.xml.makeParsersNS(
|
||||
* @type {Object.<string, Object.<string, ol.xml.Parser>>}
|
||||
* @private
|
||||
*/
|
||||
ol.format.WMTSCapabilities.CONTENTS_PARSERS_ = ol.xml.makeParsersNS(
|
||||
ol.format.WMTSCapabilities.CONTENTS_PARSERS_ = ol.xml.makeStructureNS(
|
||||
ol.format.WMTSCapabilities.NAMESPACE_URIS_, {
|
||||
'Layer': ol.xml.makeObjectPropertyPusher(
|
||||
ol.format.WMTSCapabilities.readLayer_),
|
||||
@@ -297,7 +296,7 @@ ol.format.WMTSCapabilities.CONTENTS_PARSERS_ = ol.xml.makeParsersNS(
|
||||
* @type {Object.<string, Object.<string, ol.xml.Parser>>}
|
||||
* @private
|
||||
*/
|
||||
ol.format.WMTSCapabilities.LAYER_PARSERS_ = ol.xml.makeParsersNS(
|
||||
ol.format.WMTSCapabilities.LAYER_PARSERS_ = ol.xml.makeStructureNS(
|
||||
ol.format.WMTSCapabilities.NAMESPACE_URIS_, {
|
||||
'Style': ol.xml.makeObjectPropertyPusher(
|
||||
ol.format.WMTSCapabilities.readStyle_),
|
||||
@@ -307,7 +306,7 @@ ol.format.WMTSCapabilities.LAYER_PARSERS_ = ol.xml.makeParsersNS(
|
||||
ol.format.WMTSCapabilities.readTileMatrixSetLink_),
|
||||
'ResourceURL': ol.xml.makeObjectPropertyPusher(
|
||||
ol.format.WMTSCapabilities.readResourceUrl_)
|
||||
}, ol.xml.makeParsersNS(ol.format.WMTSCapabilities.OWS_NAMESPACE_URIS_, {
|
||||
}, ol.xml.makeStructureNS(ol.format.WMTSCapabilities.OWS_NAMESPACE_URIS_, {
|
||||
'Title': ol.xml.makeObjectPropertySetter(
|
||||
ol.format.XSD.readString),
|
||||
'Abstract': ol.xml.makeObjectPropertySetter(
|
||||
@@ -324,11 +323,11 @@ ol.format.WMTSCapabilities.LAYER_PARSERS_ = ol.xml.makeParsersNS(
|
||||
* @type {Object.<string, Object.<string, ol.xml.Parser>>}
|
||||
* @private
|
||||
*/
|
||||
ol.format.WMTSCapabilities.STYLE_PARSERS_ = ol.xml.makeParsersNS(
|
||||
ol.format.WMTSCapabilities.STYLE_PARSERS_ = ol.xml.makeStructureNS(
|
||||
ol.format.WMTSCapabilities.NAMESPACE_URIS_, {
|
||||
'LegendURL': ol.xml.makeObjectPropertyPusher(
|
||||
ol.format.WMTSCapabilities.readLegendUrl_)
|
||||
}, ol.xml.makeParsersNS(ol.format.WMTSCapabilities.OWS_NAMESPACE_URIS_, {
|
||||
}, ol.xml.makeStructureNS(ol.format.WMTSCapabilities.OWS_NAMESPACE_URIS_, {
|
||||
'Title': ol.xml.makeObjectPropertySetter(
|
||||
ol.format.XSD.readString),
|
||||
'Identifier': ol.xml.makeObjectPropertySetter(
|
||||
@@ -341,7 +340,7 @@ ol.format.WMTSCapabilities.STYLE_PARSERS_ = ol.xml.makeParsersNS(
|
||||
* @type {Object.<string, Object.<string, ol.xml.Parser>>}
|
||||
* @private
|
||||
*/
|
||||
ol.format.WMTSCapabilities.TMS_LINKS_PARSERS_ = ol.xml.makeParsersNS(
|
||||
ol.format.WMTSCapabilities.TMS_LINKS_PARSERS_ = ol.xml.makeStructureNS(
|
||||
ol.format.WMTSCapabilities.NAMESPACE_URIS_, {
|
||||
'TileMatrixSet': ol.xml.makeObjectPropertySetter(
|
||||
ol.format.XSD.readString)
|
||||
@@ -353,7 +352,7 @@ ol.format.WMTSCapabilities.TMS_LINKS_PARSERS_ = ol.xml.makeParsersNS(
|
||||
* @type {Object.<string, Object.<string, ol.xml.Parser>>}
|
||||
* @private
|
||||
*/
|
||||
ol.format.WMTSCapabilities.WGS84_BBOX_READERS_ = ol.xml.makeParsersNS(
|
||||
ol.format.WMTSCapabilities.WGS84_BBOX_READERS_ = ol.xml.makeStructureNS(
|
||||
ol.format.WMTSCapabilities.OWS_NAMESPACE_URIS_, {
|
||||
'LowerCorner': ol.xml.makeArrayPusher(
|
||||
ol.format.WMTSCapabilities.readCoordinates_),
|
||||
@@ -367,13 +366,13 @@ ol.format.WMTSCapabilities.WGS84_BBOX_READERS_ = ol.xml.makeParsersNS(
|
||||
* @type {Object.<string, Object.<string, ol.xml.Parser>>}
|
||||
* @private
|
||||
*/
|
||||
ol.format.WMTSCapabilities.TMS_PARSERS_ = ol.xml.makeParsersNS(
|
||||
ol.format.WMTSCapabilities.TMS_PARSERS_ = ol.xml.makeStructureNS(
|
||||
ol.format.WMTSCapabilities.NAMESPACE_URIS_, {
|
||||
'WellKnownScaleSet': ol.xml.makeObjectPropertySetter(
|
||||
ol.format.XSD.readString),
|
||||
'TileMatrix': ol.xml.makeObjectPropertyPusher(
|
||||
ol.format.WMTSCapabilities.readTileMatrix_)
|
||||
}, ol.xml.makeParsersNS(ol.format.WMTSCapabilities.OWS_NAMESPACE_URIS_, {
|
||||
}, ol.xml.makeStructureNS(ol.format.WMTSCapabilities.OWS_NAMESPACE_URIS_, {
|
||||
'SupportedCRS': ol.xml.makeObjectPropertySetter(
|
||||
ol.format.XSD.readString),
|
||||
'Identifier': ol.xml.makeObjectPropertySetter(
|
||||
@@ -386,7 +385,7 @@ ol.format.WMTSCapabilities.TMS_PARSERS_ = ol.xml.makeParsersNS(
|
||||
* @type {Object.<string, Object.<string, ol.xml.Parser>>}
|
||||
* @private
|
||||
*/
|
||||
ol.format.WMTSCapabilities.TM_PARSERS_ = ol.xml.makeParsersNS(
|
||||
ol.format.WMTSCapabilities.TM_PARSERS_ = ol.xml.makeStructureNS(
|
||||
ol.format.WMTSCapabilities.NAMESPACE_URIS_, {
|
||||
'TopLeftCorner': ol.xml.makeObjectPropertySetter(
|
||||
ol.format.WMTSCapabilities.readCoordinates_),
|
||||
@@ -400,7 +399,7 @@ ol.format.WMTSCapabilities.TM_PARSERS_ = ol.xml.makeParsersNS(
|
||||
ol.format.XSD.readNonNegativeInteger),
|
||||
'MatrixHeight': ol.xml.makeObjectPropertySetter(
|
||||
ol.format.XSD.readNonNegativeInteger)
|
||||
}, ol.xml.makeParsersNS(ol.format.WMTSCapabilities.OWS_NAMESPACE_URIS_, {
|
||||
}, ol.xml.makeStructureNS(ol.format.WMTSCapabilities.OWS_NAMESPACE_URIS_, {
|
||||
'Identifier': ol.xml.makeObjectPropertySetter(
|
||||
ol.format.XSD.readString)
|
||||
}));
|
||||
|
||||
@@ -24,8 +24,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;
|
||||
this.setCenterAndRadius(center, radius,
|
||||
/** @type {ol.geom.GeometryLayout|undefined} */ (opt_layout));
|
||||
this.setCenterAndRadius(center, radius, opt_layout);
|
||||
};
|
||||
goog.inherits(ol.geom.Circle, ol.geom.SimpleGeometry);
|
||||
|
||||
|
||||
@@ -39,8 +39,7 @@ ol.geom.LinearRing = function(coordinates, opt_layout) {
|
||||
*/
|
||||
this.maxDeltaRevision_ = -1;
|
||||
|
||||
this.setCoordinates(coordinates,
|
||||
/** @type {ol.geom.GeometryLayout|undefined} */ (opt_layout));
|
||||
this.setCoordinates(coordinates, opt_layout);
|
||||
|
||||
};
|
||||
goog.inherits(ol.geom.LinearRing, ol.geom.SimpleGeometry);
|
||||
|
||||
@@ -55,8 +55,7 @@ ol.geom.LineString = function(coordinates, opt_layout) {
|
||||
*/
|
||||
this.maxDeltaRevision_ = -1;
|
||||
|
||||
this.setCoordinates(coordinates,
|
||||
/** @type {ol.geom.GeometryLayout|undefined} */ (opt_layout));
|
||||
this.setCoordinates(coordinates, opt_layout);
|
||||
|
||||
};
|
||||
goog.inherits(ol.geom.LineString, ol.geom.SimpleGeometry);
|
||||
|
||||
@@ -48,8 +48,7 @@ ol.geom.MultiLineString = function(coordinates, opt_layout) {
|
||||
*/
|
||||
this.maxDeltaRevision_ = -1;
|
||||
|
||||
this.setCoordinates(coordinates,
|
||||
/** @type {ol.geom.GeometryLayout|undefined} */ (opt_layout));
|
||||
this.setCoordinates(coordinates, opt_layout);
|
||||
|
||||
};
|
||||
goog.inherits(ol.geom.MultiLineString, ol.geom.SimpleGeometry);
|
||||
|
||||
@@ -25,8 +25,7 @@ goog.require('ol.math');
|
||||
*/
|
||||
ol.geom.MultiPoint = function(coordinates, opt_layout) {
|
||||
goog.base(this);
|
||||
this.setCoordinates(coordinates,
|
||||
/** @type {ol.geom.GeometryLayout|undefined} */ (opt_layout));
|
||||
this.setCoordinates(coordinates, opt_layout);
|
||||
};
|
||||
goog.inherits(ol.geom.MultiPoint, ol.geom.SimpleGeometry);
|
||||
|
||||
|
||||
@@ -78,8 +78,7 @@ ol.geom.MultiPolygon = function(coordinates, opt_layout) {
|
||||
*/
|
||||
this.orientedFlatCoordinates_ = null;
|
||||
|
||||
this.setCoordinates(coordinates,
|
||||
/** @type {ol.geom.GeometryLayout|undefined} */ (opt_layout));
|
||||
this.setCoordinates(coordinates, opt_layout);
|
||||
|
||||
};
|
||||
goog.inherits(ol.geom.MultiPolygon, ol.geom.SimpleGeometry);
|
||||
|
||||
@@ -21,8 +21,7 @@ goog.require('ol.math');
|
||||
*/
|
||||
ol.geom.Point = function(coordinates, opt_layout) {
|
||||
goog.base(this);
|
||||
this.setCoordinates(coordinates,
|
||||
/** @type {ol.geom.GeometryLayout|undefined} */ (opt_layout));
|
||||
this.setCoordinates(coordinates, opt_layout);
|
||||
};
|
||||
goog.inherits(ol.geom.Point, ol.geom.SimpleGeometry);
|
||||
|
||||
|
||||
@@ -77,8 +77,7 @@ ol.geom.Polygon = function(coordinates, opt_layout) {
|
||||
*/
|
||||
this.orientedFlatCoordinates_ = null;
|
||||
|
||||
this.setCoordinates(coordinates,
|
||||
/** @type {ol.geom.GeometryLayout|undefined} */ (opt_layout));
|
||||
this.setCoordinates(coordinates, opt_layout);
|
||||
|
||||
};
|
||||
goog.inherits(ol.geom.Polygon, ol.geom.SimpleGeometry);
|
||||
|
||||
@@ -58,6 +58,30 @@ ol.Graticule = function(opt_options) {
|
||||
*/
|
||||
this.minLon_ = -Infinity;
|
||||
|
||||
/**
|
||||
* @type {number}
|
||||
* @private
|
||||
*/
|
||||
this.maxLatP_ = Infinity;
|
||||
|
||||
/**
|
||||
* @type {number}
|
||||
* @private
|
||||
*/
|
||||
this.maxLonP_ = Infinity;
|
||||
|
||||
/**
|
||||
* @type {number}
|
||||
* @private
|
||||
*/
|
||||
this.minLatP_ = -Infinity;
|
||||
|
||||
/**
|
||||
* @type {number}
|
||||
* @private
|
||||
*/
|
||||
this.minLonP_ = -Infinity;
|
||||
|
||||
/**
|
||||
* @type {number}
|
||||
* @private
|
||||
@@ -135,6 +159,8 @@ ol.Graticule.intervals_ = [90, 45, 30, 20, 10, 5, 2, 1, 0.5, 0.2, 0.1, 0.05,
|
||||
|
||||
/**
|
||||
* @param {number} lon Longitude.
|
||||
* @param {number} minLat Minimal latitude.
|
||||
* @param {number} maxLat Maximal latitude.
|
||||
* @param {number} squaredTolerance Squared tolerance.
|
||||
* @param {ol.Extent} extent Extent.
|
||||
* @param {number} index Index.
|
||||
@@ -142,8 +168,9 @@ ol.Graticule.intervals_ = [90, 45, 30, 20, 10, 5, 2, 1, 0.5, 0.2, 0.1, 0.05,
|
||||
* @private
|
||||
*/
|
||||
ol.Graticule.prototype.addMeridian_ =
|
||||
function(lon, squaredTolerance, extent, index) {
|
||||
var lineString = this.getMeridian_(lon, squaredTolerance, index);
|
||||
function(lon, minLat, maxLat, squaredTolerance, extent, index) {
|
||||
var lineString = this.getMeridian_(lon, minLat, maxLat,
|
||||
squaredTolerance, index);
|
||||
if (ol.extent.intersects(lineString.getExtent(), extent)) {
|
||||
this.meridians_[index++] = lineString;
|
||||
}
|
||||
@@ -153,6 +180,8 @@ ol.Graticule.prototype.addMeridian_ =
|
||||
|
||||
/**
|
||||
* @param {number} lat Latitude.
|
||||
* @param {number} minLon Minimal longitude.
|
||||
* @param {number} maxLon Maximal longitude.
|
||||
* @param {number} squaredTolerance Squared tolerance.
|
||||
* @param {ol.Extent} extent Extent.
|
||||
* @param {number} index Index.
|
||||
@@ -160,8 +189,9 @@ ol.Graticule.prototype.addMeridian_ =
|
||||
* @private
|
||||
*/
|
||||
ol.Graticule.prototype.addParallel_ =
|
||||
function(lat, squaredTolerance, extent, index) {
|
||||
var lineString = this.getParallel_(lat, squaredTolerance, index);
|
||||
function(lat, minLon, maxLon, squaredTolerance, extent, index) {
|
||||
var lineString = this.getParallel_(lat, minLon, maxLon, squaredTolerance,
|
||||
index);
|
||||
if (ol.extent.intersects(lineString.getExtent(), extent)) {
|
||||
this.parallels_[index++] = lineString;
|
||||
}
|
||||
@@ -191,17 +221,31 @@ ol.Graticule.prototype.createGraticule_ =
|
||||
var maxLines = this.maxLines_;
|
||||
var cnt, idx, lat, lon;
|
||||
|
||||
var validExtent = [
|
||||
Math.max(extent[0], this.minLonP_),
|
||||
Math.max(extent[1], this.minLatP_),
|
||||
Math.min(extent[2], this.maxLonP_),
|
||||
Math.min(extent[3], this.maxLatP_)
|
||||
];
|
||||
|
||||
validExtent = ol.proj.transformExtent(validExtent, this.projection_,
|
||||
'EPSG:4326');
|
||||
var maxLat = validExtent[3];
|
||||
var maxLon = validExtent[2];
|
||||
var minLat = validExtent[1];
|
||||
var minLon = validExtent[0];
|
||||
|
||||
// Create meridians
|
||||
|
||||
centerLon = Math.floor(centerLon / interval) * interval;
|
||||
lon = goog.math.clamp(centerLon, this.minLon_, this.maxLon_);
|
||||
|
||||
idx = this.addMeridian_(lon, squaredTolerance, extent, 0);
|
||||
idx = this.addMeridian_(lon, minLat, maxLat, squaredTolerance, extent, 0);
|
||||
|
||||
cnt = 0;
|
||||
while (lon != this.minLon_ && cnt++ < maxLines) {
|
||||
lon = Math.max(lon - interval, this.minLon_);
|
||||
idx = this.addMeridian_(lon, squaredTolerance, extent, idx);
|
||||
idx = this.addMeridian_(lon, minLat, maxLat, squaredTolerance, extent, idx);
|
||||
}
|
||||
|
||||
lon = goog.math.clamp(centerLon, this.minLon_, this.maxLon_);
|
||||
@@ -209,7 +253,7 @@ ol.Graticule.prototype.createGraticule_ =
|
||||
cnt = 0;
|
||||
while (lon != this.maxLon_ && cnt++ < maxLines) {
|
||||
lon = Math.min(lon + interval, this.maxLon_);
|
||||
idx = this.addMeridian_(lon, squaredTolerance, extent, idx);
|
||||
idx = this.addMeridian_(lon, minLat, maxLat, squaredTolerance, extent, idx);
|
||||
}
|
||||
|
||||
this.meridians_.length = idx;
|
||||
@@ -219,12 +263,12 @@ ol.Graticule.prototype.createGraticule_ =
|
||||
centerLat = Math.floor(centerLat / interval) * interval;
|
||||
lat = goog.math.clamp(centerLat, this.minLat_, this.maxLat_);
|
||||
|
||||
idx = this.addParallel_(lat, squaredTolerance, extent, 0);
|
||||
idx = this.addParallel_(lat, minLon, maxLon, squaredTolerance, extent, 0);
|
||||
|
||||
cnt = 0;
|
||||
while (lat != this.minLat_ && cnt++ < maxLines) {
|
||||
lat = Math.max(lat - interval, this.minLat_);
|
||||
idx = this.addParallel_(lat, squaredTolerance, extent, idx);
|
||||
idx = this.addParallel_(lat, minLon, maxLon, squaredTolerance, extent, idx);
|
||||
}
|
||||
|
||||
lat = goog.math.clamp(centerLat, this.minLat_, this.maxLat_);
|
||||
@@ -232,7 +276,7 @@ ol.Graticule.prototype.createGraticule_ =
|
||||
cnt = 0;
|
||||
while (lat != this.maxLat_ && cnt++ < maxLines) {
|
||||
lat = Math.min(lat + interval, this.maxLat_);
|
||||
idx = this.addParallel_(lat, squaredTolerance, extent, idx);
|
||||
idx = this.addParallel_(lat, minLon, maxLon, squaredTolerance, extent, idx);
|
||||
}
|
||||
|
||||
this.parallels_.length = idx;
|
||||
@@ -285,18 +329,21 @@ ol.Graticule.prototype.getMap = function() {
|
||||
|
||||
/**
|
||||
* @param {number} lon Longitude.
|
||||
* @param {number} minLat Minimal latitude.
|
||||
* @param {number} maxLat Maximal latitude.
|
||||
* @param {number} squaredTolerance Squared tolerance.
|
||||
* @return {ol.geom.LineString} The meridian line string.
|
||||
* @param {number} index Index.
|
||||
* @private
|
||||
*/
|
||||
ol.Graticule.prototype.getMeridian_ = function(lon, squaredTolerance, index) {
|
||||
ol.Graticule.prototype.getMeridian_ = function(lon, minLat, maxLat,
|
||||
squaredTolerance, index) {
|
||||
goog.asserts.assert(lon >= this.minLon_,
|
||||
'lon should be larger than or equal to this.minLon_');
|
||||
goog.asserts.assert(lon <= this.maxLon_,
|
||||
'lon should be smaller than or equal to this.maxLon_');
|
||||
var flatCoordinates = ol.geom.flat.geodesic.meridian(lon,
|
||||
this.minLat_, this.maxLat_, this.projection_, squaredTolerance);
|
||||
minLat, maxLat, this.projection_, squaredTolerance);
|
||||
goog.asserts.assert(flatCoordinates.length > 0,
|
||||
'flatCoordinates cannot be empty');
|
||||
var lineString = goog.isDef(this.meridians_[index]) ?
|
||||
@@ -318,12 +365,15 @@ ol.Graticule.prototype.getMeridians = function() {
|
||||
|
||||
/**
|
||||
* @param {number} lat Latitude.
|
||||
* @param {number} minLon Minimal longitude.
|
||||
* @param {number} maxLon Maximal longitude.
|
||||
* @param {number} squaredTolerance Squared tolerance.
|
||||
* @return {ol.geom.LineString} The parallel line string.
|
||||
* @param {number} index Index.
|
||||
* @private
|
||||
*/
|
||||
ol.Graticule.prototype.getParallel_ = function(lat, squaredTolerance, index) {
|
||||
ol.Graticule.prototype.getParallel_ = function(lat, minLon, maxLon,
|
||||
squaredTolerance, index) {
|
||||
goog.asserts.assert(lat >= this.minLat_,
|
||||
'lat should be larger than or equal to this.minLat_');
|
||||
goog.asserts.assert(lat <= this.maxLat_,
|
||||
@@ -395,25 +445,48 @@ ol.Graticule.prototype.handlePostCompose_ = function(e) {
|
||||
ol.Graticule.prototype.updateProjectionInfo_ = function(projection) {
|
||||
goog.asserts.assert(!goog.isNull(projection), 'projection cannot be null');
|
||||
|
||||
var epsg4326Projection = ol.proj.get('EPSG:4326');
|
||||
|
||||
var extent = projection.getExtent();
|
||||
var worldExtent = projection.getWorldExtent();
|
||||
var worldExtentP = ol.proj.transformExtent(worldExtent,
|
||||
epsg4326Projection, projection);
|
||||
|
||||
var maxLat = worldExtent[3];
|
||||
var maxLon = worldExtent[2];
|
||||
var minLat = worldExtent[1];
|
||||
var minLon = worldExtent[0];
|
||||
|
||||
var maxLatP = worldExtentP[3];
|
||||
var maxLonP = worldExtentP[2];
|
||||
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(goog.isDef(maxLatP),
|
||||
'projected maxLat should be defined');
|
||||
goog.asserts.assert(goog.isDef(maxLonP),
|
||||
'projected maxLon should be defined');
|
||||
goog.asserts.assert(goog.isDef(minLatP),
|
||||
'projected minLat should be defined');
|
||||
goog.asserts.assert(goog.isDef(minLonP),
|
||||
'projected minLon should be defined');
|
||||
|
||||
this.maxLat_ = maxLat;
|
||||
this.maxLon_ = maxLon;
|
||||
this.minLat_ = minLat;
|
||||
this.minLon_ = minLon;
|
||||
|
||||
var epsg4326Projection = ol.proj.get('EPSG:4326');
|
||||
this.maxLatP_ = maxLatP;
|
||||
this.maxLonP_ = maxLonP;
|
||||
this.minLatP_ = minLatP;
|
||||
this.minLonP_ = minLonP;
|
||||
|
||||
|
||||
this.fromLonLatTransform_ = ol.proj.getTransform(
|
||||
epsg4326Projection, projection);
|
||||
|
||||
@@ -25,7 +25,8 @@ ol.has.CANVAS_LINE_DASH = false;
|
||||
|
||||
|
||||
/**
|
||||
* True if browser supports Canvas.
|
||||
* True if both the library and browser support Canvas. Always `false`
|
||||
* if `ol.ENABLE_CANVAS` is set to `false` at compile time.
|
||||
* @const
|
||||
* @type {boolean}
|
||||
* @api stable
|
||||
@@ -64,7 +65,7 @@ ol.has.DEVICE_ORIENTATION = 'DeviceOrientationEvent' in goog.global;
|
||||
|
||||
|
||||
/**
|
||||
* True if browser supports DOM.
|
||||
* True if `ol.ENABLE_DOM` is set to `true` at compile time.
|
||||
* @const
|
||||
* @type {boolean}
|
||||
*/
|
||||
@@ -106,7 +107,8 @@ ol.has.MSPOINTER = !!(goog.global.navigator.msPointerEnabled);
|
||||
|
||||
|
||||
/**
|
||||
* True if browser supports WebGL.
|
||||
* True if both OpenLayers and browser support WebGL. Always `false`
|
||||
* if `ol.ENABLE_WEBGL` is set to `false` at compile time.
|
||||
* @const
|
||||
* @type {boolean}
|
||||
* @api stable
|
||||
|
||||
@@ -76,6 +76,7 @@ ol.ImageTile.prototype.disposeInternal = function() {
|
||||
|
||||
|
||||
/**
|
||||
* Get the image element for this tile.
|
||||
* @inheritDoc
|
||||
* @api
|
||||
*/
|
||||
|
||||
@@ -219,18 +219,21 @@ ol.interaction.DragAndDropEvent =
|
||||
goog.base(this, type, target);
|
||||
|
||||
/**
|
||||
* The features parsed from dropped data.
|
||||
* @type {Array.<ol.Feature>|undefined}
|
||||
* @api stable
|
||||
*/
|
||||
this.features = opt_features;
|
||||
|
||||
/**
|
||||
* The dropped file.
|
||||
* @type {File}
|
||||
* @api stable
|
||||
*/
|
||||
this.file = file;
|
||||
|
||||
/**
|
||||
* The feature projection.
|
||||
* @type {ol.proj.Projection|undefined}
|
||||
* @api
|
||||
*/
|
||||
|
||||
@@ -88,16 +88,15 @@ ol.interaction.DragRotateAndZoom.handleDragEvent_ = function(mapBrowserEvent) {
|
||||
var theta = Math.atan2(delta.y, delta.x);
|
||||
var magnitude = delta.magnitude();
|
||||
var view = map.getView();
|
||||
var viewState = view.getState();
|
||||
map.render();
|
||||
if (goog.isDef(this.lastAngle_)) {
|
||||
var angleDelta = theta - this.lastAngle_;
|
||||
ol.interaction.Interaction.rotateWithoutConstraints(
|
||||
map, view, viewState.rotation - angleDelta);
|
||||
map, view, view.getRotation() - angleDelta);
|
||||
}
|
||||
this.lastAngle_ = theta;
|
||||
if (goog.isDef(this.lastMagnitude_)) {
|
||||
var resolution = this.lastMagnitude_ * (viewState.resolution / magnitude);
|
||||
var resolution = this.lastMagnitude_ * (view.getResolution() / magnitude);
|
||||
ol.interaction.Interaction.zoomWithoutConstraints(map, view, resolution);
|
||||
}
|
||||
if (goog.isDef(this.lastMagnitude_)) {
|
||||
@@ -121,10 +120,9 @@ ol.interaction.DragRotateAndZoom.handleUpEvent_ = function(mapBrowserEvent) {
|
||||
var map = mapBrowserEvent.map;
|
||||
var view = map.getView();
|
||||
view.setHint(ol.ViewHint.INTERACTING, -1);
|
||||
var viewState = view.getState();
|
||||
var direction = this.lastScaleDelta_ - 1;
|
||||
ol.interaction.Interaction.rotate(map, view, viewState.rotation);
|
||||
ol.interaction.Interaction.zoom(map, view, viewState.resolution,
|
||||
ol.interaction.Interaction.rotate(map, view, view.getRotation());
|
||||
ol.interaction.Interaction.zoom(map, view, view.getResolution(),
|
||||
undefined, this.duration_, direction);
|
||||
this.lastScaleDelta_ = 0;
|
||||
return false;
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
goog.provide('ol.interaction.DragZoom');
|
||||
|
||||
goog.require('goog.asserts');
|
||||
goog.require('ol.animation');
|
||||
goog.require('ol.easing');
|
||||
goog.require('ol.events.condition');
|
||||
goog.require('ol.extent');
|
||||
goog.require('ol.interaction.DragBox');
|
||||
goog.require('ol.interaction.Interaction');
|
||||
goog.require('ol.style.Stroke');
|
||||
goog.require('ol.style.Style');
|
||||
|
||||
@@ -58,13 +59,35 @@ goog.inherits(ol.interaction.DragZoom, ol.interaction.DragBox);
|
||||
*/
|
||||
ol.interaction.DragZoom.prototype.onBoxEnd = function() {
|
||||
var map = this.getMap();
|
||||
|
||||
var view = map.getView();
|
||||
goog.asserts.assert(!goog.isNull(view), 'view should not be null');
|
||||
var extent = this.getGeometry().getExtent();
|
||||
var center = ol.extent.getCenter(extent);
|
||||
|
||||
var size = map.getSize();
|
||||
goog.asserts.assert(goog.isDef(size), 'size should be defined');
|
||||
ol.interaction.Interaction.zoom(map, view,
|
||||
view.getResolutionForExtent(extent, size),
|
||||
center, this.duration_);
|
||||
|
||||
var extent = this.getGeometry().getExtent();
|
||||
|
||||
var resolution = view.constrainResolution(
|
||||
view.getResolutionForExtent(extent, size));
|
||||
|
||||
var currentResolution = view.getResolution();
|
||||
goog.asserts.assert(goog.isDef(currentResolution), 'res should be defined');
|
||||
|
||||
var currentCenter = view.getCenter();
|
||||
goog.asserts.assert(goog.isDef(currentCenter), 'center should be defined');
|
||||
|
||||
map.beforeRender(ol.animation.zoom({
|
||||
resolution: currentResolution,
|
||||
duration: this.duration_,
|
||||
easing: ol.easing.easeOut
|
||||
}));
|
||||
map.beforeRender(ol.animation.pan({
|
||||
source: currentCenter,
|
||||
duration: this.duration_,
|
||||
easing: ol.easing.easeOut
|
||||
}));
|
||||
|
||||
view.setCenter(ol.extent.getCenter(extent));
|
||||
view.setResolution(resolution);
|
||||
};
|
||||
|
||||
@@ -28,7 +28,6 @@ goog.require('ol.interaction.InteractionProperty');
|
||||
goog.require('ol.interaction.Pointer');
|
||||
goog.require('ol.layer.Vector');
|
||||
goog.require('ol.source.Vector');
|
||||
goog.require('ol.style.Style');
|
||||
|
||||
|
||||
/**
|
||||
@@ -616,6 +615,37 @@ ol.interaction.Draw.prototype.addToDrawing_ = function(event) {
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Remove last point of the feature currently being drawn.
|
||||
* @api
|
||||
*/
|
||||
ol.interaction.Draw.prototype.removeLastPoint = function() {
|
||||
var geometry = this.sketchFeature_.getGeometry();
|
||||
goog.asserts.assertInstanceof(geometry, ol.geom.SimpleGeometry,
|
||||
'geometry must be an ol.geom.SimpleGeometry');
|
||||
var coordinates, sketchLineGeom;
|
||||
if (this.mode_ === ol.interaction.DrawMode.LINE_STRING) {
|
||||
coordinates = this.sketchCoords_;
|
||||
coordinates.splice(-2, 1);
|
||||
this.geometryFunction_(coordinates, geometry);
|
||||
} else if (this.mode_ === ol.interaction.DrawMode.POLYGON) {
|
||||
coordinates = this.sketchCoords_[0];
|
||||
coordinates.splice(-2, 1);
|
||||
sketchLineGeom = this.sketchLine_.getGeometry();
|
||||
goog.asserts.assertInstanceof(sketchLineGeom, ol.geom.LineString,
|
||||
'sketchLineGeom must be an ol.geom.LineString');
|
||||
sketchLineGeom.setCoordinates(coordinates);
|
||||
this.geometryFunction_(this.sketchCoords_, geometry);
|
||||
}
|
||||
|
||||
if (coordinates.length === 0) {
|
||||
this.finishCoordinate_ = null;
|
||||
}
|
||||
|
||||
this.updateSketchFeatures_();
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Stop drawing and add the sketch feature to the target layer.
|
||||
* The {@link ol.interaction.DrawEventType.DRAWEND} event is dispatched before
|
||||
@@ -684,6 +714,33 @@ ol.interaction.Draw.prototype.abortDrawing_ = function() {
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Extend an existing geometry by adding additional points. This only works
|
||||
* on features with `LineString` geometries, where the interaction will
|
||||
* extend lines by adding points to the end of the coordinates array.
|
||||
* @param {!ol.Feature} feature Feature to be extended.
|
||||
* @api
|
||||
*/
|
||||
ol.interaction.Draw.prototype.extend = function(feature) {
|
||||
var geometry = feature.getGeometry();
|
||||
goog.asserts.assert(this.mode_ == ol.interaction.DrawMode.LINE_STRING,
|
||||
'interaction mode must be "line"');
|
||||
goog.asserts.assert(goog.isDefAndNotNull(geometry),
|
||||
'feature must have a geometry');
|
||||
goog.asserts.assert(geometry.getType() == ol.geom.GeometryType.LINE_STRING,
|
||||
'feature geometry must be a line string');
|
||||
var lineString = /** @type {ol.geom.LineString} */ (geometry);
|
||||
this.sketchFeature_ = feature;
|
||||
this.sketchCoords_ = lineString.getCoordinates();
|
||||
var last = this.sketchCoords_[this.sketchCoords_.length - 1];
|
||||
this.finishCoordinate_ = last.slice();
|
||||
this.sketchCoords_.push(last.slice());
|
||||
this.updateSketchFeatures_();
|
||||
this.dispatchEvent(new ol.interaction.DrawEvent(
|
||||
ol.interaction.DrawEventType.DRAWSTART, this.sketchFeature_));
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
|
||||
@@ -83,8 +83,7 @@ ol.interaction.KeyboardPan.handleEvent = function(mapBrowserEvent) {
|
||||
var map = mapBrowserEvent.map;
|
||||
var view = map.getView();
|
||||
goog.asserts.assert(!goog.isNull(view), 'view should not be null');
|
||||
var viewState = view.getState();
|
||||
var mapUnitsDelta = viewState.resolution * this.pixelDelta_;
|
||||
var mapUnitsDelta = view.getResolution() * this.pixelDelta_;
|
||||
var deltaX = 0, deltaY = 0;
|
||||
if (keyCode == goog.events.KeyCodes.DOWN) {
|
||||
deltaY = -mapUnitsDelta;
|
||||
@@ -96,7 +95,7 @@ ol.interaction.KeyboardPan.handleEvent = function(mapBrowserEvent) {
|
||||
deltaY = mapUnitsDelta;
|
||||
}
|
||||
var delta = [deltaX, deltaY];
|
||||
ol.coordinate.rotate(delta, viewState.rotation);
|
||||
ol.coordinate.rotate(delta, view.getRotation());
|
||||
ol.interaction.Interaction.pan(map, view, delta, this.duration_);
|
||||
mapBrowserEvent.preventDefault();
|
||||
stopEvent = true;
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
goog.provide('ol.interaction.Modify');
|
||||
goog.provide('ol.interaction.ModifyEvent');
|
||||
|
||||
goog.require('goog.array');
|
||||
goog.require('goog.asserts');
|
||||
goog.require('goog.events');
|
||||
goog.require('goog.events.Event');
|
||||
goog.require('goog.events.EventType');
|
||||
goog.require('goog.functions');
|
||||
goog.require('ol.Collection');
|
||||
goog.require('ol.CollectionEventType');
|
||||
@@ -24,7 +26,6 @@ goog.require('ol.interaction.Pointer');
|
||||
goog.require('ol.layer.Vector');
|
||||
goog.require('ol.source.Vector');
|
||||
goog.require('ol.structs.RBush');
|
||||
goog.require('ol.style.Style');
|
||||
|
||||
|
||||
/**
|
||||
@@ -33,13 +34,13 @@ goog.require('ol.style.Style');
|
||||
ol.ModifyEventType = {
|
||||
/**
|
||||
* Triggered upon feature modification start
|
||||
* @event ol.ModifyEvent#modifystart
|
||||
* @event ol.interaction.ModifyEvent#modifystart
|
||||
* @api
|
||||
*/
|
||||
MODIFYSTART: 'modifystart',
|
||||
/**
|
||||
* Triggered upon feature modification end
|
||||
* @event ol.ModifyEvent#modifyend
|
||||
* @event ol.interaction.ModifyEvent#modifyend
|
||||
* @api
|
||||
*/
|
||||
MODIFYEND: 'modifyend'
|
||||
@@ -60,7 +61,7 @@ ol.ModifyEventType = {
|
||||
* @param {ol.MapBrowserPointerEvent} mapBrowserPointerEvent Associated
|
||||
* {@link ol.MapBrowserPointerEvent}.
|
||||
*/
|
||||
ol.ModifyEvent = function(type, features, mapBrowserPointerEvent) {
|
||||
ol.interaction.ModifyEvent = function(type, features, mapBrowserPointerEvent) {
|
||||
|
||||
goog.base(this, type);
|
||||
|
||||
@@ -78,7 +79,7 @@ ol.ModifyEvent = function(type, features, mapBrowserPointerEvent) {
|
||||
*/
|
||||
this.mapBrowserPointerEvent = mapBrowserPointerEvent;
|
||||
};
|
||||
goog.inherits(ol.ModifyEvent, goog.events.Event);
|
||||
goog.inherits(ol.interaction.ModifyEvent, goog.events.Event);
|
||||
|
||||
|
||||
/**
|
||||
@@ -99,7 +100,7 @@ ol.interaction.SegmentDataType;
|
||||
* @constructor
|
||||
* @extends {ol.interaction.Pointer}
|
||||
* @param {olx.interaction.ModifyOptions} options Options.
|
||||
* @fires ol.ModifyEvent
|
||||
* @fires ol.interaction.ModifyEvent
|
||||
* @api
|
||||
*/
|
||||
ol.interaction.Modify = function(options) {
|
||||
@@ -151,7 +152,7 @@ ol.interaction.Modify = function(options) {
|
||||
|
||||
/**
|
||||
* Segment RTree for each layer
|
||||
* @type {Object.<*, ol.structs.RBush>}
|
||||
* @type {ol.structs.RBush.<ol.interaction.SegmentDataType>}
|
||||
* @private
|
||||
*/
|
||||
this.rBush_ = new ol.structs.RBush();
|
||||
@@ -169,6 +170,14 @@ ol.interaction.Modify = function(options) {
|
||||
*/
|
||||
this.snappedToVertex_ = false;
|
||||
|
||||
/**
|
||||
* Indicate whether the interaction is currently changing a feature's
|
||||
* coordinates.
|
||||
* @type {boolean}
|
||||
* @private
|
||||
*/
|
||||
this.changingFeature_ = false;
|
||||
|
||||
/**
|
||||
* @type {Array}
|
||||
* @private
|
||||
@@ -236,6 +245,48 @@ ol.interaction.Modify.prototype.addFeature_ = function(feature) {
|
||||
if (!goog.isNull(map)) {
|
||||
this.handlePointerAtPixel_(this.lastPixel_, map);
|
||||
}
|
||||
goog.events.listen(feature, goog.events.EventType.CHANGE,
|
||||
this.handleFeatureChange_, false, this);
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @param {ol.Feature} feature Feature.
|
||||
* @private
|
||||
*/
|
||||
ol.interaction.Modify.prototype.removeFeature_ = function(feature) {
|
||||
this.removeFeatureSegmentData_(feature);
|
||||
// Remove the vertex feature if the collection of canditate features
|
||||
// is empty.
|
||||
if (!goog.isNull(this.vertexFeature_) &&
|
||||
this.features_.getLength() === 0) {
|
||||
this.overlay_.getSource().removeFeature(this.vertexFeature_);
|
||||
this.vertexFeature_ = null;
|
||||
}
|
||||
goog.events.unlisten(feature, goog.events.EventType.CHANGE,
|
||||
this.handleFeatureChange_, false, this);
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @param {ol.Feature} feature Feature.
|
||||
* @private
|
||||
*/
|
||||
ol.interaction.Modify.prototype.removeFeatureSegmentData_ = function(feature) {
|
||||
var rBush = this.rBush_;
|
||||
var /** @type {Array.<ol.interaction.SegmentDataType>} */ nodesToRemove = [];
|
||||
rBush.forEach(
|
||||
/**
|
||||
* @param {ol.interaction.SegmentDataType} node RTree node.
|
||||
*/
|
||||
function(node) {
|
||||
if (feature === node.feature) {
|
||||
nodesToRemove.push(node);
|
||||
}
|
||||
});
|
||||
for (var i = nodesToRemove.length - 1; i >= 0; --i) {
|
||||
rBush.remove(nodesToRemove[i]);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -260,28 +311,26 @@ ol.interaction.Modify.prototype.handleFeatureAdd_ = function(evt) {
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @param {goog.events.Event} evt Event.
|
||||
* @private
|
||||
*/
|
||||
ol.interaction.Modify.prototype.handleFeatureChange_ = function(evt) {
|
||||
if (!this.changingFeature_) {
|
||||
var feature = /** @type {ol.Feature} */ (evt.target);
|
||||
this.removeFeature_(feature);
|
||||
this.addFeature_(feature);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @param {ol.CollectionEvent} evt Event.
|
||||
* @private
|
||||
*/
|
||||
ol.interaction.Modify.prototype.handleFeatureRemove_ = function(evt) {
|
||||
var feature = evt.element;
|
||||
var rBush = this.rBush_;
|
||||
var i, nodesToRemove = [];
|
||||
rBush.forEachInExtent(feature.getGeometry().getExtent(), function(node) {
|
||||
if (feature === node.feature) {
|
||||
nodesToRemove.push(node);
|
||||
}
|
||||
});
|
||||
for (i = nodesToRemove.length - 1; i >= 0; --i) {
|
||||
rBush.remove(nodesToRemove[i]);
|
||||
}
|
||||
// There remains only vertexFeature…
|
||||
if (!goog.isNull(this.vertexFeature_) &&
|
||||
this.features_.getLength() === 0) {
|
||||
this.overlay_.getSource().removeFeature(this.vertexFeature_);
|
||||
this.vertexFeature_ = null;
|
||||
}
|
||||
var feature = /** @type {ol.Feature} */ (evt.element);
|
||||
this.removeFeature_(feature);
|
||||
};
|
||||
|
||||
|
||||
@@ -530,7 +579,8 @@ ol.interaction.Modify.handleDownEvent_ = function(evt) {
|
||||
for (i = insertVertices.length - 1; i >= 0; --i) {
|
||||
this.insertVertex_.apply(this, insertVertices[i]);
|
||||
}
|
||||
this.dispatchEvent(new ol.ModifyEvent(ol.ModifyEventType.MODIFYSTART,
|
||||
this.dispatchEvent(
|
||||
new ol.interaction.ModifyEvent(ol.ModifyEventType.MODIFYSTART,
|
||||
this.features_, evt));
|
||||
}
|
||||
return !goog.isNull(this.vertexFeature_);
|
||||
@@ -586,7 +636,7 @@ ol.interaction.Modify.handleDragEvent_ = function(evt) {
|
||||
break;
|
||||
}
|
||||
|
||||
geometry.setCoordinates(coordinates);
|
||||
this.setGeometryCoordinates_(geometry, coordinates);
|
||||
}
|
||||
this.createOrUpdateVertexFeature_(vertex);
|
||||
};
|
||||
@@ -605,7 +655,8 @@ ol.interaction.Modify.handleUpEvent_ = function(evt) {
|
||||
this.rBush_.update(ol.extent.boundingExtent(segmentData.segment),
|
||||
segmentData);
|
||||
}
|
||||
this.dispatchEvent(new ol.ModifyEvent(ol.ModifyEventType.MODIFYEND,
|
||||
this.dispatchEvent(
|
||||
new ol.interaction.ModifyEvent(ol.ModifyEventType.MODIFYEND,
|
||||
this.features_, evt));
|
||||
return false;
|
||||
};
|
||||
@@ -769,7 +820,7 @@ ol.interaction.Modify.prototype.insertVertex_ = function(segmentData, vertex) {
|
||||
return;
|
||||
}
|
||||
|
||||
geometry.setCoordinates(coordinates);
|
||||
this.setGeometryCoordinates_(geometry, coordinates);
|
||||
var rTree = this.rBush_;
|
||||
goog.asserts.assert(goog.isDef(segment), 'segment should be defined');
|
||||
rTree.remove(segmentData);
|
||||
@@ -875,7 +926,7 @@ ol.interaction.Modify.prototype.removeVertex_ = function() {
|
||||
if (deleted) {
|
||||
this.rBush_.remove(newSegment[0]);
|
||||
this.rBush_.remove(newSegment[1]);
|
||||
geometry.setCoordinates(coordinates);
|
||||
this.setGeometryCoordinates_(geometry, coordinates);
|
||||
goog.asserts.assert(newIndex >= 0, 'newIndex should be larger than 0');
|
||||
var newSegmentData = /** @type {ol.interaction.SegmentDataType} */ ({
|
||||
depth: segmentData.depth,
|
||||
@@ -899,6 +950,19 @@ ol.interaction.Modify.prototype.removeVertex_ = function() {
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @param {ol.geom.SimpleGeometry} geometry Geometry.
|
||||
* @param {Array} coordinates Coordinates.
|
||||
* @private
|
||||
*/
|
||||
ol.interaction.Modify.prototype.setGeometryCoordinates_ =
|
||||
function(geometry, coordinates) {
|
||||
this.changingFeature_ = true;
|
||||
geometry.setCoordinates(coordinates);
|
||||
this.changingFeature_ = false;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @param {ol.geom.SimpleGeometry} geometry Geometry.
|
||||
* @param {number} index Index.
|
||||
@@ -909,6 +973,7 @@ ol.interaction.Modify.prototype.removeVertex_ = function() {
|
||||
ol.interaction.Modify.prototype.updateSegmentIndices_ = function(
|
||||
geometry, index, depth, delta) {
|
||||
this.rBush_.forEachInExtent(geometry.getExtent(), function(segmentDataMatch) {
|
||||
goog.asserts.assert(goog.isDef(segmentDataMatch.depth));
|
||||
if (segmentDataMatch.geometry === geometry &&
|
||||
(!goog.isDef(depth) ||
|
||||
goog.array.equals(segmentDataMatch.depth, depth)) &&
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
goog.provide('ol.interaction.Select');
|
||||
goog.provide('ol.interaction.SelectEvent');
|
||||
goog.provide('ol.interaction.SelectEventType');
|
||||
goog.provide('ol.interaction.SelectFilterFunction');
|
||||
|
||||
goog.require('goog.array');
|
||||
@@ -13,16 +15,15 @@ goog.require('ol.geom.GeometryType');
|
||||
goog.require('ol.interaction.Interaction');
|
||||
goog.require('ol.layer.Vector');
|
||||
goog.require('ol.source.Vector');
|
||||
goog.require('ol.style.Style');
|
||||
|
||||
|
||||
/**
|
||||
* @enum {string}
|
||||
*/
|
||||
ol.SelectEventType = {
|
||||
ol.interaction.SelectEventType = {
|
||||
/**
|
||||
* Triggered when feature(s) has been (de)selected.
|
||||
* @event ol.SelectEvent#select
|
||||
* @event ol.interaction.SelectEvent#select
|
||||
* @api
|
||||
*/
|
||||
SELECT: 'select'
|
||||
@@ -53,7 +54,8 @@ ol.interaction.SelectFilterFunction;
|
||||
* @extends {goog.events.Event}
|
||||
* @constructor
|
||||
*/
|
||||
ol.SelectEvent = function(type, selected, deselected, mapBrowserEvent) {
|
||||
ol.interaction.SelectEvent =
|
||||
function(type, selected, deselected, mapBrowserEvent) {
|
||||
goog.base(this, type);
|
||||
|
||||
/**
|
||||
@@ -77,7 +79,7 @@ ol.SelectEvent = function(type, selected, deselected, mapBrowserEvent) {
|
||||
*/
|
||||
this.mapBrowserEvent = mapBrowserEvent;
|
||||
};
|
||||
goog.inherits(ol.SelectEvent, goog.events.Event);
|
||||
goog.inherits(ol.interaction.SelectEvent, goog.events.Event);
|
||||
|
||||
|
||||
|
||||
@@ -94,7 +96,7 @@ goog.inherits(ol.SelectEvent, goog.events.Event);
|
||||
* @constructor
|
||||
* @extends {ol.interaction.Interaction}
|
||||
* @param {olx.interaction.SelectOptions=} opt_options Options.
|
||||
* @fires ol.SelectEvent
|
||||
* @fires ol.interaction.SelectEvent
|
||||
* @api stable
|
||||
*/
|
||||
ol.interaction.Select = function(opt_options) {
|
||||
@@ -285,8 +287,8 @@ ol.interaction.Select.handleEvent = function(mapBrowserEvent) {
|
||||
}
|
||||
if (change) {
|
||||
this.dispatchEvent(
|
||||
new ol.SelectEvent(ol.SelectEventType.SELECT, selected, deselected,
|
||||
mapBrowserEvent));
|
||||
new ol.interaction.SelectEvent(ol.interaction.SelectEventType.SELECT,
|
||||
selected, deselected, mapBrowserEvent));
|
||||
}
|
||||
return ol.events.condition.pointerMove(mapBrowserEvent);
|
||||
};
|
||||
|
||||
180
src/ol/interaction/translateinteraction.js
Normal file
180
src/ol/interaction/translateinteraction.js
Normal file
@@ -0,0 +1,180 @@
|
||||
goog.provide('ol.interaction.Translate');
|
||||
|
||||
goog.require('goog.array');
|
||||
goog.require('ol.interaction.Pointer');
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @classdesc
|
||||
* Interaction for translating (moving) features.
|
||||
*
|
||||
* @constructor
|
||||
* @extends {ol.interaction.Pointer}
|
||||
* @param {olx.interaction.TranslateOptions} options Options.
|
||||
* @api
|
||||
*/
|
||||
ol.interaction.Translate = function(options) {
|
||||
goog.base(this, {
|
||||
handleDownEvent: ol.interaction.Translate.handleDownEvent_,
|
||||
handleDragEvent: ol.interaction.Translate.handleDragEvent_,
|
||||
handleMoveEvent: ol.interaction.Translate.handleMoveEvent_,
|
||||
handleUpEvent: ol.interaction.Translate.handleUpEvent_
|
||||
});
|
||||
|
||||
|
||||
/**
|
||||
* @type {string|undefined}
|
||||
* @private
|
||||
*/
|
||||
this.previousCursor_ = undefined;
|
||||
|
||||
|
||||
/**
|
||||
* The last position we translated to.
|
||||
* @type {ol.Coordinate}
|
||||
* @private
|
||||
*/
|
||||
this.lastCoordinate_ = null;
|
||||
|
||||
|
||||
/**
|
||||
* @type {ol.Collection.<ol.Feature>}
|
||||
* @private
|
||||
*/
|
||||
this.features_ = goog.isDef(options.features) ? options.features : null;
|
||||
|
||||
/**
|
||||
* @type {ol.Feature}
|
||||
* @private
|
||||
*/
|
||||
this.lastFeature_ = null;
|
||||
};
|
||||
goog.inherits(ol.interaction.Translate, ol.interaction.Pointer);
|
||||
|
||||
|
||||
/**
|
||||
* @param {ol.MapBrowserPointerEvent} event Event.
|
||||
* @return {boolean} Start drag sequence?
|
||||
* @this {ol.interaction.Translate}
|
||||
* @private
|
||||
*/
|
||||
ol.interaction.Translate.handleDownEvent_ = function(event) {
|
||||
this.lastFeature_ = this.featuresAtPixel_(event.pixel, event.map);
|
||||
if (goog.isNull(this.lastCoordinate_) && !goog.isNull(this.lastFeature_)) {
|
||||
this.lastCoordinate_ = event.coordinate;
|
||||
ol.interaction.Translate.handleMoveEvent_.call(this, event);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @param {ol.MapBrowserPointerEvent} event Event.
|
||||
* @return {boolean} Stop drag sequence?
|
||||
* @this {ol.interaction.Translate}
|
||||
* @private
|
||||
*/
|
||||
ol.interaction.Translate.handleUpEvent_ = function(event) {
|
||||
if (!goog.isNull(this.lastCoordinate_)) {
|
||||
this.lastCoordinate_ = null;
|
||||
ol.interaction.Translate.handleMoveEvent_.call(this, event);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @param {ol.MapBrowserPointerEvent} event Event.
|
||||
* @this {ol.interaction.Translate}
|
||||
* @private
|
||||
*/
|
||||
ol.interaction.Translate.handleDragEvent_ = function(event) {
|
||||
if (!goog.isNull(this.lastCoordinate_)) {
|
||||
var newCoordinate = event.coordinate;
|
||||
var deltaX = newCoordinate[0] - this.lastCoordinate_[0];
|
||||
var deltaY = newCoordinate[1] - this.lastCoordinate_[1];
|
||||
|
||||
if (!goog.isNull(this.features_)) {
|
||||
this.features_.forEach(function(feature) {
|
||||
var geom = feature.getGeometry();
|
||||
geom.translate(deltaX, deltaY);
|
||||
feature.setGeometry(geom);
|
||||
});
|
||||
} else if (goog.isNull(this.lastFeature_)) {
|
||||
var geom = this.lastFeature_.getGeometry();
|
||||
geom.translate(deltaX, deltaY);
|
||||
this.lastFeature_.setGeometry(geom);
|
||||
}
|
||||
|
||||
this.lastCoordinate_ = newCoordinate;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @param {ol.MapBrowserEvent} event Event.
|
||||
* @this {ol.interaction.Translate}
|
||||
* @private
|
||||
*/
|
||||
ol.interaction.Translate.handleMoveEvent_ = function(event)
|
||||
{
|
||||
var elem = event.map.getTargetElement();
|
||||
var intersectingFeature = event.map.forEachFeatureAtPixel(event.pixel,
|
||||
function(feature) {
|
||||
return feature;
|
||||
});
|
||||
|
||||
if (intersectingFeature) {
|
||||
var isSelected = false;
|
||||
|
||||
if (!goog.isNull(this.features_) &&
|
||||
goog.array.contains(this.features_.getArray(), intersectingFeature)) {
|
||||
isSelected = true;
|
||||
}
|
||||
|
||||
this.previousCursor_ = elem.style.cursor;
|
||||
|
||||
// WebKit browsers don't support the grab icons without a prefix
|
||||
elem.style.cursor = !goog.isNull(this.lastCoordinate_) ?
|
||||
'-webkit-grabbing' : (isSelected ? '-webkit-grab' : 'pointer');
|
||||
|
||||
// Thankfully, attempting to set the standard ones will silently fail,
|
||||
// keeping the prefixed icons
|
||||
elem.style.cursor = goog.isNull(this.lastCoordinate_) ?
|
||||
'grabbing' : (isSelected ? 'grab' : 'pointer');
|
||||
|
||||
} else {
|
||||
elem.style.cursor = goog.isDef(this.previousCursor_) ?
|
||||
this.previousCursor_ : '';
|
||||
this.previousCursor_ = undefined;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Tests to see if the given coordinates intersects any of our selected
|
||||
* features.
|
||||
* @param {ol.Pixel} pixel Pixel coordinate to test for intersection.
|
||||
* @param {ol.Map} map Map to test the intersection on.
|
||||
* @return {ol.Feature} Returns the feature found at the specified pixel
|
||||
* coordinates.
|
||||
* @private
|
||||
*/
|
||||
ol.interaction.Translate.prototype.featuresAtPixel_ = function(pixel, map) {
|
||||
var found = null;
|
||||
|
||||
var intersectingFeature = map.forEachFeatureAtPixel(pixel,
|
||||
function(feature) {
|
||||
return feature;
|
||||
});
|
||||
|
||||
if (!goog.isNull(this.features_) &&
|
||||
goog.array.contains(this.features_.getArray(), intersectingFeature)) {
|
||||
found = intersectingFeature;
|
||||
}
|
||||
|
||||
return found;
|
||||
};
|
||||
@@ -161,18 +161,24 @@ ol.layer.Layer.prototype.handleSourcePropertyChange_ = function() {
|
||||
*/
|
||||
ol.layer.Layer.prototype.setMap = function(map) {
|
||||
goog.events.unlistenByKey(this.mapPrecomposeKey_);
|
||||
this.changed();
|
||||
this.mapPrecomposeKey_ = null;
|
||||
if (goog.isNull(map)) {
|
||||
this.changed();
|
||||
}
|
||||
goog.events.unlistenByKey(this.mapRenderKey_);
|
||||
this.mapRenderKey_ = null;
|
||||
if (!goog.isNull(map)) {
|
||||
this.mapPrecomposeKey_ = goog.events.listen(
|
||||
map, ol.render.EventType.PRECOMPOSE, function(evt) {
|
||||
var layerState = this.getLayerState();
|
||||
layerState.managed = false;
|
||||
layerState.zIndex = Infinity;
|
||||
evt.frameState.layerStatesArray.push(layerState);
|
||||
evt.frameState.layerStates[goog.getUid(this)] = layerState;
|
||||
}, false, this);
|
||||
this.mapRenderKey_ = goog.events.listen(
|
||||
this, goog.events.EventType.CHANGE, map.render, false, map);
|
||||
this.changed();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -2,7 +2,6 @@ goog.provide('ol.layer.Base');
|
||||
goog.provide('ol.layer.LayerProperty');
|
||||
goog.provide('ol.layer.LayerState');
|
||||
|
||||
goog.require('goog.events');
|
||||
goog.require('goog.math');
|
||||
goog.require('goog.object');
|
||||
goog.require('ol.Object');
|
||||
@@ -20,6 +19,7 @@ ol.layer.LayerProperty = {
|
||||
SATURATION: 'saturation',
|
||||
VISIBLE: 'visible',
|
||||
EXTENT: 'extent',
|
||||
Z_INDEX: 'zIndex',
|
||||
MAX_RESOLUTION: 'maxResolution',
|
||||
MIN_RESOLUTION: 'minResolution',
|
||||
SOURCE: 'source'
|
||||
@@ -37,6 +37,7 @@ ol.layer.LayerProperty = {
|
||||
* visible: boolean,
|
||||
* managed: boolean,
|
||||
* extent: (ol.Extent|undefined),
|
||||
* zIndex: number,
|
||||
* maxResolution: number,
|
||||
* minResolution: number}}
|
||||
*/
|
||||
@@ -77,6 +78,8 @@ ol.layer.Base = function(options) {
|
||||
goog.isDef(options.saturation) ? options.saturation : 1;
|
||||
properties[ol.layer.LayerProperty.VISIBLE] =
|
||||
goog.isDef(options.visible) ? options.visible : true;
|
||||
properties[ol.layer.LayerProperty.Z_INDEX] =
|
||||
goog.isDef(options.zIndex) ? options.zIndex : 0;
|
||||
properties[ol.layer.LayerProperty.MAX_RESOLUTION] =
|
||||
goog.isDef(options.maxResolution) ? options.maxResolution : Infinity;
|
||||
properties[ol.layer.LayerProperty.MIN_RESOLUTION] =
|
||||
@@ -132,6 +135,7 @@ ol.layer.Base.prototype.getLayerState = function() {
|
||||
var sourceState = this.getSourceState();
|
||||
var visible = this.getVisible();
|
||||
var extent = this.getExtent();
|
||||
var zIndex = this.getZIndex();
|
||||
var maxResolution = this.getMaxResolution();
|
||||
var minResolution = this.getMinResolution();
|
||||
return {
|
||||
@@ -145,6 +149,7 @@ ol.layer.Base.prototype.getLayerState = function() {
|
||||
visible: visible,
|
||||
managed: true,
|
||||
extent: extent,
|
||||
zIndex: zIndex,
|
||||
maxResolution: maxResolution,
|
||||
minResolution: Math.max(minResolution, 0)
|
||||
};
|
||||
@@ -243,6 +248,18 @@ ol.layer.Base.prototype.getVisible = function() {
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Return the Z-index of the layer, which is used to order layers before
|
||||
* rendering. The default Z-index is 0.
|
||||
* @return {number} The Z-index of the layer.
|
||||
* @observable
|
||||
* @api
|
||||
*/
|
||||
ol.layer.Base.prototype.getZIndex = function() {
|
||||
return /** @type {number} */ (this.get(ol.layer.LayerProperty.Z_INDEX));
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Adjust the layer brightness. A value of -1 will render the layer completely
|
||||
* black. A value of 0 will leave the brightness unchanged. A value of 1 will
|
||||
@@ -365,3 +382,15 @@ ol.layer.Base.prototype.setSaturation = function(saturation) {
|
||||
ol.layer.Base.prototype.setVisible = function(visible) {
|
||||
this.set(ol.layer.LayerProperty.VISIBLE, visible);
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Set Z-index of the layer, which is used to order layers before rendering.
|
||||
* The default Z-index is 0.
|
||||
* @param {number} zindex The z-index of the layer.
|
||||
* @observable
|
||||
* @api
|
||||
*/
|
||||
ol.layer.Base.prototype.setZIndex = function(zindex) {
|
||||
this.set(ol.layer.LayerProperty.Z_INDEX, zindex);
|
||||
};
|
||||
|
||||
@@ -101,6 +101,7 @@ ol.OL3_LOGO_URL = 'data:image/png;base64,' +
|
||||
|
||||
/**
|
||||
* @type {Array.<ol.RendererType>}
|
||||
* @const
|
||||
*/
|
||||
ol.DEFAULT_RENDERER_TYPES = [
|
||||
ol.RendererType.CANVAS,
|
||||
@@ -200,7 +201,7 @@ ol.Map = function(options) {
|
||||
|
||||
/**
|
||||
* @private
|
||||
* @type {Object}
|
||||
* @type {Object.<string, string>}
|
||||
*/
|
||||
this.logos_ = optionsInternal.logos;
|
||||
|
||||
@@ -692,22 +693,8 @@ ol.Map.prototype.getEventCoordinate = function(event) {
|
||||
* @api stable
|
||||
*/
|
||||
ol.Map.prototype.getEventPixel = function(event) {
|
||||
// goog.style.getRelativePosition is based on event.targetTouches,
|
||||
// but touchend and touchcancel events have no targetTouches when
|
||||
// the last finger is removed from the screen.
|
||||
// So we ourselves compute the position of touch events.
|
||||
// See https://github.com/google/closure-library/pull/323
|
||||
if (goog.isDef(event.changedTouches)) {
|
||||
var touch = event.changedTouches[0];
|
||||
var viewportPosition = goog.style.getClientPosition(this.viewport_);
|
||||
return [
|
||||
touch.clientX - viewportPosition.x,
|
||||
touch.clientY - viewportPosition.y
|
||||
];
|
||||
} else {
|
||||
var eventPosition = goog.style.getRelativePosition(event, this.viewport_);
|
||||
return [eventPosition.x, eventPosition.y];
|
||||
}
|
||||
var eventPosition = goog.style.getRelativePosition(event, this.viewport_);
|
||||
return [eventPosition.x, eventPosition.y];
|
||||
};
|
||||
|
||||
|
||||
@@ -1447,7 +1434,7 @@ ol.Map.prototype.unskipFeature = function(feature) {
|
||||
* @typedef {{controls: ol.Collection.<ol.control.Control>,
|
||||
* interactions: ol.Collection.<ol.interaction.Interaction>,
|
||||
* keyboardEventTarget: (Element|Document),
|
||||
* logos: Object,
|
||||
* logos: Object.<string, string>,
|
||||
* overlays: ol.Collection.<ol.Overlay>,
|
||||
* rendererConstructor:
|
||||
* function(new: ol.renderer.Map, Element, ol.Map),
|
||||
|
||||
@@ -17,7 +17,6 @@ goog.require('goog.events.EventType');
|
||||
* @constructor
|
||||
* @extends {goog.events.EventTarget}
|
||||
* @fires change
|
||||
* @suppress {checkStructDictInheritance}
|
||||
* @struct
|
||||
* @api stable
|
||||
*/
|
||||
@@ -63,6 +62,8 @@ ol.Observable.prototype.changed = function() {
|
||||
|
||||
|
||||
/**
|
||||
* Get the version number for this object. Each time the object is modified,
|
||||
* its version number will be incremented.
|
||||
* @return {number} Revision.
|
||||
* @api
|
||||
*/
|
||||
|
||||
@@ -97,10 +97,10 @@ ol.Overlay = function(options) {
|
||||
this.element_.style.position = 'absolute';
|
||||
|
||||
/**
|
||||
* @private
|
||||
* @protected
|
||||
* @type {boolean}
|
||||
*/
|
||||
this.autoPan_ = goog.isDef(options.autoPan) ? options.autoPan : false;
|
||||
this.autoPan = goog.isDef(options.autoPan) ? options.autoPan : false;
|
||||
|
||||
/**
|
||||
* @private
|
||||
@@ -263,7 +263,7 @@ ol.Overlay.prototype.handleMapChanged = function() {
|
||||
if (goog.isDefAndNotNull(map)) {
|
||||
this.mapPostrenderListenerKey_ = goog.events.listen(map,
|
||||
ol.MapEventType.POSTRENDER, this.render, false, this);
|
||||
this.updatePixelPosition_();
|
||||
this.updatePixelPosition();
|
||||
var container = this.stopEvent_ ?
|
||||
map.getOverlayContainerStopEvent() : map.getOverlayContainer();
|
||||
if (this.insertFirst_) {
|
||||
@@ -280,7 +280,7 @@ ol.Overlay.prototype.handleMapChanged = function() {
|
||||
* @protected
|
||||
*/
|
||||
ol.Overlay.prototype.render = function() {
|
||||
this.updatePixelPosition_();
|
||||
this.updatePixelPosition();
|
||||
};
|
||||
|
||||
|
||||
@@ -288,7 +288,7 @@ ol.Overlay.prototype.render = function() {
|
||||
* @protected
|
||||
*/
|
||||
ol.Overlay.prototype.handleOffsetChanged = function() {
|
||||
this.updatePixelPosition_();
|
||||
this.updatePixelPosition();
|
||||
};
|
||||
|
||||
|
||||
@@ -296,8 +296,8 @@ ol.Overlay.prototype.handleOffsetChanged = function() {
|
||||
* @protected
|
||||
*/
|
||||
ol.Overlay.prototype.handlePositionChanged = function() {
|
||||
this.updatePixelPosition_();
|
||||
if (goog.isDef(this.get(ol.OverlayProperty.POSITION)) && this.autoPan_) {
|
||||
this.updatePixelPosition();
|
||||
if (goog.isDef(this.get(ol.OverlayProperty.POSITION)) && this.autoPan) {
|
||||
this.panIntoView_();
|
||||
}
|
||||
};
|
||||
@@ -307,7 +307,7 @@ ol.Overlay.prototype.handlePositionChanged = function() {
|
||||
* @protected
|
||||
*/
|
||||
ol.Overlay.prototype.handlePositioningChanged = function() {
|
||||
this.updatePixelPosition_();
|
||||
this.updatePixelPosition();
|
||||
};
|
||||
|
||||
|
||||
@@ -363,7 +363,7 @@ ol.Overlay.prototype.setPosition = function(position) {
|
||||
* @private
|
||||
*/
|
||||
ol.Overlay.prototype.panIntoView_ = function() {
|
||||
goog.asserts.assert(this.autoPan_, 'this.autoPan_ should be true');
|
||||
goog.asserts.assert(this.autoPan, 'this.autoPan should be true');
|
||||
var map = this.getMap();
|
||||
|
||||
if (!goog.isDef(map) || goog.isNull(map.getTargetElement())) {
|
||||
@@ -455,27 +455,48 @@ ol.Overlay.prototype.setPositioning = function(positioning) {
|
||||
|
||||
|
||||
/**
|
||||
* @private
|
||||
* Modify the visibility of the element.
|
||||
* @param {boolean} visible
|
||||
* @protected
|
||||
*/
|
||||
ol.Overlay.prototype.updatePixelPosition_ = function() {
|
||||
ol.Overlay.prototype.setVisible = function(visible) {
|
||||
if (this.rendered_.visible !== visible) {
|
||||
goog.style.setElementShown(this.element_, visible);
|
||||
this.rendered_.visible = visible;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Update pixel position.
|
||||
* @protected
|
||||
*/
|
||||
ol.Overlay.prototype.updatePixelPosition = function() {
|
||||
var map = this.getMap();
|
||||
var position = this.getPosition();
|
||||
if (!goog.isDef(map) || !map.isRendered() || !goog.isDef(position)) {
|
||||
if (this.rendered_.visible) {
|
||||
goog.style.setElementShown(this.element_, false);
|
||||
this.rendered_.visible = false;
|
||||
}
|
||||
this.setVisible(false);
|
||||
return;
|
||||
}
|
||||
|
||||
var pixel = map.getPixelFromCoordinate(position);
|
||||
goog.asserts.assert(!goog.isNull(pixel), 'pixel should not be null');
|
||||
var mapSize = map.getSize();
|
||||
this.updateRenderedPosition(pixel, mapSize);
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @param {ol.Pixel} pixel
|
||||
* @param {ol.Size|undefined} mapSize
|
||||
* @protected
|
||||
*/
|
||||
ol.Overlay.prototype.updateRenderedPosition = function(pixel, mapSize) {
|
||||
goog.asserts.assert(!goog.isNull(pixel), 'pixel should not be null');
|
||||
goog.asserts.assert(goog.isDef(mapSize), 'mapSize should be defined');
|
||||
var style = this.element_.style;
|
||||
var offset = this.getOffset();
|
||||
goog.asserts.assert(goog.isArray(offset), 'offset should be an array');
|
||||
|
||||
var positioning = this.getPositioning();
|
||||
goog.asserts.assert(goog.isDef(positioning),
|
||||
'positioning should be defined');
|
||||
@@ -531,9 +552,5 @@ ol.Overlay.prototype.updatePixelPosition_ = function() {
|
||||
}
|
||||
}
|
||||
|
||||
if (!this.rendered_.visible) {
|
||||
goog.style.setElementShown(this.element_, true);
|
||||
this.rendered_.visible = true;
|
||||
}
|
||||
|
||||
this.setVisible(true);
|
||||
};
|
||||
|
||||
@@ -30,7 +30,6 @@
|
||||
|
||||
goog.provide('ol.pointer.NativeSource');
|
||||
|
||||
goog.require('goog.object');
|
||||
goog.require('ol.pointer.EventSource');
|
||||
|
||||
|
||||
|
||||
@@ -34,7 +34,6 @@ goog.require('goog.array');
|
||||
goog.require('goog.dom');
|
||||
goog.require('goog.events');
|
||||
goog.require('goog.events.BrowserEvent');
|
||||
goog.require('goog.events.Event');
|
||||
goog.require('goog.events.EventTarget');
|
||||
|
||||
goog.require('ol.has');
|
||||
|
||||
@@ -141,8 +141,12 @@ ol.proj.Projection = function(options) {
|
||||
*/
|
||||
this.defaultTileGrid_ = null;
|
||||
|
||||
if (ol.ENABLE_PROJ4JS && typeof proj4 == 'function') {
|
||||
var code = options.code;
|
||||
var projections = ol.proj.projections_;
|
||||
var code = options.code;
|
||||
goog.asserts.assert(goog.isDef(code),
|
||||
'Option "code" is required for constructing instance');
|
||||
if (ol.ENABLE_PROJ4JS && typeof proj4 == 'function' &&
|
||||
!goog.isDef(projections[code])) {
|
||||
var def = proj4.defs(code);
|
||||
if (goog.isDef(def)) {
|
||||
if (goog.isDef(def.axis) && !goog.isDef(options.axisOrientation)) {
|
||||
@@ -158,7 +162,6 @@ ol.proj.Projection = function(options) {
|
||||
}
|
||||
this.units_ = units;
|
||||
}
|
||||
var projections = ol.proj.projections_;
|
||||
var currentCode, currentDef, currentProj, proj4Transform;
|
||||
for (currentCode in projections) {
|
||||
currentDef = proj4.defs(currentCode);
|
||||
|
||||
@@ -1,8 +1,12 @@
|
||||
// FIXME add option to apply snapToPixel to all coordinates?
|
||||
// FIXME can eliminate empty set styles and strokes (when all geoms skipped)
|
||||
|
||||
goog.provide('ol.render.canvas.ImageReplay');
|
||||
goog.provide('ol.render.canvas.LineStringReplay');
|
||||
goog.provide('ol.render.canvas.PolygonReplay');
|
||||
goog.provide('ol.render.canvas.Replay');
|
||||
goog.provide('ol.render.canvas.ReplayGroup');
|
||||
goog.provide('ol.render.canvas.TextReplay');
|
||||
|
||||
goog.require('goog.array');
|
||||
goog.require('goog.asserts');
|
||||
@@ -216,7 +220,8 @@ ol.render.canvas.Replay.prototype.beginGeometry = function(geometry, feature) {
|
||||
* @param {number} pixelRatio Pixel ratio.
|
||||
* @param {goog.vec.Mat4.Number} transform Transform.
|
||||
* @param {number} viewRotation View rotation.
|
||||
* @param {Object} skippedFeaturesHash Ids of features to skip.
|
||||
* @param {Object.<string, boolean>} skippedFeaturesHash Ids of features
|
||||
* to skip.
|
||||
* @param {Array.<*>} instructions Instructions array.
|
||||
* @param {function(ol.Feature): T|undefined} featureCallback Feature callback.
|
||||
* @param {ol.Extent=} opt_hitExtent Only check features that intersect this
|
||||
@@ -252,7 +257,8 @@ ol.render.canvas.Replay.prototype.replay_ = function(
|
||||
case ol.render.canvas.Instruction.BEGIN_GEOMETRY:
|
||||
feature = /** @type {ol.Feature} */ (instruction[1]);
|
||||
var featureUid = goog.getUid(feature).toString();
|
||||
if (goog.isDef(skippedFeaturesHash[featureUid])) {
|
||||
if (goog.isDef(skippedFeaturesHash[featureUid]) ||
|
||||
!goog.isDefAndNotNull(feature.getGeometry())) {
|
||||
i = /** @type {number} */ (instruction[2]);
|
||||
} else if (goog.isDef(opt_hitExtent) && !ol.extent.intersects(
|
||||
opt_hitExtent, feature.getGeometry().getExtent())) {
|
||||
@@ -491,7 +497,8 @@ ol.render.canvas.Replay.prototype.replay_ = function(
|
||||
* @param {number} pixelRatio Pixel ratio.
|
||||
* @param {goog.vec.Mat4.Number} transform Transform.
|
||||
* @param {number} viewRotation View rotation.
|
||||
* @param {Object} skippedFeaturesHash Ids of features to skip
|
||||
* @param {Object.<string, boolean>} skippedFeaturesHash Ids of features
|
||||
* to skip.
|
||||
*/
|
||||
ol.render.canvas.Replay.prototype.replay = function(
|
||||
context, pixelRatio, transform, viewRotation, skippedFeaturesHash) {
|
||||
@@ -505,7 +512,8 @@ ol.render.canvas.Replay.prototype.replay = function(
|
||||
* @param {CanvasRenderingContext2D} context Context.
|
||||
* @param {goog.vec.Mat4.Number} transform Transform.
|
||||
* @param {number} viewRotation View rotation.
|
||||
* @param {Object} skippedFeaturesHash Ids of features to skip
|
||||
* @param {Object.<string, boolean>} skippedFeaturesHash Ids of features
|
||||
* to skip.
|
||||
* @param {function(ol.Feature): T=} opt_featureCallback Feature callback.
|
||||
* @param {ol.Extent=} opt_hitExtent Only check features that intersect this
|
||||
* extent.
|
||||
@@ -1858,7 +1866,8 @@ ol.render.canvas.ReplayGroup.prototype.finish = function() {
|
||||
* @param {ol.Coordinate} coordinate Coordinate.
|
||||
* @param {number} resolution Resolution.
|
||||
* @param {number} rotation Rotation.
|
||||
* @param {Object} skippedFeaturesHash Ids of features to skip
|
||||
* @param {Object.<string, boolean>} skippedFeaturesHash Ids of features
|
||||
* to skip.
|
||||
* @param {function(ol.Feature): T} callback Feature callback.
|
||||
* @return {T|undefined} Callback result.
|
||||
* @template T
|
||||
@@ -1941,7 +1950,8 @@ ol.render.canvas.ReplayGroup.prototype.isEmpty = function() {
|
||||
* @param {number} pixelRatio Pixel ratio.
|
||||
* @param {goog.vec.Mat4.Number} transform Transform.
|
||||
* @param {number} viewRotation View rotation.
|
||||
* @param {Object} skippedFeaturesHash Ids of features to skip
|
||||
* @param {Object.<string, boolean>} skippedFeaturesHash Ids of features
|
||||
* to skip.
|
||||
*/
|
||||
ol.render.canvas.ReplayGroup.prototype.replay = function(
|
||||
context, pixelRatio, transform, viewRotation, skippedFeaturesHash) {
|
||||
@@ -1990,7 +2000,8 @@ ol.render.canvas.ReplayGroup.prototype.replay = function(
|
||||
* @param {CanvasRenderingContext2D} context Context.
|
||||
* @param {goog.vec.Mat4.Number} transform Transform.
|
||||
* @param {number} viewRotation View rotation.
|
||||
* @param {Object} skippedFeaturesHash Ids of features to skip
|
||||
* @param {Object.<string, boolean>} skippedFeaturesHash Ids of features
|
||||
* to skip.
|
||||
* @param {function(ol.Feature): T} featureCallback Feature callback.
|
||||
* @param {ol.Extent=} opt_hitExtent Only check features that intersect this
|
||||
* extent.
|
||||
|
||||
@@ -53,6 +53,7 @@ ol.render.Event = function(
|
||||
this.vectorContext = opt_vectorContext;
|
||||
|
||||
/**
|
||||
* An object representing the current render frame state.
|
||||
* @type {olx.FrameState|undefined}
|
||||
* @api
|
||||
*/
|
||||
|
||||
@@ -3,6 +3,8 @@ goog.provide('ol.render.VectorContext');
|
||||
|
||||
|
||||
/**
|
||||
* Context for drawing geometries. A vector context is available on render
|
||||
* events and does not need to be constructed directly.
|
||||
* @constructor
|
||||
* @struct
|
||||
* @api
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
// This file is automatically generated, do not edit
|
||||
goog.provide('ol.render.webgl.imagereplay.shader.Color');
|
||||
goog.provide('ol.render.webgl.imagereplay.shader.Color.Locations');
|
||||
goog.provide('ol.render.webgl.imagereplay.shader.ColorFragment');
|
||||
goog.provide('ol.render.webgl.imagereplay.shader.ColorVertex');
|
||||
|
||||
goog.require('ol.webgl.shader');
|
||||
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
// This file is automatically generated, do not edit
|
||||
goog.provide('ol.render.webgl.imagereplay.shader.Default');
|
||||
goog.provide('ol.render.webgl.imagereplay.shader.Default.Locations');
|
||||
goog.provide('ol.render.webgl.imagereplay.shader.DefaultFragment');
|
||||
goog.provide('ol.render.webgl.imagereplay.shader.DefaultVertex');
|
||||
|
||||
goog.require('ol.webgl.shader');
|
||||
|
||||
|
||||
@@ -93,6 +93,9 @@ ol.render.webgl.Immediate.prototype.flush = function() {
|
||||
|
||||
|
||||
/**
|
||||
* Register a function to be called for rendering at a given zIndex. The
|
||||
* function will be called asynchronously. The callback will receive a
|
||||
* reference to {@link ol.render.canvas.Immediate} context for drawing.
|
||||
* @param {number} zIndex Z index.
|
||||
* @param {function(ol.render.webgl.Immediate)} callback Callback.
|
||||
* @api
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
goog.provide('ol.render.webgl.ImageReplay');
|
||||
goog.provide('ol.render.webgl.ReplayGroup');
|
||||
|
||||
goog.require('goog.array');
|
||||
goog.require('goog.asserts');
|
||||
goog.require('goog.functions');
|
||||
goog.require('goog.object');
|
||||
@@ -11,7 +10,13 @@ goog.require('ol.extent');
|
||||
goog.require('ol.render.IReplayGroup');
|
||||
goog.require('ol.render.VectorContext');
|
||||
goog.require('ol.render.webgl.imagereplay.shader.Color');
|
||||
goog.require('ol.render.webgl.imagereplay.shader.Color.Locations');
|
||||
goog.require('ol.render.webgl.imagereplay.shader.ColorFragment');
|
||||
goog.require('ol.render.webgl.imagereplay.shader.ColorVertex');
|
||||
goog.require('ol.render.webgl.imagereplay.shader.Default');
|
||||
goog.require('ol.render.webgl.imagereplay.shader.Default.Locations');
|
||||
goog.require('ol.render.webgl.imagereplay.shader.DefaultFragment');
|
||||
goog.require('ol.render.webgl.imagereplay.shader.DefaultVertex');
|
||||
goog.require('ol.vec.Mat4');
|
||||
goog.require('ol.webgl.Buffer');
|
||||
goog.require('ol.webgl.Context');
|
||||
@@ -513,7 +518,8 @@ ol.render.webgl.ImageReplay.prototype.createTextures_ =
|
||||
* @param {number} contrast Global contrast.
|
||||
* @param {number} hue Global hue.
|
||||
* @param {number} saturation Global saturation.
|
||||
* @param {Object} skippedFeaturesHash Ids of features to skip.
|
||||
* @param {Object.<string, boolean>} skippedFeaturesHash Ids of features
|
||||
* to skip.
|
||||
* @param {function(ol.Feature): T|undefined} featureCallback Feature callback.
|
||||
* @param {boolean} oneByOne Draw features one-by-one for the hit-detecion.
|
||||
* @param {ol.Extent=} opt_hitExtent Hit extent: Only features intersecting
|
||||
@@ -652,7 +658,8 @@ ol.render.webgl.ImageReplay.prototype.replay = function(context,
|
||||
* @private
|
||||
* @param {WebGLRenderingContext} gl gl.
|
||||
* @param {ol.webgl.Context} context Context.
|
||||
* @param {Object} skippedFeaturesHash Ids of features to skip.
|
||||
* @param {Object.<string, boolean>} skippedFeaturesHash Ids of features
|
||||
* to skip.
|
||||
* @param {Array.<WebGLTexture>} textures Textures.
|
||||
* @param {Array.<number>} groupIndices Texture group indices.
|
||||
*/
|
||||
@@ -700,7 +707,8 @@ ol.render.webgl.ImageReplay.prototype.drawReplay_ =
|
||||
*
|
||||
* @private
|
||||
* @param {WebGLRenderingContext} gl gl.
|
||||
* @param {Object} skippedFeaturesHash Ids of features to skip.
|
||||
* @param {Object.<string, boolean>} skippedFeaturesHash Ids of features
|
||||
* to skip.
|
||||
* @param {Array.<WebGLTexture>} textures Textures.
|
||||
* @param {Array.<number>} groupIndices Texture group indices.
|
||||
* @param {number} elementType Element type.
|
||||
@@ -771,7 +779,8 @@ ol.render.webgl.ImageReplay.prototype.drawElements_ = function(
|
||||
* @private
|
||||
* @param {WebGLRenderingContext} gl gl.
|
||||
* @param {ol.webgl.Context} context Context.
|
||||
* @param {Object} skippedFeaturesHash Ids of features to skip.
|
||||
* @param {Object.<string, boolean>} skippedFeaturesHash Ids of features
|
||||
* to skip.
|
||||
* @param {function(ol.Feature): T|undefined} featureCallback Feature callback.
|
||||
* @param {boolean} oneByOne Draw features one-by-one for the hit-detecion.
|
||||
* @param {ol.Extent=} opt_hitExtent Hit extent: Only features intersecting
|
||||
@@ -798,7 +807,8 @@ ol.render.webgl.ImageReplay.prototype.drawHitDetectionReplay_ =
|
||||
* @private
|
||||
* @param {WebGLRenderingContext} gl gl.
|
||||
* @param {ol.webgl.Context} context Context.
|
||||
* @param {Object} skippedFeaturesHash Ids of features to skip.
|
||||
* @param {Object.<string, boolean>} skippedFeaturesHash Ids of features
|
||||
* to skip.
|
||||
* @param {function(ol.Feature): T|undefined} featureCallback Feature callback.
|
||||
* @return {T|undefined} Callback result.
|
||||
* @template T
|
||||
@@ -822,7 +832,8 @@ ol.render.webgl.ImageReplay.prototype.drawHitDetectionReplayAll_ =
|
||||
* @private
|
||||
* @param {WebGLRenderingContext} gl gl.
|
||||
* @param {ol.webgl.Context} context Context.
|
||||
* @param {Object} skippedFeaturesHash Ids of features to skip.
|
||||
* @param {Object.<string, boolean>} skippedFeaturesHash Ids of features
|
||||
* to skip.
|
||||
* @param {function(ol.Feature): T|undefined} featureCallback Feature callback.
|
||||
* @param {ol.Extent=} opt_hitExtent Hit extent: Only features intersecting
|
||||
* this extent are checked.
|
||||
@@ -854,6 +865,7 @@ ol.render.webgl.ImageReplay.prototype.drawHitDetectionReplayOneByOne_ =
|
||||
featureUid = goog.getUid(feature).toString();
|
||||
|
||||
if (!goog.isDef(skippedFeaturesHash[featureUid]) &&
|
||||
goog.isDefAndNotNull(feature.getGeometry()) &&
|
||||
(!goog.isDef(opt_hitExtent) || ol.extent.intersects(
|
||||
opt_hitExtent, feature.getGeometry().getExtent()))) {
|
||||
gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
|
||||
@@ -1057,7 +1069,8 @@ ol.render.webgl.ReplayGroup.prototype.isEmpty = function() {
|
||||
* @param {number} contrast Global contrast.
|
||||
* @param {number} hue Global hue.
|
||||
* @param {number} saturation Global saturation.
|
||||
* @param {Object} skippedFeaturesHash Ids of features to skip.
|
||||
* @param {Object.<string, boolean>} skippedFeaturesHash Ids of features
|
||||
* to skip.
|
||||
*/
|
||||
ol.render.webgl.ReplayGroup.prototype.replay = function(context,
|
||||
center, resolution, rotation, size, pixelRatio,
|
||||
@@ -1088,7 +1101,8 @@ ol.render.webgl.ReplayGroup.prototype.replay = function(context,
|
||||
* @param {number} contrast Global contrast.
|
||||
* @param {number} hue Global hue.
|
||||
* @param {number} saturation Global saturation.
|
||||
* @param {Object} skippedFeaturesHash Ids of features to skip.
|
||||
* @param {Object.<string, boolean>} skippedFeaturesHash Ids of features
|
||||
* to skip.
|
||||
* @param {function(ol.Feature): T|undefined} featureCallback Feature callback.
|
||||
* @param {boolean} oneByOne Draw features one-by-one for the hit-detecion.
|
||||
* @param {ol.Extent=} opt_hitExtent Hit extent: Only features intersecting
|
||||
@@ -1130,7 +1144,8 @@ ol.render.webgl.ReplayGroup.prototype.replayHitDetection_ = function(context,
|
||||
* @param {number} contrast Global contrast.
|
||||
* @param {number} hue Global hue.
|
||||
* @param {number} saturation Global saturation.
|
||||
* @param {Object} skippedFeaturesHash Ids of features to skip.
|
||||
* @param {Object.<string, boolean>} skippedFeaturesHash Ids of features
|
||||
* to skip.
|
||||
* @param {function(ol.Feature): T|undefined} callback Feature callback.
|
||||
* @return {T|undefined} Callback result.
|
||||
* @template T
|
||||
@@ -1191,7 +1206,8 @@ ol.render.webgl.ReplayGroup.prototype.forEachFeatureAtCoordinate = function(
|
||||
* @param {number} contrast Global contrast.
|
||||
* @param {number} hue Global hue.
|
||||
* @param {number} saturation Global saturation.
|
||||
* @param {Object} skippedFeaturesHash Ids of features to skip.
|
||||
* @param {Object.<string, boolean>} skippedFeaturesHash Ids of features
|
||||
* to skip.
|
||||
* @return {boolean} Is there a feature at the given coordinate?
|
||||
*/
|
||||
ol.render.webgl.ReplayGroup.prototype.hasFeatureAtCoordinate = function(
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
goog.provide('ol.renderer.canvas.Map');
|
||||
|
||||
goog.require('goog.array');
|
||||
goog.require('goog.asserts');
|
||||
goog.require('goog.dom');
|
||||
goog.require('goog.style');
|
||||
@@ -168,6 +169,8 @@ ol.renderer.canvas.Map.prototype.renderFrame = function(frameState) {
|
||||
this.dispatchComposeEvent_(ol.render.EventType.PRECOMPOSE, frameState);
|
||||
|
||||
var layerStatesArray = frameState.layerStatesArray;
|
||||
goog.array.stableSort(layerStatesArray, ol.renderer.Map.sortByZIndex);
|
||||
|
||||
var viewResolution = frameState.viewState.resolution;
|
||||
var i, ii, layer, layerRenderer, layerState;
|
||||
for (i = 0, ii = layerStatesArray.length; i < ii; ++i) {
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
goog.provide('ol.renderer.dom.Map');
|
||||
|
||||
goog.require('goog.array');
|
||||
goog.require('goog.asserts');
|
||||
goog.require('goog.dom');
|
||||
goog.require('goog.dom.TagName');
|
||||
@@ -222,6 +223,8 @@ ol.renderer.dom.Map.prototype.renderFrame = function(frameState) {
|
||||
this.dispatchComposeEvent_(ol.render.EventType.PRECOMPOSE, frameState);
|
||||
|
||||
var layerStatesArray = frameState.layerStatesArray;
|
||||
goog.array.stableSort(layerStatesArray, ol.renderer.Map.sortByZIndex);
|
||||
|
||||
var viewResolution = frameState.viewState.resolution;
|
||||
var i, ii, layer, layerRenderer, layerState;
|
||||
for (i = 0, ii = layerStatesArray.length; i < ii; ++i) {
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user