Compare commits
761 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bb5377fb8c | ||
|
|
657af1983d | ||
|
|
ab7e608129 | ||
|
|
0c2c058534 | ||
|
|
a9987de308 | ||
|
|
c02fdf2393 | ||
|
|
ca50e9e5b7 | ||
|
|
069a81db74 | ||
|
|
df460d2ed1 | ||
|
|
b29b969cfe | ||
|
|
a020251f69 | ||
|
|
b2292cc6fd | ||
|
|
647c1a6351 | ||
|
|
bfbb802b85 | ||
|
|
a446147902 | ||
|
|
d968f32456 | ||
|
|
1aea2c2b0c | ||
|
|
5b817f3146 | ||
|
|
a58f66a9a9 | ||
|
|
8e15f80d7a | ||
|
|
a35b3a5f52 | ||
|
|
9cf26f1fac | ||
|
|
fadf63cbd0 | ||
|
|
daa970fe4c | ||
|
|
3254e08785 | ||
|
|
544f951c14 | ||
|
|
08a640b793 | ||
|
|
d29f3b9068 | ||
|
|
d68991e982 | ||
|
|
5c536aafc7 | ||
|
|
757d46541c | ||
|
|
dc3bf0d04b | ||
|
|
9cde0ab860 | ||
|
|
bb00f4dafd | ||
|
|
16670e4015 | ||
|
|
4b85dd89a5 | ||
|
|
71f7c70279 | ||
|
|
2d24c8942e | ||
|
|
d24dcc7753 | ||
|
|
bea1501bb7 | ||
|
|
5751d342ff | ||
|
|
8514a85353 | ||
|
|
ad85e0e98d | ||
|
|
66a99dd6c4 | ||
|
|
eb762b6f4a | ||
|
|
14a1add08d | ||
|
|
cbd1aee0cc | ||
|
|
135d66dac7 | ||
|
|
3f30072de5 | ||
|
|
925a89ecdb | ||
|
|
d5c7f805ab | ||
|
|
67f42ed33a | ||
|
|
610ed7294f | ||
|
|
6c813020c2 | ||
|
|
0149924551 | ||
|
|
85264111cd | ||
|
|
921d736340 | ||
|
|
98c9b0eb39 | ||
|
|
7946298e67 | ||
|
|
c0271e3509 | ||
|
|
ad3ee7cb33 | ||
|
|
363ef8f45e | ||
|
|
9529200d4f | ||
|
|
85ca4e1888 | ||
|
|
c0da5ff8ef | ||
|
|
0b7cd12eaa | ||
|
|
9e25251891 | ||
|
|
e5c44b37c9 | ||
|
|
979342091a | ||
|
|
dc0e37b782 | ||
|
|
7f4c6e3634 | ||
|
|
085a6c8135 | ||
|
|
c5dac0aa70 | ||
|
|
40c1a6d112 | ||
|
|
6d9dd030a1 | ||
|
|
9f5240dd15 | ||
|
|
4a8782f1e0 | ||
|
|
d59f6979f7 | ||
|
|
7b8b058190 | ||
|
|
c6803838ab | ||
|
|
4846a49258 | ||
|
|
7cf12d1c12 | ||
|
|
2f06d214f5 | ||
|
|
80b78b8b5a | ||
|
|
5d264d2bf0 | ||
|
|
5832943773 | ||
|
|
2b2ac47b1f | ||
|
|
4be89715ed | ||
|
|
80fa26ddd8 | ||
|
|
656023e569 | ||
|
|
b99954e93a | ||
|
|
8daff341d0 | ||
|
|
66338a662d | ||
|
|
4784b7f2e2 | ||
|
|
af69933c64 | ||
|
|
8e9b20db51 | ||
|
|
0e8e104a2d | ||
|
|
29b64d8628 | ||
|
|
bda3a6803c | ||
|
|
cd2a2ebbc5 | ||
|
|
9df280a884 | ||
|
|
6e2f82c397 | ||
|
|
63629e1ee2 | ||
|
|
dbedbc19ee | ||
|
|
c0c5443782 | ||
|
|
4b942bc4f6 | ||
|
|
7d3fc3ccc7 | ||
|
|
fa88b578a4 | ||
|
|
598111b78e | ||
|
|
8f4756c99b | ||
|
|
05dfc226b7 | ||
|
|
a60a7f7c09 | ||
|
|
a3dbe4b658 | ||
|
|
c9beb6d4f4 | ||
|
|
eb75f4eedf | ||
|
|
80caaa5399 | ||
|
|
15c1323ff9 | ||
|
|
48f98717b6 | ||
|
|
09063b47b5 | ||
|
|
bd9aff46af | ||
|
|
b27acb8d5e | ||
|
|
9764dac149 | ||
|
|
79d803aba8 | ||
|
|
78a961e6ef | ||
|
|
a84db3add6 | ||
|
|
519e7976cd | ||
|
|
7d95df1a9d | ||
|
|
1c1010a65d | ||
|
|
ac84e98c7f | ||
|
|
945847d0a1 | ||
|
|
e5c2a226dd | ||
|
|
5541e9a236 | ||
|
|
c8eb3adf1e | ||
|
|
c2bde4e482 | ||
|
|
eb174f7a82 | ||
|
|
55a969f95f | ||
|
|
f344f2cdb2 | ||
|
|
ecdbab40ba | ||
|
|
819b9ce6ca | ||
|
|
c86a61eacb | ||
|
|
571760fb32 | ||
|
|
965b88d7c8 | ||
|
|
d950dada31 | ||
|
|
e49f529fe6 | ||
|
|
6f9fa4c12e | ||
|
|
b816128728 | ||
|
|
70021be919 | ||
|
|
32fa3501df | ||
|
|
a7cde96056 | ||
|
|
52a7c5e582 | ||
|
|
f52f9b6817 | ||
|
|
9f8ab48f1f | ||
|
|
8fb1d1f244 | ||
|
|
f3d5d16a82 | ||
|
|
783acfa961 | ||
|
|
3f897cfb79 | ||
|
|
c6e2c6a16e | ||
|
|
6431622881 | ||
|
|
00a8b4da16 | ||
|
|
0f09607725 | ||
|
|
94caa07168 | ||
|
|
5388f96551 | ||
|
|
3353eeb0c3 | ||
|
|
402697c369 | ||
|
|
4bcea473eb | ||
|
|
043b206705 | ||
|
|
76974a5888 | ||
|
|
59bce75d2a | ||
|
|
7a1533925a | ||
|
|
a2ae2f0f3e | ||
|
|
f078a9c935 | ||
|
|
404fa10bb7 | ||
|
|
8f1aab9236 | ||
|
|
c899100dab | ||
|
|
0c48a560b2 | ||
|
|
690a5f1f90 | ||
|
|
87337570e0 | ||
|
|
7864ed7861 | ||
|
|
03c75a8648 | ||
|
|
726bcbef83 | ||
|
|
016df5b902 | ||
|
|
14e20e23a0 | ||
|
|
aad5f94556 | ||
|
|
615b54eb67 | ||
|
|
fc23a38692 | ||
|
|
3b1d72202a | ||
|
|
4c236a64b8 | ||
|
|
3cc8291df4 | ||
|
|
c2b21985f4 | ||
|
|
168b675191 | ||
|
|
ebc1bc0096 | ||
|
|
be6bf00d74 | ||
|
|
f481070f82 | ||
|
|
9a460b5f6b | ||
|
|
8b38928aad | ||
|
|
30cd0aa584 | ||
|
|
8ab197eba6 | ||
|
|
6482ccf2f7 | ||
|
|
0f408e341f | ||
|
|
ed1e49045a | ||
|
|
be0a0de759 | ||
|
|
15575288e0 | ||
|
|
f2f77091ad | ||
|
|
c205323ff2 | ||
|
|
b0694c1e3b | ||
|
|
e0cfa1951a | ||
|
|
63084d30e9 | ||
|
|
9b82f19cc2 | ||
|
|
3f567b0bf0 | ||
|
|
bc74273208 | ||
|
|
6e08fc9e13 | ||
|
|
bf65b8a4fe | ||
|
|
e14bede9e9 | ||
|
|
ac76989447 | ||
|
|
b221e1ac1f | ||
|
|
ebc3f24671 | ||
|
|
fcffce46b4 | ||
|
|
2cc2027353 | ||
|
|
c425b9c0e6 | ||
|
|
1222287f22 | ||
|
|
44a64ba451 | ||
|
|
df6b90246a | ||
|
|
2d50511527 | ||
|
|
fcdff1c841 | ||
|
|
7a070dd859 | ||
|
|
afdd22bd1d | ||
|
|
a04022e8df | ||
|
|
c27bcd86d3 | ||
|
|
a3550a5b00 | ||
|
|
b477367099 | ||
|
|
671f774593 | ||
|
|
552e345fbf | ||
|
|
4d43fe3346 | ||
|
|
6ec5e9a07d | ||
|
|
ee82fde184 | ||
|
|
5dbaeb9ee5 | ||
|
|
cd99d44704 | ||
|
|
449131a516 | ||
|
|
93f371ab9f | ||
|
|
2f5ccbd54d | ||
|
|
718f32b177 | ||
|
|
1f8ee3a5ae | ||
|
|
16b3893166 | ||
|
|
fce065e185 | ||
|
|
b54bc6cd42 | ||
|
|
257313969c | ||
|
|
657b9dc018 | ||
|
|
bd4b7a890d | ||
|
|
d29e5eaef1 | ||
|
|
a639291ea7 | ||
|
|
53704379fa | ||
|
|
3d82da1c7e | ||
|
|
b4061e7b35 | ||
|
|
00a6357c4d | ||
|
|
0a76145a93 | ||
|
|
b75ef3ae18 | ||
|
|
f2df971eb0 | ||
|
|
47a7b03e0e | ||
|
|
9386415633 | ||
|
|
e111e30f33 | ||
|
|
61ce463cf9 | ||
|
|
758bab8e30 | ||
|
|
dea723bac3 | ||
|
|
dcfeff11bf | ||
|
|
475504cd85 | ||
|
|
936118955f | ||
|
|
d5ec75a643 | ||
|
|
d0f5585157 | ||
|
|
db0c8c3c3a | ||
|
|
1941be9995 | ||
|
|
313bff7aff | ||
|
|
2cd64d33ec | ||
|
|
ba3e65c919 | ||
|
|
03ed8085b9 | ||
|
|
fa91748741 | ||
|
|
c067f40ecf | ||
|
|
c9c845394f | ||
|
|
63bc9459d9 | ||
|
|
f6d40faa3d | ||
|
|
c475902e19 | ||
|
|
1f7bdd10f8 | ||
|
|
687a65aa95 | ||
|
|
4c207d9460 | ||
|
|
5fb7a8bc34 | ||
|
|
391e2b6fea | ||
|
|
04c16106cd | ||
|
|
85163bceb6 | ||
|
|
094f8d5391 | ||
|
|
09026af4fa | ||
|
|
d429eba4ae | ||
|
|
dc0c0877d7 | ||
|
|
21d001b22a | ||
|
|
487c22ceae | ||
|
|
72a9460ff6 | ||
|
|
46a1140583 | ||
|
|
f95b154117 | ||
|
|
7c5bec260b | ||
|
|
7cefe56167 | ||
|
|
ce9ac92028 | ||
|
|
da830a7670 | ||
|
|
e242c2ca1d | ||
|
|
82e989b652 | ||
|
|
0e83c90377 | ||
|
|
fb243807e8 | ||
|
|
d495b19448 | ||
|
|
ef5cdb0ec6 | ||
|
|
b3493c6382 | ||
|
|
17bac04030 | ||
|
|
e01c16c00b | ||
|
|
5abeaf3716 | ||
|
|
1d86ae3e3f | ||
|
|
7192a6d1a5 | ||
|
|
deea8060af | ||
|
|
faff14c44c | ||
|
|
2d7d002c85 | ||
|
|
9b3f61a084 | ||
|
|
4cf1ee769e | ||
|
|
0a617bef12 | ||
|
|
fef1b0981e | ||
|
|
b092bce4ff | ||
|
|
ef9b64673e | ||
|
|
4d53049a7f | ||
|
|
900827987a | ||
|
|
53d079ed95 | ||
|
|
63ae481dae | ||
|
|
9b6ad1b36f | ||
|
|
e5397cbfca | ||
|
|
a38ac3a07b | ||
|
|
d5c5d651cb | ||
|
|
ef0153692e | ||
|
|
5daf741922 | ||
|
|
ae657518c5 | ||
|
|
7d110c829f | ||
|
|
369f5a6171 | ||
|
|
b11c9c3b9c | ||
|
|
7530e46cfa | ||
|
|
2b84e0f245 | ||
|
|
5502083af9 | ||
|
|
02fe825113 | ||
|
|
6aa75c490b | ||
|
|
89456e7906 | ||
|
|
442caade91 | ||
|
|
e479411614 | ||
|
|
f360080fa7 | ||
|
|
e65384a407 | ||
|
|
3552f5ff66 | ||
|
|
54d4434900 | ||
|
|
7ceb7a439e | ||
|
|
f9b07991e1 | ||
|
|
e1f477ad8c | ||
|
|
30e2f44825 | ||
|
|
138adf0509 | ||
|
|
31a68e21a5 | ||
|
|
f5788a32a7 | ||
|
|
be2e4a33ae | ||
|
|
3c4e663224 | ||
|
|
eb5088eb40 | ||
|
|
d728c71f02 | ||
|
|
8813180d41 | ||
|
|
6bdacced92 | ||
|
|
74fffd5851 | ||
|
|
c4d5036878 | ||
|
|
e6c5fa9cd7 | ||
|
|
d29db03863 | ||
|
|
c8f0bb0ade | ||
|
|
e7ba63e020 | ||
|
|
8e122334ed | ||
|
|
ea8ffd8b6a | ||
|
|
8248ec63ba | ||
|
|
79766ad25c | ||
|
|
901eee1887 | ||
|
|
cd5b15fa55 | ||
|
|
ab87eb8af0 | ||
|
|
1aca93d297 | ||
|
|
871575607f | ||
|
|
509cb3a3c9 | ||
|
|
5acf9023d0 | ||
|
|
fd729216b5 | ||
|
|
b48cabee28 | ||
|
|
ed3dcd636f | ||
|
|
ac7db89a91 | ||
|
|
8209ed0a4c | ||
|
|
bc58c383ba | ||
|
|
d2dd7584d8 | ||
|
|
23de622d29 | ||
|
|
fbef99ae96 | ||
|
|
7d2c8be391 | ||
|
|
4a66289e5a | ||
|
|
9a923cc5dc | ||
|
|
0188809918 | ||
|
|
496cece074 | ||
|
|
cd152cca14 | ||
|
|
252e60b5af | ||
|
|
f49e82ade1 | ||
|
|
9e2a393426 | ||
|
|
4e7f558234 | ||
|
|
da611b9cb5 | ||
|
|
88c3891bef | ||
|
|
504e67303f | ||
|
|
ba5b950d5c | ||
|
|
5c274adddb | ||
|
|
d939fcec3f | ||
|
|
e8257e805d | ||
|
|
4c32ec4d67 | ||
|
|
fd69e5f2be | ||
|
|
e877a21b8e | ||
|
|
2ed3f28ab8 | ||
|
|
55908485f2 | ||
|
|
d6f03697d7 | ||
|
|
6c5775e6f6 | ||
|
|
28eef6c479 | ||
|
|
4e48170fac | ||
|
|
f746cb7f57 | ||
|
|
5cac9d61cc | ||
|
|
29a1ea9ae3 | ||
|
|
c48ce003ba | ||
|
|
27d1e808b8 | ||
|
|
b3b31ea16d | ||
|
|
83c59ee255 | ||
|
|
36e336f406 | ||
|
|
e3951fa3c6 | ||
|
|
a86c270f6a | ||
|
|
3a0683f373 | ||
|
|
6638ae855d | ||
|
|
b36d697585 | ||
|
|
7659e47e07 | ||
|
|
cf5eadebaa | ||
|
|
0927c55b3c | ||
|
|
d610b206f7 | ||
|
|
7352ddeb89 | ||
|
|
8eea827343 | ||
|
|
710353784b | ||
|
|
06b34055d1 | ||
|
|
3de0aad52a | ||
|
|
4fa590965c | ||
|
|
2b53d43faa | ||
|
|
0f55d173b8 | ||
|
|
cbb72c1ce4 | ||
|
|
66ad8364e0 | ||
|
|
b5ecc6e43c | ||
|
|
c1c07e2f3c | ||
|
|
4b993727c8 | ||
|
|
6c581b8eaf | ||
|
|
779811b52d | ||
|
|
c7a98f19b7 | ||
|
|
10d4aeb1c6 | ||
|
|
20b694b8c1 | ||
|
|
13273fb632 | ||
|
|
05da0ceaab | ||
|
|
68442578ba | ||
|
|
0e4c73072f | ||
|
|
bd7ff16537 | ||
|
|
241047795f | ||
|
|
293c65088d | ||
|
|
c56ee19763 | ||
|
|
08699e2b04 | ||
|
|
35dfa6c811 | ||
|
|
3e49fc6081 | ||
|
|
a42e4d4f4e | ||
|
|
631b92412e | ||
|
|
27fb1b6fde | ||
|
|
2b77e1601a | ||
|
|
eeba5f4d10 | ||
|
|
ceb39b0d07 | ||
|
|
d7ca176362 | ||
|
|
b0fe36e609 | ||
|
|
1fceb4a709 | ||
|
|
5350e9ba37 | ||
|
|
390153adc8 | ||
|
|
a096ec5bf7 | ||
|
|
007194a18f | ||
|
|
4c0d857f41 | ||
|
|
c8e9525f3b | ||
|
|
37d0176642 | ||
|
|
7c3bf59084 | ||
|
|
e4ea5e17f7 | ||
|
|
0acb2a335d | ||
|
|
c06d7aeacc | ||
|
|
e77d705d52 | ||
|
|
7252227ac6 | ||
|
|
3ddc260687 | ||
|
|
f30744c0b8 | ||
|
|
c37e80cd97 | ||
|
|
0a28c4282e | ||
|
|
dd8422c8a0 | ||
|
|
ee4f009d2f | ||
|
|
901c55bf41 | ||
|
|
e884a8704d | ||
|
|
b53e4e39ad | ||
|
|
6963c3c037 | ||
|
|
d0621a1949 | ||
|
|
0c21afc3e4 | ||
|
|
9a83db1c85 | ||
|
|
85498983c0 | ||
|
|
9894ceda2a | ||
|
|
880be210a1 | ||
|
|
7a38a8945c | ||
|
|
cdf6fe44d8 | ||
|
|
483f567d26 | ||
|
|
436561d9dd | ||
|
|
5162fda686 | ||
|
|
250e86e5f2 | ||
|
|
0bc8858760 | ||
|
|
3978dd87be | ||
|
|
0def9728bb | ||
|
|
b128675e60 | ||
|
|
9f57e57400 | ||
|
|
0d23ab44b3 | ||
|
|
b5a6eba175 | ||
|
|
44b1c9da89 | ||
|
|
e81b68ce8b | ||
|
|
167480bde6 | ||
|
|
4f45bbc05d | ||
|
|
8a703640d0 | ||
|
|
a5626a0573 | ||
|
|
33dbaccb68 | ||
|
|
f65129850d | ||
|
|
851d7e065a | ||
|
|
37112e07b6 | ||
|
|
263960aad1 | ||
|
|
b1f56c1e98 | ||
|
|
73b67f7a74 | ||
|
|
80995159b1 | ||
|
|
bfa16529de | ||
|
|
9543cc10dd | ||
|
|
7896350fe4 | ||
|
|
badf14e0f1 | ||
|
|
ea8ad4fc16 | ||
|
|
139bcca26a | ||
|
|
a613420953 | ||
|
|
946ef8878d | ||
|
|
e88f06b70f | ||
|
|
da627dda4b | ||
|
|
059ee6eaa5 | ||
|
|
8afa911eb5 | ||
|
|
a6f16e58e5 | ||
|
|
758118e00d | ||
|
|
1bebf55d30 | ||
|
|
32c776ba9f | ||
|
|
c2c4dbfc32 | ||
|
|
b2566cb64c | ||
|
|
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 | ||
|
|
0a99d0f211 | ||
|
|
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 | ||
|
|
cb8e4e0ee7 | ||
|
|
c5fe7df2e4 | ||
|
|
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 | ||
|
|
9a44895d41 | ||
|
|
56e871f8b5 | ||
|
|
de6ecb22a8 | ||
|
|
7b4a954c40 | ||
|
|
1159e1f792 | ||
|
|
ae1221d811 | ||
|
|
2fd894ffb9 | ||
|
|
5569bd9113 | ||
|
|
b044372cd8 | ||
|
|
a3a33c1dcd | ||
|
|
75a3c5f6ff | ||
|
|
c530f872f9 |
@@ -10,8 +10,6 @@ insert_final_newline = true
|
|||||||
|
|
||||||
[*.md]
|
[*.md]
|
||||||
indent_size = 2
|
indent_size = 2
|
||||||
|
|
||||||
[*.md]
|
|
||||||
trim_trailing_whitespace = false
|
trim_trailing_whitespace = false
|
||||||
|
|
||||||
[Makefile]
|
[Makefile]
|
||||||
|
|||||||
18
.travis.yml
18
.travis.yml
@@ -1,5 +1,11 @@
|
|||||||
language: python
|
sudo: required
|
||||||
sudo: false
|
dist: trusty
|
||||||
|
|
||||||
|
language: node_js
|
||||||
|
|
||||||
|
node_js:
|
||||||
|
- "4"
|
||||||
|
|
||||||
cache:
|
cache:
|
||||||
directories:
|
directories:
|
||||||
- node_modules
|
- node_modules
|
||||||
@@ -7,8 +13,8 @@ env:
|
|||||||
- DISPLAY=:99.0
|
- DISPLAY=:99.0
|
||||||
|
|
||||||
before_install:
|
before_install:
|
||||||
- "pip install -r requirements.txt"
|
- "npm prune"
|
||||||
- "npm install -g npm && npm install"
|
- "sudo pip install -r requirements.txt"
|
||||||
|
|
||||||
before_script:
|
before_script:
|
||||||
- "rm src/ol/renderer/webgl/*shader.js"
|
- "rm src/ol/renderer/webgl/*shader.js"
|
||||||
@@ -19,3 +25,7 @@ script: "make ci"
|
|||||||
after_success:
|
after_success:
|
||||||
- "make test-coverage"
|
- "make test-coverage"
|
||||||
- "cat coverage/lcov.info | ./node_modules/.bin/coveralls"
|
- "cat coverage/lcov.info | ./node_modules/.bin/coveralls"
|
||||||
|
|
||||||
|
branches:
|
||||||
|
only:
|
||||||
|
- master
|
||||||
|
|||||||
158
CONTRIBUTING.md
158
CONTRIBUTING.md
@@ -21,11 +21,14 @@ Look for `readme.md` files! Several directories contain a `readme.md` file that
|
|||||||
|
|
||||||
## Contributing Code
|
## Contributing Code
|
||||||
|
|
||||||
|
See [`DEVELOPING.md`](https://github.com/openlayers/ol3/blob/master/DEVELOPING.md) to learn how to get started developing.
|
||||||
|
|
||||||
Our preferred means of receiving contributions is through [pull requests](https://help.github.com/articles/using-pull-requests). Make sure
|
Our preferred means of receiving contributions is through [pull requests](https://help.github.com/articles/using-pull-requests). Make sure
|
||||||
that your pull request follows our pull request guidelines below before submitting it.
|
that your pull request follows our pull request guidelines below before submitting it.
|
||||||
|
|
||||||
This page describes what you need to know to contribute code to ol3 as a developer.
|
This page describes what you need to know to contribute code to ol3 as a developer.
|
||||||
|
|
||||||
|
|
||||||
## Contributor License Agreement
|
## Contributor License Agreement
|
||||||
|
|
||||||
Before accepting a contribution, we ask that you provide us a Contributor
|
Before accepting a contribution, we ask that you provide us a Contributor
|
||||||
@@ -35,162 +38,11 @@ Contributor License Agreement](https://raw.github.com/openlayers/cla/master/ccla
|
|||||||
making your contribution as an individual, you can submit a digital [Individual
|
making your contribution as an individual, you can submit a digital [Individual
|
||||||
Contributor License Agreement](https://docs.google.com/spreadsheet/viewform?formkey=dGNNVUJEMXF2dERTU0FXM3JjNVBQblE6MQ).
|
Contributor License Agreement](https://docs.google.com/spreadsheet/viewform?formkey=dGNNVUJEMXF2dERTU0FXM3JjNVBQblE6MQ).
|
||||||
|
|
||||||
## Setting up development environment
|
|
||||||
|
|
||||||
You will obviously start by
|
|
||||||
[forking](https://github.com/openlayers/ol3/fork_select) the ol3 repository.
|
|
||||||
|
|
||||||
### Travis CI
|
|
||||||
|
|
||||||
The Travis CI hook is enabled on the Github repository. This means every pull request
|
|
||||||
is run through a full test suite to ensure it compiles and passes the tests. Failing
|
|
||||||
pull requests will not be merged.
|
|
||||||
|
|
||||||
Although not mandatory, it is also recommended to set up Travis CI for your ol3 fork.
|
|
||||||
For that go to your ol3 fork's Service Hooks page and set up the Travis hook.
|
|
||||||
Then every time you push to your fork, the test suite will be run. This means
|
|
||||||
errors can be caught before creating a pull request. For those making
|
|
||||||
small or occasional contributions, this may be enough to check that your contributions
|
|
||||||
are ok; in this case, you do not need to install the build tools on your local environment
|
|
||||||
as described below.
|
|
||||||
|
|
||||||
### Development dependencies
|
|
||||||
|
|
||||||
The minimum requirements are:
|
|
||||||
|
|
||||||
* GNU Make
|
|
||||||
* Git
|
|
||||||
* [Node.js](http://nodejs.org/) (0.10.x or higher)
|
|
||||||
* Python 2.6 or 2.7 with a couple of extra modules (see below)
|
|
||||||
* Java 7 (JRE and JDK)
|
|
||||||
|
|
||||||
The executables `git`, `node`, `python` and `java` should be in your `PATH`.
|
|
||||||
|
|
||||||
You can check your configuration by running:
|
|
||||||
|
|
||||||
$ make check-deps
|
|
||||||
|
|
||||||
To install the Node.js dependencies run
|
|
||||||
|
|
||||||
$ npm install
|
|
||||||
|
|
||||||
To install the extra Python modules, run:
|
|
||||||
|
|
||||||
$ sudo pip install -r requirements.txt
|
|
||||||
or
|
|
||||||
|
|
||||||
$ cat requirements.txt | sudo xargs easy_install
|
|
||||||
|
|
||||||
depending on your OS and Python installation.
|
|
||||||
|
|
||||||
(You can also install the Python modules in a Python virtual environment if you want to.)
|
|
||||||
|
|
||||||
## Working with the build tool
|
|
||||||
|
|
||||||
As an ol3 developer you will use `make` to run build targets defined in the
|
|
||||||
`Makefile` located at the root of the repository. The `Makefile` includes
|
|
||||||
targets for running the linter, the compiler, the tests, etc.
|
|
||||||
|
|
||||||
The usage of `make` is as follows:
|
|
||||||
|
|
||||||
$ make <target>
|
|
||||||
|
|
||||||
where `<target>` is the name of the build target you want to execute. For
|
|
||||||
example:
|
|
||||||
|
|
||||||
$ make test
|
|
||||||
|
|
||||||
The main build targets are `serve`, `lint`, `build`, `test`, and `check`. The
|
|
||||||
latter is a meta-target that basically runs `lint`, `build`, and `test`.
|
|
||||||
|
|
||||||
The `serve` target starts a node-based web server, which we will refer to as the *dev server*. You'll need to start that server for running the examples and the tests in a browser. More information on that further down.
|
|
||||||
|
|
||||||
Other targets include `apidoc` and `ci`. The latter is the target used on Travis CI. See ol3's [Travis configuration file](https://github.com/openlayers/ol3/blob/master/.travis.yml).
|
|
||||||
|
|
||||||
## Running the `check` target
|
|
||||||
|
|
||||||
The `check` target is to be run before pushing code to GitHub and opening pull
|
|
||||||
requests. Branches that don't pass `check` won't pass the integration tests,
|
|
||||||
and have therefore no chance of being merged into `master`.
|
|
||||||
|
|
||||||
To run the `check` target:
|
|
||||||
|
|
||||||
$ make check
|
|
||||||
|
|
||||||
If you want to run the full suite of integration tests, see "Running the integration
|
|
||||||
tests" below.
|
|
||||||
|
|
||||||
## Running examples
|
|
||||||
|
|
||||||
To run the examples you first need to start the dev server:
|
|
||||||
|
|
||||||
$ make serve
|
|
||||||
|
|
||||||
Then, just point your browser <http://localhost:3000/build/examples> in your browser. For example <http://localhost:3000/build/examples/side-by-side.html>.
|
|
||||||
|
|
||||||
Run examples against the `ol.js` standalone build:
|
|
||||||
|
|
||||||
The examples can also be run against the `ol.js` standalone build, just like
|
|
||||||
the examples [hosted](http://openlayers.org/en/master/examples/) on GitHub.
|
|
||||||
Start by executing the `host-examples` build target:
|
|
||||||
|
|
||||||
$ make host-examples
|
|
||||||
|
|
||||||
After running `host-examples` you can now open the examples index page in the browser: <http://localhost:3000/build/hosted/master/examples/>. (This assumes that you still have the dev server running.)
|
|
||||||
|
|
||||||
Append `?mode=raw` to make the example work in full debug mode. In raw mode the OpenLayers and Closure Library scripts are loaded individually by the Closure Library's `base.js` script (which the example page loads and executes before any other script).
|
|
||||||
|
|
||||||
## Running tests
|
|
||||||
|
|
||||||
To run the tests in a browser start the dev server (`make serve`) and open <http://localhost:3000/test/index.html> in the browser.
|
|
||||||
|
|
||||||
To run the tests on the console (headless testing with PhantomJS) use the `test` target:
|
|
||||||
|
|
||||||
$ make test
|
|
||||||
|
|
||||||
See also the test-specific [README](../master/test/README.md).
|
|
||||||
|
|
||||||
## Running the integration tests
|
|
||||||
|
|
||||||
When you submit a pull request the [Travis continuous integration
|
|
||||||
server](https://travis-ci.org/) will run a full suite of tests, including
|
|
||||||
building all versions of the library and checking that all of the examples
|
|
||||||
work. You will receive an email with the results, and the status will be
|
|
||||||
displayed in the pull request.
|
|
||||||
|
|
||||||
To run the full suite of integration tests use the `ci` target:
|
|
||||||
|
|
||||||
$ make ci
|
|
||||||
|
|
||||||
Running the full suite of integration tests currently takes 5-10 minutes.
|
|
||||||
|
|
||||||
This makes sure that your commit won't break the build. It also runs JSDoc3 to
|
|
||||||
make sure that there are no invalid API doc directives.
|
|
||||||
|
|
||||||
## Adding examples
|
|
||||||
|
|
||||||
Adding functionality often implies adding one or several examples. This
|
|
||||||
section provides explanations related to adding examples.
|
|
||||||
|
|
||||||
The examples are located in the `examples` directory. Adding a new example
|
|
||||||
implies creating two or three files in this directory, an `.html` file, a `.js`
|
|
||||||
file, and, optionally, a `.css` file.
|
|
||||||
|
|
||||||
You can use `simple.js` and `simple.html` as templates for new examples.
|
|
||||||
|
|
||||||
### Use of the `goog` namespace in examples
|
|
||||||
|
|
||||||
Short story: the ol3 examples should not use the `goog` namespace, except
|
|
||||||
for `goog.require`.
|
|
||||||
|
|
||||||
Longer story: we want that the ol3 examples work in multiple modes, with the
|
|
||||||
standalone lib (which has implications of the symbols and properties we
|
|
||||||
export), and compiled together with the ol3 library.
|
|
||||||
|
|
||||||
Compiling the examples together with the library makes it mandatory to declare dependencies with `goog.require` statements.
|
|
||||||
|
|
||||||
## Pull request guidelines
|
## Pull request guidelines
|
||||||
|
|
||||||
|
Before working on a pull request, create an issue explaining what you want to contribute. This ensures that your pull request won't go unnoticed, and that you are not contributing something that is not suitable for the project. Once a core developer has set the `pull request accepted` label on the issue, you can submit a pull request. The pull request description should reference the original issue.
|
||||||
|
|
||||||
Your pull request must:
|
Your pull request must:
|
||||||
|
|
||||||
* Follow OpenLayers 3's coding style.
|
* Follow OpenLayers 3's coding style.
|
||||||
|
|||||||
155
DEVELOPING.md
Normal file
155
DEVELOPING.md
Normal file
@@ -0,0 +1,155 @@
|
|||||||
|
# Developing
|
||||||
|
|
||||||
|
## Setting up development environment
|
||||||
|
|
||||||
|
You will obviously start by
|
||||||
|
[forking](https://github.com/openlayers/ol3/fork) the ol3 repository.
|
||||||
|
|
||||||
|
### Travis CI
|
||||||
|
|
||||||
|
The Travis CI hook is enabled on the Github repository. This means every pull request
|
||||||
|
is run through a full test suite to ensure it compiles and passes the tests. Failing
|
||||||
|
pull requests will not be merged.
|
||||||
|
|
||||||
|
Although not mandatory, it is also recommended to set up Travis CI for your ol3 fork.
|
||||||
|
For that go to your ol3 fork's Service Hooks page and set up the Travis hook.
|
||||||
|
Then every time you push to your fork, the test suite will be run. This means
|
||||||
|
errors can be caught before creating a pull request. For those making
|
||||||
|
small or occasional contributions, this may be enough to check that your contributions
|
||||||
|
are ok; in this case, you do not need to install the build tools on your local environment
|
||||||
|
as described below.
|
||||||
|
|
||||||
|
### Development dependencies
|
||||||
|
|
||||||
|
The minimum requirements are:
|
||||||
|
|
||||||
|
* GNU Make
|
||||||
|
* Git
|
||||||
|
* [Node.js](http://nodejs.org/) (0.10.x or higher)
|
||||||
|
* Python 2.6 or 2.7 with a couple of extra modules (see below)
|
||||||
|
* Java 7 (JRE and JDK)
|
||||||
|
|
||||||
|
The executables `git`, `node`, `python` and `java` should be in your `PATH`.
|
||||||
|
|
||||||
|
You can check your configuration by running:
|
||||||
|
|
||||||
|
$ make check-deps
|
||||||
|
|
||||||
|
To install the Node.js dependencies run
|
||||||
|
|
||||||
|
$ npm install
|
||||||
|
|
||||||
|
To install the extra Python modules, run:
|
||||||
|
|
||||||
|
$ sudo pip install -r requirements.txt
|
||||||
|
or
|
||||||
|
|
||||||
|
$ cat requirements.txt | sudo xargs easy_install
|
||||||
|
|
||||||
|
depending on your OS and Python installation.
|
||||||
|
|
||||||
|
(You can also install the Python modules in a Python virtual environment if you want to.)
|
||||||
|
|
||||||
|
## Working with the build tool
|
||||||
|
|
||||||
|
As an ol3 developer you will use `make` to run build targets defined in the
|
||||||
|
`Makefile` located at the root of the repository. The `Makefile` includes
|
||||||
|
targets for running the linter, the compiler, the tests, etc.
|
||||||
|
|
||||||
|
The usage of `make` is as follows:
|
||||||
|
|
||||||
|
$ make <target>
|
||||||
|
|
||||||
|
where `<target>` is the name of the build target you want to execute. For
|
||||||
|
example:
|
||||||
|
|
||||||
|
$ make test
|
||||||
|
|
||||||
|
The main build targets are `serve`, `lint`, `build`, `test`, and `check`. The
|
||||||
|
latter is a meta-target that basically runs `lint`, `build`, and `test`.
|
||||||
|
|
||||||
|
The `serve` target starts a node-based web server, which we will refer to as the *dev server*. You'll need to start that server for running the examples and the tests in a browser. More information on that further down.
|
||||||
|
|
||||||
|
Other targets include `apidoc` and `ci`. The latter is the target used on Travis CI. See ol3's [Travis configuration file](https://github.com/openlayers/ol3/blob/master/.travis.yml).
|
||||||
|
|
||||||
|
## Running the `check` target
|
||||||
|
|
||||||
|
The `check` target is to be run before pushing code to GitHub and opening pull
|
||||||
|
requests. Branches that don't pass `check` won't pass the integration tests,
|
||||||
|
and have therefore no chance of being merged into `master`.
|
||||||
|
|
||||||
|
To run the `check` target:
|
||||||
|
|
||||||
|
$ make check
|
||||||
|
|
||||||
|
If you want to run the full suite of integration tests, see "Running the integration
|
||||||
|
tests" below.
|
||||||
|
|
||||||
|
## Running examples
|
||||||
|
|
||||||
|
To run the examples you first need to start the dev server:
|
||||||
|
|
||||||
|
$ make serve
|
||||||
|
|
||||||
|
Then, just point your browser <http://localhost:3000/build/examples> in your browser. For example <http://localhost:3000/build/examples/side-by-side.html>.
|
||||||
|
|
||||||
|
Run examples against the `ol.js` standalone build:
|
||||||
|
|
||||||
|
The examples can also be run against the `ol.js` standalone build, just like
|
||||||
|
the examples [hosted](http://openlayers.org/en/master/examples/) on GitHub.
|
||||||
|
Start by executing the `host-examples` build target:
|
||||||
|
|
||||||
|
$ make host-examples
|
||||||
|
|
||||||
|
After running `host-examples` you can now open the examples index page in the browser: <http://localhost:3000/build/hosted/master/examples/>. (This assumes that you still have the dev server running.)
|
||||||
|
|
||||||
|
Append `?mode=raw` to make the example work in full debug mode. In raw mode the OpenLayers and Closure Library scripts are loaded individually by the Closure Library's `base.js` script (which the example page loads and executes before any other script).
|
||||||
|
|
||||||
|
## Running tests
|
||||||
|
|
||||||
|
To run the tests in a browser start the dev server (`make serve`) and open <http://localhost:3000/test/index.html> in the browser.
|
||||||
|
|
||||||
|
To run the tests on the console (headless testing with PhantomJS) use the `test` target:
|
||||||
|
|
||||||
|
$ make test
|
||||||
|
|
||||||
|
See also the test-specific [README](../master/test/README.md).
|
||||||
|
|
||||||
|
## Running the integration tests
|
||||||
|
|
||||||
|
When you submit a pull request the [Travis continuous integration
|
||||||
|
server](https://travis-ci.org/) will run a full suite of tests, including
|
||||||
|
building all versions of the library and checking that all of the examples
|
||||||
|
work. You will receive an email with the results, and the status will be
|
||||||
|
displayed in the pull request.
|
||||||
|
|
||||||
|
To run the full suite of integration tests use the `ci` target:
|
||||||
|
|
||||||
|
$ make ci
|
||||||
|
|
||||||
|
Running the full suite of integration tests currently takes 5-10 minutes.
|
||||||
|
|
||||||
|
This makes sure that your commit won't break the build. It also runs JSDoc3 to
|
||||||
|
make sure that there are no invalid API doc directives.
|
||||||
|
|
||||||
|
## Adding examples
|
||||||
|
|
||||||
|
Adding functionality often implies adding one or several examples. This
|
||||||
|
section provides explanations related to adding examples.
|
||||||
|
|
||||||
|
The examples are located in the `examples` directory. Adding a new example
|
||||||
|
implies creating two or three files in this directory, an `.html` file, a `.js`
|
||||||
|
file, and, optionally, a `.css` file.
|
||||||
|
|
||||||
|
You can use `simple.js` and `simple.html` as templates for new examples.
|
||||||
|
|
||||||
|
### Use of the `goog` namespace in examples
|
||||||
|
|
||||||
|
Short story: the ol3 examples should not use the `goog` namespace, except
|
||||||
|
for `goog.require`.
|
||||||
|
|
||||||
|
Longer story: we want that the ol3 examples work in multiple modes, with the
|
||||||
|
standalone lib (which has implications of the symbols and properties we
|
||||||
|
export), and compiled together with the ol3 library.
|
||||||
|
|
||||||
|
Compiling the examples together with the library makes it mandatory to declare dependencies with `goog.require` statements.
|
||||||
12
Makefile
12
Makefile
@@ -19,7 +19,7 @@ BUILD_HOSTED := build/hosted/$(BRANCH)
|
|||||||
BUILD_HOSTED_EXAMPLES := $(addprefix $(BUILD_HOSTED)/,$(EXAMPLES))
|
BUILD_HOSTED_EXAMPLES := $(addprefix $(BUILD_HOSTED)/,$(EXAMPLES))
|
||||||
BUILD_HOSTED_EXAMPLES_JS := $(addprefix $(BUILD_HOSTED)/,$(EXAMPLES_JS))
|
BUILD_HOSTED_EXAMPLES_JS := $(addprefix $(BUILD_HOSTED)/,$(EXAMPLES_JS))
|
||||||
|
|
||||||
UNPHANTOMABLE_EXAMPLES = examples/shaded-relief.html examples/raster.html examples/region-growing.html
|
UNPHANTOMABLE_EXAMPLES = examples/shaded-relief.html examples/raster.html examples/region-growing.html examples/color-manipulation.html
|
||||||
CHECK_EXAMPLE_TIMESTAMPS = $(patsubst examples/%.html,build/timestamps/check-%-timestamp,$(filter-out $(UNPHANTOMABLE_EXAMPLES),$(EXAMPLES_HTML)))
|
CHECK_EXAMPLE_TIMESTAMPS = $(patsubst examples/%.html,build/timestamps/check-%-timestamp,$(filter-out $(UNPHANTOMABLE_EXAMPLES),$(EXAMPLES_HTML)))
|
||||||
|
|
||||||
TASKS_JS := $(shell find tasks -name '*.js')
|
TASKS_JS := $(shell find tasks -name '*.js')
|
||||||
@@ -171,7 +171,7 @@ host-libraries: build/timestamps/node-modules-timestamp
|
|||||||
@mkdir -p $(BUILD_HOSTED)/ol.ext
|
@mkdir -p $(BUILD_HOSTED)/ol.ext
|
||||||
@cp -r build/ol.ext/* $(BUILD_HOSTED)/ol.ext/
|
@cp -r build/ol.ext/* $(BUILD_HOSTED)/ol.ext/
|
||||||
|
|
||||||
$(BUILD_EXAMPLES): $(EXAMPLES)
|
$(BUILD_EXAMPLES): $(EXAMPLES) package.json
|
||||||
@mkdir -p $(@D)
|
@mkdir -p $(@D)
|
||||||
@node tasks/build-examples.js
|
@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) \
|
build/timestamps/check-requires-timestamp: $(SRC_JS) $(EXAMPLES_JS) \
|
||||||
$(SRC_SHADER_JS) $(SPEC_JS) \
|
$(SRC_SHADER_JS) $(SPEC_JS) \
|
||||||
$(SPEC_RENDERING JS)
|
$(SPEC_RENDERING_JS)
|
||||||
@mkdir -p $(@D)
|
@mkdir -p $(@D)
|
||||||
@python bin/check-requires.py $(CLOSURE_LIB) $^
|
@python bin/check-requires.py $(CLOSURE_LIB) $^
|
||||||
@touch $@
|
@touch $@
|
||||||
|
|
||||||
build/timestamps/check-whitespace-timestamp: $(SRC_JS) $(EXAMPLES_JS) \
|
build/timestamps/check-whitespace-timestamp: $(SRC_JS) $(EXAMPLES_JS) \
|
||||||
$(SPEC_JS) $(SPEC_RENDERING JS) \
|
$(SPEC_JS) $(SPEC_RENDERING_JS) \
|
||||||
$(SRC_JSDOC)
|
$(SRC_JSDOC)
|
||||||
@mkdir -p $(@D)
|
@mkdir -p $(@D)
|
||||||
@python bin/check-whitespace.py $^
|
@python bin/check-whitespace.py $^
|
||||||
@@ -323,5 +323,5 @@ build/test_rendering_requires.js: $(SPEC_RENDERING_JS)
|
|||||||
@mkdir -p $(@D)
|
@mkdir -p $(@D)
|
||||||
@node tasks/generate-requires.js $^ > $@
|
@node tasks/generate-requires.js $^ > $@
|
||||||
|
|
||||||
%shader.js: %.glsl src/ol/webgl/shader.mustache bin/pyglslunit.py
|
%shader.js: %.glsl src/ol/webgl/shader.mustache bin/pyglslunit.py build/timestamps/node-modules-timestamp
|
||||||
@python bin/pyglslunit.py --input $< --template src/ol/webgl/shader.mustache --output $@
|
@python bin/pyglslunit.py --input $< | ./node_modules/.bin/mustache - src/ol/webgl/shader.mustache > $@
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
|
|
||||||
## Documentation
|
## 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
|
## Bugs
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
|
|
||||||
from optparse import OptionParser
|
from optparse import OptionParser
|
||||||
|
import json
|
||||||
import re
|
import re
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
import pystache
|
|
||||||
|
|
||||||
|
|
||||||
ESCAPE_SEQUENCE = {
|
ESCAPE_SEQUENCE = {
|
||||||
@@ -42,7 +42,6 @@ def main(argv):
|
|||||||
option_parser = OptionParser()
|
option_parser = OptionParser()
|
||||||
option_parser.add_option('--input')
|
option_parser.add_option('--input')
|
||||||
option_parser.add_option('--output')
|
option_parser.add_option('--output')
|
||||||
option_parser.add_option('--template')
|
|
||||||
options, args = option_parser.parse_args(argv[1:])
|
options, args = option_parser.parse_args(argv[1:])
|
||||||
|
|
||||||
context = {}
|
context = {}
|
||||||
@@ -114,7 +113,7 @@ def main(argv):
|
|||||||
output = open(options.output, 'wb')
|
output = open(options.output, 'wb')
|
||||||
else:
|
else:
|
||||||
output = sys.stdout
|
output = sys.stdout
|
||||||
output.write(pystache.render(open(options.template, 'rb').read(), context))
|
json.dump(context, output)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
|||||||
@@ -1,5 +1,77 @@
|
|||||||
## Upgrade notes
|
## Upgrade notes
|
||||||
|
|
||||||
|
### v3.11.0
|
||||||
|
|
||||||
|
#### `ol.format.KML` changes
|
||||||
|
|
||||||
|
KML icons are scaled 50% so that the rendering better matches Google Earth rendering.
|
||||||
|
|
||||||
|
If a KML placemark has a name and is a point, an `ol.style.Text` is created with the name displayed to the right of the icon (if there is an icon).
|
||||||
|
This can be controlled with the showPointNames option which defaults to true.
|
||||||
|
|
||||||
|
To disable rendering of the point names for placemarks, use the option:
|
||||||
|
new ol.format.KML({ showPointNames: false });
|
||||||
|
|
||||||
|
|
||||||
|
#### `ol.interaction.DragBox` and `ol.interaction.DragZoom` changes
|
||||||
|
|
||||||
|
Styling is no longer done with `ol.Style`, but with pure CSS. The `style` constructor option is no longer required, and no longer available. Instead, there is a `className` option for the CSS selector. The default for `ol.interaction.DragBox` is `ol-dragbox`, and `ol.interaction.DragZoom` uses `ol-dragzoom`. If you previously had
|
||||||
|
```js
|
||||||
|
new ol.interaction.DragZoom({
|
||||||
|
style: new ol.style.Style({
|
||||||
|
stroke: new ol.style.Stroke({
|
||||||
|
color: 'red',
|
||||||
|
width: 3
|
||||||
|
}),
|
||||||
|
fill: new ol.style.Fill({
|
||||||
|
color: [255, 255, 255, 0.4]
|
||||||
|
})
|
||||||
|
})
|
||||||
|
});
|
||||||
|
```
|
||||||
|
you'll now just need
|
||||||
|
```js
|
||||||
|
new ol.interaction.DragZoom();
|
||||||
|
```
|
||||||
|
but with additional css:
|
||||||
|
```css
|
||||||
|
.ol-dragzoom {
|
||||||
|
border-color: red;
|
||||||
|
border-width: 3px;
|
||||||
|
background-color: rgba(255,255,255,0.4);
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Removal of `ol.source.TileVector`
|
||||||
|
|
||||||
|
With the introduction of true vector tile support, `ol.source.TileVector` becomes obsolete. Change your code to use `ol.layer.VectorTile` and `ol.source.VectorTile` instead of `ol.layer.Vector` and `ol.source.TileVector`.
|
||||||
|
|
||||||
|
#### `ol.Map#forEachFeatureAtPixel` changes for unmanaged layers
|
||||||
|
|
||||||
|
`ol.Map#forEachFeatureAtPixel` will still be called for unmanaged layers, but the 2nd argument to the callback function will be `null` instead of a reference to the unmanaged layer. This brings back the behavior of the abandoned `ol.FeatureOverlay` that was replaced by unmanaged layers.
|
||||||
|
|
||||||
|
If you are affected by this change, please change your unmanaged layer to a regular layer by using e.g. `ol.Map#addLayer` instead of `ol.layer.Layer#setMap`.
|
||||||
|
|
||||||
|
### v3.10.0
|
||||||
|
|
||||||
|
#### `ol.layer.Layer` changes
|
||||||
|
|
||||||
|
The experimental `setHue`, `setContrast`, `setBrightness`, `setSaturation`, and the corresponding getter methods have been removed. These properties only worked with the WebGL renderer. If are interested in applying color transforms, look for the `postcompose` event in the API docs. In addition, the `ol.source.Raster` source provides a way to create new raster data based on arbitrary transforms run on any number of input sources.
|
||||||
|
|
||||||
|
### v3.9.0
|
||||||
|
|
||||||
|
#### `ol.style.Circle` changes
|
||||||
|
|
||||||
|
The experimental `getAnchor`, `getOrigin`, and `getSize` methods have been removed. The anchor and origin of a circle symbolizer are not modifiable, so these properties should not need to be accessed. The radius and stroke width can be used to calculate the rendered size of a circle symbolizer if needed:
|
||||||
|
|
||||||
|
```js
|
||||||
|
// calculate rendered size of a circle symbolizer
|
||||||
|
var width = 2 * circle.getRadius();
|
||||||
|
if (circle.getStroke()) {
|
||||||
|
width += circle.getStroke().getWidth() + 1;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
### v3.8.0
|
### v3.8.0
|
||||||
|
|
||||||
There should be nothing special required when upgrading from v3.7.0 to v3.8.0.
|
There should be nothing special required when upgrading from v3.7.0 to v3.8.0.
|
||||||
|
|||||||
93
changelog/v3.10.0.md
Normal file
93
changelog/v3.10.0.md
Normal file
@@ -0,0 +1,93 @@
|
|||||||
|
# v3.10.0
|
||||||
|
|
||||||
|
|
||||||
|
## Summary
|
||||||
|
|
||||||
|
The v3.10.0 release includes features and fixes from 66 pull requests since the v3.9.0 release. New features and improvements include:
|
||||||
|
|
||||||
|
* Full touch gesture support for the Microsoft Edge browser.
|
||||||
|
* Improved API docs - required constructor options are now marked as such.
|
||||||
|
* Text styles (vector labels) now work with defaults instead of failing when only a label text is set.
|
||||||
|
* Write support for GML3 features with multiple geometries
|
||||||
|
|
||||||
|
See the complete list below for details. And see the following notes to know how to upgrade from v3.9.0 to v3.10.0.
|
||||||
|
|
||||||
|
|
||||||
|
## Upgrade notes
|
||||||
|
|
||||||
|
#### `ol.layer.Layer` changes
|
||||||
|
|
||||||
|
The experimental `setHue`, `setContrast`, `setBrightness`, `setSaturation`, and the corresponding getter methods have been removed. These properties only worked with the WebGL renderer. If you are interested in applying color transforms, look for the `postcompose` event in the API docs. In addition, the `ol.source.Raster` source provides a way to create new raster data based on arbitrary transforms run on any number of input sources.
|
||||||
|
|
||||||
|
#### Removal of legacy Internet Explorer support
|
||||||
|
|
||||||
|
If you are building an appliction that supports Internet Explorer 8 or older, you'll need to use ES5 shims to make OpenLayers work. As before, support for such old browsers is very basic, and we recommend to not support them.
|
||||||
|
|
||||||
|
|
||||||
|
## New features and fixes
|
||||||
|
|
||||||
|
* [#4237](https://github.com/openlayers/ol3/pull/4237) - #3328: GML3 - Writing features with multiple geometries ([@awaterme](https://github.com/awaterme))
|
||||||
|
* [#4218](https://github.com/openlayers/ol3/pull/4218) - Add 'getLayer()' method to 'ol.interaction.Select' ([@jonataswalker](https://github.com/jonataswalker))
|
||||||
|
* [#4036](https://github.com/openlayers/ol3/pull/4036) - Fix modify interaction event order ([@alvinlindstam](https://github.com/alvinlindstam))
|
||||||
|
* [#4036](https://github.com/openlayers/ol3/pull/4036) - Fix modify interaction event order ([@alvinlindstam](https://github.com/alvinlindstam))
|
||||||
|
* [#4116](https://github.com/openlayers/ol3/pull/4116) - Make ol.control.OverviewMap's view configurable ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#4234](https://github.com/openlayers/ol3/pull/4234) - Support OGC WKT proj4 def.units and def.to_meter ([@tbarsballe](https://github.com/tbarsballe))
|
||||||
|
* [#4224](https://github.com/openlayers/ol3/pull/4224) - Don't transform the angle into degrees to rotate the element ([@fredj](https://github.com/fredj))
|
||||||
|
* [#4231](https://github.com/openlayers/ol3/pull/4231) - Revert "Merge pull request #4217 from ThomasG77/clipboardjs-replacement" ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#4217](https://github.com/openlayers/ol3/pull/4217) - Replace ZeroClipboard with Clipboard.js to remove flash dependency ([@ThomasG77](https://github.com/ThomasG77))
|
||||||
|
* [#4223](https://github.com/openlayers/ol3/pull/4223) - Remove goog.fx.easing ([@fredj](https://github.com/fredj))
|
||||||
|
* [#4222](https://github.com/openlayers/ol3/pull/4222) - Remove unnecessary cast ([@fredj](https://github.com/fredj))
|
||||||
|
* [#4209](https://github.com/openlayers/ol3/pull/4209) - Remove goog.string.remove ([@gberaudo](https://github.com/gberaudo))
|
||||||
|
* [#4207](https://github.com/openlayers/ol3/pull/4207) - Remove goog.string.startsWith ([@gberaudo](https://github.com/gberaudo))
|
||||||
|
* [#4208](https://github.com/openlayers/ol3/pull/4208) - Remove goog.string.trim() ([@gberaudo](https://github.com/gberaudo))
|
||||||
|
* [#4216](https://github.com/openlayers/ol3/pull/4216) - Fix canvas replay which broke with 31a68e2 ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#4202](https://github.com/openlayers/ol3/pull/4202) - Remove use of goog.dom.appendChild ([@fredj](https://github.com/fredj))
|
||||||
|
* [#4205](https://github.com/openlayers/ol3/pull/4205) - Minor cleanup ([@fredj](https://github.com/fredj))
|
||||||
|
* [#4203](https://github.com/openlayers/ol3/pull/4203) - Cosmetic changes to example html / css ([@marcjansen](https://github.com/marcjansen))
|
||||||
|
* [#4184](https://github.com/openlayers/ol3/pull/4184) - Adjust iframe's position of GetFeatureInfo examples ([@jonataswalker](https://github.com/jonataswalker))
|
||||||
|
* [#4192](https://github.com/openlayers/ol3/pull/4192) - Remove use of goog.isNull in favor of simple truthy checks ([@marcjansen](https://github.com/marcjansen))
|
||||||
|
* [#4187](https://github.com/openlayers/ol3/pull/4187) - Fix {-y} template calculation for custom (TMS) tile grids ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#4176](https://github.com/openlayers/ol3/pull/4176) - Remove use of goog.isDefAndNotNull().
|
||||||
|
([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#4200](https://github.com/openlayers/ol3/pull/4200) - Do not use goog.object.get ([@marcjansen](https://github.com/marcjansen))
|
||||||
|
* [#4198](https://github.com/openlayers/ol3/pull/4198) - Improve ol.control.Rotate.prototype.resetNorth_ performance ([@denilsonsa](https://github.com/denilsonsa))
|
||||||
|
* [#4197](https://github.com/openlayers/ol3/pull/4197) - Remove blur action on MOUSEOUT on Zoom Out button ([@denilsonsa](https://github.com/denilsonsa))
|
||||||
|
* [#4195](https://github.com/openlayers/ol3/pull/4195) - #4171: Prefer current layout as default on MultiLineString.setLineStrings() ([@awaterme](https://github.com/awaterme))
|
||||||
|
* [#4172](https://github.com/openlayers/ol3/pull/4172) - #4171: Prefer current layout as default on Multipolygon.setPolygons() ([@awaterme](https://github.com/awaterme))
|
||||||
|
* [#4190](https://github.com/openlayers/ol3/pull/4190) - Remove use of goog.functions.constant ([@marcjansen](https://github.com/marcjansen))
|
||||||
|
* [#4188](https://github.com/openlayers/ol3/pull/4188) - Remove use of goog.object.getKeys ([@fredj](https://github.com/fredj))
|
||||||
|
* [#4189](https://github.com/openlayers/ol3/pull/4189) - Replace goog.nullFunction with ol.nullFunction ([@marcjansen](https://github.com/marcjansen))
|
||||||
|
* [#4165](https://github.com/openlayers/ol3/pull/4165) - Use ECMAScript 5.1 Array functions instead of goog.array ([@fredj](https://github.com/fredj))
|
||||||
|
* [#4181](https://github.com/openlayers/ol3/pull/4181) - Remove use of goog.array.contains ([@fredj](https://github.com/fredj))
|
||||||
|
* [#4162](https://github.com/openlayers/ol3/pull/4162) - Remove ol.LEGACY_IE_SUPPORT ([@fredj](https://github.com/fredj))
|
||||||
|
* [#4174](https://github.com/openlayers/ol3/pull/4174) - Remove hue, saturation, contrast, and brightness as layer properties. ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#4183](https://github.com/openlayers/ol3/pull/4183) - Remove @api on getHitDetectionFramebuffer ([@elemoine](https://github.com/elemoine))
|
||||||
|
* [#4179](https://github.com/openlayers/ol3/pull/4179) - Use Date.now() instead of goog.now() ([@marcjansen](https://github.com/marcjansen))
|
||||||
|
* [#4175](https://github.com/openlayers/ol3/pull/4175) - Remove use of goog.math.clamp(). ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#4173](https://github.com/openlayers/ol3/pull/4173) - Only animate when resolution is about to be changed ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#4129](https://github.com/openlayers/ol3/pull/4129) - Remove use of goog.isDef. ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#4168](https://github.com/openlayers/ol3/pull/4168) - Tile preload example wording (fixes #4147) ([@wlerner](https://github.com/wlerner))
|
||||||
|
* [#4167](https://github.com/openlayers/ol3/pull/4167) - Remove externs in externs/closure-compiler.js ([@fredj](https://github.com/fredj))
|
||||||
|
* [#4166](https://github.com/openlayers/ol3/pull/4166) - Use version 20150920 of Closure Compiler ([@elemoine](https://github.com/elemoine))
|
||||||
|
* [#4159](https://github.com/openlayers/ol3/pull/4159) - Remove use of goog.object.containsKey ([@fredj](https://github.com/fredj))
|
||||||
|
* [#4157](https://github.com/openlayers/ol3/pull/4157) - Fix typo in doc ([@elemoine](https://github.com/elemoine))
|
||||||
|
* [#4138](https://github.com/openlayers/ol3/pull/4138) - Enhanced documentation for ol.style.Text ([@ekargee](https://github.com/ekargee))
|
||||||
|
* [#4151](https://github.com/openlayers/ol3/pull/4151) - Remove bogus assertion ([@elemoine](https://github.com/elemoine))
|
||||||
|
* [#4110](https://github.com/openlayers/ol3/pull/4110) - Minor cleanups ([@fredj](https://github.com/fredj))
|
||||||
|
* [#4156](https://github.com/openlayers/ol3/pull/4156) - Rename drag-features example to custom-interactions ([@elemoine](https://github.com/elemoine))
|
||||||
|
* [#4150](https://github.com/openlayers/ol3/pull/4150) - Remove use of goog.object.remove ([@fredj](https://github.com/fredj))
|
||||||
|
* [#4145](https://github.com/openlayers/ol3/pull/4145) - API method for simplifying geometries. ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#4153](https://github.com/openlayers/ol3/pull/4153) - Add a "features" option to ol.interaction.Select ([@elemoine](https://github.com/elemoine))
|
||||||
|
* [#4144](https://github.com/openlayers/ol3/pull/4144) - Set context.fillStyle to a string ([@elemoine](https://github.com/elemoine))
|
||||||
|
* [#4149](https://github.com/openlayers/ol3/pull/4149) - Remove use of goog.array.isEmpty ([@fredj](https://github.com/fredj))
|
||||||
|
* [#4139](https://github.com/openlayers/ol3/pull/4139) - Add turf.js and JSTS example ([@tsauerwein](https://github.com/tsauerwein))
|
||||||
|
* [#4136](https://github.com/openlayers/ol3/pull/4136) - Fix the 'click-to-fork' link in contributer notes ([@marcjansen](https://github.com/marcjansen))
|
||||||
|
* [#4132](https://github.com/openlayers/ol3/pull/4132) - Update quickstart tutorial ([@tsauerwein](https://github.com/tsauerwein))
|
||||||
|
* [#4111](https://github.com/openlayers/ol3/pull/4111) - Use a blackish default for filling texts ([@marcjansen](https://github.com/marcjansen))
|
||||||
|
* [#4120](https://github.com/openlayers/ol3/pull/4120) - Remove invalid link to featureOverlay in API doc ([@kalbermattenm](https://github.com/kalbermattenm))
|
||||||
|
* [#4117](https://github.com/openlayers/ol3/pull/4117) - forEachFeatureAtPixel shouldn't fail if layer has no source ([@pgiraud](https://github.com/pgiraud))
|
||||||
|
* [#4106](https://github.com/openlayers/ol3/pull/4106) - Focus to search field on page load ([@elemoine](https://github.com/elemoine))
|
||||||
|
* [#4079](https://github.com/openlayers/ol3/pull/4079) - Automatically mark required options in API-docs ([@marcjansen](https://github.com/marcjansen))
|
||||||
|
* [#4108](https://github.com/openlayers/ol3/pull/4108) - Add missing CSSProperties.prototype.touchAction extern ([@fredj](https://github.com/fredj))
|
||||||
|
* [#4107](https://github.com/openlayers/ol3/pull/4107) - Prevent page zoom on IE Edge ([@fredj](https://github.com/fredj))
|
||||||
|
* [#3969](https://github.com/openlayers/ol3/pull/3969) - Add an option to use the mouse's location as an anchor when zooming ([@samuellapointe](https://github.com/samuellapointe))
|
||||||
7
changelog/v3.10.1.md
Normal file
7
changelog/v3.10.1.md
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
# v3.10.1
|
||||||
|
|
||||||
|
## Summary
|
||||||
|
|
||||||
|
This is a patch release that fixes a regression causing text styles with a fill but no stroke to not be rendered.
|
||||||
|
|
||||||
|
* [#4242](https://github.com/openlayers/ol3/pull/4242) - Fix a drawText regression introduced with 31a68e2 ([@marcjansen](https://github.com/marcjansen))
|
||||||
136
changelog/v3.11.0.md
Normal file
136
changelog/v3.11.0.md
Normal file
@@ -0,0 +1,136 @@
|
|||||||
|
# v3.11.0
|
||||||
|
|
||||||
|
## Summary
|
||||||
|
|
||||||
|
The v3.11.0 release includes features and fixes from 73 pull requests since the v3.10.1 release. New features and improvements include:
|
||||||
|
|
||||||
|
* Support for raster reprojection - load raster sources in one projection and view them in another.
|
||||||
|
* Support for Mapbox Vector Tiles!
|
||||||
|
* Improved KML support, GeoJSON & TopoJSON fixes, and much more. See below for the full list.
|
||||||
|
|
||||||
|
## Upgrade notes
|
||||||
|
|
||||||
|
#### `ol.format.KML` changes
|
||||||
|
|
||||||
|
KML icons are scaled 50% so that the rendering better matches Google Earth rendering.
|
||||||
|
|
||||||
|
If a KML placemark has a name and is a point, an `ol.style.Text` is created with the name displayed to the right of the icon (if there is an icon).
|
||||||
|
This can be controlled with the showPointNames option which defaults to true.
|
||||||
|
|
||||||
|
To disable rendering of the point names for placemarks, use the option:
|
||||||
|
new ol.format.KML({ showPointNames: false });
|
||||||
|
|
||||||
|
#### `ol.interaction.DragBox` and `ol.interaction.DragZoom` changes
|
||||||
|
|
||||||
|
Styling is no longer done with `ol.Style`, but with pure CSS. The `style` constructor option is no longer required, and no longer available. Instead, there is a `className` option for the CSS selector. The default for `ol.interaction.DragBox` is `ol-dragbox`, and `ol.interaction.DragZoom` uses `ol-dragzoom`. If you previously had
|
||||||
|
```js
|
||||||
|
new ol.interaction.DragZoom({
|
||||||
|
style: new ol.style.Style({
|
||||||
|
stroke: new ol.style.Stroke({
|
||||||
|
color: 'red',
|
||||||
|
width: 3
|
||||||
|
}),
|
||||||
|
fill: new ol.style.Fill({
|
||||||
|
color: [255, 255, 255, 0.4]
|
||||||
|
})
|
||||||
|
})
|
||||||
|
});
|
||||||
|
```
|
||||||
|
you'll now just need
|
||||||
|
```js
|
||||||
|
new ol.interaction.DragZoom();
|
||||||
|
```
|
||||||
|
but with additional css:
|
||||||
|
```css
|
||||||
|
.ol-dragzoom {
|
||||||
|
border-color: red;
|
||||||
|
border-width: 3px;
|
||||||
|
background-color: rgba(255,255,255,0.4);
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Removal of `ol.source.TileVector`
|
||||||
|
|
||||||
|
With the introduction of true vector tile support, `ol.source.TileVector` becomes obsolete. Change your code to use `ol.layer.VectorTile` and `ol.source.VectorTile` instead of `ol.layer.Vector` and `ol.source.TileVector`.
|
||||||
|
|
||||||
|
#### `ol.Map#forEachFeatureAtPixel` changes for unmanaged layers
|
||||||
|
|
||||||
|
`ol.Map#forEachFeatureAtPixel` will still be called for unmanaged layers, but the 2nd argument to the callback function will be `null` instead of a reference to the unmanaged layer. This brings back the behavior of the abandoned `ol.FeatureOverlay` that was replaced by unmanaged layers.
|
||||||
|
|
||||||
|
If you are affected by this change, please change your unmanaged layer to a regular layer by using e.g. `ol.Map#addLayer` instead of `ol.layer.Layer#setMap`.
|
||||||
|
|
||||||
|
## Full list of changes
|
||||||
|
|
||||||
|
* [#4394](https://github.com/openlayers/ol3/pull/4394) - Allow ol.Object property update without notification. ([@DavidHequet](https://github.com/DavidHequet))
|
||||||
|
* [#4395](https://github.com/openlayers/ol3/pull/4395) - Flag ol.style.Text setOffsetX and Y as @api. ([@adube](https://github.com/adube))
|
||||||
|
* [#4393](https://github.com/openlayers/ol3/pull/4393) - Faster vector tiles ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#4392](https://github.com/openlayers/ol3/pull/4392) - Update clean-css to version 3.4.7 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#4391](https://github.com/openlayers/ol3/pull/4391) - Pass null as forEachFeatureAtPixel layer arg for unmanaged layers ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#4390](https://github.com/openlayers/ol3/pull/4390) - Fix usage of mocha-phantomjs-core after update ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#4387](https://github.com/openlayers/ol3/pull/4387) - Add default argument to getRendererFromQueryString ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#4376](https://github.com/openlayers/ol3/pull/4376) - Make KML format ignore image styles that aren't icons ([@elemoine](https://github.com/elemoine))
|
||||||
|
* [#4385](https://github.com/openlayers/ol3/pull/4385) - Don't transform the scale specified by the user ([@oterral](https://github.com/oterral))
|
||||||
|
* [#4388](https://github.com/openlayers/ol3/pull/4388) - Quick-fix running tests with PhantomJS ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#4378](https://github.com/openlayers/ol3/pull/4378) - Add a writeStyles option to KML format ([@elemoine](https://github.com/elemoine))
|
||||||
|
* [#4375](https://github.com/openlayers/ol3/pull/4375) - Fixed documentation typo (ol.source.ImageWMS) ([@simonseyock](https://github.com/simonseyock))
|
||||||
|
* [#4371](https://github.com/openlayers/ol3/pull/4371) - Fix typo in closure compilation tutorial ([@dtreiter](https://github.com/dtreiter))
|
||||||
|
* [#4370](https://github.com/openlayers/ol3/pull/4370) - Improve ol.interaction.Select#getLayer documentation. ([@jonataswalker](https://github.com/jonataswalker))
|
||||||
|
* [#4365](https://github.com/openlayers/ol3/pull/4365) - Update fs-extra to version 0.26.2 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#4366](https://github.com/openlayers/ol3/pull/4366) - Update resemblejs to version 2.0.1 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#4368](https://github.com/openlayers/ol3/pull/4368) - Append KML placemark text style to existing styles ([@marcjansen](https://github.com/marcjansen))
|
||||||
|
* [#4361](https://github.com/openlayers/ol3/pull/4361) - Make GPX format not fail on unsupported geometries ([@elemoine](https://github.com/elemoine))
|
||||||
|
* [#4360](https://github.com/openlayers/ol3/pull/4360) - Update getExtent return value jsdoc tag ([@fredj](https://github.com/fredj))
|
||||||
|
* [#4359](https://github.com/openlayers/ol3/pull/4359) - Update closure-util to version 1.9.0 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#4357](https://github.com/openlayers/ol3/pull/4357) - Update all dependencies. ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#4356](https://github.com/openlayers/ol3/pull/4356) - Update Metalsmith and layouts plugin. ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#4355](https://github.com/openlayers/ol3/pull/4355) - Update PhantomJS. ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#4353](https://github.com/openlayers/ol3/pull/4353) - Resolve path to jsdoc-fork. ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#3627](https://github.com/openlayers/ol3/pull/3627) - Make package.json compatible for npm frontend use. ([@ThomasG77](https://github.com/ThomasG77))
|
||||||
|
* [#4163](https://github.com/openlayers/ol3/pull/4163) - Fixes for building with Node 4.x. ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#4347](https://github.com/openlayers/ol3/pull/4347) - Use require.resolve() to find jsdoc. ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#4291](https://github.com/openlayers/ol3/pull/4291) - Add 'Move a feature along a line' example. ([@jonataswalker](https://github.com/jonataswalker))
|
||||||
|
* [#4344](https://github.com/openlayers/ol3/pull/4344) - Allow different resolutions in x and y direction for ol.source.ImageStatic ([@bartvde](https://github.com/bartvde))
|
||||||
|
* [#4339](https://github.com/openlayers/ol3/pull/4339) - Make sure drawImage width and height are not too big ([@bartvde](https://github.com/bartvde))
|
||||||
|
* [#4334](https://github.com/openlayers/ol3/pull/4334) - Check view extent within image extent ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#4332](https://github.com/openlayers/ol3/pull/4332) - Fix write out GeoJSON features with id equal to 0 ([@fredj](https://github.com/fredj))
|
||||||
|
* [#4331](https://github.com/openlayers/ol3/pull/4331) - Allow TopoJSON features with id equal to 0 ([@fredj](https://github.com/fredj))
|
||||||
|
* [#4330](https://github.com/openlayers/ol3/pull/4330) - ol.format.TopoJSON is read only, update the jsdoc ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#4327](https://github.com/openlayers/ol3/pull/4327) - Allow GeoJSON features with id equal to 0 ([@fredj](https://github.com/fredj))
|
||||||
|
* [#4219](https://github.com/openlayers/ol3/pull/4219) - Support tiled vector data and Mapbox vector tiles ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#4322](https://github.com/openlayers/ol3/pull/4322) - Add wrapX override support for ol.source.Cluster ([@FRizZL](https://github.com/FRizZL))
|
||||||
|
* [#4316](https://github.com/openlayers/ol3/pull/4316) - Render name labels if the geometry is a point in KML format (@tamarmot) ([@marcjansen](https://github.com/marcjansen))
|
||||||
|
* [#4313](https://github.com/openlayers/ol3/pull/4313) - Align logos nicely with attribution text ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#4297](https://github.com/openlayers/ol3/pull/4297) - Create standalone versions of ol.ext packages ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#4302](https://github.com/openlayers/ol3/pull/4302) - scale icons by 0.5 so they are not huge ([@tamarmot](https://github.com/tamarmot))
|
||||||
|
* [#4301](https://github.com/openlayers/ol3/pull/4301) - Remove jshint -W069 tags in source code ([@fredj](https://github.com/fredj))
|
||||||
|
* [#4273](https://github.com/openlayers/ol3/pull/4273) - Expand docs on ol.source url prop. ([@Barryrowe](https://github.com/Barryrowe))
|
||||||
|
* [#4293](https://github.com/openlayers/ol3/pull/4293) - Refine the pull request process ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#4289](https://github.com/openlayers/ol3/pull/4289) - Restrict maxZoom of the static-image example ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#4275](https://github.com/openlayers/ol3/pull/4275) - Fix ol.events.condition.mouseOnly parameter type ([@fredj](https://github.com/fredj))
|
||||||
|
* [#4248](https://github.com/openlayers/ol3/pull/4248) - Use Math.cosh of ES6/2015 if available ([@marcjansen](https://github.com/marcjansen))
|
||||||
|
* [#4286](https://github.com/openlayers/ol3/pull/4286) - Add a color manipulation example. ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#4122](https://github.com/openlayers/ol3/pull/4122) - Raster reprojection ([@klokantech](https://github.com/klokantech))
|
||||||
|
* [#4283](https://github.com/openlayers/ol3/pull/4283) - Flag ol.tilegrid.TileGrid getTileCoordExtent as @api ([@adube](https://github.com/adube))
|
||||||
|
* [#4280](https://github.com/openlayers/ol3/pull/4280) - Use overlay container instead of viewport for ol.render.Box ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#4278](https://github.com/openlayers/ol3/pull/4278) - Use DOM instead of map canvas for ol.render.Box ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#4277](https://github.com/openlayers/ol3/pull/4277) - Improve the box select example ([@fredj](https://github.com/fredj))
|
||||||
|
* [#4276](https://github.com/openlayers/ol3/pull/4276) - Better ol.events.condition.platformModifierKeyOnly documentation ([@fredj](https://github.com/fredj))
|
||||||
|
* [#4102](https://github.com/openlayers/ol3/pull/4102) - Export ol.Observable#dispatchEvent function ([@fredj](https://github.com/fredj))
|
||||||
|
* [#4261](https://github.com/openlayers/ol3/pull/4261) - ol.events.condition.mouseOnly may be wrong ([@fredj](https://github.com/fredj))
|
||||||
|
* [#4269](https://github.com/openlayers/ol3/pull/4269) - Fix Zoom control duration option - allow `0` as value ([@adube](https://github.com/adube))
|
||||||
|
* [#4268](https://github.com/openlayers/ol3/pull/4268) - Add method for retrieving ol.Overlay by id ([@jonataswalker](https://github.com/jonataswalker))
|
||||||
|
* [#4257](https://github.com/openlayers/ol3/pull/4257) - Remove unused ol.math-methods ([@marcjansen](https://github.com/marcjansen))
|
||||||
|
* [#4270](https://github.com/openlayers/ol3/pull/4270) - Fix Keyboard zoom interation options ([@adube](https://github.com/adube))
|
||||||
|
* [#4272](https://github.com/openlayers/ol3/pull/4272) - Allow the DragZoom interaction created in defaults to use zoomDuration option. ([@adube](https://github.com/adube))
|
||||||
|
* [#4271](https://github.com/openlayers/ol3/pull/4271) - Fix DragZoom interaction duration, allow `0` value ([@adube](https://github.com/adube))
|
||||||
|
* [#4267](https://github.com/openlayers/ol3/pull/4267) - Example usability improvements ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#4263](https://github.com/openlayers/ol3/pull/4263) - Add back CSSProperties.prototype.touchAction extern ([@fredj](https://github.com/fredj))
|
||||||
|
* [#4259](https://github.com/openlayers/ol3/pull/4259) - Remove use of toDegrees/toRadians util functions ([@marcjansen](https://github.com/marcjansen))
|
||||||
|
* [#4258](https://github.com/openlayers/ol3/pull/4258) - Remove usage of goog.dom.TagName enum ([@marcjansen](https://github.com/marcjansen))
|
||||||
|
* [#4255](https://github.com/openlayers/ol3/pull/4255) - Fix zoom slider width for retina displays ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#4249](https://github.com/openlayers/ol3/pull/4249) - Make whole example box clickable ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#4045](https://github.com/openlayers/ol3/pull/4045) - Add parser for dimension property from WMTS Capabilities.xml ([@Jenselme](https://github.com/Jenselme))
|
||||||
|
* [#4161](https://github.com/openlayers/ol3/pull/4161) - Add `translatestart`, `translateend` and `translating` events to `ol.interaction.Translate` ([@jonataswalker](https://github.com/jonataswalker))
|
||||||
|
* [#4186](https://github.com/openlayers/ol3/pull/4186) - Do not export ol.webgl.Context ([@elemoine](https://github.com/elemoine))
|
||||||
|
* [#4239](https://github.com/openlayers/ol3/pull/4239) - Changing highlighted to highlight ([@austinkeeley](https://github.com/austinkeeley))
|
||||||
|
* [#3727](https://github.com/openlayers/ol3/pull/3727) - Added getOverviewMap getter method in overviewmapcontrol.js ([@bogdanvaduva](https://github.com/bogdanvaduva))
|
||||||
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/5b25e65.zip"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,6 +14,7 @@
|
|||||||
"externs/bingmaps.js",
|
"externs/bingmaps.js",
|
||||||
"externs/bootstrap.js",
|
"externs/bootstrap.js",
|
||||||
"externs/closure-compiler.js",
|
"externs/closure-compiler.js",
|
||||||
|
"externs/esrijson.js",
|
||||||
"externs/example.js",
|
"externs/example.js",
|
||||||
"externs/fastclick.js",
|
"externs/fastclick.js",
|
||||||
"externs/geojson.js",
|
"externs/geojson.js",
|
||||||
@@ -29,41 +30,13 @@
|
|||||||
"goog.DEBUG=false"
|
"goog.DEBUG=false"
|
||||||
],
|
],
|
||||||
"jscomp_error": [
|
"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": [
|
"jscomp_off": [
|
||||||
|
"useOfGoogBase",
|
||||||
|
"unnecessaryCasts",
|
||||||
|
"lintChecks",
|
||||||
|
"missingProvide",
|
||||||
"unknownDefines"
|
"unknownDefines"
|
||||||
],
|
],
|
||||||
"extra_annotation_name": [
|
"extra_annotation_name": [
|
||||||
|
|||||||
@@ -30,40 +30,12 @@
|
|||||||
"goog.DEBUG=false"
|
"goog.DEBUG=false"
|
||||||
],
|
],
|
||||||
"jscomp_error": [
|
"jscomp_error": [
|
||||||
"accessControls",
|
"*"
|
||||||
"ambiguousFunctionDecl",
|
],
|
||||||
"checkEventfulObjectDisposal",
|
"jscomp_off": [
|
||||||
"checkRegExp",
|
"useOfGoogBase",
|
||||||
"checkStructDictInheritance",
|
"unnecessaryCasts",
|
||||||
"checkTypes",
|
"lintChecks"
|
||||||
"checkVars",
|
|
||||||
"const",
|
|
||||||
"constantProperty",
|
|
||||||
"deprecated",
|
|
||||||
"duplicateMessage",
|
|
||||||
"es3",
|
|
||||||
"es5Strict",
|
|
||||||
"externsValidation",
|
|
||||||
"fileoverviewTags",
|
|
||||||
"globalThis",
|
|
||||||
"internetExplorerChecks",
|
|
||||||
"invalidCasts",
|
|
||||||
"misplacedTypeAnnotation",
|
|
||||||
"missingGetCssName",
|
|
||||||
"missingProperties",
|
|
||||||
"missingProvide",
|
|
||||||
"missingRequire",
|
|
||||||
"missingReturn",
|
|
||||||
"newCheckTypes",
|
|
||||||
"nonStandardJsDocs",
|
|
||||||
"suspiciousCode",
|
|
||||||
"strictModuleDepCheck",
|
|
||||||
"typeInvalidation",
|
|
||||||
"undefinedNames",
|
|
||||||
"undefinedVars",
|
|
||||||
"unknownDefines",
|
|
||||||
"uselessCode",
|
|
||||||
"visibility"
|
|
||||||
],
|
],
|
||||||
"extra_annotation_name": [
|
"extra_annotation_name": [
|
||||||
"api", "observable"
|
"api", "observable"
|
||||||
|
|||||||
@@ -4,12 +4,13 @@
|
|||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<meta http-equiv="X-UA-Compatible" content="chrome=1">
|
<meta http-equiv="X-UA-Compatible" content="chrome=1">
|
||||||
<meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width">
|
<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="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="../css/ol.css" type="text/css">
|
||||||
<link rel="stylesheet" href="./resources/layout.css" type="text/css">
|
<link rel="stylesheet" href="./resources/layout.css" type="text/css">
|
||||||
{{{ extraHead }}}
|
{{{ extraHead.local }}}
|
||||||
{{{ css.tag }}}
|
{{{ css.tag }}}
|
||||||
<link rel="stylesheet" href="./resources/prism/prism.css" type="text/css">
|
|
||||||
<script src="./resources/zeroclipboard/ZeroClipboard.min.js"></script>
|
<script src="./resources/zeroclipboard/ZeroClipboard.min.js"></script>
|
||||||
<title>{{ title }}</title>
|
<title>{{ title }}</title>
|
||||||
</head>
|
</head>
|
||||||
@@ -36,25 +37,27 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="row-fluid">
|
<div class="row-fluid">
|
||||||
<hr>
|
<div id="source-controls">
|
||||||
<form method="POST" target="_blank" action="http://jsfiddle.net/api/post/jquery/1.11.0/">
|
<a id="copy-button"><i class="fa fa-clipboard"></i> Copy</a>
|
||||||
<input type="button" class="btn btn-info" id="copy-button" value="Copy example code">
|
<a id="jsfiddle-button"><i class="fa fa-jsfiddle"></i> Edit</a>
|
||||||
<input type="submit" class="btn btn-primary" id="jsfiddle-button" value="Create JSFiddle">
|
</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="js">{{ js.source }}</textarea>
|
||||||
<textarea class="hidden" name="css">{{ css.source }}</textarea>
|
<textarea class="hidden" name="css">{{ css.source }}</textarea>
|
||||||
<textarea class="hidden" name="html">{{ contents }}</textarea>
|
<textarea class="hidden" name="html">{{ contents }}</textarea>
|
||||||
<input type="hidden" name="wrap" value="l">
|
<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">
|
<input type="hidden" name="resources" value="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css,https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js,http://openlayers.org/en/v{{ olVersion }}/css/ol.css,http://openlayers.org/en/v{{ olVersion }}/build/ol.js{{ extraResources }}">
|
||||||
<pre><code id="example-source" class="language-markup"><!DOCTYPE html>
|
</form>
|
||||||
|
<pre><code id="example-source" class="language-markup"><!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<title>{{ title }}</title>
|
<title>{{ title }}</title>
|
||||||
<script src="https://code.jquery.com/jquery-1.11.2.min.js"></script>
|
<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">
|
<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>
|
<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">
|
<link rel="stylesheet" href="http://openlayers.org/en/v{{ olVersion }}/css/ol.css" type="text/css">
|
||||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/ol3/{{ olVersion }}/ol.js"></script>
|
<script src="http://openlayers.org/en/v{{ olVersion }}/build/ol.js"></script>
|
||||||
{{ extraHead }}
|
{{ extraHead.remote }}
|
||||||
{{#if css.source}}
|
{{#if css.source}}
|
||||||
<style>
|
<style>
|
||||||
{{ css.source }}
|
{{ css.source }}
|
||||||
@@ -71,7 +74,6 @@
|
|||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
</html></code></pre>
|
</html></code></pre>
|
||||||
</form>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -16,9 +16,8 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"plugins": [
|
"plugins": [
|
||||||
"node_modules/jsdoc/plugins/markdown",
|
"node_modules/jsdoc-fork/plugins/markdown",
|
||||||
"config/jsdoc/api/plugins/inheritdoc",
|
"config/jsdoc/api/plugins/inheritdoc",
|
||||||
"config/jsdoc/api/plugins/interface",
|
|
||||||
"config/jsdoc/api/plugins/typedefs",
|
"config/jsdoc/api/plugins/typedefs",
|
||||||
"config/jsdoc/api/plugins/events",
|
"config/jsdoc/api/plugins/events",
|
||||||
"config/jsdoc/api/plugins/observable",
|
"config/jsdoc/api/plugins/observable",
|
||||||
|
|||||||
@@ -35,6 +35,5 @@ Interactions for [vector features](ol.Feature.html)
|
|||||||
<td><p>Changes to all [ol.Objects](ol.Object.html) can observed by calling the [object.on('propertychange')](ol.Object.html#on) method. Listeners receive an [ol.ObjectEvent](ol.ObjectEvent.html) with information on the changed property and old value.</p>
|
<td><p>Changes to all [ol.Objects](ol.Object.html) can observed by calling the [object.on('propertychange')](ol.Object.html#on) method. Listeners receive an [ol.ObjectEvent](ol.ObjectEvent.html) with information on the changed property and old value.</p>
|
||||||
<td>[ol.DeviceOrientation](ol.DeviceOrientation.html)<br>
|
<td>[ol.DeviceOrientation](ol.DeviceOrientation.html)<br>
|
||||||
[ol.Geolocation](ol.Geolocation.html)<br>
|
[ol.Geolocation](ol.Geolocation.html)<br>
|
||||||
[ol.Overlay](ol.Overlay.html)<br>
|
[ol.Overlay](ol.Overlay.html)<br></td>
|
||||||
[ol.FeatureOverlay](ol.FeatureOverlay.html)<br></td>
|
|
||||||
</tr></table>
|
</tr></table>
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ exports.defineTags = function(dictionary) {
|
|||||||
doclet.stability = level;
|
doclet.stability = level;
|
||||||
} else {
|
} else {
|
||||||
var errorText = util.format('Invalid stability level (%s) in %s line %s', tag.text, doclet.meta.filename, doclet.meta.lineno);
|
var errorText = util.format('Invalid stability level (%s) in %s line %s', tag.text, doclet.meta.filename, doclet.meta.lineno);
|
||||||
require('jsdoc/util/error').handle( new Error(errorText) );
|
require('jsdoc-fork/lib/jsdoc/util/error').handle( new Error(errorText) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -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);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
};
|
|
||||||
@@ -5,6 +5,10 @@
|
|||||||
|
|
||||||
var lastOlxTypedef = null;
|
var lastOlxTypedef = null;
|
||||||
var olxTypes = {};
|
var olxTypes = {};
|
||||||
|
// names of the olx typenames
|
||||||
|
var olxTypeNames = [];
|
||||||
|
// types that are undefined or typedefs containing undefined
|
||||||
|
var undefinedLikes = null;
|
||||||
|
|
||||||
function addSubparams(params) {
|
function addSubparams(params) {
|
||||||
for (var j = 0, jj = params.length; j < jj; ++j) {
|
for (var j = 0, jj = params.length; j < jj; ++j) {
|
||||||
@@ -23,6 +27,63 @@ function addSubparams(params) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Changes the description of the param, if it is found to be a required
|
||||||
|
* option of an olxTypeName.
|
||||||
|
*/
|
||||||
|
function markRequiredIfNeeded(doclet){
|
||||||
|
var memberof = doclet.memberof;
|
||||||
|
// only check doclets that belong to an olxTypeName
|
||||||
|
if (!memberof || olxTypeNames.indexOf(memberof) == -1) {
|
||||||
|
return doclet;
|
||||||
|
}
|
||||||
|
|
||||||
|
var types = doclet.type.names;
|
||||||
|
var isRequiredParam = true;
|
||||||
|
|
||||||
|
// iterate over all types that are like-undefined (see above for explanation)
|
||||||
|
for (var idx = undefinedLikes.length - 1; idx >= 0; idx--) {
|
||||||
|
var undefinedLike = undefinedLikes[idx];
|
||||||
|
// … if the current types contains a type that is undefined-like,
|
||||||
|
// it is not required.
|
||||||
|
if (types.indexOf(undefinedLike) != -1) {
|
||||||
|
isRequiredParam = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isRequiredParam) {
|
||||||
|
var reqSnippet = '<span class="required-option">Required.</span></p>';
|
||||||
|
var endsWithP = /<\/p>$/i;
|
||||||
|
var description = doclet.description;
|
||||||
|
if (description && endsWithP.test(description)) {
|
||||||
|
description = description.replace(endsWithP, ' ' + reqSnippet);
|
||||||
|
} else if (doclet.description === undefined) {
|
||||||
|
description = '<p>' + reqSnippet;
|
||||||
|
}
|
||||||
|
doclet.description = description;
|
||||||
|
}
|
||||||
|
return doclet;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Iterates over all doclets and finds the names of types that contain
|
||||||
|
* undefined. Stores the names in the global variable undefinedLikes, so
|
||||||
|
* that e.g. markRequiredIfNeeded can use these.
|
||||||
|
*/
|
||||||
|
function findTypesLikeUndefined(doclets) {
|
||||||
|
undefinedLikes = ['undefined']; // include type 'undefined' explicitly
|
||||||
|
for (var i = doclets.length - 1; i >= 0; --i) {
|
||||||
|
var doclet = doclets[i];
|
||||||
|
if(doclet.kind === 'typedef') {
|
||||||
|
var types = doclet.type.names;
|
||||||
|
if (types.indexOf('undefined') !== -1) {
|
||||||
|
// the typedef contains 'undefined', so it self is undefinedLike.
|
||||||
|
undefinedLikes.push(doclet.longname);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
exports.handlers = {
|
exports.handlers = {
|
||||||
|
|
||||||
newDoclet: function(e) {
|
newDoclet: function(e) {
|
||||||
@@ -34,6 +95,7 @@ exports.handlers = {
|
|||||||
}
|
}
|
||||||
if (doclet.kind == 'typedef') {
|
if (doclet.kind == 'typedef') {
|
||||||
lastOlxTypedef = doclet;
|
lastOlxTypedef = doclet;
|
||||||
|
olxTypeNames.push(doclet.longname);
|
||||||
olxTypes[doclet.longname] = [];
|
olxTypes[doclet.longname] = [];
|
||||||
doclet.properties = [];
|
doclet.properties = [];
|
||||||
} else if (lastOlxTypedef && doclet.memberof == lastOlxTypedef.longname) {
|
} else if (lastOlxTypedef && doclet.memberof == lastOlxTypedef.longname) {
|
||||||
@@ -51,12 +113,14 @@ exports.handlers = {
|
|||||||
|
|
||||||
parseComplete: function(e) {
|
parseComplete: function(e) {
|
||||||
var doclets = e.doclets;
|
var doclets = e.doclets;
|
||||||
|
findTypesLikeUndefined(doclets);
|
||||||
for (var i = doclets.length - 1; i >= 0; --i) {
|
for (var i = doclets.length - 1; i >= 0; --i) {
|
||||||
var doclet = doclets[i];
|
var doclet = doclets[i];
|
||||||
var params = doclet.params;
|
var params = doclet.params;
|
||||||
if (params) {
|
if (params) {
|
||||||
addSubparams(params);
|
addSubparams(params);
|
||||||
}
|
}
|
||||||
|
markRequiredIfNeeded(doclet);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
/*global env: true */
|
/*global env: true */
|
||||||
var template = require('jsdoc/template'),
|
var template = require('jsdoc-fork/lib/jsdoc/template'),
|
||||||
fs = require('jsdoc/fs'),
|
fs = require('jsdoc-fork/lib/jsdoc/fs'),
|
||||||
path = require('jsdoc/path'),
|
path = require('jsdoc-fork/lib/jsdoc/path'),
|
||||||
taffy = require('taffydb').taffy,
|
taffy = require('taffydb').taffy,
|
||||||
handle = require('jsdoc/util/error').handle,
|
handle = require('jsdoc-fork/lib/jsdoc/util/error').handle,
|
||||||
helper = require('jsdoc/util/templateHelper'),
|
helper = require('jsdoc-fork/lib/jsdoc/util/templateHelper'),
|
||||||
_ = require('underscore'),
|
_ = require('underscore'),
|
||||||
htmlsafe = helper.htmlsafe,
|
htmlsafe = helper.htmlsafe,
|
||||||
linkto = helper.linkto,
|
linkto = helper.linkto,
|
||||||
@@ -350,8 +350,8 @@ exports.publish = function(taffyData, opts, tutorials) {
|
|||||||
var staticFileScanner;
|
var staticFileScanner;
|
||||||
if (conf['default'].staticFiles) {
|
if (conf['default'].staticFiles) {
|
||||||
staticFilePaths = conf['default'].staticFiles.paths || [];
|
staticFilePaths = conf['default'].staticFiles.paths || [];
|
||||||
staticFileFilter = new (require('jsdoc/src/filter')).Filter(conf['default'].staticFiles);
|
staticFileFilter = new (require('jsdoc-fork/lib/jsdoc/src/filter')).Filter(conf['default'].staticFiles);
|
||||||
staticFileScanner = new (require('jsdoc/src/scanner')).Scanner();
|
staticFileScanner = new (require('jsdoc-fork/lib/jsdoc/src/scanner')).Scanner();
|
||||||
|
|
||||||
staticFilePaths.forEach(function(filePath) {
|
staticFilePaths.forEach(function(filePath) {
|
||||||
var extraStaticFiles = staticFileScanner.scan([filePath], 10, staticFileFilter);
|
var extraStaticFiles = staticFileScanner.scan([filePath], 10, staticFileFilter);
|
||||||
|
|||||||
@@ -37,10 +37,6 @@
|
|||||||
<div class="main">
|
<div class="main">
|
||||||
<h1 class="page-title" data-filename="<?js= filename ?>"><?js= title ?></h1>
|
<h1 class="page-title" data-filename="<?js= filename ?>"><?js= title ?></h1>
|
||||||
<?js= content ?>
|
<?js= content ?>
|
||||||
|
|
||||||
<footer>
|
|
||||||
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc <?js= env.version.number ?></a> on <?js= (new Date()) ?>
|
|
||||||
</footer>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<script>prettyPrint();</script>
|
<script>prettyPrint();</script>
|
||||||
|
|||||||
@@ -6,11 +6,14 @@ var assert = require('assert');
|
|||||||
var fs = require('fs');
|
var fs = require('fs');
|
||||||
var path = require('path');
|
var path = require('path');
|
||||||
|
|
||||||
|
var Promise = require('bluebird');
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Publish hook for the JSDoc template. Writes to JSON stdout.
|
* Publish hook for the JSDoc template. Writes to JSON stdout.
|
||||||
* @param {function} data The root of the Taffy DB containing doclet records.
|
* @param {function} data The root of the Taffy DB containing doclet records.
|
||||||
* @param {Object} opts Options.
|
* @param {Object} opts Options.
|
||||||
|
* @return {Promise} A promise that resolves when writing is complete.
|
||||||
*/
|
*/
|
||||||
exports.publish = function(data, opts) {
|
exports.publish = function(data, opts) {
|
||||||
|
|
||||||
@@ -49,7 +52,7 @@ exports.publish = function(data, opts) {
|
|||||||
var externs = [];
|
var externs = [];
|
||||||
var base = [];
|
var base = [];
|
||||||
var augments = {};
|
var augments = {};
|
||||||
var names = {};
|
var symbolsByName = {};
|
||||||
docs.filter(function(doc) {
|
docs.filter(function(doc) {
|
||||||
var include = true;
|
var include = true;
|
||||||
var constructor = doc.memberof;
|
var constructor = doc.memberof;
|
||||||
@@ -144,8 +147,13 @@ exports.publish = function(data, opts) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var target = isExterns ? externs : (doc.api ? symbols : base);
|
var target = isExterns ? externs : (doc.api ? symbols : base);
|
||||||
|
var existingSymbol = symbolsByName[symbol.name];
|
||||||
|
if (existingSymbol) {
|
||||||
|
var idx = target.indexOf(existingSymbol);
|
||||||
|
target.splice(idx, 1);
|
||||||
|
}
|
||||||
target.push(symbol);
|
target.push(symbol);
|
||||||
names[symbol.name] = true;
|
symbolsByName[symbol.name] = symbol;
|
||||||
|
|
||||||
if (doc.api && symbol.extends) {
|
if (doc.api && symbol.extends) {
|
||||||
while (symbol.extends in classes && !classes[symbol.extends].api &&
|
while (symbol.extends in classes && !classes[symbol.extends].api &&
|
||||||
@@ -163,13 +171,17 @@ exports.publish = function(data, opts) {
|
|||||||
return (symbol.name in augments || symbol.virtual);
|
return (symbol.name in augments || symbol.virtual);
|
||||||
});
|
});
|
||||||
|
|
||||||
process.stdout.write(
|
return new Promise(function(resolve, reject) {
|
||||||
JSON.stringify({
|
|
||||||
symbols: symbols,
|
process.stdout.write(
|
||||||
defines: defines,
|
JSON.stringify({
|
||||||
typedefs: typedefs,
|
symbols: symbols,
|
||||||
externs: externs,
|
defines: defines,
|
||||||
base: base
|
typedefs: typedefs,
|
||||||
}, null, 2));
|
externs: externs,
|
||||||
|
base: base
|
||||||
|
}, null, 2), resolve);
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -20,40 +20,12 @@
|
|||||||
"goog.DEBUG=false"
|
"goog.DEBUG=false"
|
||||||
],
|
],
|
||||||
"jscomp_error": [
|
"jscomp_error": [
|
||||||
"accessControls",
|
"*"
|
||||||
"ambiguousFunctionDecl",
|
],
|
||||||
"checkEventfulObjectDisposal",
|
"jscomp_off": [
|
||||||
"checkRegExp",
|
"useOfGoogBase",
|
||||||
"checkStructDictInheritance",
|
"unnecessaryCasts",
|
||||||
"checkTypes",
|
"lintChecks"
|
||||||
"checkVars",
|
|
||||||
"const",
|
|
||||||
"constantProperty",
|
|
||||||
"deprecated",
|
|
||||||
"duplicateMessage",
|
|
||||||
"es3",
|
|
||||||
"es5Strict",
|
|
||||||
"externsValidation",
|
|
||||||
"fileoverviewTags",
|
|
||||||
"globalThis",
|
|
||||||
"internetExplorerChecks",
|
|
||||||
"invalidCasts",
|
|
||||||
"misplacedTypeAnnotation",
|
|
||||||
"missingGetCssName",
|
|
||||||
"missingProperties",
|
|
||||||
"missingProvide",
|
|
||||||
"missingRequire",
|
|
||||||
"missingReturn",
|
|
||||||
"newCheckTypes",
|
|
||||||
"nonStandardJsDocs",
|
|
||||||
"suspiciousCode",
|
|
||||||
"strictModuleDepCheck",
|
|
||||||
"typeInvalidation",
|
|
||||||
"undefinedNames",
|
|
||||||
"undefinedVars",
|
|
||||||
"unknownDefines",
|
|
||||||
"uselessCode",
|
|
||||||
"visibility"
|
|
||||||
],
|
],
|
||||||
"extra_annotation_name": [
|
"extra_annotation_name": [
|
||||||
"api", "observable"
|
"api", "observable"
|
||||||
|
|||||||
21
css/ol.css
21
css/ol.css
@@ -1,3 +1,8 @@
|
|||||||
|
.ol-box {
|
||||||
|
box-sizing: border-box;
|
||||||
|
border-radius: 2px;
|
||||||
|
border: 2px solid blue;
|
||||||
|
}
|
||||||
|
|
||||||
.ol-mouse-position {
|
.ol-mouse-position {
|
||||||
top: 8px;
|
top: 8px;
|
||||||
@@ -154,6 +159,7 @@
|
|||||||
.ol-attribution img {
|
.ol-attribution img {
|
||||||
max-height: 2em;
|
max-height: 2em;
|
||||||
max-width: inherit;
|
max-width: inherit;
|
||||||
|
vertical-align: middle;
|
||||||
}
|
}
|
||||||
.ol-attribution ul, .ol-attribution button {
|
.ol-attribution ul, .ol-attribution button {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
@@ -192,26 +198,15 @@
|
|||||||
.ol-zoomslider {
|
.ol-zoomslider {
|
||||||
top: 4.5em;
|
top: 4.5em;
|
||||||
left: .5em;
|
left: .5em;
|
||||||
width: 24px;
|
|
||||||
height: 200px;
|
height: 200px;
|
||||||
}
|
}
|
||||||
.ol-zoomslider-thumb {
|
.ol-zoomslider button {
|
||||||
position: absolute;
|
position: relative;
|
||||||
background: #7b98bc;
|
|
||||||
background: rgba(0,60,136,0.5);
|
|
||||||
border-radius: 2px;
|
|
||||||
cursor: pointer;
|
|
||||||
height: 10px;
|
height: 10px;
|
||||||
width: 22px;
|
|
||||||
margin: 3px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.ol-touch .ol-zoomslider {
|
.ol-touch .ol-zoomslider {
|
||||||
top: 5.5em;
|
top: 5.5em;
|
||||||
width: 2.052em;
|
|
||||||
}
|
|
||||||
.ol-touch .ol-zoomslider-thumb {
|
|
||||||
width: 1.8em;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.ol-overviewmap {
|
.ol-overviewmap {
|
||||||
|
|||||||
@@ -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/).
|
For a more in-depth overview of OpenLayers 3 core concepts, check out the [tutorials](tutorials/).
|
||||||
|
|
||||||
Make sure to also check out the [OpenLayers 3 workshop](../../../ol3-workshop/).
|
Make sure to also check out the [OpenLayers 3 workshop](/workshop/).
|
||||||
|
|
||||||
Find additional reference material in the [API docs](../apidoc).
|
Find additional reference material in the [API docs](../apidoc).
|
||||||
|
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ Below you'll find a complete working example. Create a new file, copy in the co
|
|||||||
})
|
})
|
||||||
],
|
],
|
||||||
view: new ol.View({
|
view: new ol.View({
|
||||||
center: ol.proj.transform([37.41, 8.82], 'EPSG:4326', 'EPSG:3857'),
|
center: ol.proj.fromLonLat([37.41, 8.82]),
|
||||||
zoom: 4
|
zoom: 4
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
@@ -89,7 +89,7 @@ The map in the application is contained in a [`<div>` HTML element](http://en.wi
|
|||||||
})
|
})
|
||||||
],
|
],
|
||||||
view: new ol.View({
|
view: new ol.View({
|
||||||
center: ol.proj.transform([37.41, 8.82], 'EPSG:4326', 'EPSG:3857'),
|
center: ol.proj.fromLonLat([37.41, 8.82]),
|
||||||
zoom: 4
|
zoom: 4
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
@@ -125,9 +125,9 @@ The next part of the `Map` object is the `View`. The view allow to specify the c
|
|||||||
|
|
||||||
```js
|
```js
|
||||||
view: new ol.View({
|
view: new ol.View({
|
||||||
center: ol.proj.transform([37.41, 8.82], 'EPSG:4326', 'EPSG:3857'),
|
center: ol.proj.fromLonLat([37.41, 8.82]),
|
||||||
zoom: 4
|
zoom: 4
|
||||||
})
|
})
|
||||||
```
|
```
|
||||||
|
|
||||||
You will notice that the `center` specified is in lat/lon coordinates (EPSG:4326). Since the only layer we use is in Spherical Mercator projection (EPSG:3857), we can reproject them on the fly to be able to zoom the map on the right coordinates.
|
You will notice that the `center` specified is in lon/lat coordinates (EPSG:4326). Since the only layer we use is in Spherical Mercator projection (EPSG:3857), we can reproject them on the fly to be able to zoom the map on the right coordinates.
|
||||||
|
|||||||
@@ -239,7 +239,6 @@ Here is a version of `config.json` with more compilation checks enabled:
|
|||||||
"ambiguousFunctionDecl",
|
"ambiguousFunctionDecl",
|
||||||
"checkEventfulObjectDisposal",
|
"checkEventfulObjectDisposal",
|
||||||
"checkRegExp",
|
"checkRegExp",
|
||||||
"checkStructDictInheritance",
|
|
||||||
"checkTypes",
|
"checkTypes",
|
||||||
"checkVars",
|
"checkVars",
|
||||||
"const",
|
"const",
|
||||||
@@ -313,7 +312,7 @@ directory:
|
|||||||
```
|
```
|
||||||
|
|
||||||
Note that the page includes a `script` tag referencing the `app.js` file,
|
Note that the page includes a `script` tag referencing the `app.js` file,
|
||||||
which is the file resuted from the compilation.
|
which is the file resulting from the compilation.
|
||||||
|
|
||||||
You are done!
|
You are done!
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
template: example.html
|
layout: example.html
|
||||||
title: Accessibility example
|
title: Accessibility example
|
||||||
shortdesc: Example of an accessible map.
|
shortdesc: Example of an accessible map.
|
||||||
docs: >
|
docs: >
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
template: example.html
|
layout: example.html
|
||||||
title: Animation example
|
title: Animation example
|
||||||
shortdesc: Demonstrates animated pan, zoom, and rotation.
|
shortdesc: Demonstrates animated pan, zoom, and rotation.
|
||||||
docs: >
|
docs: >
|
||||||
@@ -14,8 +14,8 @@ tags: "animation"
|
|||||||
</div>
|
</div>
|
||||||
<div class="row-fluid">
|
<div class="row-fluid">
|
||||||
<div class="span12">
|
<div class="span12">
|
||||||
<button id="rotate-left"><i class="icon-arrow-left"></i></button>
|
<button id="rotate-left" title="Rotate clockwise">↻</button>
|
||||||
<button id="rotate-right"><i class="icon-arrow-right"></i></button>
|
<button id="rotate-right" title="Rotate counterclockwise">↺</button>
|
||||||
<button id="rotate-around-rome">Rotate around Rome</button>
|
<button id="rotate-around-rome">Rotate around Rome</button>
|
||||||
<button id="pan-to-london">Pan to London</button>
|
<button id="pan-to-london">Pan to London</button>
|
||||||
<button id="elastic-to-moscow">Elastic to Moscow</button>
|
<button id="elastic-to-moscow">Elastic to Moscow</button>
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
template: example.html
|
layout: example.html
|
||||||
title: Tiled ArcGIS MapServer example
|
title: Tiled ArcGIS MapServer example
|
||||||
shortdesc: Example of a tiled ArcGIS layer.
|
shortdesc: Example of a tiled ArcGIS layer.
|
||||||
docs: >
|
docs: >
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
template: example.html
|
layout: example.html
|
||||||
title: Attributions example
|
title: Attributions example
|
||||||
shortdesc: Example of a attributions visibily change on map resize, to collapse them on small maps.
|
shortdesc: Example of a attributions visibily change on map resize, to collapse them on small maps.
|
||||||
docs: >
|
docs: >
|
||||||
|
|||||||
@@ -1,10 +1,12 @@
|
|||||||
---
|
---
|
||||||
template: example.html
|
layout: example.html
|
||||||
title: Bing Maps example
|
title: Bing Maps example
|
||||||
shortdesc: Example of a Bing Maps layer.
|
shortdesc: Example of a Bing Maps layer.
|
||||||
docs: >
|
docs: >
|
||||||
<p>When the Bing Maps tile service doesn't have tiles for a given resolution and region it returns "placeholder" tiles indicating that. Zoom the map beyond level 19 to see the "placeholder" tiles. If you want OpenLayers to display stretched tiles in place of "placeholder" tiles beyond zoom level 19 then set <code>maxZoom</code> to <code>19</code> in the options passed to <code>ol.source.BingMaps</code>.</p>
|
<p>When the Bing Maps tile service doesn't have tiles for a given resolution and region it returns "placeholder" tiles indicating that. Zoom the map beyond level 19 to see the "placeholder" tiles. If you want OpenLayers to display stretched tiles in place of "placeholder" tiles beyond zoom level 19 then set <code>maxZoom</code> to <code>19</code> in the options passed to <code>ol.source.BingMaps</code>.</p>
|
||||||
tags: "bing, bing-maps"
|
tags: "bing, bing-maps"
|
||||||
|
cloak:
|
||||||
|
Ak-dzM4wZjSqTlzveKz5u0d4IQ4bRzVI309GxmkgSVr1ewS6iPSrOvOKhA-CJlm3: Your Bing Maps Key from http://bingmapsportal.com/ here
|
||||||
---
|
---
|
||||||
<div class="row-fluid">
|
<div class="row-fluid">
|
||||||
<div class="span12">
|
<div class="span12">
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
template: example.html
|
layout: example.html
|
||||||
title: Blend modes example
|
title: Blend modes example
|
||||||
shortdesc: Shows how to change the canvas compositing / blending mode in post- and precompose eventhandlers.
|
shortdesc: Shows how to change the canvas compositing / blending mode in post- and precompose eventhandlers.
|
||||||
docs: >
|
docs: >
|
||||||
|
|||||||
4
examples/box-selection.css
Normal file
4
examples/box-selection.css
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
.ol-dragbox {
|
||||||
|
background-color: rgba(255,255,255,0.4);
|
||||||
|
border-color: rgba(100,150,0,1);
|
||||||
|
}
|
||||||
@@ -1,11 +1,11 @@
|
|||||||
---
|
---
|
||||||
template: example.html
|
layout: example.html
|
||||||
title: Box selection example
|
title: Box selection example
|
||||||
shortdesc: Using a DragBox interaction to select features.
|
shortdesc: Using a DragBox interaction to select features.
|
||||||
docs: >
|
docs: >
|
||||||
<p>This example shows how to use a <code>DragBox</code> interaction to select features. Selected features are added
|
<p>This example shows how to use a <code>DragBox</code> interaction to select features. Selected features are added
|
||||||
to the feature overlay of a select interaction (<code>ol.interaction.Select</code>) for highlighting.</p>
|
to the feature overlay of a select interaction (<code>ol.interaction.Select</code>) for highlighting.</p>
|
||||||
<p>Use <code>SHIFT+drag</code> to draw boxes.</p>
|
<p>Use <code>Ctrl+drag</code> (<code>Meta+drag</code> on Mac) to draw boxes.</p>
|
||||||
tags: "DragBox, feature, selection, box"
|
tags: "DragBox, feature, selection, box"
|
||||||
---
|
---
|
||||||
<div class="row-fluid">
|
<div class="row-fluid">
|
||||||
|
|||||||
@@ -8,8 +8,6 @@ goog.require('ol.layer.Tile');
|
|||||||
goog.require('ol.layer.Vector');
|
goog.require('ol.layer.Vector');
|
||||||
goog.require('ol.source.OSM');
|
goog.require('ol.source.OSM');
|
||||||
goog.require('ol.source.Vector');
|
goog.require('ol.source.Vector');
|
||||||
goog.require('ol.style.Stroke');
|
|
||||||
goog.require('ol.style.Style');
|
|
||||||
|
|
||||||
|
|
||||||
var vectorSource = new ol.source.Vector({
|
var vectorSource = new ol.source.Vector({
|
||||||
@@ -43,12 +41,7 @@ var selectedFeatures = select.getFeatures();
|
|||||||
|
|
||||||
// a DragBox interaction used to select features by drawing boxes
|
// a DragBox interaction used to select features by drawing boxes
|
||||||
var dragBox = new ol.interaction.DragBox({
|
var dragBox = new ol.interaction.DragBox({
|
||||||
condition: ol.events.condition.shiftKeyOnly,
|
condition: ol.events.condition.platformModifierKeyOnly
|
||||||
style: new ol.style.Style({
|
|
||||||
stroke: new ol.style.Stroke({
|
|
||||||
color: [0, 0, 255, 1]
|
|
||||||
})
|
|
||||||
})
|
|
||||||
});
|
});
|
||||||
|
|
||||||
map.addInteraction(dragBox);
|
map.addInteraction(dragBox);
|
||||||
|
|||||||
@@ -1,7 +0,0 @@
|
|||||||
#reset-brightness {
|
|
||||||
min-width: 138px;
|
|
||||||
}
|
|
||||||
#reset-contrast {
|
|
||||||
min-width: 120px;
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
---
|
|
||||||
template: example.html
|
|
||||||
title: Brightness/contrast example
|
|
||||||
shortdesc: Example of brightness/contrast control on the client (WebGL only).
|
|
||||||
docs: >
|
|
||||||
This example shows how to control brightness/contrast on the client,
|
|
||||||
the example is limited to WebGL.
|
|
||||||
tags: "brightness, contrast, webgl"
|
|
||||||
---
|
|
||||||
<div class="row-fluid">
|
|
||||||
<div class="span12">
|
|
||||||
<div id="map" class="map"></div>
|
|
||||||
<div id="no-webgl" class="alert alert-error" style="display: none">
|
|
||||||
This example requires a browser that supports <a href="http://get.webgl.org/">WebGL</a>.
|
|
||||||
</div>
|
|
||||||
<div class="btn-group">
|
|
||||||
<button id="increase-brightness"><i class="icon-plus"></i></button>
|
|
||||||
<button id="reset-brightness">Brightness</button>
|
|
||||||
<button id="decrease-brightness"><i class="icon-minus"></i></button>
|
|
||||||
</div>
|
|
||||||
<div class="btn-group">
|
|
||||||
<button id="increase-contrast"><i class="icon-plus"></i></button>
|
|
||||||
<button id="reset-contrast">Contrast</button>
|
|
||||||
<button id="decrease-contrast"><i class="icon-minus"></i></button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
@@ -1,75 +0,0 @@
|
|||||||
goog.require('ol.Map');
|
|
||||||
goog.require('ol.View');
|
|
||||||
goog.require('ol.has');
|
|
||||||
goog.require('ol.layer.Tile');
|
|
||||||
goog.require('ol.source.MapQuest');
|
|
||||||
|
|
||||||
|
|
||||||
function setResetBrightnessButtonHTML() {
|
|
||||||
resetBrightness.innerHTML = 'Brightness (' +
|
|
||||||
layer.getBrightness().toFixed(3) + ')';
|
|
||||||
}
|
|
||||||
|
|
||||||
function setResetContrastButtonHTML() {
|
|
||||||
resetContrast.innerHTML = 'Contrast (' + layer.getContrast().toFixed(3) + ')';
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!ol.has.WEBGL) {
|
|
||||||
var info = document.getElementById('no-webgl');
|
|
||||||
/**
|
|
||||||
* display error message
|
|
||||||
*/
|
|
||||||
info.style.display = '';
|
|
||||||
} else {
|
|
||||||
var layer = new ol.layer.Tile({
|
|
||||||
source: new ol.source.MapQuest({layer: 'sat'})
|
|
||||||
});
|
|
||||||
|
|
||||||
var map = new ol.Map({
|
|
||||||
layers: [layer],
|
|
||||||
renderer: 'webgl',
|
|
||||||
target: 'map',
|
|
||||||
view: new ol.View({
|
|
||||||
center: [0, 0],
|
|
||||||
zoom: 2
|
|
||||||
})
|
|
||||||
});
|
|
||||||
|
|
||||||
var increaseBrightness = document.getElementById('increase-brightness');
|
|
||||||
var resetBrightness = document.getElementById('reset-brightness');
|
|
||||||
var decreaseBrightness = document.getElementById('decrease-brightness');
|
|
||||||
|
|
||||||
setResetBrightnessButtonHTML();
|
|
||||||
|
|
||||||
increaseBrightness.addEventListener('click', function() {
|
|
||||||
layer.setBrightness(Math.min(layer.getBrightness() + 0.125, 1));
|
|
||||||
setResetBrightnessButtonHTML();
|
|
||||||
}, false);
|
|
||||||
resetBrightness.addEventListener('click', function() {
|
|
||||||
layer.setBrightness(0);
|
|
||||||
setResetBrightnessButtonHTML();
|
|
||||||
}, false);
|
|
||||||
decreaseBrightness.addEventListener('click', function() {
|
|
||||||
layer.setBrightness(Math.max(layer.getBrightness() - 0.125, -1));
|
|
||||||
setResetBrightnessButtonHTML();
|
|
||||||
}, false);
|
|
||||||
|
|
||||||
var increaseContrast = document.getElementById('increase-contrast');
|
|
||||||
var resetContrast = document.getElementById('reset-contrast');
|
|
||||||
var decreaseContrast = document.getElementById('decrease-contrast');
|
|
||||||
|
|
||||||
setResetContrastButtonHTML();
|
|
||||||
|
|
||||||
increaseContrast.addEventListener('click', function() {
|
|
||||||
layer.setContrast(layer.getContrast() + 0.125);
|
|
||||||
setResetContrastButtonHTML();
|
|
||||||
}, false);
|
|
||||||
resetContrast.addEventListener('click', function() {
|
|
||||||
layer.setContrast(1);
|
|
||||||
setResetContrastButtonHTML();
|
|
||||||
}, false);
|
|
||||||
decreaseContrast.addEventListener('click', function() {
|
|
||||||
layer.setContrast(Math.max(layer.getContrast() - 0.125, 0));
|
|
||||||
setResetContrastButtonHTML();
|
|
||||||
}, false);
|
|
||||||
}
|
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
template: example.html
|
layout: example.html
|
||||||
title: Custom tooltips example
|
title: Custom tooltips example
|
||||||
shortdesc: This example shows how to customize the buttons tooltips with Bootstrap.
|
shortdesc: This example shows how to customize the buttons tooltips with Bootstrap.
|
||||||
docs: >
|
docs: >
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
template: example.html
|
layout: example.html
|
||||||
title: Canvas tiles example
|
title: Canvas tiles example
|
||||||
shortdesc: Renders tiles with coordinates for debugging.
|
shortdesc: Renders tiles with coordinates for debugging.
|
||||||
docs: >
|
docs: >
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
template: example.html
|
layout: example.html
|
||||||
title: Advanced View Positioning example
|
title: Advanced View Positioning example
|
||||||
shortdesc: This example demonstrates how a map's view can be adjusted so a geometry or coordinate is positioned at a specific pixel location.
|
shortdesc: This example demonstrates how a map's view can be adjusted so a geometry or coordinate is positioned at a specific pixel location.
|
||||||
docs: >
|
docs: >
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
template: example.html
|
layout: example.html
|
||||||
title: Clustering example
|
title: Clustering example
|
||||||
shortdesc: Example of using <code>ol.source.Cluster</code>.
|
shortdesc: Example of using <code>ol.source.Cluster</code>.
|
||||||
docs: >
|
docs: >
|
||||||
|
|||||||
5
examples/color-manipulation.css
Normal file
5
examples/color-manipulation.css
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
table.controls td {
|
||||||
|
text-align: center;
|
||||||
|
padding: 2px 5px;
|
||||||
|
min-width: 60px;
|
||||||
|
}
|
||||||
30
examples/color-manipulation.html
Normal file
30
examples/color-manipulation.html
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
---
|
||||||
|
layout: example.html
|
||||||
|
title: Manipulating colors with a raster source
|
||||||
|
shortdesc: Demonstrates color manipulation with a raster source.
|
||||||
|
docs: >
|
||||||
|
A raster source allows arbitrary manipulation of pixel values. In this example, RGB values on the input tile source are adjusted in a pixel-wise operation before being rendered with a second raster source. The raster operation takes pixels in in RGB space, converts them to HCL color space, adjusts the values based on the controls above, and then converts them back to RGB space for rendering.
|
||||||
|
tags: "color, hue, lightness, chroma"
|
||||||
|
---
|
||||||
|
<div class="row-fluid">
|
||||||
|
<div class="span12">
|
||||||
|
<div id="map" class="map"></div>
|
||||||
|
<table class="controls">
|
||||||
|
<tr>
|
||||||
|
<td>hue</td>
|
||||||
|
<td><span id="hueOut"></span>°</td>
|
||||||
|
<td><input id="hue" type="range" min="-180" max="180" value="0"/></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>chroma</td>
|
||||||
|
<td><span id="chromaOut"></span> %</td>
|
||||||
|
<td><input id="chroma" type="range" min="0" max="100" value="100"/></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>lightness</td>
|
||||||
|
<td><span id="lightnessOut"></span> %</td>
|
||||||
|
<td><input id="lightness" type="range" min="0" max="100" value="100"/></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
173
examples/color-manipulation.js
Normal file
173
examples/color-manipulation.js
Normal file
@@ -0,0 +1,173 @@
|
|||||||
|
// NOCOMPILE
|
||||||
|
goog.require('ol.Map');
|
||||||
|
goog.require('ol.View');
|
||||||
|
goog.require('ol.layer.Image');
|
||||||
|
goog.require('ol.source.Raster');
|
||||||
|
goog.require('ol.source.Stamen');
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Color manipulation functions below are adapted from
|
||||||
|
* https://github.com/d3/d3-color.
|
||||||
|
*/
|
||||||
|
var Xn = 0.950470;
|
||||||
|
var Yn = 1;
|
||||||
|
var Zn = 1.088830;
|
||||||
|
var t0 = 4 / 29;
|
||||||
|
var t1 = 6 / 29;
|
||||||
|
var t2 = 3 * t1 * t1;
|
||||||
|
var t3 = t1 * t1 * t1;
|
||||||
|
var twoPi = 2 * Math.PI;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Convert an RGB pixel into an HCL pixel.
|
||||||
|
* @param {ol.raster.Pixel} pixel A pixel in RGB space.
|
||||||
|
* @return {ol.raster.Pixel} A pixel in HCL space.
|
||||||
|
*/
|
||||||
|
function rgb2hcl(pixel) {
|
||||||
|
var red = rgb2xyz(pixel[0]);
|
||||||
|
var green = rgb2xyz(pixel[1]);
|
||||||
|
var blue = rgb2xyz(pixel[2]);
|
||||||
|
|
||||||
|
var x = xyz2lab(
|
||||||
|
(0.4124564 * red + 0.3575761 * green + 0.1804375 * blue) / Xn);
|
||||||
|
var y = xyz2lab(
|
||||||
|
(0.2126729 * red + 0.7151522 * green + 0.0721750 * blue) / Yn);
|
||||||
|
var z = xyz2lab(
|
||||||
|
(0.0193339 * red + 0.1191920 * green + 0.9503041 * blue) / Zn);
|
||||||
|
|
||||||
|
var l = 116 * y - 16;
|
||||||
|
var a = 500 * (x - y);
|
||||||
|
var b = 200 * (y - z);
|
||||||
|
|
||||||
|
var c = Math.sqrt(a * a + b * b);
|
||||||
|
var h = Math.atan2(b, a);
|
||||||
|
if (h < 0) {
|
||||||
|
h += twoPi;
|
||||||
|
}
|
||||||
|
|
||||||
|
pixel[0] = h;
|
||||||
|
pixel[1] = c;
|
||||||
|
pixel[2] = l;
|
||||||
|
|
||||||
|
return pixel;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Convert an HCL pixel into an RGB pixel.
|
||||||
|
* @param {ol.raster.Pixel} pixel A pixel in HCL space.
|
||||||
|
* @return {ol.raster.Pixel} A pixel in RGB space.
|
||||||
|
*/
|
||||||
|
function hcl2rgb(pixel) {
|
||||||
|
var h = pixel[0];
|
||||||
|
var c = pixel[1];
|
||||||
|
var l = pixel[2];
|
||||||
|
|
||||||
|
var a = Math.cos(h) * c;
|
||||||
|
var b = Math.sin(h) * c;
|
||||||
|
|
||||||
|
var y = (l + 16) / 116;
|
||||||
|
var x = isNaN(a) ? y : y + a / 500;
|
||||||
|
var z = isNaN(b) ? y : y - b / 200;
|
||||||
|
|
||||||
|
y = Yn * lab2xyz(y);
|
||||||
|
x = Xn * lab2xyz(x);
|
||||||
|
z = Zn * lab2xyz(z);
|
||||||
|
|
||||||
|
pixel[0] = xyz2rgb(3.2404542 * x - 1.5371385 * y - 0.4985314 * z);
|
||||||
|
pixel[1] = xyz2rgb(-0.9692660 * x + 1.8760108 * y + 0.0415560 * z);
|
||||||
|
pixel[2] = xyz2rgb(0.0556434 * x - 0.2040259 * y + 1.0572252 * z);
|
||||||
|
|
||||||
|
return pixel;
|
||||||
|
}
|
||||||
|
|
||||||
|
function xyz2lab(t) {
|
||||||
|
return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;
|
||||||
|
}
|
||||||
|
|
||||||
|
function lab2xyz(t) {
|
||||||
|
return t > t1 ? t * t * t : t2 * (t - t0);
|
||||||
|
}
|
||||||
|
|
||||||
|
function rgb2xyz(x) {
|
||||||
|
return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);
|
||||||
|
}
|
||||||
|
|
||||||
|
function xyz2rgb(x) {
|
||||||
|
return 255 * (x <= 0.0031308 ?
|
||||||
|
12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);
|
||||||
|
}
|
||||||
|
|
||||||
|
var raster = new ol.source.Raster({
|
||||||
|
sources: [new ol.source.Stamen({
|
||||||
|
layer: 'watercolor'
|
||||||
|
})],
|
||||||
|
operation: function(pixels, data) {
|
||||||
|
var hcl = rgb2hcl(pixels[0]);
|
||||||
|
|
||||||
|
var h = hcl[0] + Math.PI * data.hue / 180;
|
||||||
|
if (h < 0) {
|
||||||
|
h += twoPi;
|
||||||
|
} else if (h > twoPi) {
|
||||||
|
h -= twoPi;
|
||||||
|
}
|
||||||
|
hcl[0] = h;
|
||||||
|
|
||||||
|
hcl[1] *= (data.chroma / 100);
|
||||||
|
hcl[2] *= (data.lightness / 100);
|
||||||
|
|
||||||
|
return hcl2rgb(hcl);
|
||||||
|
},
|
||||||
|
lib: {
|
||||||
|
rgb2hcl: rgb2hcl,
|
||||||
|
hcl2rgb: hcl2rgb,
|
||||||
|
rgb2xyz: rgb2xyz,
|
||||||
|
lab2xyz: lab2xyz,
|
||||||
|
xyz2lab: xyz2lab,
|
||||||
|
xyz2rgb: xyz2rgb,
|
||||||
|
Xn: Xn,
|
||||||
|
Yn: Yn,
|
||||||
|
Zn: Zn,
|
||||||
|
t0: t0,
|
||||||
|
t1: t1,
|
||||||
|
t2: t2,
|
||||||
|
t3: t3,
|
||||||
|
twoPi: twoPi
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
raster.on('beforeoperations', function(event) {
|
||||||
|
var data = event.data;
|
||||||
|
for (var id in controls) {
|
||||||
|
data[id] = Number(controls[id].value);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
var map = new ol.Map({
|
||||||
|
layers: [
|
||||||
|
new ol.layer.Image({
|
||||||
|
source: raster
|
||||||
|
})
|
||||||
|
],
|
||||||
|
target: 'map',
|
||||||
|
view: new ol.View({
|
||||||
|
center: [0, 2500000],
|
||||||
|
zoom: 2,
|
||||||
|
maxZoom: 18
|
||||||
|
})
|
||||||
|
});
|
||||||
|
|
||||||
|
var controlIds = ['hue', 'chroma', 'lightness'];
|
||||||
|
var controls = {};
|
||||||
|
controlIds.forEach(function(id) {
|
||||||
|
var control = document.getElementById(id);
|
||||||
|
var output = document.getElementById(id + 'Out');
|
||||||
|
control.addEventListener('input', function() {
|
||||||
|
output.innerText = control.value;
|
||||||
|
raster.changed();
|
||||||
|
});
|
||||||
|
output.innerText = control.value;
|
||||||
|
controls[id] = control;
|
||||||
|
});
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
template: example.html
|
layout: example.html
|
||||||
title: Custom control example
|
title: Custom control example
|
||||||
shortdesc: Shows how to create custom controls.
|
shortdesc: Shows how to create custom controls.
|
||||||
docs: >
|
docs: >
|
||||||
|
|||||||
14
examples/custom-interactions.html
Normal file
14
examples/custom-interactions.html
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
---
|
||||||
|
layout: example.html
|
||||||
|
title: Custom interaction example
|
||||||
|
shortdesc: Example of a custom interaction.
|
||||||
|
docs: >
|
||||||
|
This example demonstrates creating a custom interaction by subclassing `ol.interaction.Pointer`.
|
||||||
|
Note that the built in interaction `ol.interaction.Translate` might be a better option for moving features.
|
||||||
|
tags: "drag, feature, vector, editing, custom, interaction"
|
||||||
|
---
|
||||||
|
<div class="row-fluid">
|
||||||
|
<div class="span12">
|
||||||
|
<div id="map" class="map"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
template: example.html
|
layout: example.html
|
||||||
title: d3 integration example
|
title: d3 integration example
|
||||||
shortdesc: Example of using ol3 and d3 together.
|
shortdesc: Example of using ol3 and d3 together.
|
||||||
docs: >
|
docs: >
|
||||||
|
|||||||
4139
examples/data/geojson/roads-seoul.geojson
Normal file
4139
examples/data/geojson/roads-seoul.geojson
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
template: example.html
|
layout: example.html
|
||||||
title: Device-Orientation example
|
title: Device-Orientation example
|
||||||
shortdesc: Listen to DeviceOrientation events.
|
shortdesc: Listen to DeviceOrientation events.
|
||||||
docs: >
|
docs: >
|
||||||
|
|||||||
@@ -1,11 +1,13 @@
|
|||||||
---
|
---
|
||||||
template: example.html
|
layout: example.html
|
||||||
title: Drag-and-Drop image vector example
|
title: Drag-and-Drop image vector example
|
||||||
shortdesc: Example of using the drag-and-drop interaction with a ol.source.ImageVector. Drag and drop GPX, GeoJSON, IGC, KML, or TopoJSON files on to the map. Each file is rendered to an image on the client.
|
shortdesc: Example of using the drag-and-drop interaction with a ol.source.ImageVector. Drag and drop GPX, GeoJSON, IGC, KML, or TopoJSON files on to the map. Each file is rendered to an image on the client.
|
||||||
docs: >
|
docs: >
|
||||||
Example of using the drag-and-drop interaction with a ol.source.ImageVector. Drag and drop GPX, GeoJSON, IGC, KML, or TopoJSON files on to the map. Each file is rendered to
|
Example of using the drag-and-drop interaction with a ol.source.ImageVector. Drag and drop GPX, GeoJSON, IGC, KML, or TopoJSON files on to the map. Each file is rendered to
|
||||||
an image on the client.
|
an image on the client.
|
||||||
tags: "drag-and-drop-image-vector, gpx, geojson, igc, kml, topojson, vector, image"
|
tags: "drag-and-drop-image-vector, gpx, geojson, igc, kml, topojson, vector, image"
|
||||||
|
cloak:
|
||||||
|
Ak-dzM4wZjSqTlzveKz5u0d4IQ4bRzVI309GxmkgSVr1ewS6iPSrOvOKhA-CJlm3: Your Bing Maps Key from http://bingmapsportal.com/ here
|
||||||
---
|
---
|
||||||
<div class="row-fluid">
|
<div class="row-fluid">
|
||||||
<div class="span12">
|
<div class="span12">
|
||||||
|
|||||||
@@ -1,11 +1,13 @@
|
|||||||
---
|
---
|
||||||
template: example.html
|
layout: example.html
|
||||||
title: Drag-and-Drop example
|
title: Drag-and-Drop example
|
||||||
shortdesc: Example of using the drag-and-drop interaction. Drag and drop GPX, GeoJSON, IGC, KML, or TopoJSON files on to the map. There is no projection transform support, so this will only work with data in EPSG:4326 and EPSG:3857.
|
shortdesc: Example of using the drag-and-drop interaction. Drag and drop GPX, GeoJSON, IGC, KML, or TopoJSON files on to the map. There is no projection transform support, so this will only work with data in EPSG:4326 and EPSG:3857.
|
||||||
docs: >
|
docs: >
|
||||||
Example of using the drag-and-drop interaction. Drag and drop GPX, GeoJSON, IGC, KML, or TopoJSON files on to the map. There is no projection transform support, so this will
|
Example of using the drag-and-drop interaction. Drag and drop GPX, GeoJSON, IGC, KML, or TopoJSON files on to the map. There is no projection transform support, so this will
|
||||||
only work with data in EPSG:4326 and EPSG:3857.
|
only work with data in EPSG:4326 and EPSG:3857.
|
||||||
tags: "drag-and-drop, gpx, geojson, igc, kml, topojson"
|
tags: "drag-and-drop, gpx, geojson, igc, kml, topojson"
|
||||||
|
cloak:
|
||||||
|
Ak-dzM4wZjSqTlzveKz5u0d4IQ4bRzVI309GxmkgSVr1ewS6iPSrOvOKhA-CJlm3: Your Bing Maps Key from http://bingmapsportal.com/ here
|
||||||
---
|
---
|
||||||
<div class="row-fluid">
|
<div class="row-fluid">
|
||||||
<div class="span12">
|
<div class="span12">
|
||||||
|
|||||||
@@ -1,13 +0,0 @@
|
|||||||
---
|
|
||||||
template: example.html
|
|
||||||
title: Drag features example
|
|
||||||
shortdesc: Example of a drag features interaction.
|
|
||||||
docs: >
|
|
||||||
The drag features interaction can be used to drag features to a new position.
|
|
||||||
tags: "drag, feature, vector, editing"
|
|
||||||
---
|
|
||||||
<div class="row-fluid">
|
|
||||||
<div class="span12">
|
|
||||||
<div id="map" class="map"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
template: example.html
|
layout: example.html
|
||||||
title: Drag rotate and zoom example
|
title: Drag rotate and zoom example
|
||||||
shortdesc: A single interaction to drag, rotate, and zoom.
|
shortdesc: A single interaction to drag, rotate, and zoom.
|
||||||
docs: >
|
docs: >
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
template: example.html
|
layout: example.html
|
||||||
title: Draw and modify features example
|
title: Draw and modify features example
|
||||||
shortdesc: Example of using the ol.interaction.Draw interaction together with the ol.interaction.Modify interaction.
|
shortdesc: Example of using the ol.interaction.Draw interaction together with the ol.interaction.Modify interaction.
|
||||||
docs: >
|
docs: >
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
template: example.html
|
layout: example.html
|
||||||
title: Draw features example
|
title: Draw features example
|
||||||
shortdesc: Example of using the ol.interaction.Draw interaction.
|
shortdesc: Example of using the ol.interaction.Draw interaction.
|
||||||
docs: >
|
docs: >
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
template: example.html
|
layout: example.html
|
||||||
title: Dynamic data example
|
title: Dynamic data example
|
||||||
shortdesc: Example of dynamic data.
|
shortdesc: Example of dynamic data.
|
||||||
docs: >
|
docs: >
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
template: example.html
|
layout: example.html
|
||||||
title: Earthquake Clusters
|
title: Earthquake Clusters
|
||||||
shortdesc: Demonstrates the use of style geometries to render source features of a cluster.
|
shortdesc: Demonstrates the use of style geometries to render source features of a cluster.
|
||||||
docs: >
|
docs: >
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
template: example.html
|
layout: example.html
|
||||||
title: EPSG:4326 example
|
title: EPSG:4326 example
|
||||||
shortdesc: Example of a map in EPSG:4326.
|
shortdesc: Example of a map in EPSG:4326.
|
||||||
docs: >
|
docs: >
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
template: example.html
|
layout: example.html
|
||||||
title: Export map example
|
title: Export map example
|
||||||
shortdesc: Example of exporting a map as a PNG image.
|
shortdesc: Example of exporting a map as a PNG image.
|
||||||
docs: >
|
docs: >
|
||||||
@@ -9,10 +9,10 @@ tags: "export, png, openstreetmap"
|
|||||||
<div class="row-fluid">
|
<div class="row-fluid">
|
||||||
<div class="span12">
|
<div class="span12">
|
||||||
<div id="map" class="map"></div>
|
<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
|
This example requires a browser that supports the
|
||||||
<a href="http://caniuse.com/#feat=download">link download</a> attribute.
|
<a href="http://caniuse.com/#feat=download">link download</a> attribute.
|
||||||
</div>
|
</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>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
template: example.html
|
layout: example.html
|
||||||
title: Feature animation example
|
title: Feature animation example
|
||||||
shortdesc: Demonstrates how to animate features.
|
shortdesc: Demonstrates how to animate features.
|
||||||
docs: >
|
docs: >
|
||||||
|
|||||||
@@ -72,8 +72,7 @@ function flash(feature) {
|
|||||||
snapToPixel: false,
|
snapToPixel: false,
|
||||||
stroke: new ol.style.Stroke({
|
stroke: new ol.style.Stroke({
|
||||||
color: 'rgba(255, 0, 0, ' + opacity + ')',
|
color: 'rgba(255, 0, 0, ' + opacity + ')',
|
||||||
width: 1,
|
width: 1
|
||||||
opacity: opacity
|
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
24
examples/feature-move-animation.html
Normal file
24
examples/feature-move-animation.html
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
---
|
||||||
|
layout: example.html
|
||||||
|
title: Animate a feature movement
|
||||||
|
shortdesc: Demonstrates how to move a feature along a line.
|
||||||
|
docs: >
|
||||||
|
This example shows how to use <b>postcompose</b> and <b>vectorContext</b> to
|
||||||
|
animate a (marker) feature along a line. In this example an encoded polyline
|
||||||
|
is being used.
|
||||||
|
tags: "animation, feature, postcompose, polyline"
|
||||||
|
---
|
||||||
|
<div class="row-fluid">
|
||||||
|
<div class="span12">
|
||||||
|
<div id="map" class="map"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row-fluid">
|
||||||
|
<div class="span12">
|
||||||
|
<label for="speed">
|
||||||
|
speed:
|
||||||
|
<input id="speed" type="range" min="10" max="999" step="10" value="60">
|
||||||
|
</label>
|
||||||
|
<button id="start-animation">Start Animation</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
205
examples/feature-move-animation.js
Normal file
205
examples/feature-move-animation.js
Normal file
@@ -0,0 +1,205 @@
|
|||||||
|
goog.require('ol.Feature');
|
||||||
|
goog.require('ol.Map');
|
||||||
|
goog.require('ol.View');
|
||||||
|
goog.require('ol.format.Polyline');
|
||||||
|
goog.require('ol.geom.Point');
|
||||||
|
goog.require('ol.layer.Tile');
|
||||||
|
goog.require('ol.layer.Vector');
|
||||||
|
goog.require('ol.source.BingMaps');
|
||||||
|
goog.require('ol.source.Vector');
|
||||||
|
goog.require('ol.style.Circle');
|
||||||
|
goog.require('ol.style.Fill');
|
||||||
|
goog.require('ol.style.Icon');
|
||||||
|
goog.require('ol.style.Stroke');
|
||||||
|
goog.require('ol.style.Style');
|
||||||
|
|
||||||
|
// This long string is placed here due to jsFiddle limitations.
|
||||||
|
// It is usually loaded with AJAX.
|
||||||
|
var polyline = [
|
||||||
|
'hldhx@lnau`BCG_EaC??cFjAwDjF??uBlKMd@}@z@??aC^yk@z_@se@b[wFdE??wFfE}N',
|
||||||
|
'fIoGxB_I\\gG}@eHoCyTmPqGaBaHOoD\\??yVrGotA|N??o[N_STiwAtEmHGeHcAkiA}^',
|
||||||
|
'aMyBiHOkFNoI`CcVvM??gG^gF_@iJwC??eCcA]OoL}DwFyCaCgCcCwDcGwHsSoX??wI_E',
|
||||||
|
'kUFmq@hBiOqBgTwS??iYse@gYq\\cp@ce@{vA}s@csJqaE}{@iRaqE{lBeRoIwd@_T{]_',
|
||||||
|
'Ngn@{PmhEwaA{SeF_u@kQuyAw]wQeEgtAsZ}LiCarAkVwI}D??_}RcjEinPspDwSqCgs@',
|
||||||
|
'sPua@_OkXaMeT_Nwk@ob@gV}TiYs[uTwXoNmT{Uyb@wNg]{Nqa@oDgNeJu_@_G}YsFw]k',
|
||||||
|
'DuZyDmm@i_@uyIJe~@jCg|@nGiv@zUi_BfNqaAvIow@dEed@dCcf@r@qz@Egs@{Acu@mC',
|
||||||
|
'um@yIey@gGig@cK_m@aSku@qRil@we@{mAeTej@}Tkz@cLgr@aHko@qOmcEaJw~C{w@ka',
|
||||||
|
'i@qBchBq@kmBS{kDnBscBnFu_Dbc@_~QHeU`IuyDrC_}@bByp@fCyoA?qMbD}{AIkeAgB',
|
||||||
|
'k_A_A{UsDke@gFej@qH{o@qGgb@qH{`@mMgm@uQus@kL{_@yOmd@ymBgwE}x@ouBwtA__',
|
||||||
|
'DuhEgaKuWct@gp@cnBii@mlBa_@}|Asj@qrCg^eaC}L{dAaJ_aAiOyjByH{nAuYu`GsAw',
|
||||||
|
'Xyn@ywMyOyqD{_@cfIcDe}@y@aeBJmwA`CkiAbFkhBlTgdDdPyiB`W}xDnSa}DbJyhCrX',
|
||||||
|
'itAhT}x@bE}Z_@qW_Kwv@qKaaAiBgXvIm}A~JovAxCqW~WanB`XewBbK{_A`K}fBvAmi@',
|
||||||
|
'xBycBeCauBoF}}@qJioAww@gjHaPopA_NurAyJku@uGmi@cDs[eRaiBkQstAsQkcByNma',
|
||||||
|
'CsK_uBcJgbEw@gkB_@ypEqDoqSm@eZcDwjBoGw`BoMegBaU_`Ce_@_uBqb@ytBwkFqiT_',
|
||||||
|
'fAqfEwe@mfCka@_eC_UmlB}MmaBeWkkDeHwqAoX}~DcBsZmLcxBqOwqE_DkyAuJmrJ\\o',
|
||||||
|
'~CfIewG|YibQxBssB?es@qGciA}RorAoVajA_nAodD{[y`AgPqp@mKwr@ms@umEaW{dAm',
|
||||||
|
'b@umAw|@ojBwzDaaJsmBwbEgdCsrFqhAihDquAi`Fux@}_Dui@_eB_u@guCuyAuiHukA_',
|
||||||
|
'lKszAu|OmaA{wKm}@clHs_A_rEahCssKo\\sgBsSglAqk@yvDcS_wAyTwpBmPc|BwZknF',
|
||||||
|
'oFscB_GsaDiZmyMyLgtHgQonHqT{hKaPg}Dqq@m~Hym@c`EuiBudIabB{hF{pWifx@snA',
|
||||||
|
'w`GkFyVqf@y~BkoAi}Lel@wtc@}`@oaXi_C}pZsi@eqGsSuqJ|Lqeb@e]kgPcaAu}SkDw',
|
||||||
|
'zGhn@gjYh\\qlNZovJieBqja@ed@siO{[ol\\kCmjMe\\isHorCmec@uLebB}EqiBaCg}',
|
||||||
|
'@m@qwHrT_vFps@kkI`uAszIrpHuzYxx@e{Crw@kpDhN{wBtQarDy@knFgP_yCu\\wyCwy',
|
||||||
|
'A{kHo~@omEoYmoDaEcPiuAosDagD}rO{{AsyEihCayFilLaiUqm@_bAumFo}DgqA_uByi',
|
||||||
|
'@swC~AkzDlhA}xEvcBa}Cxk@ql@`rAo|@~bBq{@``Bye@djDww@z_C_cAtn@ye@nfC_eC',
|
||||||
|
'|gGahH~s@w}@``Fi~FpnAooC|u@wlEaEedRlYkrPvKerBfYs}Arg@m}AtrCkzElw@gjBb',
|
||||||
|
'h@woBhR{gCwGkgCc[wtCuOapAcFoh@uBy[yBgr@c@iq@o@wvEv@sp@`FajBfCaq@fIipA',
|
||||||
|
'dy@ewJlUc`ExGuaBdEmbBpBssArAuqBBg}@s@g{AkB{bBif@_bYmC}r@kDgm@sPq_BuJ_',
|
||||||
|
's@{X_{AsK_d@eM{d@wVgx@oWcu@??aDmOkNia@wFoSmDyMyCkPiBePwAob@XcQ|@oNdCo',
|
||||||
|
'SfFwXhEmOnLi\\lbAulB`X_d@|k@au@bc@oc@bqC}{BhwDgcD`l@ed@??bL{G|a@eTje@',
|
||||||
|
'oS~]cLr~Bgh@|b@}Jv}EieAlv@sPluD{z@nzA_]`|KchCtd@sPvb@wSb{@ko@f`RooQ~e',
|
||||||
|
'[upZbuIolI|gFafFzu@iq@nMmJ|OeJn^{Qjh@yQhc@uJ~j@iGdd@kAp~BkBxO{@|QsAfY',
|
||||||
|
'gEtYiGd]}Jpd@wRhVoNzNeK`j@ce@vgK}cJnSoSzQkVvUm^rSgc@`Uql@xIq\\vIgg@~k',
|
||||||
|
'Dyq[nIir@jNoq@xNwc@fYik@tk@su@neB}uBhqEesFjoGeyHtCoD|D}Ed|@ctAbIuOzqB',
|
||||||
|
'_}D~NgY`\\um@v[gm@v{Cw`G`w@o{AdjAwzBh{C}`Gpp@ypAxn@}mAfz@{bBbNia@??jI',
|
||||||
|
'ab@`CuOlC}YnAcV`@_^m@aeB}@yk@YuTuBg^uCkZiGk\\yGeY}Lu_@oOsZiTe[uWi[sl@',
|
||||||
|
'mo@soAauAsrBgzBqgAglAyd@ig@asAcyAklA}qAwHkGi{@s~@goAmsAyDeEirB_{B}IsJ',
|
||||||
|
'uEeFymAssAkdAmhAyTcVkFeEoKiH}l@kp@wg@sj@ku@ey@uh@kj@}EsFmG}Jk^_r@_f@m',
|
||||||
|
'~@ym@yjA??a@cFd@kBrCgDbAUnAcBhAyAdk@et@??kF}D??OL'
|
||||||
|
].join('');
|
||||||
|
|
||||||
|
var route = /** @type {ol.geom.LineString} */ (new ol.format.Polyline({
|
||||||
|
factor: 1e6
|
||||||
|
}).readGeometry(polyline, {
|
||||||
|
dataProjection: 'EPSG:4326',
|
||||||
|
featureProjection: 'EPSG:3857'
|
||||||
|
}));
|
||||||
|
|
||||||
|
var routeCoords = route.getCoordinates();
|
||||||
|
var routeLength = routeCoords.length;
|
||||||
|
|
||||||
|
var routeFeature = new ol.Feature({
|
||||||
|
type: 'route',
|
||||||
|
geometry: route
|
||||||
|
});
|
||||||
|
var geoMarker = new ol.Feature({
|
||||||
|
type: 'geoMarker',
|
||||||
|
geometry: new ol.geom.Point(routeCoords[0])
|
||||||
|
});
|
||||||
|
var startMarker = new ol.Feature({
|
||||||
|
type: 'icon',
|
||||||
|
geometry: new ol.geom.Point(routeCoords[0])
|
||||||
|
});
|
||||||
|
var endMarker = new ol.Feature({
|
||||||
|
type: 'icon',
|
||||||
|
geometry: new ol.geom.Point(routeCoords[routeLength - 1])
|
||||||
|
});
|
||||||
|
|
||||||
|
var styles = {
|
||||||
|
'route': new ol.style.Style({
|
||||||
|
stroke: new ol.style.Stroke({
|
||||||
|
width: 6, color: [237, 212, 0, 0.8]
|
||||||
|
})
|
||||||
|
}),
|
||||||
|
'icon': new ol.style.Style({
|
||||||
|
image: new ol.style.Icon({
|
||||||
|
anchor: [0.5, 1],
|
||||||
|
src: 'data/icon.png'
|
||||||
|
})
|
||||||
|
}),
|
||||||
|
'geoMarker': new ol.style.Style({
|
||||||
|
image: new ol.style.Circle({
|
||||||
|
radius: 7,
|
||||||
|
snapToPixel: false,
|
||||||
|
fill: new ol.style.Fill({color: 'black'}),
|
||||||
|
stroke: new ol.style.Stroke({
|
||||||
|
color: 'white', width: 2
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
|
};
|
||||||
|
|
||||||
|
var vectorLayer = new ol.layer.Vector({
|
||||||
|
source: new ol.source.Vector({
|
||||||
|
features: [routeFeature, geoMarker, startMarker, endMarker]
|
||||||
|
}),
|
||||||
|
style: function(feature, resolution) {
|
||||||
|
// hide geoMarker if animation is active
|
||||||
|
if (animating && feature.get('type') === 'geoMarker') {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
return [styles[feature.get('type')]];
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
var center = [-5639523.95, -3501274.52];
|
||||||
|
var map = new ol.Map({
|
||||||
|
target: document.getElementById('map'),
|
||||||
|
loadTilesWhileAnimating: true,
|
||||||
|
view: new ol.View({
|
||||||
|
center: center,
|
||||||
|
zoom: 10,
|
||||||
|
minZoom: 2,
|
||||||
|
maxZoom: 19
|
||||||
|
}),
|
||||||
|
layers: [
|
||||||
|
new ol.layer.Tile({
|
||||||
|
source: new ol.source.BingMaps({
|
||||||
|
imagerySet: 'AerialWithLabels',
|
||||||
|
key: 'Ak-dzM4wZjSqTlzveKz5u0d4IQ4bRzVI309GxmkgSVr1ewS6iPSrOvOKhA-CJlm3'
|
||||||
|
})
|
||||||
|
}),
|
||||||
|
vectorLayer
|
||||||
|
]
|
||||||
|
});
|
||||||
|
|
||||||
|
var moveFeature = function(event) {
|
||||||
|
var vectorContext = event.vectorContext;
|
||||||
|
var frameState = event.frameState;
|
||||||
|
|
||||||
|
if (animating) {
|
||||||
|
var elapsedTime = frameState.time - now;
|
||||||
|
// here the trick to increase speed is to jump some indexes
|
||||||
|
// on lineString coordinates
|
||||||
|
var index = Math.round(speed * elapsedTime / 1000);
|
||||||
|
|
||||||
|
if (index >= routeLength) {
|
||||||
|
stopAnimation(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var currentPoint = new ol.geom.Point(routeCoords[index]);
|
||||||
|
var feature = new ol.Feature(currentPoint);
|
||||||
|
vectorContext.drawFeature(feature, styles.geoMarker);
|
||||||
|
}
|
||||||
|
// tell OL3 to continue the postcompose animation
|
||||||
|
map.render();
|
||||||
|
};
|
||||||
|
|
||||||
|
function startAnimation() {
|
||||||
|
if (animating) {
|
||||||
|
stopAnimation(false);
|
||||||
|
} else {
|
||||||
|
animating = true;
|
||||||
|
now = new Date().getTime();
|
||||||
|
speed = speedInput.value;
|
||||||
|
startButton.textContent = 'Cancel Animation';
|
||||||
|
// hide geoMarker
|
||||||
|
geoMarker.setStyle(null);
|
||||||
|
// just in case you pan somewhere else
|
||||||
|
map.getView().setCenter(center);
|
||||||
|
map.on('postcompose', moveFeature);
|
||||||
|
map.render();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {boolean} ended end of animation.
|
||||||
|
*/
|
||||||
|
function stopAnimation(ended) {
|
||||||
|
animating = false;
|
||||||
|
startButton.textContent = 'Start Animation';
|
||||||
|
|
||||||
|
// if animation cancelled set the marker at the beginning
|
||||||
|
var coord = ended ? routeCoords[routeLength - 1] : routeCoords[0];
|
||||||
|
/** @type {ol.geom.Point} */ (geoMarker.getGeometry())
|
||||||
|
.setCoordinates(coord);
|
||||||
|
//remove listener
|
||||||
|
map.un('postcompose', moveFeature);
|
||||||
|
}
|
||||||
|
|
||||||
|
var speed, now;
|
||||||
|
var animating = false;
|
||||||
|
var speedInput = document.getElementById('speed');
|
||||||
|
var startButton = document.getElementById('start-animation');
|
||||||
|
startButton.addEventListener('click', startAnimation, false);
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
template: example.html
|
layout: example.html
|
||||||
title: Fractal Example
|
title: Fractal Example
|
||||||
shortdesc: Example of a fractal.
|
shortdesc: Example of a fractal.
|
||||||
docs: >
|
docs: >
|
||||||
|
|||||||
@@ -1,11 +1,13 @@
|
|||||||
---
|
---
|
||||||
template: example.html
|
layout: example.html
|
||||||
title: Full screen drag rotate and zoom example
|
title: Full screen drag rotate and zoom example
|
||||||
shortdesc: Example of drag rotate and zoom control with full screen effect.
|
shortdesc: Example of drag rotate and zoom control with full screen effect.
|
||||||
docs: >
|
docs: >
|
||||||
<p>Hold down <code>Shift</code> + drag to rotate and zoom. Click the button in the top right corner to go full screen. Then do the <code>Shift</code> + drag thing again.</p>
|
<p>Hold down <code>Shift</code> + drag to rotate and zoom. Click the button in the top right corner to go full screen. Then do the <code>Shift</code> + drag thing again.</p>
|
||||||
<p>If there is no button on the map, your browser does not support the <a href="http://caniuse.com/#feat=fullscreen">Full Screen API</a>.</p>
|
<p>If there is no button on the map, your browser does not support the <a href="http://caniuse.com/#feat=fullscreen">Full Screen API</a>.</p>
|
||||||
tags: "full-screen, drag, rotate, zoom, bing, bing-maps"
|
tags: "full-screen, drag, rotate, zoom, bing, bing-maps"
|
||||||
|
cloak:
|
||||||
|
Ak-dzM4wZjSqTlzveKz5u0d4IQ4bRzVI309GxmkgSVr1ewS6iPSrOvOKhA-CJlm3: Your Bing Maps Key from http://bingmapsportal.com/ here
|
||||||
---
|
---
|
||||||
<div class="row-fluid">
|
<div class="row-fluid">
|
||||||
<div class="span12">
|
<div class="span12">
|
||||||
|
|||||||
@@ -1,11 +1,13 @@
|
|||||||
---
|
---
|
||||||
template: example.html
|
layout: example.html
|
||||||
title: Full screen control example
|
title: Full screen control example
|
||||||
shortdesc: Example of a full screen control.
|
shortdesc: Example of a full screen control.
|
||||||
docs: >
|
docs: >
|
||||||
<p>Click the control in the top right corner to go full screen. Click it again to exit full screen.</p>
|
<p>Click the control in the top right corner to go full screen. Click it again to exit full screen.</p>
|
||||||
<p>If there is no button on the map, your browser does not support the <a href="http://caniuse.com/#feat=fullscreen">Full Screen API</a>.</p>
|
<p>If there is no button on the map, your browser does not support the <a href="http://caniuse.com/#feat=fullscreen">Full Screen API</a>.</p>
|
||||||
tags: "full-screen, bing, bing-maps"
|
tags: "full-screen, bing, bing-maps"
|
||||||
|
cloak:
|
||||||
|
Ak-dzM4wZjSqTlzveKz5u0d4IQ4bRzVI309GxmkgSVr1ewS6iPSrOvOKhA-CJlm3: Your Bing Maps Key from http://bingmapsportal.com/ here
|
||||||
---
|
---
|
||||||
<div class="row-fluid">
|
<div class="row-fluid">
|
||||||
<div class="span12">
|
<div class="span12">
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
template: example.html
|
layout: example.html
|
||||||
title: GeoJSON example
|
title: GeoJSON example
|
||||||
shortdesc: Example of GeoJSON features.
|
shortdesc: Example of GeoJSON features.
|
||||||
docs: >
|
docs: >
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
template: example-verbatim.html
|
layout: example-verbatim.html
|
||||||
title: Geolocation Tracking with Orientation
|
title: Geolocation Tracking with Orientation
|
||||||
shortdesc: Example of a geolocated and oriented map.
|
shortdesc: Example of a geolocated and oriented map.
|
||||||
tags: "fullscreen, geolocation, orientation, mobile"
|
tags: "fullscreen, geolocation, orientation, mobile"
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
template: example.html
|
layout: example.html
|
||||||
title: Geolocation example
|
title: Geolocation example
|
||||||
shortdesc: Example of a geolocation map.
|
shortdesc: Example of a geolocation map.
|
||||||
docs: >
|
docs: >
|
||||||
@@ -10,7 +10,7 @@ tags: "geolocation, openstreetmap"
|
|||||||
<div class="span12">
|
<div class="span12">
|
||||||
<div id="map" class="map"></div>
|
<div id="map" class="map"></div>
|
||||||
<div class="span4 pull-right">
|
<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>
|
</div>
|
||||||
<label class="checkbox" for="track">
|
<label class="checkbox" for="track">
|
||||||
<input id="track" type="checkbox"/>track position
|
<input id="track" type="checkbox"/>track position
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
template: example.html
|
layout: example.html
|
||||||
title: GetFeatureInfo example (image layer)
|
title: GetFeatureInfo example (image layer)
|
||||||
shortdesc: This example shows how to trigger WMS GetFeatureInfo requests on click for a WMS image layer.
|
shortdesc: This example shows how to trigger WMS GetFeatureInfo requests on click for a WMS image layer.
|
||||||
docs: >
|
docs: >
|
||||||
@@ -9,10 +9,12 @@ tags: "getfeatureinfo, forEachLayerAtPixel"
|
|||||||
<div class="row-fluid">
|
<div class="row-fluid">
|
||||||
<div class="span12">
|
<div class="span12">
|
||||||
<div id="map" class="map"></div>
|
<div id="map" class="map"></div>
|
||||||
<div class="span4 offset4 pull-right">
|
</div>
|
||||||
<div id="info" class="alert alert-success">
|
</div>
|
||||||
|
<div class="row-fluid">
|
||||||
</div>
|
<div class="span4 offset4 iframe-info">
|
||||||
|
<div id="info" class="alert alert-success">
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
template: example.html
|
layout: example.html
|
||||||
title: WMS GetFeatureInfo example (tile layer)
|
title: WMS GetFeatureInfo example (tile layer)
|
||||||
shortdesc: This example shows how to trigger WMS GetFeatureInfo requests on click for a WMS tile layer.
|
shortdesc: This example shows how to trigger WMS GetFeatureInfo requests on click for a WMS tile layer.
|
||||||
docs: >
|
docs: >
|
||||||
@@ -9,10 +9,12 @@ tags: "getfeatureinfo, forEachLayerAtPixel"
|
|||||||
<div class="row-fluid">
|
<div class="row-fluid">
|
||||||
<div class="span12">
|
<div class="span12">
|
||||||
<div id="map" class="map"></div>
|
<div id="map" class="map"></div>
|
||||||
<div class="span4 offset4 pull-right">
|
</div>
|
||||||
<div id="info" class="alert alert-success">
|
</div>
|
||||||
|
<div class="row-fluid">
|
||||||
</div>
|
<div class="span4 offset4 iframe-info">
|
||||||
|
<div id="info" class="alert alert-success">
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,10 +1,12 @@
|
|||||||
---
|
---
|
||||||
template: example.html
|
layout: example.html
|
||||||
title: GPX example
|
title: GPX example
|
||||||
shortdesc: Example of using the GPX source.
|
shortdesc: Example of using the GPX source.
|
||||||
docs: >
|
docs: >
|
||||||
Example of using the GPX source.
|
Example of using the GPX source.
|
||||||
tags: "GPX"
|
tags: "GPX"
|
||||||
|
cloak:
|
||||||
|
Ak-dzM4wZjSqTlzveKz5u0d4IQ4bRzVI309GxmkgSVr1ewS6iPSrOvOKhA-CJlm3: Your Bing Maps Key from http://bingmapsportal.com/ here
|
||||||
---
|
---
|
||||||
<div class="row-fluid">
|
<div class="row-fluid">
|
||||||
<div class="span12">
|
<div class="span12">
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
template: example.html
|
layout: example.html
|
||||||
title: Graticule example
|
title: Graticule example
|
||||||
shortdesc: This example shows how to add a graticule overlay to a map.
|
shortdesc: This example shows how to add a graticule overlay to a map.
|
||||||
docs: >
|
docs: >
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
template: example.html
|
layout: example.html
|
||||||
title: Earthquakes heatmap
|
title: Earthquakes heatmap
|
||||||
shortdesc: Demonstrates the use of a heatmap layer.
|
shortdesc: Demonstrates the use of a heatmap layer.
|
||||||
docs: >
|
docs: >
|
||||||
|
|||||||
@@ -1,6 +0,0 @@
|
|||||||
#reset-hue {
|
|
||||||
min-width: 90px;
|
|
||||||
}
|
|
||||||
#reset-saturation {
|
|
||||||
min-width: 124px;
|
|
||||||
}
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
---
|
|
||||||
template: example.html
|
|
||||||
title: Hue/saturation example
|
|
||||||
shortdesc: Example of hue/saturation control on the client (WebGL only).
|
|
||||||
docs: >
|
|
||||||
Example of hue/saturation control on the client (WebGL only).
|
|
||||||
tags: "custom, control"
|
|
||||||
---
|
|
||||||
<div class="row-fluid">
|
|
||||||
<div class="span12">
|
|
||||||
<div id="map" class="map"></div>
|
|
||||||
<div id="no-webgl" class="alert alert-error" style="display: none">
|
|
||||||
This example requires a browser that supports <a href="http://get.webgl.org/">WebGL</a>.
|
|
||||||
</div>
|
|
||||||
<div class="btn-group">
|
|
||||||
<button id="increase-hue"><i class="icon-plus"></i></button>
|
|
||||||
<button id="reset-hue">Hue</button>
|
|
||||||
<button id="decrease-hue"><i class="icon-minus"></i></button>
|
|
||||||
</div>
|
|
||||||
<div class="btn-group">
|
|
||||||
<button id="increase-saturation"><i class="icon-plus"></i></button>
|
|
||||||
<button id="reset-saturation">Saturation</button>
|
|
||||||
<button id="decrease-saturation"><i class="icon-minus"></i></button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
@@ -1,79 +0,0 @@
|
|||||||
goog.require('ol.Map');
|
|
||||||
goog.require('ol.View');
|
|
||||||
goog.require('ol.has');
|
|
||||||
goog.require('ol.layer.Tile');
|
|
||||||
goog.require('ol.proj');
|
|
||||||
goog.require('ol.source.BingMaps');
|
|
||||||
|
|
||||||
|
|
||||||
function setResetHueButtonHTML() {
|
|
||||||
resetHue.innerHTML = 'Hue (' + layer.getHue().toFixed(2) + ')';
|
|
||||||
}
|
|
||||||
|
|
||||||
function setResetSaturationButtonHTML() {
|
|
||||||
resetSaturation.innerHTML = 'Saturation (' +
|
|
||||||
layer.getSaturation().toFixed(2) + ')';
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!ol.has.WEBGL) {
|
|
||||||
var info = document.getElementById('no-webgl');
|
|
||||||
/**
|
|
||||||
* display error message
|
|
||||||
*/
|
|
||||||
info.style.display = '';
|
|
||||||
} else {
|
|
||||||
var layer = new ol.layer.Tile({
|
|
||||||
source: new ol.source.BingMaps({
|
|
||||||
key: 'Ak-dzM4wZjSqTlzveKz5u0d4IQ4bRzVI309GxmkgSVr1ewS6iPSrOvOKhA-CJlm3',
|
|
||||||
imagerySet: 'Aerial'
|
|
||||||
})
|
|
||||||
});
|
|
||||||
|
|
||||||
var map = new ol.Map({
|
|
||||||
layers: [layer],
|
|
||||||
renderer: 'webgl',
|
|
||||||
target: 'map',
|
|
||||||
view: new ol.View({
|
|
||||||
center: ol.proj.fromLonLat([-9.375, 51.483333]),
|
|
||||||
zoom: 15
|
|
||||||
})
|
|
||||||
});
|
|
||||||
|
|
||||||
var increaseHue = document.getElementById('increase-hue');
|
|
||||||
var resetHue = document.getElementById('reset-hue');
|
|
||||||
var decreaseHue = document.getElementById('decrease-hue');
|
|
||||||
|
|
||||||
setResetHueButtonHTML();
|
|
||||||
|
|
||||||
increaseHue.addEventListener('click', function() {
|
|
||||||
layer.setHue(layer.getHue() + 0.25);
|
|
||||||
setResetHueButtonHTML();
|
|
||||||
}, false);
|
|
||||||
resetHue.addEventListener('click', function() {
|
|
||||||
layer.setHue(0);
|
|
||||||
setResetHueButtonHTML();
|
|
||||||
}, false);
|
|
||||||
decreaseHue.addEventListener('click', function() {
|
|
||||||
layer.setHue(layer.getHue() - 0.25);
|
|
||||||
setResetHueButtonHTML();
|
|
||||||
}, false);
|
|
||||||
|
|
||||||
var increaseSaturation = document.getElementById('increase-saturation');
|
|
||||||
var resetSaturation = document.getElementById('reset-saturation');
|
|
||||||
var decreaseSaturation = document.getElementById('decrease-saturation');
|
|
||||||
|
|
||||||
setResetSaturationButtonHTML();
|
|
||||||
|
|
||||||
increaseSaturation.addEventListener('click', function() {
|
|
||||||
layer.setSaturation(layer.getSaturation() + 0.25);
|
|
||||||
setResetSaturationButtonHTML();
|
|
||||||
}, false);
|
|
||||||
resetSaturation.addEventListener('click', function() {
|
|
||||||
layer.setSaturation(1);
|
|
||||||
setResetSaturationButtonHTML();
|
|
||||||
}, false);
|
|
||||||
decreaseSaturation.addEventListener('click', function() {
|
|
||||||
layer.setSaturation(Math.max(layer.getSaturation() - 0.25, 0));
|
|
||||||
setResetSaturationButtonHTML();
|
|
||||||
}, false);
|
|
||||||
}
|
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
template: example.html
|
layout: example.html
|
||||||
title: Icon sprites with WebGL example
|
title: Icon sprites with WebGL example
|
||||||
shortdesc: Icon sprite with WebGL
|
shortdesc: Icon sprite with WebGL
|
||||||
docs: >
|
docs: >
|
||||||
|
|||||||
@@ -78,14 +78,8 @@ var vector = new ol.layer.Vector({
|
|||||||
source: vectorSource
|
source: vectorSource
|
||||||
});
|
});
|
||||||
|
|
||||||
// Use the "webgl" renderer by default.
|
|
||||||
var renderer = common.getRendererFromQueryString();
|
|
||||||
if (!renderer) {
|
|
||||||
renderer = 'webgl';
|
|
||||||
}
|
|
||||||
|
|
||||||
var map = new ol.Map({
|
var map = new ol.Map({
|
||||||
renderer: renderer,
|
renderer: common.getRendererFromQueryString('webgl'),
|
||||||
layers: [vector],
|
layers: [vector],
|
||||||
target: document.getElementById('map'),
|
target: document.getElementById('map'),
|
||||||
view: new ol.View({
|
view: new ol.View({
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
template: example.html
|
layout: example.html
|
||||||
title: Vector Icon Example
|
title: Vector Icon Example
|
||||||
shortdesc: Example using an icon to symbolize a point.
|
shortdesc: Example using an icon to symbolize a point.
|
||||||
docs: >
|
docs: >
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
template: example.html
|
layout: example.html
|
||||||
title: IGC example
|
title: IGC example
|
||||||
shortdesc: Example of tracks recorded from multiple paraglider flights on the same day, read from an IGC file.
|
shortdesc: Example of tracks recorded from multiple paraglider flights on the same day, read from an IGC file.
|
||||||
docs: >
|
docs: >
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
template: example.html
|
layout: example.html
|
||||||
title: Image Filter Example
|
title: Image Filter Example
|
||||||
shortdesc: Apply a filter to imagery
|
shortdesc: Apply a filter to imagery
|
||||||
docs: >
|
docs: >
|
||||||
@@ -7,6 +7,8 @@ docs: >
|
|||||||
These listeners get an event with a reference to the Canvas rendering context.
|
These listeners get an event with a reference to the Canvas rendering context.
|
||||||
In this example, the <code>postcompose</code> listener applies a filter to the image data.</p>
|
In this example, the <code>postcompose</code> listener applies a filter to the image data.</p>
|
||||||
tags: "filter, image manipulation"
|
tags: "filter, image manipulation"
|
||||||
|
cloak:
|
||||||
|
Ak-dzM4wZjSqTlzveKz5u0d4IQ4bRzVI309GxmkgSVr1ewS6iPSrOvOKhA-CJlm3: Your Bing Maps Key from http://bingmapsportal.com/ here
|
||||||
---
|
---
|
||||||
<div class="row-fluid">
|
<div class="row-fluid">
|
||||||
<div class="span12">
|
<div class="span12">
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
template: example.html
|
layout: example.html
|
||||||
title: Image load events example
|
title: Image load events example
|
||||||
shortdesc: Example using image load events.
|
shortdesc: Example using image load events.
|
||||||
docs: >
|
docs: >
|
||||||
|
|||||||
@@ -33,10 +33,11 @@ Progress.prototype.addLoading = function() {
|
|||||||
* Increment the count of loaded tiles.
|
* Increment the count of loaded tiles.
|
||||||
*/
|
*/
|
||||||
Progress.prototype.addLoaded = function() {
|
Progress.prototype.addLoaded = function() {
|
||||||
|
var this_ = this;
|
||||||
setTimeout(function() {
|
setTimeout(function() {
|
||||||
++this.loaded;
|
++this_.loaded;
|
||||||
this.update();
|
this_.update();
|
||||||
}.bind(this), 100);
|
}, 100);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@@ -49,7 +50,10 @@ Progress.prototype.update = function() {
|
|||||||
if (this.loading === this.loaded) {
|
if (this.loading === this.loaded) {
|
||||||
this.loading = 0;
|
this.loading = 0;
|
||||||
this.loaded = 0;
|
this.loaded = 0;
|
||||||
setTimeout(this.hide.bind(this), 500);
|
var this_ = this;
|
||||||
|
setTimeout(function() {
|
||||||
|
this_.hide();
|
||||||
|
}, 500);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
template: example.html
|
layout: example.html
|
||||||
title: Image vector layer example
|
title: Image vector layer example
|
||||||
shortdesc: Example of an image vector layer.
|
shortdesc: Example of an image vector layer.
|
||||||
docs: >
|
docs: >
|
||||||
|
|||||||
@@ -18,6 +18,7 @@
|
|||||||
color: #333;
|
color: #333;
|
||||||
}
|
}
|
||||||
.example {
|
.example {
|
||||||
|
display: block;
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
background-color: #F5F5F5;
|
background-color: #F5F5F5;
|
||||||
height: 140px;
|
height: 140px;
|
||||||
@@ -170,13 +171,13 @@
|
|||||||
for (var i = 0; i < info.examples.length; ++i) {
|
for (var i = 0; i < info.examples.length; ++i) {
|
||||||
info.examples[i].link += window.location.search;
|
info.examples[i].link += window.location.search;
|
||||||
}
|
}
|
||||||
// document.getElementById('keywords').focus();
|
|
||||||
template = new jugl.Template("template");
|
template = new jugl.Template("template");
|
||||||
target = document.getElementById("examples");
|
target = document.getElementById("examples");
|
||||||
listExamples(info.examples);
|
listExamples(info.examples);
|
||||||
document.getElementById("keywords").onkeyup = inputChange;
|
document.getElementById("keywords").onkeyup = inputChange;
|
||||||
parseQuery();
|
parseQuery();
|
||||||
};
|
};
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<title>OpenLayers 3 Examples</title>
|
<title>OpenLayers 3 Examples</title>
|
||||||
@@ -187,7 +188,7 @@
|
|||||||
<div class="container">
|
<div class="container">
|
||||||
<a class="navbar-brand" href="./"><img src="./resources/logo-70x70.png"> OpenLayers 3 Examples</a>
|
<a class="navbar-brand" href="./"><img src="./resources/logo-70x70.png"> OpenLayers 3 Examples</a>
|
||||||
<form class="navbar-form navbar-left" role="search">
|
<form class="navbar-form navbar-left" role="search">
|
||||||
<input name="q" type="text" id="keywords" class="search-query" placeholder="Search">
|
<input name="q" type="text" id="keywords" class="search-query" placeholder="Search" autofocus>
|
||||||
<span id="count"></span>
|
<span id="count"></span>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
@@ -198,13 +199,13 @@
|
|||||||
<div style="display: none;">
|
<div style="display: none;">
|
||||||
<div id="template" class="row">
|
<div id="template" class="row">
|
||||||
<div class="col-md-4 col-sm-4" jugl:repeat="example examples">
|
<div class="col-md-4 col-sm-4" jugl:repeat="example examples">
|
||||||
<div class="example">
|
<a jugl:attributes="href example.link" class="example">
|
||||||
<a jugl:attributes="href example.link" class="mainlink">
|
<span class="mainlink">
|
||||||
<strong><span jugl:replace="example.title">title</span></strong><br>
|
<strong><span jugl:replace="example.title">title</span></strong><br>
|
||||||
<small jugl:content="'(' + example.example + ')'"></small>
|
<small jugl:content="'(' + example.example + ')'"></small>
|
||||||
</a>
|
</span>
|
||||||
<p class="description" jugl:content="example.shortdesc"></p>
|
<p class="description" jugl:content="example.shortdesc"></p>
|
||||||
</div>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
19
examples/jsts.html
Normal file
19
examples/jsts.html
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
---
|
||||||
|
layout: example.html
|
||||||
|
title: JSTS Example
|
||||||
|
shortdesc: Example on how to use JSTS with OpenLayers 3.
|
||||||
|
docs: >
|
||||||
|
Example showing the integration of <a href="https://github.com/bjornharrtell/jsts">JSTS</a>
|
||||||
|
with OpenLayers 3.
|
||||||
|
tags: "vector, jsts, buffer"
|
||||||
|
resources:
|
||||||
|
- https://cdn.rawgit.com/bjornharrtell/jsts/gh-pages/lib/0.16.0/javascript.util.min.js
|
||||||
|
- https://cdn.rawgit.com/bjornharrtell/jsts/gh-pages/lib/0.16.0/jsts.min.js
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
<div class="row-fluid">
|
||||||
|
<div class="span12">
|
||||||
|
<div id="map" class="map"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
53
examples/jsts.js
Normal file
53
examples/jsts.js
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
// NOCOMPILE
|
||||||
|
// this example uses JSTS for which we don't have an externs file.
|
||||||
|
goog.require('ol.Feature');
|
||||||
|
goog.require('ol.Map');
|
||||||
|
goog.require('ol.View');
|
||||||
|
goog.require('ol.format.GeoJSON');
|
||||||
|
goog.require('ol.layer.Tile');
|
||||||
|
goog.require('ol.layer.Vector');
|
||||||
|
goog.require('ol.proj');
|
||||||
|
goog.require('ol.source.MapQuest');
|
||||||
|
goog.require('ol.source.Vector');
|
||||||
|
|
||||||
|
|
||||||
|
var source = new ol.source.Vector();
|
||||||
|
$.ajax('data/geojson/roads-seoul.geojson').then(function(response) {
|
||||||
|
var format = new ol.format.GeoJSON();
|
||||||
|
var features = format.readFeatures(response,
|
||||||
|
{featureProjection: 'EPSG:3857'});
|
||||||
|
|
||||||
|
var parser = new jsts.io.olParser();
|
||||||
|
|
||||||
|
for (var i = 0; i < features.length; i++) {
|
||||||
|
var feature = features[i];
|
||||||
|
// convert the OpenLayers geometry to a JSTS geometry
|
||||||
|
var jstsGeom = parser.read(feature.getGeometry());
|
||||||
|
|
||||||
|
// create a buffer of 40 meters around each line
|
||||||
|
var buffered = jstsGeom.buffer(40);
|
||||||
|
|
||||||
|
// convert back from JSTS and replace the geometry on the feature
|
||||||
|
feature.setGeometry(parser.write(buffered));
|
||||||
|
}
|
||||||
|
|
||||||
|
source.addFeatures(features);
|
||||||
|
});
|
||||||
|
var vectorLayer = new ol.layer.Vector({
|
||||||
|
source: source
|
||||||
|
});
|
||||||
|
|
||||||
|
var rasterLayer = new ol.layer.Tile({
|
||||||
|
source: new ol.source.MapQuest({
|
||||||
|
layer: 'osm'
|
||||||
|
})
|
||||||
|
});
|
||||||
|
|
||||||
|
var map = new ol.Map({
|
||||||
|
layers: [rasterLayer, vectorLayer],
|
||||||
|
target: document.getElementById('map'),
|
||||||
|
view: new ol.View({
|
||||||
|
center: ol.proj.fromLonLat([126.979293, 37.528787]),
|
||||||
|
zoom: 15
|
||||||
|
})
|
||||||
|
});
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
template: example.html
|
layout: example.html
|
||||||
title: Earthquakes in KML
|
title: Earthquakes in KML
|
||||||
shortdesc: Demonstrates the use of a Shape symbolizer to render earthquake locations.
|
shortdesc: Demonstrates the use of a Shape symbolizer to render earthquake locations.
|
||||||
docs: >
|
docs: >
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
template: example.html
|
layout: example.html
|
||||||
title: Timezones in KML
|
title: Timezones in KML
|
||||||
shortdesc: Demonstrates rendering timezones from KML.
|
shortdesc: Demonstrates rendering timezones from KML.
|
||||||
docs: >
|
docs: >
|
||||||
|
|||||||
@@ -1,10 +1,12 @@
|
|||||||
---
|
---
|
||||||
template: example.html
|
layout: example.html
|
||||||
title: KML example
|
title: KML example
|
||||||
shortdesc: Example of using the KML source.
|
shortdesc: Example of using the KML source.
|
||||||
docs: >
|
docs: >
|
||||||
Example of using the KML source.
|
Example of using the KML source.
|
||||||
tags: "KML"
|
tags: "KML"
|
||||||
|
cloak:
|
||||||
|
Ak-dzM4wZjSqTlzveKz5u0d4IQ4bRzVI309GxmkgSVr1ewS6iPSrOvOKhA-CJlm3: Your Bing Maps Key from http://bingmapsportal.com/ here
|
||||||
---
|
---
|
||||||
<div class="row-fluid">
|
<div class="row-fluid">
|
||||||
<div class="span12">
|
<div class="span12">
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
template: example.html
|
layout: example.html
|
||||||
title: Layer WebGL clipping example
|
title: Layer WebGL clipping example
|
||||||
shortdesc: Layer WebGL clipping example.
|
shortdesc: Layer WebGL clipping example.
|
||||||
docs: >
|
docs: >
|
||||||
@@ -11,6 +11,6 @@ tags: "clipping, webgl, openstreetmap"
|
|||||||
<div id="map" class="map"></div>
|
<div id="map" class="map"></div>
|
||||||
</div>
|
</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>.
|
This example requires a browser that supports <a href="http://get.webgl.org/">WebGL</a>.
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
template: example.html
|
layout: example.html
|
||||||
title: Layer clipping example
|
title: Layer clipping example
|
||||||
shortdesc: Layer clipping example
|
shortdesc: Layer clipping example
|
||||||
docs: >
|
docs: >
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user