Compare commits
636 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
346cd562ee | ||
|
|
ba88081eba | ||
|
|
2a3b21cfd9 | ||
|
|
785954f722 | ||
|
|
b8b3dcc066 | ||
|
|
76c4c2f85c | ||
|
|
65bbee4c8b | ||
|
|
10b56a4543 | ||
|
|
42a094d730 | ||
|
|
680ce960e1 | ||
|
|
77959efcff | ||
|
|
dc988cba60 | ||
|
|
5f747cbf1b | ||
|
|
2b025e2266 | ||
|
|
71ac0b18a9 | ||
|
|
3cf4dbfcc6 | ||
|
|
1732ed5a04 | ||
|
|
59c95dbe90 | ||
|
|
711afac80f | ||
|
|
43def3194f | ||
|
|
caf11a71f2 | ||
|
|
53c2be0c7a | ||
|
|
caaf8cb86f | ||
|
|
219dacb232 | ||
|
|
9ab201642c | ||
|
|
6d608c361a | ||
|
|
6a797e84ff | ||
|
|
c12b41f8c6 | ||
|
|
aaad5b4977 | ||
|
|
c2e756da05 | ||
|
|
467e13fa2d | ||
|
|
e0a46dd178 | ||
|
|
aeb3e5b271 | ||
|
|
f34cb17ffa | ||
|
|
5dfa82c27e | ||
|
|
e55cca1e7d | ||
|
|
d197864f5a | ||
|
|
4d5d428a96 | ||
|
|
0091bfa106 | ||
|
|
765d2cdc9f | ||
|
|
1de22f77dc | ||
|
|
f2b4555e1f | ||
|
|
3f69066d79 | ||
|
|
1a00e20b1b | ||
|
|
c90b8c2a12 | ||
|
|
6f57a272d0 | ||
|
|
1cdd040c96 | ||
|
|
1df9189d7f | ||
|
|
071a02556e | ||
|
|
f8c0d284de | ||
|
|
b50749e1ea | ||
|
|
e239eb338f | ||
|
|
1674620943 | ||
|
|
6ceb03f86b | ||
|
|
ba20c6333b | ||
|
|
2adac0b3e7 | ||
|
|
0a530725c6 | ||
|
|
391e38a973 | ||
|
|
7f1728f8d4 | ||
|
|
d3fdda6efc | ||
|
|
1ed51d02e3 | ||
|
|
8f12177593 | ||
|
|
f82619d6d0 | ||
|
|
453a723005 | ||
|
|
e8da3929d5 | ||
|
|
1f1951f3cc | ||
|
|
208f125158 | ||
|
|
df632dbaa9 | ||
|
|
b11daa8344 | ||
|
|
0130ce71ba | ||
|
|
3a42a0859c | ||
|
|
0593c352af | ||
|
|
724d141d3a | ||
|
|
deb6c093a8 | ||
|
|
0b21d1a6fc | ||
|
|
d1395d005c | ||
|
|
cd2f0f60d6 | ||
|
|
f58603bddf | ||
|
|
1740f02737 | ||
|
|
0cd3e39fe8 | ||
|
|
d5c895aa8b | ||
|
|
9810250fb4 | ||
|
|
8a2f74fbe8 | ||
|
|
0801b9e0be | ||
|
|
fc8ba24d3f | ||
|
|
e0a018fa1e | ||
|
|
3746ba99cf | ||
|
|
d294b87358 | ||
|
|
29b21da608 | ||
|
|
0787aa3439 | ||
|
|
41fea9905a | ||
|
|
7cd7a4d111 | ||
|
|
a06ad4940c | ||
|
|
6ff7747d98 | ||
|
|
e4816faadf | ||
|
|
f0c164802f | ||
|
|
ae409f40d5 | ||
|
|
7e142080a1 | ||
|
|
1a0f398f1f | ||
|
|
648ee4f4a4 | ||
|
|
3d72490241 | ||
|
|
df4ef724b6 | ||
|
|
d2d041e54a | ||
|
|
94fd57f690 | ||
|
|
939aa565b5 | ||
|
|
1035ba7bf2 | ||
|
|
041836c645 | ||
|
|
a85099a36b | ||
|
|
cddfc11125 | ||
|
|
d387702644 | ||
|
|
49a4bf4248 | ||
|
|
1e90ffacec | ||
|
|
43ca764293 | ||
|
|
fb11aad1d1 | ||
|
|
f7adeac774 | ||
|
|
076d6425cb | ||
|
|
2809784247 | ||
|
|
ee9c9bcefb | ||
|
|
e37039d85e | ||
|
|
9362e33be9 | ||
|
|
aea9479c12 | ||
|
|
6b24760299 | ||
|
|
594a921598 | ||
|
|
2005c82dd2 | ||
|
|
6252404d5b | ||
|
|
316b4a1bb7 | ||
|
|
7ec19645e9 | ||
|
|
b43e5929f2 | ||
|
|
f8585962b4 | ||
|
|
43b9f70077 | ||
|
|
6e7558e954 | ||
|
|
2768884044 | ||
|
|
af4e5ca7cf | ||
|
|
9285b283c0 | ||
|
|
9163558511 | ||
|
|
80753eb909 | ||
|
|
3e860d2c61 | ||
|
|
3ce80fbfb1 | ||
|
|
8aebed1cd6 | ||
|
|
90395c2355 | ||
|
|
50f90cdf61 | ||
|
|
04f2174052 | ||
|
|
0f15d38ae7 | ||
|
|
667f9a58f3 | ||
|
|
2f4d31c8f4 | ||
|
|
ad3f248825 | ||
|
|
c2c8cdab29 | ||
|
|
e828231449 | ||
|
|
dded939a07 | ||
|
|
945f686f8a | ||
|
|
2c6e80a601 | ||
|
|
da41515944 | ||
|
|
15c9fe7867 | ||
|
|
6d1cc3ba88 | ||
|
|
db15bb0942 | ||
|
|
94da8dd0e2 | ||
|
|
02b2be5b40 | ||
|
|
7672fe3b16 | ||
|
|
04c2359d49 | ||
|
|
f15ac14d2a | ||
|
|
177190403f | ||
|
|
12786e4352 | ||
|
|
d308288eed | ||
|
|
d6aced3e43 | ||
|
|
720993431c | ||
|
|
69dfbb9e54 | ||
|
|
23473a8346 | ||
|
|
414f6e0384 | ||
|
|
96e99e481e | ||
|
|
f5e8e3e009 | ||
|
|
61dedbbe6d | ||
|
|
f3f138b9bc | ||
|
|
b8addb4c24 | ||
|
|
8be23b799d | ||
|
|
84dda90bfc | ||
|
|
a92c992e1a | ||
|
|
c0903e6fc1 | ||
|
|
8d9fe7f688 | ||
|
|
144c2f9f15 | ||
|
|
4a066670c2 | ||
|
|
3781a6881d | ||
|
|
9d4821aafc | ||
|
|
38aa620afa | ||
|
|
ddae414ddc | ||
|
|
d3a82b0586 | ||
|
|
83763a73d9 | ||
|
|
07349de59b | ||
|
|
909869b8b9 | ||
|
|
942a0976be | ||
|
|
3397796ff2 | ||
|
|
9586c7cbc7 | ||
|
|
18570841d8 | ||
|
|
bafb9e4a8c | ||
|
|
4cb5dc695b | ||
|
|
4ca75e2aab | ||
|
|
56f623337b | ||
|
|
3f79edba67 | ||
|
|
2799f0c824 | ||
|
|
cbd6aabea2 | ||
|
|
5c737b21ae | ||
|
|
0f9485a806 | ||
|
|
bb544114ee | ||
|
|
c7813bbf45 | ||
|
|
e30293d07f | ||
|
|
b26d81fd7e | ||
|
|
d3e34f95c9 | ||
|
|
16faf064de | ||
|
|
be4afde507 | ||
|
|
2b8cee3e44 | ||
|
|
682fe47914 | ||
|
|
b1309578b4 | ||
|
|
ecaec7bbfa | ||
|
|
b4fced865d | ||
|
|
9b12b30100 | ||
|
|
9ac00667b4 | ||
|
|
452d5454cb | ||
|
|
4aff3d0631 | ||
|
|
2f151a7832 | ||
|
|
25cf54193a | ||
|
|
ae87cad7ef | ||
|
|
b6846d6b3d | ||
|
|
d62dd67942 | ||
|
|
2517b838b6 | ||
|
|
9fc8475586 | ||
|
|
023ad3c531 | ||
|
|
26f1cba808 | ||
|
|
76dda0c422 | ||
|
|
31ac0eb406 | ||
|
|
c5a9d5b0bc | ||
|
|
7dbe38358a | ||
|
|
accdc79c05 | ||
|
|
7056eb8536 | ||
|
|
88cde255f8 | ||
|
|
47b68ed96d | ||
|
|
d6b99a5a25 | ||
|
|
a2c7eb80fd | ||
|
|
6f1f85b729 | ||
|
|
2034e3f63b | ||
|
|
8b26e53067 | ||
|
|
40ee806c27 | ||
|
|
831505c425 | ||
|
|
b49f2448c7 | ||
|
|
513e11d263 | ||
|
|
01923ddbb2 | ||
|
|
313b00b8f3 | ||
|
|
5abcaebabc | ||
|
|
a685e85c10 | ||
|
|
9cbe9926b4 | ||
|
|
efea43d008 | ||
|
|
0bbbd33bb1 | ||
|
|
4da372d515 | ||
|
|
7d5a81d40f | ||
|
|
f8b0eb9648 | ||
|
|
df7c89baeb | ||
|
|
497aef7309 | ||
|
|
73a48eb3d4 | ||
|
|
63f583e148 | ||
|
|
54fa2bdc94 | ||
|
|
8c69380ef6 | ||
|
|
fa7a92b565 | ||
|
|
3d9b1af105 | ||
|
|
f58cd03f3b | ||
|
|
2e41302fc3 | ||
|
|
6ce56329dd | ||
|
|
368fb2c6e8 | ||
|
|
280741f8d1 | ||
|
|
d4d45001f6 | ||
|
|
f8d3c8e140 | ||
|
|
1ee0c50c8a | ||
|
|
2752541ff1 | ||
|
|
39951a792d | ||
|
|
2d68f1506c | ||
|
|
05c0b77a52 | ||
|
|
5bfd82a9bf | ||
|
|
4fbd7f2acd | ||
|
|
60c5d016a6 | ||
|
|
7eee6ba07a | ||
|
|
d8ee6acefa | ||
|
|
a4212abbb2 | ||
|
|
2f51785968 | ||
|
|
ca9ac8e950 | ||
|
|
80399f09df | ||
|
|
047f7ecf04 | ||
|
|
277ecca881 | ||
|
|
9cf7c71df8 | ||
|
|
55b300082a | ||
|
|
922e3824fb | ||
|
|
3b747f4d2d | ||
|
|
ce3988cfbb | ||
|
|
8f6f4de433 | ||
|
|
d37e04e8f3 | ||
|
|
a6223abdce | ||
|
|
e9baa2cfc4 | ||
|
|
3ba789eae6 | ||
|
|
02d5d21d0d | ||
|
|
be12573883 | ||
|
|
8cfb4e9384 | ||
|
|
d9698dcb06 | ||
|
|
708557afef | ||
|
|
9c5227850f | ||
|
|
49ee4bbd1c | ||
|
|
75947a6759 | ||
|
|
7d1b90c7d2 | ||
|
|
557e2c9029 | ||
|
|
3b208864bc | ||
|
|
32dea69f5e | ||
|
|
7d36b893d3 | ||
|
|
5ee1fd50fa | ||
|
|
681941b537 | ||
|
|
7c5ff5422d | ||
|
|
c9068526e7 | ||
|
|
9fd4807920 | ||
|
|
16bd9a5450 | ||
|
|
ada7e404b1 | ||
|
|
1c10bbf94c | ||
|
|
1da2db83da | ||
|
|
10c8371b38 | ||
|
|
5c5fc3f892 | ||
|
|
82cfa54584 | ||
|
|
69c6db0bc7 | ||
|
|
9b447ef3ed | ||
|
|
821a08ea79 | ||
|
|
a31453b55f | ||
|
|
5b43b9f151 | ||
|
|
bf6ecd7667 | ||
|
|
725687c987 | ||
|
|
fca3bed6dc | ||
|
|
fd0d6ff6f6 | ||
|
|
aa39a8a508 | ||
|
|
c472910aae | ||
|
|
7ff974be2c | ||
|
|
c414bd5923 | ||
|
|
57bd015972 | ||
|
|
abeb6490e0 | ||
|
|
85407a45f2 | ||
|
|
399e2587bb | ||
|
|
edfbb35c03 | ||
|
|
016436ae18 | ||
|
|
34323c0618 | ||
|
|
0ac94c93ff | ||
|
|
7525c57688 | ||
|
|
a4aaab5e32 | ||
|
|
e873949b31 | ||
|
|
adfc174af3 | ||
|
|
d44ba929ab | ||
|
|
20125ae96c | ||
|
|
0994362bfe | ||
|
|
45f2324a4e | ||
|
|
9c6e14b050 | ||
|
|
8b83371272 | ||
|
|
25ade66017 | ||
|
|
f3fb88905e | ||
|
|
e740e7577a | ||
|
|
d062904cc1 | ||
|
|
cd169ede0d | ||
|
|
bd655b325d | ||
|
|
7f32ba4216 | ||
|
|
109f16f717 | ||
|
|
b3127f86be | ||
|
|
e25d053ba6 | ||
|
|
3029a07c1a | ||
|
|
978b039ddc | ||
|
|
65066a0505 | ||
|
|
43bc3020a1 | ||
|
|
5f63575106 | ||
|
|
9c52e0d6d9 | ||
|
|
77dbf2fdb0 | ||
|
|
ad399246a3 | ||
|
|
23be1ac56d | ||
|
|
600d156d01 | ||
|
|
40227db7be | ||
|
|
54cdaddf3a | ||
|
|
5a62d403c0 | ||
|
|
eade74384a | ||
|
|
31c392b63c | ||
|
|
7cb85fa975 | ||
|
|
f8396d8f35 | ||
|
|
4d26ab751d | ||
|
|
f819ed137b | ||
|
|
91d31b57ec | ||
|
|
1fbefcab64 | ||
|
|
b2bcbcbc04 | ||
|
|
960b433a2c | ||
|
|
d777a6319b | ||
|
|
5910e4d207 | ||
|
|
340a446b51 | ||
|
|
124fccf127 | ||
|
|
74417a05d0 | ||
|
|
3ffd7683d5 | ||
|
|
457cbc9d9b | ||
|
|
7912c5d711 | ||
|
|
7d77d05a57 | ||
|
|
028caa4664 | ||
|
|
90403421af | ||
|
|
fe0ac80ba4 | ||
|
|
ba53b5e8aa | ||
|
|
abc3279752 | ||
|
|
84c689d456 | ||
|
|
693d1b24c6 | ||
|
|
cdaca7b0ff | ||
|
|
3ccfc2ea61 | ||
|
|
b351eaef29 | ||
|
|
14eb3fde14 | ||
|
|
f29e6ac397 | ||
|
|
79674363e6 | ||
|
|
0ce7402d61 | ||
|
|
00474dc038 | ||
|
|
8d054a404a | ||
|
|
143bf731b6 | ||
|
|
d4bbbcb690 | ||
|
|
f9f2f981f1 | ||
|
|
8b45011cd5 | ||
|
|
39c31e62a3 | ||
|
|
5b00231d7a | ||
|
|
3c52757f3f | ||
|
|
e6e9801a74 | ||
|
|
b5e2b9fe6f | ||
|
|
83e252bed9 | ||
|
|
b0b248d8e6 | ||
|
|
0364beb312 | ||
|
|
fc5aafe9fe | ||
|
|
968d8d6698 | ||
|
|
3c500e0b4b | ||
|
|
81bab31efb | ||
|
|
058f81c0fa | ||
|
|
6b851d812d | ||
|
|
ef4936de4a | ||
|
|
b6746d3432 | ||
|
|
3c05e09189 | ||
|
|
9b2dc88151 | ||
|
|
5e7afbb393 | ||
|
|
f6e6878909 | ||
|
|
e49c691a22 | ||
|
|
bd0f3556b6 | ||
|
|
82675d0bee | ||
|
|
895bfcea8e | ||
|
|
a6861f5f49 | ||
|
|
e32b3b5957 | ||
|
|
e3f13051f6 | ||
|
|
c8747d87a4 | ||
|
|
225e02244e | ||
|
|
ea616e7751 | ||
|
|
ba698258c0 | ||
|
|
1f50a2b3e6 | ||
|
|
9b64ea4969 | ||
|
|
52b30ead65 | ||
|
|
203cb12501 | ||
|
|
60e907fb48 | ||
|
|
71328530fe | ||
|
|
a5f5c06af3 | ||
|
|
f825a08bcf | ||
|
|
ccfacc5ee6 | ||
|
|
f2aaaa19e1 | ||
|
|
5ac94426e1 | ||
|
|
e3b21b9994 | ||
|
|
f34d024b22 | ||
|
|
f515b84322 | ||
|
|
d6e8ecea5e | ||
|
|
c691e7ca7a | ||
|
|
37221edbf0 | ||
|
|
ae14df9dca | ||
|
|
281873f22a | ||
|
|
8510169c69 | ||
|
|
e2c0d59332 | ||
|
|
99245b47f7 | ||
|
|
eee7b0126b | ||
|
|
404c1bda0a | ||
|
|
8fdc4cc9fc | ||
|
|
ad1dec58ec | ||
|
|
42b8340ea1 | ||
|
|
595009726f | ||
|
|
4025ddc364 | ||
|
|
5b8b470568 | ||
|
|
3c02bd15fb | ||
|
|
5fdac622ef | ||
|
|
25c1754052 | ||
|
|
a30f8859aa | ||
|
|
5435379e70 | ||
|
|
9eeacc585f | ||
|
|
20a347b0c9 | ||
|
|
6b851720d9 | ||
|
|
d12537b975 | ||
|
|
ee3ebbff76 | ||
|
|
411bc8ac61 | ||
|
|
bb4f887545 | ||
|
|
db04052b7a | ||
|
|
9daa556da1 | ||
|
|
c29fdaf714 | ||
|
|
2d79baf54d | ||
|
|
8e9e0ae848 | ||
|
|
badc350746 | ||
|
|
50293200d7 | ||
|
|
b2b3d6b05c | ||
|
|
34fefe3103 | ||
|
|
27dadef8ef | ||
|
|
f456c56ddd | ||
|
|
bdb80d3368 | ||
|
|
b039e17015 | ||
|
|
bd9635f6ef | ||
|
|
a0e72c7d42 | ||
|
|
bb77fbe703 | ||
|
|
0c47890bdd | ||
|
|
2d974c6f1f | ||
|
|
d95b2bc2ae | ||
|
|
0ada02f12a | ||
|
|
786bb608b9 | ||
|
|
2342ec90aa | ||
|
|
7a05b671d8 | ||
|
|
ea9517ffd5 | ||
|
|
d84c64b3e7 | ||
|
|
017d2e4802 | ||
|
|
3b36477fc3 | ||
|
|
1baa8be269 | ||
|
|
158b54156a | ||
|
|
5752bd0028 | ||
|
|
3f98094d9d | ||
|
|
b56a7c0fa3 | ||
|
|
b7aa6c6513 | ||
|
|
1605741a92 | ||
|
|
a18da7d55a | ||
|
|
68cf960028 | ||
|
|
94c6afd65d | ||
|
|
321166849b | ||
|
|
26cc0a3ded | ||
|
|
fffcf4415c | ||
|
|
07cb678271 | ||
|
|
315cfa1033 | ||
|
|
38349d8c37 | ||
|
|
adce78e19e | ||
|
|
eb0fcdb588 | ||
|
|
161c5b0105 | ||
|
|
8ab1589f9a | ||
|
|
95533e2425 | ||
|
|
a94dff2c06 | ||
|
|
fc75fc691b | ||
|
|
b9aceb23ac | ||
|
|
f382ddf230 | ||
|
|
dbdaa73cf2 | ||
|
|
f3cd1d8dfd | ||
|
|
e5944682df | ||
|
|
147a86c867 | ||
|
|
2d08811485 | ||
|
|
fc19e3e12e | ||
|
|
a5fc8bdd25 | ||
|
|
7f8b2d2e1f | ||
|
|
80a00fce47 | ||
|
|
ee8ed5193c | ||
|
|
cc7d825a13 | ||
|
|
fd4e0f14cc | ||
|
|
85e1f11adb | ||
|
|
47c4e1a165 | ||
|
|
0bff75a067 | ||
|
|
ab81deb242 | ||
|
|
654073cd3d | ||
|
|
a354e842ab | ||
|
|
1eeea2aa4d | ||
|
|
2f92e48e93 | ||
|
|
c5b42c49d5 | ||
|
|
03d47e49ed | ||
|
|
abbfb5c653 | ||
|
|
a78c163a4f | ||
|
|
a4178d05ef | ||
|
|
dbf9048d8f | ||
|
|
824ad48488 | ||
|
|
8cd9eabe68 | ||
|
|
a50a4efeca | ||
|
|
d49be1393e | ||
|
|
a991bb21d6 | ||
|
|
df848d6673 | ||
|
|
68ce6de0ca | ||
|
|
141fe5fe49 | ||
|
|
57baa15cc3 | ||
|
|
64138bb94f | ||
|
|
62188502e9 | ||
|
|
fe86d2e7f7 | ||
|
|
69ae9d7180 | ||
|
|
adc83ba484 | ||
|
|
4012280ad4 | ||
|
|
e48c85a689 | ||
|
|
c74faaa7ca | ||
|
|
236b6832fb | ||
|
|
93b92d3990 | ||
|
|
a36ab978e7 | ||
|
|
55fb62c551 | ||
|
|
c74b9c1d55 | ||
|
|
a56ca57ac6 | ||
|
|
1aadd51c57 | ||
|
|
a1391a2083 | ||
|
|
5adf0be4a3 | ||
|
|
4c71ddb3c7 | ||
|
|
efe15402cc | ||
|
|
b3586bed8d | ||
|
|
1e332f52d6 | ||
|
|
c0f44f6d9d | ||
|
|
efe0dd7fbf | ||
|
|
219629458b | ||
|
|
b13feb0046 | ||
|
|
df293d8a2e | ||
|
|
6cfa2b22a7 | ||
|
|
8346bb7454 | ||
|
|
40486a0ecc | ||
|
|
d8efa569d9 | ||
|
|
adfb3dd229 | ||
|
|
3c0be4e611 | ||
|
|
2eb07aa081 | ||
|
|
affbf59b77 | ||
|
|
d12ef20b12 | ||
|
|
5a6502572f | ||
|
|
d7adf0b4f3 | ||
|
|
f7551623e7 | ||
|
|
6f22f1b7ac | ||
|
|
6cdfbe3116 | ||
|
|
704845e37a | ||
|
|
fd9219f035 | ||
|
|
f3786f9cff | ||
|
|
436633b990 | ||
|
|
a89ae25134 | ||
|
|
2769953204 | ||
|
|
14ead39440 | ||
|
|
39261af940 | ||
|
|
9ec623380a | ||
|
|
28104527b0 | ||
|
|
b50bc1febf | ||
|
|
c046c2a1ba | ||
|
|
bbe0a66d07 | ||
|
|
d8b290966b | ||
|
|
0edb39c8ab | ||
|
|
f0ffb48633 | ||
|
|
171195a836 | ||
|
|
45cf296ed4 | ||
|
|
b377bbac59 | ||
|
|
2767ddfdc7 | ||
|
|
cd85e30d08 | ||
|
|
139fcd7bae | ||
|
|
2a04415264 | ||
|
|
515eca797f |
36
.circleci/config.yml
Normal file
36
.circleci/config.yml
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
version: 2
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
docker:
|
||||||
|
- image: circleci/node:10-browsers
|
||||||
|
|
||||||
|
working_directory: ~/repo
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- checkout
|
||||||
|
|
||||||
|
- restore_cache:
|
||||||
|
keys:
|
||||||
|
- v1-dependencies-{{ checksum "package.json" }}
|
||||||
|
- v1-dependencies-
|
||||||
|
|
||||||
|
- run:
|
||||||
|
name: Install Dependencies
|
||||||
|
command: npm install
|
||||||
|
|
||||||
|
- save_cache:
|
||||||
|
paths:
|
||||||
|
- node_modules
|
||||||
|
key: v1-dependencies-{{ checksum "package.json" }}
|
||||||
|
|
||||||
|
- run:
|
||||||
|
name: Run Tests
|
||||||
|
command: npm test
|
||||||
|
|
||||||
|
- run:
|
||||||
|
name: Build Examples
|
||||||
|
command: npm run build-examples
|
||||||
|
|
||||||
|
- store_artifacts:
|
||||||
|
path: build/examples
|
||||||
|
destination: examples
|
||||||
17
.travis.yml
17
.travis.yml
@@ -1,17 +0,0 @@
|
|||||||
language: node_js
|
|
||||||
node_js:
|
|
||||||
- '8'
|
|
||||||
cache:
|
|
||||||
directories:
|
|
||||||
- node_modules
|
|
||||||
after_success:
|
|
||||||
- cat coverage/lcov.info | coveralls
|
|
||||||
branches:
|
|
||||||
only:
|
|
||||||
- master
|
|
||||||
addons:
|
|
||||||
hosts:
|
|
||||||
- travis.dev
|
|
||||||
jwt:
|
|
||||||
# This is the encrypted SAUCE_ACCESS_KEY
|
|
||||||
secure: bb2Ibzu9RLe6ZlIG7JVcuH7IoLMxa/i3LTM7t8mbsPjVOGs5ycyJ7M9MbvqB/F2EzbeV4XB2c9ufI4TkaLYceY5kdWjfZVN8iasr+GFqKMv1uR4i6bpu8KmHJ+blxwfY1QOQ/cGwEx+fbeycMtpTc3Y3GyXaPlCQLhbZvesMg88=
|
|
||||||
@@ -30,7 +30,7 @@ To run the examples you first need to start the dev server:
|
|||||||
|
|
||||||
$ npm run serve-examples
|
$ npm run serve-examples
|
||||||
|
|
||||||
Then, load <http://localhost:5000/> in your browser.
|
Then, load <http://localhost:8080/> in your browser.
|
||||||
|
|
||||||
## Running tests
|
## Running tests
|
||||||
|
|
||||||
|
|||||||
@@ -39,6 +39,7 @@ See the following examples for more detail on bundling OpenLayers with your appl
|
|||||||
* Using [Rollup](https://github.com/openlayers/ol-rollup)
|
* Using [Rollup](https://github.com/openlayers/ol-rollup)
|
||||||
* Using [Webpack](https://github.com/openlayers/ol-webpack)
|
* Using [Webpack](https://github.com/openlayers/ol-webpack)
|
||||||
* Using [Parcel](https://github.com/openlayers/ol-parcel)
|
* Using [Parcel](https://github.com/openlayers/ol-parcel)
|
||||||
|
* Using [Browserify](https://github.com/openlayers/ol-browserify)
|
||||||
|
|
||||||
## Supported Browsers
|
## Supported Browsers
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,34 @@
|
|||||||
## Upgrade notes
|
## Upgrade notes
|
||||||
|
|
||||||
|
### Next version
|
||||||
|
|
||||||
|
### v5.3.0
|
||||||
|
|
||||||
|
#### The `getUid` function returns string
|
||||||
|
|
||||||
|
The `getUid` function from the `ol/util` module now returns a string instead of a number.
|
||||||
|
|
||||||
|
#### Attributions are not collapsible for `ol/source/OSM`
|
||||||
|
|
||||||
|
When a map contains a layer from a `ol/source/OSM` source, the `ol/control/Attribution` control will be shown with the `collapsible: false` behavior.
|
||||||
|
|
||||||
|
To get the previous behavior, configure the `ol/control/Attribution` control with `collapsible: true`.
|
||||||
|
|
||||||
|
### v5.2.0
|
||||||
|
|
||||||
|
#### Removal of the `snapToPixel` option for `ol/style/Image` subclasses
|
||||||
|
|
||||||
|
The `snapToPixel` option has been removed, and the `getSnapToPixel` and `setSnapToPixel` methods are deprecated.
|
||||||
|
|
||||||
|
The renderer now snaps to integer pixels when no interaction or animation is running to get crisp rendering. During interaction or animation, it does not snap to integer pixels to avoid jitter.
|
||||||
|
|
||||||
|
When rendering with the Immediate API, symbols will no longer be snapped to integer pixels. To get crisp images, set `context.imageSmoothingEnabled = false` before rendering with the Immediate API, and `context.imageSmoothingEnabled = true` afterwards.
|
||||||
|
|
||||||
### v5.1.0
|
### v5.1.0
|
||||||
|
|
||||||
#### Geometry constructor and `setCoordinates` no longer accept `null` coordinates
|
#### Geometry constructor and `setCoordinates` no longer accept `null` coordinates
|
||||||
|
|
||||||
Geometries (`ol/geom/*`) now need to be constructed with valid coordinates (center for `ol/geom/Circle`) as first constructor argument. The same applies to the `setCoordinates()` (`setCenter() for `ol/geom/Circle`) method.
|
Geometries (`ol/geom/*`) now need to be constructed with valid coordinates (center for `ol/geom/Circle`) as first constructor argument. The same applies to the `setCoordinates()` (`setCenter()` for `ol/geom/Circle`) method.
|
||||||
|
|
||||||
### v5.0.0
|
### v5.0.0
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
# 5.1.1
|
# 5.1.1
|
||||||
|
|
||||||
The 5.1.1 release is a patch to include the readme in the package. See the [5.1.0 notes](https://github.com/openlayers/openlayers/releases/tag/v5.0.3) for detail on the 5.1 release.
|
The 5.1.1 release is a patch to include the readme in the package. See the [5.1.0 notes](https://github.com/openlayers/openlayers/releases/tag/v5.1.0) for detail on the 5.1 release.
|
||||||
|
|||||||
5
changelog/v5.1.2.md
Normal file
5
changelog/v5.1.2.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
# 5.1.2
|
||||||
|
|
||||||
|
The 5.1.2 release is a patch to fix the API docs. See the [5.1.0 notes](https://github.com/openlayers/openlayers/releases/tag/v5.1.0) for detail on the 5.1 release.
|
||||||
|
|
||||||
|
* [#8413](https://github.com/openlayers/openlayers/pull/8413) - Remove extra curly in type ([@tschaub](https://github.com/tschaub))
|
||||||
6
changelog/v5.1.3.md
Normal file
6
changelog/v5.1.3.md
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
# 5.1.3
|
||||||
|
|
||||||
|
The 5.1.3 release is a patch to fix the API docs and the legacy full build. See the [5.1.0 notes](https://github.com/openlayers/openlayers/releases/tag/v5.1.0) for detail on the 5.1 release.
|
||||||
|
|
||||||
|
* [#8417](https://github.com/openlayers/openlayers/pull/8417) - Minor doc updates ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#8418](https://github.com/openlayers/openlayers/pull/8418) - Set api annotation on classdesc, not constructor ([@ahocevar](https://github.com/ahocevar))
|
||||||
86
changelog/v5.2.0.md
Normal file
86
changelog/v5.2.0.md
Normal file
@@ -0,0 +1,86 @@
|
|||||||
|
# v5.2.0
|
||||||
|
|
||||||
|
The 5.2 release adds a few new features a handful of fixes, including regressions that were reported after the 5.1 release. You should be able to upgrade without any additional work. See the one note below regarding `snapToPixel` on `ol/style/Image` and subclasses.
|
||||||
|
|
||||||
|
We're still working toward type checking with TypeScript. Until that is complete, we apologize for some flwas in the online API documentation. We're excited about the improved experience for application developers when the effort is finished, and will highlight some of the benefit in upcoming releases.
|
||||||
|
|
||||||
|
### Upgrade Notes
|
||||||
|
|
||||||
|
#### Removal of the `snapToPixel` option for `ol/style/Image` subclasses
|
||||||
|
|
||||||
|
The `snapToPixel` option has been removed, and the `getSnapToPixel` and `setSnapToPixel` methods are deprecated.
|
||||||
|
|
||||||
|
The renderer now snaps to integer pixels when no interaction or animation is running to get crisp rendering. During interaction or animation, it does not snap to integer pixels to avoid jitter.
|
||||||
|
|
||||||
|
When rendering with the Immediate API, symbols will no longer be snapped to integer pixels. To get crisp images, set `context.imageSmoothingEnabled = false` before rendering with the Immediate API, and `context.imageSmoothingEnabled = true` afterwards.
|
||||||
|
|
||||||
|
### New Features and Fixes
|
||||||
|
|
||||||
|
* [#8511](https://github.com/openlayers/openlayers/pull/8511) - Update IGN API key ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#8547](https://github.com/openlayers/openlayers/pull/8547) - Fix port number in developing doc ([@pgiraud](https://github.com/pgiraud))
|
||||||
|
* [#8546](https://github.com/openlayers/openlayers/pull/8546) - Update projection FAQ for v5 ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#8481](https://github.com/openlayers/openlayers/pull/8481) - Expose some internal functions ([@gberaudo](https://github.com/gberaudo))
|
||||||
|
* [#8510](https://github.com/openlayers/openlayers/pull/8510) - Fix WMTS URLs with dimensions ([@gberaudo](https://github.com/gberaudo))
|
||||||
|
* [#8524](https://github.com/openlayers/openlayers/pull/8524) - Fix compatiblity with XHTML content type ([@NeoRaider](https://github.com/NeoRaider))
|
||||||
|
* [#8532](https://github.com/openlayers/openlayers/pull/8532) - Add 'rendercomplete' event ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#8529](https://github.com/openlayers/openlayers/pull/8529) - Update link to base class in docs ([@TDesjardins](https://github.com/TDesjardins))
|
||||||
|
* [#8528](https://github.com/openlayers/openlayers/pull/8528) - Update link to base class in docs ([@TDesjardins](https://github.com/TDesjardins))
|
||||||
|
* [#8525](https://github.com/openlayers/openlayers/pull/8525) - Re-export Projection from ol/proj for convenience ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#8499](https://github.com/openlayers/openlayers/pull/8499) - Round center in viewState to pixels ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#8520](https://github.com/openlayers/openlayers/pull/8520) - Remove redundant if block ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#8515](https://github.com/openlayers/openlayers/pull/8515) - More convenient select and sketch layer management ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#8503](https://github.com/openlayers/openlayers/pull/8503) - Avoid block scope issues in transpiled code ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#8490](https://github.com/openlayers/openlayers/pull/8490) - WMTS getCapabilities readCoodinates more than one whitespace delimiter ([@MarquesDeAzevedo](https://github.com/MarquesDeAzevedo))
|
||||||
|
* [#8489](https://github.com/openlayers/openlayers/pull/8489) - Use .prototype. only where necessary ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#8478](https://github.com/openlayers/openlayers/pull/8478) - Check font availability with multiple font weights ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#8483](https://github.com/openlayers/openlayers/pull/8483) - Don't create Polygon with null coordinates ([@fredj](https://github.com/fredj))
|
||||||
|
* [#8471](https://github.com/openlayers/openlayers/pull/8471) - Add getUrl and getImageExtent to ImageStatic API ([@samuel-girard](https://github.com/samuel-girard))
|
||||||
|
* [#8470](https://github.com/openlayers/openlayers/pull/8470) - Update Tile loading API docs ([@scroach](https://github.com/scroach))
|
||||||
|
* [#8477](https://github.com/openlayers/openlayers/pull/8477) - Expose original getGutter ([@gberaudo](https://github.com/gberaudo))
|
||||||
|
* [#8466](https://github.com/openlayers/openlayers/pull/8466) - Add onFocusOnly option to interaction defaults ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#8465](https://github.com/openlayers/openlayers/pull/8465) - Do not prevent default on pointermove ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#8461](https://github.com/openlayers/openlayers/pull/8461) - Fix double backtick typo ([@lionralfs](https://github.com/lionralfs))
|
||||||
|
* [#8452](https://github.com/openlayers/openlayers/pull/8452) - Remove extra translate function in Geometry, add missing api tag ([@fredj](https://github.com/fredj))
|
||||||
|
* [#8451](https://github.com/openlayers/openlayers/pull/8451) - Remove unimplemented functions ([@fredj](https://github.com/fredj))
|
||||||
|
* [#8450](https://github.com/openlayers/openlayers/pull/8450) - Mark properties of ReadOptions and WriteOptions as optional ([@fredj](https://github.com/fredj))
|
||||||
|
* [#8443](https://github.com/openlayers/openlayers/pull/8443) - Explicit void ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#8437](https://github.com/openlayers/openlayers/pull/8437) - Avoid shadowing EventTarget ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#8439](https://github.com/openlayers/openlayers/pull/8439) - Fewer dots in types ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#8441](https://github.com/openlayers/openlayers/pull/8441) - Fix loaded script for the example-verbatim examples ([@fredj](https://github.com/fredj))
|
||||||
|
* [#8435](https://github.com/openlayers/openlayers/pull/8435) - Call setCoordinates on the point instance ([@fredj](https://github.com/fredj))
|
||||||
|
* [#8428](https://github.com/openlayers/openlayers/pull/8428) - Type name on same line as type ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#8422](https://github.com/openlayers/openlayers/pull/8422) - Improve JSDoc such that `ng build --prod` with angular/cli 6.0.8 succeeds again ([@jkoelewijn](https://github.com/jkoelewijn))
|
||||||
|
* [#8396](https://github.com/openlayers/openlayers/pull/8396) - Fix ol.interaction.Draw~createRegularPolygon ([@iamplex](https://github.com/iamplex))
|
||||||
|
* [#8420](https://github.com/openlayers/openlayers/pull/8420) - Keep function names when building examples ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#8419](https://github.com/openlayers/openlayers/pull/8419) - Release v5.1.3 ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#8417](https://github.com/openlayers/openlayers/pull/8417) - Minor doc updates ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#8418](https://github.com/openlayers/openlayers/pull/8418) - Set api annotation on classdesc, not constructor ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#8414](https://github.com/openlayers/openlayers/pull/8414) - Updates for 5.1.2 ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#8413](https://github.com/openlayers/openlayers/pull/8413) - Remove extra curly in type ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#8412](https://github.com/openlayers/openlayers/pull/8412) - Changes for 5.1.1. ([@tschaub](https://github.com/tschaub))
|
||||||
|
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Dependency Updates</summary>
|
||||||
|
|
||||||
|
* [#8543](https://github.com/openlayers/openlayers/pull/8543) - Update rollup to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#8541](https://github.com/openlayers/openlayers/pull/8541) - Update proj4 to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#8542](https://github.com/openlayers/openlayers/pull/8542) - Update rollup-plugin-commonjs to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#8533](https://github.com/openlayers/openlayers/pull/8533) - Update webpack to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#8530](https://github.com/openlayers/openlayers/pull/8530) - Update webpack to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#8522](https://github.com/openlayers/openlayers/pull/8522) - Update marked to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#8505](https://github.com/openlayers/openlayers/pull/8505) - Update karma to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#8501](https://github.com/openlayers/openlayers/pull/8501) - Update rollup-plugin-commonjs to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#8495](https://github.com/openlayers/openlayers/pull/8495) - Update rollup to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#8493](https://github.com/openlayers/openlayers/pull/8493) - Update clean-css-cli to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#8491](https://github.com/openlayers/openlayers/pull/8491) - Update rollup to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#8486](https://github.com/openlayers/openlayers/pull/8486) - Update webpack to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#8476](https://github.com/openlayers/openlayers/pull/8476) - Update webpack to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#8475](https://github.com/openlayers/openlayers/pull/8475) - Update clean-css-cli to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#8469](https://github.com/openlayers/openlayers/pull/8469) - Update rollup to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#8453](https://github.com/openlayers/openlayers/pull/8453) - Update webpack to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#8447](https://github.com/openlayers/openlayers/pull/8447) - Update rollup-plugin-commonjs to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#8426](https://github.com/openlayers/openlayers/pull/8426) - Update webpack to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
|
||||||
|
|
||||||
|
</details>
|
||||||
217
changelog/v5.3.0.md
Normal file
217
changelog/v5.3.0.md
Normal file
@@ -0,0 +1,217 @@
|
|||||||
|
# v5.3.0
|
||||||
|
|
||||||
|
We're continuing to work toward more complete type checking with TypeScript – based on JSDoc annotations in the source. The 5.3 release includes a number of bug fixes related to the type checking effort. In addition the release comes with a handful of new features and improved API reference docs.
|
||||||
|
|
||||||
|
### Upgrade Notes
|
||||||
|
|
||||||
|
#### The `getUid` function returns string
|
||||||
|
|
||||||
|
The `getUid` function from the `ol/util` module now returns a string instead of a number.
|
||||||
|
|
||||||
|
#### Attributions are not collapsible for `ol/source/OSM`
|
||||||
|
|
||||||
|
When a map contains a layer from a `ol/source/OSM` source, the `ol/control/Attribution` control will be shown with the `collapsible: false` behavior.
|
||||||
|
|
||||||
|
To get the previous behavior, configure the `ol/control/Attribution` control with `collapsible: true`.
|
||||||
|
|
||||||
|
### New Features and Fixes
|
||||||
|
|
||||||
|
* [#8642](https://github.com/openlayers/openlayers/pull/8642) - Fixes for optional key passing, issue #8067 for tile sources ([@dimin](https://github.com/dimin))
|
||||||
|
* [#8885](https://github.com/openlayers/openlayers/pull/8885) - Move GeolocationProperty into Geolocation ([@fredj](https://github.com/fredj))
|
||||||
|
* [#8881](https://github.com/openlayers/openlayers/pull/8881) - Remove custom styles in drag-and-drop examples ([@fredj](https://github.com/fredj))
|
||||||
|
* [#8877](https://github.com/openlayers/openlayers/pull/8877) - Create context in vector tile layer constructor ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#8883](https://github.com/openlayers/openlayers/pull/8883) - New test runner ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#8882](https://github.com/openlayers/openlayers/pull/8882) - Import simplification ([@fredj](https://github.com/fredj))
|
||||||
|
* [#8858](https://github.com/openlayers/openlayers/pull/8858) - Add condition for viewParams and TypeScript related option ([@webgeodatavore](https://github.com/webgeodatavore))
|
||||||
|
* [#8879](https://github.com/openlayers/openlayers/pull/8879) - Build with CircleCI ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#8878](https://github.com/openlayers/openlayers/pull/8878) - Avoid logging 404 warnings ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#8876](https://github.com/openlayers/openlayers/pull/8876) - Remove RenderType enum from vector tile layer ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#8874](https://github.com/openlayers/openlayers/pull/8874) - Remove unnecessary type casts in canvas layer renderer ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#8869](https://github.com/openlayers/openlayers/pull/8869) - Fix more types for TypeScript ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#8868](https://github.com/openlayers/openlayers/pull/8868) - Throw when calling abstract methods; fix abstract return types ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#8862](https://github.com/openlayers/openlayers/pull/8862) - Legacy build and apidoc improvements ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#8867](https://github.com/openlayers/openlayers/pull/8867) - Fix example builder ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#8852](https://github.com/openlayers/openlayers/pull/8852) - Improve link handling in API docs ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#8853](https://github.com/openlayers/openlayers/pull/8853) - Make rendercomplete work with vector sources without loader ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#8851](https://github.com/openlayers/openlayers/pull/8851) - Use typescript types for RBush ([@fredj](https://github.com/fredj))
|
||||||
|
* [#8850](https://github.com/openlayers/openlayers/pull/8850) - Remove old TODO in ol/Graticule ([@fredj](https://github.com/fredj))
|
||||||
|
* [#8847](https://github.com/openlayers/openlayers/pull/8847) - Fix API docs ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#8845](https://github.com/openlayers/openlayers/pull/8845) - Remove RenderType enum from vector layer ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#8843](https://github.com/openlayers/openlayers/pull/8843) - Fix ts typing for fullscreen button ([@tonio](https://github.com/tonio))
|
||||||
|
* [#8841](https://github.com/openlayers/openlayers/pull/8841) - Use super.method instead of prototype.method.call ([@fredj](https://github.com/fredj))
|
||||||
|
* [#8842](https://github.com/openlayers/openlayers/pull/8842) - Change target type from Element to HTMLElement ([@fredj](https://github.com/fredj))
|
||||||
|
* [#8840](https://github.com/openlayers/openlayers/pull/8840) - Remove unneeded code in VectorTile renderer ([@elemoine](https://github.com/elemoine))
|
||||||
|
* [#8844](https://github.com/openlayers/openlayers/pull/8844) - Set crossOrigin to anonymous in mapbox-streets-v6-style ([@elemoine](https://github.com/elemoine))
|
||||||
|
* [#8776](https://github.com/openlayers/openlayers/pull/8776) - Use setTimeout without the window namespace ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#8837](https://github.com/openlayers/openlayers/pull/8837) - Re-export MousePosition from ol/control ([@fredj](https://github.com/fredj))
|
||||||
|
* [#8832](https://github.com/openlayers/openlayers/pull/8832) - Remove source foreachfeatureatcoordinate from ol/renderer/webgl/ImageLayer ([@fredj](https://github.com/fredj))
|
||||||
|
* [#8833](https://github.com/openlayers/openlayers/pull/8833) - Fix wrong filename in type annotation ([@fredj](https://github.com/fredj))
|
||||||
|
* [#8827](https://github.com/openlayers/openlayers/pull/8827) - Removed unused forEachFeatureAtCoordinate from ol/source/Source ([@schmidtk](https://github.com/schmidtk))
|
||||||
|
* [#8830](https://github.com/openlayers/openlayers/pull/8830) - Type annotation fixes in ol/control/ ([@fredj](https://github.com/fredj))
|
||||||
|
* [#8829](https://github.com/openlayers/openlayers/pull/8829) - Change getUid return type from number to string ([@fredj](https://github.com/fredj))
|
||||||
|
* [#8825](https://github.com/openlayers/openlayers/pull/8825) - Fix TypeScript errors ([@schmidtk](https://github.com/schmidtk))
|
||||||
|
* [#8828](https://github.com/openlayers/openlayers/pull/8828) - Re-export VectorTile from ol/source ([@elemoine](https://github.com/elemoine))
|
||||||
|
* [#8806](https://github.com/openlayers/openlayers/pull/8806) - Preserve button class name list in full screen control on toggle ([@notnotse](https://github.com/notnotse))
|
||||||
|
* [#8817](https://github.com/openlayers/openlayers/pull/8817) - Clarify format option for ol/source/WMTS ([@romanzoller](https://github.com/romanzoller))
|
||||||
|
* [#8824](https://github.com/openlayers/openlayers/pull/8824) - Fix TypeScript errors in ol/format/GML ([@schmidtk](https://github.com/schmidtk))
|
||||||
|
* [#8820](https://github.com/openlayers/openlayers/pull/8820) - Polygon intersectsExtent failure - Issue #8795 ([@hmdavidjunior](https://github.com/hmdavidjunior))
|
||||||
|
* [#8519](https://github.com/openlayers/openlayers/pull/8519) - GML Format Improvements #8516 #8517 #8518 ([@NielsCharlier](https://github.com/NielsCharlier))
|
||||||
|
* [#8711](https://github.com/openlayers/openlayers/pull/8711) - Fix TypeScript errors in ol/format/GML ([@schmidtk](https://github.com/schmidtk))
|
||||||
|
* [#8818](https://github.com/openlayers/openlayers/pull/8818) - Fix the way zoom comes from ([@cs09g](https://github.com/cs09g))
|
||||||
|
* [#8804](https://github.com/openlayers/openlayers/pull/8804) - Add possibility to disable collapsible attributions from Source ([@notnotse](https://github.com/notnotse))
|
||||||
|
* [#8787](https://github.com/openlayers/openlayers/pull/8787) - Replace instanceof checks with other logic ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#8808](https://github.com/openlayers/openlayers/pull/8808) - Fix format and version properties in ol/source/WMTS Options typedef ([@fredj](https://github.com/fredj))
|
||||||
|
* [#8812](https://github.com/openlayers/openlayers/pull/8812) - Update snap.js ([@rosedo](https://github.com/rosedo))
|
||||||
|
* [#8809](https://github.com/openlayers/openlayers/pull/8809) - Configurable interval options ([@notnotse](https://github.com/notnotse))
|
||||||
|
* [#8798](https://github.com/openlayers/openlayers/pull/8798) - Use unpkg.com instead of rawgit.com ([@fredj](https://github.com/fredj))
|
||||||
|
* [#8805](https://github.com/openlayers/openlayers/pull/8805) - Do not draw image with width or height < 0.5 ([@notnotse](https://github.com/notnotse))
|
||||||
|
* [#8803](https://github.com/openlayers/openlayers/pull/8803) - Handle zoom slider position with floating point numbers ([@notnotse](https://github.com/notnotse))
|
||||||
|
* [#8789](https://github.com/openlayers/openlayers/pull/8789) - Spelling and indentation fixes ([@fredj](https://github.com/fredj))
|
||||||
|
* [#8782](https://github.com/openlayers/openlayers/pull/8782) - Fix getSimplifiedGeometry definition ([@wallw-bits](https://github.com/wallw-bits))
|
||||||
|
* [#8783](https://github.com/openlayers/openlayers/pull/8783) - Fix missing method declaration ([@wallw-bits](https://github.com/wallw-bits))
|
||||||
|
* [#8781](https://github.com/openlayers/openlayers/pull/8781) - Fix type check errors ([@schmidtk](https://github.com/schmidtk))
|
||||||
|
* [#8779](https://github.com/openlayers/openlayers/pull/8779) - Fix additional type check errors ([@schmidtk](https://github.com/schmidtk))
|
||||||
|
* [#8753](https://github.com/openlayers/openlayers/pull/8753) - Fix type check in ol/PluggableMap.js ([@wallw-bits](https://github.com/wallw-bits))
|
||||||
|
* [#8762](https://github.com/openlayers/openlayers/pull/8762) - Fix type errors from interaction event handlers ([@schmidtk](https://github.com/schmidtk))
|
||||||
|
* [#8763](https://github.com/openlayers/openlayers/pull/8763) - Fix type check for ol/events ([@wallw-bits](https://github.com/wallw-bits))
|
||||||
|
* [#8774](https://github.com/openlayers/openlayers/pull/8774) - Fix type check errors in ol/renderer/webgl ([@schmidtk](https://github.com/schmidtk))
|
||||||
|
* [#8768](https://github.com/openlayers/openlayers/pull/8768) - Fix type check errors in ol/interaction/Select ([@schmidtk](https://github.com/schmidtk))
|
||||||
|
* [#8764](https://github.com/openlayers/openlayers/pull/8764) - Fix TypeScript errors in ol/interaction/Draw ([@schmidtk](https://github.com/schmidtk))
|
||||||
|
* [#8767](https://github.com/openlayers/openlayers/pull/8767) - Fix type check errors in ol/interaction/Modify ([@schmidtk](https://github.com/schmidtk))
|
||||||
|
* [#8773](https://github.com/openlayers/openlayers/pull/8773) - Fix type check errors in ol/renderer/canvas ([@schmidtk](https://github.com/schmidtk))
|
||||||
|
* [#8769](https://github.com/openlayers/openlayers/pull/8769) - Fix type check errors in ol/render/canvas ([@schmidtk](https://github.com/schmidtk))
|
||||||
|
* [#8770](https://github.com/openlayers/openlayers/pull/8770) - Fix type check errors in ol/render/webgl ([@schmidtk](https://github.com/schmidtk))
|
||||||
|
* [#8765](https://github.com/openlayers/openlayers/pull/8765) - Simplify logic for fixed tile url functions ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#8766](https://github.com/openlayers/openlayers/pull/8766) - Use FeatureLike typedef ([@fredj](https://github.com/fredj))
|
||||||
|
* [#8739](https://github.com/openlayers/openlayers/pull/8739) - Fix TypeScript errors in ol/format/WMSGetFeatureInfo ([@schmidtk](https://github.com/schmidtk))
|
||||||
|
* [#8666](https://github.com/openlayers/openlayers/pull/8666) - Fix condition TypeScript errors ([@schmidtk](https://github.com/schmidtk))
|
||||||
|
* [#8757](https://github.com/openlayers/openlayers/pull/8757) - Use typeof to simplify JSDoc class types ([@schmidtk](https://github.com/schmidtk))
|
||||||
|
* [#8759](https://github.com/openlayers/openlayers/pull/8759) - Use es6 class inheritance in examples ([@fredj](https://github.com/fredj))
|
||||||
|
* [#8761](https://github.com/openlayers/openlayers/pull/8761) - Allow returning RenderFeature in ol/format/Feature ([@schmidtk](https://github.com/schmidtk))
|
||||||
|
* [#8758](https://github.com/openlayers/openlayers/pull/8758) - Fix TS error and prevent extra string conversion ([@schmidtk](https://github.com/schmidtk))
|
||||||
|
* [#8736](https://github.com/openlayers/openlayers/pull/8736) - Typescript misc fixes ([@fredj](https://github.com/fredj))
|
||||||
|
* [#8741](https://github.com/openlayers/openlayers/pull/8741) - Fix TypeScript errors in ol/geom/* ([@schmidtk](https://github.com/schmidtk))
|
||||||
|
* [#8707](https://github.com/openlayers/openlayers/pull/8707) - Fix TypeScript errors in ol/format/Feature ([@schmidtk](https://github.com/schmidtk))
|
||||||
|
* [#8754](https://github.com/openlayers/openlayers/pull/8754) - Fix type check in ol/math ([@wallw-bits](https://github.com/wallw-bits))
|
||||||
|
* [#8747](https://github.com/openlayers/openlayers/pull/8747) - Update doc/faq.md ([@fredj](https://github.com/fredj))
|
||||||
|
* [#8744](https://github.com/openlayers/openlayers/pull/8744) - Fix type checks in VectorTileSource ([@wallw-bits](https://github.com/wallw-bits))
|
||||||
|
* [#8740](https://github.com/openlayers/openlayers/pull/8740) - Increase linestring textalign test tolerance to be Firefox compliant. ([@benVigie](https://github.com/benVigie))
|
||||||
|
* [#8738](https://github.com/openlayers/openlayers/pull/8738) - Cast to parent type to fix TS errors ([@schmidtk](https://github.com/schmidtk))
|
||||||
|
* [#8737](https://github.com/openlayers/openlayers/pull/8737) - Flag optional param to fix TS error ([@schmidtk](https://github.com/schmidtk))
|
||||||
|
* [#8742](https://github.com/openlayers/openlayers/pull/8742) - Fix type checks in Vector source ([@wallw-bits](https://github.com/wallw-bits))
|
||||||
|
* [#8743](https://github.com/openlayers/openlayers/pull/8743) - Fix type check in Raster source ([@wallw-bits](https://github.com/wallw-bits))
|
||||||
|
* [#8733](https://github.com/openlayers/openlayers/pull/8733) - Fix TypeScript errors in ol/format/WFS ([@schmidtk](https://github.com/schmidtk))
|
||||||
|
* [#8735](https://github.com/openlayers/openlayers/pull/8735) - Fix TypeScript errors in ol/format/WKT ([@schmidtk](https://github.com/schmidtk))
|
||||||
|
* [#8730](https://github.com/openlayers/openlayers/pull/8730) - Fix TypeScript errors in ol/format/KML ([@schmidtk](https://github.com/schmidtk))
|
||||||
|
* [#8732](https://github.com/openlayers/openlayers/pull/8732) - Fix type check in ol/source/Tile ([@wallw-bits](https://github.com/wallw-bits))
|
||||||
|
* [#8731](https://github.com/openlayers/openlayers/pull/8731) - Dispatch a GeolocationError in Geolocation ([@fredj](https://github.com/fredj))
|
||||||
|
* [#8729](https://github.com/openlayers/openlayers/pull/8729) - Move functions out of the PointerEvent class ([@fredj](https://github.com/fredj))
|
||||||
|
* [#8724](https://github.com/openlayers/openlayers/pull/8724) - Typescript misc fixes ([@fredj](https://github.com/fredj))
|
||||||
|
* [#8717](https://github.com/openlayers/openlayers/pull/8717) - Fix type checks in TileArcGISRest ([@fredj](https://github.com/fredj))
|
||||||
|
* [#8718](https://github.com/openlayers/openlayers/pull/8718) - Fix TypeScript errors in ol/format/GPX ([@schmidtk](https://github.com/schmidtk))
|
||||||
|
* [#8706](https://github.com/openlayers/openlayers/pull/8706) - Use EsriJSON types from @types/arcgis-rest-api ([@schmidtk](https://github.com/schmidtk))
|
||||||
|
* [#8709](https://github.com/openlayers/openlayers/pull/8709) - Fix TypeScript errors in ol/format/GeoJSON ([@schmidtk](https://github.com/schmidtk))
|
||||||
|
* [#8708](https://github.com/openlayers/openlayers/pull/8708) - Fix type checks in ImageCanvas source ([@wallw-bits](https://github.com/wallw-bits))
|
||||||
|
* [#8710](https://github.com/openlayers/openlayers/pull/8710) - Fix type checks in ImageArcGISRest ([@wallw-bits](https://github.com/wallw-bits))
|
||||||
|
* [#8698](https://github.com/openlayers/openlayers/pull/8698) - Fix zoom slider events ([@intouch-smartwater](https://github.com/intouch-smartwater))
|
||||||
|
* [#8697](https://github.com/openlayers/openlayers/pull/8697) - Remove unused properties from Cluster and Image options ([@fredj](https://github.com/fredj))
|
||||||
|
* [#8688](https://github.com/openlayers/openlayers/pull/8688) - Fix PointerEventHandler event type ([@fredj](https://github.com/fredj))
|
||||||
|
* [#8686](https://github.com/openlayers/openlayers/pull/8686) - Remove extra imports in jsdoc ([@fredj](https://github.com/fredj))
|
||||||
|
* [#8681](https://github.com/openlayers/openlayers/pull/8681) - Check the type of the source before using it ([@wallw-bits](https://github.com/wallw-bits))
|
||||||
|
* [#8691](https://github.com/openlayers/openlayers/pull/8691) - Fix assertion error documentation URL ([@romanzoller](https://github.com/romanzoller))
|
||||||
|
* [#8692](https://github.com/openlayers/openlayers/pull/8692) - Type check fixes for Cluster source ([@wallw-bits](https://github.com/wallw-bits))
|
||||||
|
* [#8677](https://github.com/openlayers/openlayers/pull/8677) - Type check fixes for VectorSource ([@wallw-bits](https://github.com/wallw-bits))
|
||||||
|
* [#8684](https://github.com/openlayers/openlayers/pull/8684) - Define BingMapsImageryMetadataResponse type ([@wallw-bits](https://github.com/wallw-bits))
|
||||||
|
* [#8690](https://github.com/openlayers/openlayers/pull/8690) - Fix type checks in CartoDB ([@wallw-bits](https://github.com/wallw-bits))
|
||||||
|
* [#8693](https://github.com/openlayers/openlayers/pull/8693) - Fix type check errors for Image source ([@wallw-bits](https://github.com/wallw-bits))
|
||||||
|
* [#8672](https://github.com/openlayers/openlayers/pull/8672) - Fix source type in Raster source ([@fredj](https://github.com/fredj))
|
||||||
|
* [#8665](https://github.com/openlayers/openlayers/pull/8665) - Fix type check errors in RBush ([@wallw-bits](https://github.com/wallw-bits))
|
||||||
|
* [#8680](https://github.com/openlayers/openlayers/pull/8680) - TypeScript fixes for ol/events ([@schmidtk](https://github.com/schmidtk))
|
||||||
|
* [#8678](https://github.com/openlayers/openlayers/pull/8678) - Ensure image is Image or Video before settings src ([@wallw-bits](https://github.com/wallw-bits))
|
||||||
|
* [#8676](https://github.com/openlayers/openlayers/pull/8676) - Cast tileGrid to WMTSTileGrid for type check ([@wallw-bits](https://github.com/wallw-bits))
|
||||||
|
* [#8679](https://github.com/openlayers/openlayers/pull/8679) - Type check fixes in Triangulation ([@wallw-bits](https://github.com/wallw-bits))
|
||||||
|
* [#8657](https://github.com/openlayers/openlayers/pull/8657) - Typescript fixes ([@fgravin](https://github.com/fgravin))
|
||||||
|
* [#8671](https://github.com/openlayers/openlayers/pull/8671) - Fix typescript in FeatureLoader ([@fgravin](https://github.com/fgravin))
|
||||||
|
* [#8675](https://github.com/openlayers/openlayers/pull/8675) - Get width as number from number|Size ([@wallw-bits](https://github.com/wallw-bits))
|
||||||
|
* [#8654](https://github.com/openlayers/openlayers/pull/8654) - Remove extra imports in jsdoc ([@fredj](https://github.com/fredj))
|
||||||
|
* [#8655](https://github.com/openlayers/openlayers/pull/8655) - Remove webkit specific properties from Touch ([@fredj](https://github.com/fredj))
|
||||||
|
* [#8663](https://github.com/openlayers/openlayers/pull/8663) - Add vendor-specific TS declarations for the Fullscreen API. ([@schmidtk](https://github.com/schmidtk))
|
||||||
|
* [#8658](https://github.com/openlayers/openlayers/pull/8658) - Don't define functions in the prototype ([@fredj](https://github.com/fredj))
|
||||||
|
* [#8662](https://github.com/openlayers/openlayers/pull/8662) - Explicitly define type of 'this' ([@wallw-bits](https://github.com/wallw-bits))
|
||||||
|
* [#8664](https://github.com/openlayers/openlayers/pull/8664) - Add native Event to ListenerFunction signature. ([@schmidtk](https://github.com/schmidtk))
|
||||||
|
* [#8668](https://github.com/openlayers/openlayers/pull/8668) - Add missing 'module' annotation ([@fredj](https://github.com/fredj))
|
||||||
|
* [#8643](https://github.com/openlayers/openlayers/pull/8643) - Fix style TypeScript errors ([@schmidtk](https://github.com/schmidtk))
|
||||||
|
* [#8638](https://github.com/openlayers/openlayers/pull/8638) - Fix event type in hasListener check ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#8618](https://github.com/openlayers/openlayers/pull/8618) - Use TopoJSON types from @types/topojson ([@fredj](https://github.com/fredj))
|
||||||
|
* [#8619](https://github.com/openlayers/openlayers/pull/8619) - Remove wrong Geometry type in KML format ([@fredj](https://github.com/fredj))
|
||||||
|
* [#8627](https://github.com/openlayers/openlayers/pull/8627) - Fix several type imports ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#8629](https://github.com/openlayers/openlayers/pull/8629) - Enable circle primitive in draw-shapes example ([@megawac](https://github.com/megawac))
|
||||||
|
* [#8626](https://github.com/openlayers/openlayers/pull/8626) - Better type annotations / type casts ([@marcjansen](https://github.com/marcjansen))
|
||||||
|
* [#8622](https://github.com/openlayers/openlayers/pull/8622) - Remove unused method ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#8615](https://github.com/openlayers/openlayers/pull/8615) - Use GeoJSON types from @types/geojson ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#8609](https://github.com/openlayers/openlayers/pull/8609) - Remove extra imports in jsdoc ([@fredj](https://github.com/fredj))
|
||||||
|
* [#8613](https://github.com/openlayers/openlayers/pull/8613) - Lazily detect tainted canvas ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#8610](https://github.com/openlayers/openlayers/pull/8610) - Sensible touch behavior of the MousePosition control ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#8602](https://github.com/openlayers/openlayers/pull/8602) - Add missing map property in ol/layer/Layer constructor options ([@fredj](https://github.com/fredj))
|
||||||
|
* [#8607](https://github.com/openlayers/openlayers/pull/8607) - Listener return is boolean or void ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#8595](https://github.com/openlayers/openlayers/pull/8595) - Optional arguments and typedef properties ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#8594](https://github.com/openlayers/openlayers/pull/8594) - Remove extra imports in jsdoc ([@fredj](https://github.com/fredj))
|
||||||
|
* [#8596](https://github.com/openlayers/openlayers/pull/8596) - Add types for the UTFGrid and TileJSON JSON responses ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#8591](https://github.com/openlayers/openlayers/pull/8591) - Add missing properties in TextState typedef ([@fredj](https://github.com/fredj))
|
||||||
|
* [#8590](https://github.com/openlayers/openlayers/pull/8590) - Don't import ourselves ([@fredj](https://github.com/fredj))
|
||||||
|
* [#8586](https://github.com/openlayers/openlayers/pull/8586) - Cast 'originalEvent' in interactions ([@fredj](https://github.com/fredj))
|
||||||
|
* [#8588](https://github.com/openlayers/openlayers/pull/8588) - Rework createXYZ ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#8587](https://github.com/openlayers/openlayers/pull/8587) - Add a statement to trigger TypeScript checking ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#8345](https://github.com/openlayers/openlayers/pull/8345) - TypeScript (1/n) ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#8579](https://github.com/openlayers/openlayers/pull/8579) - Better type annotation ([@marcjansen](https://github.com/marcjansen))
|
||||||
|
* [#8580](https://github.com/openlayers/openlayers/pull/8580) - Cast POINTER_ID before comparison ([@marcjansen](https://github.com/marcjansen))
|
||||||
|
* [#8574](https://github.com/openlayers/openlayers/pull/8574) - Rename Extent to ExtentInteraction ([@fredj](https://github.com/fredj))
|
||||||
|
* [#8577](https://github.com/openlayers/openlayers/pull/8577) - Remove geojson.js extern inclusion in tasks/generate-info ([@fredj](https://github.com/fredj))
|
||||||
|
* [#8573](https://github.com/openlayers/openlayers/pull/8573) - Fix freehand polygon drawing ([@fredj](https://github.com/fredj))
|
||||||
|
* [#8572](https://github.com/openlayers/openlayers/pull/8572) - typescript misc fixes ([@fredj](https://github.com/fredj))
|
||||||
|
* [#8569](https://github.com/openlayers/openlayers/pull/8569) - Make proj~get simpler and faster ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#8567](https://github.com/openlayers/openlayers/pull/8567) - Use 'Element' type instead of 'Node' ([@fredj](https://github.com/fredj))
|
||||||
|
* [#8558](https://github.com/openlayers/openlayers/pull/8558) - Fix default zIndex value and documentation for layer options ([@fredj](https://github.com/fredj))
|
||||||
|
* [#8555](https://github.com/openlayers/openlayers/pull/8555) - Do not minify examples that inject code into workers ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#8557](https://github.com/openlayers/openlayers/pull/8557) - Fix typo in release notes ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Dependency Updates</summary>
|
||||||
|
|
||||||
|
* [#8884](https://github.com/openlayers/openlayers/pull/8884) - Update webpack to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#8880](https://github.com/openlayers/openlayers/pull/8880) - Update webpack to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#8872](https://github.com/openlayers/openlayers/pull/8872) - Update webpack to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#8860](https://github.com/openlayers/openlayers/pull/8860) - Update webpack to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#8855](https://github.com/openlayers/openlayers/pull/8855) - Update webpack to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#8838](https://github.com/openlayers/openlayers/pull/8838) - Update webpack to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#8834](https://github.com/openlayers/openlayers/pull/8834) - Update webpack to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#8799](https://github.com/openlayers/openlayers/pull/8799) - Update rollup to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#8796](https://github.com/openlayers/openlayers/pull/8796) - Update rollup-plugin-commonjs to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#8793](https://github.com/openlayers/openlayers/pull/8793) - Update rollup-plugin-buble to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#8794](https://github.com/openlayers/openlayers/pull/8794) - Update rollup to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#8788](https://github.com/openlayers/openlayers/pull/8788) - Update front-matter to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#8785](https://github.com/openlayers/openlayers/pull/8785) - chore(package): update rollup to version 0.66.4 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#8719](https://github.com/openlayers/openlayers/pull/8719) - Update marked to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#8714](https://github.com/openlayers/openlayers/pull/8714) - chore(package): update webpack to version 4.20.2 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#8703](https://github.com/openlayers/openlayers/pull/8703) - Update webpack to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#8646](https://github.com/openlayers/openlayers/pull/8646) - Update mustache to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#8645](https://github.com/openlayers/openlayers/pull/8645) - Update rollup-plugin-uglify to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#8685](https://github.com/openlayers/openlayers/pull/8685) - Update rollup to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#8683](https://github.com/openlayers/openlayers/pull/8683) - Update rollup to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#8656](https://github.com/openlayers/openlayers/pull/8656) - chore(package): update rollup-plugin-commonjs to version 9.1.8 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#8667](https://github.com/openlayers/openlayers/pull/8667) - chore(package): update uglifyjs-webpack-plugin to version 2.0.1 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#8661](https://github.com/openlayers/openlayers/pull/8661) - Update webpack to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#8644](https://github.com/openlayers/openlayers/pull/8644) - Update rollup to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#8631](https://github.com/openlayers/openlayers/pull/8631) - Update webpack to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#8630](https://github.com/openlayers/openlayers/pull/8630) - Update webpack to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#8617](https://github.com/openlayers/openlayers/pull/8617) - chore(package): update webpack to version 4.18.0 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#8589](https://github.com/openlayers/openlayers/pull/8589) - Update rollup to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#8581](https://github.com/openlayers/openlayers/pull/8581) - Update rollup-plugin-node-resolve to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#8585](https://github.com/openlayers/openlayers/pull/8585) - Update rollup to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#8578](https://github.com/openlayers/openlayers/pull/8578) - Update webpack to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#8563](https://github.com/openlayers/openlayers/pull/8563) - Update rollup-plugin-uglify to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#8561](https://github.com/openlayers/openlayers/pull/8561) - Update rollup-plugin-uglify to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
|
||||||
|
|
||||||
|
</details>
|
||||||
@@ -7,22 +7,23 @@
|
|||||||
"allowUnknownTags": true
|
"allowUnknownTags": true
|
||||||
},
|
},
|
||||||
"source": {
|
"source": {
|
||||||
"includePattern": ".+\\.js(doc)?$",
|
"includePattern": ".+\\.js$",
|
||||||
"excludePattern": "(^|\\/|\\\\)_",
|
"excludePattern": "(^|\\/|\\\\)_",
|
||||||
"include": [
|
"include": [
|
||||||
"src/ol"
|
"src/ol"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"plugins": [
|
"plugins": [
|
||||||
"plugins/markdown",
|
"config/jsdoc/api/plugins/markdown",
|
||||||
"config/jsdoc/api/plugins/normalize-exports",
|
"jsdoc-plugin-typescript",
|
||||||
"config/jsdoc/api/plugins/inline-options",
|
"config/jsdoc/api/plugins/inline-options",
|
||||||
|
"config/jsdoc/api/plugins/inheritdoc",
|
||||||
"config/jsdoc/api/plugins/events",
|
"config/jsdoc/api/plugins/events",
|
||||||
"config/jsdoc/api/plugins/observable",
|
"config/jsdoc/api/plugins/observable",
|
||||||
"config/jsdoc/api/plugins/api"
|
"config/jsdoc/api/plugins/api"
|
||||||
],
|
],
|
||||||
"markdown": {
|
"typescript": {
|
||||||
"parser": "gfm"
|
"moduleRoot": "src"
|
||||||
},
|
},
|
||||||
"templates": {
|
"templates": {
|
||||||
"cleverLinks": true,
|
"cleverLinks": true,
|
||||||
|
|||||||
@@ -8,10 +8,10 @@
|
|||||||
<td><p>The view manages the visual parameters of the map view, like resolution or rotation.</p>
|
<td><p>The view manages the visual parameters of the map view, like resolution or rotation.</p>
|
||||||
[View](module-ol_View-View.html) with center, projection, resolution and rotation</td>
|
[View](module-ol_View-View.html) with center, projection, resolution and rotation</td>
|
||||||
<td><p>Layers are lightweight containers that get their data from [sources](module-ol_source_Source-Source.html).</p>
|
<td><p>Layers are lightweight containers that get their data from [sources](module-ol_source_Source-Source.html).</p>
|
||||||
[layer/Tile](module-ol_layer_Tile-TileLayer.html)<br>
|
[ol/layer/Tile](module-ol_layer_Tile-TileLayer.html)<br>
|
||||||
[layer/Image](module-ol_layer_Image-ImageLayer.html)<br>
|
[ol/layer/Image](module-ol_layer_Image-ImageLayer.html)<br>
|
||||||
[layer/Vector](module-ol_layer_Vector-VectorLayer.html)<br>
|
[ol/layer/Vector](module-ol_layer_Vector-VectorLayer.html)<br>
|
||||||
[layer/VectorTile](module-ol_layer_VectorTile-VectorTileLayer.html)</td>
|
[ol/layer/VectorTile](module-ol_layer_VectorTile-VectorTileLayer.html)</td>
|
||||||
</tr><tr>
|
</tr><tr>
|
||||||
<th>Controls</th><th>Interactions</th><th>Sources and formats</th>
|
<th>Controls</th><th>Interactions</th><th>Sources and formats</th>
|
||||||
</tr><tr>
|
</tr><tr>
|
||||||
@@ -21,20 +21,20 @@
|
|||||||
<td>
|
<td>
|
||||||
[Map default interactions](module-ol_interaction.html#~defaults)<br>
|
[Map default interactions](module-ol_interaction.html#~defaults)<br>
|
||||||
Interactions for [vector features](module-ol_Feature-Feature.html)
|
Interactions for [vector features](module-ol_Feature-Feature.html)
|
||||||
<ul><li>[interaction/Select](module-ol_interaction_Select-Select.html)</li>
|
<ul><li>[ol/interaction/Select](module-ol_interaction_Select-Select.html)</li>
|
||||||
<li>[interaction/Draw](module-ol_interaction_Draw-Draw.html)</li>
|
<li>[ol/interaction/Draw](module-ol_interaction_Draw-Draw.html)</li>
|
||||||
<li>[interaction/Modify](module-ol_interaction_Modify-Modify.html)</li></ul>
|
<li>[ol/interaction/Modify](module-ol_interaction_Modify-Modify.html)</li></ul>
|
||||||
[All interactions](module-ol_interaction_Interaction-Interaction.html)</td>
|
[All interactions](module-ol_interaction_Interaction-Interaction.html)</td>
|
||||||
<td>[Tile sources](module-ol_source_Tile-TileSource.html) for [layer/Tile](module-ol_layer_Tile-TileLayer.html)
|
<td>[Tile sources](module-ol_source_Tile-TileSource.html) for [ol/layer/Tile](module-ol_layer_Tile-TileLayer.html)
|
||||||
<br>[Image sources](module-ol_source_Image-ImageSource.html) for [layer/Image](module-ol_layer_Image-ImageLayer.html)
|
<br>[Image sources](module-ol_source_Image-ImageSource.html) for [ol/layer/Image](module-ol_layer_Image-ImageLayer.html)
|
||||||
<br>[Vector sources](module-ol_source_Vector-VectorSource.html) for [layer/Vector](module-ol_layer_Vector-VectorLayer.html)
|
<br>[Vector sources](module-ol_source_Vector-VectorSource.html) for [ol/layer/Vector](module-ol_layer_Vector-VectorLayer.html)
|
||||||
<br>[Vector tile sources](module-ol_source_VectorTile-VectorTile.html) for [layer/VectorTile](module-ol_layer_VectorTile-VectorTileLayer.html)
|
<br>[Vector tile sources](module-ol_source_VectorTile-VectorTile.html) for [ol/layer/VectorTile](module-ol_layer_VectorTile-VectorTileLayer.html)
|
||||||
<br>[Formats](module-ol_format_Feature-FeatureFormat.html) for reading/writing vector data
|
<br>[Formats](module-ol_format_Feature-FeatureFormat.html) for reading/writing vector data
|
||||||
<br>[format/WMSCapabilities](module-ol_format_WMSCapabilities-WMSCapabilities.html)</td></tr>
|
<br>[ol/format/WMSCapabilities](module-ol_format_WMSCapabilities-WMSCapabilities.html)</td></tr>
|
||||||
<tr><th>Projections</th><th>Observable objects</th><th>Other components</th></tr>
|
<tr><th>Projections</th><th>Observable objects</th><th>Other components</th></tr>
|
||||||
<tr><td><p>All coordinates and extents need to be provided in view projection (default: EPSG:3857). To transform, use [proj.transform()](module-ol_proj.html#.transform) and [proj.transformExtent()](module-ol_proj.html#.transformExtent).</p>
|
<tr><td><p>All coordinates and extents need to be provided in view projection (default: EPSG:3857). To transform, use [ol/proj#transform()](module-ol_proj.html#.transform) and [ol/proj#transformExtent()](module-ol_proj.html#.transformExtent).</p>
|
||||||
[ol/proj](module-ol_proj.html)</td>
|
[ol/proj](module-ol_proj.html)</td>
|
||||||
<td><p>Changes to all [ol/Object](module-ol_Object-BaseObject.html)s can be observed by calling the [object.on('propertychange')](module-ol_Object-BaseObject.html#on) method. Listeners receive an [ol/Object~ObjectEvent](module-ol_Object-ObjectEvent.html) with information on the changed property and old value.</p>
|
<td><p>Changes to all [ol/Object](module-ol_Object-BaseObject.html)s can be observed by calling the [object.on('propertychange')](module-ol_Object-BaseObject.html#on) method. Listeners receive an [ol/Object.ObjectEvent](module-ol_Object-ObjectEvent.html) with information on the changed property and old value.</p>
|
||||||
<td>
|
<td>
|
||||||
[ol/Geolocation](module-ol_Geolocation.html)<br>
|
[ol/Geolocation](module-ol_Geolocation.html)<br>
|
||||||
[ol/Overlay](module-ol_Overlay-Overlay.html)<br></td>
|
[ol/Overlay](module-ol_Overlay-Overlay.html)<br></td>
|
||||||
|
|||||||
@@ -95,17 +95,20 @@ exports.handlers = {
|
|||||||
newDoclet: function(e) {
|
newDoclet: function(e) {
|
||||||
const doclet = e.doclet;
|
const doclet = e.doclet;
|
||||||
if (doclet.stability) {
|
if (doclet.stability) {
|
||||||
modules[doclet.longname.split('~').shift()] = true;
|
modules[doclet.longname.split(/[~\.]/).shift()] = true;
|
||||||
api.push(doclet);
|
api.push(doclet);
|
||||||
}
|
}
|
||||||
// Mark explicity defined namespaces - needed in parseComplete to keep
|
|
||||||
// namespaces that we need as containers for api items.
|
|
||||||
if (/.*\.jsdoc$/.test(doclet.meta.filename) && doclet.kind == 'namespace') {
|
|
||||||
doclet.namespace_ = true;
|
|
||||||
}
|
|
||||||
if (doclet.kind == 'class') {
|
if (doclet.kind == 'class') {
|
||||||
modules[doclet.longname.split('~').shift()] = true;
|
modules[doclet.longname.split(/[~\.]/).shift()] = true;
|
||||||
classes[doclet.longname] = doclet;
|
if (!(doclet.longname in classes)) {
|
||||||
|
classes[doclet.longname] = doclet;
|
||||||
|
} else if ('augments' in doclet) {
|
||||||
|
classes[doclet.longname].augments = doclet.augments;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (doclet.name === doclet.longname && !doclet.memberof) {
|
||||||
|
// Make sure anonymous default exports are documented
|
||||||
|
doclet.setMemberof(doclet.longname);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -113,7 +116,7 @@ exports.handlers = {
|
|||||||
const doclets = e.doclets;
|
const doclets = e.doclets;
|
||||||
for (let i = doclets.length - 1; i >= 0; --i) {
|
for (let i = doclets.length - 1; i >= 0; --i) {
|
||||||
const doclet = doclets[i];
|
const doclet = doclets[i];
|
||||||
if (doclet.stability || doclet.namespace_) {
|
if (doclet.stability) {
|
||||||
if (doclet.kind == 'class') {
|
if (doclet.kind == 'class') {
|
||||||
includeAugments(doclet);
|
includeAugments(doclet);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ exports.handlers = {
|
|||||||
events[cls] = [];
|
events[cls] = [];
|
||||||
}
|
}
|
||||||
events[cls].push(doclet.longname);
|
events[cls].push(doclet.longname);
|
||||||
} else if (doclet.kind == 'class') {
|
} else if (doclet.kind == 'class' && !(doclet.longname in classes)) {
|
||||||
classes[doclet.longname] = doclet;
|
classes[doclet.longname] = doclet;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -29,7 +29,7 @@ exports.handlers = {
|
|||||||
event = doclet.fires[j].replace('event:', '');
|
event = doclet.fires[j].replace('event:', '');
|
||||||
if (events[event]) {
|
if (events[event]) {
|
||||||
fires.push.apply(fires, events[event]);
|
fires.push.apply(fires, events[event]);
|
||||||
} else {
|
} else if (doclet.fires[j] !== 'event:ObjectEvent') {
|
||||||
fires.push(doclet.fires[j]);
|
fires.push(doclet.fires[j]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -40,4 +40,3 @@ exports.handlers = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
109
config/jsdoc/api/plugins/inheritdoc.js
Executable file
109
config/jsdoc/api/plugins/inheritdoc.js
Executable file
@@ -0,0 +1,109 @@
|
|||||||
|
/*
|
||||||
|
* This is a hack to prevent inheritDoc tags from entirely removing
|
||||||
|
* documentation of the method that inherits the documentation.
|
||||||
|
*
|
||||||
|
* TODO: Remove this hack when https://github.com/jsdoc3/jsdoc/issues/53
|
||||||
|
* is addressed.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
exports.defineTags = function(dictionary) {
|
||||||
|
dictionary.defineTag('inheritDoc', {
|
||||||
|
mustHaveValue: false,
|
||||||
|
canHaveType: false,
|
||||||
|
canHaveName: false,
|
||||||
|
onTagged: function(doclet, tag) {
|
||||||
|
doclet.inheritdoc = true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
const lookup = {};
|
||||||
|
const incompleteByClass = {};
|
||||||
|
const keepKeys = ['comment', 'meta', 'name', 'memberof', 'longname', 'augment',
|
||||||
|
'stability'];
|
||||||
|
|
||||||
|
exports.handlers = {
|
||||||
|
|
||||||
|
newDoclet: function(e) {
|
||||||
|
const doclet = e.doclet;
|
||||||
|
let incompletes;
|
||||||
|
if (!(doclet.longname in lookup)) {
|
||||||
|
lookup[doclet.longname] = [];
|
||||||
|
}
|
||||||
|
lookup[doclet.longname].push(doclet);
|
||||||
|
if (doclet.inheritdoc) {
|
||||||
|
if (!(doclet.memberof in incompleteByClass)) {
|
||||||
|
incompleteByClass[doclet.memberof] = [];
|
||||||
|
}
|
||||||
|
incompletes = incompleteByClass[doclet.memberof];
|
||||||
|
if (incompletes.indexOf(doclet.name) == -1) {
|
||||||
|
incompletes.push(doclet.name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
parseComplete: function(e) {
|
||||||
|
let ancestors, candidate, candidates, doclet, i, j, k, l, key;
|
||||||
|
let incompleteDoclet, stability, incomplete, incompletes;
|
||||||
|
const doclets = e.doclets;
|
||||||
|
for (i = doclets.length - 1; i >= 0; --i) {
|
||||||
|
doclet = doclets[i];
|
||||||
|
if (doclet.augments) {
|
||||||
|
ancestors = [].concat(doclet.augments);
|
||||||
|
}
|
||||||
|
incompletes = incompleteByClass[doclet.longname];
|
||||||
|
if (ancestors && incompletes) {
|
||||||
|
// collect ancestors from the whole hierarchy
|
||||||
|
for (j = 0; j < ancestors.length; ++j) {
|
||||||
|
candidates = lookup[ancestors[j]];
|
||||||
|
if (candidates) {
|
||||||
|
for (k = candidates.length - 1; k >= 0; --k) {
|
||||||
|
candidate = candidates[k];
|
||||||
|
if (candidate.augments) {
|
||||||
|
ancestors = ancestors.concat(candidate.augments);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// walk through all inheritDoc members
|
||||||
|
for (j = incompletes.length - 1; j >= 0; --j) {
|
||||||
|
incomplete = incompletes[j];
|
||||||
|
candidates = lookup[doclet.longname + '#' + incomplete];
|
||||||
|
if (candidates) {
|
||||||
|
// get the incomplete doclet that needs to be augmented
|
||||||
|
for (k = candidates.length - 1; k >= 0; --k) {
|
||||||
|
incompleteDoclet = candidates[k];
|
||||||
|
if (incompleteDoclet.inheritdoc) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// find the documented ancestor
|
||||||
|
for (k = ancestors.length - 1; k >= 0; --k) {
|
||||||
|
candidates = lookup[ancestors[k] + '#' + incomplete];
|
||||||
|
if (candidates) {
|
||||||
|
for (l = candidates.length - 1; l >= 0; --l) {
|
||||||
|
candidate = candidates[l];
|
||||||
|
if (candidate && !candidate.inheritdoc) {
|
||||||
|
stability = candidate.stability || incompleteDoclet.stability;
|
||||||
|
if (stability) {
|
||||||
|
incompleteDoclet.stability = stability;
|
||||||
|
for (key in candidate) {
|
||||||
|
if (candidate.hasOwnProperty(key) &&
|
||||||
|
keepKeys.indexOf(key) == -1) {
|
||||||
|
incompleteDoclet[key] = candidate[key];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
111
config/jsdoc/api/plugins/markdown.js
Normal file
111
config/jsdoc/api/plugins/markdown.js
Normal file
@@ -0,0 +1,111 @@
|
|||||||
|
/**
|
||||||
|
* Modified from JSDoc's plugins/markdown and lib/jsdoc/util/markdown modules
|
||||||
|
* (see https://github.com/jsdoc3/jsdoc/), which are licensed under the Apache 2
|
||||||
|
* license (see http://www.apache.org/licenses/LICENSE-2.0).
|
||||||
|
*
|
||||||
|
* This version does not protect http(s) urls from being turned into links, and
|
||||||
|
* works around an issue with `~` characters in module paths by escaping them.
|
||||||
|
*/
|
||||||
|
|
||||||
|
const marked = require('marked');
|
||||||
|
const format = require('util').format;
|
||||||
|
|
||||||
|
const tags = [
|
||||||
|
'author',
|
||||||
|
'classdesc',
|
||||||
|
'description',
|
||||||
|
'exceptions',
|
||||||
|
'params',
|
||||||
|
'properties',
|
||||||
|
'returns',
|
||||||
|
'see',
|
||||||
|
'summary'
|
||||||
|
];
|
||||||
|
|
||||||
|
const hasOwnProp = Object.prototype.hasOwnProperty;
|
||||||
|
|
||||||
|
const markedRenderer = new marked.Renderer();
|
||||||
|
|
||||||
|
// Allow prettyprint to work on inline code samples
|
||||||
|
markedRenderer.code = function(code, language) {
|
||||||
|
const langClass = language ? ' lang-' + language : '';
|
||||||
|
|
||||||
|
return format('<pre class="prettyprint source%s"><code>%s</code></pre>',
|
||||||
|
langClass, escapeCode(code));
|
||||||
|
};
|
||||||
|
|
||||||
|
function escapeCode(source) {
|
||||||
|
return source.replace(/</g, '<')
|
||||||
|
.replace(/"/g, '"')
|
||||||
|
.replace(/'/g, ''');
|
||||||
|
}
|
||||||
|
|
||||||
|
function escapeUnderscoresAndTildes(source) {
|
||||||
|
return source.replace(/\{@[^}\r\n]+\}/g, function(wholeMatch) {
|
||||||
|
return wholeMatch
|
||||||
|
.replace(/(^|[^\\])_/g, '$1\\_')
|
||||||
|
.replace('~', '˜');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function unencodeQuotesAndTildes(source) {
|
||||||
|
return source.replace(/\{@[^}\r\n]+\}/g, function(wholeMatch) {
|
||||||
|
return wholeMatch
|
||||||
|
.replace(/"/g, '"')
|
||||||
|
.replace(/˜/g, '~');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function parse(source) {
|
||||||
|
let result;
|
||||||
|
|
||||||
|
source = escapeUnderscoresAndTildes(source);
|
||||||
|
|
||||||
|
result = marked(source, {renderer: markedRenderer})
|
||||||
|
.replace(/\s+$/, '')
|
||||||
|
.replace(/'/g, '\'');
|
||||||
|
|
||||||
|
result = unencodeQuotesAndTildes(result);
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
function shouldProcessString(tagName, text) {
|
||||||
|
let shouldProcess = true;
|
||||||
|
|
||||||
|
// we only want to process `@author` and `@see` tags that contain Markdown links
|
||||||
|
if ((tagName === 'author' || tagName === 'see') && text.indexOf('[') === -1) {
|
||||||
|
shouldProcess = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return shouldProcess;
|
||||||
|
}
|
||||||
|
|
||||||
|
function process(doclet) {
|
||||||
|
tags.forEach(function(tag) {
|
||||||
|
if (!hasOwnProp.call(doclet, tag)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof doclet[tag] === 'string' && shouldProcessString(tag, doclet[tag])) {
|
||||||
|
doclet[tag] = parse(doclet[tag]);
|
||||||
|
} else if (Array.isArray(doclet[tag])) {
|
||||||
|
doclet[tag].forEach(function(value, index, original) {
|
||||||
|
const inner = {};
|
||||||
|
|
||||||
|
inner[tag] = value;
|
||||||
|
process(inner);
|
||||||
|
original[index] = inner[tag];
|
||||||
|
});
|
||||||
|
} else if (doclet[tag]) {
|
||||||
|
process(doclet[tag]);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
exports.handlers = {
|
||||||
|
newDoclet: function(e) {
|
||||||
|
process(e.doclet);
|
||||||
|
}
|
||||||
|
};
|
||||||
@@ -1,106 +0,0 @@
|
|||||||
/**
|
|
||||||
* @filedesc
|
|
||||||
* Expands module path type to point to default export when no name is given
|
|
||||||
*/
|
|
||||||
|
|
||||||
const fs = require('fs');
|
|
||||||
const path = require('path');
|
|
||||||
|
|
||||||
let moduleRoot;
|
|
||||||
|
|
||||||
function addDefaultExportPath(obj) {
|
|
||||||
if (!Array.isArray(obj)) {
|
|
||||||
obj = obj.names;
|
|
||||||
}
|
|
||||||
obj.forEach((name, index) => {
|
|
||||||
const matches = name.match(/module\:([^>|),\.<]|)+/g);
|
|
||||||
if (matches) {
|
|
||||||
matches.forEach(module => {
|
|
||||||
if (!/[~\.]/.test(module)) {
|
|
||||||
const checkFile = path.resolve(moduleRoot, module.replace(/^module\:/, ''));
|
|
||||||
const file = fs.readFileSync(require.resolve(checkFile), 'utf-8');
|
|
||||||
const lines = file.split('\n');
|
|
||||||
let hasDefaultExport = false;
|
|
||||||
for (let i = 0, ii = lines.length; i < ii; ++i) {
|
|
||||||
hasDefaultExport = hasDefaultExport || /^export default [^\{]/.test(lines[i]);
|
|
||||||
const match = lines[i].match(/^export default ([A-Za-z_$][A-Za-z0-9_$]+);$/);
|
|
||||||
if (match) {
|
|
||||||
// Use variable name if default export is assigned to a variable.
|
|
||||||
obj[index] = name = name.replace(module, `${module}~${match[1]}`);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (hasDefaultExport) {
|
|
||||||
// Duplicate last part if default export is not assigned to a variable.
|
|
||||||
obj[index] = name = name.replace(module, `${module}~${module.split('/').pop()}`);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function replaceLinks(comment) {
|
|
||||||
const matches = comment.match(/\{@link [^\} #]+}/g);
|
|
||||||
if (matches) {
|
|
||||||
const modules = matches.map(m => {
|
|
||||||
const mm = m.match(/(module:[^\}]+)}$/);
|
|
||||||
if (mm) {
|
|
||||||
return mm[1];
|
|
||||||
}
|
|
||||||
}).filter(m => !!m);
|
|
||||||
const newModules = modules.concat();
|
|
||||||
addDefaultExportPath(newModules);
|
|
||||||
modules.forEach((module, i) => {
|
|
||||||
comment = comment.replace(module, newModules[i]);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
return comment;
|
|
||||||
}
|
|
||||||
|
|
||||||
exports.handlers = {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Adds default export to module path types without name
|
|
||||||
* @param {Object} e Event object.
|
|
||||||
*/
|
|
||||||
newDoclet: function(e) {
|
|
||||||
const doclet = e.doclet;
|
|
||||||
if (doclet.kind == 'module') {
|
|
||||||
const levelsUp = doclet.longname.replace(/^module\:/, '').split('/');
|
|
||||||
if (doclet.meta.filename != 'index.js') {
|
|
||||||
levelsUp.pop();
|
|
||||||
}
|
|
||||||
const pathArgs = [doclet.meta.path].concat(levelsUp.map(() => '../'));
|
|
||||||
moduleRoot = path.resolve.apply(null, pathArgs);
|
|
||||||
} else {
|
|
||||||
if (doclet.description) {
|
|
||||||
doclet.description = replaceLinks(doclet.description);
|
|
||||||
}
|
|
||||||
if (doclet.classdesc) {
|
|
||||||
doclet.classdesc = replaceLinks(doclet.classdesc);
|
|
||||||
}
|
|
||||||
|
|
||||||
const module = doclet.longname.split('#').shift();
|
|
||||||
if (module.indexOf('module:') == 0 && module.indexOf('.') !== -1) {
|
|
||||||
doclet.longname = doclet.longname.replace(module, module.replace('.', '~'));
|
|
||||||
}
|
|
||||||
if (doclet.augments) {
|
|
||||||
addDefaultExportPath(doclet.augments);
|
|
||||||
}
|
|
||||||
if (doclet.params) {
|
|
||||||
doclet.params.forEach(p => addDefaultExportPath(p.type));
|
|
||||||
}
|
|
||||||
if (doclet.returns) {
|
|
||||||
doclet.returns.forEach(r => addDefaultExportPath(r.type));
|
|
||||||
}
|
|
||||||
if (doclet.properties) {
|
|
||||||
doclet.properties.forEach(p => addDefaultExportPath(p.type));
|
|
||||||
}
|
|
||||||
if (doclet.type) {
|
|
||||||
addDefaultExportPath(doclet.type);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
};
|
|
||||||
@@ -5,7 +5,7 @@ exports.handlers = {
|
|||||||
|
|
||||||
newDoclet: function(e) {
|
newDoclet: function(e) {
|
||||||
const doclet = e.doclet;
|
const doclet = e.doclet;
|
||||||
if (doclet.kind == 'class') {
|
if (doclet.kind == 'class' && !(doclet.longname in classes)) {
|
||||||
classes[doclet.longname] = doclet;
|
classes[doclet.longname] = doclet;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -47,7 +47,7 @@ exports.handlers = {
|
|||||||
if (!cls.fires) {
|
if (!cls.fires) {
|
||||||
cls.fires = [];
|
cls.fires = [];
|
||||||
}
|
}
|
||||||
event = 'module:ol/Object~ObjectEvent#event:change:' + name;
|
event = 'module:ol/Object.ObjectEvent#event:change:' + name;
|
||||||
if (cls.fires.indexOf(event) == -1) {
|
if (cls.fires.indexOf(event) == -1) {
|
||||||
cls.fires.push(event);
|
cls.fires.push(event);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,85 +0,0 @@
|
|||||||
/*
|
|
||||||
* Changes @enum annotations into @typedef.
|
|
||||||
*/
|
|
||||||
|
|
||||||
// types that are undefined or typedefs containing undefined
|
|
||||||
let undefinedLikes = null;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Changes the description of the param if it is required.
|
|
||||||
* @param {Object} doclet The doclet.
|
|
||||||
* @returns {Object} The modified doclet.
|
|
||||||
*/
|
|
||||||
function markRequiredIfNeeded(doclet) {
|
|
||||||
const memberof = doclet.memberof;
|
|
||||||
if (!memberof) {
|
|
||||||
return doclet;
|
|
||||||
}
|
|
||||||
|
|
||||||
const types = doclet.type.names;
|
|
||||||
let isRequiredParam = true;
|
|
||||||
|
|
||||||
// iterate over all types that are like-undefined (see above for explanation)
|
|
||||||
for (let idx = undefinedLikes.length - 1; idx >= 0; idx--) {
|
|
||||||
const 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) {
|
|
||||||
const reqSnippet = '<span class="required-option">Required.</span></p>';
|
|
||||||
const endsWithP = /<\/p>$/i;
|
|
||||||
let 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.
|
|
||||||
* @param {Array} doclets The doclets.
|
|
||||||
*/
|
|
||||||
function findTypesLikeUndefined(doclets) {
|
|
||||||
undefinedLikes = ['undefined']; // include type 'undefined' explicitly
|
|
||||||
for (let i = doclets.length - 1; i >= 0; --i) {
|
|
||||||
const doclet = doclets[i];
|
|
||||||
if (doclet.kind === 'typedef') {
|
|
||||||
const types = doclet.type.names;
|
|
||||||
if (types.indexOf('undefined') !== -1) {
|
|
||||||
// the typedef contains 'undefined', so it self is undefinedLike.
|
|
||||||
undefinedLikes.push(doclet.longname);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
exports.handlers = {
|
|
||||||
|
|
||||||
newDoclet: function(e) {
|
|
||||||
const doclet = e.doclet;
|
|
||||||
if (doclet.isEnum) {
|
|
||||||
// We never export enums, so we document them like typedefs
|
|
||||||
doclet.kind = 'typedef';
|
|
||||||
delete doclet.isEnum;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
parseComplete: function(e) {
|
|
||||||
const doclets = e.doclets;
|
|
||||||
findTypesLikeUndefined(doclets);
|
|
||||||
for (let i = doclets.length - 1; i >= 0; --i) {
|
|
||||||
markRequiredIfNeeded(doclets[i]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
};
|
|
||||||
@@ -168,9 +168,9 @@ function generateSourceFiles(sourceFiles) {
|
|||||||
* for display purposes. This function mutates the original arrays.
|
* for display purposes. This function mutates the original arrays.
|
||||||
*
|
*
|
||||||
* @private
|
* @private
|
||||||
* @param {Array.<module:jsdoc/doclet.Doclet>} doclets - The array of classes and functions to
|
* @param {Array<module:jsdoc/doclet.Doclet>} doclets - The array of classes and functions to
|
||||||
* check.
|
* check.
|
||||||
* @param {Array.<module:jsdoc/doclet.Doclet>} modules - The array of module doclets to search.
|
* @param {Array<module:jsdoc/doclet.Doclet>} modules - The array of module doclets to search.
|
||||||
*/
|
*/
|
||||||
function attachModuleSymbols(doclets, modules) {
|
function attachModuleSymbols(doclets, modules) {
|
||||||
const symbols = {};
|
const symbols = {};
|
||||||
|
|||||||
@@ -30,7 +30,11 @@ $(function () {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// Show an item related a current documentation automatically
|
// Show an item related a current documentation automatically
|
||||||
var filename = $('.page-title').data('filename').replace(/\.[a-z]+$/, '');
|
var filename = $('.page-title').data('filename')
|
||||||
|
.replace(/\.[a-z]+$/, '')
|
||||||
|
.replace('module-', 'module:')
|
||||||
|
.replace(/_/g, '/')
|
||||||
|
.replace(/-/g, '~');
|
||||||
var $currentItem = $('.navigation .item[data-name*="' + filename + '"]:eq(0)');
|
var $currentItem = $('.navigation .item[data-name*="' + filename + '"]:eq(0)');
|
||||||
|
|
||||||
if ($currentItem.length) {
|
if ($currentItem.length) {
|
||||||
@@ -97,7 +101,8 @@ $(function () {
|
|||||||
var anchors = $('.anchor');
|
var anchors = $('.anchor');
|
||||||
var _onHashChange = function () {
|
var _onHashChange = function () {
|
||||||
var activeHash = window.document.location.hash
|
var activeHash = window.document.location.hash
|
||||||
.replace(/\./g, '\\.'); // Escape dot in element id
|
.replace(/\./g, '\\.') // Escape dot in element id
|
||||||
|
.replace(/\~/g, '\\~'); // Escape tilde in element id
|
||||||
|
|
||||||
anchors.removeClass('highlighted');
|
anchors.removeClass('highlighted');
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,13 @@ var version = obj.packageInfo.version;
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
<head>
|
<head>
|
||||||
|
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-2577926-1"></script>
|
||||||
|
<script>
|
||||||
|
window.dataLayer = window.dataLayer || [];
|
||||||
|
function gtag(){dataLayer.push(arguments);}
|
||||||
|
gtag('js', new Date());
|
||||||
|
gtag('config', 'UA-2577926-1');
|
||||||
|
</script>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<title>OpenLayers v<?js= version ?> API - <?js= title ?></title>
|
<title>OpenLayers v<?js= version ?> API - <?js= title ?></title>
|
||||||
<script src="https://cdn.polyfill.io/v2/polyfill.min.js?features=fetch"></script>
|
<script src="https://cdn.polyfill.io/v2/polyfill.min.js?features=fetch"></script>
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ if (data.type && data.type.names) {
|
|||||||
<div class="anchor" id="<?js= id ?>">
|
<div class="anchor" id="<?js= id ?>">
|
||||||
</div>
|
</div>
|
||||||
<h4 class="name">
|
<h4 class="name">
|
||||||
<?js= data.attribs + (data.scope === 'static' ? longname : name) + typeSignature ?>
|
<?js= data.attribs + (data.scope === 'static' ? longname : name.indexOf('module:') === 0 ? name.split('/').pop() : name) + typeSignature ?>
|
||||||
<?js= this.partial('stability.tmpl', data) ?>
|
<?js= this.partial('stability.tmpl', data) ?>
|
||||||
</h4>
|
</h4>
|
||||||
</div>
|
</div>
|
||||||
@@ -28,9 +28,9 @@ if (data.type && data.type.names) {
|
|||||||
<?js= data.description ?>
|
<?js= data.description ?>
|
||||||
</div>
|
</div>
|
||||||
<?js } ?>
|
<?js } ?>
|
||||||
|
|
||||||
<?js= this.partial('details.tmpl', data) ?>
|
<?js= this.partial('details.tmpl', data) ?>
|
||||||
|
|
||||||
<?js if (data.examples && examples.length) { ?>
|
<?js if (data.examples && examples.length) { ?>
|
||||||
<h5>Example<?js= examples.length > 1? 's':'' ?></h5>
|
<h5>Example<?js= examples.length > 1? 's':'' ?></h5>
|
||||||
<?js= this.partial('examples.tmpl', examples) ?>
|
<?js= this.partial('examples.tmpl', examples) ?>
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ var self = this;
|
|||||||
(<?js= self.linkto(eventClass.longname) ?>)
|
(<?js= self.linkto(eventClass.longname) ?>)
|
||||||
<?js } ?>
|
<?js } ?>
|
||||||
<?js } ?>
|
<?js } ?>
|
||||||
<?js= self.partial('stability.tmpl', eventDoclet || (data.stability ? data : {stability: 'experimental'})) ?>
|
<?js= self.partial('stability.tmpl', eventDoclet || (data.stability ? data : {})) ?>
|
||||||
<?js if (description) { ?> -
|
<?js if (description) { ?> -
|
||||||
<?js= description ?>
|
<?js= description ?>
|
||||||
<?js } ?>
|
<?js } ?>
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
<?js
|
<?js
|
||||||
var self = this;
|
var self = this;
|
||||||
|
function toShortName(name) {
|
||||||
|
return name.indexOf('module:') === 0 ? name.split('/').pop() : name;
|
||||||
|
}
|
||||||
?>
|
?>
|
||||||
<div class="navigation">
|
<div class="navigation">
|
||||||
<div class="search">
|
<div class="search">
|
||||||
@@ -25,7 +28,7 @@ var self = this;
|
|||||||
<?js
|
<?js
|
||||||
item.members.forEach(function (v) {
|
item.members.forEach(function (v) {
|
||||||
?>
|
?>
|
||||||
<li data-name="<?js= v.longname ?>"><?js= self.linkto(v.longname, v.name) ?></li>
|
<li data-name="<?js= v.longname ?>"><?js= self.linkto(v.longname, toShortName(v.name)) ?></li>
|
||||||
<?js
|
<?js
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -40,7 +43,7 @@ var self = this;
|
|||||||
item.typedefs.forEach(function (v) {
|
item.typedefs.forEach(function (v) {
|
||||||
?>
|
?>
|
||||||
<li data-name="<?js= v.longname ?>" class="<?js= (v.stability && v.stability !== 'stable') ? 'unstable' : ''?>">
|
<li data-name="<?js= v.longname ?>" class="<?js= (v.stability && v.stability !== 'stable') ? 'unstable' : ''?>">
|
||||||
<?js= self.linkto(v.longname, v.name) ?>
|
<?js= self.linkto(v.longname, toShortName(v.name)) ?>
|
||||||
</li>
|
</li>
|
||||||
<?js
|
<?js
|
||||||
});
|
});
|
||||||
@@ -57,7 +60,7 @@ var self = this;
|
|||||||
item.methods.forEach(function (v) {
|
item.methods.forEach(function (v) {
|
||||||
?>
|
?>
|
||||||
<li data-name="<?js= v.longname ?>" class="<?js= (v.stability && v.stability !== 'stable') ? 'unstable' : ''?>">
|
<li data-name="<?js= v.longname ?>" class="<?js= (v.stability && v.stability !== 'stable') ? 'unstable' : ''?>">
|
||||||
<?js= self.linkto(v.longname, v.name) ?>
|
<?js= self.linkto(v.longname, toShortName(v.name)) ?>
|
||||||
</li>
|
</li>
|
||||||
<?js
|
<?js
|
||||||
});
|
});
|
||||||
@@ -74,7 +77,7 @@ var self = this;
|
|||||||
v = self.find({longname: v})[0] || {longname: v, name: v.split(/#?event:/)[1]};
|
v = self.find({longname: v})[0] || {longname: v, name: v.split(/#?event:/)[1]};
|
||||||
?>
|
?>
|
||||||
<li data-name="<?js= v.longname ?>" class="<?js= (v.stability && v.stability != 'stable') ? 'unstable' : '' ?>">
|
<li data-name="<?js= v.longname ?>" class="<?js= (v.stability && v.stability != 'stable') ? 'unstable' : '' ?>">
|
||||||
<?js= self.linkto(v.longname, v.name) ?>
|
<?js= self.linkto(v.longname, toShortName(v.name)) ?>
|
||||||
</li>
|
</li>
|
||||||
<?js
|
<?js
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
<th>Name</th>
|
<th>Name</th>
|
||||||
<th>Type</th>
|
<th>Type</th>
|
||||||
<th>Settable</th>
|
<th>Settable</th>
|
||||||
<th><a href="module-ol_Object-ObjectEvent.html">ol/Object~ObjectEvent</a> type</th>
|
<th><a href="module-ol_Object-ObjectEvent.html">ol/Object.ObjectEvent</a> type</th>
|
||||||
<th class="last">Description</th>
|
<th class="last">Description</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
|
|||||||
@@ -10,8 +10,12 @@
|
|||||||
"includePattern": "\\.js$"
|
"includePattern": "\\.js$"
|
||||||
},
|
},
|
||||||
"plugins": [
|
"plugins": [
|
||||||
|
"jsdoc-plugin-typescript",
|
||||||
"config/jsdoc/info/api-plugin",
|
"config/jsdoc/info/api-plugin",
|
||||||
"config/jsdoc/info/define-plugin",
|
"config/jsdoc/info/define-plugin",
|
||||||
"config/jsdoc/info/virtual-plugin"
|
"config/jsdoc/info/virtual-plugin"
|
||||||
]
|
],
|
||||||
|
"typescript": {
|
||||||
|
"moduleRoot": "src"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,21 +0,0 @@
|
|||||||
// Rollup configuration for the full build
|
|
||||||
|
|
||||||
import noderesolve from 'rollup-plugin-node-resolve';
|
|
||||||
import commonjs from 'rollup-plugin-commonjs';
|
|
||||||
import {uglify} from 'rollup-plugin-uglify';
|
|
||||||
import buble from 'rollup-plugin-buble';
|
|
||||||
import sourcemaps from 'rollup-plugin-sourcemaps';
|
|
||||||
|
|
||||||
export default {
|
|
||||||
input: 'build/index.js',
|
|
||||||
output: [
|
|
||||||
{file: 'build/ol.js', format: 'iife', sourcemap: true}
|
|
||||||
],
|
|
||||||
plugins: [
|
|
||||||
noderesolve(),
|
|
||||||
commonjs(),
|
|
||||||
buble(),
|
|
||||||
uglify(),
|
|
||||||
sourcemaps()
|
|
||||||
]
|
|
||||||
};
|
|
||||||
13
config/webpack-config-legacy-build.js
Normal file
13
config/webpack-config-legacy-build.js
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
const path = require('path');
|
||||||
|
module.exports = {
|
||||||
|
entry: './build/index.js',
|
||||||
|
devtool: 'source-map',
|
||||||
|
mode: 'production',
|
||||||
|
output: {
|
||||||
|
path: path.resolve('./build/legacy'),
|
||||||
|
filename: 'ol.js',
|
||||||
|
library: 'ol',
|
||||||
|
libraryTarget: 'umd',
|
||||||
|
libraryExport: 'default'
|
||||||
|
}
|
||||||
|
};
|
||||||
147
doc/faq.md
147
doc/faq.md
@@ -5,7 +5,7 @@ layout: doc.hbs
|
|||||||
|
|
||||||
# Frequently Asked Questions (FAQ)
|
# Frequently Asked Questions (FAQ)
|
||||||
|
|
||||||
Certain questions arise more often than others when users ask for help. This
|
Certain questions arise more often than others when users ask for help. This
|
||||||
document tries to list some of the common questions that frequently get asked,
|
document tries to list some of the common questions that frequently get asked,
|
||||||
e.g. on [Stack Overflow](http://stackoverflow.com/questions/tagged/openlayers).
|
e.g. on [Stack Overflow](http://stackoverflow.com/questions/tagged/openlayers).
|
||||||
|
|
||||||
@@ -54,9 +54,12 @@ The projection of your map can be set through the `view`-property. Here are some
|
|||||||
examples:
|
examples:
|
||||||
|
|
||||||
```javascript
|
```javascript
|
||||||
|
import Map from 'ol/Map';
|
||||||
|
import View from 'ol/View';
|
||||||
|
|
||||||
// OpenLayers comes with support for the World Geodetic System 1984, EPSG:4326:
|
// OpenLayers comes with support for the World Geodetic System 1984, EPSG:4326:
|
||||||
var map = new ol.Map({
|
const map = new Map({
|
||||||
view: new ol.View({
|
view: new View({
|
||||||
projection: 'EPSG:4326'
|
projection: 'EPSG:4326'
|
||||||
// other view properties like map center etc.
|
// other view properties like map center etc.
|
||||||
})
|
})
|
||||||
@@ -65,24 +68,29 @@ var map = new ol.Map({
|
|||||||
```
|
```
|
||||||
|
|
||||||
```javascript
|
```javascript
|
||||||
// To use other projections, you have to register the projection in OpenLayers:
|
import Map from 'ol/Map';
|
||||||
|
import View from 'ol/View';
|
||||||
|
import proj4 from 'proj4';
|
||||||
|
import {register} from 'ol/proj/proj4';
|
||||||
|
import {get as getProjection} from 'ol/proj';
|
||||||
|
|
||||||
|
// To use other projections, you have to register the projection in OpenLayers.
|
||||||
|
// This can easily be done with [https://proj4js.org](proj4)
|
||||||
//
|
//
|
||||||
// By default OpenLayers does not know about the EPSG:21781 (Swiss) projection.
|
// By default OpenLayers does not know about the EPSG:21781 (Swiss) projection.
|
||||||
// So we create a projection instance for EPSG:21781 and pass it to
|
// So we create a projection instance for EPSG:21781 and pass it to
|
||||||
// ol.proj.addProjection to make it available to the library for lookup by its
|
// register to make it available to the library for lookup by its
|
||||||
// code.
|
// code.
|
||||||
var swissProjection = new ol.proj.Projection({
|
proj4.defs('EPSG:21781',
|
||||||
code: 'EPSG:21781',
|
'+proj=somerc +lat_0=46.95240555555556 +lon_0=7.439583333333333 +k_0=1 ' +
|
||||||
// The extent is used to determine zoom level 0. Recommended values for a
|
'+x_0=600000 +y_0=200000 +ellps=bessel ' +
|
||||||
// projection's validity extent can be found at https://epsg.io/.
|
'+towgs84=660.077,13.551,369.344,2.484,1.783,2.939,5.66 +units=m +no_defs');
|
||||||
extent: [485869.5728, 76443.1884, 837076.5648, 299941.7864],
|
register(proj4);
|
||||||
units: 'm'
|
const swissProjection = getProjection('EPSG:21781');
|
||||||
});
|
|
||||||
ol.proj.addProjection(swissProjection);
|
|
||||||
|
|
||||||
// we can now use the projection:
|
// we can now use the projection:
|
||||||
var map = new ol.Map({
|
const map = new Map({
|
||||||
view: new ol.View({
|
view: new View({
|
||||||
projection: swissProjection
|
projection: swissProjection
|
||||||
// other view properties like map center etc.
|
// other view properties like map center etc.
|
||||||
})
|
})
|
||||||
@@ -105,15 +113,20 @@ coordinates for the center have to be provided in that projection. Chances are
|
|||||||
that your map looks like this:
|
that your map looks like this:
|
||||||
|
|
||||||
```javascript
|
```javascript
|
||||||
var washingtonLonLat = [-77.036667, 38.895];
|
import Map from 'ol/Map';
|
||||||
var map = new ol.Map({
|
import View from 'ol/View';
|
||||||
|
import TileLayer from 'ol/layer/Tile';
|
||||||
|
import OSM from 'ol/source/OSM';
|
||||||
|
|
||||||
|
const washingtonLonLat = [-77.036667, 38.895];
|
||||||
|
const map = new Map({
|
||||||
layers: [
|
layers: [
|
||||||
new ol.layer.Tile({
|
new TileLayer({
|
||||||
source: new ol.source.OSM()
|
source: new OSM()
|
||||||
})
|
})
|
||||||
],
|
],
|
||||||
target: 'map',
|
target: 'map',
|
||||||
view: new ol.View({
|
view: new View({
|
||||||
center: washingtonLonLat,
|
center: washingtonLonLat,
|
||||||
zoom: 12
|
zoom: 12
|
||||||
})
|
})
|
||||||
@@ -129,31 +142,38 @@ The solution is easy: Provide the coordinates projected into Web Mercator.
|
|||||||
OpenLayers has some helpful utility methods to assist you:
|
OpenLayers has some helpful utility methods to assist you:
|
||||||
|
|
||||||
```javascript
|
```javascript
|
||||||
var washingtonLonLat = [-77.036667, 38.895];
|
import Map from 'ol/Map';
|
||||||
var washingtonWebMercator = ol.proj.fromLonLat(washingtonLonLat);
|
import View from 'ol/View';
|
||||||
|
import TileLayer from 'ol/layer/Tile';
|
||||||
|
import OSM from 'ol/source/OSM';
|
||||||
|
import {fromLonLat} from 'ol/proj';
|
||||||
|
|
||||||
var map = new ol.Map({
|
const washingtonLonLat = [-77.036667, 38.895];
|
||||||
|
const washingtonWebMercator = fromLonLat(washingtonLonLat);
|
||||||
|
|
||||||
|
const map = new Map({
|
||||||
layers: [
|
layers: [
|
||||||
new ol.layer.Tile({
|
new TileLayer({
|
||||||
source: new ol.source.OSM()
|
source: new OSM()
|
||||||
})
|
})
|
||||||
],
|
],
|
||||||
target: 'map',
|
target: 'map',
|
||||||
view: new ol.View({
|
view: new View({
|
||||||
center: washingtonWebMercator,
|
center: washingtonWebMercator,
|
||||||
zoom: 8
|
zoom: 8
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
```
|
```
|
||||||
|
|
||||||
The method `ol.proj.fromLonLat()` is available from version 3.5 onwards.
|
The method `fromLonLat()` is available from version 3.5 onwards.
|
||||||
|
|
||||||
If you told OpenLayers about a custom projection (see above), you can use the
|
If you told OpenLayers about a custom projection (see above), you can use the
|
||||||
following method to transform a coordinate from WGS84 to your projection:
|
following method to transform a coordinate from WGS84 to your projection:
|
||||||
|
|
||||||
```javascript
|
```javascript
|
||||||
|
import {transform} from 'ol/proj';
|
||||||
// assuming that OpenLayers knows about EPSG:21781, see above
|
// assuming that OpenLayers knows about EPSG:21781, see above
|
||||||
var swissCoord = ol.proj.transform([8.23, 46.86], 'EPSG:4326', 'EPSG:21781');
|
const swissCoord = transform([8.23, 46.86], 'EPSG:4326', 'EPSG:21781');
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
@@ -190,18 +210,24 @@ So the next step would be to put the decimal coordinates into an array and use
|
|||||||
it as center:
|
it as center:
|
||||||
|
|
||||||
```javascript
|
```javascript
|
||||||
var schladming = [47.394167, 13.689167]; // caution partner, read on...
|
import Map from 'ol/Map';
|
||||||
// since we are using OSM, we have to transform the coordinates...
|
import View from 'ol/View';
|
||||||
var schladmingWebMercator = ol.proj.fromLonLat(schladming);
|
import TileLayer from 'ol/layer/Tile';
|
||||||
|
import OSM from 'ol/source/OSM';
|
||||||
|
import {fromLonLat} from 'ol/proj';
|
||||||
|
|
||||||
var map = new ol.Map({
|
const schladming = [47.394167, 13.689167]; // caution partner, read on...
|
||||||
|
// since we are using OSM, we have to transform the coordinates...
|
||||||
|
const schladmingWebMercator = fromLonLat(schladming);
|
||||||
|
|
||||||
|
const map = new Map({
|
||||||
layers: [
|
layers: [
|
||||||
new ol.layer.Tile({
|
new TileLayer({
|
||||||
source: new ol.source.OSM()
|
source: new OSM()
|
||||||
})
|
})
|
||||||
],
|
],
|
||||||
target: 'map',
|
target: 'map',
|
||||||
view: new ol.View({
|
view: new View({
|
||||||
center: schladmingWebMercator,
|
center: schladmingWebMercator,
|
||||||
zoom: 9
|
zoom: 9
|
||||||
})
|
})
|
||||||
@@ -220,18 +246,24 @@ e.g. try to change the map center.
|
|||||||
Ok, then let's flip the coordinates:
|
Ok, then let's flip the coordinates:
|
||||||
|
|
||||||
```javascript
|
```javascript
|
||||||
var schladming = [13.689167, 47.394167]; // longitude first, then latitude
|
import Map from 'ol/Map';
|
||||||
// since we are using OSM, we have to transform the coordinates...
|
import View from 'ol/View';
|
||||||
var schladmingWebMercator = ol.proj.fromLonLat(schladming);
|
import TileLayer from 'ol/layer/Tile';
|
||||||
|
import OSM from 'ol/source/OSM';
|
||||||
|
import {fromLonLat} from 'ol/proj';
|
||||||
|
|
||||||
var map = new ol.Map({
|
const schladming = [13.689167, 47.394167]; // longitude first, then latitude
|
||||||
|
// since we are using OSM, we have to transform the coordinates...
|
||||||
|
const schladmingWebMercator = fromLonLat(schladming);
|
||||||
|
|
||||||
|
const map = new Map({
|
||||||
layers: [
|
layers: [
|
||||||
new ol.layer.Tile({
|
new TileLayer({
|
||||||
source: new ol.source.OSM()
|
source: new OSM()
|
||||||
})
|
})
|
||||||
],
|
],
|
||||||
target: 'map',
|
target: 'map',
|
||||||
view: new ol.View({
|
view: new View({
|
||||||
center: schladmingWebMercator,
|
center: schladmingWebMercator,
|
||||||
zoom: 9
|
zoom: 9
|
||||||
})
|
})
|
||||||
@@ -245,7 +277,7 @@ first, and then the latitude. This behaviour is the same as we had in OpenLayers
|
|||||||
2, and it actually makes sense because of the natural axis order in WGS84.
|
2, and it actually makes sense because of the natural axis order in WGS84.
|
||||||
|
|
||||||
If you cannot remember the correct order, just have a look at the method name
|
If you cannot remember the correct order, just have a look at the method name
|
||||||
we used: `ol.proj.fromLonLat`; even there we hint that we expect longitude
|
we used: `fromLonLat`; even there we hint that we expect longitude
|
||||||
first, and then latitude.
|
first, and then latitude.
|
||||||
|
|
||||||
|
|
||||||
@@ -255,8 +287,11 @@ Suppose you want to load a KML file and display the contained features on the
|
|||||||
map. Code like the following could be used:
|
map. Code like the following could be used:
|
||||||
|
|
||||||
```javascript
|
```javascript
|
||||||
var vector = new ol.layer.Vector({
|
import VectorLayer from 'ol/layer/Vector';
|
||||||
source: new ol.source.KML({
|
import KMLSource from 'ol/source/KML';
|
||||||
|
|
||||||
|
const vector = new VectorLayer({
|
||||||
|
source: new KMLSource({
|
||||||
projection: 'EPSG:3857',
|
projection: 'EPSG:3857',
|
||||||
url: 'data/kml/2012-02-10.kml'
|
url: 'data/kml/2012-02-10.kml'
|
||||||
})
|
})
|
||||||
@@ -267,13 +302,16 @@ You may ask yourself how many features are in that KML, and try something like
|
|||||||
the following:
|
the following:
|
||||||
|
|
||||||
```javascript
|
```javascript
|
||||||
var vector = new ol.layer.Vector({
|
import VectorLayer from 'ol/layer/Vector';
|
||||||
source: new ol.source.KML({
|
import KMLSource from 'ol/source/KML';
|
||||||
|
|
||||||
|
const vector = new VectorLayer({
|
||||||
|
source: new KMLSource({
|
||||||
projection: 'EPSG:3857',
|
projection: 'EPSG:3857',
|
||||||
url: 'data/kml/2012-02-10.kml'
|
url: 'data/kml/2012-02-10.kml'
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
var numFeatures = vector.getSource().getFeatures().length;
|
const numFeatures = vector.getSource().getFeatures().length;
|
||||||
console.log("Count right after construction: " + numFeatures);
|
console.log("Count right after construction: " + numFeatures);
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -285,9 +323,9 @@ been populated with features), you should use an event listener function on the
|
|||||||
|
|
||||||
```javascript
|
```javascript
|
||||||
vector.getSource().on('change', function(evt){
|
vector.getSource().on('change', function(evt){
|
||||||
var source = evt.target;
|
const source = evt.target;
|
||||||
if (source.getState() === 'ready') {
|
if (source.getState() === 'ready') {
|
||||||
var numFeatures = source.getFeatures().length;
|
const numFeatures = source.getFeatures().length;
|
||||||
console.log("Count after change: " + numFeatures);
|
console.log("Count after change: " + numFeatures);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -316,16 +354,17 @@ map.renderSync();
|
|||||||
|
|
||||||
## Why are my features not found?
|
## Why are my features not found?
|
||||||
|
|
||||||
You are using `ol.Map#forEachFeatureAtPixel` or `ol.Map#hasFeatureAtPixel`, but
|
You are using `Map#forEachFeatureAtPixel` or `Map#hasFeatureAtPixel`, but
|
||||||
it sometimes does not work for large icons or labels? The *hit detection* only
|
it sometimes does not work for large icons or labels? The *hit detection* only
|
||||||
checks features that are within a certain distance of the given position. For large
|
checks features that are within a certain distance of the given position. For large
|
||||||
icons, the actual geometry of a feature might be too far away and is not considered.
|
icons, the actual geometry of a feature might be too far away and is not considered.
|
||||||
|
|
||||||
In this case, set the `renderBuffer` property of `ol.layer.Vector` (the default
|
In this case, set the `renderBuffer` property of `VectorLayer` (the default value is 100px):
|
||||||
value is 100px):
|
|
||||||
|
|
||||||
```javascript
|
```javascript
|
||||||
var vectorLayer = new ol.layer.Vector({
|
import VectorLayer from 'ol/layer/Vector';
|
||||||
|
|
||||||
|
const vectorLayer = new VectorLayer({
|
||||||
...
|
...
|
||||||
renderBuffer: 200
|
renderBuffer: 200
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -130,7 +130,7 @@ The `layers: [ ... ]` array is used to define the list of layers available in th
|
|||||||
]
|
]
|
||||||
```
|
```
|
||||||
|
|
||||||
Layers in OpenLayers are defined with a type (Image, Tile or Vector) which contains a source. The source is the protocol used to get the map tiles. You can consult the list of [available layer sources here](/en/{{ latest }}/apidoc/ol.source.html)
|
Layers in OpenLayers are defined with a type (Image, Tile or Vector) which contains a source. The source is the protocol used to get the map tiles.
|
||||||
|
|
||||||
The next part of the `Map` object is the `View`. The view allows to specify the center, resolution, and rotation of the map. The simplest way to define a view is to define a center point and a zoom level. Note that zoom level 0 is zoomed out.
|
The next part of the `Map` object is the `View`. The view allows to specify the center, resolution, and rotation of the map. The simplest way to define a view is to define a center point and a zoom level. Note that zoom level 0 is zoomed out.
|
||||||
|
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ OpenLayers is available as [`ol` npm package](https://npmjs.com/package/ol), whi
|
|||||||
|
|
||||||
## Renderers and Browser Support
|
## Renderers and Browser Support
|
||||||
|
|
||||||
By default, OpenLayers uses a performance optimized Canvas renderer. An experimental WebGL renderer (without text rendering support) is also avaialble.
|
By default, OpenLayers uses a performance optimized Canvas renderer. An experimental WebGL renderer (without text rendering support) is also available.
|
||||||
|
|
||||||
OpenLayers runs on all modern browsers that support [HTML5](https://html.spec.whatwg.org/multipage/) and [ECMAScript 5](http://www.ecma-international.org/ecma-262/5.1/). This includes Chrome, Firefox, Safari and Edge. For older browsers and platforms like Internet Explorer (down to version 9) and Android 4.x, [polyfills](http://polyfill.io), the application bundle needs to be transpiled (e.g. using [Babel](https://babeljs.io)) and bundled with polyfills for `requestAnimationFrame`, `Element.prototype.classList` and `URL`.
|
OpenLayers runs on all modern browsers that support [HTML5](https://html.spec.whatwg.org/multipage/) and [ECMAScript 5](http://www.ecma-international.org/ecma-262/5.1/). This includes Chrome, Firefox, Safari and Edge. For older browsers and platforms like Internet Explorer (down to version 9) and Android 4.x, [polyfills](http://polyfill.io), the application bundle needs to be transpiled (e.g. using [Babel](https://babeljs.io)) and bundled with polyfills for `requestAnimationFrame`, `Element.prototype.classList` and `URL`.
|
||||||
|
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ const map = new Map({
|
|||||||
});
|
});
|
||||||
```
|
```
|
||||||
|
|
||||||
You will also need an `ìndex.html` file that will use your bundle. Here is a simple example:
|
You will also need an `index.html` file that will use your bundle. Here is a simple example:
|
||||||
|
|
||||||
```html
|
```html
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
|
|||||||
@@ -6,27 +6,34 @@ layout: doc.hbs
|
|||||||
# Basic Concepts
|
# Basic Concepts
|
||||||
|
|
||||||
## Map
|
## Map
|
||||||
The core component of OpenLayers is the map (`Map`). It is rendered to a `target` container (e.g. a `div` element on the web page that contains the map). All map properties can either be configured at construction time, or by using setter methods, e.g. `setTarget()`.
|
|
||||||
|
The core component of OpenLayers is the map (`ol/Map`). It is rendered to a `target` container (e.g. a `div` element on the web page that contains the map). All map properties can either be configured at construction time, or by using setter methods, e.g. `setTarget()`.
|
||||||
|
|
||||||
|
The markup below could be used to create a `<div>` that contains your map.
|
||||||
|
|
||||||
```xml
|
```xml
|
||||||
<div id="map" style="width: 100%, height: 400px"></div>
|
<div id="map" style="width: 100%, height: 400px"></div>
|
||||||
<script>
|
```
|
||||||
import Map from 'ol/Map';
|
|
||||||
|
|
||||||
var map = new Map({target: 'map'});
|
The script below constructs a map that is rendered in the `<div>` above, using the `map` id of the element as a selector.
|
||||||
</script>
|
|
||||||
|
```js
|
||||||
|
import Map from 'ol/Map';
|
||||||
|
|
||||||
|
var map = new Map({target: 'map'});
|
||||||
```
|
```
|
||||||
|
|
||||||
## View
|
## View
|
||||||
`Map` is not responsible for things like center, zoom level and projection of the map. Instead, these are properties of a `View` instance.
|
|
||||||
|
The map is not responsible for things like center, zoom level and projection of the map. Instead, these are properties of a `ol/View` instance.
|
||||||
|
|
||||||
```js
|
```js
|
||||||
import View from 'ol/View';
|
import View from 'ol/View';
|
||||||
|
|
||||||
map.setView(new View({
|
map.setView(new View({
|
||||||
center: [0, 0],
|
center: [0, 0],
|
||||||
zoom: 2
|
zoom: 2
|
||||||
}));
|
}));
|
||||||
```
|
```
|
||||||
|
|
||||||
A `View` also has a `projection`. The projection determines the coordinate system of the `center` and the units for map resolution calculations. If not specified (like in the above snippet), the default projection is Spherical Mercator (EPSG:3857), with meters as map units.
|
A `View` also has a `projection`. The projection determines the coordinate system of the `center` and the units for map resolution calculations. If not specified (like in the above snippet), the default projection is Spherical Mercator (EPSG:3857), with meters as map units.
|
||||||
@@ -35,54 +42,49 @@ The `zoom` option is a convenient way to specify the map resolution. The availab
|
|||||||
|
|
||||||
|
|
||||||
## Source
|
## Source
|
||||||
To get remote data for a layer, OpenLayers uses `source/Source` subclasses. These are available for free and commercial map tile services like OpenStreetMap or Bing, for OGC sources like WMS or WMTS, and for vector data in formats like GeoJSON or KML.
|
|
||||||
|
To get remote data for a layer, OpenLayers uses `ol/source/Source` subclasses. These are available for free and commercial map tile services like OpenStreetMap or Bing, for OGC sources like WMS or WMTS, and for vector data in formats like GeoJSON or KML.
|
||||||
|
|
||||||
```js
|
```js
|
||||||
import OSM from 'ol/source/OSM';
|
import OSM from 'ol/source/OSM';
|
||||||
|
|
||||||
var osmSource = OSM();
|
var osmSource = OSM();
|
||||||
```
|
```
|
||||||
|
|
||||||
## Layer
|
## Layer
|
||||||
A layer is a visual representation of data from a `source`. OpenLayers has four basic types of layers: `layer/Tile`, `layer/Image`, `layer/Vector` and `layer/VectorTile`.
|
|
||||||
|
|
||||||
`layer/Tile` is for layer sources that provide pre-rendered, tiled images in grids that are organized by zoom levels for specific resolutions.
|
A layer is a visual representation of data from a `source`. OpenLayers has four basic types of layers:
|
||||||
|
|
||||||
`layer/Image` is for server rendered images that are available for arbitrary extents and resolutions.
|
* `ol/layer/Tile` - Renders sources that provide tiled images in grids that are organized by zoom levels for specific resolutions.
|
||||||
|
* `ol/layer/Image` - Renders sources that provide map images at arbitrary extents and resolutions.
|
||||||
`layer/Vector` is for vector data that is rendered client-side.
|
* `ol/layer/Vector` - Renders vector data client-side.
|
||||||
|
* `ol/layer/VectorTile` - Renders data that is provided as vector tiles.
|
||||||
`layer/VectorTile` is for tiled vector data that is rendered client-side.
|
|
||||||
|
|
||||||
```js
|
```js
|
||||||
import TileLayer from 'ol/layer/Tile';
|
import TileLayer from 'ol/layer/Tile';
|
||||||
|
|
||||||
var osmLayer = new TileLayer({source: osmSource});
|
var osmLayer = new TileLayer({source: osmSource});
|
||||||
map.addLayer(osmLayer);
|
map.addLayer(osmLayer);
|
||||||
```
|
```
|
||||||
|
|
||||||
## Putting it all together
|
## Putting it all together
|
||||||
|
|
||||||
|
The above snippets can be combined into a single script that renders a map with a single tile layer:
|
||||||
|
|
||||||
The above snippets can be conflated to a self contained map configuration with view and layers:
|
```js
|
||||||
|
import Map from 'ol/Map';
|
||||||
|
import View from 'ol/View';
|
||||||
|
import OSM from 'ol/source/OSM';
|
||||||
|
import TileLayer from 'ol/source/Tile';
|
||||||
|
|
||||||
```xml
|
new Map({
|
||||||
<div id="map" style="width: 100%, height: 400px"></div>
|
layers: [
|
||||||
<script>
|
new TileLayer({source: new OSM()})
|
||||||
import Map from 'ol/Map';
|
],
|
||||||
import View from 'ol/View';
|
view: new View({
|
||||||
import OSM from 'ol/source/OSM';
|
center: [0, 0],
|
||||||
import TileLayer from 'ol/source/Tile';
|
zoom: 2
|
||||||
|
}),
|
||||||
new Map({
|
target: 'map'
|
||||||
layers: [
|
});
|
||||||
new TileLayer({source: new ol.source.OSM()})
|
|
||||||
],
|
|
||||||
view: new View({
|
|
||||||
center: [0, 0],
|
|
||||||
zoom: 2
|
|
||||||
}),
|
|
||||||
target: 'map'
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -12,9 +12,9 @@ The view in any Proj4js supported coordinate reference system is possible and pr
|
|||||||
# Usage
|
# Usage
|
||||||
The API usage is very simple. Just specify proper projection (e.g. using [EPSG](https://epsg.io) code) on `ol/View`:
|
The API usage is very simple. Just specify proper projection (e.g. using [EPSG](https://epsg.io) code) on `ol/View`:
|
||||||
```js
|
```js
|
||||||
import {Map, View} from `ol`;
|
import {Map, View} from 'ol';
|
||||||
import TileLayer from `ol/layer/Tile`;
|
import TileLayer from 'ol/layer/Tile';
|
||||||
import TileWMS from `ol/source/TileWMS`;
|
import TileWMS from 'ol/source/TileWMS';
|
||||||
|
|
||||||
var map = new Map({
|
var map = new Map({
|
||||||
target: 'map',
|
target: 'map',
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
import Map from '../src/ol/Map.js';
|
import Map from '../src/ol/Map.js';
|
||||||
import View from '../src/ol/View.js';
|
import View from '../src/ol/View.js';
|
||||||
import {defaults as defaultControls} from '../src/ol/control.js';
|
|
||||||
import TileLayer from '../src/ol/layer/Tile.js';
|
import TileLayer from '../src/ol/layer/Tile.js';
|
||||||
import OSM from '../src/ol/source/OSM.js';
|
import OSM from '../src/ol/source/OSM.js';
|
||||||
|
|
||||||
@@ -12,11 +11,6 @@ const map = new Map({
|
|||||||
})
|
})
|
||||||
],
|
],
|
||||||
target: 'map',
|
target: 'map',
|
||||||
controls: defaultControls({
|
|
||||||
attributionOptions: {
|
|
||||||
collapsible: false
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
view: new View({
|
view: new View({
|
||||||
center: [0, 0],
|
center: [0, 0],
|
||||||
zoom: 2
|
zoom: 2
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
import Map from '../src/ol/Map.js';
|
import Map from '../src/ol/Map.js';
|
||||||
import View from '../src/ol/View.js';
|
import View from '../src/ol/View.js';
|
||||||
import {defaults as defaultControls} from '../src/ol/control.js';
|
|
||||||
import TileLayer from '../src/ol/layer/Tile.js';
|
import TileLayer from '../src/ol/layer/Tile.js';
|
||||||
import {fromLonLat} from '../src/ol/proj.js';
|
import {fromLonLat} from '../src/ol/proj.js';
|
||||||
import {OSM, TileDebug} from '../src/ol/source.js';
|
import {OSM, TileDebug} from '../src/ol/source.js';
|
||||||
@@ -20,11 +19,6 @@ const map = new Map({
|
|||||||
})
|
})
|
||||||
],
|
],
|
||||||
target: 'map',
|
target: 'map',
|
||||||
controls: defaultControls({
|
|
||||||
attributionOptions: {
|
|
||||||
collapsible: false
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
view: new View({
|
view: new View({
|
||||||
center: fromLonLat([-0.1275, 51.507222]),
|
center: fromLonLat([-0.1275, 51.507222]),
|
||||||
zoom: 10
|
zoom: 10
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
import Map from '../src/ol/Map.js';
|
import Map from '../src/ol/Map.js';
|
||||||
import View from '../src/ol/View.js';
|
import View from '../src/ol/View.js';
|
||||||
import {defaults as defaultControls} from '../src/ol/control.js';
|
|
||||||
import GeoJSON from '../src/ol/format/GeoJSON.js';
|
import GeoJSON from '../src/ol/format/GeoJSON.js';
|
||||||
import {Tile as TileLayer, Vector as VectorLayer} from '../src/ol/layer.js';
|
import {Tile as TileLayer, Vector as VectorLayer} from '../src/ol/layer.js';
|
||||||
import {OSM, Vector as VectorSource} from '../src/ol/source.js';
|
import {OSM, Vector as VectorSource} from '../src/ol/source.js';
|
||||||
@@ -45,11 +44,6 @@ const map = new Map({
|
|||||||
vectorLayer
|
vectorLayer
|
||||||
],
|
],
|
||||||
target: 'map',
|
target: 'map',
|
||||||
controls: defaultControls({
|
|
||||||
attributionOptions: {
|
|
||||||
collapsible: false
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
view: view
|
view: view
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -20,8 +20,8 @@ const twoPi = 2 * Math.PI;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Convert an RGB pixel into an HCL pixel.
|
* Convert an RGB pixel into an HCL pixel.
|
||||||
* @param {Array.<number>} pixel A pixel in RGB space.
|
* @param {Array<number>} pixel A pixel in RGB space.
|
||||||
* @return {Array.<number>} A pixel in HCL space.
|
* @return {Array<number>} A pixel in HCL space.
|
||||||
*/
|
*/
|
||||||
function rgb2hcl(pixel) {
|
function rgb2hcl(pixel) {
|
||||||
const red = rgb2xyz(pixel[0]);
|
const red = rgb2xyz(pixel[0]);
|
||||||
@@ -55,8 +55,8 @@ function rgb2hcl(pixel) {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Convert an HCL pixel into an RGB pixel.
|
* Convert an HCL pixel into an RGB pixel.
|
||||||
* @param {Array.<number>} pixel A pixel in HCL space.
|
* @param {Array<number>} pixel A pixel in HCL space.
|
||||||
* @return {Array.<number>} A pixel in RGB space.
|
* @return {Array<number>} A pixel in RGB space.
|
||||||
*/
|
*/
|
||||||
function hcl2rgb(pixel) {
|
function hcl2rgb(pixel) {
|
||||||
const h = pixel[0];
|
const h = pixel[0];
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
import {inherits} from '../src/ol/util.js';
|
|
||||||
import Map from '../src/ol/Map.js';
|
import Map from '../src/ol/Map.js';
|
||||||
import View from '../src/ol/View.js';
|
import View from '../src/ol/View.js';
|
||||||
import {defaults as defaultControls, Control} from '../src/ol/control.js';
|
import {defaults as defaultControls, Control} from '../src/ol/control.js';
|
||||||
@@ -6,13 +5,6 @@ import TileLayer from '../src/ol/layer/Tile.js';
|
|||||||
import OSM from '../src/ol/source/OSM.js';
|
import OSM from '../src/ol/source/OSM.js';
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Define a namespace for the application.
|
|
||||||
*/
|
|
||||||
window.app = {};
|
|
||||||
const app = window.app;
|
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Define rotate to north control.
|
// Define rotate to north control.
|
||||||
//
|
//
|
||||||
@@ -23,32 +15,31 @@ const app = window.app;
|
|||||||
* @extends {module:ol/control/Control~Control}
|
* @extends {module:ol/control/Control~Control}
|
||||||
* @param {Object=} opt_options Control options.
|
* @param {Object=} opt_options Control options.
|
||||||
*/
|
*/
|
||||||
app.RotateNorthControl = function(opt_options) {
|
class RotateNorthControl extends Control {
|
||||||
|
|
||||||
const options = opt_options || {};
|
constructor(opt_options) {
|
||||||
|
const options = opt_options || {};
|
||||||
|
|
||||||
const button = document.createElement('button');
|
const button = document.createElement('button');
|
||||||
button.innerHTML = 'N';
|
button.innerHTML = 'N';
|
||||||
|
|
||||||
const this_ = this;
|
const element = document.createElement('div');
|
||||||
const handleRotateNorth = function() {
|
element.className = 'rotate-north ol-unselectable ol-control';
|
||||||
this_.getMap().getView().setRotation(0);
|
element.appendChild(button);
|
||||||
};
|
|
||||||
|
|
||||||
button.addEventListener('click', handleRotateNorth, false);
|
super({
|
||||||
button.addEventListener('touchstart', handleRotateNorth, false);
|
element: element,
|
||||||
|
target: options.target
|
||||||
|
});
|
||||||
|
|
||||||
const element = document.createElement('div');
|
button.addEventListener('click', this.handleRotateNorth.bind(this), false);
|
||||||
element.className = 'rotate-north ol-unselectable ol-control';
|
}
|
||||||
element.appendChild(button);
|
|
||||||
|
|
||||||
Control.call(this, {
|
handleRotateNorth() {
|
||||||
element: element,
|
this.getMap().getView().setRotation(0);
|
||||||
target: options.target
|
}
|
||||||
});
|
|
||||||
|
|
||||||
};
|
}
|
||||||
inherits(app.RotateNorthControl, Control);
|
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
@@ -57,12 +48,8 @@ inherits(app.RotateNorthControl, Control);
|
|||||||
|
|
||||||
|
|
||||||
const map = new Map({
|
const map = new Map({
|
||||||
controls: defaultControls({
|
controls: defaultControls().extend([
|
||||||
attributionOptions: {
|
new RotateNorthControl()
|
||||||
collapsible: false
|
|
||||||
}
|
|
||||||
}).extend([
|
|
||||||
new app.RotateNorthControl()
|
|
||||||
]),
|
]),
|
||||||
layers: [
|
layers: [
|
||||||
new TileLayer({
|
new TileLayer({
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
import {inherits} from '../src/ol/util.js';
|
|
||||||
import Feature from '../src/ol/Feature.js';
|
import Feature from '../src/ol/Feature.js';
|
||||||
import Map from '../src/ol/Map.js';
|
import Map from '../src/ol/Map.js';
|
||||||
import View from '../src/ol/View.js';
|
import View from '../src/ol/View.js';
|
||||||
@@ -9,58 +8,51 @@ import {TileJSON, Vector as VectorSource} from '../src/ol/source.js';
|
|||||||
import {Fill, Icon, Stroke, Style} from '../src/ol/style.js';
|
import {Fill, Icon, Stroke, Style} from '../src/ol/style.js';
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Define a namespace for the application.
|
|
||||||
*/
|
|
||||||
const app = {};
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @constructor
|
* @constructor
|
||||||
* @extends {module:ol/interaction/Pointer}
|
* @extends {module:ol/interaction/Pointer}
|
||||||
*/
|
*/
|
||||||
app.Drag = function() {
|
class Drag extends PointerInteraction {
|
||||||
|
constructor() {
|
||||||
|
super({
|
||||||
|
handleDownEvent: handleDownEvent,
|
||||||
|
handleDragEvent: handleDragEvent,
|
||||||
|
handleMoveEvent: handleMoveEvent,
|
||||||
|
handleUpEvent: handleUpEvent
|
||||||
|
});
|
||||||
|
|
||||||
PointerInteraction.call(this, {
|
/**
|
||||||
handleDownEvent: app.Drag.prototype.handleDownEvent,
|
* @type {module:ol/pixel~Pixel}
|
||||||
handleDragEvent: app.Drag.prototype.handleDragEvent,
|
* @private
|
||||||
handleMoveEvent: app.Drag.prototype.handleMoveEvent,
|
*/
|
||||||
handleUpEvent: app.Drag.prototype.handleUpEvent
|
this.coordinate_ = null;
|
||||||
});
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @type {module:ol/pixel~Pixel}
|
* @type {string|undefined}
|
||||||
* @private
|
* @private
|
||||||
*/
|
*/
|
||||||
this.coordinate_ = null;
|
this.cursor_ = 'pointer';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @type {string|undefined}
|
* @type {module:ol/Feature~Feature}
|
||||||
* @private
|
* @private
|
||||||
*/
|
*/
|
||||||
this.cursor_ = 'pointer';
|
this.feature_ = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @type {module:ol/Feature~Feature}
|
* @type {string|undefined}
|
||||||
* @private
|
* @private
|
||||||
*/
|
*/
|
||||||
this.feature_ = null;
|
this.previousCursor_ = undefined;
|
||||||
|
}
|
||||||
/**
|
}
|
||||||
* @type {string|undefined}
|
|
||||||
* @private
|
|
||||||
*/
|
|
||||||
this.previousCursor_ = undefined;
|
|
||||||
|
|
||||||
};
|
|
||||||
inherits(app.Drag, PointerInteraction);
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {module:ol/MapBrowserEvent~MapBrowserEvent} evt Map browser event.
|
* @param {module:ol/MapBrowserEvent~MapBrowserEvent} evt Map browser event.
|
||||||
* @return {boolean} `true` to start the drag sequence.
|
* @return {boolean} `true` to start the drag sequence.
|
||||||
*/
|
*/
|
||||||
app.Drag.prototype.handleDownEvent = function(evt) {
|
function handleDownEvent(evt) {
|
||||||
const map = evt.map;
|
const map = evt.map;
|
||||||
|
|
||||||
const feature = map.forEachFeatureAtPixel(evt.pixel,
|
const feature = map.forEachFeatureAtPixel(evt.pixel,
|
||||||
@@ -74,13 +66,13 @@ app.Drag.prototype.handleDownEvent = function(evt) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return !!feature;
|
return !!feature;
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {module:ol/MapBrowserEvent~MapBrowserEvent} evt Map browser event.
|
* @param {module:ol/MapBrowserEvent~MapBrowserEvent} evt Map browser event.
|
||||||
*/
|
*/
|
||||||
app.Drag.prototype.handleDragEvent = function(evt) {
|
function handleDragEvent(evt) {
|
||||||
const deltaX = evt.coordinate[0] - this.coordinate_[0];
|
const deltaX = evt.coordinate[0] - this.coordinate_[0];
|
||||||
const deltaY = evt.coordinate[1] - this.coordinate_[1];
|
const deltaY = evt.coordinate[1] - this.coordinate_[1];
|
||||||
|
|
||||||
@@ -89,13 +81,13 @@ app.Drag.prototype.handleDragEvent = function(evt) {
|
|||||||
|
|
||||||
this.coordinate_[0] = evt.coordinate[0];
|
this.coordinate_[0] = evt.coordinate[0];
|
||||||
this.coordinate_[1] = evt.coordinate[1];
|
this.coordinate_[1] = evt.coordinate[1];
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {module:ol/MapBrowserEvent~MapBrowserEvent} evt Event.
|
* @param {module:ol/MapBrowserEvent~MapBrowserEvent} evt Event.
|
||||||
*/
|
*/
|
||||||
app.Drag.prototype.handleMoveEvent = function(evt) {
|
function handleMoveEvent(evt) {
|
||||||
if (this.cursor_) {
|
if (this.cursor_) {
|
||||||
const map = evt.map;
|
const map = evt.map;
|
||||||
const feature = map.forEachFeatureAtPixel(evt.pixel,
|
const feature = map.forEachFeatureAtPixel(evt.pixel,
|
||||||
@@ -113,17 +105,17 @@ app.Drag.prototype.handleMoveEvent = function(evt) {
|
|||||||
this.previousCursor_ = undefined;
|
this.previousCursor_ = undefined;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return {boolean} `false` to stop the drag sequence.
|
* @return {boolean} `false` to stop the drag sequence.
|
||||||
*/
|
*/
|
||||||
app.Drag.prototype.handleUpEvent = function() {
|
function handleUpEvent() {
|
||||||
this.coordinate_ = null;
|
this.coordinate_ = null;
|
||||||
this.feature_ = null;
|
this.feature_ = null;
|
||||||
return false;
|
return false;
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
const pointFeature = new Feature(new Point([0, 0]));
|
const pointFeature = new Feature(new Point([0, 0]));
|
||||||
@@ -137,7 +129,7 @@ const polygonFeature = new Feature(
|
|||||||
|
|
||||||
|
|
||||||
const map = new Map({
|
const map = new Map({
|
||||||
interactions: defaultInteractions().extend([new app.Drag()]),
|
interactions: defaultInteractions().extend([new Drag()]),
|
||||||
layers: [
|
layers: [
|
||||||
new TileLayer({
|
new TileLayer({
|
||||||
source: new TileJSON({
|
source: new TileJSON({
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ docs: >
|
|||||||
normalize the events from the browser.
|
normalize the events from the browser.
|
||||||
tags: "device, orientation, gyronorm"
|
tags: "device, orientation, gyronorm"
|
||||||
resources:
|
resources:
|
||||||
- https://cdn.rawgit.com/dorukeker/gyronorm.js/v2.0.6/dist/gyronorm.complete.min.js
|
- https://unpkg.com/gyronorm@2.0.6/dist/gyronorm.complete.min.js
|
||||||
---
|
---
|
||||||
<div id="map" class="map"></div>
|
<div id="map" class="map"></div>
|
||||||
<p>
|
<p>
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
import Map from '../src/ol/Map.js';
|
import Map from '../src/ol/Map.js';
|
||||||
import View from '../src/ol/View.js';
|
import View from '../src/ol/View.js';
|
||||||
import {defaults as defaultControls} from '../src/ol/control.js';
|
|
||||||
import TileLayer from '../src/ol/layer/Tile.js';
|
import TileLayer from '../src/ol/layer/Tile.js';
|
||||||
import {toRadians} from '../src/ol/math.js';
|
import {toRadians} from '../src/ol/math.js';
|
||||||
import OSM from '../src/ol/source/OSM.js';
|
import OSM from '../src/ol/source/OSM.js';
|
||||||
@@ -16,11 +15,6 @@ const map = new Map({
|
|||||||
})
|
})
|
||||||
],
|
],
|
||||||
target: 'map',
|
target: 'map',
|
||||||
controls: defaultControls({
|
|
||||||
attributionOptions: {
|
|
||||||
collapsible: false
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
view: view
|
view: view
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ layout: example.html
|
|||||||
title: Drag-and-Drop Image Vector
|
title: Drag-and-Drop Image Vector
|
||||||
shortdesc: Example of using the drag-and-drop interaction with image vector rendering.
|
shortdesc: Example of using the drag-and-drop interaction with image vector rendering.
|
||||||
docs: >
|
docs: >
|
||||||
Example of using the drag-and-drop interaction with an `ol/layer/Vector` with `renderMode: 'image'``. Drag and drop GPX, GeoJSON, IGC, KML, or TopoJSON files on to the map. Each file is rendered to an image on the client.
|
Example of using the drag-and-drop interaction with an `ol/layer/Vector` with `renderMode: 'image'`. Drag and drop GPX, GeoJSON, IGC, KML, or TopoJSON files on to the map. Each file is rendered to 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:
|
cloak:
|
||||||
- key: As1HiMj1PvLPlqc_gtM7AqZfBL8ZL3VrjaS3zIb22Uvb9WKhuJObROC-qUpa81U5
|
- key: As1HiMj1PvLPlqc_gtM7AqZfBL8ZL3VrjaS3zIb22Uvb9WKhuJObROC-qUpa81U5
|
||||||
|
|||||||
@@ -4,74 +4,6 @@ import {GPX, GeoJSON, IGC, KML, TopoJSON} from '../src/ol/format.js';
|
|||||||
import {defaults as defaultInteractions, DragAndDrop} from '../src/ol/interaction.js';
|
import {defaults as defaultInteractions, DragAndDrop} from '../src/ol/interaction.js';
|
||||||
import {Vector as VectorLayer, Tile as TileLayer} from '../src/ol/layer.js';
|
import {Vector as VectorLayer, Tile as TileLayer} from '../src/ol/layer.js';
|
||||||
import {BingMaps, Vector as VectorSource} from '../src/ol/source.js';
|
import {BingMaps, Vector as VectorSource} from '../src/ol/source.js';
|
||||||
import {Circle as CircleStyle, Fill, Stroke, Style} from '../src/ol/style.js';
|
|
||||||
|
|
||||||
|
|
||||||
const defaultStyle = {
|
|
||||||
'Point': new Style({
|
|
||||||
image: new CircleStyle({
|
|
||||||
fill: new Fill({
|
|
||||||
color: 'rgba(255,255,0,0.5)'
|
|
||||||
}),
|
|
||||||
radius: 5,
|
|
||||||
stroke: new Stroke({
|
|
||||||
color: '#ff0',
|
|
||||||
width: 1
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}),
|
|
||||||
'LineString': new Style({
|
|
||||||
stroke: new Stroke({
|
|
||||||
color: '#f00',
|
|
||||||
width: 3
|
|
||||||
})
|
|
||||||
}),
|
|
||||||
'Polygon': new Style({
|
|
||||||
fill: new Fill({
|
|
||||||
color: 'rgba(0,255,255,0.5)'
|
|
||||||
}),
|
|
||||||
stroke: new Stroke({
|
|
||||||
color: '#0ff',
|
|
||||||
width: 1
|
|
||||||
})
|
|
||||||
}),
|
|
||||||
'MultiPoint': new Style({
|
|
||||||
image: new CircleStyle({
|
|
||||||
fill: new Fill({
|
|
||||||
color: 'rgba(255,0,255,0.5)'
|
|
||||||
}),
|
|
||||||
radius: 5,
|
|
||||||
stroke: new Stroke({
|
|
||||||
color: '#f0f',
|
|
||||||
width: 1
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}),
|
|
||||||
'MultiLineString': new Style({
|
|
||||||
stroke: new Stroke({
|
|
||||||
color: '#0f0',
|
|
||||||
width: 3
|
|
||||||
})
|
|
||||||
}),
|
|
||||||
'MultiPolygon': new Style({
|
|
||||||
fill: new Fill({
|
|
||||||
color: 'rgba(0,0,255,0.5)'
|
|
||||||
}),
|
|
||||||
stroke: new Stroke({
|
|
||||||
color: '#00f',
|
|
||||||
width: 1
|
|
||||||
})
|
|
||||||
})
|
|
||||||
};
|
|
||||||
|
|
||||||
const styleFunction = function(feature, resolution) {
|
|
||||||
const featureStyleFunction = feature.getStyleFunction();
|
|
||||||
if (featureStyleFunction) {
|
|
||||||
return featureStyleFunction.call(feature, resolution);
|
|
||||||
} else {
|
|
||||||
return defaultStyle[feature.getGeometry().getType()];
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
const dragAndDropInteraction = new DragAndDrop({
|
const dragAndDropInteraction = new DragAndDrop({
|
||||||
formatConstructors: [
|
formatConstructors: [
|
||||||
@@ -106,8 +38,7 @@ dragAndDropInteraction.on('addfeatures', function(event) {
|
|||||||
});
|
});
|
||||||
map.addLayer(new VectorLayer({
|
map.addLayer(new VectorLayer({
|
||||||
renderMode: 'image',
|
renderMode: 'image',
|
||||||
source: vectorSource,
|
source: vectorSource
|
||||||
style: styleFunction
|
|
||||||
}));
|
}));
|
||||||
map.getView().fit(vectorSource.getExtent());
|
map.getView().fit(vectorSource.getExtent());
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -4,74 +4,6 @@ import {GPX, GeoJSON, IGC, KML, TopoJSON} from '../src/ol/format.js';
|
|||||||
import {defaults as defaultInteractions, DragAndDrop} from '../src/ol/interaction.js';
|
import {defaults as defaultInteractions, DragAndDrop} from '../src/ol/interaction.js';
|
||||||
import {Tile as TileLayer, Vector as VectorLayer} from '../src/ol/layer.js';
|
import {Tile as TileLayer, Vector as VectorLayer} from '../src/ol/layer.js';
|
||||||
import {BingMaps, Vector as VectorSource} from '../src/ol/source.js';
|
import {BingMaps, Vector as VectorSource} from '../src/ol/source.js';
|
||||||
import {Circle as CircleStyle, Fill, Stroke, Style} from '../src/ol/style.js';
|
|
||||||
|
|
||||||
|
|
||||||
const defaultStyle = {
|
|
||||||
'Point': new Style({
|
|
||||||
image: new CircleStyle({
|
|
||||||
fill: new Fill({
|
|
||||||
color: 'rgba(255,255,0,0.5)'
|
|
||||||
}),
|
|
||||||
radius: 5,
|
|
||||||
stroke: new Stroke({
|
|
||||||
color: '#ff0',
|
|
||||||
width: 1
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}),
|
|
||||||
'LineString': new Style({
|
|
||||||
stroke: new Stroke({
|
|
||||||
color: '#f00',
|
|
||||||
width: 3
|
|
||||||
})
|
|
||||||
}),
|
|
||||||
'Polygon': new Style({
|
|
||||||
fill: new Fill({
|
|
||||||
color: 'rgba(0,255,255,0.5)'
|
|
||||||
}),
|
|
||||||
stroke: new Stroke({
|
|
||||||
color: '#0ff',
|
|
||||||
width: 1
|
|
||||||
})
|
|
||||||
}),
|
|
||||||
'MultiPoint': new Style({
|
|
||||||
image: new CircleStyle({
|
|
||||||
fill: new Fill({
|
|
||||||
color: 'rgba(255,0,255,0.5)'
|
|
||||||
}),
|
|
||||||
radius: 5,
|
|
||||||
stroke: new Stroke({
|
|
||||||
color: '#f0f',
|
|
||||||
width: 1
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}),
|
|
||||||
'MultiLineString': new Style({
|
|
||||||
stroke: new Stroke({
|
|
||||||
color: '#0f0',
|
|
||||||
width: 3
|
|
||||||
})
|
|
||||||
}),
|
|
||||||
'MultiPolygon': new Style({
|
|
||||||
fill: new Fill({
|
|
||||||
color: 'rgba(0,0,255,0.5)'
|
|
||||||
}),
|
|
||||||
stroke: new Stroke({
|
|
||||||
color: '#00f',
|
|
||||||
width: 1
|
|
||||||
})
|
|
||||||
})
|
|
||||||
};
|
|
||||||
|
|
||||||
const styleFunction = function(feature, resolution) {
|
|
||||||
const featureStyleFunction = feature.getStyleFunction();
|
|
||||||
if (featureStyleFunction) {
|
|
||||||
return featureStyleFunction.call(feature, resolution);
|
|
||||||
} else {
|
|
||||||
return defaultStyle[feature.getGeometry().getType()];
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
const dragAndDropInteraction = new DragAndDrop({
|
const dragAndDropInteraction = new DragAndDrop({
|
||||||
formatConstructors: [
|
formatConstructors: [
|
||||||
@@ -105,8 +37,7 @@ dragAndDropInteraction.on('addfeatures', function(event) {
|
|||||||
features: event.features
|
features: event.features
|
||||||
});
|
});
|
||||||
map.addLayer(new VectorLayer({
|
map.addLayer(new VectorLayer({
|
||||||
source: vectorSource,
|
source: vectorSource
|
||||||
style: styleFunction
|
|
||||||
}));
|
}));
|
||||||
map.getView().fit(vectorSource.getExtent());
|
map.getView().fit(vectorSource.getExtent());
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ tags: "draw, edit, freehand, vector"
|
|||||||
<form class="form-inline">
|
<form class="form-inline">
|
||||||
<label>Shape type </label>
|
<label>Shape type </label>
|
||||||
<select id="type">
|
<select id="type">
|
||||||
|
<option value="Circle">Circle</option>
|
||||||
<option value="Square">Square</option>
|
<option value="Square">Square</option>
|
||||||
<option value="Box">Box</option>
|
<option value="Box">Box</option>
|
||||||
<option value="Star">Star</option>
|
<option value="Star">Star</option>
|
||||||
|
|||||||
@@ -40,9 +40,6 @@ function addInteraction() {
|
|||||||
} else if (value === 'Star') {
|
} else if (value === 'Star') {
|
||||||
value = 'Circle';
|
value = 'Circle';
|
||||||
geometryFunction = function(coordinates, geometry) {
|
geometryFunction = function(coordinates, geometry) {
|
||||||
if (!geometry) {
|
|
||||||
geometry = new Polygon(null);
|
|
||||||
}
|
|
||||||
const center = coordinates[0];
|
const center = coordinates[0];
|
||||||
const last = coordinates[1];
|
const last = coordinates[1];
|
||||||
const dx = center[0] - last[0];
|
const dx = center[0] - last[0];
|
||||||
@@ -59,7 +56,11 @@ function addInteraction() {
|
|||||||
newCoordinates.push([center[0] + offsetX, center[1] + offsetY]);
|
newCoordinates.push([center[0] + offsetX, center[1] + offsetY]);
|
||||||
}
|
}
|
||||||
newCoordinates.push(newCoordinates[0].slice());
|
newCoordinates.push(newCoordinates[0].slice());
|
||||||
geometry.setCoordinates([newCoordinates]);
|
if (!geometry) {
|
||||||
|
geometry = new Polygon([newCoordinates]);
|
||||||
|
} else {
|
||||||
|
geometry.setCoordinates([newCoordinates]);
|
||||||
|
}
|
||||||
return geometry;
|
return geometry;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,7 +22,6 @@ const map = new Map({
|
|||||||
const imageStyle = new Style({
|
const imageStyle = new Style({
|
||||||
image: new CircleStyle({
|
image: new CircleStyle({
|
||||||
radius: 5,
|
radius: 5,
|
||||||
snapToPixel: false,
|
|
||||||
fill: new Fill({color: 'yellow'}),
|
fill: new Fill({color: 'yellow'}),
|
||||||
stroke: new Stroke({color: 'red', width: 1})
|
stroke: new Stroke({color: 'red', width: 1})
|
||||||
})
|
})
|
||||||
@@ -31,7 +30,6 @@ const imageStyle = new Style({
|
|||||||
const headInnerImageStyle = new Style({
|
const headInnerImageStyle = new Style({
|
||||||
image: new CircleStyle({
|
image: new CircleStyle({
|
||||||
radius: 2,
|
radius: 2,
|
||||||
snapToPixel: false,
|
|
||||||
fill: new Fill({color: 'blue'})
|
fill: new Fill({color: 'blue'})
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
@@ -39,7 +37,6 @@ const headInnerImageStyle = new Style({
|
|||||||
const headOuterImageStyle = new Style({
|
const headOuterImageStyle = new Style({
|
||||||
image: new CircleStyle({
|
image: new CircleStyle({
|
||||||
radius: 5,
|
radius: 5,
|
||||||
snapToPixel: false,
|
|
||||||
fill: new Fill({color: 'black'})
|
fill: new Fill({color: 'black'})
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
import Map from '../src/ol/Map.js';
|
import Map from '../src/ol/Map.js';
|
||||||
import View from '../src/ol/View.js';
|
import View from '../src/ol/View.js';
|
||||||
import {defaults as defaultControls} from '../src/ol/control.js';
|
|
||||||
import GeoJSON from '../src/ol/format/GeoJSON.js';
|
import GeoJSON from '../src/ol/format/GeoJSON.js';
|
||||||
import {Tile as TileLayer, Vector as VectorLayer} from '../src/ol/layer.js';
|
import {Tile as TileLayer, Vector as VectorLayer} from '../src/ol/layer.js';
|
||||||
import {OSM, Vector as VectorSource} from '../src/ol/source.js';
|
import {OSM, Vector as VectorSource} from '../src/ol/source.js';
|
||||||
@@ -18,11 +17,6 @@ const map = new Map({
|
|||||||
})
|
})
|
||||||
],
|
],
|
||||||
target: 'map',
|
target: 'map',
|
||||||
controls: defaultControls({
|
|
||||||
attributionOptions: {
|
|
||||||
collapsible: false
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
view: new View({
|
view: new View({
|
||||||
center: [0, 0],
|
center: [0, 0],
|
||||||
zoom: 2
|
zoom: 2
|
||||||
@@ -30,7 +24,7 @@ const map = new Map({
|
|||||||
});
|
});
|
||||||
|
|
||||||
document.getElementById('export-png').addEventListener('click', function() {
|
document.getElementById('export-png').addEventListener('click', function() {
|
||||||
map.once('postcompose', function(event) {
|
map.once('rendercomplete', function(event) {
|
||||||
const canvas = event.context.canvas;
|
const canvas = event.context.canvas;
|
||||||
if (navigator.msSaveBlob) {
|
if (navigator.msSaveBlob) {
|
||||||
navigator.msSaveBlob(canvas.msToBlob(), 'map.png');
|
navigator.msSaveBlob(canvas.msToBlob(), 'map.png');
|
||||||
|
|||||||
@@ -1,9 +1,7 @@
|
|||||||
import Map from '../src/ol/Map.js';
|
import Map from '../src/ol/Map.js';
|
||||||
import View from '../src/ol/View.js';
|
import View from '../src/ol/View.js';
|
||||||
import {defaults as defaultControls} from '../src/ol/control.js';
|
|
||||||
import WKT from '../src/ol/format/WKT.js';
|
import WKT from '../src/ol/format/WKT.js';
|
||||||
import {Tile as TileLayer, Vector as VectorLayer} from '../src/ol/layer.js';
|
import {Tile as TileLayer, Vector as VectorLayer} from '../src/ol/layer.js';
|
||||||
import {unByKey} from '../src/ol/Observable.js';
|
|
||||||
import {OSM, Vector as VectorSource} from '../src/ol/source.js';
|
import {OSM, Vector as VectorSource} from '../src/ol/source.js';
|
||||||
|
|
||||||
const raster = new TileLayer({
|
const raster = new TileLayer({
|
||||||
@@ -27,11 +25,6 @@ const vector = new VectorLayer({
|
|||||||
const map = new Map({
|
const map = new Map({
|
||||||
layers: [raster, vector],
|
layers: [raster, vector],
|
||||||
target: 'map',
|
target: 'map',
|
||||||
controls: defaultControls({
|
|
||||||
attributionOptions: {
|
|
||||||
collapsible: false
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
view: new View({
|
view: new View({
|
||||||
center: [0, 0],
|
center: [0, 0],
|
||||||
zoom: 2
|
zoom: 2
|
||||||
@@ -48,9 +41,6 @@ const dims = {
|
|||||||
a5: [210, 148]
|
a5: [210, 148]
|
||||||
};
|
};
|
||||||
|
|
||||||
let loading = 0;
|
|
||||||
let loaded = 0;
|
|
||||||
|
|
||||||
const exportButton = document.getElementById('export-pdf');
|
const exportButton = document.getElementById('export-pdf');
|
||||||
|
|
||||||
exportButton.addEventListener('click', function() {
|
exportButton.addEventListener('click', function() {
|
||||||
@@ -66,57 +56,22 @@ exportButton.addEventListener('click', function() {
|
|||||||
const size = /** @type {module:ol/size~Size} */ (map.getSize());
|
const size = /** @type {module:ol/size~Size} */ (map.getSize());
|
||||||
const extent = map.getView().calculateExtent(size);
|
const extent = map.getView().calculateExtent(size);
|
||||||
|
|
||||||
const source = raster.getSource();
|
map.once('rendercomplete', function(event) {
|
||||||
|
|
||||||
const tileLoadStart = function() {
|
|
||||||
++loading;
|
|
||||||
};
|
|
||||||
|
|
||||||
let timer;
|
|
||||||
let keys = [];
|
|
||||||
|
|
||||||
function tileLoadEndFactory(canvas) {
|
|
||||||
return () => {
|
|
||||||
++loaded;
|
|
||||||
if (timer) {
|
|
||||||
clearTimeout(timer);
|
|
||||||
timer = null;
|
|
||||||
}
|
|
||||||
if (loading === loaded) {
|
|
||||||
timer = window.setTimeout(() => {
|
|
||||||
loading = 0;
|
|
||||||
loaded = 0;
|
|
||||||
const data = canvas.toDataURL('image/jpeg');
|
|
||||||
const pdf = new jsPDF('landscape', undefined, format);
|
|
||||||
pdf.addImage(data, 'JPEG', 0, 0, dim[0], dim[1]);
|
|
||||||
pdf.save('map.pdf');
|
|
||||||
keys.forEach(unByKey);
|
|
||||||
keys = [];
|
|
||||||
map.setSize(size);
|
|
||||||
map.getView().fit(extent, {size});
|
|
||||||
map.renderSync();
|
|
||||||
exportButton.disabled = false;
|
|
||||||
document.body.style.cursor = 'auto';
|
|
||||||
}, 500);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
map.once('postcompose', function(event) {
|
|
||||||
const canvas = event.context.canvas;
|
const canvas = event.context.canvas;
|
||||||
const tileLoadEnd = tileLoadEndFactory(canvas);
|
const data = canvas.toDataURL('image/jpeg');
|
||||||
keys = [
|
const pdf = new jsPDF('landscape', undefined, format);
|
||||||
source.on('tileloadstart', tileLoadStart),
|
pdf.addImage(data, 'JPEG', 0, 0, dim[0], dim[1]);
|
||||||
source.on('tileloadend', tileLoadEnd),
|
pdf.save('map.pdf');
|
||||||
source.on('tileloaderror', tileLoadEnd)
|
// Reset original map size
|
||||||
];
|
map.setSize(size);
|
||||||
tileLoadEnd();
|
map.getView().fit(extent, {size});
|
||||||
|
exportButton.disabled = false;
|
||||||
|
document.body.style.cursor = 'auto';
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Set print size
|
||||||
const printSize = [width, height];
|
const printSize = [width, height];
|
||||||
map.setSize(printSize);
|
map.setSize(printSize);
|
||||||
map.getView().fit(extent, {size: printSize});
|
map.getView().fit(extent, {size: printSize});
|
||||||
loaded = -1;
|
|
||||||
map.renderSync();
|
|
||||||
|
|
||||||
}, false);
|
}, false);
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ import Feature from '../src/ol/Feature.js';
|
|||||||
import Map from '../src/ol/Map.js';
|
import Map from '../src/ol/Map.js';
|
||||||
import {unByKey} from '../src/ol/Observable.js';
|
import {unByKey} from '../src/ol/Observable.js';
|
||||||
import View from '../src/ol/View.js';
|
import View from '../src/ol/View.js';
|
||||||
import {defaults as defaultControls} from '../src/ol/control.js';
|
|
||||||
import {easeOut} from '../src/ol/easing.js';
|
import {easeOut} from '../src/ol/easing.js';
|
||||||
import Point from '../src/ol/geom/Point.js';
|
import Point from '../src/ol/geom/Point.js';
|
||||||
import {Tile as TileLayer, Vector as VectorLayer} from '../src/ol/layer.js';
|
import {Tile as TileLayer, Vector as VectorLayer} from '../src/ol/layer.js';
|
||||||
@@ -19,11 +18,6 @@ const map = new Map({
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
],
|
],
|
||||||
controls: defaultControls({
|
|
||||||
attributionOptions: {
|
|
||||||
collapsible: false
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
target: 'map',
|
target: 'map',
|
||||||
view: new View({
|
view: new View({
|
||||||
center: [0, 0],
|
center: [0, 0],
|
||||||
@@ -65,7 +59,6 @@ function flash(feature) {
|
|||||||
const style = new Style({
|
const style = new Style({
|
||||||
image: new CircleStyle({
|
image: new CircleStyle({
|
||||||
radius: radius,
|
radius: radius,
|
||||||
snapToPixel: false,
|
|
||||||
stroke: new Stroke({
|
stroke: new Stroke({
|
||||||
color: 'rgba(255, 0, 0, ' + opacity + ')',
|
color: 'rgba(255, 0, 0, ' + opacity + ')',
|
||||||
width: 0.25 + opacity
|
width: 0.25 + opacity
|
||||||
|
|||||||
@@ -94,7 +94,6 @@ const styles = {
|
|||||||
'geoMarker': new Style({
|
'geoMarker': new Style({
|
||||||
image: new CircleStyle({
|
image: new CircleStyle({
|
||||||
radius: 7,
|
radius: 7,
|
||||||
snapToPixel: false,
|
|
||||||
fill: new Fill({color: 'black'}),
|
fill: new Fill({color: 'black'}),
|
||||||
stroke: new Stroke({
|
stroke: new Stroke({
|
||||||
color: 'white', width: 2
|
color: 'white', width: 2
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
import Feature from '../src/ol/Feature.js';
|
import Feature from '../src/ol/Feature.js';
|
||||||
import Map from '../src/ol/Map.js';
|
import Map from '../src/ol/Map.js';
|
||||||
import View from '../src/ol/View.js';
|
import View from '../src/ol/View.js';
|
||||||
import {defaults as defaultControls} from '../src/ol/control.js';
|
|
||||||
import GeoJSON from '../src/ol/format/GeoJSON.js';
|
import GeoJSON from '../src/ol/format/GeoJSON.js';
|
||||||
import Circle from '../src/ol/geom/Circle.js';
|
import Circle from '../src/ol/geom/Circle.js';
|
||||||
import {Tile as TileLayer, Vector as VectorLayer} from '../src/ol/layer.js';
|
import {Tile as TileLayer, Vector as VectorLayer} from '../src/ol/layer.js';
|
||||||
@@ -174,11 +173,6 @@ const map = new Map({
|
|||||||
vectorLayer
|
vectorLayer
|
||||||
],
|
],
|
||||||
target: 'map',
|
target: 'map',
|
||||||
controls: defaultControls({
|
|
||||||
attributionOptions: {
|
|
||||||
collapsible: false
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
view: new View({
|
view: new View({
|
||||||
center: [0, 0],
|
center: [0, 0],
|
||||||
zoom: 2
|
zoom: 2
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ tags: "fullscreen, geolocation, orientation, mobile"
|
|||||||
<button id="geolocate">Geolocate Me!</button>
|
<button id="geolocate">Geolocate Me!</button>
|
||||||
<button id="simulate">Simulate</button>
|
<button id="simulate">Simulate</button>
|
||||||
</div>
|
</div>
|
||||||
<script src="./resources/common.js" type="text/javascript"></script>
|
<script src="common.js"></script>
|
||||||
<script src="loader.js?id=geolocation-orientation" type="text/javascript"></script>
|
<script src="geolocation-orientation.js"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ import Geolocation from '../src/ol/Geolocation.js';
|
|||||||
import Map from '../src/ol/Map.js';
|
import Map from '../src/ol/Map.js';
|
||||||
import Overlay from '../src/ol/Overlay.js';
|
import Overlay from '../src/ol/Overlay.js';
|
||||||
import View from '../src/ol/View.js';
|
import View from '../src/ol/View.js';
|
||||||
import {defaults as defaultControls} from '../src/ol/control.js';
|
|
||||||
import LineString from '../src/ol/geom/LineString.js';
|
import LineString from '../src/ol/geom/LineString.js';
|
||||||
import TileLayer from '../src/ol/layer/Tile.js';
|
import TileLayer from '../src/ol/layer/Tile.js';
|
||||||
import {fromLonLat} from '../src/ol/proj.js';
|
import {fromLonLat} from '../src/ol/proj.js';
|
||||||
@@ -22,11 +21,6 @@ const map = new Map({
|
|||||||
})
|
})
|
||||||
],
|
],
|
||||||
target: 'map',
|
target: 'map',
|
||||||
controls: defaultControls({
|
|
||||||
attributionOptions: {
|
|
||||||
collapsible: false
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
view: view
|
view: view
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ import Feature from '../src/ol/Feature.js';
|
|||||||
import Geolocation from '../src/ol/Geolocation.js';
|
import Geolocation from '../src/ol/Geolocation.js';
|
||||||
import Map from '../src/ol/Map.js';
|
import Map from '../src/ol/Map.js';
|
||||||
import View from '../src/ol/View.js';
|
import View from '../src/ol/View.js';
|
||||||
import {defaults as defaultControls} from '../src/ol/control.js';
|
|
||||||
import Point from '../src/ol/geom/Point.js';
|
import Point from '../src/ol/geom/Point.js';
|
||||||
import {Tile as TileLayer, Vector as VectorLayer} from '../src/ol/layer.js';
|
import {Tile as TileLayer, Vector as VectorLayer} from '../src/ol/layer.js';
|
||||||
import {OSM, Vector as VectorSource} from '../src/ol/source.js';
|
import {OSM, Vector as VectorSource} from '../src/ol/source.js';
|
||||||
@@ -20,11 +19,6 @@ const map = new Map({
|
|||||||
})
|
})
|
||||||
],
|
],
|
||||||
target: 'map',
|
target: 'map',
|
||||||
controls: defaultControls({
|
|
||||||
attributionOptions: {
|
|
||||||
collapsible: false
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
view: view
|
view: view
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
import Feature from '../src/ol/Feature.js';
|
import Feature from '../src/ol/Feature.js';
|
||||||
import Map from '../src/ol/Map.js';
|
import Map from '../src/ol/Map.js';
|
||||||
import View from '../src/ol/View.js';
|
import View from '../src/ol/View.js';
|
||||||
import {defaults as defaultControls} from '../src/ol/control.js';
|
|
||||||
import IGC from '../src/ol/format/IGC.js';
|
import IGC from '../src/ol/format/IGC.js';
|
||||||
import {LineString, Point} from '../src/ol/geom.js';
|
import {LineString, Point} from '../src/ol/geom.js';
|
||||||
import {Tile as TileLayer, Vector as VectorLayer} from '../src/ol/layer.js';
|
import {Tile as TileLayer, Vector as VectorLayer} from '../src/ol/layer.js';
|
||||||
@@ -93,11 +92,6 @@ const map = new Map({
|
|||||||
})
|
})
|
||||||
],
|
],
|
||||||
target: 'map',
|
target: 'map',
|
||||||
controls: defaultControls({
|
|
||||||
attributionOptions: {
|
|
||||||
collapsible: false
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
view: new View({
|
view: new View({
|
||||||
center: [703365.7089403362, 5714629.865071137],
|
center: [703365.7089403362, 5714629.865071137],
|
||||||
zoom: 9
|
zoom: 9
|
||||||
|
|||||||
@@ -101,7 +101,7 @@ imagery.on('postcompose', function(event) {
|
|||||||
* Apply a convolution kernel to canvas. This works for any size kernel, but
|
* Apply a convolution kernel to canvas. This works for any size kernel, but
|
||||||
* performance starts degrading above 3 x 3.
|
* performance starts degrading above 3 x 3.
|
||||||
* @param {CanvasRenderingContext2D} context Canvas 2d context.
|
* @param {CanvasRenderingContext2D} context Canvas 2d context.
|
||||||
* @param {Array.<number>} kernel Kernel.
|
* @param {Array<number>} kernel Kernel.
|
||||||
*/
|
*/
|
||||||
function convolve(context, kernel) {
|
function convolve(context, kernel) {
|
||||||
const canvas = context.canvas;
|
const canvas = context.canvas;
|
||||||
|
|||||||
19
examples/interaction-options.html
Normal file
19
examples/interaction-options.html
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
---
|
||||||
|
layout: example.html
|
||||||
|
title: Interaction Options
|
||||||
|
shortdesc: Shows interaction options for custom scroll and zoom behavior.
|
||||||
|
docs: >
|
||||||
|
This example uses a custom `ol/interaction/defaults` configuration:
|
||||||
|
|
||||||
|
* By default, wheel/trackpad zoom and drag panning is always active, which
|
||||||
|
can be unexpected on pages with a lot of scrollable content and an embedded
|
||||||
|
map. To perform wheel/trackpad zoom and drag-pan actions only when the map
|
||||||
|
has the focus, set `onFocusOnly: true` as option. This requires a map div
|
||||||
|
with a `tabindex` attribute set.
|
||||||
|
* By default, pinch-zoom and wheel/trackpad zoom interactions can leave the
|
||||||
|
map at fractional zoom levels. If instead you want to constrain
|
||||||
|
wheel/trackpad zooming to integer zoom levels, set
|
||||||
|
`constrainResolution: true`.
|
||||||
|
tags: "trackpad, mousewheel, zoom, scroll, interaction, fractional"
|
||||||
|
---
|
||||||
|
<div tabindex="1" id="map" class="map"></div>
|
||||||
22
examples/interaction-options.js
Normal file
22
examples/interaction-options.js
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
import Map from '../src/ol/Map.js';
|
||||||
|
import View from '../src/ol/View.js';
|
||||||
|
import {defaults as defaultInteractions} from '../src/ol/interaction.js';
|
||||||
|
import TileLayer from '../src/ol/layer/Tile.js';
|
||||||
|
import OSM from '../src/ol/source/OSM.js';
|
||||||
|
|
||||||
|
|
||||||
|
const map = new Map({
|
||||||
|
interactions: defaultInteractions({
|
||||||
|
constrainResolution: true, onFocusOnly: true
|
||||||
|
}),
|
||||||
|
layers: [
|
||||||
|
new TileLayer({
|
||||||
|
source: new OSM()
|
||||||
|
})
|
||||||
|
],
|
||||||
|
target: 'map',
|
||||||
|
view: new View({
|
||||||
|
center: [0, 0],
|
||||||
|
zoom: 2
|
||||||
|
})
|
||||||
|
});
|
||||||
@@ -7,6 +7,6 @@ docs: >
|
|||||||
with OpenLayers.
|
with OpenLayers.
|
||||||
tags: "vector, jsts, buffer"
|
tags: "vector, jsts, buffer"
|
||||||
resources:
|
resources:
|
||||||
- https://cdn.rawgit.com/bjornharrtell/jsts/gh-pages/1.6.0/jsts.min.js
|
- https://unpkg.com/jsts@2.0.2/dist/jsts.min.js
|
||||||
---
|
---
|
||||||
<div id="map" class="map"></div>
|
<div id="map" class="map"></div>
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
import Map from '../src/ol/WebGLMap.js';
|
import Map from '../src/ol/WebGLMap.js';
|
||||||
import View from '../src/ol/View.js';
|
import View from '../src/ol/View.js';
|
||||||
import {defaults as defaultControls} from '../src/ol/control.js';
|
|
||||||
import {WEBGL} from '../src/ol/has.js';
|
import {WEBGL} from '../src/ol/has.js';
|
||||||
import TileLayer from '../src/ol/layer/Tile.js';
|
import TileLayer from '../src/ol/layer/Tile.js';
|
||||||
import OSM from '../src/ol/source/OSM.js';
|
import OSM from '../src/ol/source/OSM.js';
|
||||||
@@ -20,11 +19,6 @@ if (!WEBGL) {
|
|||||||
const map = new Map({
|
const map = new Map({
|
||||||
layers: [osm],
|
layers: [osm],
|
||||||
target: 'map',
|
target: 'map',
|
||||||
controls: defaultControls({
|
|
||||||
attributionOptions: {
|
|
||||||
collapsible: false
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
view: new View({
|
view: new View({
|
||||||
center: [0, 0],
|
center: [0, 0],
|
||||||
zoom: 2
|
zoom: 2
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
import Map from '../src/ol/Map.js';
|
import Map from '../src/ol/Map.js';
|
||||||
import View from '../src/ol/View.js';
|
import View from '../src/ol/View.js';
|
||||||
import {defaults as defaultControls} from '../src/ol/control.js';
|
|
||||||
import TileLayer from '../src/ol/layer/Tile.js';
|
import TileLayer from '../src/ol/layer/Tile.js';
|
||||||
import OSM from '../src/ol/source/OSM.js';
|
import OSM from '../src/ol/source/OSM.js';
|
||||||
|
|
||||||
@@ -11,11 +10,6 @@ const osm = new TileLayer({
|
|||||||
const map = new Map({
|
const map = new Map({
|
||||||
layers: [osm],
|
layers: [osm],
|
||||||
target: 'map',
|
target: 'map',
|
||||||
controls: defaultControls({
|
|
||||||
attributionOptions: {
|
|
||||||
collapsible: false
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
view: new View({
|
view: new View({
|
||||||
center: [0, 0],
|
center: [0, 0],
|
||||||
zoom: 2
|
zoom: 2
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
import Map from '../src/ol/Map.js';
|
import Map from '../src/ol/Map.js';
|
||||||
import View from '../src/ol/View.js';
|
import View from '../src/ol/View.js';
|
||||||
import {defaults as defaultControls} from '../src/ol/control.js';
|
|
||||||
import TileLayer from '../src/ol/layer/Tile.js';
|
import TileLayer from '../src/ol/layer/Tile.js';
|
||||||
import BingMaps from '../src/ol/source/BingMaps.js';
|
import BingMaps from '../src/ol/source/BingMaps.js';
|
||||||
import OSM from '../src/ol/source/OSM.js';
|
import OSM from '../src/ol/source/OSM.js';
|
||||||
@@ -18,11 +17,6 @@ const bing = new TileLayer({
|
|||||||
const map = new Map({
|
const map = new Map({
|
||||||
layers: [osm, bing],
|
layers: [osm, bing],
|
||||||
target: 'map',
|
target: 'map',
|
||||||
controls: defaultControls({
|
|
||||||
attributionOptions: {
|
|
||||||
collapsible: false
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
view: new View({
|
view: new View({
|
||||||
center: [0, 0],
|
center: [0, 0],
|
||||||
zoom: 2
|
zoom: 2
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
import Map from '../src/ol/Map.js';
|
import Map from '../src/ol/Map.js';
|
||||||
import View from '../src/ol/View.js';
|
import View from '../src/ol/View.js';
|
||||||
import {defaults as defaultControls} from '../src/ol/control.js';
|
|
||||||
import TileLayer from '../src/ol/layer/Tile.js';
|
import TileLayer from '../src/ol/layer/Tile.js';
|
||||||
import OSM, {ATTRIBUTION} from '../src/ol/source/OSM.js';
|
import OSM, {ATTRIBUTION} from '../src/ol/source/OSM.js';
|
||||||
|
|
||||||
@@ -34,11 +33,6 @@ const map = new Map({
|
|||||||
openSeaMapLayer
|
openSeaMapLayer
|
||||||
],
|
],
|
||||||
target: 'map',
|
target: 'map',
|
||||||
controls: defaultControls({
|
|
||||||
attributionOptions: {
|
|
||||||
collapsible: false
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
view: new View({
|
view: new View({
|
||||||
maxZoom: 18,
|
maxZoom: 18,
|
||||||
center: [-244780.24508882355, 5986452.183179816],
|
center: [-244780.24508882355, 5986452.183179816],
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
import Map from '../src/ol/Map.js';
|
import Map from '../src/ol/Map.js';
|
||||||
import View from '../src/ol/View.js';
|
import View from '../src/ol/View.js';
|
||||||
import {defaults as defaultControls} from '../src/ol/control.js';
|
|
||||||
import TileLayer from '../src/ol/layer/Tile.js';
|
import TileLayer from '../src/ol/layer/Tile.js';
|
||||||
import OSM from '../src/ol/source/OSM.js';
|
import OSM from '../src/ol/source/OSM.js';
|
||||||
import TileJSON from '../src/ol/source/TileJSON.js';
|
import TileJSON from '../src/ol/source/TileJSON.js';
|
||||||
@@ -26,11 +25,6 @@ const map = new Map({
|
|||||||
})
|
})
|
||||||
],
|
],
|
||||||
target: 'map',
|
target: 'map',
|
||||||
controls: defaultControls({
|
|
||||||
attributionOptions: {
|
|
||||||
collapsible: false
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
view: new View({
|
view: new View({
|
||||||
center: [653600, 5723680],
|
center: [653600, 5723680],
|
||||||
zoom: 5
|
zoom: 5
|
||||||
|
|||||||
@@ -25,8 +25,7 @@ cloak:
|
|||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="map" class="map"></div>
|
<div id="map" class="map"></div>
|
||||||
<script src="https://code.jquery.com/jquery-2.2.3.min.js" type="text/javascript"></script>
|
<script src="common.js"></script>
|
||||||
<script src="./resources/common.js" type="text/javascript"></script>
|
<script src="mobile-full-screen.js"></script>
|
||||||
<script src="loader.js?id=mobile-full-screen" type="text/javascript"></script>
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@@ -17,11 +17,7 @@ const mousePositionControl = new MousePosition({
|
|||||||
});
|
});
|
||||||
|
|
||||||
const map = new Map({
|
const map = new Map({
|
||||||
controls: defaultControls({
|
controls: defaultControls().extend([mousePositionControl]),
|
||||||
attributionOptions: {
|
|
||||||
collapsible: false
|
|
||||||
}
|
|
||||||
}).extend([mousePositionControl]),
|
|
||||||
layers: [
|
layers: [
|
||||||
new TileLayer({
|
new TileLayer({
|
||||||
source: new OSM()
|
source: new OSM()
|
||||||
|
|||||||
@@ -1,18 +0,0 @@
|
|||||||
---
|
|
||||||
layout: example.html
|
|
||||||
title: Mousewheel/Trackpad Zoom
|
|
||||||
shortdesc: Shows advanced wheel/trackpad zoom options.
|
|
||||||
docs: >
|
|
||||||
This example uses a custom `ol/interaction/MouseWheelZoom` configuration:
|
|
||||||
|
|
||||||
* By default, wheel/trackpad zoom is always active, which can be unexpected
|
|
||||||
on pages with a lot of scrollable content and an embedded map. To perform
|
|
||||||
wheel/trackpad zoom actions only when the map has the focus, set
|
|
||||||
`condition: focus` as constructor option. This requires
|
|
||||||
a map div with a `tabindex` attribute set.
|
|
||||||
* By default, the interaction can leave the map at fractional zoom levels. If
|
|
||||||
instead you want to constrain wheel/trackpad zooming to integer zoom
|
|
||||||
levels, set `constrainResolution: true`.
|
|
||||||
tags: "trackpad, mousewheel, zoom, scroll, interaction"
|
|
||||||
---
|
|
||||||
<div tabindex="1" id="map" class="map"></div>
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
import Map from '../src/ol/Map.js';
|
|
||||||
import View from '../src/ol/View.js';
|
|
||||||
import {defaults as defaultInteractions, MouseWheelZoom} from '../src/ol/interaction.js';
|
|
||||||
import {focus} from '../src/ol/events/condition.js';
|
|
||||||
import TileLayer from '../src/ol/layer/Tile.js';
|
|
||||||
import OSM from '../src/ol/source/OSM.js';
|
|
||||||
|
|
||||||
|
|
||||||
const map = new Map({
|
|
||||||
interactions: defaultInteractions({mouseWheelZoom: false}).extend([
|
|
||||||
new MouseWheelZoom({
|
|
||||||
constrainResolution: true, // force zooming to a integer zoom
|
|
||||||
condition: focus // only wheel/trackpad zoom when the map has the focus
|
|
||||||
})
|
|
||||||
]),
|
|
||||||
layers: [
|
|
||||||
new TileLayer({
|
|
||||||
source: new OSM()
|
|
||||||
})
|
|
||||||
],
|
|
||||||
target: 'map',
|
|
||||||
view: new View({
|
|
||||||
center: [0, 0],
|
|
||||||
zoom: 2
|
|
||||||
})
|
|
||||||
});
|
|
||||||
@@ -1,6 +1,5 @@
|
|||||||
import Map from '../src/ol/Map.js';
|
import Map from '../src/ol/Map.js';
|
||||||
import View from '../src/ol/View.js';
|
import View from '../src/ol/View.js';
|
||||||
import {defaults as defaultControls} from '../src/ol/control.js';
|
|
||||||
import {getBottomLeft, getTopRight} from '../src/ol/extent.js';
|
import {getBottomLeft, getTopRight} from '../src/ol/extent.js';
|
||||||
import TileLayer from '../src/ol/layer/Tile.js';
|
import TileLayer from '../src/ol/layer/Tile.js';
|
||||||
import {toLonLat} from '../src/ol/proj.js';
|
import {toLonLat} from '../src/ol/proj.js';
|
||||||
@@ -14,11 +13,6 @@ const map = new Map({
|
|||||||
})
|
})
|
||||||
],
|
],
|
||||||
target: 'map',
|
target: 'map',
|
||||||
controls: defaultControls({
|
|
||||||
attributionOptions: {
|
|
||||||
collapsible: false
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
view: new View({
|
view: new View({
|
||||||
center: [0, 0],
|
center: [0, 0],
|
||||||
zoom: 2
|
zoom: 2
|
||||||
|
|||||||
@@ -6,11 +6,7 @@ import OSM from '../src/ol/source/OSM.js';
|
|||||||
|
|
||||||
|
|
||||||
const map = new Map({
|
const map = new Map({
|
||||||
controls: defaultControls({
|
controls: defaultControls().extend([
|
||||||
attributionOptions: {
|
|
||||||
collapsible: false
|
|
||||||
}
|
|
||||||
}).extend([
|
|
||||||
new ZoomToExtent({
|
new ZoomToExtent({
|
||||||
extent: [
|
extent: [
|
||||||
813079.7791264898, 5929220.284081122,
|
813079.7791264898, 5929220.284081122,
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
import Map from '../src/ol/Map.js';
|
import Map from '../src/ol/Map.js';
|
||||||
import View from '../src/ol/View.js';
|
import View from '../src/ol/View.js';
|
||||||
import {defaults as defaultControls} from '../src/ol/control.js';
|
|
||||||
import TileLayer from '../src/ol/layer/Tile.js';
|
import TileLayer from '../src/ol/layer/Tile.js';
|
||||||
import OSM from '../src/ol/source/OSM.js';
|
import OSM from '../src/ol/source/OSM.js';
|
||||||
|
|
||||||
@@ -29,11 +28,6 @@ const map = new Map({
|
|||||||
source: new OSM()
|
source: new OSM()
|
||||||
})
|
})
|
||||||
],
|
],
|
||||||
controls: defaultControls({
|
|
||||||
attributionOptions: {
|
|
||||||
collapsible: false
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
target: 'map',
|
target: 'map',
|
||||||
view: new View({
|
view: new View({
|
||||||
center: center,
|
center: center,
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ const bins = 10;
|
|||||||
/**
|
/**
|
||||||
* Calculate the Vegetation Greenness Index (VGI) from an input pixel. This
|
* Calculate the Vegetation Greenness Index (VGI) from an input pixel. This
|
||||||
* is a rough estimate assuming that pixel values correspond to reflectance.
|
* is a rough estimate assuming that pixel values correspond to reflectance.
|
||||||
* @param {Array.<number>} pixel An array of [R, G, B, A] values.
|
* @param {Array<number>} pixel An array of [R, G, B, A] values.
|
||||||
* @return {number} The VGI value for the given pixel.
|
* @return {number} The VGI value for the given pixel.
|
||||||
*/
|
*/
|
||||||
function vgi(pixel) {
|
function vgi(pixel) {
|
||||||
|
|||||||
@@ -15,8 +15,9 @@ function createMapboxStreetsV6Style(Style, Fill, Stroke, Icon, Text) {
|
|||||||
var icon = iconCache[iconName];
|
var icon = iconCache[iconName];
|
||||||
if (!icon) {
|
if (!icon) {
|
||||||
icon = new Style({image: new Icon({
|
icon = new Style({image: new Icon({
|
||||||
src: 'https://cdn.rawgit.com/mapbox/maki/master/icons/' + iconName + '-15.svg',
|
src: 'https://unpkg.com/@mapbox/maki@4.0.0/icons/' + iconName + '-15.svg',
|
||||||
imgSize: [15, 15]
|
imgSize: [15, 15],
|
||||||
|
crossOrigin: 'anonymous'
|
||||||
})});
|
})});
|
||||||
iconCache[iconName] = icon;
|
iconCache[iconName] = icon;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
import Map from '../src/ol/Map.js';
|
import Map from '../src/ol/Map.js';
|
||||||
import View from '../src/ol/View.js';
|
import View from '../src/ol/View.js';
|
||||||
import {defaults as defaultControls} from '../src/ol/control.js';
|
|
||||||
import TileLayer from '../src/ol/layer/Tile.js';
|
import TileLayer from '../src/ol/layer/Tile.js';
|
||||||
import OSM from '../src/ol/source/OSM.js';
|
import OSM from '../src/ol/source/OSM.js';
|
||||||
|
|
||||||
@@ -12,11 +11,6 @@ const map = new Map({
|
|||||||
})
|
})
|
||||||
],
|
],
|
||||||
target: 'map',
|
target: 'map',
|
||||||
controls: defaultControls({
|
|
||||||
attributionOptions: {
|
|
||||||
collapsible: false
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
view: new View({
|
view: new View({
|
||||||
center: [14200000, 4130000],
|
center: [14200000, 4130000],
|
||||||
rotation: Math.PI / 6,
|
rotation: Math.PI / 6,
|
||||||
|
|||||||
@@ -8,11 +8,7 @@ import OSM from '../src/ol/source/OSM.js';
|
|||||||
const scaleLineControl = new ScaleLine();
|
const scaleLineControl = new ScaleLine();
|
||||||
|
|
||||||
const map = new Map({
|
const map = new Map({
|
||||||
controls: defaultControls({
|
controls: defaultControls().extend([
|
||||||
attributionOptions: {
|
|
||||||
collapsible: false
|
|
||||||
}
|
|
||||||
}).extend([
|
|
||||||
scaleLineControl
|
scaleLineControl
|
||||||
]),
|
]),
|
||||||
layers: [
|
layers: [
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import {OSM, Raster, XYZ} from '../src/ol/source.js';
|
|||||||
/**
|
/**
|
||||||
* Generates a shaded relief image given elevation data. Uses a 3x3
|
* Generates a shaded relief image given elevation data. Uses a 3x3
|
||||||
* neighborhood for determining slope and aspect.
|
* neighborhood for determining slope and aspect.
|
||||||
* @param {Array.<ImageData>} inputs Array of input images.
|
* @param {Array<ImageData>} inputs Array of input images.
|
||||||
* @param {Object} data Data added in the "beforeoperations" event.
|
* @param {Object} data Data added in the "beforeoperations" event.
|
||||||
* @return {ImageData} Output image.
|
* @return {ImageData} Output image.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -53,7 +53,9 @@ const ExampleModify = {
|
|||||||
const selectedFeatures = this.select.getFeatures();
|
const selectedFeatures = this.select.getFeatures();
|
||||||
|
|
||||||
this.select.on('change:active', function() {
|
this.select.on('change:active', function() {
|
||||||
selectedFeatures.forEach(selectedFeatures.remove, selectedFeatures);
|
selectedFeatures.forEach(function(each) {
|
||||||
|
selectedFeatures.remove(each);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
setActive: function(active) {
|
setActive: function(active) {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
layout: example.html
|
layout: example.html
|
||||||
title: Street Labels
|
title: Street Labels
|
||||||
shortdesc: Render street names with a custom render.
|
shortdesc: Render street names.
|
||||||
docs: >
|
docs: >
|
||||||
Example showing the use of a text style with `placement: 'line'` to render text along a path.
|
Example showing the use of a text style with `placement: 'line'` to render text along a path.
|
||||||
tags: "vector, label, streets"
|
tags: "vector, label, streets"
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
import Map from '../src/ol/Map.js';
|
import Map from '../src/ol/Map.js';
|
||||||
import View from '../src/ol/View.js';
|
import View from '../src/ol/View.js';
|
||||||
import {defaults as defaultControls} from '../src/ol/control.js';
|
|
||||||
import TileLayer from '../src/ol/layer/Tile.js';
|
import TileLayer from '../src/ol/layer/Tile.js';
|
||||||
import OSM from '../src/ol/source/OSM.js';
|
import OSM from '../src/ol/source/OSM.js';
|
||||||
|
|
||||||
@@ -11,11 +10,6 @@ const map = new Map({
|
|||||||
source: new OSM()
|
source: new OSM()
|
||||||
})
|
})
|
||||||
],
|
],
|
||||||
controls: defaultControls({
|
|
||||||
attributionOptions: {
|
|
||||||
collapsible: false
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
view: new View({
|
view: new View({
|
||||||
center: [0, 0],
|
center: [0, 0],
|
||||||
zoom: 2
|
zoom: 2
|
||||||
|
|||||||
@@ -1,6 +1,13 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="en-US">
|
<html lang="en-US">
|
||||||
<head>
|
<head>
|
||||||
|
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-2577926-1"></script>
|
||||||
|
<script>
|
||||||
|
window.dataLayer = window.dataLayer || [];
|
||||||
|
function gtag(){dataLayer.push(arguments);}
|
||||||
|
gtag('js', new Date());
|
||||||
|
gtag('config', 'UA-2577926-1');
|
||||||
|
</script>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=Edge">
|
||||||
<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">
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ docs: >
|
|||||||
with OpenLayers, enabling creating and editing topological geometry. Standard interaction draws edges, snapping to existing edges. Delete an edge by drawing a new edge crossing the one to delete.
|
with OpenLayers, enabling creating and editing topological geometry. Standard interaction draws edges, snapping to existing edges. Delete an edge by drawing a new edge crossing the one to delete.
|
||||||
tags: "draw, edit, vector, topology, topolis"
|
tags: "draw, edit, vector, topology, topolis"
|
||||||
resources:
|
resources:
|
||||||
- https://cdn.rawgit.com/bjornharrtell/topolis/releases/0.1.1/topolis.min.js
|
- https://unpkg.com/topolis@0.2.5/dist/topolis.js
|
||||||
- https://code.jquery.com/jquery-3.1.1.min.js
|
- https://code.jquery.com/jquery-3.1.1.min.js
|
||||||
- https://cdnjs.cloudflare.com/ajax/libs/toastr.js/2.1.3/toastr.min.js
|
- https://cdnjs.cloudflare.com/ajax/libs/toastr.js/2.1.3/toastr.min.js
|
||||||
- https://cdnjs.cloudflare.com/ajax/libs/toastr.js/2.1.3/toastr.min.css
|
- https://cdnjs.cloudflare.com/ajax/libs/toastr.js/2.1.3/toastr.min.css
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
import Map from '../src/ol/Map.js';
|
import Map from '../src/ol/Map.js';
|
||||||
import View from '../src/ol/View.js';
|
import View from '../src/ol/View.js';
|
||||||
import {defaults as defaultControls} from '../src/ol/control.js';
|
|
||||||
import OSMXML from '../src/ol/format/OSMXML.js';
|
import OSMXML from '../src/ol/format/OSMXML.js';
|
||||||
import {Tile as TileLayer, Vector as VectorLayer} from '../src/ol/layer.js';
|
import {Tile as TileLayer, Vector as VectorLayer} from '../src/ol/layer.js';
|
||||||
import {bbox as bboxStrategy} from '../src/ol/loadingstrategy.js';
|
import {bbox as bboxStrategy} from '../src/ol/loadingstrategy.js';
|
||||||
@@ -121,11 +120,6 @@ const raster = new TileLayer({
|
|||||||
map = new Map({
|
map = new Map({
|
||||||
layers: [raster, vector],
|
layers: [raster, vector],
|
||||||
target: document.getElementById('map'),
|
target: document.getElementById('map'),
|
||||||
controls: defaultControls({
|
|
||||||
attributionOptions: {
|
|
||||||
collapsible: false
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
view: new View({
|
view: new View({
|
||||||
center: [739218, 5906096],
|
center: [739218, 5906096],
|
||||||
maxZoom: 19,
|
maxZoom: 19,
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
const UglifyJsPlugin = require('uglifyjs-webpack-plugin');
|
||||||
const CopyPlugin = require('copy-webpack-plugin');
|
const CopyPlugin = require('copy-webpack-plugin');
|
||||||
const ExampleBuilder = require('./example-builder');
|
const ExampleBuilder = require('./example-builder');
|
||||||
const fs = require('fs');
|
const fs = require('fs');
|
||||||
@@ -31,6 +32,13 @@ module.exports = {
|
|||||||
}]
|
}]
|
||||||
},
|
},
|
||||||
optimization: {
|
optimization: {
|
||||||
|
minimizer: [
|
||||||
|
new UglifyJsPlugin({
|
||||||
|
sourceMap: true,
|
||||||
|
// Do not minify examples that inject code into workers
|
||||||
|
exclude: [/(color-manipulation|region-growing|raster)\.js/]
|
||||||
|
})
|
||||||
|
],
|
||||||
runtimeChunk: {
|
runtimeChunk: {
|
||||||
name: 'common'
|
name: 'common'
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ handlebars.registerHelper('indent', (text, options) => {
|
|||||||
* Create an inverted index of keywords from examples. Property names are
|
* Create an inverted index of keywords from examples. Property names are
|
||||||
* lowercased words. Property values are objects mapping example index to word
|
* lowercased words. Property values are objects mapping example index to word
|
||||||
* count.
|
* count.
|
||||||
* @param {Array.<Object>} exampleData Array of example data objects.
|
* @param {Array<Object>} exampleData Array of example data objects.
|
||||||
* @return {Object} Word index.
|
* @return {Object} Word index.
|
||||||
*/
|
*/
|
||||||
function createWordIndex(exampleData) {
|
function createWordIndex(exampleData) {
|
||||||
@@ -77,7 +77,7 @@ function getJsSource(chunk, jsName) {
|
|||||||
return jsSource;
|
return jsSource;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (module.identifier.endsWith(jsName)) {
|
if (module.identifier.endsWith(jsName) && module.source) {
|
||||||
return module.source;
|
return module.source;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
import Map from '../src/ol/Map.js';
|
import Map from '../src/ol/Map.js';
|
||||||
import View from '../src/ol/View.js';
|
import View from '../src/ol/View.js';
|
||||||
import {defaults as defaultControls} from '../src/ol/control.js';
|
|
||||||
import {getWidth} from '../src/ol/extent.js';
|
import {getWidth} from '../src/ol/extent.js';
|
||||||
import TileLayer from '../src/ol/layer/Tile.js';
|
import TileLayer from '../src/ol/layer/Tile.js';
|
||||||
import {fromLonLat, get as getProjection} from '../src/ol/proj.js';
|
import {fromLonLat, get as getProjection} from '../src/ol/proj.js';
|
||||||
@@ -10,11 +9,6 @@ import WMTSTileGrid from '../src/ol/tilegrid/WMTS.js';
|
|||||||
|
|
||||||
const map = new Map({
|
const map = new Map({
|
||||||
target: 'map',
|
target: 'map',
|
||||||
controls: defaultControls({
|
|
||||||
attributionOptions: {
|
|
||||||
collapsible: false
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
view: new View({
|
view: new View({
|
||||||
zoom: 5,
|
zoom: 5,
|
||||||
center: fromLonLat([5, 45])
|
center: fromLonLat([5, 45])
|
||||||
@@ -37,12 +31,11 @@ const tileGrid = new WMTSTileGrid({
|
|||||||
matrixIds: matrixIds
|
matrixIds: matrixIds
|
||||||
});
|
});
|
||||||
|
|
||||||
// API key valid for 'openlayers.org' and 'localhost'.
|
// For more information about the IGN API key see
|
||||||
// Expiration date is 06/29/2018.
|
// https://geoservices.ign.fr/blog/2017/06/28/geoportail_sans_compte.html
|
||||||
const key = '2mqbg0z6cx7ube8gsou10nrt';
|
|
||||||
|
|
||||||
const ign_source = new WMTS({
|
const ign_source = new WMTS({
|
||||||
url: 'https://wxs.ign.fr/' + key + '/wmts',
|
url: 'https://wxs.ign.fr/pratique/geoportail/wmts',
|
||||||
layer: 'GEOGRAPHICALGRIDSYSTEMS.MAPS',
|
layer: 'GEOGRAPHICALGRIDSYSTEMS.MAPS',
|
||||||
matrixSet: 'PM',
|
matrixSet: 'PM',
|
||||||
format: 'image/jpeg',
|
format: 'image/jpeg',
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
import Map from '../src/ol/Map.js';
|
import Map from '../src/ol/Map.js';
|
||||||
import View from '../src/ol/View.js';
|
import View from '../src/ol/View.js';
|
||||||
import {defaults as defaultControls} from '../src/ol/control.js';
|
|
||||||
import {getWidth, getTopLeft} from '../src/ol/extent.js';
|
import {getWidth, getTopLeft} from '../src/ol/extent.js';
|
||||||
import TileLayer from '../src/ol/layer/Tile.js';
|
import TileLayer from '../src/ol/layer/Tile.js';
|
||||||
import {get as getProjection} from '../src/ol/proj.js';
|
import {get as getProjection} from '../src/ol/proj.js';
|
||||||
@@ -48,11 +47,6 @@ const map = new Map({
|
|||||||
})
|
})
|
||||||
],
|
],
|
||||||
target: 'map',
|
target: 'map',
|
||||||
controls: defaultControls({
|
|
||||||
attributionOptions: {
|
|
||||||
collapsible: false
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
view: new View({
|
view: new View({
|
||||||
center: [-11158582, 4813697],
|
center: [-11158582, 4813697],
|
||||||
zoom: 4
|
zoom: 4
|
||||||
|
|||||||
58
package.json
58
package.json
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "ol",
|
"name": "ol",
|
||||||
"version": "5.1.1",
|
"version": "5.3.0",
|
||||||
"description": "OpenLayers mapping library",
|
"description": "OpenLayers mapping library",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"map",
|
"map",
|
||||||
@@ -12,15 +12,16 @@
|
|||||||
"scripts": {
|
"scripts": {
|
||||||
"lint": "eslint tasks test src/ol examples config",
|
"lint": "eslint tasks test src/ol examples config",
|
||||||
"pretest": "npm run lint",
|
"pretest": "npm run lint",
|
||||||
"test": "npm run karma -- --single-run",
|
"test": "npm run karma -- --single-run --log-level error",
|
||||||
"karma": "karma start test/karma.config.js",
|
"karma": "karma start test/karma.config.js",
|
||||||
"serve-examples": "webpack-dev-server --config examples/webpack/config.js --mode development --watch",
|
"serve-examples": "webpack-dev-server --config examples/webpack/config.js --mode development --watch",
|
||||||
"build-examples": "webpack --config examples/webpack/config.js --mode production",
|
"build-examples": "webpack --config examples/webpack/config.js --mode production",
|
||||||
"build-package": "npm run transpile && npm run copy-css && node tasks/prepare-package && cp README.md build/ol",
|
"build-package": "npm run transpile && npm run copy-css && node tasks/prepare-package && cp README.md build/ol",
|
||||||
"build-index": "npm run build-package && node tasks/generate-index",
|
"build-index": "npm run build-package && node tasks/generate-index",
|
||||||
"build-legacy": "rm -rf build && npm run build-index && rollup --config config/rollup.js && cleancss --source-map src/ol/ol.css -o build/ol.css",
|
"build-legacy": "rm -rf build && npm run build-index && webpack --config config/webpack-config-legacy-build.js && cleancss --source-map src/ol/ol.css -o build/legacy/ol.css",
|
||||||
"copy-css": "cp src/ol/ol.css build/ol/ol.css",
|
"copy-css": "cp src/ol/ol.css build/ol/ol.css",
|
||||||
"transpile": "rm -rf build/ol && mkdir -p build && buble --input src/ol --output build/ol --no modules --sourcemap",
|
"transpile": "rm -rf build/ol && mkdir -p build && buble --input src/ol --output build/ol --no modules --sourcemap",
|
||||||
|
"typecheck": "tsc --pretty",
|
||||||
"apidoc": "jsdoc config/jsdoc/api/index.md -c config/jsdoc/api/conf.json -P package.json -d build/apidoc"
|
"apidoc": "jsdoc config/jsdoc/api/index.md -c config/jsdoc/api/conf.json -P package.json -d build/apidoc"
|
||||||
},
|
},
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
@@ -38,51 +39,64 @@
|
|||||||
"rbush": "2.0.2"
|
"rbush": "2.0.2"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"@openlayers/eslint-plugin": "^4.0.0-beta.1",
|
||||||
|
"@types/arcgis-rest-api": "^10.4.3",
|
||||||
|
"@types/geojson": "^7946.0.4",
|
||||||
|
"@types/rbush": "^2.0.2",
|
||||||
|
"@types/topojson-specification": "^1.0.0",
|
||||||
"buble": "^0.19.3",
|
"buble": "^0.19.3",
|
||||||
"buble-loader": "^0.5.1",
|
"buble-loader": "^0.5.1",
|
||||||
"chaikin-smooth": "^1.0.4",
|
"chaikin-smooth": "^1.0.4",
|
||||||
"clean-css-cli": "4.1.11",
|
"clean-css-cli": "4.2.1",
|
||||||
"copy-webpack-plugin": "^4.4.1",
|
"copy-webpack-plugin": "^4.4.1",
|
||||||
"coveralls": "3.0.1",
|
"coveralls": "3.0.1",
|
||||||
"eslint": "5.0.1",
|
"eslint": "^5.8.0",
|
||||||
"eslint-config-openlayers": "^11.0.0",
|
"eslint-config-openlayers": "^11.0.0",
|
||||||
"expect.js": "0.3.1",
|
"expect.js": "0.3.1",
|
||||||
"front-matter": "^2.1.2",
|
"front-matter": "^3.0.0",
|
||||||
"fs-extra": "^7.0.0",
|
"fs-extra": "^7.0.0",
|
||||||
"glob": "^7.1.2",
|
"glob": "^7.1.2",
|
||||||
"handlebars": "4.0.11",
|
"handlebars": "4.0.11",
|
||||||
"istanbul": "0.4.5",
|
"istanbul": "0.4.5",
|
||||||
"jquery": "3.3.1",
|
"jquery": "3.3.1",
|
||||||
"jsdoc": "3.5.5",
|
"jsdoc": "3.5.5",
|
||||||
"karma": "^2.0.0",
|
"jsdoc-plugin-typescript": "^1.0.2",
|
||||||
|
"karma": "^3.1.1",
|
||||||
"karma-chrome-launcher": "2.2.0",
|
"karma-chrome-launcher": "2.2.0",
|
||||||
"karma-coverage": "^1.1.1",
|
"karma-coverage": "^1.1.2",
|
||||||
"karma-firefox-launcher": "^1.1.0",
|
"karma-firefox-launcher": "^1.1.0",
|
||||||
"karma-mocha": "1.3.0",
|
"karma-mocha": "1.3.0",
|
||||||
"karma-sauce-launcher": "1.2.0",
|
|
||||||
"karma-sourcemap-loader": "^0.3.7",
|
"karma-sourcemap-loader": "^0.3.7",
|
||||||
"karma-webpack": "4.0.0-beta.0",
|
"karma-webpack": "^4.0.0-rc.2",
|
||||||
"marked": "0.4.0",
|
"marked": "0.5.1",
|
||||||
"mocha": "5.2.0",
|
"mocha": "5.2.0",
|
||||||
"mustache": "^2.3.0",
|
"mustache": "^3.0.0",
|
||||||
"pixelmatch": "^4.0.2",
|
"pixelmatch": "^4.0.2",
|
||||||
"proj4": "2.4.4",
|
"proj4": "2.5.0",
|
||||||
"rollup": "0.63.4",
|
"rollup": "0.66.6",
|
||||||
"rollup-plugin-buble": "0.19.2",
|
|
||||||
"rollup-plugin-commonjs": "9.1.3",
|
|
||||||
"rollup-plugin-node-resolve": "3.3.0",
|
|
||||||
"rollup-plugin-sourcemaps": "0.4.2",
|
|
||||||
"rollup-plugin-uglify": "4.0.0",
|
|
||||||
"sinon": "^6.0.0",
|
"sinon": "^6.0.0",
|
||||||
"uglifyjs-webpack-plugin": "^1.2.5",
|
"typescript": "^3.1.0-dev.20180905",
|
||||||
|
"uglifyjs-webpack-plugin": "^2.0.1",
|
||||||
"url-polyfill": "^1.0.13",
|
"url-polyfill": "^1.0.13",
|
||||||
"walk": "^2.3.9",
|
"walk": "^2.3.9",
|
||||||
"webpack": "4.16.1",
|
"webpack": "4.25.1",
|
||||||
"webpack-cli": "^3.0.8",
|
"webpack-cli": "^3.0.8",
|
||||||
"webpack-dev-server": "^3.1.4"
|
"webpack-dev-server": "^3.1.4"
|
||||||
},
|
},
|
||||||
"eslintConfig": {
|
"eslintConfig": {
|
||||||
"extends": "openlayers"
|
"extends": "openlayers",
|
||||||
|
"plugins": [
|
||||||
|
"@openlayers"
|
||||||
|
],
|
||||||
|
"rules": {
|
||||||
|
"valid-jsdoc": "off",
|
||||||
|
"@openlayers/valid-tsdoc": [
|
||||||
|
"error",
|
||||||
|
{
|
||||||
|
"requireReturn": false
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"sideEffects": [
|
"sideEffects": [
|
||||||
"ol.css"
|
"ol.css"
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ class AssertionError extends Error {
|
|||||||
* @param {number} code Error code.
|
* @param {number} code Error code.
|
||||||
*/
|
*/
|
||||||
constructor(code) {
|
constructor(code) {
|
||||||
const path = VERSION.split('-')[0];
|
const path = VERSION === 'latest' ? VERSION : 'v' + VERSION.split('-')[0];
|
||||||
const message = 'Assertion failed. See https://openlayers.org/en/' + path +
|
const message = 'Assertion failed. See https://openlayers.org/en/' + path +
|
||||||
'/doc/errors/#' + code + ' for details.';
|
'/doc/errors/#' + code + ' for details.';
|
||||||
|
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ const Property = {
|
|||||||
export class CollectionEvent extends Event {
|
export class CollectionEvent extends Event {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {module:ol/CollectionEventType} type Type.
|
* @param {CollectionEventType} type Type.
|
||||||
* @param {*=} opt_element Element.
|
* @param {*=} opt_element Element.
|
||||||
*/
|
*/
|
||||||
constructor(type, opt_element) {
|
constructor(type, opt_element) {
|
||||||
@@ -56,14 +56,16 @@ export class CollectionEvent extends Event {
|
|||||||
* Collection; they trigger events on the appropriate object, not on the
|
* Collection; they trigger events on the appropriate object, not on the
|
||||||
* Collection as a whole.
|
* Collection as a whole.
|
||||||
*
|
*
|
||||||
|
* @fires CollectionEvent
|
||||||
|
*
|
||||||
* @template T
|
* @template T
|
||||||
* @api
|
* @api
|
||||||
*/
|
*/
|
||||||
class Collection extends BaseObject {
|
class Collection extends BaseObject {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {Array.<T>=} opt_array Array.
|
* @param {Array<T>=} opt_array Array.
|
||||||
* @param {module:ol/Collection~Options=} opt_options Collection options.
|
* @param {Options=} opt_options Collection options.
|
||||||
*/
|
*/
|
||||||
constructor(opt_array, opt_options) {
|
constructor(opt_array, opt_options) {
|
||||||
|
|
||||||
@@ -79,7 +81,7 @@ class Collection extends BaseObject {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @private
|
* @private
|
||||||
* @type {!Array.<T>}
|
* @type {!Array<T>}
|
||||||
*/
|
*/
|
||||||
this.array_ = opt_array ? opt_array : [];
|
this.array_ = opt_array ? opt_array : [];
|
||||||
|
|
||||||
@@ -106,8 +108,8 @@ class Collection extends BaseObject {
|
|||||||
/**
|
/**
|
||||||
* Add elements to the collection. This pushes each item in the provided array
|
* Add elements to the collection. This pushes each item in the provided array
|
||||||
* to the end of the collection.
|
* to the end of the collection.
|
||||||
* @param {!Array.<T>} arr Array.
|
* @param {!Array<T>} arr Array.
|
||||||
* @return {module:ol/Collection.<T>} This collection.
|
* @return {Collection<T>} This collection.
|
||||||
* @api
|
* @api
|
||||||
*/
|
*/
|
||||||
extend(arr) {
|
extend(arr) {
|
||||||
@@ -119,7 +121,7 @@ class Collection extends BaseObject {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Iterate over each element, calling the provided callback.
|
* Iterate over each element, calling the provided callback.
|
||||||
* @param {function(T, number, Array.<T>): *} f The function to call
|
* @param {function(T, number, Array<T>): *} f The function to call
|
||||||
* for every element. This function takes 3 arguments (the element, the
|
* for every element. This function takes 3 arguments (the element, the
|
||||||
* index and the array). The return value is ignored.
|
* index and the array). The return value is ignored.
|
||||||
* @api
|
* @api
|
||||||
@@ -136,7 +138,7 @@ class Collection extends BaseObject {
|
|||||||
* is mutated, no events will be dispatched by the collection, and the
|
* is mutated, no events will be dispatched by the collection, and the
|
||||||
* collection's "length" property won't be in sync with the actual length
|
* collection's "length" property won't be in sync with the actual length
|
||||||
* of the array.
|
* of the array.
|
||||||
* @return {!Array.<T>} Array.
|
* @return {!Array<T>} Array.
|
||||||
* @api
|
* @api
|
||||||
*/
|
*/
|
||||||
getArray() {
|
getArray() {
|
||||||
@@ -160,7 +162,7 @@ class Collection extends BaseObject {
|
|||||||
* @api
|
* @api
|
||||||
*/
|
*/
|
||||||
getLength() {
|
getLength() {
|
||||||
return /** @type {number} */ (this.get(Property.LENGTH));
|
return this.get(Property.LENGTH);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -8,13 +8,13 @@
|
|||||||
export default {
|
export default {
|
||||||
/**
|
/**
|
||||||
* Triggered when an item is added to the collection.
|
* Triggered when an item is added to the collection.
|
||||||
* @event module:ol/Collection~CollectionEvent#add
|
* @event module:ol/Collection.CollectionEvent#add
|
||||||
* @api
|
* @api
|
||||||
*/
|
*/
|
||||||
ADD: 'add',
|
ADD: 'add',
|
||||||
/**
|
/**
|
||||||
* Triggered when an item is removed from the collection.
|
* Triggered when an item is removed from the collection.
|
||||||
* @event module:ol/Collection~CollectionEvent#remove
|
* @event module:ol/Collection.CollectionEvent#remove
|
||||||
* @api
|
* @api
|
||||||
*/
|
*/
|
||||||
REMOVE: 'remove'
|
REMOVE: 'remove'
|
||||||
|
|||||||
@@ -1,12 +1,22 @@
|
|||||||
/**
|
/**
|
||||||
* @module ol/Disposable
|
* @module ol/Disposable
|
||||||
*/
|
*/
|
||||||
import {UNDEFINED} from './functions.js';
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* @classdesc
|
||||||
* Objects that need to clean up after themselves.
|
* Objects that need to clean up after themselves.
|
||||||
*/
|
*/
|
||||||
class Disposable {
|
class Disposable {
|
||||||
|
|
||||||
|
constructor() {
|
||||||
|
/**
|
||||||
|
* The object has already been disposed.
|
||||||
|
* @type {boolean}
|
||||||
|
* @private
|
||||||
|
*/
|
||||||
|
this.disposed_ = false;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Clean up.
|
* Clean up.
|
||||||
*/
|
*/
|
||||||
@@ -16,18 +26,12 @@ class Disposable {
|
|||||||
this.disposeInternal();
|
this.disposeInternal();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Extension point for disposable objects.
|
||||||
|
* @protected
|
||||||
|
*/
|
||||||
|
disposeInternal() {}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* The object has already been disposed.
|
|
||||||
* @type {boolean}
|
|
||||||
* @private
|
|
||||||
*/
|
|
||||||
Disposable.prototype.disposed_ = false;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Extension point for disposable objects.
|
|
||||||
* @protected
|
|
||||||
*/
|
|
||||||
Disposable.prototype.disposeInternal = UNDEFINED;
|
|
||||||
export default Disposable;
|
export default Disposable;
|
||||||
|
|||||||
@@ -5,8 +5,14 @@ import {assert} from './asserts.js';
|
|||||||
import {listen, unlisten, unlistenByKey} from './events.js';
|
import {listen, unlisten, unlistenByKey} from './events.js';
|
||||||
import EventType from './events/EventType.js';
|
import EventType from './events/EventType.js';
|
||||||
import BaseObject, {getChangeEventType} from './Object.js';
|
import BaseObject, {getChangeEventType} from './Object.js';
|
||||||
import Geometry from './geom/Geometry.js';
|
|
||||||
import Style from './style/Style.js';
|
/**
|
||||||
|
* @typedef {typeof Feature|typeof import("./render/Feature.js").default} FeatureClass
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @typedef {Feature|import("./render/Feature.js").default} FeatureLike
|
||||||
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @classdesc
|
* @classdesc
|
||||||
@@ -53,9 +59,8 @@ import Style from './style/Style.js';
|
|||||||
* @api
|
* @api
|
||||||
*/
|
*/
|
||||||
class Feature extends BaseObject {
|
class Feature extends BaseObject {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {module:ol/geom/Geometry|Object.<string, *>=} opt_geometryOrProperties
|
* @param {import("./geom/Geometry.js").default|Object<string, *>=} opt_geometryOrProperties
|
||||||
* You may pass a Geometry object directly, or an object literal containing
|
* You may pass a Geometry object directly, or an object literal containing
|
||||||
* properties. If you pass an object literal, you may include a Geometry
|
* properties. If you pass an object literal, you may include a Geometry
|
||||||
* associated with a `geometry` key.
|
* associated with a `geometry` key.
|
||||||
@@ -79,19 +84,19 @@ class Feature extends BaseObject {
|
|||||||
/**
|
/**
|
||||||
* User provided style.
|
* User provided style.
|
||||||
* @private
|
* @private
|
||||||
* @type {module:ol/style/Style|Array.<module:ol/style/Style>|module:ol/style/Style~StyleFunction}
|
* @type {import("./style/Style.js").StyleLike}
|
||||||
*/
|
*/
|
||||||
this.style_ = null;
|
this.style_ = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @private
|
* @private
|
||||||
* @type {module:ol/style/Style~StyleFunction|undefined}
|
* @type {import("./style/Style.js").StyleFunction|undefined}
|
||||||
*/
|
*/
|
||||||
this.styleFunction_ = undefined;
|
this.styleFunction_ = undefined;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @private
|
* @private
|
||||||
* @type {?module:ol/events~EventsKey}
|
* @type {?import("./events.js").EventsKey}
|
||||||
*/
|
*/
|
||||||
this.geometryChangeKey_ = null;
|
this.geometryChangeKey_ = null;
|
||||||
|
|
||||||
@@ -99,13 +104,12 @@ class Feature extends BaseObject {
|
|||||||
this, getChangeEventType(this.geometryName_),
|
this, getChangeEventType(this.geometryName_),
|
||||||
this.handleGeometryChanged_, this);
|
this.handleGeometryChanged_, this);
|
||||||
|
|
||||||
if (opt_geometryOrProperties !== undefined) {
|
if (opt_geometryOrProperties) {
|
||||||
if (opt_geometryOrProperties instanceof Geometry ||
|
if (typeof /** @type {?} */ (opt_geometryOrProperties).getSimplifiedGeometry === 'function') {
|
||||||
!opt_geometryOrProperties) {
|
const geometry = /** @type {import("./geom/Geometry.js").default} */ (opt_geometryOrProperties);
|
||||||
const geometry = opt_geometryOrProperties;
|
|
||||||
this.setGeometry(geometry);
|
this.setGeometry(geometry);
|
||||||
} else {
|
} else {
|
||||||
/** @type {Object.<string, *>} */
|
/** @type {Object<string, *>} */
|
||||||
const properties = opt_geometryOrProperties;
|
const properties = opt_geometryOrProperties;
|
||||||
this.setProperties(properties);
|
this.setProperties(properties);
|
||||||
}
|
}
|
||||||
@@ -115,7 +119,7 @@ class Feature extends BaseObject {
|
|||||||
/**
|
/**
|
||||||
* Clone this feature. If the original feature has a geometry it
|
* Clone this feature. If the original feature has a geometry it
|
||||||
* is also cloned. The feature id is not set in the clone.
|
* is also cloned. The feature id is not set in the clone.
|
||||||
* @return {module:ol/Feature} The clone.
|
* @return {Feature} The clone.
|
||||||
* @api
|
* @api
|
||||||
*/
|
*/
|
||||||
clone() {
|
clone() {
|
||||||
@@ -136,13 +140,13 @@ class Feature extends BaseObject {
|
|||||||
* Get the feature's default geometry. A feature may have any number of named
|
* Get the feature's default geometry. A feature may have any number of named
|
||||||
* geometries. The "default" geometry (the one that is rendered by default) is
|
* geometries. The "default" geometry (the one that is rendered by default) is
|
||||||
* set when calling {@link module:ol/Feature~Feature#setGeometry}.
|
* set when calling {@link module:ol/Feature~Feature#setGeometry}.
|
||||||
* @return {module:ol/geom/Geometry|undefined} The default geometry for the feature.
|
* @return {import("./geom/Geometry.js").default|undefined} The default geometry for the feature.
|
||||||
* @api
|
* @api
|
||||||
* @observable
|
* @observable
|
||||||
*/
|
*/
|
||||||
getGeometry() {
|
getGeometry() {
|
||||||
return (
|
return (
|
||||||
/** @type {module:ol/geom/Geometry|undefined} */ (this.get(this.geometryName_))
|
/** @type {import("./geom/Geometry.js").default|undefined} */ (this.get(this.geometryName_))
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -171,7 +175,7 @@ class Feature extends BaseObject {
|
|||||||
/**
|
/**
|
||||||
* Get the feature's style. Will return what was provided to the
|
* Get the feature's style. Will return what was provided to the
|
||||||
* {@link module:ol/Feature~Feature#setStyle} method.
|
* {@link module:ol/Feature~Feature#setStyle} method.
|
||||||
* @return {module:ol/style/Style|Array.<module:ol/style/Style>|module:ol/style/Style~StyleFunction} The feature style.
|
* @return {import("./style/Style.js").StyleLike} The feature style.
|
||||||
* @api
|
* @api
|
||||||
*/
|
*/
|
||||||
getStyle() {
|
getStyle() {
|
||||||
@@ -180,7 +184,7 @@ class Feature extends BaseObject {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the feature's style function.
|
* Get the feature's style function.
|
||||||
* @return {module:ol/style/Style~StyleFunction|undefined} Return a function
|
* @return {import("./style/Style.js").StyleFunction|undefined} Return a function
|
||||||
* representing the current style of this feature.
|
* representing the current style of this feature.
|
||||||
* @api
|
* @api
|
||||||
*/
|
*/
|
||||||
@@ -214,7 +218,7 @@ class Feature extends BaseObject {
|
|||||||
/**
|
/**
|
||||||
* Set the default geometry for the feature. This will update the property
|
* Set the default geometry for the feature. This will update the property
|
||||||
* with the name returned by {@link module:ol/Feature~Feature#getGeometryName}.
|
* with the name returned by {@link module:ol/Feature~Feature#getGeometryName}.
|
||||||
* @param {module:ol/geom/Geometry|undefined} geometry The new geometry.
|
* @param {import("./geom/Geometry.js").default|undefined} geometry The new geometry.
|
||||||
* @api
|
* @api
|
||||||
* @observable
|
* @observable
|
||||||
*/
|
*/
|
||||||
@@ -226,7 +230,7 @@ class Feature extends BaseObject {
|
|||||||
* Set the style for the feature. This can be a single style object, an array
|
* Set the style for the feature. This can be a single style object, an array
|
||||||
* of styles, or a function that takes a resolution and returns an array of
|
* of styles, or a function that takes a resolution and returns an array of
|
||||||
* styles. If it is `null` the feature has no style (a `null` style).
|
* styles. If it is `null` the feature has no style (a `null` style).
|
||||||
* @param {module:ol/style/Style|Array.<module:ol/style/Style>|module:ol/style/Style~StyleFunction} style Style for this feature.
|
* @param {import("./style/Style.js").StyleLike} style Style for this feature.
|
||||||
* @api
|
* @api
|
||||||
* @fires module:ol/events/Event~Event#event:change
|
* @fires module:ol/events/Event~Event#event:change
|
||||||
*/
|
*/
|
||||||
@@ -272,26 +276,27 @@ class Feature extends BaseObject {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Convert the provided object into a feature style function. Functions passed
|
* Convert the provided object into a feature style function. Functions passed
|
||||||
* through unchanged. Arrays of module:ol/style/Style or single style objects wrapped
|
* through unchanged. Arrays of Style or single style objects wrapped
|
||||||
* in a new feature style function.
|
* in a new feature style function.
|
||||||
* @param {module:ol/style/Style~StyleFunction|!Array.<module:ol/style/Style>|!module:ol/style/Style} obj
|
* @param {!import("./style/Style.js").StyleFunction|!Array<import("./style/Style.js").default>|!import("./style/Style.js").default} obj
|
||||||
* A feature style function, a single style, or an array of styles.
|
* A feature style function, a single style, or an array of styles.
|
||||||
* @return {module:ol/style/Style~StyleFunction} A style function.
|
* @return {import("./style/Style.js").StyleFunction} A style function.
|
||||||
*/
|
*/
|
||||||
export function createStyleFunction(obj) {
|
export function createStyleFunction(obj) {
|
||||||
if (typeof obj === 'function') {
|
if (typeof obj === 'function') {
|
||||||
return obj;
|
return obj;
|
||||||
} else {
|
} else {
|
||||||
/**
|
/**
|
||||||
* @type {Array.<module:ol/style/Style>}
|
* @type {Array<import("./style/Style.js").default>}
|
||||||
*/
|
*/
|
||||||
let styles;
|
let styles;
|
||||||
if (Array.isArray(obj)) {
|
if (Array.isArray(obj)) {
|
||||||
styles = obj;
|
styles = obj;
|
||||||
} else {
|
} else {
|
||||||
assert(obj instanceof Style,
|
assert(typeof /** @type {?} */ (obj).getZIndex === 'function',
|
||||||
41); // Expected an `module:ol/style/Style~Style` or an array of `module:ol/style/Style~Style`
|
41); // Expected an `import("./style/Style.js").Style` or an array of `import("./style/Style.js").Style`
|
||||||
styles = [obj];
|
const style = /** @type {import("./style/Style.js").default} */ (obj);
|
||||||
|
styles = [style];
|
||||||
}
|
}
|
||||||
return function() {
|
return function() {
|
||||||
return styles;
|
return styles;
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
/**
|
/**
|
||||||
* @module ol/Geolocation
|
* @module ol/Geolocation
|
||||||
*/
|
*/
|
||||||
import GeolocationProperty from './GeolocationProperty.js';
|
|
||||||
import BaseObject, {getChangeEventType} from './Object.js';
|
import BaseObject, {getChangeEventType} from './Object.js';
|
||||||
import {listen} from './events.js';
|
import {listen} from './events.js';
|
||||||
|
import Event from './events/Event.js';
|
||||||
import EventType from './events/EventType.js';
|
import EventType from './events/EventType.js';
|
||||||
import {circular as circularPolygon} from './geom/Polygon.js';
|
import {circular as circularPolygon} from './geom/Polygon.js';
|
||||||
import {GEOLOCATION} from './has.js';
|
import {GEOLOCATION} from './has.js';
|
||||||
@@ -11,13 +11,54 @@ import {toRadians} from './math.js';
|
|||||||
import {get as getProjection, getTransformFromProjections, identityTransform} from './proj.js';
|
import {get as getProjection, getTransformFromProjections, identityTransform} from './proj.js';
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @enum {string}
|
||||||
|
*/
|
||||||
|
const Property = {
|
||||||
|
ACCURACY: 'accuracy',
|
||||||
|
ACCURACY_GEOMETRY: 'accuracyGeometry',
|
||||||
|
ALTITUDE: 'altitude',
|
||||||
|
ALTITUDE_ACCURACY: 'altitudeAccuracy',
|
||||||
|
HEADING: 'heading',
|
||||||
|
POSITION: 'position',
|
||||||
|
PROJECTION: 'projection',
|
||||||
|
SPEED: 'speed',
|
||||||
|
TRACKING: 'tracking',
|
||||||
|
TRACKING_OPTIONS: 'trackingOptions'
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @classdesc
|
||||||
|
* Events emitted on Geolocation error.
|
||||||
|
*/
|
||||||
|
class GeolocationError extends Event {
|
||||||
|
/**
|
||||||
|
* @param {PositionError} error error object.
|
||||||
|
*/
|
||||||
|
constructor(error) {
|
||||||
|
super(EventType.ERROR);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @type {number}
|
||||||
|
*/
|
||||||
|
this.code = error.code;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @type {string}
|
||||||
|
*/
|
||||||
|
this.message = error.message;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @typedef {Object} Options
|
* @typedef {Object} Options
|
||||||
* @property {boolean} [tracking=false] Start Tracking right after
|
* @property {boolean} [tracking=false] Start Tracking right after
|
||||||
* instantiation.
|
* instantiation.
|
||||||
* @property {PositionOptions} [trackingOptions] Tracking options.
|
* @property {PositionOptions} [trackingOptions] Tracking options.
|
||||||
* See http://www.w3.org/TR/geolocation-API/#position_options_interface.
|
* See http://www.w3.org/TR/geolocation-API/#position_options_interface.
|
||||||
* @property {module:ol/proj~ProjectionLike} [projection] The projection the position
|
* @property {import("./proj.js").ProjectionLike} [projection] The projection the position
|
||||||
* is reported in.
|
* is reported in.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -48,7 +89,7 @@ import {get as getProjection, getTransformFromProjections, identityTransform} fr
|
|||||||
class Geolocation extends BaseObject {
|
class Geolocation extends BaseObject {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {module:ol/Geolocation~Options=} opt_options Options.
|
* @param {Options=} opt_options Options.
|
||||||
*/
|
*/
|
||||||
constructor(opt_options) {
|
constructor(opt_options) {
|
||||||
|
|
||||||
@@ -59,13 +100,13 @@ class Geolocation extends BaseObject {
|
|||||||
/**
|
/**
|
||||||
* The unprojected (EPSG:4326) device position.
|
* The unprojected (EPSG:4326) device position.
|
||||||
* @private
|
* @private
|
||||||
* @type {module:ol/coordinate~Coordinate}
|
* @type {import("./coordinate.js").Coordinate}
|
||||||
*/
|
*/
|
||||||
this.position_ = null;
|
this.position_ = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @private
|
* @private
|
||||||
* @type {module:ol/proj~TransformFunction}
|
* @type {import("./proj.js").TransformFunction}
|
||||||
*/
|
*/
|
||||||
this.transform_ = identityTransform;
|
this.transform_ = identityTransform;
|
||||||
|
|
||||||
@@ -76,10 +117,10 @@ class Geolocation extends BaseObject {
|
|||||||
this.watchId_ = undefined;
|
this.watchId_ = undefined;
|
||||||
|
|
||||||
listen(
|
listen(
|
||||||
this, getChangeEventType(GeolocationProperty.PROJECTION),
|
this, getChangeEventType(Property.PROJECTION),
|
||||||
this.handleProjectionChanged_, this);
|
this.handleProjectionChanged_, this);
|
||||||
listen(
|
listen(
|
||||||
this, getChangeEventType(GeolocationProperty.TRACKING),
|
this, getChangeEventType(Property.TRACKING),
|
||||||
this.handleTrackingChanged_, this);
|
this.handleTrackingChanged_, this);
|
||||||
|
|
||||||
if (options.projection !== undefined) {
|
if (options.projection !== undefined) {
|
||||||
@@ -110,7 +151,7 @@ class Geolocation extends BaseObject {
|
|||||||
this.transform_ = getTransformFromProjections(
|
this.transform_ = getTransformFromProjections(
|
||||||
getProjection('EPSG:4326'), projection);
|
getProjection('EPSG:4326'), projection);
|
||||||
if (this.position_) {
|
if (this.position_) {
|
||||||
this.set(GeolocationProperty.POSITION, this.transform_(this.position_));
|
this.set(Property.POSITION, this.transform_(this.position_));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -139,13 +180,13 @@ class Geolocation extends BaseObject {
|
|||||||
*/
|
*/
|
||||||
positionChange_(position) {
|
positionChange_(position) {
|
||||||
const coords = position.coords;
|
const coords = position.coords;
|
||||||
this.set(GeolocationProperty.ACCURACY, coords.accuracy);
|
this.set(Property.ACCURACY, coords.accuracy);
|
||||||
this.set(GeolocationProperty.ALTITUDE,
|
this.set(Property.ALTITUDE,
|
||||||
coords.altitude === null ? undefined : coords.altitude);
|
coords.altitude === null ? undefined : coords.altitude);
|
||||||
this.set(GeolocationProperty.ALTITUDE_ACCURACY,
|
this.set(Property.ALTITUDE_ACCURACY,
|
||||||
coords.altitudeAccuracy === null ?
|
coords.altitudeAccuracy === null ?
|
||||||
undefined : coords.altitudeAccuracy);
|
undefined : coords.altitudeAccuracy);
|
||||||
this.set(GeolocationProperty.HEADING, coords.heading === null ?
|
this.set(Property.HEADING, coords.heading === null ?
|
||||||
undefined : toRadians(coords.heading));
|
undefined : toRadians(coords.heading));
|
||||||
if (!this.position_) {
|
if (!this.position_) {
|
||||||
this.position_ = [coords.longitude, coords.latitude];
|
this.position_ = [coords.longitude, coords.latitude];
|
||||||
@@ -154,12 +195,12 @@ class Geolocation extends BaseObject {
|
|||||||
this.position_[1] = coords.latitude;
|
this.position_[1] = coords.latitude;
|
||||||
}
|
}
|
||||||
const projectedPosition = this.transform_(this.position_);
|
const projectedPosition = this.transform_(this.position_);
|
||||||
this.set(GeolocationProperty.POSITION, projectedPosition);
|
this.set(Property.POSITION, projectedPosition);
|
||||||
this.set(GeolocationProperty.SPEED,
|
this.set(Property.SPEED,
|
||||||
coords.speed === null ? undefined : coords.speed);
|
coords.speed === null ? undefined : coords.speed);
|
||||||
const geometry = circularPolygon(this.position_, coords.accuracy);
|
const geometry = circularPolygon(this.position_, coords.accuracy);
|
||||||
geometry.applyTransform(this.transform_);
|
geometry.applyTransform(this.transform_);
|
||||||
this.set(GeolocationProperty.ACCURACY_GEOMETRY, geometry);
|
this.set(Property.ACCURACY_GEOMETRY, geometry);
|
||||||
this.changed();
|
this.changed();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -174,9 +215,8 @@ class Geolocation extends BaseObject {
|
|||||||
* @param {PositionError} error error object.
|
* @param {PositionError} error error object.
|
||||||
*/
|
*/
|
||||||
positionError_(error) {
|
positionError_(error) {
|
||||||
error.type = EventType.ERROR;
|
|
||||||
this.setTracking(false);
|
this.setTracking(false);
|
||||||
this.dispatchEvent(/** @type {{type: string, target: undefined}} */ (error));
|
this.dispatchEvent(new GeolocationError(error));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -187,18 +227,18 @@ class Geolocation extends BaseObject {
|
|||||||
* @api
|
* @api
|
||||||
*/
|
*/
|
||||||
getAccuracy() {
|
getAccuracy() {
|
||||||
return /** @type {number|undefined} */ (this.get(GeolocationProperty.ACCURACY));
|
return /** @type {number|undefined} */ (this.get(Property.ACCURACY));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get a geometry of the position accuracy.
|
* Get a geometry of the position accuracy.
|
||||||
* @return {?module:ol/geom/Polygon} A geometry of the position accuracy.
|
* @return {?import("./geom/Polygon.js").default} A geometry of the position accuracy.
|
||||||
* @observable
|
* @observable
|
||||||
* @api
|
* @api
|
||||||
*/
|
*/
|
||||||
getAccuracyGeometry() {
|
getAccuracyGeometry() {
|
||||||
return (
|
return (
|
||||||
/** @type {?module:ol/geom/Polygon} */ (this.get(GeolocationProperty.ACCURACY_GEOMETRY) || null)
|
/** @type {?import("./geom/Polygon.js").default} */ (this.get(Property.ACCURACY_GEOMETRY) || null)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -210,7 +250,7 @@ class Geolocation extends BaseObject {
|
|||||||
* @api
|
* @api
|
||||||
*/
|
*/
|
||||||
getAltitude() {
|
getAltitude() {
|
||||||
return /** @type {number|undefined} */ (this.get(GeolocationProperty.ALTITUDE));
|
return /** @type {number|undefined} */ (this.get(Property.ALTITUDE));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -221,7 +261,7 @@ class Geolocation extends BaseObject {
|
|||||||
* @api
|
* @api
|
||||||
*/
|
*/
|
||||||
getAltitudeAccuracy() {
|
getAltitudeAccuracy() {
|
||||||
return /** @type {number|undefined} */ (this.get(GeolocationProperty.ALTITUDE_ACCURACY));
|
return /** @type {number|undefined} */ (this.get(Property.ALTITUDE_ACCURACY));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -233,32 +273,32 @@ class Geolocation extends BaseObject {
|
|||||||
* @api
|
* @api
|
||||||
*/
|
*/
|
||||||
getHeading() {
|
getHeading() {
|
||||||
return /** @type {number|undefined} */ (this.get(GeolocationProperty.HEADING));
|
return /** @type {number|undefined} */ (this.get(Property.HEADING));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the position of the device.
|
* Get the position of the device.
|
||||||
* @return {module:ol/coordinate~Coordinate|undefined} The current position of the device reported
|
* @return {import("./coordinate.js").Coordinate|undefined} The current position of the device reported
|
||||||
* in the current projection.
|
* in the current projection.
|
||||||
* @observable
|
* @observable
|
||||||
* @api
|
* @api
|
||||||
*/
|
*/
|
||||||
getPosition() {
|
getPosition() {
|
||||||
return (
|
return (
|
||||||
/** @type {module:ol/coordinate~Coordinate|undefined} */ (this.get(GeolocationProperty.POSITION))
|
/** @type {import("./coordinate.js").Coordinate|undefined} */ (this.get(Property.POSITION))
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the projection associated with the position.
|
* Get the projection associated with the position.
|
||||||
* @return {module:ol/proj/Projection|undefined} The projection the position is
|
* @return {import("./proj/Projection.js").default|undefined} The projection the position is
|
||||||
* reported in.
|
* reported in.
|
||||||
* @observable
|
* @observable
|
||||||
* @api
|
* @api
|
||||||
*/
|
*/
|
||||||
getProjection() {
|
getProjection() {
|
||||||
return (
|
return (
|
||||||
/** @type {module:ol/proj/Projection|undefined} */ (this.get(GeolocationProperty.PROJECTION))
|
/** @type {import("./proj/Projection.js").default|undefined} */ (this.get(Property.PROJECTION))
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -270,7 +310,7 @@ class Geolocation extends BaseObject {
|
|||||||
* @api
|
* @api
|
||||||
*/
|
*/
|
||||||
getSpeed() {
|
getSpeed() {
|
||||||
return /** @type {number|undefined} */ (this.get(GeolocationProperty.SPEED));
|
return /** @type {number|undefined} */ (this.get(Property.SPEED));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -280,7 +320,7 @@ class Geolocation extends BaseObject {
|
|||||||
* @api
|
* @api
|
||||||
*/
|
*/
|
||||||
getTracking() {
|
getTracking() {
|
||||||
return /** @type {boolean} */ (this.get(GeolocationProperty.TRACKING));
|
return /** @type {boolean} */ (this.get(Property.TRACKING));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -293,18 +333,18 @@ class Geolocation extends BaseObject {
|
|||||||
* @api
|
* @api
|
||||||
*/
|
*/
|
||||||
getTrackingOptions() {
|
getTrackingOptions() {
|
||||||
return /** @type {PositionOptions|undefined} */ (this.get(GeolocationProperty.TRACKING_OPTIONS));
|
return /** @type {PositionOptions|undefined} */ (this.get(Property.TRACKING_OPTIONS));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the projection to use for transforming the coordinates.
|
* Set the projection to use for transforming the coordinates.
|
||||||
* @param {module:ol/proj~ProjectionLike} projection The projection the position is
|
* @param {import("./proj.js").ProjectionLike} projection The projection the position is
|
||||||
* reported in.
|
* reported in.
|
||||||
* @observable
|
* @observable
|
||||||
* @api
|
* @api
|
||||||
*/
|
*/
|
||||||
setProjection(projection) {
|
setProjection(projection) {
|
||||||
this.set(GeolocationProperty.PROJECTION, getProjection(projection));
|
this.set(Property.PROJECTION, getProjection(projection));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -314,7 +354,7 @@ class Geolocation extends BaseObject {
|
|||||||
* @api
|
* @api
|
||||||
*/
|
*/
|
||||||
setTracking(tracking) {
|
setTracking(tracking) {
|
||||||
this.set(GeolocationProperty.TRACKING, tracking);
|
this.set(Property.TRACKING, tracking);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -327,7 +367,7 @@ class Geolocation extends BaseObject {
|
|||||||
* @api
|
* @api
|
||||||
*/
|
*/
|
||||||
setTrackingOptions(options) {
|
setTrackingOptions(options) {
|
||||||
this.set(GeolocationProperty.TRACKING_OPTIONS, options);
|
this.set(Property.TRACKING_OPTIONS, options);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,19 +0,0 @@
|
|||||||
/**
|
|
||||||
* @module ol/GeolocationProperty
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @enum {string}
|
|
||||||
*/
|
|
||||||
export default {
|
|
||||||
ACCURACY: 'accuracy',
|
|
||||||
ACCURACY_GEOMETRY: 'accuracyGeometry',
|
|
||||||
ALTITUDE: 'altitude',
|
|
||||||
ALTITUDE_ACCURACY: 'altitudeAccuracy',
|
|
||||||
HEADING: 'heading',
|
|
||||||
POSITION: 'position',
|
|
||||||
PROJECTION: 'projection',
|
|
||||||
SPEED: 'speed',
|
|
||||||
TRACKING: 'tracking',
|
|
||||||
TRACKING_OPTIONS: 'trackingOptions'
|
|
||||||
};
|
|
||||||
@@ -17,7 +17,7 @@ import Text from './style/Text.js';
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @type {module:ol/style/Stroke}
|
* @type {Stroke}
|
||||||
* @private
|
* @private
|
||||||
* @const
|
* @const
|
||||||
*/
|
*/
|
||||||
@@ -26,8 +26,7 @@ const DEFAULT_STROKE_STYLE = new Stroke({
|
|||||||
});
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* TODO can be configurable
|
* @type {Array<number>}
|
||||||
* @type {Array.<number>}
|
|
||||||
* @private
|
* @private
|
||||||
*/
|
*/
|
||||||
const INTERVALS = [
|
const INTERVALS = [
|
||||||
@@ -36,13 +35,13 @@ const INTERVALS = [
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @typedef {Object} GraticuleLabelDataType
|
* @typedef {Object} GraticuleLabelDataType
|
||||||
* @property {module:ol/geom/Point} geom
|
* @property {Point} geom
|
||||||
* @property {string} text
|
* @property {string} text
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @typedef {Object} Options
|
* @typedef {Object} Options
|
||||||
* @property {module:ol/PluggableMap} [map] Reference to an
|
* @property {import("./PluggableMap.js").default} [map] Reference to an
|
||||||
* {@link module:ol/Map~Map} object.
|
* {@link module:ol/Map~Map} object.
|
||||||
* @property {number} [maxLines=100] The maximum number of meridians and
|
* @property {number} [maxLines=100] The maximum number of meridians and
|
||||||
* parallels from the center of the map. The default value of 100 means that at
|
* parallels from the center of the map. The default value of 100 means that at
|
||||||
@@ -50,7 +49,7 @@ const INTERVALS = [
|
|||||||
* appropriate for conformal projections like Spherical Mercator. If you
|
* appropriate for conformal projections like Spherical Mercator. If you
|
||||||
* increase the value, more lines will be drawn and the drawing performance will
|
* increase the value, more lines will be drawn and the drawing performance will
|
||||||
* decrease.
|
* decrease.
|
||||||
* @property {module:ol/style/Stroke} [strokeStyle='rgba(0,0,0,0.2)'] The
|
* @property {Stroke} [strokeStyle='rgba(0,0,0,0.2)'] The
|
||||||
* stroke style to use for drawing the graticule. If not provided, a not fully
|
* stroke style to use for drawing the graticule. If not provided, a not fully
|
||||||
* opaque black will be used.
|
* opaque black will be used.
|
||||||
* @property {number} [targetSize=100] The target size of the graticule cells,
|
* @property {number} [targetSize=100] The target size of the graticule cells,
|
||||||
@@ -71,7 +70,7 @@ const INTERVALS = [
|
|||||||
* @property {number} [latLabelPosition=1] Latitude label position in fractions
|
* @property {number} [latLabelPosition=1] Latitude label position in fractions
|
||||||
* (0..1) of view extent. 0 means at the left of the viewport, 1 means at the
|
* (0..1) of view extent. 0 means at the left of the viewport, 1 means at the
|
||||||
* right.
|
* right.
|
||||||
* @property {module:ol/style/Text} [lonLabelStyle] Longitude label text
|
* @property {Text} [lonLabelStyle] Longitude label text
|
||||||
* style. If not provided, the following style will be used:
|
* style. If not provided, the following style will be used:
|
||||||
* ```js
|
* ```js
|
||||||
* new Text({
|
* new Text({
|
||||||
@@ -89,7 +88,7 @@ const INTERVALS = [
|
|||||||
* Note that the default's `textBaseline` configuration will not work well for
|
* Note that the default's `textBaseline` configuration will not work well for
|
||||||
* `lonLabelPosition` configurations that position labels close to the top of
|
* `lonLabelPosition` configurations that position labels close to the top of
|
||||||
* the viewport.
|
* the viewport.
|
||||||
* @property {module:ol/style/Text} [latLabelStyle] Latitude label text style.
|
* @property {Text} [latLabelStyle] Latitude label text style.
|
||||||
* If not provided, the following style will be used:
|
* If not provided, the following style will be used:
|
||||||
* ```js
|
* ```js
|
||||||
* new Text({
|
* new Text({
|
||||||
@@ -107,6 +106,11 @@ const INTERVALS = [
|
|||||||
* Note that the default's `textAlign` configuration will not work well for
|
* Note that the default's `textAlign` configuration will not work well for
|
||||||
* `latLabelPosition` configurations that position labels close to the left of
|
* `latLabelPosition` configurations that position labels close to the left of
|
||||||
* the viewport.
|
* the viewport.
|
||||||
|
* @property {Array<number>} [intervals=[90, 45, 30, 20, 10, 5, 2, 1, 0.5, 0.2, 0.1, 0.05, 0.01, 0.005, 0.002, 0.001]]
|
||||||
|
* Intervals (in degrees) for the graticule. Example to limit graticules to 30 and 10 degrees intervals:
|
||||||
|
* ```js
|
||||||
|
* [30, 10]
|
||||||
|
* ```
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
@@ -117,25 +121,25 @@ const INTERVALS = [
|
|||||||
class Graticule {
|
class Graticule {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {module:ol/Graticule~Options=} opt_options Options.
|
* @param {Options=} opt_options Options.
|
||||||
*/
|
*/
|
||||||
constructor(opt_options) {
|
constructor(opt_options) {
|
||||||
const options = opt_options || {};
|
const options = opt_options || {};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @type {module:ol/PluggableMap}
|
* @type {import("./PluggableMap.js").default}
|
||||||
* @private
|
* @private
|
||||||
*/
|
*/
|
||||||
this.map_ = null;
|
this.map_ = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @type {?module:ol/events~EventsKey}
|
* @type {?import("./events.js").EventsKey}
|
||||||
* @private
|
* @private
|
||||||
*/
|
*/
|
||||||
this.postcomposeListenerKey_ = null;
|
this.postcomposeListenerKey_ = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @type {module:ol/proj/Projection}
|
* @type {import("./proj/Projection.js").default}
|
||||||
*/
|
*/
|
||||||
this.projection_ = null;
|
this.projection_ = null;
|
||||||
|
|
||||||
@@ -200,49 +204,49 @@ class Graticule {
|
|||||||
this.maxLines_ = options.maxLines !== undefined ? options.maxLines : 100;
|
this.maxLines_ = options.maxLines !== undefined ? options.maxLines : 100;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @type {Array.<module:ol/geom/LineString>}
|
* @type {Array<LineString>}
|
||||||
* @private
|
* @private
|
||||||
*/
|
*/
|
||||||
this.meridians_ = [];
|
this.meridians_ = [];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @type {Array.<module:ol/geom/LineString>}
|
* @type {Array<LineString>}
|
||||||
* @private
|
* @private
|
||||||
*/
|
*/
|
||||||
this.parallels_ = [];
|
this.parallels_ = [];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @type {module:ol/style/Stroke}
|
* @type {Stroke}
|
||||||
* @private
|
* @private
|
||||||
*/
|
*/
|
||||||
this.strokeStyle_ = options.strokeStyle !== undefined ? options.strokeStyle : DEFAULT_STROKE_STYLE;
|
this.strokeStyle_ = options.strokeStyle !== undefined ? options.strokeStyle : DEFAULT_STROKE_STYLE;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @type {module:ol/proj~TransformFunction|undefined}
|
* @type {import("./proj.js").TransformFunction|undefined}
|
||||||
* @private
|
* @private
|
||||||
*/
|
*/
|
||||||
this.fromLonLatTransform_ = undefined;
|
this.fromLonLatTransform_ = undefined;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @type {module:ol/proj~TransformFunction|undefined}
|
* @type {import("./proj.js").TransformFunction|undefined}
|
||||||
* @private
|
* @private
|
||||||
*/
|
*/
|
||||||
this.toLonLatTransform_ = undefined;
|
this.toLonLatTransform_ = undefined;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @type {module:ol/coordinate~Coordinate}
|
* @type {import("./coordinate.js").Coordinate}
|
||||||
* @private
|
* @private
|
||||||
*/
|
*/
|
||||||
this.projectionCenterLonLat_ = null;
|
this.projectionCenterLonLat_ = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @type {Array.<module:ol/Graticule~GraticuleLabelDataType>}
|
* @type {Array<GraticuleLabelDataType>}
|
||||||
* @private
|
* @private
|
||||||
*/
|
*/
|
||||||
this.meridiansLabels_ = null;
|
this.meridiansLabels_ = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @type {Array.<module:ol/Graticule~GraticuleLabelDataType>}
|
* @type {Array<GraticuleLabelDataType>}
|
||||||
* @private
|
* @private
|
||||||
*/
|
*/
|
||||||
this.parallelsLabels_ = null;
|
this.parallelsLabels_ = null;
|
||||||
@@ -282,7 +286,7 @@ class Graticule {
|
|||||||
options.latLabelPosition;
|
options.latLabelPosition;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @type {module:ol/style/Text}
|
* @type {Text}
|
||||||
* @private
|
* @private
|
||||||
*/
|
*/
|
||||||
this.lonLabelStyle_ = options.lonLabelStyle !== undefined ? options.lonLabelStyle :
|
this.lonLabelStyle_ = options.lonLabelStyle !== undefined ? options.lonLabelStyle :
|
||||||
@@ -299,7 +303,7 @@ class Graticule {
|
|||||||
});
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @type {module:ol/style/Text}
|
* @type {Text}
|
||||||
* @private
|
* @private
|
||||||
*/
|
*/
|
||||||
this.latLabelStyle_ = options.latLabelStyle !== undefined ? options.latLabelStyle :
|
this.latLabelStyle_ = options.latLabelStyle !== undefined ? options.latLabelStyle :
|
||||||
@@ -319,6 +323,12 @@ class Graticule {
|
|||||||
this.parallelsLabels_ = [];
|
this.parallelsLabels_ = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @type {Array<number>}
|
||||||
|
* @private
|
||||||
|
*/
|
||||||
|
this.intervals_ = options.intervals !== undefined ? options.intervals : INTERVALS;
|
||||||
|
|
||||||
this.setMap(options.map !== undefined ? options.map : null);
|
this.setMap(options.map !== undefined ? options.map : null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -327,7 +337,7 @@ class Graticule {
|
|||||||
* @param {number} minLat Minimal latitude.
|
* @param {number} minLat Minimal latitude.
|
||||||
* @param {number} maxLat Maximal latitude.
|
* @param {number} maxLat Maximal latitude.
|
||||||
* @param {number} squaredTolerance Squared tolerance.
|
* @param {number} squaredTolerance Squared tolerance.
|
||||||
* @param {module:ol/extent~Extent} extent Extent.
|
* @param {import("./extent.js").Extent} extent Extent.
|
||||||
* @param {number} index Index.
|
* @param {number} index Index.
|
||||||
* @return {number} Index.
|
* @return {number} Index.
|
||||||
* @private
|
* @private
|
||||||
@@ -348,10 +358,10 @@ class Graticule {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {module:ol/geom/LineString} lineString Meridian
|
* @param {LineString} lineString Meridian
|
||||||
* @param {module:ol/extent~Extent} extent Extent.
|
* @param {import("./extent.js").Extent} extent Extent.
|
||||||
* @param {number} index Index.
|
* @param {number} index Index.
|
||||||
* @return {module:ol/geom/Point} Meridian point.
|
* @return {Point} Meridian point.
|
||||||
* @private
|
* @private
|
||||||
*/
|
*/
|
||||||
getMeridianPoint_(lineString, extent, index) {
|
getMeridianPoint_(lineString, extent, index) {
|
||||||
@@ -364,7 +374,7 @@ class Graticule {
|
|||||||
const coordinate = [flatCoordinates[0], lat];
|
const coordinate = [flatCoordinates[0], lat];
|
||||||
let point;
|
let point;
|
||||||
if (index in this.meridiansLabels_) {
|
if (index in this.meridiansLabels_) {
|
||||||
point = this.meridiansLabels_[index];
|
point = this.meridiansLabels_[index].geom;
|
||||||
point.setCoordinates(coordinate);
|
point.setCoordinates(coordinate);
|
||||||
} else {
|
} else {
|
||||||
point = new Point(coordinate);
|
point = new Point(coordinate);
|
||||||
@@ -377,7 +387,7 @@ class Graticule {
|
|||||||
* @param {number} minLon Minimal longitude.
|
* @param {number} minLon Minimal longitude.
|
||||||
* @param {number} maxLon Maximal longitude.
|
* @param {number} maxLon Maximal longitude.
|
||||||
* @param {number} squaredTolerance Squared tolerance.
|
* @param {number} squaredTolerance Squared tolerance.
|
||||||
* @param {module:ol/extent~Extent} extent Extent.
|
* @param {import("./extent.js").Extent} extent Extent.
|
||||||
* @param {number} index Index.
|
* @param {number} index Index.
|
||||||
* @return {number} Index.
|
* @return {number} Index.
|
||||||
* @private
|
* @private
|
||||||
@@ -398,10 +408,10 @@ class Graticule {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {module:ol/geom/LineString} lineString Parallels.
|
* @param {LineString} lineString Parallels.
|
||||||
* @param {module:ol/extent~Extent} extent Extent.
|
* @param {import("./extent.js").Extent} extent Extent.
|
||||||
* @param {number} index Index.
|
* @param {number} index Index.
|
||||||
* @return {module:ol/geom/Point} Parallel point.
|
* @return {Point} Parallel point.
|
||||||
* @private
|
* @private
|
||||||
*/
|
*/
|
||||||
getParallelPoint_(lineString, extent, index) {
|
getParallelPoint_(lineString, extent, index) {
|
||||||
@@ -414,7 +424,7 @@ class Graticule {
|
|||||||
const coordinate = [lon, flatCoordinates[1]];
|
const coordinate = [lon, flatCoordinates[1]];
|
||||||
let point;
|
let point;
|
||||||
if (index in this.parallelsLabels_) {
|
if (index in this.parallelsLabels_) {
|
||||||
point = this.parallelsLabels_[index];
|
point = this.parallelsLabels_[index].geom;
|
||||||
point.setCoordinates(coordinate);
|
point.setCoordinates(coordinate);
|
||||||
} else {
|
} else {
|
||||||
point = new Point(coordinate);
|
point = new Point(coordinate);
|
||||||
@@ -423,8 +433,8 @@ class Graticule {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {module:ol/extent~Extent} extent Extent.
|
* @param {import("./extent.js").Extent} extent Extent.
|
||||||
* @param {module:ol/coordinate~Coordinate} center Center.
|
* @param {import("./coordinate.js").Coordinate} center Center.
|
||||||
* @param {number} resolution Resolution.
|
* @param {number} resolution Resolution.
|
||||||
* @param {number} squaredTolerance Squared tolerance.
|
* @param {number} squaredTolerance Squared tolerance.
|
||||||
* @private
|
* @private
|
||||||
@@ -526,12 +536,12 @@ class Graticule {
|
|||||||
const centerLat = this.projectionCenterLonLat_[1];
|
const centerLat = this.projectionCenterLonLat_[1];
|
||||||
let interval = -1;
|
let interval = -1;
|
||||||
const target = Math.pow(this.targetSize_ * resolution, 2);
|
const target = Math.pow(this.targetSize_ * resolution, 2);
|
||||||
/** @type {Array.<number>} **/
|
/** @type {Array<number>} **/
|
||||||
const p1 = [];
|
const p1 = [];
|
||||||
/** @type {Array.<number>} **/
|
/** @type {Array<number>} **/
|
||||||
const p2 = [];
|
const p2 = [];
|
||||||
for (let i = 0, ii = INTERVALS.length; i < ii; ++i) {
|
for (let i = 0, ii = this.intervals_.length; i < ii; ++i) {
|
||||||
const delta = INTERVALS[i] / 2;
|
const delta = this.intervals_[i] / 2;
|
||||||
p1[0] = centerLon - delta;
|
p1[0] = centerLon - delta;
|
||||||
p1[1] = centerLat - delta;
|
p1[1] = centerLat - delta;
|
||||||
p2[0] = centerLon + delta;
|
p2[0] = centerLon + delta;
|
||||||
@@ -542,14 +552,14 @@ class Graticule {
|
|||||||
if (dist <= target) {
|
if (dist <= target) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
interval = INTERVALS[i];
|
interval = this.intervals_[i];
|
||||||
}
|
}
|
||||||
return interval;
|
return interval;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the map associated with this graticule.
|
* Get the map associated with this graticule.
|
||||||
* @return {module:ol/PluggableMap} The map.
|
* @return {import("./PluggableMap.js").default} The map.
|
||||||
* @api
|
* @api
|
||||||
*/
|
*/
|
||||||
getMap() {
|
getMap() {
|
||||||
@@ -561,7 +571,7 @@ class Graticule {
|
|||||||
* @param {number} minLat Minimal latitude.
|
* @param {number} minLat Minimal latitude.
|
||||||
* @param {number} maxLat Maximal latitude.
|
* @param {number} maxLat Maximal latitude.
|
||||||
* @param {number} squaredTolerance Squared tolerance.
|
* @param {number} squaredTolerance Squared tolerance.
|
||||||
* @return {module:ol/geom/LineString} The meridian line string.
|
* @return {LineString} The meridian line string.
|
||||||
* @param {number} index Index.
|
* @param {number} index Index.
|
||||||
* @private
|
* @private
|
||||||
*/
|
*/
|
||||||
@@ -579,7 +589,7 @@ class Graticule {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the list of meridians. Meridians are lines of equal longitude.
|
* Get the list of meridians. Meridians are lines of equal longitude.
|
||||||
* @return {Array.<module:ol/geom/LineString>} The meridians.
|
* @return {Array<LineString>} The meridians.
|
||||||
* @api
|
* @api
|
||||||
*/
|
*/
|
||||||
getMeridians() {
|
getMeridians() {
|
||||||
@@ -591,7 +601,7 @@ class Graticule {
|
|||||||
* @param {number} minLon Minimal longitude.
|
* @param {number} minLon Minimal longitude.
|
||||||
* @param {number} maxLon Maximal longitude.
|
* @param {number} maxLon Maximal longitude.
|
||||||
* @param {number} squaredTolerance Squared tolerance.
|
* @param {number} squaredTolerance Squared tolerance.
|
||||||
* @return {module:ol/geom/LineString} The parallel line string.
|
* @return {LineString} The parallel line string.
|
||||||
* @param {number} index Index.
|
* @param {number} index Index.
|
||||||
* @private
|
* @private
|
||||||
*/
|
*/
|
||||||
@@ -609,7 +619,7 @@ class Graticule {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the list of parallels. Parallels are lines of equal latitude.
|
* Get the list of parallels. Parallels are lines of equal latitude.
|
||||||
* @return {Array.<module:ol/geom/LineString>} The parallels.
|
* @return {Array<LineString>} The parallels.
|
||||||
* @api
|
* @api
|
||||||
*/
|
*/
|
||||||
getParallels() {
|
getParallels() {
|
||||||
@@ -617,7 +627,7 @@ class Graticule {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {module:ol/render/Event} e Event.
|
* @param {import("./render/Event.js").default} e Event.
|
||||||
* @private
|
* @private
|
||||||
*/
|
*/
|
||||||
handlePostCompose_(e) {
|
handlePostCompose_(e) {
|
||||||
@@ -672,7 +682,7 @@ class Graticule {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {module:ol/proj/Projection} projection Projection.
|
* @param {import("./proj/Projection.js").default} projection Projection.
|
||||||
* @private
|
* @private
|
||||||
*/
|
*/
|
||||||
updateProjectionInfo_(projection) {
|
updateProjectionInfo_(projection) {
|
||||||
@@ -703,7 +713,7 @@ class Graticule {
|
|||||||
/**
|
/**
|
||||||
* Set the map for this graticule. The graticule will be rendered on the
|
* Set the map for this graticule. The graticule will be rendered on the
|
||||||
* provided map.
|
* provided map.
|
||||||
* @param {module:ol/PluggableMap} map Map.
|
* @param {import("./PluggableMap.js").default} map Map.
|
||||||
* @api
|
* @api
|
||||||
*/
|
*/
|
||||||
setMap(map) {
|
setMap(map) {
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ import {getHeight} from './extent.js';
|
|||||||
* post requests or - in general - through XHR requests, where the src of the
|
* post requests or - in general - through XHR requests, where the src of the
|
||||||
* image element would be set to a data URI when the content is loaded.
|
* image element would be set to a data URI when the content is loaded.
|
||||||
*
|
*
|
||||||
* @typedef {function(module:ol/Image, string)} LoadFunction
|
* @typedef {function(ImageWrapper, string)} LoadFunction
|
||||||
* @api
|
* @api
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -30,12 +30,12 @@ import {getHeight} from './extent.js';
|
|||||||
class ImageWrapper extends ImageBase {
|
class ImageWrapper extends ImageBase {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {module:ol/extent~Extent} extent Extent.
|
* @param {import("./extent.js").Extent} extent Extent.
|
||||||
* @param {number|undefined} resolution Resolution.
|
* @param {number|undefined} resolution Resolution.
|
||||||
* @param {number} pixelRatio Pixel ratio.
|
* @param {number} pixelRatio Pixel ratio.
|
||||||
* @param {string} src Image source URI.
|
* @param {string} src Image source URI.
|
||||||
* @param {?string} crossOrigin Cross origin.
|
* @param {?string} crossOrigin Cross origin.
|
||||||
* @param {module:ol/Image~LoadFunction} imageLoadFunction Image load function.
|
* @param {LoadFunction} imageLoadFunction Image load function.
|
||||||
*/
|
*/
|
||||||
constructor(extent, resolution, pixelRatio, src, crossOrigin, imageLoadFunction) {
|
constructor(extent, resolution, pixelRatio, src, crossOrigin, imageLoadFunction) {
|
||||||
|
|
||||||
@@ -58,19 +58,19 @@ class ImageWrapper extends ImageBase {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @private
|
* @private
|
||||||
* @type {Array.<module:ol/events~EventsKey>}
|
* @type {Array<import("./events.js").EventsKey>}
|
||||||
*/
|
*/
|
||||||
this.imageListenerKeys_ = null;
|
this.imageListenerKeys_ = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @protected
|
* @protected
|
||||||
* @type {module:ol/ImageState}
|
* @type {ImageState}
|
||||||
*/
|
*/
|
||||||
this.state = ImageState.IDLE;
|
this.state = ImageState.IDLE;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @private
|
* @private
|
||||||
* @type {module:ol/Image~LoadFunction}
|
* @type {LoadFunction}
|
||||||
*/
|
*/
|
||||||
this.imageLoadFunction_ = imageLoadFunction;
|
this.imageLoadFunction_ = imageLoadFunction;
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
/**
|
/**
|
||||||
* @module ol/ImageBase
|
* @module ol/ImageBase
|
||||||
*/
|
*/
|
||||||
import EventTarget from './events/EventTarget.js';
|
import {abstract} from './util.js';
|
||||||
|
import EventTarget from './events/Target.js';
|
||||||
import EventType from './events/EventType.js';
|
import EventType from './events/EventType.js';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -10,10 +11,10 @@ import EventType from './events/EventType.js';
|
|||||||
class ImageBase extends EventTarget {
|
class ImageBase extends EventTarget {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {module:ol/extent~Extent} extent Extent.
|
* @param {import("./extent.js").Extent} extent Extent.
|
||||||
* @param {number|undefined} resolution Resolution.
|
* @param {number|undefined} resolution Resolution.
|
||||||
* @param {number} pixelRatio Pixel ratio.
|
* @param {number} pixelRatio Pixel ratio.
|
||||||
* @param {module:ol/ImageState} state State.
|
* @param {import("./ImageState.js").default} state State.
|
||||||
*/
|
*/
|
||||||
constructor(extent, resolution, pixelRatio, state) {
|
constructor(extent, resolution, pixelRatio, state) {
|
||||||
|
|
||||||
@@ -21,7 +22,7 @@ class ImageBase extends EventTarget {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @protected
|
* @protected
|
||||||
* @type {module:ol/extent~Extent}
|
* @type {import("./extent.js").Extent}
|
||||||
*/
|
*/
|
||||||
this.extent = extent;
|
this.extent = extent;
|
||||||
|
|
||||||
@@ -39,7 +40,7 @@ class ImageBase extends EventTarget {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @protected
|
* @protected
|
||||||
* @type {module:ol/ImageState}
|
* @type {import("./ImageState.js").default}
|
||||||
*/
|
*/
|
||||||
this.state = state;
|
this.state = state;
|
||||||
|
|
||||||
@@ -53,7 +54,7 @@ class ImageBase extends EventTarget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return {module:ol/extent~Extent} Extent.
|
* @return {import("./extent.js").Extent} Extent.
|
||||||
*/
|
*/
|
||||||
getExtent() {
|
getExtent() {
|
||||||
return this.extent;
|
return this.extent;
|
||||||
@@ -63,7 +64,9 @@ class ImageBase extends EventTarget {
|
|||||||
* @abstract
|
* @abstract
|
||||||
* @return {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} Image.
|
* @return {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} Image.
|
||||||
*/
|
*/
|
||||||
getImage() {}
|
getImage() {
|
||||||
|
return abstract();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return {number} PixelRatio.
|
* @return {number} PixelRatio.
|
||||||
@@ -80,7 +83,7 @@ class ImageBase extends EventTarget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return {module:ol/ImageState} State.
|
* @return {import("./ImageState.js").default} State.
|
||||||
*/
|
*/
|
||||||
getState() {
|
getState() {
|
||||||
return this.state;
|
return this.state;
|
||||||
@@ -90,7 +93,9 @@ class ImageBase extends EventTarget {
|
|||||||
* Load not yet loaded URI.
|
* Load not yet loaded URI.
|
||||||
* @abstract
|
* @abstract
|
||||||
*/
|
*/
|
||||||
load() {}
|
load() {
|
||||||
|
abstract();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user