Compare commits
1195 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a73170ca1d | ||
|
|
c811bd488e | ||
|
|
ce051b78a9 | ||
|
|
1103779432 | ||
|
|
bbec759c5e | ||
|
|
a2c5ce6925 | ||
|
|
54c69ae1c6 | ||
|
|
0bd989e917 | ||
|
|
93abd6fe57 | ||
|
|
3d8f39804e | ||
|
|
b2ef54d4a7 | ||
|
|
09a324bc6b | ||
|
|
07631e4d1f | ||
|
|
4aee919de2 | ||
|
|
6cc3c47d95 | ||
|
|
55692c3da5 | ||
|
|
dbfca19e09 | ||
|
|
4324d49813 | ||
|
|
2da2ae0154 | ||
|
|
c6eca804f9 | ||
|
|
47e6918072 | ||
|
|
c1181bdfe7 | ||
|
|
9a8afff0fa | ||
|
|
0ec05f5795 | ||
|
|
6668d03122 | ||
|
|
3a6fc7a1f2 | ||
|
|
be06224756 | ||
|
|
9fe032b49c | ||
|
|
b9313e76f4 | ||
|
|
0d01a4ca0f | ||
|
|
82da43af35 | ||
|
|
967118e699 | ||
|
|
0fceb2f3e3 | ||
|
|
ccab7be20a | ||
|
|
39e3e9f915 | ||
|
|
cd5e5039e9 | ||
|
|
36fd49334c | ||
|
|
2e982deba6 | ||
|
|
2ebb1ce8fa | ||
|
|
d7bf98f49f | ||
|
|
2b09dc8b70 | ||
|
|
dbeef9f73e | ||
|
|
8a6fe81f09 | ||
|
|
4ea72c2483 | ||
|
|
d15a85c402 | ||
|
|
42da3f18dd | ||
|
|
260327341c | ||
|
|
7cb8b526a9 | ||
|
|
02016cf244 | ||
|
|
4a6317dde3 | ||
|
|
129350d863 | ||
|
|
72eb8ab5e8 | ||
|
|
5483fa3181 | ||
|
|
8c46f6d1f0 | ||
|
|
7f865b8520 | ||
|
|
dea8a340a6 | ||
|
|
06728ab0fa | ||
|
|
a80458f2c3 | ||
|
|
2451c8f1d0 | ||
|
|
431d570b91 | ||
|
|
ddba26b193 | ||
|
|
f05511cff7 | ||
|
|
e55985818f | ||
|
|
8a9d6b417f | ||
|
|
306851d6ee | ||
|
|
70dc35cc6c | ||
|
|
bfebc50a48 | ||
|
|
50b50ae21f | ||
|
|
a5625955a8 | ||
|
|
47a1aed750 | ||
|
|
4afb5bfd40 | ||
|
|
8ef9b8feea | ||
|
|
daea26ec50 | ||
|
|
1cf8631889 | ||
|
|
eefb3f9207 | ||
|
|
e6ae029d08 | ||
|
|
6ce201c429 | ||
|
|
b29e74d1ab | ||
|
|
4a73754b93 | ||
|
|
dfa3cbf4e2 | ||
|
|
29ebdde314 | ||
|
|
912e908032 | ||
|
|
53a2cf55f1 | ||
|
|
f4506d87eb | ||
|
|
22e4ba06a6 | ||
|
|
80e67bac7a | ||
|
|
b3f9e4e8ef | ||
|
|
08af207724 | ||
|
|
5ebc969599 | ||
|
|
dbeb3d2795 | ||
|
|
742a71cd4b | ||
|
|
1a1d45fdd1 | ||
|
|
da2a23aacd | ||
|
|
3c8c7db8f3 | ||
|
|
2836f9511f | ||
|
|
e2581931a7 | ||
|
|
435f93a197 | ||
|
|
27eaa0d8c0 | ||
|
|
00807ea98f | ||
|
|
a802f5937b | ||
|
|
485680919e | ||
|
|
cae6a07aa7 | ||
|
|
d33e41d322 | ||
|
|
8d59b5d301 | ||
|
|
5a6fafd85b | ||
|
|
eeb20cf4ad | ||
|
|
35a357ee80 | ||
|
|
6da92d5f71 | ||
|
|
a625d1f1a8 | ||
|
|
10f59fc81c | ||
|
|
0c9e2458e6 | ||
|
|
b8589acc6e | ||
|
|
7a800d4b39 | ||
|
|
f7b6682832 | ||
|
|
e41693816a | ||
|
|
8d5a8665b2 | ||
|
|
e235c83231 | ||
|
|
cdea7040ee | ||
|
|
0e9bd75bc6 | ||
|
|
2e2e63a3e0 | ||
|
|
a121806715 | ||
|
|
2268cbe90f | ||
|
|
82b7116f81 | ||
|
|
ab85a91efd | ||
|
|
bcfad6ea8b | ||
|
|
011285aefe | ||
|
|
850aaf96f2 | ||
|
|
d40dd695cb | ||
|
|
382c6b9832 | ||
|
|
660a661aa1 | ||
|
|
924780abf1 | ||
|
|
7d8a74ee5a | ||
|
|
02b899869d | ||
|
|
1f34f17436 | ||
|
|
f6eeee37d2 | ||
|
|
d47dc52382 | ||
|
|
4d4afa1790 | ||
|
|
1141c82da1 | ||
|
|
637cf7c65f | ||
|
|
84f083af86 | ||
|
|
90b08cdc1c | ||
|
|
623dcd881f | ||
|
|
177fcc7bcc | ||
|
|
5a1effb483 | ||
|
|
97745c50af | ||
|
|
a4e0c54200 | ||
|
|
c679e3042e | ||
|
|
b0f291973b | ||
|
|
168e6db951 | ||
|
|
ad29aa742e | ||
|
|
d2e6acd478 | ||
|
|
80d5cc87c4 | ||
|
|
fe1d01a3cb | ||
|
|
c2926df045 | ||
|
|
8dbaf29fca | ||
|
|
ffb7d72c90 | ||
|
|
e6534894fd | ||
|
|
d74bef9fd7 | ||
|
|
380690a6a3 | ||
|
|
dcf38c22e2 | ||
|
|
b81952f142 | ||
|
|
d0092ecd18 | ||
|
|
1fcb94a29c | ||
|
|
80dbedf946 | ||
|
|
609bd23eff | ||
|
|
373179ad82 | ||
|
|
88ca77b8c7 | ||
|
|
55b5d0c719 | ||
|
|
5558994827 | ||
|
|
1aafd8320d | ||
|
|
02e23e3cd0 | ||
|
|
9b8232f65b | ||
|
|
83cfb77407 | ||
|
|
590dd6f1cf | ||
|
|
01b17de36d | ||
|
|
b94b8cc40d | ||
|
|
2dd8fdb5b7 | ||
|
|
a5a0f5b98b | ||
|
|
2eb8ed047a | ||
|
|
bedec9d596 | ||
|
|
dbaf24ec39 | ||
|
|
c96c9cfc6d | ||
|
|
c692b98fa9 | ||
|
|
9fb7778156 | ||
|
|
177156c293 | ||
|
|
10af59bfce | ||
|
|
ad5f21fa5c | ||
|
|
77892c435f | ||
|
|
917359107d | ||
|
|
c4f460bcc2 | ||
|
|
c5a05f1abd | ||
|
|
ad4a258c87 | ||
|
|
6e78148174 | ||
|
|
7d8e2a7372 | ||
|
|
adbc64507f | ||
|
|
be32b0f769 | ||
|
|
57a5ffa40b | ||
|
|
9c6c14a55c | ||
|
|
ae906c7aff | ||
|
|
a7729cc602 | ||
|
|
dfe9e9b59a | ||
|
|
a6a6ce9879 | ||
|
|
0802f50bc6 | ||
|
|
9a50f9ff75 | ||
|
|
757fd8bde4 | ||
|
|
633e70b67d | ||
|
|
d4540c693d | ||
|
|
16aed2b33e | ||
|
|
0f53f61741 | ||
|
|
62461bc1d2 | ||
|
|
232f56e229 | ||
|
|
f9cf5a3523 | ||
|
|
fedb575118 | ||
|
|
2e16d04bbe | ||
|
|
f4de075c02 | ||
|
|
c54a1f5362 | ||
|
|
fdacd368f7 | ||
|
|
27b4b1fff1 | ||
|
|
3494a51578 | ||
|
|
8354d5f0a6 | ||
|
|
64aa3c25a4 | ||
|
|
68a1a497b0 | ||
|
|
3161e5bbaf | ||
|
|
8033e25663 | ||
|
|
22f0b30737 | ||
|
|
79e9dc8128 | ||
|
|
0f53d04361 | ||
|
|
ecc2a9059e | ||
|
|
f7bfee8497 | ||
|
|
16e6d13700 | ||
|
|
76726a3a6f | ||
|
|
90ee1013ad | ||
|
|
0c617abf70 | ||
|
|
50568a6394 | ||
|
|
325fac6886 | ||
|
|
7a3e11b9e4 | ||
|
|
9975528c76 | ||
|
|
c75040e7d8 | ||
|
|
99d67b1d75 | ||
|
|
35a2f90ecd | ||
|
|
080b93f1b8 | ||
|
|
521f001944 | ||
|
|
7a87c15959 | ||
|
|
ca11fd00c1 | ||
|
|
73b3213a96 | ||
|
|
3a8c873fa1 | ||
|
|
0503e3384d | ||
|
|
357d96986a | ||
|
|
d7a2446594 | ||
|
|
481645ab88 | ||
|
|
272a05ff94 | ||
|
|
bbde224f50 | ||
|
|
5c49371198 | ||
|
|
308d6e9081 | ||
|
|
510043d304 | ||
|
|
bd5fad4982 | ||
|
|
f4d8871936 | ||
|
|
34ffb7ee5b | ||
|
|
a862351702 | ||
|
|
bc3c4d905d | ||
|
|
82d0b2bb24 | ||
|
|
239b8f752e | ||
|
|
f46fdb261d | ||
|
|
b689ca2318 | ||
|
|
288a284fdd | ||
|
|
a5b3da1f8a | ||
|
|
57909a730f | ||
|
|
e398896e9e | ||
|
|
b200438a16 | ||
|
|
010dd87d49 | ||
|
|
53937642c8 | ||
|
|
6177c69a51 | ||
|
|
a0c96ea8ba | ||
|
|
d7d31ac571 | ||
|
|
f0fd866eaf | ||
|
|
6ed414e8f7 | ||
|
|
e63214a2cc | ||
|
|
199b9d4b14 | ||
|
|
0543b5a8d7 | ||
|
|
39ef72431a | ||
|
|
dc48a7d411 | ||
|
|
cd0de288e6 | ||
|
|
5e5c58b9be | ||
|
|
d7307c565b | ||
|
|
cd36c8e02f | ||
|
|
1d84bc52c6 | ||
|
|
e32e72f1a0 | ||
|
|
7729822253 | ||
|
|
5499028042 | ||
|
|
e876003684 | ||
|
|
d0e9fd68ff | ||
|
|
b920b78afe | ||
|
|
761f4318bc | ||
|
|
2d0805ca54 | ||
|
|
f73cda8ef5 | ||
|
|
c89bcae4c6 | ||
|
|
f5277c091b | ||
|
|
e2ebd05624 | ||
|
|
2306d08cf4 | ||
|
|
20e8a26b89 | ||
|
|
9abfa95735 | ||
|
|
9898112709 | ||
|
|
41cc3a58d3 | ||
|
|
8573a7ba64 | ||
|
|
b65c6f7e8e | ||
|
|
2907fc3297 | ||
|
|
85bfeda50e | ||
|
|
7a30e495ba | ||
|
|
94a4554083 | ||
|
|
abd50b8fcf | ||
|
|
ad5ce25559 | ||
|
|
efc86d59b0 | ||
|
|
37dcd79a86 | ||
|
|
ec578fa58e | ||
|
|
5c3c97ffa0 | ||
|
|
a28b128078 | ||
|
|
4c32535ff3 | ||
|
|
b03bb2c2ce | ||
|
|
dde9fb5bc4 | ||
|
|
416f7156e8 | ||
|
|
d7c732419d | ||
|
|
d9d371479a | ||
|
|
7c977e0c35 | ||
|
|
59417d4a52 | ||
|
|
9400d600ee | ||
|
|
73e88fc465 | ||
|
|
2925a9ceb3 | ||
|
|
531115b67b | ||
|
|
34efcea5b1 | ||
|
|
e1783fc788 | ||
|
|
c15aa414bd | ||
|
|
e412ba113c | ||
|
|
f118338c0a | ||
|
|
c43a46c5b7 | ||
|
|
ab59f79f6a | ||
|
|
2b0dfaeaed | ||
|
|
08a27a358e | ||
|
|
c1fb2d5d85 | ||
|
|
2ba7abc419 | ||
|
|
05339618e2 | ||
|
|
6d0cf001b9 | ||
|
|
d777edcc05 | ||
|
|
eb31b75caa | ||
|
|
f77c9180a0 | ||
|
|
f99300a83d | ||
|
|
5e6a4e8cb7 | ||
|
|
3860ef0198 | ||
|
|
ab16457d90 | ||
|
|
46a7d6c969 | ||
|
|
15922d3388 | ||
|
|
56a7f9f027 | ||
|
|
ba3570a268 | ||
|
|
8f28398684 | ||
|
|
b24e4c4f65 | ||
|
|
115b2eb937 | ||
|
|
040e67d166 | ||
|
|
53e471fd1f | ||
|
|
40ca32b393 | ||
|
|
2d3fa05b91 | ||
|
|
34428cfea6 | ||
|
|
48bcaf395f | ||
|
|
6ed8a9229f | ||
|
|
60b2290add | ||
|
|
afcc86558c | ||
|
|
0410a32868 | ||
|
|
39a26bf20f | ||
|
|
bfc3a14a2d | ||
|
|
60dfc1f96a | ||
|
|
b5966b8ff3 | ||
|
|
6469d3e864 | ||
|
|
35bd92b713 | ||
|
|
5f2b729c74 | ||
|
|
097c7b689a | ||
|
|
683e46bd58 | ||
|
|
61af120cc7 | ||
|
|
99d933b66f | ||
|
|
dd57b5a84b | ||
|
|
4987cf8ace | ||
|
|
5e42928937 | ||
|
|
cf8c72c992 | ||
|
|
5cfb1e4099 | ||
|
|
a4509e3246 | ||
|
|
9c0ea76be2 | ||
|
|
09e9759753 | ||
|
|
6726e0a98c | ||
|
|
d100ab1ef6 | ||
|
|
ba867f8ff8 | ||
|
|
bf2ff0ec8e | ||
|
|
a71946a7b5 | ||
|
|
3cb5060497 | ||
|
|
a0341f7c5b | ||
|
|
4b4f383043 | ||
|
|
0bfa59fb6f | ||
|
|
88415bae1a | ||
|
|
989b047dc1 | ||
|
|
5b13106cec | ||
|
|
b4ffc8cf75 | ||
|
|
27baa3d698 | ||
|
|
33adabf168 | ||
|
|
4476c1bb03 | ||
|
|
46e17530bc | ||
|
|
da60dafd7f | ||
|
|
d23f000846 | ||
|
|
cab34cb220 | ||
|
|
3b39ca350c | ||
|
|
2421ae0254 | ||
|
|
f3ccbeef18 | ||
|
|
2ef5f99599 | ||
|
|
1ed092e2fa | ||
|
|
e0278334e2 | ||
|
|
bd098c7821 | ||
|
|
400f754e44 | ||
|
|
d988e2871b | ||
|
|
53214f6ae1 | ||
|
|
f36c557aca | ||
|
|
98b863604b | ||
|
|
95e0e14794 | ||
|
|
f95e95a48d | ||
|
|
93cfc063c3 | ||
|
|
b44db8eb26 | ||
|
|
145505fa8a | ||
|
|
670c6d9f3f | ||
|
|
6113821d7c | ||
|
|
521f06e91c | ||
|
|
617e13f61a | ||
|
|
71370405c3 | ||
|
|
1e7f21f423 | ||
|
|
9a9901b9bd | ||
|
|
55fb814ec8 | ||
|
|
908fdbc311 | ||
|
|
83f87a1f1e | ||
|
|
682ef4ee08 | ||
|
|
ab132d5b3e | ||
|
|
5126002146 | ||
|
|
a3e3e99baa | ||
|
|
2d13f3c6e1 | ||
|
|
d6200ff625 | ||
|
|
d19dfa0775 | ||
|
|
74107816b4 | ||
|
|
f30f6da7bb | ||
|
|
f4420c5352 | ||
|
|
cdd9af8caa | ||
|
|
28c79af676 | ||
|
|
5161a99925 | ||
|
|
967cffc398 | ||
|
|
d3527bf910 | ||
|
|
13550fbb4c | ||
|
|
aeb9d45c19 | ||
|
|
738aa4c698 | ||
|
|
544953f932 | ||
|
|
66498c0da5 | ||
|
|
7ea5fb023f | ||
|
|
2a117cce8f | ||
|
|
2566c50a10 | ||
|
|
7b906b9e44 | ||
|
|
9b92fa1957 | ||
|
|
55be9b8d3c | ||
|
|
b710c1f76e | ||
|
|
a0b76a5604 | ||
|
|
42680307cc | ||
|
|
5fce1b0351 | ||
|
|
456c85979d | ||
|
|
890f83e54d | ||
|
|
ac9fb9f92c | ||
|
|
964f0f33b4 | ||
|
|
50e15dc3e7 | ||
|
|
df4b77b2bb | ||
|
|
a61e9f563c | ||
|
|
0f29ea4f0e | ||
|
|
1cad1ffab6 | ||
|
|
ea5484d676 | ||
|
|
1fdef48812 | ||
|
|
5d0b1efba7 | ||
|
|
73afb656d7 | ||
|
|
02b2cdbd27 | ||
|
|
fb820f4b81 | ||
|
|
3bdddeac1d | ||
|
|
a2c043d1b4 | ||
|
|
46bcce464f | ||
|
|
39cf0ee154 | ||
|
|
a5113715ef | ||
|
|
36f01e7b08 | ||
|
|
0dfd6da5a9 | ||
|
|
8e91d51d7c | ||
|
|
32c26c2524 | ||
|
|
44a976eb60 | ||
|
|
7abe24010a | ||
|
|
163fc2e8e6 | ||
|
|
86d0074386 | ||
|
|
44558b7c89 | ||
|
|
81acbc0f25 | ||
|
|
c69cf27218 | ||
|
|
1674fcc680 | ||
|
|
9277902535 | ||
|
|
8a08ab6463 | ||
|
|
8e90976bf2 | ||
|
|
1a6ea341fe | ||
|
|
cada78459f | ||
|
|
9271df7e1d | ||
|
|
9bdd643014 | ||
|
|
ae62f5a682 | ||
|
|
940f97e2a7 | ||
|
|
8292e0e311 | ||
|
|
f928209256 | ||
|
|
26270669df | ||
|
|
ee81a5e817 | ||
|
|
d218c4d454 | ||
|
|
81f37708c1 | ||
|
|
8b0c6196e6 | ||
|
|
93a9799e46 | ||
|
|
7f0c8fe899 | ||
|
|
b06efa387c | ||
|
|
48178f0e31 | ||
|
|
d65cabebd6 | ||
|
|
992cf2b2d6 | ||
|
|
1249b46e5d | ||
|
|
4733a5d0f9 | ||
|
|
dfe51e6195 | ||
|
|
24d1f4eac3 | ||
|
|
95bf18f6bd | ||
|
|
8b0ee6023e | ||
|
|
29fcf5f1c2 | ||
|
|
952a2cfba3 | ||
|
|
3b444978a7 | ||
|
|
13a761b7e7 | ||
|
|
89080cf8dd | ||
|
|
f1685cbe4f | ||
|
|
d3c2c7f96d | ||
|
|
bb593eaac8 | ||
|
|
bfd94445f1 | ||
|
|
7c5a208e07 | ||
|
|
b38336b17f | ||
|
|
1af4d35713 | ||
|
|
f2c51cb39e | ||
|
|
5f794ab562 | ||
|
|
f4752cee59 | ||
|
|
3629a66917 | ||
|
|
35f79f401b | ||
|
|
a58f162ed9 | ||
|
|
f3ebbf4b7c | ||
|
|
94fb7ca5a6 | ||
|
|
92c62e5432 | ||
|
|
87391e7795 | ||
|
|
87a10200e3 | ||
|
|
445c157ee3 | ||
|
|
15ddab7d0a | ||
|
|
3d72cc73b8 | ||
|
|
1b20f89c93 | ||
|
|
17b6088a79 | ||
|
|
23405b80a2 | ||
|
|
5b75666755 | ||
|
|
1c8734b150 | ||
|
|
ff9ef481db | ||
|
|
02cc7d643a | ||
|
|
efee061251 | ||
|
|
3551679a7c | ||
|
|
86eacefe19 | ||
|
|
7d260c54d3 | ||
|
|
25dca1ea3b | ||
|
|
6fd844d24c | ||
|
|
9f6839c87b | ||
|
|
e9611e6a6b | ||
|
|
b9089c00e3 | ||
|
|
388e2a93cb | ||
|
|
ac13dbccf1 | ||
|
|
1795a86f7f | ||
|
|
66da6fc150 | ||
|
|
e0eec51eb3 | ||
|
|
4b4d711dbc | ||
|
|
bb405e2919 | ||
|
|
f133f4fc3c | ||
|
|
35f22fb52c | ||
|
|
617151c8ff | ||
|
|
25e1e11550 | ||
|
|
67aa1a6dc9 | ||
|
|
3290039b32 | ||
|
|
e52ca96dc3 | ||
|
|
25b851e7cb | ||
|
|
9cbbc30ce1 | ||
|
|
2392f87113 | ||
|
|
63b14f5f32 | ||
|
|
ee7795e31d | ||
|
|
aba1045304 | ||
|
|
83c35758c8 | ||
|
|
d4d371a4c2 | ||
|
|
b3be7e7ba9 | ||
|
|
60f9c4be2d | ||
|
|
22dfe93f8b | ||
|
|
1bbcdea9bd | ||
|
|
e91ad26ac9 | ||
|
|
0fc3b0f58e | ||
|
|
afe0c10f45 | ||
|
|
d5fd215632 | ||
|
|
d9c49092e4 | ||
|
|
9fdce0f2b1 | ||
|
|
007d8c2d5e | ||
|
|
68f6b61217 | ||
|
|
1b46f38696 | ||
|
|
c6b942f185 | ||
|
|
2258c00fca | ||
|
|
f01e5d3eaf | ||
|
|
52a9ca6518 | ||
|
|
0d0f3cadc8 | ||
|
|
e454d3220e | ||
|
|
9b90ec099c | ||
|
|
fad485069b | ||
|
|
9ee1f6df98 | ||
|
|
b0b68983f7 | ||
|
|
8dbbe3ba5d | ||
|
|
e94b660b04 | ||
|
|
6cf3a3ca28 | ||
|
|
7782870522 | ||
|
|
648cd0ca61 | ||
|
|
b9b70ea3ec | ||
|
|
2f1bfc42ca | ||
|
|
2c358387a2 | ||
|
|
70af444b98 | ||
|
|
707bc4a708 | ||
|
|
ac48af204e | ||
|
|
fd7272ab1e | ||
|
|
ecadb6b685 | ||
|
|
fa41c0bad6 | ||
|
|
dd878e2a4c | ||
|
|
8666c8fee8 | ||
|
|
dd914ef635 | ||
|
|
719abf7265 | ||
|
|
c86d13f032 | ||
|
|
1b34dd945e | ||
|
|
cc13641216 | ||
|
|
13a0ca5ca1 | ||
|
|
704cd03d96 | ||
|
|
e79a4dd006 | ||
|
|
4bb2f6c1f5 | ||
|
|
89ec2dacad | ||
|
|
b97439cf8e | ||
|
|
f61bd6352d | ||
|
|
b7b2ee0c57 | ||
|
|
fe39b5da1b | ||
|
|
bc0bc3f8a9 | ||
|
|
9c0d0c5681 | ||
|
|
b97daf844b | ||
|
|
f8237c9cd2 | ||
|
|
b317a4474e | ||
|
|
b1772dae44 | ||
|
|
c33383d248 | ||
|
|
645e359cde | ||
|
|
fa71593a2a | ||
|
|
2e903c0293 | ||
|
|
aced192bcd | ||
|
|
19b0b956f7 | ||
|
|
9f9355ac46 | ||
|
|
f28e6c2d95 | ||
|
|
e633380221 | ||
|
|
5f6f757bd0 | ||
|
|
b29fc52842 | ||
|
|
791ffaabeb | ||
|
|
c31d67fe57 | ||
|
|
a1710be335 | ||
|
|
2260d92436 | ||
|
|
4d0e106d98 | ||
|
|
2be40953a8 | ||
|
|
8bc4bde5c3 | ||
|
|
429e2982d0 | ||
|
|
23f8540b4c | ||
|
|
59d8d749e3 | ||
|
|
cff9ef5e63 | ||
|
|
e6e0109a1b | ||
|
|
7739239e89 | ||
|
|
eb8d5bcade | ||
|
|
ff242ef28c | ||
|
|
4a0f97ac6a | ||
|
|
a0e0e76995 | ||
|
|
b5f9b88d0e | ||
|
|
339f048826 | ||
|
|
8db49fa981 | ||
|
|
4f0bfbc1db | ||
|
|
5063f4d868 | ||
|
|
77273321b7 | ||
|
|
db63cc1b23 | ||
|
|
f88d8b8a7d | ||
|
|
991328904d | ||
|
|
9d3539b3cb | ||
|
|
bd143c0ad1 | ||
|
|
970265acb0 | ||
|
|
36c80f61bc | ||
|
|
d86c7c22dc | ||
|
|
71b334d49c | ||
|
|
ee0eb8b1a0 | ||
|
|
cd4ed759ed | ||
|
|
c0e4da6d8c | ||
|
|
72f5ff917f | ||
|
|
4c9c9fa719 | ||
|
|
163e01a2dc | ||
|
|
79862ca8c2 | ||
|
|
aa8d7b0b36 | ||
|
|
8d0857fd7a | ||
|
|
67f69a32bb | ||
|
|
382674975e | ||
|
|
eaaa895b0a | ||
|
|
70b971d3a4 | ||
|
|
3ddb8712a3 | ||
|
|
533ca8b9fe | ||
|
|
0fc710bc48 | ||
|
|
fe18636ff9 | ||
|
|
c299bfcd0f | ||
|
|
3f5a6bca26 | ||
|
|
a6b35e7d8a | ||
|
|
619e85e737 | ||
|
|
b3407b0554 | ||
|
|
a4c421e699 | ||
|
|
a3a443324d | ||
|
|
7b9833fdce | ||
|
|
bd87ec7c83 | ||
|
|
26bfa7a172 | ||
|
|
f82bc15013 | ||
|
|
da60b96445 | ||
|
|
2ed5abed07 | ||
|
|
49dcda7794 | ||
|
|
9fc0fb5e74 | ||
|
|
d32006b324 | ||
|
|
feabb6440d | ||
|
|
87e9c9ad46 | ||
|
|
7d6929c710 | ||
|
|
887642e69c | ||
|
|
b9e6619b2d | ||
|
|
78b5fe5f8c | ||
|
|
72e9b74b3e | ||
|
|
c6aeda1511 | ||
|
|
eb501e1244 | ||
|
|
1f51c14e7e | ||
|
|
dee3ebdc54 | ||
|
|
d0ef05977b | ||
|
|
a17db4f45c | ||
|
|
20974fea55 | ||
|
|
416df98505 | ||
|
|
fb5891cd48 | ||
|
|
1d4a482c1a | ||
|
|
8d57a879ce | ||
|
|
3e7aecd094 | ||
|
|
c46bc1f02a | ||
|
|
0d0ed6c130 | ||
|
|
0045bed6e7 | ||
|
|
0982dc0551 | ||
|
|
e38efc7cbe | ||
|
|
ea4e5f2293 | ||
|
|
29d1590bc6 | ||
|
|
e14ee2ea72 | ||
|
|
68ca4b3c2a | ||
|
|
4ad85e52e2 | ||
|
|
4255e81b93 | ||
|
|
81e8cdc7ab | ||
|
|
b1b5b54fd0 | ||
|
|
109362f147 | ||
|
|
b5038c18e2 | ||
|
|
87d889f96c | ||
|
|
9b41ea4017 | ||
|
|
51658a0d7c | ||
|
|
2f45e14bea | ||
|
|
aa56afdab7 | ||
|
|
9fda131d37 | ||
|
|
b3ddcd4ed9 | ||
|
|
107792635d | ||
|
|
7ea8cf5fb3 | ||
|
|
1d6ce6db35 | ||
|
|
4e44a09072 | ||
|
|
dc6d0c091a | ||
|
|
af6aaf4bab | ||
|
|
e822731f8c | ||
|
|
a23246aca1 | ||
|
|
f31e45d7d2 | ||
|
|
34e61da366 | ||
|
|
451aef200f | ||
|
|
bb8a1b061c | ||
|
|
d4367cdd7d | ||
|
|
3b15bb80b9 | ||
|
|
399e11edf7 | ||
|
|
f97f370e5b | ||
|
|
070f2e181c | ||
|
|
9d9da4feb9 | ||
|
|
ce858a80ed | ||
|
|
4898c83590 | ||
|
|
d8ed2eb1be | ||
|
|
00c8a5845e | ||
|
|
d8dba61b0a | ||
|
|
b8117b3931 | ||
|
|
aface2f43e | ||
|
|
9691130b83 | ||
|
|
1fbf3caa50 | ||
|
|
e3128c204e | ||
|
|
1e6b27d42a | ||
|
|
c24bd209e6 | ||
|
|
df96cc6e56 | ||
|
|
641549c9ed | ||
|
|
66e0308028 | ||
|
|
22939abb0d | ||
|
|
dfc4bff579 | ||
|
|
588223915c | ||
|
|
5702670bd3 | ||
|
|
0511202743 | ||
|
|
d79760e9dd | ||
|
|
21011d00ea | ||
|
|
23cb98272c | ||
|
|
b8b2712f73 | ||
|
|
8b6a29decf | ||
|
|
5475841ca0 | ||
|
|
e8a2ad1d1b | ||
|
|
54a62ea78d | ||
|
|
bcda41b508 | ||
|
|
c0fac0f5ca | ||
|
|
0faf0dd2a1 | ||
|
|
9a698ce1e8 | ||
|
|
a7683c60c9 | ||
|
|
9412b770bf | ||
|
|
29a6473c3d | ||
|
|
7ceed1f42d | ||
|
|
959367629e | ||
|
|
aeed1f79bb | ||
|
|
278d3a0313 | ||
|
|
5af9f71d38 | ||
|
|
b6f446e909 | ||
|
|
7804a2db86 | ||
|
|
0e4d2b50b4 | ||
|
|
b594cf0d74 | ||
|
|
074fdeb212 | ||
|
|
a1355ee766 | ||
|
|
c3e1bb40f4 | ||
|
|
661410a96e | ||
|
|
e272eced94 | ||
|
|
4ab901ed43 | ||
|
|
c1abe4a550 | ||
|
|
3fc76f9c10 | ||
|
|
1e304f56cb | ||
|
|
5929826c5f | ||
|
|
9dad36b117 | ||
|
|
8b9f994cea | ||
|
|
7ecb2c0185 | ||
|
|
342c49f0bb | ||
|
|
bb220b5c3b | ||
|
|
3455f00d23 | ||
|
|
992ab7120c | ||
|
|
5215722c78 | ||
|
|
56b3203fa9 | ||
|
|
3cc4a0c6e3 | ||
|
|
ca90157e9f | ||
|
|
132634f10c | ||
|
|
556ede5960 | ||
|
|
46c610f35e | ||
|
|
18357be938 | ||
|
|
a9f369479f | ||
|
|
8c00bbc91d | ||
|
|
9af01c515f | ||
|
|
567cc304ed | ||
|
|
98a1654b47 | ||
|
|
ddbe1986ad | ||
|
|
ac19d4d19c | ||
|
|
142f16afe4 | ||
|
|
07810818cc | ||
|
|
4664a19718 | ||
|
|
46f59acdce | ||
|
|
c61189121e | ||
|
|
8c14262efc | ||
|
|
fa398766d9 | ||
|
|
026fcc66c9 | ||
|
|
7c5a3ae311 | ||
|
|
feacf7614e | ||
|
|
8609e65fc2 | ||
|
|
3ff33699c8 | ||
|
|
df72d7b20f | ||
|
|
1d7144564c | ||
|
|
aced2e4e94 | ||
|
|
9b9ac03760 | ||
|
|
c052de2bbc | ||
|
|
85d0e9797c | ||
|
|
f975319d02 | ||
|
|
b8164df349 | ||
|
|
1458d77844 | ||
|
|
052f2ac321 | ||
|
|
4a6945ac17 | ||
|
|
c9ca9737a7 | ||
|
|
2e1495fc07 | ||
|
|
55de3020d3 | ||
|
|
366bf46ca1 | ||
|
|
50615557d9 | ||
|
|
1c0f891427 | ||
|
|
0c6c0ef6d5 | ||
|
|
ff91974345 | ||
|
|
e7dc09cf9f | ||
|
|
fcf9649ef9 | ||
|
|
55e3746554 | ||
|
|
a59a147dbd | ||
|
|
355ce9f679 | ||
|
|
785e7135a7 | ||
|
|
735ab45480 | ||
|
|
55c2adc503 | ||
|
|
2486b25e5e | ||
|
|
020a8da9bb | ||
|
|
d559037f31 | ||
|
|
cce81bcefb | ||
|
|
fc73c4b1fd | ||
|
|
588efb1427 | ||
|
|
e7afe2cb9c | ||
|
|
5e3ba9b7d1 | ||
|
|
51230aa3fb | ||
|
|
069ae0aff4 | ||
|
|
ec336e1d0e | ||
|
|
d2e571e3d1 | ||
|
|
1a9c41ae4e | ||
|
|
10aebb58d2 | ||
|
|
2d46c83149 | ||
|
|
3c62396533 | ||
|
|
22f55a7aeb | ||
|
|
3d7bd00abf | ||
|
|
7b1ed14e4e | ||
|
|
3c88e04d4c | ||
|
|
9adab910f4 | ||
|
|
d7969931e8 | ||
|
|
94b6f27937 | ||
|
|
8690bb7c12 | ||
|
|
49b5bbc964 | ||
|
|
479d98212b | ||
|
|
3f973e6fa3 | ||
|
|
584d4f67bd | ||
|
|
642ed5f46e | ||
|
|
9a9e6e94ff | ||
|
|
88b028e4a5 | ||
|
|
fb07d2dad6 | ||
|
|
b4f68ef021 | ||
|
|
403214f569 | ||
|
|
944f0df981 | ||
|
|
97b3ff0499 | ||
|
|
4507fb9368 | ||
|
|
cdd44c4db8 | ||
|
|
983fe5e086 | ||
|
|
f4686adced | ||
|
|
25aeb58c87 | ||
|
|
dd73ac8892 | ||
|
|
16f97a74d7 | ||
|
|
242c55dcff | ||
|
|
1f87dcc6b8 | ||
|
|
dafe3a0811 | ||
|
|
9ac4d137ff | ||
|
|
3cb3113705 | ||
|
|
239f9e817d | ||
|
|
b9f42ddc0f | ||
|
|
c437afc15b | ||
|
|
41812172a7 | ||
|
|
11e682e061 | ||
|
|
821cf24c5b | ||
|
|
14f29e95a7 | ||
|
|
8aa30ee8f6 | ||
|
|
c9303f5889 | ||
|
|
b1f38ea0e8 | ||
|
|
3e9cbade45 | ||
|
|
52af66e0f9 | ||
|
|
c1911994ea | ||
|
|
af62ef736d | ||
|
|
4a6f427df7 | ||
|
|
00a2d7b1cb | ||
|
|
e2af6b9d04 | ||
|
|
4955097a52 | ||
|
|
870bc51ad9 | ||
|
|
ea54543602 | ||
|
|
bb278df881 | ||
|
|
46fde0e439 | ||
|
|
e3d895be4c | ||
|
|
dd8d4b5ad8 | ||
|
|
d956a3bdb3 | ||
|
|
66930ab303 | ||
|
|
0f032a1388 | ||
|
|
5ce54c9e0d | ||
|
|
b86950da6f | ||
|
|
f7c71bdaac | ||
|
|
ee2aa91d97 | ||
|
|
c353455b83 | ||
|
|
530419a839 | ||
|
|
2b5d6536ca | ||
|
|
8116d8c11f | ||
|
|
04a1871ae3 | ||
|
|
41ebe62852 | ||
|
|
51da8ed830 | ||
|
|
515de3f6ad | ||
|
|
6604172c1c | ||
|
|
4a9114cd4e | ||
|
|
525fba6405 | ||
|
|
dff5cc63e7 | ||
|
|
3b83f666c1 | ||
|
|
9c8a3ba688 | ||
|
|
64b3302883 | ||
|
|
d28f50465b | ||
|
|
de057ac505 | ||
|
|
8b0e1b638b | ||
|
|
65103d5bd0 | ||
|
|
5d038d9d9b | ||
|
|
45e8f7d0c9 | ||
|
|
2b6e71ff46 | ||
|
|
f206fab268 | ||
|
|
4d30781673 | ||
|
|
5b162ce2b9 | ||
|
|
f12e0e3ed6 | ||
|
|
8a0e7439a7 | ||
|
|
15e6fa454d | ||
|
|
72bb310386 | ||
|
|
55f8a2775e | ||
|
|
051d5651a5 | ||
|
|
5c23123b6d | ||
|
|
80b51d083e | ||
|
|
b301760976 | ||
|
|
76ddcd405d | ||
|
|
d97d5e5164 | ||
|
|
55ace18509 | ||
|
|
cf6cd968ec | ||
|
|
9a230fcacf | ||
|
|
aaf3256279 | ||
|
|
3285c11e9c | ||
|
|
5e84d806d7 | ||
|
|
fc1a0c6c3d | ||
|
|
07b8d97751 | ||
|
|
639f40cb94 | ||
|
|
a6a0b2c158 | ||
|
|
5c6c555b62 | ||
|
|
d767f8545f | ||
|
|
e7f91cd526 | ||
|
|
c1a5a44dfc | ||
|
|
f0506211e2 | ||
|
|
5ca349d0f8 | ||
|
|
c1adde6a13 | ||
|
|
22ed575325 | ||
|
|
f7c392342e | ||
|
|
350b42ad91 | ||
|
|
c74f2a526f | ||
|
|
b62c4ec4a2 | ||
|
|
d409e5ac18 | ||
|
|
a9adaf2052 | ||
|
|
ce088d5919 | ||
|
|
3a5de5483c | ||
|
|
a65e30fe41 | ||
|
|
f806670c85 | ||
|
|
b51cca4a57 | ||
|
|
7f74f238fd | ||
|
|
3bb5179e2d | ||
|
|
57d39109e3 | ||
|
|
b4642903fd | ||
|
|
b1f4e14281 | ||
|
|
e9c340b957 | ||
|
|
a4fabef86c | ||
|
|
4c1bf075c4 | ||
|
|
9415899a03 | ||
|
|
03700c0f01 | ||
|
|
1316513a1e | ||
|
|
db6a5f34cd | ||
|
|
e5ef1aa5a1 | ||
|
|
166ef525f0 | ||
|
|
2305b18b18 | ||
|
|
28fd5147ae | ||
|
|
9d58b006e7 | ||
|
|
e5f2e284ba | ||
|
|
c4029fb9b6 | ||
|
|
3bf74f4a33 | ||
|
|
28fb57ebeb | ||
|
|
59ba146463 | ||
|
|
eef0b8869f | ||
|
|
c24ca7966a | ||
|
|
e731ff8118 | ||
|
|
07d4492ece | ||
|
|
5721e27161 | ||
|
|
f96a415e80 | ||
|
|
1843698daf | ||
|
|
57e67e62bb | ||
|
|
615f1333d3 | ||
|
|
630d9c5200 | ||
|
|
f4bf92a488 | ||
|
|
2dcecb9d59 | ||
|
|
d65d816ac8 | ||
|
|
827fabc849 | ||
|
|
7aa6d6350a | ||
|
|
ef1033dffc | ||
|
|
8a5fb286b6 | ||
|
|
14c78a138a | ||
|
|
ecafa44196 | ||
|
|
d216962b64 | ||
|
|
1320168cca | ||
|
|
f681302409 | ||
|
|
6df077be77 | ||
|
|
93ef22759a | ||
|
|
802c5ee30f | ||
|
|
f5c1908058 | ||
|
|
5cc6565078 | ||
|
|
6202c1736f | ||
|
|
35ef65e6b9 | ||
|
|
d931a92a9f | ||
|
|
576b646f36 | ||
|
|
b7fcc3ec46 | ||
|
|
9ae7df918f | ||
|
|
75e27cef98 | ||
|
|
518d433d64 | ||
|
|
48a9270fad | ||
|
|
686c3e1128 | ||
|
|
fb26c11dfb | ||
|
|
4e7202c9ae | ||
|
|
5ec294fd7f | ||
|
|
33ccb6619c | ||
|
|
0608c91587 | ||
|
|
76b917bf36 | ||
|
|
52e5bdbc9b | ||
|
|
121b2457e7 | ||
|
|
f1b7306eb6 | ||
|
|
7d39ccb0e3 | ||
|
|
0c11024fd7 | ||
|
|
b4eb3eb8ba | ||
|
|
793bf2f154 | ||
|
|
99de8b2eb1 | ||
|
|
2dc656c098 | ||
|
|
ebde179ab2 | ||
|
|
1e3462d476 | ||
|
|
80c5b90dea | ||
|
|
3e95c424ab | ||
|
|
2e22fce718 | ||
|
|
cc13ca68fa | ||
|
|
915b83a068 | ||
|
|
c54bf85dfc | ||
|
|
1d3eb2eb6e | ||
|
|
49af45c8b7 | ||
|
|
9c20a5eec8 | ||
|
|
c215a1c50f | ||
|
|
e3664dbf64 | ||
|
|
72b6a5c392 | ||
|
|
192e3a3197 | ||
|
|
5b020cc00b | ||
|
|
6679faf1e3 | ||
|
|
a519d83316 | ||
|
|
c027b4d127 | ||
|
|
a078f01f7b | ||
|
|
16d62f8d9b | ||
|
|
f06d1740e0 | ||
|
|
0ed864383d | ||
|
|
3d18b54978 | ||
|
|
b456250cbe | ||
|
|
a561300e9d | ||
|
|
c1be62e6c3 | ||
|
|
59a4bbf91e | ||
|
|
08a251103b | ||
|
|
9fe42fdcd6 | ||
|
|
aa2dd57f36 | ||
|
|
f2e834cd32 | ||
|
|
16b6bf1743 | ||
|
|
e3f11e9d8c | ||
|
|
1d47fc923f | ||
|
|
bc1c948950 | ||
|
|
fc9ed73ff4 | ||
|
|
6d8fed6edc | ||
|
|
7c45a0dc4f | ||
|
|
b383e0ecb2 | ||
|
|
719fa6e004 | ||
|
|
a10926ac74 | ||
|
|
ca5bf96cb9 | ||
|
|
6269b907c3 | ||
|
|
9bd48d06c3 | ||
|
|
1834c11f48 | ||
|
|
e77aabdf1b | ||
|
|
61404d5bd8 | ||
|
|
5f5c906129 | ||
|
|
fec279c460 | ||
|
|
579ec3955e | ||
|
|
650837b207 | ||
|
|
f8c6863fa7 | ||
|
|
dd90c90819 | ||
|
|
21394826b6 | ||
|
|
7f0ed44828 | ||
|
|
8d7eb0e372 | ||
|
|
3161e435b8 | ||
|
|
4bf0365d85 | ||
|
|
109d3149f4 | ||
|
|
a3f40b2057 | ||
|
|
08a118cc94 | ||
|
|
b05136ea53 | ||
|
|
9bf6dcbdcb | ||
|
|
6020c147ed | ||
|
|
1f2f8f06dc | ||
|
|
3829d883a7 | ||
|
|
cf12639749 | ||
|
|
0764be77c4 | ||
|
|
7db5eea56b | ||
|
|
302087b4ec | ||
|
|
db58db396f | ||
|
|
6906046e9f | ||
|
|
1705a2ca5f | ||
|
|
88be906ad5 | ||
|
|
f2a7ed5ef1 | ||
|
|
73ef345a2d | ||
|
|
4575c4ab6f | ||
|
|
7037ca211d | ||
|
|
b152f06973 | ||
|
|
328862172d | ||
|
|
ac99b5011a | ||
|
|
2b7ed7381f |
@@ -1,2 +1,3 @@
|
|||||||
examples/Jugl.js
|
examples/Jugl.js
|
||||||
examples/resources/
|
examples/resources/
|
||||||
|
build/package/**/*webgl*
|
||||||
|
|||||||
8
.github/ISSUE_TEMPLATE.md
vendored
Normal file
8
.github/ISSUE_TEMPLATE.md
vendored
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
Thank you for your interest in making OpenLayers better!
|
||||||
|
|
||||||
|
To keep this project manageable for maintainers, we ask you to please check all boxes below before submitting an issue.
|
||||||
|
|
||||||
|
- [ ] I am submitting a bug or feature request, not a usage question. Go to https://stackoverflow.com/questions/tagged/openlayers for questions.
|
||||||
|
- [ ] I have searched GitHub to see if a similar bug or feature request has already been reported.
|
||||||
|
- [ ] I have verified that the issue is present in the latest version of OpenLayers (see 'LATEST' on https://openlayers.org/).
|
||||||
|
- [ ] If reporting a bug, I have created a [CodePen](https://codepen.io) or prepared a stack trace (using the latest version and unminified code, so e.g. `ol-debug.js`, not `ol.js`) that shows the issue.
|
||||||
9
.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal file
9
.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
Thank you for your interest in making OpenLayers better!
|
||||||
|
|
||||||
|
In order to get your proposed changes merged into the master branch, we ask you to please make sure the following boxes are checked *before* submitting your pull request.
|
||||||
|
|
||||||
|
- [ ] This pull request addresses an issue that has been marked with the 'Pull request accepted' label & I have added the link to that issue.
|
||||||
|
- [ ] It contains one or more small, incremental, logically separate commits, with no merge commits.
|
||||||
|
- [ ] I have used clear commit messages.
|
||||||
|
- [ ] Existing tests pass for me locally & I have added or updated tests for new or changed functionality.
|
||||||
|
- [ ] The work herein is covered by a valid [Contributor License Agreement (CLA)](https://github.com/openlayers/cla).
|
||||||
4
.gitignore
vendored
4
.gitignore
vendored
@@ -1,4 +1,4 @@
|
|||||||
/build/
|
/build/
|
||||||
/node_modules/
|
|
||||||
/dist/
|
|
||||||
/coverage/
|
/coverage/
|
||||||
|
/dist/
|
||||||
|
/node_modules/
|
||||||
|
|||||||
34
.travis.yml
34
.travis.yml
@@ -1,30 +1,22 @@
|
|||||||
sudo: false
|
sudo: false
|
||||||
|
|
||||||
language: node_js
|
language: node_js
|
||||||
|
|
||||||
node_js:
|
node_js:
|
||||||
- "6"
|
- '8'
|
||||||
|
|
||||||
cache:
|
cache:
|
||||||
directories:
|
directories:
|
||||||
- node_modules
|
- node_modules
|
||||||
env:
|
|
||||||
- DISPLAY=:99.0
|
|
||||||
|
|
||||||
before_install:
|
|
||||||
- "npm prune"
|
|
||||||
|
|
||||||
before_script:
|
before_script:
|
||||||
- "rm src/ol/renderer/webgl/*shader.js"
|
- rm src/ol/renderer/webgl/*shader.js
|
||||||
- "sh -e /etc/init.d/xvfb start"
|
- rm src/ol/renderer/webgl/*shader/locations.js
|
||||||
- "npm ls"
|
script: make ci
|
||||||
|
|
||||||
script: "make ci"
|
|
||||||
|
|
||||||
after_success:
|
after_success:
|
||||||
- "make test-coverage"
|
- cat coverage/lcov.info | coveralls
|
||||||
- "cat coverage/lcov.info | ./node_modules/.bin/coveralls"
|
|
||||||
|
|
||||||
branches:
|
branches:
|
||||||
only:
|
only:
|
||||||
- master
|
- master
|
||||||
|
addons:
|
||||||
|
hosts:
|
||||||
|
- travis.dev
|
||||||
|
jwt:
|
||||||
|
# This is the encrypted SAUCE_ACCESS_KEY
|
||||||
|
secure: bb2Ibzu9RLe6ZlIG7JVcuH7IoLMxa/i3LTM7t8mbsPjVOGs5ycyJ7M9MbvqB/F2EzbeV4XB2c9ufI4TkaLYceY5kdWjfZVN8iasr+GFqKMv1uR4i6bpu8KmHJ+blxwfY1QOQ/cGwEx+fbeycMtpTc3Y3GyXaPlCQLhbZvesMg88=
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ The minimum requirements are:
|
|||||||
|
|
||||||
* GNU Make
|
* GNU Make
|
||||||
* Git
|
* Git
|
||||||
* [Node.js](http://nodejs.org/) (higher than 0.12.x)
|
* [Node.js](http://nodejs.org/) (version 8 and above)
|
||||||
* Python 2.6 or 2.7
|
* Python 2.6 or 2.7
|
||||||
* Java 7 (JRE and JDK)
|
* Java 7 (JRE and JDK)
|
||||||
|
|
||||||
|
|||||||
71
Makefile
71
Makefile
@@ -3,12 +3,10 @@ BRANCH := $(shell git rev-parse --abbrev-ref HEAD)
|
|||||||
|
|
||||||
SRC_GLSL := $(shell find src -type f -name '*.glsl')
|
SRC_GLSL := $(shell find src -type f -name '*.glsl')
|
||||||
SRC_SHADER_JS := $(patsubst %shader.glsl,%shader.js,$(SRC_GLSL))
|
SRC_SHADER_JS := $(patsubst %shader.glsl,%shader.js,$(SRC_GLSL))
|
||||||
SRC_JS := $(filter-out $(SRC_SHADER_JS),$(shell find src -name '*.js'))
|
SRC_SHADERLOCATIONS_JS := $(patsubst %shader.glsl,%shader/locations.js,$(SRC_GLSL))
|
||||||
|
SRC_JS := $(filter-out $(SRC_SHADER_JS) $(SRC_SHADERLOCATIONS_JS),$(shell find src -name '*.js'))
|
||||||
SRC_JSDOC = $(shell find src -type f -name '*.jsdoc')
|
SRC_JSDOC = $(shell find src -type f -name '*.jsdoc')
|
||||||
|
|
||||||
SPEC_JS := $(shell find test/spec -type f -name '*.js')
|
|
||||||
SPEC_RENDERING_JS := $(shell find test_rendering/spec -name '*.js')
|
|
||||||
|
|
||||||
EXAMPLES := $(shell find examples -type f)
|
EXAMPLES := $(shell find examples -type f)
|
||||||
EXAMPLES_HTML := $(filter-out examples/index.html,$(shell find examples -maxdepth 1 -type f -name '*.html'))
|
EXAMPLES_HTML := $(filter-out examples/index.html,$(shell find examples -maxdepth 1 -type f -name '*.html'))
|
||||||
EXAMPLES_JS := $(patsubst %.html,%.js,$(EXAMPLES_HTML))
|
EXAMPLES_JS := $(patsubst %.html,%.js,$(EXAMPLES_HTML))
|
||||||
@@ -56,7 +54,6 @@ help:
|
|||||||
@echo "Other less frequently used targets are:"
|
@echo "Other less frequently used targets are:"
|
||||||
@echo
|
@echo
|
||||||
@echo "- build Build ol.js, ol-debug.js, ol.js.map and ol.css"
|
@echo "- build Build ol.js, ol-debug.js, ol.js.map and ol.css"
|
||||||
@echo "- lint Check the code with the linter"
|
|
||||||
@echo "- ci Run the full continuous integration process"
|
@echo "- ci Run the full continuous integration process"
|
||||||
@echo "- apidoc Build the API documentation using JSDoc"
|
@echo "- apidoc Build the API documentation using JSDoc"
|
||||||
@echo "- cleanall Remove all the build artefacts"
|
@echo "- cleanall Remove all the build artefacts"
|
||||||
@@ -70,7 +67,7 @@ apidoc: build/timestamps/jsdoc-$(BRANCH)-timestamp
|
|||||||
build: build/ol.css build/ol.js build/ol-debug.js build/ol.js.map
|
build: build/ol.css build/ol.js build/ol-debug.js build/ol.js.map
|
||||||
|
|
||||||
.PHONY: check
|
.PHONY: check
|
||||||
check: lint build/ol.js test
|
check: build/ol.js test
|
||||||
|
|
||||||
.PHONY: check-examples
|
.PHONY: check-examples
|
||||||
check-examples: $(CHECK_EXAMPLE_TIMESTAMPS)
|
check-examples: $(CHECK_EXAMPLE_TIMESTAMPS)
|
||||||
@@ -86,21 +83,18 @@ check-deps:
|
|||||||
done ;\
|
done ;\
|
||||||
|
|
||||||
.PHONY: ci
|
.PHONY: ci
|
||||||
ci: lint build test test-rendering compile-examples check-examples apidoc
|
ci: build test package compile-examples check-examples apidoc
|
||||||
|
|
||||||
.PHONY: compile-examples
|
.PHONY: compile-examples
|
||||||
compile-examples: build/compiled-examples/all.combined.js
|
compile-examples: build/compiled-examples/all.combined.js
|
||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
clean:
|
clean:
|
||||||
rm -f build/timestamps/eslint-timestamp
|
|
||||||
rm -f build/timestamps/check-*-timestamp
|
rm -f build/timestamps/check-*-timestamp
|
||||||
rm -f build/ol.css
|
rm -f build/ol.css
|
||||||
rm -f build/ol.js
|
rm -f build/ol.js
|
||||||
rm -f build/ol.js.map
|
rm -f build/ol.js.map
|
||||||
rm -f build/ol-debug.js
|
rm -f build/ol-debug.js
|
||||||
rm -f build/test_requires.js
|
|
||||||
rm -f build/test_rendering_requires.js
|
|
||||||
rm -rf build/examples
|
rm -rf build/examples
|
||||||
rm -rf build/compiled-examples
|
rm -rf build/compiled-examples
|
||||||
rm -rf build/package
|
rm -rf build/package
|
||||||
@@ -119,34 +113,19 @@ examples: $(BUILD_EXAMPLES)
|
|||||||
.PHONY: install
|
.PHONY: install
|
||||||
install: build/timestamps/node-modules-timestamp
|
install: build/timestamps/node-modules-timestamp
|
||||||
|
|
||||||
.PHONY: lint
|
|
||||||
lint: build/timestamps/eslint-timestamp
|
|
||||||
|
|
||||||
.PHONY: npm-install
|
.PHONY: npm-install
|
||||||
npm-install: build/timestamps/node-modules-timestamp
|
npm-install: build/timestamps/node-modules-timestamp
|
||||||
|
|
||||||
.PHONY: shaders
|
.PHONY: shaders
|
||||||
shaders: $(SRC_SHADER_JS)
|
shaders: $(SRC_SHADER_JS $(SRC_SHADERLOCATIONS_JS)
|
||||||
|
|
||||||
.PHONY: serve
|
.PHONY: serve
|
||||||
serve: build/test_requires.js build/test_rendering_requires.js
|
serve:
|
||||||
node tasks/serve.js
|
node tasks/serve.js
|
||||||
|
|
||||||
.PHONY: test
|
.PHONY: test
|
||||||
test: build/timestamps/node-modules-timestamp build/test_requires.js
|
test: build/timestamps/node-modules-timestamp
|
||||||
node tasks/test.js
|
npm test
|
||||||
|
|
||||||
.PHONY: test-coverage
|
|
||||||
test-coverage: build/timestamps/node-modules-timestamp
|
|
||||||
node tasks/test-coverage.js
|
|
||||||
|
|
||||||
.PHONY: test-rendering
|
|
||||||
test-rendering: build/timestamps/node-modules-timestamp \
|
|
||||||
build/test_rendering_requires.js
|
|
||||||
@rm -rf build/slimerjs-profile
|
|
||||||
@mkdir -p build/slimerjs-profile
|
|
||||||
@cp -r test_rendering/slimerjs-profile/* build/slimerjs-profile/
|
|
||||||
node tasks/test-rendering.js
|
|
||||||
|
|
||||||
.PHONY: host-examples
|
.PHONY: host-examples
|
||||||
host-examples: $(BUILD_HOSTED_EXAMPLES) \
|
host-examples: $(BUILD_HOSTED_EXAMPLES) \
|
||||||
@@ -189,7 +168,7 @@ build/compiled-examples/all.js: $(EXAMPLES_JS)
|
|||||||
@python bin/combine-examples.py $^ > $@
|
@python bin/combine-examples.py $^ > $@
|
||||||
|
|
||||||
build/compiled-examples/all.combined.js: config/examples-all.json build/compiled-examples/all.js \
|
build/compiled-examples/all.combined.js: config/examples-all.json build/compiled-examples/all.js \
|
||||||
$(SRC_JS) $(SRC_SHADER_JS) \
|
$(SRC_JS) $(SRC_SHADER_JS) $(SRC_SHADERLOCATIONS_JS) \
|
||||||
build/timestamps/node-modules-timestamp
|
build/timestamps/node-modules-timestamp
|
||||||
@mkdir -p $(@D)
|
@mkdir -p $(@D)
|
||||||
node tasks/build.js $< $@
|
node tasks/build.js $< $@
|
||||||
@@ -200,14 +179,14 @@ build/compiled-examples/%.json: config/example.json build/examples/%.js \
|
|||||||
@sed -e 's|{{id}}|$*|' $< > $@
|
@sed -e 's|{{id}}|$*|' $< > $@
|
||||||
|
|
||||||
build/compiled-examples/%.combined.js: build/compiled-examples/%.json \
|
build/compiled-examples/%.combined.js: build/compiled-examples/%.json \
|
||||||
$(SRC_JS) $(SRC_SHADER_JS) \
|
$(SRC_JS) $(SRC_SHADER_JS) $(SRC_SHADERLOCATIONS_JS)\
|
||||||
build/timestamps/node-modules-timestamp
|
build/timestamps/node-modules-timestamp
|
||||||
@mkdir -p $(@D)
|
@mkdir -p $(@D)
|
||||||
node tasks/build.js $< $@
|
node tasks/build.js $< $@
|
||||||
|
|
||||||
build/timestamps/jsdoc-$(BRANCH)-timestamp: config/jsdoc/api/index.md \
|
build/timestamps/jsdoc-$(BRANCH)-timestamp: config/jsdoc/api/index.md \
|
||||||
config/jsdoc/api/conf.json $(SRC_JS) \
|
config/jsdoc/api/conf.json $(SRC_JS) \
|
||||||
$(SRC_SHADER_JS) \
|
$(SRC_SHADER_JS) $(SRC_SHADERLOCATIONS_JS) \
|
||||||
$(shell find config/jsdoc/api/template -type f) \
|
$(shell find config/jsdoc/api/template -type f) \
|
||||||
build/timestamps/node-modules-timestamp
|
build/timestamps/node-modules-timestamp
|
||||||
@mkdir -p $(@D)
|
@mkdir -p $(@D)
|
||||||
@@ -248,14 +227,6 @@ $(BUILD_HOSTED)/build/ol-deps.js: host-libraries
|
|||||||
--root_with_prefix "$(BUILD_HOSTED)/closure-library/third_party ../../third_party" \
|
--root_with_prefix "$(BUILD_HOSTED)/closure-library/third_party ../../third_party" \
|
||||||
--output_file $@
|
--output_file $@
|
||||||
|
|
||||||
build/timestamps/eslint-timestamp: $(SRC_JS) $(SPEC_JS) $(SPEC_RENDERING_JS) \
|
|
||||||
$(TASKS_JS) $(EXAMPLES_JS) \
|
|
||||||
build/timestamps/node-modules-timestamp
|
|
||||||
@mkdir -p $(@D)
|
|
||||||
@echo "Running eslint..."
|
|
||||||
@./node_modules/.bin/eslint --quiet tasks test test_rendering src examples
|
|
||||||
@touch $@
|
|
||||||
|
|
||||||
build/timestamps/node-modules-timestamp: package.json
|
build/timestamps/node-modules-timestamp: package.json
|
||||||
@mkdir -p $(@D)
|
@mkdir -p $(@D)
|
||||||
npm install
|
npm install
|
||||||
@@ -266,7 +237,7 @@ build/ol.css: css/ol.css build/timestamps/node-modules-timestamp
|
|||||||
@echo "Running cleancss..."
|
@echo "Running cleancss..."
|
||||||
@./node_modules/.bin/cleancss $< > $@
|
@./node_modules/.bin/cleancss $< > $@
|
||||||
|
|
||||||
build/ol.js: config/ol.json $(SRC_JS) $(SRC_SHADER_JS) \
|
build/ol.js: config/ol.json $(SRC_JS) $(SRC_SHADER_JS) $(SRC_SHADERLOCATIONS_JS) \
|
||||||
build/timestamps/node-modules-timestamp
|
build/timestamps/node-modules-timestamp
|
||||||
@mkdir -p $(@D)
|
@mkdir -p $(@D)
|
||||||
node tasks/build.js $< $@
|
node tasks/build.js $< $@
|
||||||
@@ -276,12 +247,12 @@ build/ol.js: config/ol.json $(SRC_JS) $(SRC_SHADER_JS) \
|
|||||||
@$(STAT_COMPRESSED) /tmp/ol.js.gz
|
@$(STAT_COMPRESSED) /tmp/ol.js.gz
|
||||||
@rm /tmp/ol.js.gz
|
@rm /tmp/ol.js.gz
|
||||||
|
|
||||||
build/ol.js.map: config/ol.json $(SRC_JS) $(SRC_SHADER_JS) \
|
build/ol.js.map: config/ol.json $(SRC_JS) $(SRC_SHADER_JS) $(SRC_SHADERLOCATIONS_JS) \
|
||||||
build/timestamps/node-modules-timestamp
|
build/timestamps/node-modules-timestamp
|
||||||
@mkdir -p $(@D)
|
@mkdir -p $(@D)
|
||||||
node tasks/build.js $< $@
|
node tasks/build.js $< $@
|
||||||
|
|
||||||
build/ol-debug.js: config/ol-debug.json $(SRC_JS) $(SRC_SHADER_JS) \
|
build/ol-debug.js: config/ol-debug.json $(SRC_JS) $(SRC_SHADER_JS) $(SRC_SHADERLOCATIONS_JS) \
|
||||||
build/timestamps/node-modules-timestamp
|
build/timestamps/node-modules-timestamp
|
||||||
@mkdir -p $(@D)
|
@mkdir -p $(@D)
|
||||||
node tasks/build.js $< $@
|
node tasks/build.js $< $@
|
||||||
@@ -291,16 +262,12 @@ build/ol-debug.js: config/ol-debug.json $(SRC_JS) $(SRC_SHADER_JS) \
|
|||||||
@$(STAT_COMPRESSED) /tmp/ol-debug.js.gz
|
@$(STAT_COMPRESSED) /tmp/ol-debug.js.gz
|
||||||
@rm /tmp/ol-debug.js.gz
|
@rm /tmp/ol-debug.js.gz
|
||||||
|
|
||||||
build/test_requires.js: $(SPEC_JS) $(SRC_JS)
|
%shader.js: %shader.glsl src/ol/webgl/shader.mustache tasks/glslunit.js build/timestamps/node-modules-timestamp
|
||||||
@mkdir -p $(@D)
|
@node tasks/glslunit.js --input $< | ./node_modules/.bin/mustache - src/ol/webgl/shader.mustache > $@
|
||||||
@node tasks/generate-requires.js $^ > $@
|
|
||||||
|
|
||||||
build/test_rendering_requires.js: $(SPEC_RENDERING_JS)
|
%shader/locations.js: %shader.glsl src/ol/webgl/shaderlocations.mustache tasks/glslunit.js build/timestamps/node-modules-timestamp
|
||||||
@mkdir -p $(@D)
|
@mkdir -p $(@D)
|
||||||
@node tasks/generate-requires.js $^ > $@
|
@node tasks/glslunit.js --input $< | ./node_modules/.bin/mustache - src/ol/webgl/shaderlocations.mustache > $@
|
||||||
|
|
||||||
%shader.js: %shader.glsl src/ol/webgl/shader.mustache bin/pyglslunit.py build/timestamps/node-modules-timestamp
|
|
||||||
@python bin/pyglslunit.py --input $< | ./node_modules/.bin/mustache - src/ol/webgl/shader.mustache > $@
|
|
||||||
|
|
||||||
.PHONY: package
|
.PHONY: package
|
||||||
package:
|
package:
|
||||||
@@ -308,4 +275,6 @@ package:
|
|||||||
@cp -r package build
|
@cp -r package build
|
||||||
@cd ./src && cp -r ol/* ../build/package
|
@cd ./src && cp -r ol/* ../build/package
|
||||||
@rm build/package/typedefs.js
|
@rm build/package/typedefs.js
|
||||||
|
@cp css/ol.css build/package
|
||||||
./node_modules/.bin/jscodeshift --transform transforms/module.js build/package
|
./node_modules/.bin/jscodeshift --transform transforms/module.js build/package
|
||||||
|
npm run lint-package
|
||||||
|
|||||||
14
README.md
14
README.md
@@ -9,9 +9,16 @@
|
|||||||
|
|
||||||
## Getting Started
|
## Getting Started
|
||||||
|
|
||||||
- Download the [latest release](https://openlayers.org/download/)
|
Use one of the following methods to use OpenLayers in your project:
|
||||||
- Install with npm: `npm install openlayers`
|
|
||||||
- Clone the repo: `git clone git@github.com:openlayers/openlayers.git`
|
* For use with webpack, Rollup, Browserify, or other module bundlers, install the [`ol` package](https://www.npmjs.com/package/ol):
|
||||||
|
```
|
||||||
|
npm install ol
|
||||||
|
```
|
||||||
|
|
||||||
|
* If you just want to add a `<script>` tag to test things out, you can link directly to one of the full builds from [cdnjs](https://cdnjs.com/libraries/openlayers) (not recommended for production)
|
||||||
|
|
||||||
|
* For use with Closure Library (rare), install the [`openlayers` package](https://npmjs.com/package/openlayers) and read the [tutorial](http://openlayers.org/en/latest/doc/tutorials/closure.html).
|
||||||
|
|
||||||
## Supported Browsers
|
## Supported Browsers
|
||||||
|
|
||||||
@@ -33,4 +40,3 @@ Please see our guide on [contributing](CONTRIBUTING.md) if you're interested in
|
|||||||
|
|
||||||
- Need help? Find it on [Stack Overflow using the tag 'openlayers'](http://stackoverflow.com/questions/tagged/openlayers)
|
- Need help? Find it on [Stack Overflow using the tag 'openlayers'](http://stackoverflow.com/questions/tagged/openlayers)
|
||||||
- Follow [@openlayers](https://twitter.com/openlayers) on Twitter
|
- Follow [@openlayers](https://twitter.com/openlayers) on Twitter
|
||||||
- Discuss with openlayers users on IRC in `#openlayers` at `chat.freenode`
|
|
||||||
|
|||||||
@@ -1,120 +0,0 @@
|
|||||||
#!/usr/bin/python
|
|
||||||
|
|
||||||
from optparse import OptionParser
|
|
||||||
import json
|
|
||||||
import re
|
|
||||||
import sys
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ESCAPE_SEQUENCE = {
|
|
||||||
'\\': '\\\\',
|
|
||||||
'\n': '\\n',
|
|
||||||
'\t': '\\t'
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
def js_escape(s):
|
|
||||||
return ''.join(ESCAPE_SEQUENCE.get(c, c) for c in s)
|
|
||||||
|
|
||||||
|
|
||||||
def glsl_compress(s, shortNames):
|
|
||||||
# strip leading whitespace
|
|
||||||
s = re.sub(r'\A\s+', '', s)
|
|
||||||
# strip trailing whitespace
|
|
||||||
s = re.sub(r'\s+\Z', '', s)
|
|
||||||
# strip multi-line comments
|
|
||||||
s = re.sub(r'/\*.*?\*/', '', s)
|
|
||||||
# strip single line comments
|
|
||||||
s = re.sub(r'//.*?\n', '', s)
|
|
||||||
# replace multiple whitespace with a single space
|
|
||||||
s = re.sub(r'\s+', ' ', s)
|
|
||||||
# remove whitespace between non-word tokens
|
|
||||||
s = re.sub(r'(\S)\s+([^\w])', r'\1\2', s)
|
|
||||||
s = re.sub(r'([^\w])\s+(\S)', r'\1\2', s)
|
|
||||||
# replace original names with short names
|
|
||||||
for originalName, shortName in shortNames.items():
|
|
||||||
s = s.replace(originalName, shortName)
|
|
||||||
return s
|
|
||||||
|
|
||||||
|
|
||||||
def main(argv):
|
|
||||||
option_parser = OptionParser()
|
|
||||||
option_parser.add_option('--input')
|
|
||||||
option_parser.add_option('--output')
|
|
||||||
options, args = option_parser.parse_args(argv[1:])
|
|
||||||
|
|
||||||
context = {}
|
|
||||||
nextShortName = ord('a')
|
|
||||||
shortNames = {}
|
|
||||||
|
|
||||||
common, vertex, fragment = [], [], []
|
|
||||||
attributes, uniforms, varyings = {}, {}, {}
|
|
||||||
block = None
|
|
||||||
for line in open(options.input, 'rU'):
|
|
||||||
if line.startswith('//!'):
|
|
||||||
m = re.match(r'//!\s+NAMESPACE=(\S+)\s*\Z', line)
|
|
||||||
if m:
|
|
||||||
context['namespace'] = m.group(1)
|
|
||||||
continue
|
|
||||||
m = re.match(r'//!\s+CLASS=(\S+)\s*\Z', line)
|
|
||||||
if m:
|
|
||||||
context['className'] = m.group(1)
|
|
||||||
continue
|
|
||||||
m = re.match(r'//!\s+COMMON\s*\Z', line)
|
|
||||||
if m:
|
|
||||||
block = common
|
|
||||||
continue
|
|
||||||
m = re.match(r'//!\s+VERTEX\s*\Z', line)
|
|
||||||
if m:
|
|
||||||
block = vertex
|
|
||||||
continue
|
|
||||||
m = re.match(r'//!\s+FRAGMENT\s*\Z', line)
|
|
||||||
if m:
|
|
||||||
block = fragment
|
|
||||||
continue
|
|
||||||
else:
|
|
||||||
if block is None:
|
|
||||||
assert line.rstrip() == ''
|
|
||||||
else:
|
|
||||||
block.append(line)
|
|
||||||
m = re.match(r'attribute\s+\S+\s+(\S+);\s*\Z', line)
|
|
||||||
if m:
|
|
||||||
attribute = m.group(1)
|
|
||||||
if attribute not in attributes:
|
|
||||||
shortName = chr(nextShortName)
|
|
||||||
nextShortName += 1
|
|
||||||
attributes[attribute] = {'originalName': attribute, 'shortName': shortName}
|
|
||||||
shortNames[attribute] = shortName
|
|
||||||
m = re.match(r'uniform\s+\S+\s+(\S+);\s*\Z', line)
|
|
||||||
if m:
|
|
||||||
uniform = m.group(1)
|
|
||||||
if uniform not in uniforms:
|
|
||||||
shortName = chr(nextShortName)
|
|
||||||
nextShortName += 1
|
|
||||||
uniforms[uniform] = {'originalName': uniform, 'shortName': shortName}
|
|
||||||
shortNames[uniform] = shortName
|
|
||||||
m = re.match(r'varying\s+\S+\s+(\S+);\s*\Z', line)
|
|
||||||
if m:
|
|
||||||
varying = m.group(1)
|
|
||||||
if varying not in varyings:
|
|
||||||
shortName = chr(nextShortName)
|
|
||||||
nextShortName += 1
|
|
||||||
shortNames[varying] = shortName
|
|
||||||
|
|
||||||
context['getOriginalFragmentSource'] = js_escape(''.join(common + fragment))
|
|
||||||
context['getOriginalVertexSource'] = js_escape(''.join(common + vertex))
|
|
||||||
context['getFragmentSource'] = glsl_compress(''.join(common + fragment), shortNames)
|
|
||||||
context['getVertexSource'] = glsl_compress(''.join(common + vertex), shortNames)
|
|
||||||
context['getAttributes'] = [attributes[a] for a in sorted(attributes.keys())]
|
|
||||||
context['getUniforms'] = [uniforms[u] for u in sorted(uniforms.keys())]
|
|
||||||
|
|
||||||
if options.output and options.output != '-':
|
|
||||||
output = open(options.output, 'wb')
|
|
||||||
else:
|
|
||||||
output = sys.stdout
|
|
||||||
json.dump(context, output)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
sys.exit(main(sys.argv))
|
|
||||||
@@ -1,6 +1,182 @@
|
|||||||
## Upgrade notes
|
## Upgrade notes
|
||||||
|
|
||||||
### Next release
|
### v4.5.0
|
||||||
|
|
||||||
|
#### Removed GeoJSON crs workaround for GeoServer
|
||||||
|
|
||||||
|
Previous version of GeoServer returned invalid crs in GeoJSON output. The workaround in `ol.format.GeoJSON` used to read this crs code is now removed.
|
||||||
|
|
||||||
|
#### Deprecation of `ol.Attribution`
|
||||||
|
|
||||||
|
`ol.Attribution` is deprecated and will be removed in the next major version. Instead, you can construct a source with a string attribution or an array of strings. For dynamic attributions, you can provide a function that gets called with the current frame state.
|
||||||
|
|
||||||
|
Before:
|
||||||
|
```js
|
||||||
|
var source = new ol.source.XYZ({
|
||||||
|
attributions: [
|
||||||
|
new ol.Attribution({html: 'some attribution'})
|
||||||
|
]
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
After:
|
||||||
|
```js
|
||||||
|
var source = new ol.source.XYZ({
|
||||||
|
attributions: 'some attribution'
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
In addition to passing a string or an array of strings for the `attributions` option, you can also pass a function that will get called with the current frame state.
|
||||||
|
```js
|
||||||
|
var source = new ol.source.XYZ({
|
||||||
|
attributions: function(frameState) {
|
||||||
|
// inspect the frame state and return attributions
|
||||||
|
return 'some attribution'; // or ['multiple', 'attributions'] or null
|
||||||
|
}
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
### v4.4.0
|
||||||
|
|
||||||
|
#### Behavior change for polygon labels
|
||||||
|
|
||||||
|
Polygon labels are now only rendered when the label does not exceed the polygon at the label position. To get the old behavior, configure your `ol.style.Text` with `exceedLength: true`.
|
||||||
|
|
||||||
|
#### Minor change for custom `tileLoadFunction` with `ol.source.VectorTile`
|
||||||
|
|
||||||
|
It is no longer necessary to set the projection on the tile. Instead, the `readFeatures` method must be called with the tile's extent as `extent` option and the view's projection as `featureProjection`.
|
||||||
|
|
||||||
|
Before:
|
||||||
|
```js
|
||||||
|
tile.setLoader(function() {
|
||||||
|
var data = // ... fetch data
|
||||||
|
var format = tile.getFormat();
|
||||||
|
tile.setFeatures(format.readFeatures(data));
|
||||||
|
tile.setProjection(format.readProjection(data));
|
||||||
|
// uncomment the line below for ol.format.MVT only
|
||||||
|
//tile.setExtent(format.getLastExtent());
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
After:
|
||||||
|
```js
|
||||||
|
tile.setLoader(function() {
|
||||||
|
var data = // ... fetch data
|
||||||
|
var format = tile.getFormat();
|
||||||
|
tile.setFeatures(format.readFeatures(data, {
|
||||||
|
featureProjection: map.getView().getProjection(),
|
||||||
|
// uncomment the line below for ol.format.MVT only
|
||||||
|
//extent: tile.getExtent()
|
||||||
|
}));
|
||||||
|
);
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Deprecation of `ol.DeviceOrientation`
|
||||||
|
|
||||||
|
`ol.DeviceOrientation` is deprecated and will be removed in the next major version.
|
||||||
|
The device-orientation example has been updated to use the (gyronorm.js)[https://github.com/dorukeker/gyronorm.js] library.
|
||||||
|
|
||||||
|
|
||||||
|
### v4.3.0
|
||||||
|
|
||||||
|
#### `ol.source.VectorTile` no longer requires a `tileGrid` option
|
||||||
|
|
||||||
|
By default, the `ol.source.VectorTile` constructor creates an XYZ tile grid (in Web Mercator) for 512 pixel tiles and assumes a max zoom level of 22. If you were creating a vector tile source with an explicit `tileGrid` option, you can now remove this.
|
||||||
|
|
||||||
|
Before:
|
||||||
|
```js
|
||||||
|
var source = new ol.source.VectorTile({
|
||||||
|
tileGrid: ol.tilegrid.createXYZ({tileSize: 512, maxZoom: 22}),
|
||||||
|
url: url
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
After:
|
||||||
|
```js
|
||||||
|
var source = new ol.source.VectorTile({
|
||||||
|
url: url
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
If you need to change the max zoom level, you can pass the source a `maxZoom` option. If you need to change the tile size, you can pass the source a `tileSize` option. If you need a completely custom tile grid, you can still pass the source a `tileGrid` option.
|
||||||
|
|
||||||
|
#### `ol.interaction.Modify` deletes with `alt` key only
|
||||||
|
|
||||||
|
To delete features with the modify interaction, press the `alt` key while clicking on an existing vertex. If you want to configure the modify interaction with a different delete condition, use the `deleteCondition` option. For example, to allow deletion on a single click with no modifier keys, configure the interaction like this:
|
||||||
|
```js
|
||||||
|
var interaction = new ol.interaction.Modify({
|
||||||
|
source: source,
|
||||||
|
deleteCondition: function(event) {
|
||||||
|
return ol.events.condition.noModifierKeys(event) && ol.events.condition.singleClick(event);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
The motivation for this change is to make the modify, draw, and snap interactions all work well together. Previously, the use of these interactions with the default configuration would make it so you couldn't reliably add new vertices (click with no modifier) and delete existing vertices (click with no modifier).
|
||||||
|
|
||||||
|
#### `ol.source.VectorTile` no longer has a `tilePixelRatio` option
|
||||||
|
|
||||||
|
The `tilePixelRatio` option was only used for tiles in projections with `tile-pixels` as units. For tiles read with `ol.format.MVT` and the default tile loader, or tiles with the default pixel size of 4096 pixels, no changes are necessary. For the very rare cases that do not fall under these categories, a custom `tileLoadFunction` now needs to be configured on the `ol.source.VectorTile`. In addition to calling `tile.setFeatures()` and `tile.setProjection()`, it also needs to contain code like the following:
|
||||||
|
```js
|
||||||
|
var extent = tile.getFormat() instanceof ol.format.MVT ?
|
||||||
|
tile.getLastExtent() :
|
||||||
|
[0, 0, tilePixelRatio * tileSize, tilePixelRatio * tileSize];
|
||||||
|
tile.setExtent(extent);
|
||||||
|
```
|
||||||
|
|
||||||
|
#### `ol.animate` now takes the shortest arc for rotation animation
|
||||||
|
|
||||||
|
Usually rotation animations should animate along the shortest arc. There are rare occasions where a spinning animation effect is desired. So if you previously had something like
|
||||||
|
```js
|
||||||
|
map.getView().animate({
|
||||||
|
rotation: 2 * Math.PI,
|
||||||
|
duration: 2000
|
||||||
|
});
|
||||||
|
```
|
||||||
|
we recommend to split the animation into two parts and use different easing functions. The code below results in the same effect as the snippet above did with previous versions:
|
||||||
|
```js
|
||||||
|
map.getView().animate({
|
||||||
|
rotation: Math.PI,
|
||||||
|
easing: ol.easing.easeIn
|
||||||
|
}, {
|
||||||
|
rotation: 2 * Math.PI,
|
||||||
|
easing: ol.easing.easeOut
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
### v4.2.0
|
||||||
|
|
||||||
|
#### Return values of two `ol.style.RegularShape` getters have changed
|
||||||
|
|
||||||
|
To provide a more consistent behaviour the following getters now return the same value that was given to constructor:
|
||||||
|
|
||||||
|
`ol.style.RegularShape#getPoints` does not return the double amount of points anymore if a radius2 is set.
|
||||||
|
|
||||||
|
`ol.style.RegularShape#getRadius2` will return `undefined` if no radius2 is set.
|
||||||
|
|
||||||
|
### v4.1.0
|
||||||
|
|
||||||
|
#### Adding duplicate layers to a map throws
|
||||||
|
|
||||||
|
Previously, you could do this:
|
||||||
|
```js
|
||||||
|
map.addLayer(layer);
|
||||||
|
map.addLayer(layer);
|
||||||
|
```
|
||||||
|
|
||||||
|
However, after adding a duplicate layer, things failed if you tried to remove that layer.
|
||||||
|
|
||||||
|
Now, `map.addLayer()` throws if you try adding a layer that has already been added to the map.
|
||||||
|
|
||||||
|
#### Simpler `constrainResolution` configuration
|
||||||
|
|
||||||
|
The `constrainResolution` configuration for `ol.interaction.PinchZoom` and `ol.interaction.MouseWheelZoom`
|
||||||
|
can now be set directly with an option in `ol.interaction.defaults`:
|
||||||
|
```js
|
||||||
|
ol.interaction.defaults({
|
||||||
|
constrainResolution: true
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
### v4.0.0
|
### v4.0.0
|
||||||
|
|
||||||
|
|||||||
127
changelog/v4.1.0.md
Normal file
127
changelog/v4.1.0.md
Normal file
@@ -0,0 +1,127 @@
|
|||||||
|
# 4.1.0
|
||||||
|
|
||||||
|
## Summary
|
||||||
|
|
||||||
|
The v4.1.0 release includes features and fixes from 91 pull requests.
|
||||||
|
|
||||||
|
#### Interactive overview map
|
||||||
|
|
||||||
|
The extent rectangle on the overview map can now be dragged to control the view for the main map.
|
||||||
|
|
||||||
|
#### Setting min and max zoom for a view
|
||||||
|
|
||||||
|
You can now change the min or max zoom for a view after it has been created. This can be useful if you want to limit how far out users can zoom based on changes in viewport width (use `view.setMinZoom()` for this).
|
||||||
|
|
||||||
|
#### Adding duplicate layers to a map throws
|
||||||
|
|
||||||
|
Previously, you could do this:
|
||||||
|
```js
|
||||||
|
map.addLayer(layer);
|
||||||
|
map.addLayer(layer);
|
||||||
|
```
|
||||||
|
|
||||||
|
However, after adding a duplicate layer, things failed if you tried to remove that layer.
|
||||||
|
|
||||||
|
Now, `map.addLayer()` throws if you try adding a layer that has already been added to the map.
|
||||||
|
|
||||||
|
#### Simpler `constrainResolution` configuration
|
||||||
|
|
||||||
|
The `constrainResolution` configuration for `ol.interaction.PinchZoom` and `ol.interaction.MouseWheelZoom`
|
||||||
|
can now be set directly with an option in `ol.interaction.defaults`:
|
||||||
|
```js
|
||||||
|
ol.interaction.defaults({
|
||||||
|
constrainResolution: true
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
## Detailed changes
|
||||||
|
|
||||||
|
* [#6675](https://github.com/openlayers/openlayers/pull/6675) - Reset cursor when translate interaction is removed or deactivated ([@tchandelle](https://github.com/tchandelle))
|
||||||
|
* [#6707](https://github.com/openlayers/openlayers/pull/6707) - Set version when building ol package ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#6706](https://github.com/openlayers/openlayers/pull/6706) - Add ol.source.Cluster#getDistance function ([@fredj](https://github.com/fredj))
|
||||||
|
* [#6695](https://github.com/openlayers/openlayers/pull/6695) - Unique layers ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#6704](https://github.com/openlayers/openlayers/pull/6704) - Include typedefs.js in closure compiler tutorial build configurations ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#6702](https://github.com/openlayers/openlayers/pull/6702) - Update clean-css-cli to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#6693](https://github.com/openlayers/openlayers/pull/6693) - Update clean-css-cli to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#6691](https://github.com/openlayers/openlayers/pull/6691) - Move eslint globals to to test/.eslintrc ([@fredj](https://github.com/fredj))
|
||||||
|
* [#6689](https://github.com/openlayers/openlayers/pull/6689) - Add new constrainResolution option to olx.interaction.DefaultsOptions ([@fredj](https://github.com/fredj))
|
||||||
|
* [#6692](https://github.com/openlayers/openlayers/pull/6692) - Improve docs for MouseWheelZoom constrainResolution ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#6687](https://github.com/openlayers/openlayers/pull/6687) - Clip image only if the layer extent intersects the view extent ([@tchandelle](https://github.com/tchandelle))
|
||||||
|
* [#6686](https://github.com/openlayers/openlayers/pull/6686) - Update finishCoordinate in ol.interaction.Draw#removeLastPoint ([@fredj](https://github.com/fredj))
|
||||||
|
* [#6682](https://github.com/openlayers/openlayers/pull/6682) - Add example, docs and typedef for MouseWheelZoom's constrainResolution option ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#6683](https://github.com/openlayers/openlayers/pull/6683) - Add this jsdoc tag to ol.interaction.DragBox.defaultBoxEndCondition ([@fredj](https://github.com/fredj))
|
||||||
|
* [#6681](https://github.com/openlayers/openlayers/pull/6681) - Add constrainResolution in olx.interaction.PinchZoomOptions typedef ([@fredj](https://github.com/fredj))
|
||||||
|
* [#6671](https://github.com/openlayers/openlayers/pull/6671) - Add constraintResolution option to MouseWheelZoom for zoom with trackpad ([@kaiCu](https://github.com/kaiCu))
|
||||||
|
* [#6680](https://github.com/openlayers/openlayers/pull/6680) - Remove ol.DRAG_BOX_HYSTERESIS_PIXELS define and add option ([@fredj](https://github.com/fredj))
|
||||||
|
* [#6666](https://github.com/openlayers/openlayers/pull/6666) - Use the optional extent in ol.structs.RBush#getExtent ([@fredj](https://github.com/fredj))
|
||||||
|
* [#6670](https://github.com/openlayers/openlayers/pull/6670) - fix(package): update browserify to version 14.3.0 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#6664](https://github.com/openlayers/openlayers/pull/6664) - Update async to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#6659](https://github.com/openlayers/openlayers/pull/6659) - Add crossOrigin to examples using ol.style.Icon ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#6658](https://github.com/openlayers/openlayers/pull/6658) - Fixes for raster source rendering ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#6620](https://github.com/openlayers/openlayers/pull/6620) - Fix the parsing of flat coordinates in GML2 for 3D geometies ([@Jenselme](https://github.com/Jenselme))
|
||||||
|
* [#6657](https://github.com/openlayers/openlayers/pull/6657) - Update coveralls to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#6644](https://github.com/openlayers/openlayers/pull/6644) - Allow minZoom and maxZoom to be set on a view ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#6636](https://github.com/openlayers/openlayers/pull/6636) - Add test for the metric unit displayed in the scaleline ([@fredj](https://github.com/fredj))
|
||||||
|
* [#6598](https://github.com/openlayers/openlayers/pull/6598) - Add support of micrometers to scaleline ([@hajjimurad](https://github.com/hajjimurad))
|
||||||
|
* [#6643](https://github.com/openlayers/openlayers/pull/6643) - Add common transforms by default ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#6567](https://github.com/openlayers/openlayers/pull/6567) - Overlay visible before updating render position ([@nagytech](https://github.com/nagytech))
|
||||||
|
* [#6634](https://github.com/openlayers/openlayers/pull/6634) - Fix custom build when openlayers is installed from yarn package manager ([@Toilal](https://github.com/Toilal))
|
||||||
|
* [#6639](https://github.com/openlayers/openlayers/pull/6639) - Update async to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#6635](https://github.com/openlayers/openlayers/pull/6635) - Add missing externs to custom builds examples ([@Toilal](https://github.com/Toilal))
|
||||||
|
* [#6631](https://github.com/openlayers/openlayers/pull/6631) - Fix request image size caclulation ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#6627](https://github.com/openlayers/openlayers/pull/6627) - Change css selector for user-select none ([@bartvde](https://github.com/bartvde))
|
||||||
|
* [#6626](https://github.com/openlayers/openlayers/pull/6626) - Respect cacheSize for reprojected caches ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#6623](https://github.com/openlayers/openlayers/pull/6623) - Fix outerWidth and outerHeight calculation in IE ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#6625](https://github.com/openlayers/openlayers/pull/6625) - Update clean-css-cli to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#6622](https://github.com/openlayers/openlayers/pull/6622) - Fix proj4 type ([@gberaudo](https://github.com/gberaudo))
|
||||||
|
* [#6617](https://github.com/openlayers/openlayers/pull/6617) - Use GeoServer/GWC caching when possible ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#6614](https://github.com/openlayers/openlayers/pull/6614) - Filter write util method ([@adube](https://github.com/adube))
|
||||||
|
* [#6616](https://github.com/openlayers/openlayers/pull/6616) - Fix closing tag in gml tests ([@fredj](https://github.com/fredj))
|
||||||
|
* [#6612](https://github.com/openlayers/openlayers/pull/6612) - Add support for WFS 1.0.0 to ol.format.WFS#writeTransaction ([@Jenselme](https://github.com/Jenselme))
|
||||||
|
* [#5887](https://github.com/openlayers/openlayers/pull/5887) - Interactive overview map ([@felixveysseyre](https://github.com/felixveysseyre))
|
||||||
|
* [#6610](https://github.com/openlayers/openlayers/pull/6610) - Fix event type case of MSPointerDown ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#6611](https://github.com/openlayers/openlayers/pull/6611) - Update jquery to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#6609](https://github.com/openlayers/openlayers/pull/6609) - Update sinon to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#6606](https://github.com/openlayers/openlayers/pull/6606) - Reset dragSegments after vertex deletion ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#6523](https://github.com/openlayers/openlayers/pull/6523) - Add Gml2 serializers to support WFS-T 1.0.0 ([@Jenselme](https://github.com/Jenselme))
|
||||||
|
* [#6579](https://github.com/openlayers/openlayers/pull/6579) - Update slimerjs to v0.10.3 ([@fredj](https://github.com/fredj))
|
||||||
|
* [#6577](https://github.com/openlayers/openlayers/pull/6577) - Adding crossOrigin to optionsFromCapabilities ([@fredj](https://github.com/fredj))
|
||||||
|
* [#6604](https://github.com/openlayers/openlayers/pull/6604) - Fix RegularShape documentation ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#6603](https://github.com/openlayers/openlayers/pull/6603) - Update eslint to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#6601](https://github.com/openlayers/openlayers/pull/6601) - Update jquery to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#6600](https://github.com/openlayers/openlayers/pull/6600) - Update fs-extra to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#6578](https://github.com/openlayers/openlayers/pull/6578) - Add ol.RenderOrderFunction typedef ([@icholy](https://github.com/icholy))
|
||||||
|
* [#6589](https://github.com/openlayers/openlayers/pull/6589) - Update sinon to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#6592](https://github.com/openlayers/openlayers/pull/6592) - Update clean-css-cli to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#6594](https://github.com/openlayers/openlayers/pull/6594) - Update fs-extra to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#6580](https://github.com/openlayers/openlayers/pull/6580) - Remove unused esprima package ([@fredj](https://github.com/fredj))
|
||||||
|
* [#6570](https://github.com/openlayers/openlayers/pull/6570) - Don't use deprecated sinon.stub(obj, 'meth', fn) ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#6569](https://github.com/openlayers/openlayers/pull/6569) - Return null if the layer was not found in the WMTS capabilities ([@fredj](https://github.com/fredj))
|
||||||
|
* [#6551](https://github.com/openlayers/openlayers/pull/6551) - Use the default fill and stroke color ([@fredj](https://github.com/fredj))
|
||||||
|
* [#6560](https://github.com/openlayers/openlayers/pull/6560) - Don’t crash if feature loader xhr response returns 500 ([@geosense](https://github.com/geosense))
|
||||||
|
* [#6559](https://github.com/openlayers/openlayers/pull/6559) - Remove unneeded type cast ([@fredj](https://github.com/fredj))
|
||||||
|
* [#6558](https://github.com/openlayers/openlayers/pull/6558) - Update coveralls to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#6553](https://github.com/openlayers/openlayers/pull/6553) - Update proj4 to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#6554](https://github.com/openlayers/openlayers/pull/6554) - Update eslint to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#6549](https://github.com/openlayers/openlayers/pull/6549) - Make getAnimating and cancelAnimations @api ([@bartvde](https://github.com/bartvde))
|
||||||
|
* [#6547](https://github.com/openlayers/openlayers/pull/6547) - Clean up left-over code from animation changes ([@bartvde](https://github.com/bartvde))
|
||||||
|
* [#6540](https://github.com/openlayers/openlayers/pull/6540) - More precise ol.Geolocation#getAccuracyGeometry return type ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#6539](https://github.com/openlayers/openlayers/pull/6539) - Update sinon to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#6535](https://github.com/openlayers/openlayers/pull/6535) - Update closure-util to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#6529](https://github.com/openlayers/openlayers/pull/6529) - Update clean-css-cli to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#6530](https://github.com/openlayers/openlayers/pull/6530) - Update eslint to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#6515](https://github.com/openlayers/openlayers/pull/6515) - Add view methods for getting max zoom, min zoom, and any zoom for a resolution ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#6520](https://github.com/openlayers/openlayers/pull/6520) - Update eslint to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#6518](https://github.com/openlayers/openlayers/pull/6518) - Fix olx.style.IconOptions.prototype.src type ([@fredj](https://github.com/fredj))
|
||||||
|
* [#6513](https://github.com/openlayers/openlayers/pull/6513) - Update async to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#6512](https://github.com/openlayers/openlayers/pull/6512) - Complete animations at target values ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#6511](https://github.com/openlayers/openlayers/pull/6511) - Revert accidently committed example change ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#6507](https://github.com/openlayers/openlayers/pull/6507) - ol.DEBUG no longer needed in transforms/module.js ([@probins](https://github.com/probins))
|
||||||
|
* [#6505](https://github.com/openlayers/openlayers/pull/6505) - Update ol package to include Browserify config ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#6504](https://github.com/openlayers/openlayers/pull/6504) - Determine if we should handle the drawing while the pointer is moving ([@tchandelle](https://github.com/tchandelle))
|
||||||
|
* [#6499](https://github.com/openlayers/openlayers/pull/6499) - Be more tolerant when comparing vertices when modifying a circle ([@tchandelle](https://github.com/tchandelle))
|
||||||
|
* [#6498](https://github.com/openlayers/openlayers/pull/6498) - Travis failing on master - use Node v6.1.x ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#6493](https://github.com/openlayers/openlayers/pull/6493) - Vector tile cleanup ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#6483](https://github.com/openlayers/openlayers/pull/6483) - Fix renderer.canvas.TileLayer to calculate correct canvas height for drawing. ([@nearmap](https://github.com/nearmap))
|
||||||
|
* [#6488](https://github.com/openlayers/openlayers/pull/6488) - Do not draw circle when pointer not moved and freehand is on ([@tchandelle](https://github.com/tchandelle))
|
||||||
|
* [#6491](https://github.com/openlayers/openlayers/pull/6491) - Update clean-css-cli to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
13
changelog/v4.1.1.md
Normal file
13
changelog/v4.1.1.md
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
# 4.1.1
|
||||||
|
|
||||||
|
## Summary
|
||||||
|
|
||||||
|
This is a patch release to fix several minor issues and two regressions in the [4.1.0 release](https://github.com/openlayers/openlayers/releases/tag/v4.1.0).
|
||||||
|
|
||||||
|
## Changes
|
||||||
|
|
||||||
|
* [#6711](https://github.com/openlayers/openlayers/pull/6711) - Correct path to cleancss ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#6728](https://github.com/openlayers/openlayers/pull/6728) - Fix tissot examples docs ([@fredj](https://github.com/fredj))
|
||||||
|
* [#6732](https://github.com/openlayers/openlayers/pull/6732) - Use firefox < 53 in travis ([@fredj](https://github.com/fredj))
|
||||||
|
* [#6741](https://github.com/openlayers/openlayers/pull/6741) - Allow user selection in overlay container ([@fredj](https://github.com/fredj))
|
||||||
|
* [#6755](https://github.com/openlayers/openlayers/pull/6755) - Add missing goog.require ([@fredj](https://github.com/fredj))
|
||||||
151
changelog/v4.2.0.md
Normal file
151
changelog/v4.2.0.md
Normal file
@@ -0,0 +1,151 @@
|
|||||||
|
# 4.2.0
|
||||||
|
|
||||||
|
## Summary
|
||||||
|
|
||||||
|
The v4.2.0 release includes features and fixes from 87 pull requests.
|
||||||
|
|
||||||
|
#### New `movestart` event on `ol.Map`
|
||||||
|
|
||||||
|
The map now has a `movestart` event, as countarpart to the already existing `moveend` event.
|
||||||
|
|
||||||
|
#### New `moveTolerance` option in `ol.Map`
|
||||||
|
|
||||||
|
Some touch devices do not play well with OpenLayers's way of detecting clicks. To overcome this, a new `moveTolerance` option was introduced, so users can override the 1 pixel threshold above which a touch-release sequence won't be considered a click any more.
|
||||||
|
|
||||||
|
#### Support for multiple layers in `ol.format.TopoJSON`
|
||||||
|
|
||||||
|
With the new `layerName` and `layers` options, applications can extract the layer as additional attribute for vector features from `ol.format.TopoJSON`. This can especially be useful for styling vector tile layers.
|
||||||
|
|
||||||
|
#### New `tileJSON` option for `ol.source.TileJSON`
|
||||||
|
|
||||||
|
Like `ol.source.TileUTFGrid`, `ol.source.TileJSON` now also has a `tileJSON` option to configue it with inline TileJSON instead of a TileJSON URL.
|
||||||
|
|
||||||
|
#### New `ol.format.filter.during` filter
|
||||||
|
|
||||||
|
Although OpenLayers has no support for WFS v2.0, we added `ol.format.filter.during` for the `During` temporal operator.
|
||||||
|
|
||||||
|
#### Improved vector tile rendering at non-native resolutions
|
||||||
|
|
||||||
|
The vector tile renderer now uses an internal tile grid for all resolutions to cache pre-rendered tiles, even if the tile source does not have tiles for the viewed resolution. This improves rendering quality and performance.
|
||||||
|
|
||||||
|
#### New `insertVertexCondition` for `ol.interaction.Modify`
|
||||||
|
|
||||||
|
Applications can now control whether a vertex will be inserted into the modified geometry. This makes it easier to modify custom geometries.
|
||||||
|
|
||||||
|
#### New `callback` option for `ol.View#fit()`
|
||||||
|
|
||||||
|
To allow applications to perform custom actions when an animation associated with `ol.View#fit()` is completed, that method now has a new `callback` option.
|
||||||
|
|
||||||
|
#### New `ol.View#getInteracting()` getter
|
||||||
|
|
||||||
|
Like `ol.View#getAnimating()` returns `true` during a view animation, `ol.View#getInteracting()` returns `true` while users are interacting with the view.
|
||||||
|
|
||||||
|
#### New `hasZ` option for `ol.format.WFS#writeTransaction()`
|
||||||
|
|
||||||
|
When the new `hasZ` option is set to `true`, 3D coordinates will be preserved and encoded when writing a WFS transaction.
|
||||||
|
|
||||||
|
#### New `wrapX` option for `ol.source.Stamen`
|
||||||
|
|
||||||
|
Like other tile sources, `ol.source.Stamen` now also has a `wrapX` option, which allows applications to turn off wrapping the world in x direction.
|
||||||
|
|
||||||
|
#### Label support for `ol.Graticule`
|
||||||
|
|
||||||
|
The `ol.Graticule` component has several new options to add and control the output of labels. To turn on labelling, configure `ol.Graticule` with `showLabels: true`. The new options to control label formatting are `lonLabelFormatter`, `latLabelFormatter`, `lonLabelPosition` and `latLabelPosition`.
|
||||||
|
|
||||||
|
#### Return values of two `ol.style.RegularShape` getters have changed
|
||||||
|
|
||||||
|
To provide a more consistent behaviour the following getters now return the same value that was given to constructor:
|
||||||
|
|
||||||
|
`ol.style.RegularShape#getPoints` does not return the double amount of points anymore if a radius2 is set.
|
||||||
|
|
||||||
|
`ol.style.RegularShape#getRadius2` will return `undefined` if no radius2 is set.
|
||||||
|
|
||||||
|
## Detailed changes
|
||||||
|
|
||||||
|
* [#6912](https://github.com/openlayers/openlayers/pull/6912) - Use class instead of style for Translate cursor ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#6858](https://github.com/openlayers/openlayers/pull/6858) - Webgl vector improvements ([@GaborFarkas](https://github.com/GaborFarkas))
|
||||||
|
* [#6890](https://github.com/openlayers/openlayers/pull/6890) - Add a movestart event ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#6910](https://github.com/openlayers/openlayers/pull/6910) - Avoid duplicates in Observables list ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#6902](https://github.com/openlayers/openlayers/pull/6902) - Require minimum duration for kinetic animation ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#6904](https://github.com/openlayers/openlayers/pull/6904) - chore(package): update sinon to version 2.3.4 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#6901](https://github.com/openlayers/openlayers/pull/6901) - Added release note for changed methods of ol.style.regularShape ([@KlausBenndorf](https://github.com/KlausBenndorf))
|
||||||
|
* [#6886](https://github.com/openlayers/openlayers/pull/6886) - Make ol.source.Cluster extensible ([@gberaudo](https://github.com/gberaudo))
|
||||||
|
* [#6887](https://github.com/openlayers/openlayers/pull/6887) - Disable rotation for views with enableRotation: false ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#6900](https://github.com/openlayers/openlayers/pull/6900) - Update clean-css-cli to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#6897](https://github.com/openlayers/openlayers/pull/6897) - ProjectionLike in proj.getPointResolution ([@probins](https://github.com/probins))
|
||||||
|
* [#6888](https://github.com/openlayers/openlayers/pull/6888) - Add note about custom functions to getPointResolution ([@probins](https://github.com/probins))
|
||||||
|
* [#6893](https://github.com/openlayers/openlayers/pull/6893) - Fix decimals options when writing features ([@tchandelle](https://github.com/tchandelle))
|
||||||
|
* [#6759](https://github.com/openlayers/openlayers/pull/6759) - Regular shape points ([@KlausBenndorf](https://github.com/KlausBenndorf))
|
||||||
|
* [#6892](https://github.com/openlayers/openlayers/pull/6892) - Accept a ol.ProjectionLike instead of ol.proj.Projection ([@fredj](https://github.com/fredj))
|
||||||
|
* [#6883](https://github.com/openlayers/openlayers/pull/6883) - Remove unused ol.pointer.EventSource#getMapping function ([@fredj](https://github.com/fredj))
|
||||||
|
* [#6870](https://github.com/openlayers/openlayers/pull/6870) - Center map on proper earth, not one to the left ([@kannes](https://github.com/kannes))
|
||||||
|
* [#6872](https://github.com/openlayers/openlayers/pull/6872) - Update rollup to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#6876](https://github.com/openlayers/openlayers/pull/6876) - Only test ol.interaction.DragAndDrop if FileReader is supported ([@fredj](https://github.com/fredj))
|
||||||
|
* [#6874](https://github.com/openlayers/openlayers/pull/6874) - Remove unused var from ol.proj ([@probins](https://github.com/probins))
|
||||||
|
* [#6875](https://github.com/openlayers/openlayers/pull/6875) - chore(package): update sinon to version 2.3.2 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#6867](https://github.com/openlayers/openlayers/pull/6867) - add getArea to api ([@cs09g](https://github.com/cs09g))
|
||||||
|
* [#6863](https://github.com/openlayers/openlayers/pull/6863) - change size to optional ([@cs09g](https://github.com/cs09g))
|
||||||
|
* [#6864](https://github.com/openlayers/openlayers/pull/6864) - fix(package): update closure-util to version 1.21.0 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#6834](https://github.com/openlayers/openlayers/pull/6834) - Move tolerance option ([@notnotse](https://github.com/notnotse))
|
||||||
|
* [#6856](https://github.com/openlayers/openlayers/pull/6856) - Fix creation of new URL in readSharedStyle_ and readSharedStyleMap_ ([@oterral](https://github.com/oterral))
|
||||||
|
* [#6852](https://github.com/openlayers/openlayers/pull/6852) - Update mocha to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#6851](https://github.com/openlayers/openlayers/pull/6851) - Register/unregister listeners in setActive ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#6832](https://github.com/openlayers/openlayers/pull/6832) - Force state of error tiles when usInterimTilesOnError is false ([@oterral](https://github.com/oterral))
|
||||||
|
* [#6849](https://github.com/openlayers/openlayers/pull/6849) - Create URL object only when we can ([@oterral](https://github.com/oterral))
|
||||||
|
* [#6845](https://github.com/openlayers/openlayers/pull/6845) - Snap on circles ([@tchandelle](https://github.com/tchandelle))
|
||||||
|
* [#6842](https://github.com/openlayers/openlayers/pull/6842) - add condition to check if active ([@cs09g](https://github.com/cs09g))
|
||||||
|
* [#6844](https://github.com/openlayers/openlayers/pull/6844) - Update sinon to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#6841](https://github.com/openlayers/openlayers/pull/6841) - Update sinon to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#6839](https://github.com/openlayers/openlayers/pull/6839) - Update async to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#6838](https://github.com/openlayers/openlayers/pull/6838) - fix(package): update handlebars to version 4.0.10 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#6817](https://github.com/openlayers/openlayers/pull/6817) - Multiple layers in TopoJSON vector tiles ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#6833](https://github.com/openlayers/openlayers/pull/6833) - Fix geojson-vt example for line and point geometries ([@oterral](https://github.com/oterral))
|
||||||
|
* [#6829](https://github.com/openlayers/openlayers/pull/6829) - Update clean-css-cli to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#6819](https://github.com/openlayers/openlayers/pull/6819) - Adjust/fix API for working with vector tile features ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#6818](https://github.com/openlayers/openlayers/pull/6818) - Add tileJSON option to ol.source.TileJSON ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#6805](https://github.com/openlayers/openlayers/pull/6805) - Display country name on click select ([@fredj](https://github.com/fredj))
|
||||||
|
* [#6813](https://github.com/openlayers/openlayers/pull/6813) - Prepend the version with a v ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#6814](https://github.com/openlayers/openlayers/pull/6814) - Re-add ol.render.Feature#getGeometry() ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#6812](https://github.com/openlayers/openlayers/pull/6812) - Update mocha to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#6786](https://github.com/openlayers/openlayers/pull/6786) - Add ol.format.filter.during ([@fredj](https://github.com/fredj))
|
||||||
|
* [#6806](https://github.com/openlayers/openlayers/pull/6806) - Add note about features with the same id ([@drnextgis](https://github.com/drnextgis))
|
||||||
|
* [#6802](https://github.com/openlayers/openlayers/pull/6802) - Remove unused setFeatures and getFormat methods ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#6801](https://github.com/openlayers/openlayers/pull/6801) - Add getId method for ol.render.Feature ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#6778](https://github.com/openlayers/openlayers/pull/6778) - Add a small tolerance when testing pointer event positions ([@fredj](https://github.com/fredj))
|
||||||
|
* [#6796](https://github.com/openlayers/openlayers/pull/6796) - Re-add accidently dropped condition ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#6798](https://github.com/openlayers/openlayers/pull/6798) - chore(package): update clean-css-cli to version 4.1.2 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#6795](https://github.com/openlayers/openlayers/pull/6795) - Fix ol.DrawGeometryFunctionType coordinates argument type ([@fredj](https://github.com/fredj))
|
||||||
|
* [#6797](https://github.com/openlayers/openlayers/pull/6797) - Update clean-css-cli to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#6779](https://github.com/openlayers/openlayers/pull/6779) - Decouple source and rendered tile grid of vector tile sources ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#6785](https://github.com/openlayers/openlayers/pull/6785) - Add insertVertexCondition to ol.interaction.Modify options ([@fredj](https://github.com/fredj))
|
||||||
|
* [#6792](https://github.com/openlayers/openlayers/pull/6792) - Create intermediate canvas when resolutions have changed ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#6790](https://github.com/openlayers/openlayers/pull/6790) - Update resemblejs to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#6784](https://github.com/openlayers/openlayers/pull/6784) - chore(package): update clean-css-cli to version 4.1.0 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#6556](https://github.com/openlayers/openlayers/pull/6556) - Reading kml xunits/yunits insetPixels ([@KlausBenndorf](https://github.com/KlausBenndorf))
|
||||||
|
* [#6775](https://github.com/openlayers/openlayers/pull/6775) - Update closure-util to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#6774](https://github.com/openlayers/openlayers/pull/6774) - Update fs-extra to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#6770](https://github.com/openlayers/openlayers/pull/6770) - Enforce the "no missing requires" rule ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#6772](https://github.com/openlayers/openlayers/pull/6772) - Remove html tag from shortdesc ([@fredj](https://github.com/fredj))
|
||||||
|
* [#6769](https://github.com/openlayers/openlayers/pull/6769) - Update handlebars to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#6757](https://github.com/openlayers/openlayers/pull/6757) - Fix crashing on creation of snap-interaction, if Circle is among the features to snap to. ([@hajjimurad](https://github.com/hajjimurad))
|
||||||
|
* [#6766](https://github.com/openlayers/openlayers/pull/6766) - Update sinon to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#6765](https://github.com/openlayers/openlayers/pull/6765) - Add new callback function to view.FitOptions ([@fredj](https://github.com/fredj))
|
||||||
|
* [#6764](https://github.com/openlayers/openlayers/pull/6764) - Added View#getInteracting() to the api ([@mblinsitu](https://github.com/mblinsitu))
|
||||||
|
* [#6760](https://github.com/openlayers/openlayers/pull/6760) - Update handlebars to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#6761](https://github.com/openlayers/openlayers/pull/6761) - Update async to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#6755](https://github.com/openlayers/openlayers/pull/6755) - Add missing goog.require ([@fredj](https://github.com/fredj))
|
||||||
|
* [#6751](https://github.com/openlayers/openlayers/pull/6751) - Update coveralls to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#6750](https://github.com/openlayers/openlayers/pull/6750) - Update fs-extra to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#6741](https://github.com/openlayers/openlayers/pull/6741) - Allow user selection in overlay container ([@fredj](https://github.com/fredj))
|
||||||
|
* [#6744](https://github.com/openlayers/openlayers/pull/6744) - Update mocha to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#6737](https://github.com/openlayers/openlayers/pull/6737) - Graticule labels ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#6740](https://github.com/openlayers/openlayers/pull/6740) - Fix spelling ([@fredj](https://github.com/fredj))
|
||||||
|
* [#6730](https://github.com/openlayers/openlayers/pull/6730) - Update metalsmith-layouts to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#6732](https://github.com/openlayers/openlayers/pull/6732) - Use firefox < 53 in travis ([@fredj](https://github.com/fredj))
|
||||||
|
* [#6677](https://github.com/openlayers/openlayers/pull/6677) - Add an option to writeTransaction to support 3D geometries ([@Jenselme](https://github.com/Jenselme))
|
||||||
|
* [#6524](https://github.com/openlayers/openlayers/pull/6524) - Don't append feature prefix twice in WFS requests ([@Jenselme](https://github.com/Jenselme))
|
||||||
|
* [#6727](https://github.com/openlayers/openlayers/pull/6727) - Add default value in doc for the hitTolerance option ([@fredj](https://github.com/fredj))
|
||||||
|
* [#6724](https://github.com/openlayers/openlayers/pull/6724) - Add wrapX option to Stamen source ([@fredj](https://github.com/fredj))
|
||||||
|
* [#6728](https://github.com/openlayers/openlayers/pull/6728) - Fix tissot examples docs ([@fredj](https://github.com/fredj))
|
||||||
|
* [#6725](https://github.com/openlayers/openlayers/pull/6725) - Update dependencies to enable Greenkeeper 🌴 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#6711](https://github.com/openlayers/openlayers/pull/6711) - Correct path to cleancss ([@tschaub](https://github.com/tschaub))
|
||||||
216
changelog/v4.3.0.md
Normal file
216
changelog/v4.3.0.md
Normal file
@@ -0,0 +1,216 @@
|
|||||||
|
# 4.3.0
|
||||||
|
|
||||||
|
## Summary
|
||||||
|
|
||||||
|
The v4.3.0 release includes features and fixes from 92 pull requests.
|
||||||
|
|
||||||
|
#### New `map.getFeaturesAtPixel()` method
|
||||||
|
|
||||||
|
When you want to get all features at a given pixel, use the new `map.getFeaturesAtPixel()` method.
|
||||||
|
|
||||||
|
Before:
|
||||||
|
```js
|
||||||
|
var features = [];
|
||||||
|
map.forEachFeatureAtPixel(pixel, function(feature) {
|
||||||
|
features.push(feature);
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
After:
|
||||||
|
```js
|
||||||
|
var features = map.getFeaturesAtPixel(pixel);
|
||||||
|
```
|
||||||
|
|
||||||
|
#### `ol.Sphere` functions for spherical measures
|
||||||
|
|
||||||
|
The new `ol.Sphere.getArea()` and `ol.Sphere.getLength()` methods can be used to calculate spherical measures on geometries. This is the recommended over using the `geometry.getArea()` or `geometry.getLength()` methods.
|
||||||
|
|
||||||
|
Bad:
|
||||||
|
```js
|
||||||
|
geometry.getArea();
|
||||||
|
```
|
||||||
|
|
||||||
|
Good:
|
||||||
|
```js
|
||||||
|
ol.Sphere.getArea(geometry);
|
||||||
|
```
|
||||||
|
|
||||||
|
#### `ol.interaction.DragAndDrop` can be configured with a vector source
|
||||||
|
|
||||||
|
It is now possible to configure the drag and drop interaction with a vector source:
|
||||||
|
|
||||||
|
```js
|
||||||
|
var dragAndDrop = new ol.interaction.DragAndDrop({source: source});
|
||||||
|
```
|
||||||
|
|
||||||
|
Any dropped features will replace all existing features on the source.
|
||||||
|
|
||||||
|
#### `ol.interaction.Modify` can be configured with a vector source
|
||||||
|
|
||||||
|
It is now possible to configure the modify interaction with a vector source (in addition to a feature collection):
|
||||||
|
|
||||||
|
```js
|
||||||
|
var modify = new ol.interaction.Modify({source: source});
|
||||||
|
```
|
||||||
|
|
||||||
|
With this configuration, all features on the source are eligible for modification while the interaction is active.
|
||||||
|
|
||||||
|
#### `ol.interaction.Modify` deletes with `alt` key only
|
||||||
|
|
||||||
|
To delete features with the modify interaction, press the `alt` key while clicking on an existing vertex. If you want to configure the modify interaction with a different delete condition, use the `deleteCondition` option. For example, to allow deletion on a single click with no modifier keys, configure the interaction like this:
|
||||||
|
```js
|
||||||
|
var interaction = new ol.interaction.Modify({
|
||||||
|
source: source,
|
||||||
|
deleteCondition: function(event) {
|
||||||
|
return ol.events.condition.noModifierKeys(event) && ol.events.condition.singleClick(event);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
The motivation for this change is to make the modify, draw, and snap interactions all work well together. Previously, the use of these interactions with the default configuration would make it so you couldn't reliably add new vertices (click with no modifier) and delete existing vertices (click with no modifier).
|
||||||
|
|
||||||
|
#### `ol.source.VectorTile` no longer requires a `tileGrid` option
|
||||||
|
|
||||||
|
By default, the `ol.source.VectorTile` constructor creates an XYZ tile grid (in Web Mercator) for 512 pixel tiles and assumes a max zoom level of 22. If you were creating a vector tile source with an explicit `tileGrid` option, you can now remove this.
|
||||||
|
|
||||||
|
Before:
|
||||||
|
```js
|
||||||
|
var source = new ol.source.VectorTile({
|
||||||
|
tileGrid: ol.tilegrid.createXYZ({tileSize: 512, maxZoom: 22}),
|
||||||
|
url: url
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
After:
|
||||||
|
```js
|
||||||
|
var source = new ol.source.VectorTile({
|
||||||
|
url: url
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
If you need to change the max zoom level, you can pass the source a `maxZoom` option. If you need to change the tile size, you can pass the source a `tileSize` option. If you need a completely custom tile grid, you can still pass the source a `tileGrid` option.
|
||||||
|
|
||||||
|
#### `ol.source.VectorTile` no longer has a `tilePixelRatio` option
|
||||||
|
|
||||||
|
The `tilePixelRatio` option was only used for tiles in projections with `tile-pixels` as units. For tiles read with `ol.format.MVT` and the default tile loader, or tiles with the default pixel size of 4096 pixels, no changes are necessary. For the very rare cases that do not fall under these categories, a custom `tileLoadFunction` now needs to be configured on the `ol.source.VectorTile`. In addition to calling `tile.setFeatures()` and `tile.setProjection()`, it also needs to contain code like the following:
|
||||||
|
```js
|
||||||
|
var extent = tile.getFormat() instanceof ol.format.MVT ?
|
||||||
|
tile.getLastExtent() :
|
||||||
|
[0, 0, tilePixelRatio * tileSize, tilePixelRatio * tileSize];
|
||||||
|
tile.setExtent(extent);
|
||||||
|
```
|
||||||
|
|
||||||
|
#### `ol.animate` now takes the shortest arc for rotation animation
|
||||||
|
|
||||||
|
Usually rotation animations should animate along the shortest arc. There are rare occasions where a spinning animation effect is desired. So if you previously had something like
|
||||||
|
```js
|
||||||
|
map.getView().animate({
|
||||||
|
rotation: 2 * Math.PI,
|
||||||
|
duration: 2000
|
||||||
|
});
|
||||||
|
```
|
||||||
|
we recommend to split the animation into two parts and use different easing functions. The code below results in the same effect as the snippet above did with previous versions:
|
||||||
|
```js
|
||||||
|
map.getView().animate({
|
||||||
|
rotation: Math.PI,
|
||||||
|
easing: ol.easing.easeIn
|
||||||
|
}, {
|
||||||
|
rotation: 2 * Math.PI,
|
||||||
|
easing: ol.easing.easeOut
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
## Full List of Changes
|
||||||
|
|
||||||
|
* [#7117](https://github.com/openlayers/openlayers/pull/7117) - Sensible default tilegrid for vector tiles ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#7116](https://github.com/openlayers/openlayers/pull/7116) - fix(package): update rollup to version 0.47.2 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#7111](https://github.com/openlayers/openlayers/pull/7111) - Remove broken wrapX handling from ol.Graticule ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#7107](https://github.com/openlayers/openlayers/pull/7107) - Update rollup to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#7106](https://github.com/openlayers/openlayers/pull/7106) - Update proj4 to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#7105](https://github.com/openlayers/openlayers/pull/7105) - Functions for spherical calculations ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#7104](https://github.com/openlayers/openlayers/pull/7104) - Update sinon to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#6807](https://github.com/openlayers/openlayers/pull/6807) - Initialize hasZ in the constructor of GML3 ([@Jenselme](https://github.com/Jenselme))
|
||||||
|
* [#7102](https://github.com/openlayers/openlayers/pull/7102) - Allow drag and drop interaction to be configured with a source ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#6825](https://github.com/openlayers/openlayers/pull/6825) - Read/write Tessellate tag in KML format ([@oterral](https://github.com/oterral))
|
||||||
|
* [#7098](https://github.com/openlayers/openlayers/pull/7098) - Use fractional coordinates for CSS positioning ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#7064](https://github.com/openlayers/openlayers/pull/7064) - Do not use Array.prototype.forEach when dealing with potentially large arrays ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#7093](https://github.com/openlayers/openlayers/pull/7093) - Allow modify interaction to be configured with a source ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#7096](https://github.com/openlayers/openlayers/pull/7096) - Add new Map#getFeaturesAtPixel method ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#7094](https://github.com/openlayers/openlayers/pull/7094) - Add missing zIndex options ([@icholy](https://github.com/icholy))
|
||||||
|
* [#7087](https://github.com/openlayers/openlayers/pull/7087) - Fix scale line for EPSG:4326 maps ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#7088](https://github.com/openlayers/openlayers/pull/7088) - Update sinon to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#7085](https://github.com/openlayers/openlayers/pull/7085) - Update eslint to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#7084](https://github.com/openlayers/openlayers/pull/7084) - Fix a typo in the street-labels example ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#7082](https://github.com/openlayers/openlayers/pull/7082) - Update eslint to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#7079](https://github.com/openlayers/openlayers/pull/7079) - Optimize custom renderer code, examples and API ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#7080](https://github.com/openlayers/openlayers/pull/7080) - Update jsdoc to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#7078](https://github.com/openlayers/openlayers/pull/7078) - Fix return type annotation of ol.layer.VectorTile.getSource ([@geosense](https://github.com/geosense))
|
||||||
|
* [#7073](https://github.com/openlayers/openlayers/pull/7073) - Make ol.layer.Group change handling consistent ([@gberaudo](https://github.com/gberaudo))
|
||||||
|
* [#7075](https://github.com/openlayers/openlayers/pull/7075) - Update sinon to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#7072](https://github.com/openlayers/openlayers/pull/7072) - Improve API docs for ol.VectorTile ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#7070](https://github.com/openlayers/openlayers/pull/7070) - Get tilePixelRatio from MVT tiles ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#7069](https://github.com/openlayers/openlayers/pull/7069) - Update mocha to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#7068](https://github.com/openlayers/openlayers/pull/7068) - Update fs-extra to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#7066](https://github.com/openlayers/openlayers/pull/7066) - Fix ol.interaction.Extent event type and documentation ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#7032](https://github.com/openlayers/openlayers/pull/7032) - Fix KML Export Icon Anchor ([@raiyni](https://github.com/raiyni))
|
||||||
|
* [#7065](https://github.com/openlayers/openlayers/pull/7065) - Only use API functions in example ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#7022](https://github.com/openlayers/openlayers/pull/7022) - Allow styles to configure a custom renderer ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#7061](https://github.com/openlayers/openlayers/pull/7061) - Update docs and issue and pull request instructions ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#7059](https://github.com/openlayers/openlayers/pull/7059) - Allow to configure Extent interaction with an extent ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#7060](https://github.com/openlayers/openlayers/pull/7060) - Removing invalid urn ([@wnordmann](https://github.com/wnordmann))
|
||||||
|
* [#7051](https://github.com/openlayers/openlayers/pull/7051) - Changing the EPSG3857.PROJECTION array assignment and adding urn:ogc:… ([@wnordmann](https://github.com/wnordmann))
|
||||||
|
* [#7045](https://github.com/openlayers/openlayers/pull/7045) - Respect pixelRatio when scaling images ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#7023](https://github.com/openlayers/openlayers/pull/7023) - Update tile size and resolutions of vector tile examples ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#7005](https://github.com/openlayers/openlayers/pull/7005) - Add spatial reference inside geometry in EsriFormat ([@Sol1du2](https://github.com/Sol1du2))
|
||||||
|
* [#7034](https://github.com/openlayers/openlayers/pull/7034) - Move non-build dependencies to devDependencies ([@probins](https://github.com/probins))
|
||||||
|
* [#7050](https://github.com/openlayers/openlayers/pull/7050) - Update sinon to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#6976](https://github.com/openlayers/openlayers/pull/6976) - Example - Earthquake Clusters - Change evt.type of interaction ([@ehanoj](https://github.com/ehanoj))
|
||||||
|
* [#7048](https://github.com/openlayers/openlayers/pull/7048) - Update sinon to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#7041](https://github.com/openlayers/openlayers/pull/7041) - Update eslint to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#7042](https://github.com/openlayers/openlayers/pull/7042) - Line dash offset ([@gkresic](https://github.com/gkresic))
|
||||||
|
* [#6980](https://github.com/openlayers/openlayers/pull/6980) - Added tileClass to TileWMS ([@ZachTRice](https://github.com/ZachTRice))
|
||||||
|
* [#7028](https://github.com/openlayers/openlayers/pull/7028) - Fix Graticule use of incorrect min/maxLon values ([@greggian](https://github.com/greggian))
|
||||||
|
* [#7021](https://github.com/openlayers/openlayers/pull/7021) - Update fs-extra to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#7018](https://github.com/openlayers/openlayers/pull/7018) - Update jsdoc to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#7015](https://github.com/openlayers/openlayers/pull/7015) - Update sinon to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#7014](https://github.com/openlayers/openlayers/pull/7014) - Update jsdoc to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#7013](https://github.com/openlayers/openlayers/pull/7013) - Remove ol.sphere.WGS84 and ol.sphere.NORMAL ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#6981](https://github.com/openlayers/openlayers/pull/6981) - Render transparent vector layers to an intermediate canvas ([@gberaudo](https://github.com/gberaudo))
|
||||||
|
* [#6899](https://github.com/openlayers/openlayers/pull/6899) - Use number literal for sphere radius ([@probins](https://github.com/probins))
|
||||||
|
* [#7011](https://github.com/openlayers/openlayers/pull/7011) - Update jsdoc to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#7008](https://github.com/openlayers/openlayers/pull/7008) - Update sinon to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#7007](https://github.com/openlayers/openlayers/pull/7007) - fix(package): update rollup to version 0.45.0 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#6996](https://github.com/openlayers/openlayers/pull/6996) - 6987: Memory leak with WMS time source with reprojection ([@ch08532](https://github.com/ch08532))
|
||||||
|
* [#7003](https://github.com/openlayers/openlayers/pull/7003) - Update jsdoc to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#7004](https://github.com/openlayers/openlayers/pull/7004) - Use https for bing and stamen attributions ([@fredj](https://github.com/fredj))
|
||||||
|
* [#6998](https://github.com/openlayers/openlayers/pull/6998) - Update eslint to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#6999](https://github.com/openlayers/openlayers/pull/6999) - Make VectorTile source work with multiple layers ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#6988](https://github.com/openlayers/openlayers/pull/6988) - Add missing type annotations ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#6984](https://github.com/openlayers/openlayers/pull/6984) - Update closure-util to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#6970](https://github.com/openlayers/openlayers/pull/6970) - Fix Bug when adding/removing layer with no cache ([@cmortazavi](https://github.com/cmortazavi))
|
||||||
|
* [#6972](https://github.com/openlayers/openlayers/pull/6972) - Handle error tiles properly ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#6973](https://github.com/openlayers/openlayers/pull/6973) - Update clean-css-cli to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#6971](https://github.com/openlayers/openlayers/pull/6971) - Update sinon to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#6968](https://github.com/openlayers/openlayers/pull/6968) - Shortest arc rotation animation improvements and upgrade notes ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#6966](https://github.com/openlayers/openlayers/pull/6966) - Add getResolutionForZoom method for ol.View ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#6965](https://github.com/openlayers/openlayers/pull/6965) - Use shortest rotation delta for animation ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#6967](https://github.com/openlayers/openlayers/pull/6967) - Add RoadOnDemand imagery set to Bing example ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#6964](https://github.com/openlayers/openlayers/pull/6964) - Fix KML ExtendedData reading ([@fredj](https://github.com/fredj))
|
||||||
|
* [#6958](https://github.com/openlayers/openlayers/pull/6958) - Remove error tiles after loading is finished ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#6793](https://github.com/openlayers/openlayers/pull/6793) - Webgl text ([@GaborFarkas](https://github.com/GaborFarkas))
|
||||||
|
* [#6960](https://github.com/openlayers/openlayers/pull/6960) - Queue tiles before loading ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#6957](https://github.com/openlayers/openlayers/pull/6957) - Greenkeeper/eslint 4.1.1 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#6955](https://github.com/openlayers/openlayers/pull/6955) - Update async to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#6916](https://github.com/openlayers/openlayers/pull/6916) - Upgrade eslint to v4.0.0 ([@marcjansen](https://github.com/marcjansen))
|
||||||
|
* [#6943](https://github.com/openlayers/openlayers/pull/6943) - Update sinon to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#6939](https://github.com/openlayers/openlayers/pull/6939) - Abort loading when tile is disposed ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#6930](https://github.com/openlayers/openlayers/pull/6930) - Handle setActive(false) on an interaction without map ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#6936](https://github.com/openlayers/openlayers/pull/6936) - Do not stop the render loop when all wanted tiles are aborted ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#6920](https://github.com/openlayers/openlayers/pull/6920) - Fix minor type strength inconsistency ([@klokantech](https://github.com/klokantech))
|
||||||
|
* [#6935](https://github.com/openlayers/openlayers/pull/6935) - Use transparent image from canvas context ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#6933](https://github.com/openlayers/openlayers/pull/6933) - Improve proj.get() logic ([@probins](https://github.com/probins))
|
||||||
|
* [#6931](https://github.com/openlayers/openlayers/pull/6931) - Make sure we use the default featurePrefix ([@bartvde](https://github.com/bartvde))
|
||||||
|
* [#6928](https://github.com/openlayers/openlayers/pull/6928) - Only adjust resolution when center within projection extent ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#6923](https://github.com/openlayers/openlayers/pull/6923) - Load tasks/build-ext.js in strict mode ([@fredj](https://github.com/fredj))
|
||||||
|
* [#6918](https://github.com/openlayers/openlayers/pull/6918) - Remove unnecessary pixelRatio check ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#6917](https://github.com/openlayers/openlayers/pull/6917) - Correct typo in graticule docs ([@probins](https://github.com/probins))
|
||||||
9
changelog/v4.3.1.md
Normal file
9
changelog/v4.3.1.md
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
# 4.3.1
|
||||||
|
|
||||||
|
The v4.3.1 release includes a few fixes that didn't make it into v4.3.0. No special upgrade considerations.
|
||||||
|
|
||||||
|
## Fixes
|
||||||
|
|
||||||
|
* [#7122](https://github.com/openlayers/openlayers/pull/7122) - Immediately complete no-op animations ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#7120](https://github.com/openlayers/openlayers/pull/7120) - Fix hit detection for overzoomed vector tiles ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#7114](https://github.com/openlayers/openlayers/pull/7114) - Immediate WebGL text renderer and other improvements ([@GaborFarkas](https://github.com/GaborFarkas))
|
||||||
7
changelog/v4.3.2.md
Normal file
7
changelog/v4.3.2.md
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
# 4.3.2
|
||||||
|
|
||||||
|
The v4.3.2 release includes a single fix.
|
||||||
|
|
||||||
|
## Fixes
|
||||||
|
|
||||||
|
* [#7140](https://github.com/openlayers/openlayers/pull/7140) - Export ol.Sphere.getLength and ol.Sphere.getArea ([@fredj](https://github.com/fredj))
|
||||||
7
changelog/v4.3.3.md
Normal file
7
changelog/v4.3.3.md
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
# 4.3.3
|
||||||
|
|
||||||
|
The v4.3.3 release reverts the fractional pixel positioning of overlays.
|
||||||
|
|
||||||
|
## Fixes
|
||||||
|
|
||||||
|
* [#7258](https://github.com/openlayers/openlayers/pull/7258) - Revert changes made in #7098 ([@ahocevar](https://github.com/ahocevar))
|
||||||
7
changelog/v4.3.4.md
Normal file
7
changelog/v4.3.4.md
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
# 4.3.4
|
||||||
|
|
||||||
|
The v4.3.4 release includes a fix for Safari on iOS 11.
|
||||||
|
|
||||||
|
## Fixes
|
||||||
|
|
||||||
|
* [#7285](https://github.com/openlayers/openlayers/pull/7285) - Convert pointerId to string for object lookups ([@tschaub](https://github.com/tschaub))
|
||||||
161
changelog/v4.4.0.md
Normal file
161
changelog/v4.4.0.md
Normal file
@@ -0,0 +1,161 @@
|
|||||||
|
# 4.4.0
|
||||||
|
|
||||||
|
## Summary
|
||||||
|
|
||||||
|
The 4.4.0 release includes features and fixes from 80 pull requests, including first time contributions from @EduardoNogueira, @ath0mas, @f7o, @trevorblades, @viethang, and @wb14123. There are some really nice rendering enhancements included in this release. It is now possible to render labels along lines (see [#7239](https://github.com/openlayers/openlayers/pull/7239) for more detail) and polygon labels are only rendered if they fit within the polygon ([#7292](https://github.com/openlayers/openlayers/pull/7292)). In addition, we now render tiles with an opacity transition, so tiled layers more gracefully fade in ([#7267](https://github.com/openlayers/openlayers/pull/7267)).
|
||||||
|
|
||||||
|
### Upgrade notes
|
||||||
|
|
||||||
|
#### Behavior change for polygon labels
|
||||||
|
|
||||||
|
Polygon labels are now only rendered when the label does not exceed the polygon at the label position. To get the old behavior, configure your `ol.style.Text` with `exceedLength: true`.
|
||||||
|
|
||||||
|
#### Minor change for custom `tileLoadFunction` with `ol.source.VectorTile`
|
||||||
|
|
||||||
|
It is no longer necessary to set the projection on the tile. Instead, the `readFeatures` method must be called with the tile's extent as `extent` option and the view's projection as `featureProjection`.
|
||||||
|
|
||||||
|
Before:
|
||||||
|
```js
|
||||||
|
tile.setLoader(function() {
|
||||||
|
var data = // ... fetch data
|
||||||
|
var format = tile.getFormat();
|
||||||
|
tile.setFeatures(format.readFeatures(data));
|
||||||
|
tile.setProjection(format.readProjection(data));
|
||||||
|
// uncomment the line below for ol.format.MVT only
|
||||||
|
//tile.setExtent(format.getLastExtent());
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
After:
|
||||||
|
```js
|
||||||
|
tile.setLoader(function() {
|
||||||
|
var data = // ... fetch data
|
||||||
|
var format = tile.getFormat();
|
||||||
|
tile.setFeatures(format.readFeatures(data, {
|
||||||
|
featureProjection: map.getView().getProjection(),
|
||||||
|
// uncomment the line below for ol.format.MVT only
|
||||||
|
//extent: tile.getExtent()
|
||||||
|
}));
|
||||||
|
);
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Deprecation of `ol.DeviceOrientation`
|
||||||
|
|
||||||
|
`ol.DeviceOrientation` is deprecated and will be removed in the next major version.
|
||||||
|
The device-orientation example has been updated to use the (gyronorm.js)[https://github.com/dorukeker/gyronorm.js] library.
|
||||||
|
|
||||||
|
|
||||||
|
## Detailed changes
|
||||||
|
|
||||||
|
See below for the full list of changes.
|
||||||
|
|
||||||
|
* [#7306](https://github.com/openlayers/openlayers/pull/7306) - Enable mouse wheel in freehand draw mode ([@trevorblades](https://github.com/trevorblades))
|
||||||
|
* [#7297](https://github.com/openlayers/openlayers/pull/7297) - Fix multipoint instruction set ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#7267](https://github.com/openlayers/openlayers/pull/7267) - Render tiles with an opacity transition ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#7292](https://github.com/openlayers/openlayers/pull/7292) - Only render polygon labels when they fit ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#7289](https://github.com/openlayers/openlayers/pull/7289) - Release v4.3.4 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#7287](https://github.com/openlayers/openlayers/pull/7287) - Fix vertical stroke/fill alignment for text along lines ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#7285](https://github.com/openlayers/openlayers/pull/7285) - Convert pointerId to string for object lookups ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#7280](https://github.com/openlayers/openlayers/pull/7280) - Updated docs for deleteCondition ([@EduardoNogueira](https://github.com/EduardoNogueira))
|
||||||
|
* [#7274](https://github.com/openlayers/openlayers/pull/7274) - Add ability to change the loader of a vector source ([@bartvde](https://github.com/bartvde))
|
||||||
|
* [#7259](https://github.com/openlayers/openlayers/pull/7259) - Add missing param doc tag for ol.format.WKT.prototype.writeFeatures ([@fredj](https://github.com/fredj))
|
||||||
|
* [#7260](https://github.com/openlayers/openlayers/pull/7260) - Release v4.3.3 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#7258](https://github.com/openlayers/openlayers/pull/7258) - Revert changes made in #7098. ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#7220](https://github.com/openlayers/openlayers/pull/7220) - Mark ol.format.filter.Spatial as abstract class ([@fredj](https://github.com/fredj))
|
||||||
|
* [#7249](https://github.com/openlayers/openlayers/pull/7249) - Script to rename files so the case matches the module name ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#7252](https://github.com/openlayers/openlayers/pull/7252) - fix osmxml to read ways before the definition of nodes ([@wb14123](https://github.com/wb14123))
|
||||||
|
* [#7253](https://github.com/openlayers/openlayers/pull/7253) - Nicer wording in the issue template ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#7236](https://github.com/openlayers/openlayers/pull/7236) - reusing images in ol.style.Icon#clone ([@KlausBenndorf](https://github.com/KlausBenndorf))
|
||||||
|
* [#7246](https://github.com/openlayers/openlayers/pull/7246) - Compare measured lengths with a tolerance ([@marcjansen](https://github.com/marcjansen))
|
||||||
|
* [#7247](https://github.com/openlayers/openlayers/pull/7247) - Raise tolerance of rendering tests to pass on Firefox 55 (GNU/Linux) ([@marcjansen](https://github.com/marcjansen))
|
||||||
|
* [#7239](https://github.com/openlayers/openlayers/pull/7239) - Render text along lines ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#7242](https://github.com/openlayers/openlayers/pull/7242) - Use EMPTY and LOADED state properly on ol.VectorImageTile ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#7234](https://github.com/openlayers/openlayers/pull/7234) - Fix abort handling of tileload events ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#7221](https://github.com/openlayers/openlayers/pull/7221) - update zoomify source to accept tileIndex placeholders and handle iip… ([@thhomas](https://github.com/thhomas))
|
||||||
|
* [#6871](https://github.com/openlayers/openlayers/pull/6871) - Correct controls position in Center example ([@ath0mas](https://github.com/ath0mas))
|
||||||
|
* [#7229](https://github.com/openlayers/openlayers/pull/7229) - Fix JSDoc paths for custom builds ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#7230](https://github.com/openlayers/openlayers/pull/7230) - Remove unused context handling for ol.Image ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#7225](https://github.com/openlayers/openlayers/pull/7225) - Fix hit detection for image layers ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#7223](https://github.com/openlayers/openlayers/pull/7223) - Transform updates ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#7219](https://github.com/openlayers/openlayers/pull/7219) - Change cartodb domain from cartodb.com to carto.com ([@fredj](https://github.com/fredj))
|
||||||
|
* [#7210](https://github.com/openlayers/openlayers/pull/7210) - Avoid unnecessary calculations for a zoom factor of 2 ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#7209](https://github.com/openlayers/openlayers/pull/7209) - Remove grid.getTileRangeForExtentAndResolution() ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#7201](https://github.com/openlayers/openlayers/pull/7201) - Prerender text to images ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#7208](https://github.com/openlayers/openlayers/pull/7208) - Do not calculate coverage when running tests locally ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#7206](https://github.com/openlayers/openlayers/pull/7206) - Only load source tiles that intersect the source tile grid's extent ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#7203](https://github.com/openlayers/openlayers/pull/7203) - Enable Edge tests on SauceLabs ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#7194](https://github.com/openlayers/openlayers/pull/7194) - Deprecate ol.DeviceOrientation ([@fredj](https://github.com/fredj))
|
||||||
|
* [#7198](https://github.com/openlayers/openlayers/pull/7198) - Use geometry name in WFS updates ([@bartvde](https://github.com/bartvde))
|
||||||
|
* [#7205](https://github.com/openlayers/openlayers/pull/7205) - Release v4.3.2 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#7172](https://github.com/openlayers/openlayers/pull/7172) - added clear method to vectortile source ([@f7o](https://github.com/f7o))
|
||||||
|
* [#7196](https://github.com/openlayers/openlayers/pull/7196) - renderSync() to make sure overlay is initially visible ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#7193](https://github.com/openlayers/openlayers/pull/7193) - Fix KML links for documents created locally in Safari ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#6977](https://github.com/openlayers/openlayers/pull/6977) - Fixed modify feature test ([@KlausBenndorf](https://github.com/KlausBenndorf))
|
||||||
|
* [#7190](https://github.com/openlayers/openlayers/pull/7190) - Use jsts version 1.4.0 in example ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#7191](https://github.com/openlayers/openlayers/pull/7191) - Fix provide/require for autogenerated shader files ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#7192](https://github.com/openlayers/openlayers/pull/7192) - Fix typo ([@viethang](https://github.com/viethang))
|
||||||
|
* [#7133](https://github.com/openlayers/openlayers/pull/7133) - Issue/6991/WFS Write Dimension ([@Sol1du2](https://github.com/Sol1du2))
|
||||||
|
* [#7141](https://github.com/openlayers/openlayers/pull/7141) - Issue/6990/Wfs Read srsDimension ([@Sol1du2](https://github.com/Sol1du2))
|
||||||
|
* [#7187](https://github.com/openlayers/openlayers/pull/7187) - Simpler tile pixel handling and faster parsing for ol.format.MVT vector tiles ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#7182](https://github.com/openlayers/openlayers/pull/7182) - Avoid instanceof checks in global test extensions ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#7168](https://github.com/openlayers/openlayers/pull/7168) - Exclude greenkeeper merges from changelog ([@gberaudo](https://github.com/gberaudo))
|
||||||
|
* [#7162](https://github.com/openlayers/openlayers/pull/7162) - Bring back coverage ([@marcjansen](https://github.com/marcjansen))
|
||||||
|
* [#7165](https://github.com/openlayers/openlayers/pull/7165) - More assorted test fixes ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#7142](https://github.com/openlayers/openlayers/pull/7142) - Adds unit test to test the projection inside the geometry of esriJson ([@Sol1du2](https://github.com/Sol1du2))
|
||||||
|
* [#7163](https://github.com/openlayers/openlayers/pull/7163) - Remove bundling magic for Mapbox styles script ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#7160](https://github.com/openlayers/openlayers/pull/7160) - Assorted test updates ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#7158](https://github.com/openlayers/openlayers/pull/7158) - Retain comments when replacing nodes ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#7153](https://github.com/openlayers/openlayers/pull/7153) - Scripts for in-place transforms ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#7154](https://github.com/openlayers/openlayers/pull/7154) - Unused require in examples/d3.js ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#7151](https://github.com/openlayers/openlayers/pull/7151) - Get rid of useless test exports ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#7152](https://github.com/openlayers/openlayers/pull/7152) - Adjust the pull request template (tests, CLA, wording) ([@marcjansen](https://github.com/marcjansen))
|
||||||
|
* [#7150](https://github.com/openlayers/openlayers/pull/7150) - Remove problematic spies from scaleline tests ([@marcjansen](https://github.com/marcjansen))
|
||||||
|
* [#7149](https://github.com/openlayers/openlayers/pull/7149) - Remove unused requires ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#7148](https://github.com/openlayers/openlayers/pull/7148) - Remove ol.ENABLE_WEBGL wrap from WebGL files ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#7147](https://github.com/openlayers/openlayers/pull/7147) - Remove unnecessary import in events.test.js ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#7146](https://github.com/openlayers/openlayers/pull/7146) - Avoid modifying imports ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#7145](https://github.com/openlayers/openlayers/pull/7145) - Spaceless provides ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#7136](https://github.com/openlayers/openlayers/pull/7136) - Use data URI instead of whole empty image ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#7137](https://github.com/openlayers/openlayers/pull/7137) - Developer documentation updates ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#7138](https://github.com/openlayers/openlayers/pull/7138) - Improvements to the new test setup ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#7140](https://github.com/openlayers/openlayers/pull/7140) - Export ol.Sphere.getLength and ol.Sphere.getArea ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#7131](https://github.com/openlayers/openlayers/pull/7131) - Print ES6 import hint on each doc page ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#6953](https://github.com/openlayers/openlayers/pull/6953) - Run tests in real browsers with Karma ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#7127](https://github.com/openlayers/openlayers/pull/7127) - Use static GeoJSON instead of Overpass query for faster loading ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#7125](https://github.com/openlayers/openlayers/pull/7125) - Do not try to render error tiles from VectorTile source ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#6855](https://github.com/openlayers/openlayers/pull/6855) - Pluggable renderers ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#7128](https://github.com/openlayers/openlayers/pull/7128) - Make view.animate() tolerate undefined views ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#7124](https://github.com/openlayers/openlayers/pull/7124) - Release v4.3.1 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#7122](https://github.com/openlayers/openlayers/pull/7122) - Immediately complete no-op animations ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#7120](https://github.com/openlayers/openlayers/pull/7120) - Fix hit detection for overzoomed vector tiles ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#7114](https://github.com/openlayers/openlayers/pull/7114) - Immediate WebGL text renderer and other improvements ([@GaborFarkas](https://github.com/GaborFarkas))
|
||||||
|
|
||||||
|
|
||||||
|
Additionally a number of updates where made to our dependencies:
|
||||||
|
* [#7307](https://github.com/openlayers/openlayers/pull/7307) - Update sinon to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#7302](https://github.com/openlayers/openlayers/pull/7302) - Update mocha to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#7298](https://github.com/openlayers/openlayers/pull/7298) - Update eslint to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#7295](https://github.com/openlayers/openlayers/pull/7295) - chore(package): update coveralls to version 3.0.0 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#7291](https://github.com/openlayers/openlayers/pull/7291) - Update pbf to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#7290](https://github.com/openlayers/openlayers/pull/7290) - Update sinon to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#7281](https://github.com/openlayers/openlayers/pull/7281) - Update eslint to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#7273](https://github.com/openlayers/openlayers/pull/7273) - Update clean-css-cli to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#7272](https://github.com/openlayers/openlayers/pull/7272) - Update eslint to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#7269](https://github.com/openlayers/openlayers/pull/7269) - Update sinon to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#7265](https://github.com/openlayers/openlayers/pull/7265) - Update rollup to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#7263](https://github.com/openlayers/openlayers/pull/7263) - Update eslint to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#7254](https://github.com/openlayers/openlayers/pull/7254) - Update closure-util to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#7257](https://github.com/openlayers/openlayers/pull/7257) - Update jsdoc to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#7251](https://github.com/openlayers/openlayers/pull/7251) - Update fs-extra to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#7243](https://github.com/openlayers/openlayers/pull/7243) - Update mocha to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#7240](https://github.com/openlayers/openlayers/pull/7240) - Update mocha to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#7238](https://github.com/openlayers/openlayers/pull/7238) - Update mocha to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#7212](https://github.com/openlayers/openlayers/pull/7212) - chore(package): update clean-css-cli to version 4.1.9 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#7213](https://github.com/openlayers/openlayers/pull/7213) - Update eslint to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#7207](https://github.com/openlayers/openlayers/pull/7207) - Update eslint to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#7188](https://github.com/openlayers/openlayers/pull/7188) - fix(package): update rollup to version 0.49.1 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#7166](https://github.com/openlayers/openlayers/pull/7166) - fix(package): update rollup to version 0.48.1 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#7161](https://github.com/openlayers/openlayers/pull/7161) - Update eslint to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#7144](https://github.com/openlayers/openlayers/pull/7144) - Update sinon to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#7135](https://github.com/openlayers/openlayers/pull/7135) - Update closure-util to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#7126](https://github.com/openlayers/openlayers/pull/7126) - Update phantomjs-prebuilt to the latest version 🚀 ([@openlayers](https://github.com/openlayers))
|
||||||
8
changelog/v4.4.1.md
Normal file
8
changelog/v4.4.1.md
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
# 4.4.1
|
||||||
|
|
||||||
|
The v4.4.1 release includes a fix for the [`ol` package](https://www.npmjs.com/package/ol) and a fix for a tile rendering regression.
|
||||||
|
|
||||||
|
## Fixes
|
||||||
|
|
||||||
|
* [#7323](https://github.com/openlayers/openlayers/pull/7323) - Only clear the canvas when needed ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#7313](https://github.com/openlayers/openlayers/pull/7313) - Use lowercase module identifiers until ol@5 ([@tschaub](https://github.com/tschaub))
|
||||||
12
changelog/v4.4.2.md
Normal file
12
changelog/v4.4.2.md
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
# 4.4.2
|
||||||
|
|
||||||
|
The v4.4.2 release fixes a number of rendering issues in the 4.4 releases.
|
||||||
|
|
||||||
|
## Fixes
|
||||||
|
|
||||||
|
* [#7327](https://github.com/openlayers/openlayers/pull/7327) - Prune the tile cache after updating a source's URL ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#7341](https://github.com/openlayers/openlayers/pull/7341) - Proper rendering of raster sources when there is a tile transition ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#7339](https://github.com/openlayers/openlayers/pull/7339) - Use correct text stroke on HiDPI devices ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#7345](https://github.com/openlayers/openlayers/pull/7345) - Handle different lineWidth scaling in Safari ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#7346](https://github.com/openlayers/openlayers/pull/7346) - Pre-render text images for configured scale ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#7350](https://github.com/openlayers/openlayers/pull/7350) - Calculate correct text box size ([@ahocevar](https://github.com/ahocevar))
|
||||||
127
changelog/v4.5.0.md
Normal file
127
changelog/v4.5.0.md
Normal file
@@ -0,0 +1,127 @@
|
|||||||
|
# 4.5.0
|
||||||
|
|
||||||
|
### Summary
|
||||||
|
|
||||||
|
The 4.5 release includes enhancements and fixes from 50 or so pull requests. Headlining this release, vector layers got a new `declutter` option that can be used to avoid overlapping labels. See the [street labels example](http://openlayers.org/en/latest/examples/street-labels.html) for a demonstration of this feature.
|
||||||
|
|
||||||
|
Please note that if you are using `closure-util` to build your OpenLayers based application, it is time to migrate to using the [`ol` package](https://www.npmjs.com/package/ol) and a module bundler like webpack. OpenLayers has not had a dependency on the Closure Library since the [3.19 release](https://github.com/openlayers/openlayers/releases/tag/v3.19.0); and with the 5.0 release we will be moving completely away from `goog.require` and `goog.provide`, dropping support for `closure-util`, and going with ES modules for our sources.
|
||||||
|
|
||||||
|
We will be adding details to the wiki about upcoming changes in 5.0 and tips on how to upgrade. We'll likely have a few more 4.x releases before the 5.0 release. But if you're interested in continuing to get feature enhancements in future releases, migrating to the `ol` package now will make the transition easier.
|
||||||
|
|
||||||
|
### Upgrade notes
|
||||||
|
|
||||||
|
#### Removed GeoJSON crs workaround for GeoServer
|
||||||
|
|
||||||
|
Previous version of GeoServer returned invalid crs in GeoJSON output. The workaround in `ol.format.GeoJSON` used to read this crs code is now removed.
|
||||||
|
|
||||||
|
#### Deprecation of `ol.Attribution`
|
||||||
|
|
||||||
|
`ol.Attribution` is deprecated and will be removed in the next major version. Instead, you can construct a source with a string attribution or an array of strings. For dynamic attributions, you can provide a function that gets called with the current frame state.
|
||||||
|
|
||||||
|
Before:
|
||||||
|
```js
|
||||||
|
var source = new ol.source.XYZ({
|
||||||
|
attributions: [
|
||||||
|
new ol.Attribution({html: 'some attribution'})
|
||||||
|
]
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
After:
|
||||||
|
```js
|
||||||
|
var source = new ol.source.XYZ({
|
||||||
|
attributions: 'some attribution'
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
In addition to passing a string or an array of strings for the `attributions` option, you can also pass a function that will get called with the current frame state.
|
||||||
|
```js
|
||||||
|
var source = new ol.source.XYZ({
|
||||||
|
attributions: function(frameState) {
|
||||||
|
// inspect the frame state and return attributions
|
||||||
|
return 'some attribution'; // or ['multiple', 'attributions'] or null
|
||||||
|
}
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
## Detailed changes
|
||||||
|
|
||||||
|
See below for the full list of changes.
|
||||||
|
|
||||||
|
* [#7456](https://github.com/openlayers/openlayers/pull/7456) - Retry if sauce connect fails ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#7440](https://github.com/openlayers/openlayers/pull/7440) - Attempt to make font loading tests more stable ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#7444](https://github.com/openlayers/openlayers/pull/7444) - Simpler style management ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#7438](https://github.com/openlayers/openlayers/pull/7438) - Call getProjection() only once ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#7430](https://github.com/openlayers/openlayers/pull/7430) - Add support for hex colors with alpha ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#7431](https://github.com/openlayers/openlayers/pull/7431) - Avoid returning undefined zoom ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#7436](https://github.com/openlayers/openlayers/pull/7436) - Always use source projection loading image tiles ([@pjeweb](https://github.com/pjeweb))
|
||||||
|
* [#7433](https://github.com/openlayers/openlayers/pull/7433) - Don't use getHints if it's not needed ([@fredj](https://github.com/fredj))
|
||||||
|
* [#7362](https://github.com/openlayers/openlayers/pull/7362) - Added option to the ol.format.GeoJSON to allow the reading of the geometry_name from the geojson ([@Alexandre27](https://github.com/Alexandre27))
|
||||||
|
* [#7426](https://github.com/openlayers/openlayers/pull/7426) - Update InteractionOptions.prototype.handleEvent docs ([@glen-nu](https://github.com/glen-nu))
|
||||||
|
* [#7423](https://github.com/openlayers/openlayers/pull/7423) - Get rendered features by coordinate when wrapping ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#7421](https://github.com/openlayers/openlayers/pull/7421) - Keep longitude between -180 and 180 ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#7420](https://github.com/openlayers/openlayers/pull/7420) - Fix MapGuide example resolves #7325 ([@TDesjardins](https://github.com/TDesjardins))
|
||||||
|
* [#7340](https://github.com/openlayers/openlayers/pull/7340) - Clear label cache when fonts become available ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#7414](https://github.com/openlayers/openlayers/pull/7414) - Only split text at line angle changes ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#7411](https://github.com/openlayers/openlayers/pull/7411) - Add getLayers and setLayers functions to ol.format.WMSGetFeatureInfo ([@fredj](https://github.com/fredj))
|
||||||
|
* [#7328](https://github.com/openlayers/openlayers/pull/7328) - Declutter text and images ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#7406](https://github.com/openlayers/openlayers/pull/7406) - Add option to Zoomify source for setting custom extent ([@lasselaakkonen](https://github.com/lasselaakkonen))
|
||||||
|
* [#7410](https://github.com/openlayers/openlayers/pull/7410) - Add getFeatureType and setFeatureType functions to ol.format.WFS ([@fredj](https://github.com/fredj))
|
||||||
|
* [#7379](https://github.com/openlayers/openlayers/pull/7379) - Add support for custom tile size to Zoomify source ([@lasselaakkonen](https://github.com/lasselaakkonen))
|
||||||
|
* [#7376](https://github.com/openlayers/openlayers/pull/7376) - changed visibility of overlay properties to protected ([@virtualcitySYSTEMS](https://github.com/virtualcitySYSTEMS))
|
||||||
|
* [#7377](https://github.com/openlayers/openlayers/pull/7377) - Add support to specify CSS class name when creating ol.Overlay ([@notnotse](https://github.com/notnotse))
|
||||||
|
* [#7383](https://github.com/openlayers/openlayers/pull/7383) - Handle null tile coordinates correctly ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#7375](https://github.com/openlayers/openlayers/pull/7375) - Read 'Abstract', 'AccessConstraints' and 'Fees' in ol.format.OWS ([@fredj](https://github.com/fredj))
|
||||||
|
* [#7378](https://github.com/openlayers/openlayers/pull/7378) - Fix incorrect docs about ol.source.Raster ([@notnotse](https://github.com/notnotse))
|
||||||
|
* [#7371](https://github.com/openlayers/openlayers/pull/7371) - Add @api annotation to ol.VectorTile.getExtent ([@notnotse](https://github.com/notnotse))
|
||||||
|
* [#7369](https://github.com/openlayers/openlayers/pull/7369) - Always request the Bing API with the 'culture' value ([@fredj](https://github.com/fredj))
|
||||||
|
* [#7364](https://github.com/openlayers/openlayers/pull/7364) - Remove GeoJSON workaround for GeoServer ([@fredj](https://github.com/fredj))
|
||||||
|
* [#7355](https://github.com/openlayers/openlayers/pull/7355) - Pass pixel tolerance as a parameter to constructor of ol.interaction.Extent ([@marcosox](https://github.com/marcosox))
|
||||||
|
* [#7356](https://github.com/openlayers/openlayers/pull/7356) - Fix documentation for target option in the controls ([@EduardoNogueira](https://github.com/EduardoNogueira))
|
||||||
|
* [#7359](https://github.com/openlayers/openlayers/pull/7359) - Rename entry to input - regarding options to rollup lib - Issue #7358 ([@akkumar](https://github.com/akkumar))
|
||||||
|
* [#7357](https://github.com/openlayers/openlayers/pull/7357) - Release v4.4.2 ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#7350](https://github.com/openlayers/openlayers/pull/7350) - Calculate correct text box size ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#7349](https://github.com/openlayers/openlayers/pull/7349) - Do not use tileUrlFunction for renderer tile coordinates ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#7305](https://github.com/openlayers/openlayers/pull/7305) - Fix #7304: Re-calculate the resolution when the WMS source is reprojected ([@oterral](https://github.com/oterral))
|
||||||
|
* [#7346](https://github.com/openlayers/openlayers/pull/7346) - Pre-render text images for configured scale ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#7345](https://github.com/openlayers/openlayers/pull/7345) - Handle different lineWidth scaling in Safari ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#7344](https://github.com/openlayers/openlayers/pull/7344) - Make text height detection independent of css settings ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#7341](https://github.com/openlayers/openlayers/pull/7341) - Proper rendering of raster sources when there is a tile transition ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#7339](https://github.com/openlayers/openlayers/pull/7339) - Use correct text stroke on HiDPI devices ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#7327](https://github.com/openlayers/openlayers/pull/7327) - Prune the tile cache after updating a source's URL ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#7333](https://github.com/openlayers/openlayers/pull/7333) - Pluggable Map/Layers - function calls to handles and create ([@waxenegger](https://github.com/waxenegger))
|
||||||
|
* [#7329](https://github.com/openlayers/openlayers/pull/7329) - Reworked attribution handling ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#7337](https://github.com/openlayers/openlayers/pull/7337) - Always create a new blank image to avoid CSP violations ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#7330](https://github.com/openlayers/openlayers/pull/7330) - Add upgrade notes to 4.4.0 changelog ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#7321](https://github.com/openlayers/openlayers/pull/7321) - Release v4.4.1 ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#7323](https://github.com/openlayers/openlayers/pull/7323) - Only clear the canvas when needed ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#7313](https://github.com/openlayers/openlayers/pull/7313) - Use lowercase module identifiers until ol@5 ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#7316](https://github.com/openlayers/openlayers/pull/7316) - fix copy-paste error in 4.4.0 changelog ([@mprins](https://github.com/mprins))
|
||||||
|
* [#7315](https://github.com/openlayers/openlayers/pull/7315) - Add new ol.format.filter.Contains spatial operator ([@fredj](https://github.com/fredj))
|
||||||
|
* [#7311](https://github.com/openlayers/openlayers/pull/7311) - Release v4.4.0 ([@tschaub](https://github.com/tschaub))
|
||||||
|
|
||||||
|
Additionally a number of updates where made to our dependencies:
|
||||||
|
<details>
|
||||||
|
<summary>Click to expand</summary>
|
||||||
|
<ul>
|
||||||
|
<li><a href="https://github.com/openlayers/openlayers/pull/7455">#7455</a> - Update eslint to the latest version 🚀 (<a href="https://github.com/openlayers">@openlayers</a>)</li>
|
||||||
|
<li><a href="https://github.com/openlayers/openlayers/pull/7447">#7447</a> - chore(package): update rollup-plugin-commonjs to version 8.2.6 (<a href="https://github.com/openlayers">@openlayers</a>)</li>
|
||||||
|
<li><a href="https://github.com/openlayers/openlayers/pull/7448">#7448</a> - chore(package): update debounce to version 1.1.0 (<a href="https://github.com/openlayers">@openlayers</a>)</li>
|
||||||
|
<li><a href="https://github.com/openlayers/openlayers/pull/7451">#7451</a> - chore(package): update karma to version 1.7.1 (<a href="https://github.com/openlayers">@openlayers</a>)</li>
|
||||||
|
<li><a href="https://github.com/openlayers/openlayers/pull/7446">#7446</a> - fix(package): update rollup to version 0.51.3 (<a href="https://github.com/openlayers">@openlayers</a>)</li>
|
||||||
|
<li><a href="https://github.com/openlayers/openlayers/pull/7428">#7428</a> - Update sinon to the latest version 🚀 (<a href="https://github.com/openlayers">@openlayers</a>)</li>
|
||||||
|
<li><a href="https://github.com/openlayers/openlayers/pull/7425">#7425</a> - Update async to the latest version 🚀 (<a href="https://github.com/openlayers">@openlayers</a>)</li>
|
||||||
|
<li><a href="https://github.com/openlayers/openlayers/pull/7418">#7418</a> - Update sinon to the latest version 🚀 (<a href="https://github.com/openlayers">@openlayers</a>)</li>
|
||||||
|
<li><a href="https://github.com/openlayers/openlayers/pull/7416">#7416</a> - Update sinon to the latest version 🚀 (<a href="https://github.com/openlayers">@openlayers</a>)</li>
|
||||||
|
<li><a href="https://github.com/openlayers/openlayers/pull/7417">#7417</a> - Update phantomjs-prebuilt to the latest version 🚀 (<a href="https://github.com/openlayers">@openlayers</a>)</li>
|
||||||
|
<li><a href="https://github.com/openlayers/openlayers/pull/7399">#7399</a> - Update eslint to the latest version 🚀 (<a href="https://github.com/openlayers">@openlayers</a>)</li>
|
||||||
|
<li><a href="https://github.com/openlayers/openlayers/pull/7395">#7395</a> - Update closure-util to the latest version 🚀 (<a href="https://github.com/openlayers">@openlayers</a>)</li>
|
||||||
|
<li><a href="https://github.com/openlayers/openlayers/pull/7392">#7392</a> - Update sinon to the latest version 🚀 (<a href="https://github.com/openlayers">@openlayers</a>)</li>
|
||||||
|
<li><a href="https://github.com/openlayers/openlayers/pull/7380">#7380</a> - Update rollup-plugin-cleanup to the latest version 🚀 (<a href="https://github.com/openlayers">@openlayers</a>)</li>
|
||||||
|
<li><a href="https://github.com/openlayers/openlayers/pull/7366">#7366</a> - Update handlebars to the latest version 🚀 (<a href="https://github.com/openlayers">@openlayers</a>)</li>
|
||||||
|
<li><a href="https://github.com/openlayers/openlayers/pull/7360">#7360</a> - Update eslint to the latest version 🚀 (<a href="https://github.com/openlayers">@openlayers</a>)</li>
|
||||||
|
<li><a href="https://github.com/openlayers/openlayers/pull/7354">#7354</a> - Update closure-util to the latest version 🚀 (<a href="https://github.com/openlayers">@openlayers</a>)</li>
|
||||||
|
<li><a href="https://github.com/openlayers/openlayers/pull/7319">#7319</a> - Update closure-util to the latest version 🚀 (<a href="https://github.com/openlayers">@openlayers</a>)</li>
|
||||||
|
<li><a href="https://github.com/openlayers/openlayers/pull/7314">#7314</a> - Update mocha to the latest version 🚀 (<a href="https://github.com/openlayers">@openlayers</a>)</li>
|
||||||
|
</ul>
|
||||||
|
</details>
|
||||||
@@ -16,7 +16,7 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"plugins": [
|
"plugins": [
|
||||||
"node_modules/jsdoc/plugins/markdown",
|
"plugins/markdown",
|
||||||
"config/jsdoc/api/plugins/inheritdoc",
|
"config/jsdoc/api/plugins/inheritdoc",
|
||||||
"config/jsdoc/api/plugins/typedefs",
|
"config/jsdoc/api/plugins/typedefs",
|
||||||
"config/jsdoc/api/plugins/events",
|
"config/jsdoc/api/plugins/events",
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ Interactions for [vector features](ol.Feature.html)
|
|||||||
<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 [ol.proj.transform()](ol.proj.html#.transform) and [ol.proj.transformExtent()](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()](ol.proj.html#.transform) and [ol.proj.transformExtent()](ol.proj.html#.transformExtent).</p>
|
||||||
[ol.proj](ol.proj.html)</td>
|
[ol.proj](ol.proj.html)</td>
|
||||||
<td><p>Changes to all [ol.Objects](ol.Object.html) can observed by calling the [object.on('propertychange')](ol.Object.html#on) method. Listeners receive an [ol.Object.Event](ol.Object.Event.html) with information on the changed property and old value.</p>
|
<td><p>Changes to all [ol.Objects](ol.Object.html) can be observed by calling the [object.on('propertychange')](ol.Object.html#on) method. Listeners receive an [ol.Object.Event](ol.Object.Event.html) with information on the changed property and old value.</p>
|
||||||
<td>[ol.DeviceOrientation](ol.DeviceOrientation.html)<br>
|
<td>[ol.DeviceOrientation](ol.DeviceOrientation.html)<br>
|
||||||
[ol.Geolocation](ol.Geolocation.html)<br>
|
[ol.Geolocation](ol.Geolocation.html)<br>
|
||||||
[ol.Overlay](ol.Overlay.html)<br></td>
|
[ol.Overlay](ol.Overlay.html)<br></td>
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ exports.handlers = {
|
|||||||
cls.observables = [];
|
cls.observables = [];
|
||||||
}
|
}
|
||||||
observable = observables[doclet.observable];
|
observable = observables[doclet.observable];
|
||||||
if (cls.observables.indexOf(observable) == -1) {
|
if (observable.type && cls.observables.indexOf(observable) == -1) {
|
||||||
cls.observables.push(observable);
|
cls.observables.push(observable);
|
||||||
}
|
}
|
||||||
if (!cls.fires) {
|
if (!cls.fires) {
|
||||||
|
|||||||
@@ -10,40 +10,53 @@
|
|||||||
<?js } else { ?>
|
<?js } else { ?>
|
||||||
|
|
||||||
<section>
|
<section>
|
||||||
|
|
||||||
<header>
|
<header>
|
||||||
<h2><?js if (doc.ancestors && doc.ancestors.length) { ?>
|
<h2><?js if (doc.ancestors && doc.ancestors.length) { ?>
|
||||||
<span class="ancestors"><?js= doc.ancestors.join('') ?></span><?js } ?><?js= doc.name ?>
|
<span class="ancestors"><?js= doc.ancestors.join('') ?></span><?js } ?><?js= doc.name ?>
|
||||||
<?js if (doc.variation) { ?>
|
<?js if (doc.variation) { ?>
|
||||||
<sup class="variation"><?js= doc.variation ?></sup>
|
<sup class="variation"><?js= doc.variation ?></sup>
|
||||||
<?js } ?></h2>
|
<?js } ?></h2>
|
||||||
|
<br>
|
||||||
|
<?js if (doc.stability || doc.kind == 'namespace') {
|
||||||
|
var ancestors = doc.ancestors.map(a => a.replace(/>\./g, '>').replace(/\.</g, '<')).join('/');
|
||||||
|
var name = doc.name.toLowerCase();
|
||||||
|
var parts = [];
|
||||||
|
if (ancestors) {
|
||||||
|
parts.push(ancestors);
|
||||||
|
}
|
||||||
|
parts.push(name);
|
||||||
|
var importPath = parts.join('/');
|
||||||
|
?>
|
||||||
|
<pre class="prettyprint source"><code>import <?js= doc.name ?> from '<?js= importPath ?>';</code></pre>
|
||||||
|
<?js } ?>
|
||||||
<?js if (doc.classdesc) { ?>
|
<?js if (doc.classdesc) { ?>
|
||||||
<div class="class-description"><?js= doc.classdesc ?></div>
|
<div class="class-description"><?js= doc.classdesc ?></div>
|
||||||
<?js } ?>
|
<?js } ?>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
<article>
|
<article>
|
||||||
<div class="container-overview">
|
<div class="container-overview">
|
||||||
<?js if (doc.kind === 'module' && doc.module) { ?>
|
<?js if (doc.kind === 'module' && doc.module) { ?>
|
||||||
<?js= self.partial('method.tmpl', doc.module) ?>
|
<?js= self.partial('method.tmpl', doc.module) ?>
|
||||||
<?js } ?>
|
<?js } ?>
|
||||||
|
|
||||||
<?js if (doc.kind === 'class') { ?>
|
<?js if (doc.kind === 'class') { ?>
|
||||||
<?js= self.partial('method.tmpl', doc) ?>
|
<?js= self.partial('method.tmpl', doc) ?>
|
||||||
<?js } else { ?>
|
<?js } else { ?>
|
||||||
<?js if (doc.description) { ?>
|
<?js if (doc.description) { ?>
|
||||||
<div class="description"><?js= doc.description ?></div>
|
<div class="description"><?js= doc.description ?></div>
|
||||||
<?js } ?>
|
<?js } ?>
|
||||||
|
|
||||||
<?js= self.partial('details.tmpl', doc) ?>
|
<?js= self.partial('details.tmpl', doc) ?>
|
||||||
|
|
||||||
<?js if (doc.examples && doc.examples.length) { ?>
|
<?js if (doc.examples && doc.examples.length) { ?>
|
||||||
<h3>Example<?js= doc.examples.length > 1? 's':'' ?></h3>
|
<h3>Example<?js= doc.examples.length > 1? 's':'' ?></h3>
|
||||||
<?js= self.partial('examples.tmpl', doc.examples) ?>
|
<?js= self.partial('examples.tmpl', doc.examples) ?>
|
||||||
<?js } ?>
|
<?js } ?>
|
||||||
<?js } ?>
|
<?js } ?>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<?js if (doc.kind == 'class') {
|
<?js if (doc.kind == 'class') {
|
||||||
var subclasses = self.find(function() {
|
var subclasses = self.find(function() {
|
||||||
return this.augments && this.augments.indexOf(doc.longname) > -1;
|
return this.augments && this.augments.indexOf(doc.longname) > -1;
|
||||||
@@ -60,52 +73,52 @@
|
|||||||
|
|
||||||
<?js if (doc.augments && doc.augments.length) { ?>
|
<?js if (doc.augments && doc.augments.length) { ?>
|
||||||
<h3 class="subsection-title">Extends</h3>
|
<h3 class="subsection-title">Extends</h3>
|
||||||
|
|
||||||
<ul><?js doc.augments.forEach(function(a) { ?>
|
<ul><?js doc.augments.forEach(function(a) { ?>
|
||||||
<li><?js= self.linkto(a, a) ?></li>
|
<li><?js= self.linkto(a, a) ?></li>
|
||||||
<?js }); ?></ul>
|
<?js }); ?></ul>
|
||||||
<?js } ?>
|
<?js } ?>
|
||||||
|
|
||||||
<?js if (doc.mixes && doc.mixes.length) { ?>
|
<?js if (doc.mixes && doc.mixes.length) { ?>
|
||||||
<h3 class="subsection-title">Mixes In</h3>
|
<h3 class="subsection-title">Mixes In</h3>
|
||||||
|
|
||||||
<ul><?js doc.mixes.forEach(function(a) { ?>
|
<ul><?js doc.mixes.forEach(function(a) { ?>
|
||||||
<li><?js= self.linkto(a, a) ?></li>
|
<li><?js= self.linkto(a, a) ?></li>
|
||||||
<?js }); ?></ul>
|
<?js }); ?></ul>
|
||||||
<?js } ?>
|
<?js } ?>
|
||||||
|
|
||||||
<?js if (doc.requires && doc.requires.length) { ?>
|
<?js if (doc.requires && doc.requires.length) { ?>
|
||||||
<h3 class="subsection-title">Requires</h3>
|
<h3 class="subsection-title">Requires</h3>
|
||||||
|
|
||||||
<ul><?js doc.requires.forEach(function(r) { ?>
|
<ul><?js doc.requires.forEach(function(r) { ?>
|
||||||
<li><?js= self.linkto(r, r) ?></li>
|
<li><?js= self.linkto(r, r) ?></li>
|
||||||
<?js }); ?></ul>
|
<?js }); ?></ul>
|
||||||
<?js } ?>
|
<?js } ?>
|
||||||
|
|
||||||
<?js
|
<?js
|
||||||
var classes = self.find({kind: 'class', memberof: doc.longname});
|
var classes = self.find({kind: 'class', memberof: doc.longname});
|
||||||
if (doc.kind !== 'globalobj' && classes && classes.length) {
|
if (doc.kind !== 'globalobj' && classes && classes.length) {
|
||||||
?>
|
?>
|
||||||
<h3 class="subsection-title">Classes</h3>
|
<h3 class="subsection-title">Classes</h3>
|
||||||
|
|
||||||
<dl><?js classes.forEach(function(c) { ?>
|
<dl><?js classes.forEach(function(c) { ?>
|
||||||
<dt><?js= self.linkto(c.longname, c.name) ?></dt>
|
<dt><?js= self.linkto(c.longname, c.name) ?></dt>
|
||||||
<dd><?js if (c.summary) { ?><?js= c.summary ?><?js } ?></dd>
|
<dd><?js if (c.summary) { ?><?js= c.summary ?><?js } ?></dd>
|
||||||
<?js }); ?></dl>
|
<?js }); ?></dl>
|
||||||
<?js } ?>
|
<?js } ?>
|
||||||
|
|
||||||
<?js
|
<?js
|
||||||
var namespaces = self.find({kind: 'namespace', memberof: doc.longname});
|
var namespaces = self.find({kind: 'namespace', memberof: doc.longname});
|
||||||
if (doc.kind !== 'globalobj' && namespaces && namespaces.length) {
|
if (doc.kind !== 'globalobj' && namespaces && namespaces.length) {
|
||||||
?>
|
?>
|
||||||
<h3 class="subsection-title">Namespaces</h3>
|
<h3 class="subsection-title">Namespaces</h3>
|
||||||
|
|
||||||
<dl><?js namespaces.forEach(function(n) { ?>
|
<dl><?js namespaces.forEach(function(n) { ?>
|
||||||
<dt><a href="namespaces.html#<?js= n.longname ?>"><?js= self.linkto(n.longname, n.name) ?></a></dt>
|
<dt><a href="namespaces.html#<?js= n.longname ?>"><?js= self.linkto(n.longname, n.name) ?></a></dt>
|
||||||
<dd><?js if (n.summary) { ?><?js= n.summary ?><?js } ?></dd>
|
<dd><?js if (n.summary) { ?><?js= n.summary ?><?js } ?></dd>
|
||||||
<?js }); ?></dl>
|
<?js }); ?></dl>
|
||||||
<?js } ?>
|
<?js } ?>
|
||||||
|
|
||||||
<?js
|
<?js
|
||||||
if (doc.observables && doc.observables.length) {
|
if (doc.observables && doc.observables.length) {
|
||||||
?>
|
?>
|
||||||
@@ -116,32 +129,32 @@
|
|||||||
|
|
||||||
<?js
|
<?js
|
||||||
var members = self.find({kind: 'member', memberof: title === 'Global' ? {isUndefined: true} : doc.longname});
|
var members = self.find({kind: 'member', memberof: title === 'Global' ? {isUndefined: true} : doc.longname});
|
||||||
if (members && members.length && members.forEach) {
|
if (members && members.length && members.forEach) {
|
||||||
?>
|
?>
|
||||||
<h3 class="subsection-title">Members</h3>
|
<h3 class="subsection-title">Members</h3>
|
||||||
|
|
||||||
<dl><?js members.forEach(function(p) { ?>
|
<dl><?js members.forEach(function(p) { ?>
|
||||||
<?js= self.partial('members.tmpl', p) ?>
|
<?js= self.partial('members.tmpl', p) ?>
|
||||||
<?js }); ?></dl>
|
<?js }); ?></dl>
|
||||||
<?js } ?>
|
<?js } ?>
|
||||||
|
|
||||||
<?js
|
<?js
|
||||||
var methods = self.find({kind: 'function', memberof: title === 'Global' ? {isUndefined: true} : doc.longname});
|
var methods = self.find({kind: 'function', memberof: title === 'Global' ? {isUndefined: true} : doc.longname});
|
||||||
if (methods && methods.length && methods.forEach) {
|
if (methods && methods.length && methods.forEach) {
|
||||||
?>
|
?>
|
||||||
<h3 class="subsection-title">Methods</h3>
|
<h3 class="subsection-title">Methods</h3>
|
||||||
|
|
||||||
<dl><?js methods.forEach(function(m) { ?>
|
<dl><?js methods.forEach(function(m) { ?>
|
||||||
<?js= self.partial('method.tmpl', m) ?>
|
<?js= self.partial('method.tmpl', m) ?>
|
||||||
<?js }); ?></dl>
|
<?js }); ?></dl>
|
||||||
<?js } ?>
|
<?js } ?>
|
||||||
|
|
||||||
<?js
|
<?js
|
||||||
var typedefs = self.find({kind: 'typedef', memberof: title === 'Global' ? {isUndefined: true} : doc.longname});
|
var typedefs = self.find({kind: 'typedef', memberof: title === 'Global' ? {isUndefined: true} : doc.longname});
|
||||||
if (typedefs && typedefs.length && typedefs.forEach) {
|
if (typedefs && typedefs.length && typedefs.forEach) {
|
||||||
?>
|
?>
|
||||||
<h3 class="subsection-title">Type Definitions</h3>
|
<h3 class="subsection-title">Type Definitions</h3>
|
||||||
|
|
||||||
<dl><?js typedefs.forEach(function(e) {
|
<dl><?js typedefs.forEach(function(e) {
|
||||||
if (e.signature) {
|
if (e.signature) {
|
||||||
?>
|
?>
|
||||||
@@ -155,20 +168,20 @@
|
|||||||
}
|
}
|
||||||
}); ?></dl>
|
}); ?></dl>
|
||||||
<?js } ?>
|
<?js } ?>
|
||||||
|
|
||||||
<?js
|
<?js
|
||||||
var events = self.find({kind: 'event', memberof: title === 'Global' ? {isUndefined: true} : doc.longname});
|
var events = self.find({kind: 'event', memberof: title === 'Global' ? {isUndefined: true} : doc.longname});
|
||||||
if (events && events.length && events.forEach) {
|
if (events && events.length && events.forEach) {
|
||||||
?>
|
?>
|
||||||
<h3 class="subsection-title">Events</h3>
|
<h3 class="subsection-title">Events</h3>
|
||||||
|
|
||||||
<dl><?js events.forEach(function(e) { ?>
|
<dl><?js events.forEach(function(e) { ?>
|
||||||
<?js= self.partial('method.tmpl', e) ?>
|
<?js= self.partial('method.tmpl', e) ?>
|
||||||
<?js }); ?></dl>
|
<?js }); ?></dl>
|
||||||
<?js } ?>
|
<?js } ?>
|
||||||
</article>
|
</article>
|
||||||
|
|
||||||
</section>
|
</section>
|
||||||
<?js } ?>
|
<?js } ?>
|
||||||
|
|
||||||
<?js }); ?>
|
<?js }); ?>
|
||||||
|
|||||||
@@ -16,8 +16,10 @@
|
|||||||
<tbody>
|
<tbody>
|
||||||
<?js
|
<?js
|
||||||
var self = this;
|
var self = this;
|
||||||
|
var propsByName = {};
|
||||||
props.forEach(function(prop) {
|
props.forEach(function(prop) {
|
||||||
if (!prop) { return; }
|
if (!prop || propsByName[prop.name]) { return; }
|
||||||
|
propsByName[prop.name] = prop;
|
||||||
var setter = prop.readonly ? 'no' : 'yes';
|
var setter = prop.readonly ? 'no' : 'yes';
|
||||||
?>
|
?>
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,6 @@
|
|||||||
* an api tag) and boolean defines (with a define tag and a default value).
|
* an api tag) and boolean defines (with a define tag and a default value).
|
||||||
*/
|
*/
|
||||||
var assert = require('assert');
|
var assert = require('assert');
|
||||||
var fs = require('fs');
|
|
||||||
var path = require('path');
|
var path = require('path');
|
||||||
|
|
||||||
|
|
||||||
@@ -89,7 +88,6 @@ exports.publish = function(data, opts) {
|
|||||||
types: getTypes(doc.type.names)
|
types: getTypes(doc.type.names)
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
var types;
|
|
||||||
var symbol = {
|
var symbol = {
|
||||||
name: doc.longname,
|
name: doc.longname,
|
||||||
kind: doc.kind,
|
kind: doc.kind,
|
||||||
@@ -169,13 +167,15 @@ exports.publish = function(data, opts) {
|
|||||||
return (symbol.name in augments || symbol.virtual);
|
return (symbol.name in augments || symbol.virtual);
|
||||||
});
|
});
|
||||||
|
|
||||||
process.stdout.write(
|
return new Promise(function(resolve, reject) {
|
||||||
JSON.stringify({
|
process.stdout.write(
|
||||||
symbols: symbols,
|
JSON.stringify({
|
||||||
defines: defines,
|
symbols: symbols,
|
||||||
typedefs: typedefs,
|
defines: defines,
|
||||||
externs: externs,
|
typedefs: typedefs,
|
||||||
base: base
|
externs: externs,
|
||||||
}, null, 2));
|
base: base
|
||||||
|
}, null, 2));
|
||||||
|
});
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|||||||
26
css/ol.css
26
css/ol.css
@@ -34,16 +34,32 @@
|
|||||||
.ol-unsupported {
|
.ol-unsupported {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
.ol-viewport .ol-unselectable {
|
.ol-viewport, .ol-unselectable {
|
||||||
-webkit-touch-callout: none;
|
-webkit-touch-callout: none;
|
||||||
-webkit-user-select: none;
|
-webkit-user-select: none;
|
||||||
-khtml-user-select: none;
|
|
||||||
-moz-user-select: none;
|
-moz-user-select: none;
|
||||||
-ms-user-select: none;
|
-ms-user-select: none;
|
||||||
user-select: none;
|
user-select: none;
|
||||||
-webkit-tap-highlight-color: rgba(0,0,0,0);
|
-webkit-tap-highlight-color: rgba(0,0,0,0);
|
||||||
}
|
}
|
||||||
|
.ol-selectable {
|
||||||
|
-webkit-touch-callout: default;
|
||||||
|
-webkit-user-select: auto;
|
||||||
|
-moz-user-select: auto;
|
||||||
|
-ms-user-select: auto;
|
||||||
|
user-select: auto;
|
||||||
|
}
|
||||||
|
.ol-grabbing {
|
||||||
|
cursor: -webkit-grabbing;
|
||||||
|
cursor: -moz-grabbing;
|
||||||
|
cursor: grabbing;
|
||||||
|
}
|
||||||
|
.ol-grab {
|
||||||
|
cursor: move;
|
||||||
|
cursor: -webkit-grab;
|
||||||
|
cursor: -moz-grab;
|
||||||
|
cursor: grab;
|
||||||
|
}
|
||||||
.ol-control {
|
.ol-control {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
background-color: rgba(255,255,255,0.4);
|
background-color: rgba(255,255,255,0.4);
|
||||||
@@ -239,3 +255,7 @@
|
|||||||
.ol-overviewmap-box {
|
.ol-overviewmap-box {
|
||||||
border: 2px dotted rgba(0,60,136,0.7);
|
border: 2px dotted rgba(0,60,136,0.7);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.ol-overviewmap .ol-overviewmap-box:hover {
|
||||||
|
cursor: move;
|
||||||
|
}
|
||||||
|
|||||||
@@ -220,3 +220,11 @@ The `{-y}` placeholder requires a tile grid with extent.
|
|||||||
### 57
|
### 57
|
||||||
|
|
||||||
At least 2 conditions are required.
|
At least 2 conditions are required.
|
||||||
|
|
||||||
|
### 58
|
||||||
|
|
||||||
|
Duplicate item added to a unique collection. For example, it may be that you tried to add the same layer to a map twice. Check for calls to `map.addLayer()` or other places where the map's layer collection is modified.
|
||||||
|
|
||||||
|
### 59
|
||||||
|
|
||||||
|
Invalid command found in the PBF. This indicates that the loaded vector tile may be corrupt.
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ For a more in-depth overview of OpenLayers core concepts, check out the [tutoria
|
|||||||
|
|
||||||
Make sure to also check out the [OpenLayers workshop](/workshop/).
|
Make sure to also check out the [OpenLayers workshop](/workshop/).
|
||||||
|
|
||||||
Find additional reference material in the [API docs](../apidoc).
|
Find additional reference material in the [API docs](../apidoc) and [examples](../examples).
|
||||||
|
|
||||||
# Frequently Asked Questions (FAQ)
|
# Frequently Asked Questions (FAQ)
|
||||||
|
|
||||||
@@ -19,4 +19,4 @@ We have put together a document that lists [Frequently Asked Questions (FAQ)](fa
|
|||||||
|
|
||||||
# More questions?
|
# More questions?
|
||||||
|
|
||||||
If you cannot find an answer in the documentation or the FAQ, you can ask your question on [Stack Overflow using the tag 'openlayers'](http://stackoverflow.com/questions/tagged/openlayers).
|
If you cannot find an answer in the documentation or the FAQ, you can search [Stack Overflow](http://stackoverflow.com/questions/tagged/openlayers). If you cannot find an answer there, ask a new question there, using the tag 'openlayers'.
|
||||||
|
|||||||
@@ -5,57 +5,56 @@ layout: doc.hbs
|
|||||||
|
|
||||||
# Introduction
|
# Introduction
|
||||||
|
|
||||||
When going beyond modifying existing examples you might be looking for a
|
When going beyond modifying existing examples you might be looking for a way to setup your own code with dependency management together with external dependencies like OpenLayers.
|
||||||
way to setup your own code with dependency management together with external
|
|
||||||
dependencies like OpenLayers.
|
|
||||||
|
|
||||||
This tutorial serves as a suggested project setup using NPM and Browserify
|
This tutorial serves as a suggested project setup using NPM and Browserify for the most basic needs. There are several other options, and in particular you might be interested in a more modern one (ES2015) [using Webpack with OpenLayers](https://gist.github.com/tschaub/79025aef325cd2837364400a105405b8).
|
||||||
for the most basic needs. There are several other options and in particular
|
|
||||||
you might be interested in
|
|
||||||
[compiling your own code together with OpenLayers](closure.html).
|
|
||||||
|
|
||||||
## Initial steps
|
## Initial steps
|
||||||
|
|
||||||
Create a new empty directory for your project and navigate to it by running
|
Create a new empty directory for your project and navigate to it by running `mkdir new-project && cd new-project`. Initialize your project using `npm init` and answer the questions asked.
|
||||||
`mkdir new-project && cd new-project`. Initialize your project using `npm init`
|
|
||||||
and answer the questions asked.
|
|
||||||
|
|
||||||
At this point you can ask NPM to add required dependencies by running
|
Add OpenLayers as dependency to your application with `npm install --save ol`.
|
||||||
`npm install --save-dev openlayers browserify watchify uglify-js`. Watchify and
|
|
||||||
Uglify will be used to monitor for changes and to build into a minified
|
At this point you can ask NPM to add required development dependencies by running
|
||||||
bundle.
|
```
|
||||||
|
npm install --save-dev cssify browserify cssify http-server uglify-js watchify
|
||||||
|
npm install --save-dev babelify babel-plugin-transform-es2015-modules-commonjs
|
||||||
|
```
|
||||||
|
We will be using `cssify` to include the css definitions required by OpenLayers in our bundle. `watchify`, `http-server` and `uglify-js` are used to monitor for changes and to build into a minified bundle. `babelify` and `babel-plugin-transform-es2015-modules-commonjs` are used to make the `ol` package, which was created using ES2015 modules, work with CommonJS.
|
||||||
|
|
||||||
## Application code and index.html
|
## Application code and index.html
|
||||||
|
|
||||||
Place your application code in `index.js`. Here is a simple starting point:
|
Place your application code in `index.js`. Here is a simple starting point:
|
||||||
|
|
||||||
```js
|
```js
|
||||||
var ol = require('openlayers');
|
require('ol/ol.css');
|
||||||
|
var ol_Map = require('ol/map').default;
|
||||||
var map = new ol.Map({
|
var ol_layer_Tile = require('ol/layer/tile').default;
|
||||||
|
var ol_source_OSM = require('ol/source/osm').default;
|
||||||
|
var ol_View = require('ol/view').default;
|
||||||
|
|
||||||
|
var map = new ol_Map({
|
||||||
target: 'map',
|
target: 'map',
|
||||||
layers: [
|
layers: [
|
||||||
new ol.layer.Tile({
|
new ol_layer_Tile({
|
||||||
source: new ol.source.OSM()
|
source: new ol_source_OSM()
|
||||||
})
|
})
|
||||||
],
|
],
|
||||||
view: new ol.View({
|
view: new ol_View({
|
||||||
center: [0, 0],
|
center: [0, 0],
|
||||||
zoom: 0
|
zoom: 0
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
```
|
```
|
||||||
|
|
||||||
You will also need an `ìndex.html` file that will use your bundle. Here is a simple
|
You will also need an `ìndex.html` file that will use your bundle. Here is a simple example:
|
||||||
example:
|
|
||||||
|
|
||||||
```html
|
```html
|
||||||
<!doctype html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<title>Using Browserify with OpenLayers</title>
|
<title>Using Browserify with OpenLayers</title>
|
||||||
<link rel="stylesheet" href="node_modules/openlayers/dist/ol.css" type="text/css">
|
|
||||||
<style>
|
<style>
|
||||||
#map {
|
#map {
|
||||||
width: 400px;
|
width: 400px;
|
||||||
@@ -72,18 +71,17 @@ example:
|
|||||||
|
|
||||||
## Creating a bundle
|
## Creating a bundle
|
||||||
|
|
||||||
With simple scripts you can introduce the commands `npm run build` and `npm start` to
|
With simple scripts you can introduce the commands `npm run build` and `npm start` to manually build your bundle and watch for changes, respectively. Add the following to the script section in `package.json`:
|
||||||
manually build your bundle and watch for changes, respectively. Add the following
|
|
||||||
to the script section in `package.json`:
|
|
||||||
|
|
||||||
```json
|
```json
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "watchify index.js --outfile bundle.js",
|
"start": "watchify index.js -g cssify --outfile bundle.js & http-server",
|
||||||
"build": "browserify index.js | uglifyjs --compress --output bundle.js"
|
"build": "browserify -g cssify index.js | uglifyjs --compress --output bundle.js"
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
Now to test your application open http://localhost:8080/ in your browser. `watchify` will update `bundle.js` whenever you change something. You simply need to reload the page in your browser to see the changes.
|
||||||
|
```
|
||||||
|
$ npm start
|
||||||
|
```
|
||||||
|
|
||||||
Note that `bundle.js` will contain your application code and all dependencies
|
Note that `bundle.js` will contain your application code and all dependencies used in your application. From OpenLayers, it only contains the required components.
|
||||||
used in your application, in this case the official full build of OpenLayers.
|
|
||||||
If you only need parts of OpenLayers you can create
|
|
||||||
[custom builds](../../builder).
|
|
||||||
|
|||||||
@@ -5,11 +5,15 @@ layout: doc.hbs
|
|||||||
|
|
||||||
# Compiling Application with Closure Compiler
|
# Compiling Application with Closure Compiler
|
||||||
|
|
||||||
|
**Note**: When building an application with dependencies that are available as [npm](https://npmjs.com/) packages, it will probably be easier to use the [ol](https://npmjs.com/package/ol) package and follow the instructions there.
|
||||||
|
|
||||||
The OpenLayers code uses the Closure Library, and it is compiled with the
|
The OpenLayers code uses the Closure Library, and it is compiled with the
|
||||||
Closure Compiler. Using OpenLayers in an application does not require using
|
Closure Compiler. Using OpenLayers in an application does not require using
|
||||||
Closure. But using Closure in an OpenLayers application is possible. And this
|
Closure. But using Closure in an OpenLayers application is possible. And this
|
||||||
is what this tutorial is about.
|
is what this tutorial is about.
|
||||||
|
|
||||||
|
When you want to include OpenLayers as separate script without bundling with your application, follow the [Creating custom builds](./custom-builds.html) tutorial instead.
|
||||||
|
|
||||||
This tutorial will teach you how to set up an OpenLayers application based on
|
This tutorial will teach you how to set up an OpenLayers application based on
|
||||||
the [`closure-util`](https://github.com/openlayers/closure-util) node package,
|
the [`closure-util`](https://github.com/openlayers/closure-util) node package,
|
||||||
which provides utilities for working with Closure. Using `closure-util` is one
|
which provides utilities for working with Closure. Using `closure-util` is one
|
||||||
@@ -120,7 +124,7 @@ goog.require('ol.source.OSM');
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @type {ol.Map}
|
* @type {ol.PluggableMap}
|
||||||
*/
|
*/
|
||||||
app.map = new ol.Map({
|
app.map = new ol.Map({
|
||||||
target: 'map',
|
target: 'map',
|
||||||
@@ -172,6 +176,7 @@ The minimum config file looks like this:
|
|||||||
"ol.ENABLE_WEBGL=false"
|
"ol.ENABLE_WEBGL=false"
|
||||||
],
|
],
|
||||||
"js": [
|
"js": [
|
||||||
|
"node_modules/openlayers/src/ol/typedefs.js",
|
||||||
"node_modules/openlayers/externs/olx.js",
|
"node_modules/openlayers/externs/olx.js",
|
||||||
"node_modules/openlayers/externs/oli.js"
|
"node_modules/openlayers/externs/oli.js"
|
||||||
],
|
],
|
||||||
@@ -223,6 +228,7 @@ Here is a version of `config.json` with more compilation checks enabled:
|
|||||||
"ol.ENABLE_WEBGL=false"
|
"ol.ENABLE_WEBGL=false"
|
||||||
],
|
],
|
||||||
"js": [
|
"js": [
|
||||||
|
"node_modules/openlayers/src/ol/typedefs.js",
|
||||||
"node_modules/openlayers/externs/olx.js",
|
"node_modules/openlayers/externs/olx.js",
|
||||||
"node_modules/openlayers/externs/oli.js"
|
"node_modules/openlayers/externs/oli.js"
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -51,7 +51,9 @@ Creating a custom build requires writing a build configuration file. The format
|
|||||||
"compile": {
|
"compile": {
|
||||||
"externs": [
|
"externs": [
|
||||||
"externs/bingmaps.js",
|
"externs/bingmaps.js",
|
||||||
|
"externs/cartodb.js",
|
||||||
"externs/closure-compiler.js",
|
"externs/closure-compiler.js",
|
||||||
|
"externs/esrijson.js",
|
||||||
"externs/geojson.js",
|
"externs/geojson.js",
|
||||||
"externs/oli.js",
|
"externs/oli.js",
|
||||||
"externs/olx.js",
|
"externs/olx.js",
|
||||||
@@ -201,9 +203,16 @@ Now let's try a more complicated example: [`heatmaps-earthquakes`](https://openl
|
|||||||
],
|
],
|
||||||
"compile": {
|
"compile": {
|
||||||
"externs": [
|
"externs": [
|
||||||
|
"externs/bingmaps.js",
|
||||||
|
"externs/cartodb.js",
|
||||||
"externs/closure-compiler.js",
|
"externs/closure-compiler.js",
|
||||||
|
"externs/esrijson.js",
|
||||||
|
"externs/geojson.js",
|
||||||
"externs/olx.js",
|
"externs/olx.js",
|
||||||
"externs/oli.js"
|
"externs/oli.js",
|
||||||
|
"externs/proj4js.js",
|
||||||
|
"externs/tilejson.js",
|
||||||
|
"externs/topojson.js"
|
||||||
],
|
],
|
||||||
"define": [
|
"define": [
|
||||||
"ol.ENABLE_WEBGL=false",
|
"ol.ENABLE_WEBGL=false",
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ The easiest way to use a custom projection is to add the [Proj4js](http://proj4j
|
|||||||
Following example shows definition of a [British National Grid](https://epsg.io/27700):
|
Following example shows definition of a [British National Grid](https://epsg.io/27700):
|
||||||
|
|
||||||
``` html
|
``` html
|
||||||
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/proj4js/2.3.14/proj4.js"></script>
|
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/proj4js/2.4.4/proj4.js"></script>
|
||||||
```
|
```
|
||||||
|
|
||||||
``` javascript
|
``` javascript
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
"createMapboxStreetsV6Style": false,
|
"createMapboxStreetsV6Style": false,
|
||||||
"d3": false,
|
"d3": false,
|
||||||
"geojsonvt": false,
|
"geojsonvt": false,
|
||||||
|
"GyroNorm": false,
|
||||||
"jsPDF": false,
|
"jsPDF": false,
|
||||||
"jsts": false,
|
"jsts": false,
|
||||||
"saveAs": false,
|
"saveAs": false,
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
goog.require('ol.Map');
|
goog.require('ol.Map');
|
||||||
goog.require('ol.View');
|
goog.require('ol.View');
|
||||||
|
goog.require('ol.easing');
|
||||||
goog.require('ol.layer.Tile');
|
goog.require('ol.layer.Tile');
|
||||||
goog.require('ol.proj');
|
goog.require('ol.proj');
|
||||||
goog.require('ol.source.OSM');
|
goog.require('ol.source.OSM');
|
||||||
@@ -73,9 +74,16 @@ onClick('rotate-right', function() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
onClick('rotate-around-rome', function() {
|
onClick('rotate-around-rome', function() {
|
||||||
|
// Rotation animation takes the shortest arc, so animate in two parts
|
||||||
|
var rotation = view.getRotation();
|
||||||
view.animate({
|
view.animate({
|
||||||
rotation: view.getRotation() + 2 * Math.PI,
|
rotation: rotation + Math.PI,
|
||||||
anchor: rome
|
anchor: rome,
|
||||||
|
easing: ol.easing.easeIn
|
||||||
|
}, {
|
||||||
|
rotation: rotation + 2 * Math.PI,
|
||||||
|
anchor: rome,
|
||||||
|
easing: ol.easing.easeOut
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -103,10 +111,19 @@ onClick('bounce-to-istanbul', function() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
onClick('spin-to-rome', function() {
|
onClick('spin-to-rome', function() {
|
||||||
|
// Rotation animation takes the shortest arc, so animate in two parts
|
||||||
|
var center = view.getCenter();
|
||||||
view.animate({
|
view.animate({
|
||||||
|
center: [
|
||||||
|
center[0] + (rome[0] - center[0]) / 2,
|
||||||
|
center[1] + (rome[1] - center[1]) / 2
|
||||||
|
],
|
||||||
|
rotation: Math.PI,
|
||||||
|
easing: ol.easing.easeIn
|
||||||
|
}, {
|
||||||
center: rome,
|
center: rome,
|
||||||
rotation: 2 * Math.PI,
|
rotation: 2 * Math.PI,
|
||||||
duration: 2000
|
easing: ol.easing.easeOut
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,8 @@ cloak:
|
|||||||
<select id="layer-select">
|
<select id="layer-select">
|
||||||
<option value="Aerial">Aerial</option>
|
<option value="Aerial">Aerial</option>
|
||||||
<option value="AerialWithLabels" selected>Aerial with labels</option>
|
<option value="AerialWithLabels" selected>Aerial with labels</option>
|
||||||
<option value="Road">Road</option>
|
<option value="Road">Road (static)</option>
|
||||||
|
<option value="RoadOnDemand">Road (dynamic)</option>
|
||||||
<option value="collinsBart">Collins Bart</option>
|
<option value="collinsBart">Collins Bart</option>
|
||||||
<option value="ordnanceSurvey">Ordnance Survey</option>
|
<option value="ordnanceSurvey">Ordnance Survey</option>
|
||||||
</select>
|
</select>
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ goog.require('ol.source.BingMaps');
|
|||||||
|
|
||||||
var styles = [
|
var styles = [
|
||||||
'Road',
|
'Road',
|
||||||
|
'RoadOnDemand',
|
||||||
'Aerial',
|
'Aerial',
|
||||||
'AerialWithLabels',
|
'AerialWithLabels',
|
||||||
'collinsBart',
|
'collinsBart',
|
||||||
|
|||||||
@@ -45,29 +45,29 @@ var dragBox = new ol.interaction.DragBox({
|
|||||||
|
|
||||||
map.addInteraction(dragBox);
|
map.addInteraction(dragBox);
|
||||||
|
|
||||||
var infoBox = document.getElementById('info');
|
|
||||||
|
|
||||||
dragBox.on('boxend', function() {
|
dragBox.on('boxend', function() {
|
||||||
// features that intersect the box are added to the collection of
|
// features that intersect the box are added to the collection of
|
||||||
// selected features, and their names are displayed in the "info"
|
// selected features
|
||||||
// div
|
|
||||||
var info = [];
|
|
||||||
var extent = dragBox.getGeometry().getExtent();
|
var extent = dragBox.getGeometry().getExtent();
|
||||||
vectorSource.forEachFeatureIntersectingExtent(extent, function(feature) {
|
vectorSource.forEachFeatureIntersectingExtent(extent, function(feature) {
|
||||||
selectedFeatures.push(feature);
|
selectedFeatures.push(feature);
|
||||||
info.push(feature.get('name'));
|
|
||||||
});
|
});
|
||||||
if (info.length > 0) {
|
|
||||||
infoBox.innerHTML = info.join(', ');
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// clear selection when drawing a new box and when clicking on the map
|
// clear selection when drawing a new box and when clicking on the map
|
||||||
dragBox.on('boxstart', function() {
|
dragBox.on('boxstart', function() {
|
||||||
selectedFeatures.clear();
|
selectedFeatures.clear();
|
||||||
infoBox.innerHTML = ' ';
|
|
||||||
});
|
});
|
||||||
map.on('click', function() {
|
|
||||||
selectedFeatures.clear();
|
var infoBox = document.getElementById('info');
|
||||||
infoBox.innerHTML = ' ';
|
|
||||||
|
selectedFeatures.on(['add', 'remove'], function() {
|
||||||
|
var names = selectedFeatures.getArray().map(function(feature) {
|
||||||
|
return feature.get('name');
|
||||||
|
});
|
||||||
|
if (names.length > 0) {
|
||||||
|
infoBox.innerHTML = names.join(', ');
|
||||||
|
} else {
|
||||||
|
infoBox.innerHTML = 'No countries selected';
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -10,7 +10,11 @@ div.ol-zoom {
|
|||||||
top: 178px;
|
top: 178px;
|
||||||
left: 158px;
|
left: 158px;
|
||||||
}
|
}
|
||||||
div.ol-attribution {
|
div.ol-rotate {
|
||||||
|
top: 178px;
|
||||||
|
right: 58px;
|
||||||
|
}
|
||||||
|
.map div.ol-attribution {
|
||||||
bottom: 30px;
|
bottom: 30px;
|
||||||
right: 50px;
|
right: 50px;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
layout: example.html
|
layout: example.html
|
||||||
title: Clustered Features
|
title: Clustered Features
|
||||||
shortdesc: Example of using <code>ol.source.Cluster</code>.
|
shortdesc: Example of using ol.source.Cluster.
|
||||||
docs: >
|
docs: >
|
||||||
This example shows how to do clustering on point features.
|
This example shows how to do clustering on point features.
|
||||||
tags: "cluster, vector"
|
tags: "cluster, vector"
|
||||||
|
|||||||
@@ -97,12 +97,13 @@ function rgb2xyz(x) {
|
|||||||
|
|
||||||
function xyz2rgb(x) {
|
function xyz2rgb(x) {
|
||||||
return 255 * (x <= 0.0031308 ?
|
return 255 * (x <= 0.0031308 ?
|
||||||
12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);
|
12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);
|
||||||
}
|
}
|
||||||
|
|
||||||
var raster = new ol.source.Raster({
|
var raster = new ol.source.Raster({
|
||||||
sources: [new ol.source.Stamen({
|
sources: [new ol.source.Stamen({
|
||||||
layer: 'watercolor'
|
layer: 'watercolor',
|
||||||
|
transition: 0
|
||||||
})],
|
})],
|
||||||
operation: function(pixels, data) {
|
operation: function(pixels, data) {
|
||||||
var hcl = rgb2hcl(pixels[0]);
|
var hcl = rgb2hcl(pixels[0]);
|
||||||
|
|||||||
@@ -142,7 +142,7 @@ var lineFeature = new ol.Feature(
|
|||||||
|
|
||||||
var polygonFeature = new ol.Feature(
|
var polygonFeature = new ol.Feature(
|
||||||
new ol.geom.Polygon([[[-3e6, -1e6], [-3e6, 1e6],
|
new ol.geom.Polygon([[[-3e6, -1e6], [-3e6, 1e6],
|
||||||
[-1e6, 1e6], [-1e6, -1e6], [-3e6, -1e6]]]));
|
[-1e6, 1e6], [-1e6, -1e6], [-3e6, -1e6]]]));
|
||||||
|
|
||||||
|
|
||||||
var map = new ol.Map({
|
var map = new ol.Map({
|
||||||
|
|||||||
1
examples/d3.js
vendored
1
examples/d3.js
vendored
@@ -1,5 +1,4 @@
|
|||||||
// NOCOMPILE
|
// NOCOMPILE
|
||||||
goog.require('ol');
|
|
||||||
goog.require('ol.Map');
|
goog.require('ol.Map');
|
||||||
goog.require('ol.View');
|
goog.require('ol.View');
|
||||||
goog.require('ol.extent');
|
goog.require('ol.extent');
|
||||||
|
|||||||
1
examples/data/geojson/vienna-streets.geojson
Normal file
1
examples/data/geojson/vienna-streets.geojson
Normal file
File diff suppressed because one or more lines are too long
@@ -4,16 +4,15 @@ title: Device Orientation
|
|||||||
shortdesc: Listen to DeviceOrientation events.
|
shortdesc: Listen to DeviceOrientation events.
|
||||||
docs: >
|
docs: >
|
||||||
This example shows how to track changes in device orientation.
|
This example shows how to track changes in device orientation.
|
||||||
tags: "orientation, openstreetmap"
|
[gyronorm.js](https://github.com/dorukeker/gyronorm.js) library is used to access and
|
||||||
|
normalize the events from the browser.
|
||||||
|
tags: "device, orientation, gyronorm"
|
||||||
|
resources:
|
||||||
|
- https://cdn.rawgit.com/dorukeker/gyronorm.js/v2.0.6/dist/gyronorm.complete.min.js
|
||||||
---
|
---
|
||||||
<div id="map" class="map"></div>
|
<div id="map" class="map"></div>
|
||||||
<label>
|
|
||||||
track changes
|
|
||||||
<input id="track" type="checkbox"/>
|
|
||||||
</label>
|
|
||||||
<p>
|
<p>
|
||||||
α : <code id="alpha"></code>
|
<div>α : <code id="alpha"></code></div>
|
||||||
β : <code id="beta"></code>
|
<div>β : <code id="beta"></code></div>
|
||||||
γ : <code id="gamma"></code>
|
<div>γ : <code id="gamma"></code></div>
|
||||||
heading : <code id="heading"></code>
|
|
||||||
</p>
|
</p>
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
goog.require('ol.DeviceOrientation');
|
// NOCOMPILE
|
||||||
goog.require('ol.Map');
|
goog.require('ol.Map');
|
||||||
goog.require('ol.View');
|
goog.require('ol.View');
|
||||||
goog.require('ol.control');
|
goog.require('ol.control');
|
||||||
goog.require('ol.layer.Tile');
|
goog.require('ol.layer.Tile');
|
||||||
|
goog.require('ol.math');
|
||||||
goog.require('ol.proj');
|
goog.require('ol.proj');
|
||||||
goog.require('ol.source.OSM');
|
goog.require('ol.source.OSM');
|
||||||
|
|
||||||
@@ -28,32 +29,28 @@ var map = new ol.Map({
|
|||||||
view: view
|
view: view
|
||||||
});
|
});
|
||||||
|
|
||||||
var deviceOrientation = new ol.DeviceOrientation();
|
|
||||||
|
|
||||||
function el(id) {
|
function el(id) {
|
||||||
return document.getElementById(id);
|
return document.getElementById(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
el('track').addEventListener('change', function() {
|
|
||||||
deviceOrientation.setTracking(this.checked);
|
var gn = new GyroNorm();
|
||||||
});
|
|
||||||
|
gn.init().then(function() {
|
||||||
deviceOrientation.on('change', function() {
|
gn.start(function(event) {
|
||||||
el('alpha').innerText = deviceOrientation.getAlpha() + ' [rad]';
|
var center = view.getCenter();
|
||||||
el('beta').innerText = deviceOrientation.getBeta() + ' [rad]';
|
var resolution = view.getResolution();
|
||||||
el('gamma').innerText = deviceOrientation.getGamma() + ' [rad]';
|
var alpha = ol.math.toRadians(event.do.beta);
|
||||||
el('heading').innerText = deviceOrientation.getHeading() + ' [rad]';
|
var beta = ol.math.toRadians(event.do.beta);
|
||||||
});
|
var gamma = ol.math.toRadians(event.do.gamma);
|
||||||
|
|
||||||
// tilt the map
|
el('alpha').innerText = alpha + ' [rad]';
|
||||||
deviceOrientation.on(['change:beta', 'change:gamma'], function(event) {
|
el('beta').innerText = beta + ' [rad]';
|
||||||
var center = view.getCenter();
|
el('gamma').innerText = gamma + ' [rad]';
|
||||||
var resolution = view.getResolution();
|
|
||||||
var beta = event.target.getBeta() || 0;
|
center[0] -= resolution * gamma * 25;
|
||||||
var gamma = event.target.getGamma() || 0;
|
center[1] += resolution * beta * 25;
|
||||||
|
|
||||||
center[0] -= resolution * gamma * 25;
|
view.setCenter(view.constrainCenter(center));
|
||||||
center[1] += resolution * beta * 25;
|
});
|
||||||
|
|
||||||
view.setCenter(view.constrainCenter(center));
|
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,9 +1,8 @@
|
|||||||
goog.require('ol.Collection');
|
|
||||||
goog.require('ol.Map');
|
goog.require('ol.Map');
|
||||||
goog.require('ol.View');
|
goog.require('ol.View');
|
||||||
goog.require('ol.events.condition');
|
|
||||||
goog.require('ol.interaction.Draw');
|
goog.require('ol.interaction.Draw');
|
||||||
goog.require('ol.interaction.Modify');
|
goog.require('ol.interaction.Modify');
|
||||||
|
goog.require('ol.interaction.Snap');
|
||||||
goog.require('ol.layer.Tile');
|
goog.require('ol.layer.Tile');
|
||||||
goog.require('ol.layer.Vector');
|
goog.require('ol.layer.Vector');
|
||||||
goog.require('ol.source.OSM');
|
goog.require('ol.source.OSM');
|
||||||
@@ -17,18 +16,9 @@ var raster = new ol.layer.Tile({
|
|||||||
source: new ol.source.OSM()
|
source: new ol.source.OSM()
|
||||||
});
|
});
|
||||||
|
|
||||||
var map = new ol.Map({
|
var source = new ol.source.Vector();
|
||||||
layers: [raster],
|
var vector = new ol.layer.Vector({
|
||||||
target: 'map',
|
source: source,
|
||||||
view: new ol.View({
|
|
||||||
center: [-11000000, 4600000],
|
|
||||||
zoom: 4
|
|
||||||
})
|
|
||||||
});
|
|
||||||
|
|
||||||
var features = new ol.Collection();
|
|
||||||
var featureOverlay = new ol.layer.Vector({
|
|
||||||
source: new ol.source.Vector({features: features}),
|
|
||||||
style: new ol.style.Style({
|
style: new ol.style.Style({
|
||||||
fill: new ol.style.Fill({
|
fill: new ol.style.Fill({
|
||||||
color: 'rgba(255, 255, 255, 0.2)'
|
color: 'rgba(255, 255, 255, 0.2)'
|
||||||
@@ -45,38 +35,40 @@ var featureOverlay = new ol.layer.Vector({
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
featureOverlay.setMap(map);
|
|
||||||
|
|
||||||
var modify = new ol.interaction.Modify({
|
var map = new ol.Map({
|
||||||
features: features,
|
layers: [raster, vector],
|
||||||
// the SHIFT key must be pressed to delete vertices, so
|
target: 'map',
|
||||||
// that new vertices can be drawn at the same position
|
view: new ol.View({
|
||||||
// of existing vertices
|
center: [-11000000, 4600000],
|
||||||
deleteCondition: function(event) {
|
zoom: 4
|
||||||
return ol.events.condition.shiftKeyOnly(event) &&
|
})
|
||||||
ol.events.condition.singleClick(event);
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
var modify = new ol.interaction.Modify({source: source});
|
||||||
map.addInteraction(modify);
|
map.addInteraction(modify);
|
||||||
|
|
||||||
var draw; // global so we can remove it later
|
var draw, snap; // global so we can remove them later
|
||||||
var typeSelect = document.getElementById('type');
|
var typeSelect = document.getElementById('type');
|
||||||
|
|
||||||
function addInteraction() {
|
function addInteractions() {
|
||||||
draw = new ol.interaction.Draw({
|
draw = new ol.interaction.Draw({
|
||||||
features: features,
|
source: source,
|
||||||
type: /** @type {ol.geom.GeometryType} */ (typeSelect.value)
|
type: /** @type {ol.geom.GeometryType} */ (typeSelect.value)
|
||||||
});
|
});
|
||||||
map.addInteraction(draw);
|
map.addInteraction(draw);
|
||||||
}
|
snap = new ol.interaction.Snap({source: source});
|
||||||
|
map.addInteraction(snap);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handle change event.
|
* Handle change event.
|
||||||
*/
|
*/
|
||||||
typeSelect.onchange = function() {
|
typeSelect.onchange = function() {
|
||||||
map.removeInteraction(draw);
|
map.removeInteraction(draw);
|
||||||
addInteraction();
|
map.removeInteraction(snap);
|
||||||
|
addInteractions();
|
||||||
};
|
};
|
||||||
|
|
||||||
addInteraction();
|
addInteractions();
|
||||||
|
|||||||
@@ -144,7 +144,7 @@ var map = new ol.Map({
|
|||||||
layers: [raster, vector],
|
layers: [raster, vector],
|
||||||
interactions: ol.interaction.defaults().extend([new ol.interaction.Select({
|
interactions: ol.interaction.defaults().extend([new ol.interaction.Select({
|
||||||
condition: function(evt) {
|
condition: function(evt) {
|
||||||
return evt.originalEvent.type == 'mousemove' ||
|
return evt.type == 'pointermove' ||
|
||||||
evt.type == 'singleclick';
|
evt.type == 'singleclick';
|
||||||
},
|
},
|
||||||
style: selectStyleFunction
|
style: selectStyleFunction
|
||||||
|
|||||||
@@ -11,7 +11,8 @@ var layers = [
|
|||||||
source: new ol.source.TileWMS({
|
source: new ol.source.TileWMS({
|
||||||
url: 'https://ahocevar.com/geoserver/wms',
|
url: 'https://ahocevar.com/geoserver/wms',
|
||||||
params: {
|
params: {
|
||||||
'LAYERS': 'ne:NE1_HR_LC_SR_W_DR'
|
'LAYERS': 'ne:NE1_HR_LC_SR_W_DR',
|
||||||
|
'TILED': true
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -198,7 +198,7 @@ function stopAnimation(ended) {
|
|||||||
// if animation cancelled set the marker at the beginning
|
// if animation cancelled set the marker at the beginning
|
||||||
var coord = ended ? routeCoords[routeLength - 1] : routeCoords[0];
|
var coord = ended ? routeCoords[routeLength - 1] : routeCoords[0];
|
||||||
/** @type {ol.geom.Point} */ (geoMarker.getGeometry())
|
/** @type {ol.geom.Point} */ (geoMarker.getGeometry())
|
||||||
.setCoordinates(coord);
|
.setCoordinates(coord);
|
||||||
//remove listener
|
//remove listener
|
||||||
map.un('postcompose', moveFeature);
|
map.un('postcompose', moveFeature);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ goog.require('ol.source.OSM');
|
|||||||
goog.require('ol.source.VectorTile');
|
goog.require('ol.source.VectorTile');
|
||||||
goog.require('ol.layer.Tile');
|
goog.require('ol.layer.Tile');
|
||||||
goog.require('ol.layer.VectorTile');
|
goog.require('ol.layer.VectorTile');
|
||||||
goog.require('ol.tilegrid');
|
|
||||||
goog.require('ol.proj.Projection');
|
goog.require('ol.proj.Projection');
|
||||||
|
|
||||||
|
|
||||||
@@ -17,18 +16,30 @@ var replacer = function(key, value) {
|
|||||||
var geometry = value.geometry;
|
var geometry = value.geometry;
|
||||||
|
|
||||||
if (rawType === 1) {
|
if (rawType === 1) {
|
||||||
type = geometry.length === 1 ? 'Point' : 'MultiPoint';
|
type = 'MultiPoint';
|
||||||
|
if (geometry.length == 1) {
|
||||||
|
type = 'Point';
|
||||||
|
geometry = geometry[0];
|
||||||
|
}
|
||||||
} else if (rawType === 2) {
|
} else if (rawType === 2) {
|
||||||
type = geometry.length === 1 ? 'LineString' : 'MultiLineString';
|
type = 'MultiLineString';
|
||||||
|
if (geometry.length == 1) {
|
||||||
|
type = 'LineString';
|
||||||
|
geometry = geometry[0];
|
||||||
|
}
|
||||||
} else if (rawType === 3) {
|
} else if (rawType === 3) {
|
||||||
type = geometry.length === 1 ? 'Polygon' : 'MultiPolygon';
|
type = 'Polygon';
|
||||||
|
if (geometry.length > 1) {
|
||||||
|
type = 'MultiPolygon';
|
||||||
|
geometry = [geometry];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
'type': 'Feature',
|
'type': 'Feature',
|
||||||
'geometry': {
|
'geometry': {
|
||||||
'type': type,
|
'type': type,
|
||||||
'coordinates': geometry.length == 1 ? geometry : [geometry]
|
'coordinates': geometry
|
||||||
},
|
},
|
||||||
'properties': value.tags
|
'properties': value.tags
|
||||||
};
|
};
|
||||||
@@ -65,18 +76,16 @@ fetch(url).then(function(response) {
|
|||||||
});
|
});
|
||||||
var vectorSource = new ol.source.VectorTile({
|
var vectorSource = new ol.source.VectorTile({
|
||||||
format: new ol.format.GeoJSON(),
|
format: new ol.format.GeoJSON(),
|
||||||
tileGrid: ol.tilegrid.createXYZ(),
|
|
||||||
tilePixelRatio: 16,
|
|
||||||
tileLoadFunction: function(tile) {
|
tileLoadFunction: function(tile) {
|
||||||
var format = tile.getFormat();
|
var format = tile.getFormat();
|
||||||
var tileCoord = tile.getTileCoord();
|
var tileCoord = tile.getTileCoord();
|
||||||
var data = tileIndex.getTile(tileCoord[0], tileCoord[1], -tileCoord[2] - 1);
|
var data = tileIndex.getTile(tileCoord[0], tileCoord[1], -tileCoord[2] - 1);
|
||||||
|
|
||||||
var features = format.readFeatures(
|
var features = format.readFeatures(
|
||||||
JSON.stringify({
|
JSON.stringify({
|
||||||
type: 'FeatureCollection',
|
type: 'FeatureCollection',
|
||||||
features: data ? data.features : []
|
features: data ? data.features : []
|
||||||
}, replacer));
|
}, replacer));
|
||||||
tile.setLoader(function() {
|
tile.setLoader(function() {
|
||||||
tile.setFeatures(features);
|
tile.setFeatures(features);
|
||||||
tile.setProjection(tilePixels);
|
tile.setProjection(tilePixels);
|
||||||
|
|||||||
@@ -83,7 +83,7 @@ positionFeature.setStyle(new ol.style.Style({
|
|||||||
geolocation.on('change:position', function() {
|
geolocation.on('change:position', function() {
|
||||||
var coordinates = geolocation.getPosition();
|
var coordinates = geolocation.getPosition();
|
||||||
positionFeature.setGeometry(coordinates ?
|
positionFeature.setGeometry(coordinates ?
|
||||||
new ol.geom.Point(coordinates) : null);
|
new ol.geom.Point(coordinates) : null);
|
||||||
});
|
});
|
||||||
|
|
||||||
new ol.layer.Vector({
|
new ol.layer.Vector({
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ goog.require('ol.source.TileWMS');
|
|||||||
|
|
||||||
var wmsSource = new ol.source.TileWMS({
|
var wmsSource = new ol.source.TileWMS({
|
||||||
url: 'https://ahocevar.com/geoserver/wms',
|
url: 'https://ahocevar.com/geoserver/wms',
|
||||||
params: {'LAYERS': 'ne:ne'},
|
params: {'LAYERS': 'ne:ne', 'TILED': true},
|
||||||
serverType: 'geoserver',
|
serverType: 'geoserver',
|
||||||
crossOrigin: 'anonymous'
|
crossOrigin: 'anonymous'
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -10,12 +10,15 @@ goog.require('ol.style.Stroke');
|
|||||||
var map = new ol.Map({
|
var map = new ol.Map({
|
||||||
layers: [
|
layers: [
|
||||||
new ol.layer.Tile({
|
new ol.layer.Tile({
|
||||||
source: new ol.source.OSM()
|
source: new ol.source.OSM({
|
||||||
|
wrapX: false
|
||||||
|
})
|
||||||
})
|
})
|
||||||
],
|
],
|
||||||
target: 'map',
|
target: 'map',
|
||||||
view: new ol.View({
|
view: new ol.View({
|
||||||
center: ol.proj.fromLonLat([4.8, 47.75]),
|
center: ol.proj.fromLonLat([4.8, 47.75]),
|
||||||
|
extent: ol.proj.get('EPSG:3857').getExtent(),
|
||||||
zoom: 5
|
zoom: 5
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
@@ -27,6 +30,8 @@ var graticule = new ol.Graticule({
|
|||||||
color: 'rgba(255,120,0,0.9)',
|
color: 'rgba(255,120,0,0.9)',
|
||||||
width: 2,
|
width: 2,
|
||||||
lineDash: [0.5, 4]
|
lineDash: [0.5, 4]
|
||||||
})
|
}),
|
||||||
|
showLabels: true
|
||||||
});
|
});
|
||||||
|
|
||||||
graticule.setMap(map);
|
graticule.setMap(map);
|
||||||
|
|||||||
@@ -81,11 +81,11 @@ var map = new ol.Map({
|
|||||||
|
|
||||||
function createUrl(tpl, layerDesc) {
|
function createUrl(tpl, layerDesc) {
|
||||||
return tpl
|
return tpl
|
||||||
.replace('{base}', layerDesc.base)
|
.replace('{base}', layerDesc.base)
|
||||||
.replace('{type}', layerDesc.type)
|
.replace('{type}', layerDesc.type)
|
||||||
.replace('{scheme}', layerDesc.scheme)
|
.replace('{scheme}', layerDesc.scheme)
|
||||||
.replace('{app_id}', layerDesc.app_id)
|
.replace('{app_id}', layerDesc.app_id)
|
||||||
.replace('{app_code}', layerDesc.app_code);
|
.replace('{app_code}', layerDesc.app_code);
|
||||||
}
|
}
|
||||||
|
|
||||||
var select = document.getElementById('layer-select');
|
var select = document.getElementById('layer-select');
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ var madrid = new ol.Feature({
|
|||||||
rome.setStyle(new ol.style.Style({
|
rome.setStyle(new ol.style.Style({
|
||||||
image: new ol.style.Icon(/** @type {olx.style.IconOptions} */ ({
|
image: new ol.style.Icon(/** @type {olx.style.IconOptions} */ ({
|
||||||
color: '#8959A8',
|
color: '#8959A8',
|
||||||
|
crossOrigin: 'anonymous',
|
||||||
src: 'data/dot.png'
|
src: 'data/dot.png'
|
||||||
}))
|
}))
|
||||||
}));
|
}));
|
||||||
@@ -33,6 +34,7 @@ rome.setStyle(new ol.style.Style({
|
|||||||
london.setStyle(new ol.style.Style({
|
london.setStyle(new ol.style.Style({
|
||||||
image: new ol.style.Icon(/** @type {olx.style.IconOptions} */ ({
|
image: new ol.style.Icon(/** @type {olx.style.IconOptions} */ ({
|
||||||
color: '#4271AE',
|
color: '#4271AE',
|
||||||
|
crossOrigin: 'anonymous',
|
||||||
src: 'data/dot.png'
|
src: 'data/dot.png'
|
||||||
}))
|
}))
|
||||||
}));
|
}));
|
||||||
@@ -40,6 +42,7 @@ london.setStyle(new ol.style.Style({
|
|||||||
madrid.setStyle(new ol.style.Style({
|
madrid.setStyle(new ol.style.Style({
|
||||||
image: new ol.style.Icon(/** @type {olx.style.IconOptions} */ ({
|
image: new ol.style.Icon(/** @type {olx.style.IconOptions} */ ({
|
||||||
color: [113, 140, 0],
|
color: [113, 140, 0],
|
||||||
|
crossOrigin: 'anonymous',
|
||||||
src: 'data/dot.png'
|
src: 'data/dot.png'
|
||||||
}))
|
}))
|
||||||
}));
|
}));
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ function createStyle(src, img) {
|
|||||||
return new ol.style.Style({
|
return new ol.style.Style({
|
||||||
image: new ol.style.Icon(/** @type {olx.style.IconOptions} */ ({
|
image: new ol.style.Icon(/** @type {olx.style.IconOptions} */ ({
|
||||||
anchor: [0.5, 0.96],
|
anchor: [0.5, 0.96],
|
||||||
|
crossOrigin: 'anonymous',
|
||||||
src: src,
|
src: src,
|
||||||
img: img,
|
img: img,
|
||||||
imgSize: img ? [img.width, img.height] : undefined
|
imgSize: img ? [img.width, img.height] : undefined
|
||||||
|
|||||||
@@ -51,6 +51,7 @@ for (i = 0; i < iconCount; ++i) {
|
|||||||
rotation: info.rotation,
|
rotation: info.rotation,
|
||||||
scale: info.scale,
|
scale: info.scale,
|
||||||
size: info.size,
|
size: info.size,
|
||||||
|
crossOrigin: 'anonymous',
|
||||||
src: 'data/Butterfly.png'
|
src: 'data/Butterfly.png'
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -79,7 +80,7 @@ var vector = new ol.layer.Vector({
|
|||||||
});
|
});
|
||||||
|
|
||||||
var map = new ol.Map({
|
var map = new ol.Map({
|
||||||
renderer: /** @type {ol.renderer.Type} */ ('webgl'),
|
renderer: /** @type {Array<ol.renderer.Type>} */ (['webgl', 'canvas']),
|
||||||
layers: [vector],
|
layers: [vector],
|
||||||
target: document.getElementById('map'),
|
target: document.getElementById('map'),
|
||||||
view: new ol.View({
|
view: new ol.View({
|
||||||
|
|||||||
@@ -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.2.0/jsts.min.js
|
- https://cdn.rawgit.com/bjornharrtell/jsts/gh-pages/1.4.0/jsts.min.js
|
||||||
---
|
---
|
||||||
<div id="map" class="map"></div>
|
<div id="map" class="map"></div>
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ if (!ol.has.WEBGL) {
|
|||||||
|
|
||||||
var map = new ol.Map({
|
var map = new ol.Map({
|
||||||
layers: [osm],
|
layers: [osm],
|
||||||
renderer: /** @type {ol.renderer.Type} */ ('webgl'),
|
renderer: /** @type {Array<ol.renderer.Type>} */ (['webgl', 'canvas']),
|
||||||
target: 'map',
|
target: 'map',
|
||||||
controls: ol.control.defaults({
|
controls: ol.control.defaults({
|
||||||
attributionOptions: /** @type {olx.control.AttributionOptions} */ ({
|
attributionOptions: /** @type {olx.control.AttributionOptions} */ ({
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ layout: example.html
|
|||||||
title: Advanced Mapbox Vector Tiles
|
title: Advanced Mapbox Vector Tiles
|
||||||
shortdesc: Example of a Mapbox vector tiles map with custom tile grid.
|
shortdesc: Example of a Mapbox vector tiles map with custom tile grid.
|
||||||
docs: >
|
docs: >
|
||||||
A vector tiles map which reuses the same tiles for subsequent zoom levels to save bandwith on mobile devices. **Note**: No map will be visible when the access token has expired.
|
A vector tiles map which reuses the same source tiles for subsequent zoom levels to save bandwidth on mobile devices. **Note**: No map will be visible when the access token has expired.
|
||||||
tags: "mapbox, vector, tiles, mobile"
|
tags: "mapbox, vector, tiles, mobile"
|
||||||
resources:
|
resources:
|
||||||
- resources/mapbox-streets-v6-style.js
|
- resources/mapbox-streets-v6-style.js
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
/* eslint-disable openlayers-internal/no-unused-requires */
|
|
||||||
goog.require('ol.Map');
|
goog.require('ol.Map');
|
||||||
goog.require('ol.View');
|
goog.require('ol.View');
|
||||||
goog.require('ol.format.MVT');
|
goog.require('ol.format.MVT');
|
||||||
@@ -15,25 +14,16 @@ goog.require('ol.tilegrid.TileGrid');
|
|||||||
|
|
||||||
var key = 'pk.eyJ1IjoiYWhvY2V2YXIiLCJhIjoiRk1kMWZaSSJ9.E5BkluenyWQMsBLsuByrmg';
|
var key = 'pk.eyJ1IjoiYWhvY2V2YXIiLCJhIjoiRk1kMWZaSSJ9.E5BkluenyWQMsBLsuByrmg';
|
||||||
|
|
||||||
// For how many zoom levels do we want to use the same vector tiles?
|
// Calculation of resolutions that match zoom levels 1, 3, 5, 7, 9, 11, 13, 15.
|
||||||
// 1 means "use tiles from all zoom levels". 2 means "use the same tiles for 2
|
|
||||||
// subsequent zoom levels".
|
|
||||||
var reuseZoomLevels = 2;
|
|
||||||
|
|
||||||
// Offset of loaded tiles from web mercator zoom level 0.
|
|
||||||
// 0 means "At map zoom level 0, use tiles from zoom level 0". 1 means "At map
|
|
||||||
// zoom level 0, use tiles from zoom level 1".
|
|
||||||
var zoomOffset = 1;
|
|
||||||
|
|
||||||
// Calculation of tile urls
|
|
||||||
var resolutions = [];
|
var resolutions = [];
|
||||||
for (var z = zoomOffset / reuseZoomLevels; z <= 22 / reuseZoomLevels; ++z) {
|
for (var i = 0; i <= 8; ++i) {
|
||||||
resolutions.push(156543.03392804097 / Math.pow(2, z * reuseZoomLevels));
|
resolutions.push(156543.03392804097 / Math.pow(2, i * 2));
|
||||||
}
|
}
|
||||||
|
// Calculation of tile urls for zoom levels 1, 3, 5, 7, 9, 11, 13, 15.
|
||||||
function tileUrlFunction(tileCoord) {
|
function tileUrlFunction(tileCoord) {
|
||||||
return ('https://{a-d}.tiles.mapbox.com/v4/mapbox.mapbox-streets-v6/' +
|
return ('https://{a-d}.tiles.mapbox.com/v4/mapbox.mapbox-streets-v6/' +
|
||||||
'{z}/{x}/{y}.vector.pbf?access_token=' + key)
|
'{z}/{x}/{y}.vector.pbf?access_token=' + key)
|
||||||
.replace('{z}', String(tileCoord[0] * reuseZoomLevels + zoomOffset))
|
.replace('{z}', String(tileCoord[0] * 2 - 1))
|
||||||
.replace('{x}', String(tileCoord[1]))
|
.replace('{x}', String(tileCoord[1]))
|
||||||
.replace('{y}', String(-tileCoord[2] - 1))
|
.replace('{y}', String(-tileCoord[2] - 1))
|
||||||
.replace('{a-d}', 'abcd'.substr(
|
.replace('{a-d}', 'abcd'.substr(
|
||||||
@@ -43,8 +33,6 @@ function tileUrlFunction(tileCoord) {
|
|||||||
var map = new ol.Map({
|
var map = new ol.Map({
|
||||||
layers: [
|
layers: [
|
||||||
new ol.layer.VectorTile({
|
new ol.layer.VectorTile({
|
||||||
renderMode: 'vector',
|
|
||||||
preload: Infinity,
|
|
||||||
source: new ol.source.VectorTile({
|
source: new ol.source.VectorTile({
|
||||||
attributions: '© <a href="https://www.mapbox.com/map-feedback/">Mapbox</a> ' +
|
attributions: '© <a href="https://www.mapbox.com/map-feedback/">Mapbox</a> ' +
|
||||||
'© <a href="https://www.openstreetmap.org/copyright">' +
|
'© <a href="https://www.openstreetmap.org/copyright">' +
|
||||||
@@ -52,12 +40,12 @@ var map = new ol.Map({
|
|||||||
format: new ol.format.MVT(),
|
format: new ol.format.MVT(),
|
||||||
tileGrid: new ol.tilegrid.TileGrid({
|
tileGrid: new ol.tilegrid.TileGrid({
|
||||||
extent: ol.proj.get('EPSG:3857').getExtent(),
|
extent: ol.proj.get('EPSG:3857').getExtent(),
|
||||||
resolutions: resolutions
|
resolutions: resolutions,
|
||||||
|
tileSize: 512
|
||||||
}),
|
}),
|
||||||
tilePixelRatio: 16,
|
|
||||||
tileUrlFunction: tileUrlFunction
|
tileUrlFunction: tileUrlFunction
|
||||||
}),
|
}),
|
||||||
style: createMapboxStreetsV6Style()
|
style: createMapboxStreetsV6Style(ol.style.Style, ol.style.Fill, ol.style.Stroke, ol.style.Icon, ol.style.Text)
|
||||||
})
|
})
|
||||||
],
|
],
|
||||||
target: 'map',
|
target: 'map',
|
||||||
@@ -67,6 +55,3 @@ var map = new ol.Map({
|
|||||||
zoom: 2
|
zoom: 2
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
|
|
||||||
// ol.style.Fill, ol.style.Icon, ol.style.Stroke, ol.style.Style and
|
|
||||||
// ol.style.Text are required for createMapboxStreetsV6Style()
|
|
||||||
|
|||||||
@@ -1,5 +1,3 @@
|
|||||||
/* eslint-disable openlayers-internal/no-unused-requires */
|
|
||||||
|
|
||||||
goog.require('ol.Map');
|
goog.require('ol.Map');
|
||||||
goog.require('ol.View');
|
goog.require('ol.View');
|
||||||
goog.require('ol.format.MVT');
|
goog.require('ol.format.MVT');
|
||||||
@@ -10,7 +8,6 @@ goog.require('ol.style.Icon');
|
|||||||
goog.require('ol.style.Stroke');
|
goog.require('ol.style.Stroke');
|
||||||
goog.require('ol.style.Style');
|
goog.require('ol.style.Style');
|
||||||
goog.require('ol.style.Text');
|
goog.require('ol.style.Text');
|
||||||
goog.require('ol.tilegrid');
|
|
||||||
|
|
||||||
|
|
||||||
var key = 'pk.eyJ1IjoiYWhvY2V2YXIiLCJhIjoiRk1kMWZaSSJ9.E5BkluenyWQMsBLsuByrmg';
|
var key = 'pk.eyJ1IjoiYWhvY2V2YXIiLCJhIjoiRk1kMWZaSSJ9.E5BkluenyWQMsBLsuByrmg';
|
||||||
@@ -18,17 +15,16 @@ var key = 'pk.eyJ1IjoiYWhvY2V2YXIiLCJhIjoiRk1kMWZaSSJ9.E5BkluenyWQMsBLsuByrmg';
|
|||||||
var map = new ol.Map({
|
var map = new ol.Map({
|
||||||
layers: [
|
layers: [
|
||||||
new ol.layer.VectorTile({
|
new ol.layer.VectorTile({
|
||||||
|
declutter: true,
|
||||||
source: new ol.source.VectorTile({
|
source: new ol.source.VectorTile({
|
||||||
attributions: '© <a href="https://www.mapbox.com/map-feedback/">Mapbox</a> ' +
|
attributions: '© <a href="https://www.mapbox.com/map-feedback/">Mapbox</a> ' +
|
||||||
'© <a href="https://www.openstreetmap.org/copyright">' +
|
'© <a href="https://www.openstreetmap.org/copyright">' +
|
||||||
'OpenStreetMap contributors</a>',
|
'OpenStreetMap contributors</a>',
|
||||||
format: new ol.format.MVT(),
|
format: new ol.format.MVT(),
|
||||||
tileGrid: ol.tilegrid.createXYZ({maxZoom: 22}),
|
|
||||||
tilePixelRatio: 16,
|
|
||||||
url: 'https://{a-d}.tiles.mapbox.com/v4/mapbox.mapbox-streets-v6/' +
|
url: 'https://{a-d}.tiles.mapbox.com/v4/mapbox.mapbox-streets-v6/' +
|
||||||
'{z}/{x}/{y}.vector.pbf?access_token=' + key
|
'{z}/{x}/{y}.vector.pbf?access_token=' + key
|
||||||
}),
|
}),
|
||||||
style: createMapboxStreetsV6Style()
|
style: createMapboxStreetsV6Style(ol.style.Style, ol.style.Fill, ol.style.Stroke, ol.style.Icon, ol.style.Text)
|
||||||
})
|
})
|
||||||
],
|
],
|
||||||
target: 'map',
|
target: 'map',
|
||||||
@@ -37,6 +33,3 @@ var map = new ol.Map({
|
|||||||
zoom: 2
|
zoom: 2
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
|
|
||||||
// ol.style.Fill, ol.style.Icon, ol.style.Stroke, ol.style.Style and
|
|
||||||
// ol.style.Text are required for createMapboxStreetsV6Style()
|
|
||||||
|
|||||||
@@ -3,9 +3,9 @@ goog.require('ol.View');
|
|||||||
goog.require('ol.layer.Image');
|
goog.require('ol.layer.Image');
|
||||||
goog.require('ol.source.ImageMapGuide');
|
goog.require('ol.source.ImageMapGuide');
|
||||||
|
|
||||||
var mdf = 'Library://Samples/Sheboygan/Maps/Sheboygan.MapDefinition';
|
var mdf = 'Library://Public/Samples/Sheboygan/Maps/Sheboygan.MapDefinition';
|
||||||
var agentUrl =
|
var agentUrl =
|
||||||
'http://data.mapguide.com/mapguide/mapagent/mapagent.fcgi?USERNAME=Anonymous';
|
'http://www.buoyshark.com/mapguide/mapagent/mapagent.fcgi?';
|
||||||
var bounds = [
|
var bounds = [
|
||||||
-87.865114442365922,
|
-87.865114442365922,
|
||||||
43.665065564837931,
|
43.665065564837931,
|
||||||
@@ -23,7 +23,9 @@ var map = new ol.Map({
|
|||||||
metersPerUnit: 111319.4908, //value returned from mapguide
|
metersPerUnit: 111319.4908, //value returned from mapguide
|
||||||
params: {
|
params: {
|
||||||
MAPDEFINITION: mdf,
|
MAPDEFINITION: mdf,
|
||||||
FORMAT: 'PNG'
|
FORMAT: 'PNG',
|
||||||
|
USERNAME: 'OpenLayers',
|
||||||
|
PASSWORD: 'OpenLayers'
|
||||||
},
|
},
|
||||||
ratio: 2
|
ratio: 2
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -1,20 +1,24 @@
|
|||||||
---
|
---
|
||||||
layout: example.html
|
layout: example.html
|
||||||
title: Measure
|
title: Measure
|
||||||
shortdesc: Example of using the ol.interaction.Draw interaction to create a simple measuring application.
|
shortdesc: Using a draw interaction to measure lengths and areas.
|
||||||
docs: >
|
docs: >
|
||||||
<p><i>NOTE: By default, length and area are calculated using the projected coordinates. This is not accurate for projections like Mercator where the projected meters do not correspond to meters on the ground. To get a standarized measurement across all projections, use the geodesic measures.</i></p>
|
<p>The <code>ol.Sphere.getLength()</code> and <code>ol.Sphere.getArea()</code>
|
||||||
|
functions calculate spherical lengths and areas for geometries. Lengths are
|
||||||
|
calculated by assuming great circle segments between geometry coordinates.
|
||||||
|
Areas are calculated as if edges of polygons were great circle segments.</p>
|
||||||
|
<p>Note that the <code>geometry.getLength()</code> and <code>geometry.getArea()</code>
|
||||||
|
methods return measures of projected (planar) geometries. These can be very
|
||||||
|
different than on-the-ground measures in certain situations — in northern
|
||||||
|
and southern latitudes using Web Mercator for example. For better results,
|
||||||
|
use the functions on <code>ol.Sphere</code>.</p>
|
||||||
tags: "draw, edit, measure, vector"
|
tags: "draw, edit, measure, vector"
|
||||||
---
|
---
|
||||||
<div id="map" class="map"></div>
|
<div id="map" class="map"></div>
|
||||||
<form class="form-inline">
|
<form class="form-inline">
|
||||||
<label>Measurement type </label>
|
<label>Measurement type </label>
|
||||||
<select id="type">
|
<select id="type">
|
||||||
<option value="length">Length (LineString)</option>
|
<option value="length">Length (LineString)</option>
|
||||||
<option value="area">Area (Polygon)</option>
|
<option value="area">Area (Polygon)</option>
|
||||||
</select>
|
</select>
|
||||||
<label class="checkbox">
|
|
||||||
<input type="checkbox" id="geodesic">
|
|
||||||
use geodesic measures
|
|
||||||
</label>
|
|
||||||
</form>
|
</form>
|
||||||
|
|||||||
@@ -8,7 +8,6 @@ goog.require('ol.geom.Polygon');
|
|||||||
goog.require('ol.interaction.Draw');
|
goog.require('ol.interaction.Draw');
|
||||||
goog.require('ol.layer.Tile');
|
goog.require('ol.layer.Tile');
|
||||||
goog.require('ol.layer.Vector');
|
goog.require('ol.layer.Vector');
|
||||||
goog.require('ol.proj');
|
|
||||||
goog.require('ol.source.OSM');
|
goog.require('ol.source.OSM');
|
||||||
goog.require('ol.source.Vector');
|
goog.require('ol.source.Vector');
|
||||||
goog.require('ol.style.Circle');
|
goog.require('ol.style.Circle');
|
||||||
@@ -17,8 +16,6 @@ goog.require('ol.style.Stroke');
|
|||||||
goog.require('ol.style.Style');
|
goog.require('ol.style.Style');
|
||||||
|
|
||||||
|
|
||||||
var wgs84Sphere = new ol.Sphere(6378137);
|
|
||||||
|
|
||||||
var raster = new ol.layer.Tile({
|
var raster = new ol.layer.Tile({
|
||||||
source: new ol.source.OSM()
|
source: new ol.source.OSM()
|
||||||
});
|
});
|
||||||
@@ -137,7 +134,6 @@ map.getViewport().addEventListener('mouseout', function() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
var typeSelect = document.getElementById('type');
|
var typeSelect = document.getElementById('type');
|
||||||
var geodesicCheckbox = document.getElementById('geodesic');
|
|
||||||
|
|
||||||
var draw; // global so we can remove it later
|
var draw; // global so we can remove it later
|
||||||
|
|
||||||
@@ -148,19 +144,7 @@ var draw; // global so we can remove it later
|
|||||||
* @return {string} The formatted length.
|
* @return {string} The formatted length.
|
||||||
*/
|
*/
|
||||||
var formatLength = function(line) {
|
var formatLength = function(line) {
|
||||||
var length;
|
var length = ol.Sphere.getLength(line);
|
||||||
if (geodesicCheckbox.checked) {
|
|
||||||
var coordinates = line.getCoordinates();
|
|
||||||
length = 0;
|
|
||||||
var sourceProj = map.getView().getProjection();
|
|
||||||
for (var i = 0, ii = coordinates.length - 1; i < ii; ++i) {
|
|
||||||
var c1 = ol.proj.transform(coordinates[i], sourceProj, 'EPSG:4326');
|
|
||||||
var c2 = ol.proj.transform(coordinates[i + 1], sourceProj, 'EPSG:4326');
|
|
||||||
length += wgs84Sphere.haversineDistance(c1, c2);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
length = Math.round(line.getLength() * 100) / 100;
|
|
||||||
}
|
|
||||||
var output;
|
var output;
|
||||||
if (length > 100) {
|
if (length > 100) {
|
||||||
output = (Math.round(length / 1000 * 100) / 100) +
|
output = (Math.round(length / 1000 * 100) / 100) +
|
||||||
@@ -179,16 +163,7 @@ var formatLength = function(line) {
|
|||||||
* @return {string} Formatted area.
|
* @return {string} Formatted area.
|
||||||
*/
|
*/
|
||||||
var formatArea = function(polygon) {
|
var formatArea = function(polygon) {
|
||||||
var area;
|
var area = ol.Sphere.getArea(polygon);
|
||||||
if (geodesicCheckbox.checked) {
|
|
||||||
var sourceProj = map.getView().getProjection();
|
|
||||||
var geom = /** @type {ol.geom.Polygon} */(polygon.clone().transform(
|
|
||||||
sourceProj, 'EPSG:4326'));
|
|
||||||
var coordinates = geom.getLinearRing(0).getCoordinates();
|
|
||||||
area = Math.abs(wgs84Sphere.geodesicArea(coordinates));
|
|
||||||
} else {
|
|
||||||
area = polygon.getArea();
|
|
||||||
}
|
|
||||||
var output;
|
var output;
|
||||||
if (area > 10000) {
|
if (area > 10000) {
|
||||||
output = (Math.round(area / 1000000 * 100) / 100) +
|
output = (Math.round(area / 1000000 * 100) / 100) +
|
||||||
|
|||||||
12
examples/min-zoom.html
Normal file
12
examples/min-zoom.html
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
---
|
||||||
|
layout: example.html
|
||||||
|
title: View Min-Zoom
|
||||||
|
shortdesc: Demonstrates how the view's minimum zoom level can be changed.
|
||||||
|
docs: >
|
||||||
|
The <code>minZoom</code> option for a view limits how far out you can
|
||||||
|
zoom. This property can be updated by calling <code>view.setMinZoom(newMinZoom)</code>.
|
||||||
|
In this example, the minimum zoom level is set so that you only see one
|
||||||
|
world at a time. Resize your browser window to change the threshold.
|
||||||
|
tags: "min, zoom"
|
||||||
|
---
|
||||||
|
<div id="map" class="map"></div>
|
||||||
36
examples/min-zoom.js
Normal file
36
examples/min-zoom.js
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
goog.require('ol.Map');
|
||||||
|
goog.require('ol.View');
|
||||||
|
goog.require('ol.layer.Tile');
|
||||||
|
goog.require('ol.source.OSM');
|
||||||
|
|
||||||
|
var viewport = document.getElementById('map');
|
||||||
|
|
||||||
|
function getMinZoom() {
|
||||||
|
var width = viewport.clientWidth;
|
||||||
|
return Math.ceil(Math.LOG2E * Math.log(width / 256));
|
||||||
|
}
|
||||||
|
|
||||||
|
var initialZoom = getMinZoom();
|
||||||
|
|
||||||
|
var view = new ol.View({
|
||||||
|
center: [0, 0],
|
||||||
|
minZoom: initialZoom,
|
||||||
|
zoom: initialZoom
|
||||||
|
});
|
||||||
|
|
||||||
|
var map = new ol.Map({
|
||||||
|
layers: [
|
||||||
|
new ol.layer.Tile({
|
||||||
|
source: new ol.source.OSM()
|
||||||
|
})
|
||||||
|
],
|
||||||
|
target: 'map',
|
||||||
|
view: view
|
||||||
|
});
|
||||||
|
|
||||||
|
window.addEventListener('resize', function() {
|
||||||
|
var minZoom = getMinZoom();
|
||||||
|
if (minZoom !== view.getMinZoom()) {
|
||||||
|
view.setMinZoom(minZoom);
|
||||||
|
}
|
||||||
|
});
|
||||||
@@ -96,8 +96,8 @@ var geojsonObject = {
|
|||||||
'geometry': {
|
'geometry': {
|
||||||
'type': 'Polygon',
|
'type': 'Polygon',
|
||||||
'coordinates': [[[-5e6, -1e6], [-4e6, 1e6],
|
'coordinates': [[[-5e6, -1e6], [-4e6, 1e6],
|
||||||
[-3e6, -1e6], [-5e6, -1e6]], [[-4.5e6, -0.5e6],
|
[-3e6, -1e6], [-5e6, -1e6]], [[-4.5e6, -0.5e6],
|
||||||
[-3.5e6, -0.5e6], [-4e6, 0.5e6], [-4.5e6, -0.5e6]]]
|
[-3.5e6, -0.5e6], [-4e6, 0.5e6], [-4.5e6, -0.5e6]]]
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
'type': 'Feature',
|
'type': 'Feature',
|
||||||
@@ -117,11 +117,11 @@ var geojsonObject = {
|
|||||||
'type': 'MultiPolygon',
|
'type': 'MultiPolygon',
|
||||||
'coordinates': [
|
'coordinates': [
|
||||||
[[[-5e6, 6e6], [-5e6, 8e6], [-3e6, 8e6],
|
[[[-5e6, 6e6], [-5e6, 8e6], [-3e6, 8e6],
|
||||||
[-3e6, 6e6], [-5e6, 6e6]]],
|
[-3e6, 6e6], [-5e6, 6e6]]],
|
||||||
[[[-3e6, 6e6], [-2e6, 8e6], [0, 8e6],
|
[[[-3e6, 6e6], [-2e6, 8e6], [0, 8e6],
|
||||||
[0, 6e6], [-3e6, 6e6]]],
|
[0, 6e6], [-3e6, 6e6]]],
|
||||||
[[[1e6, 6e6], [1e6, 8e6], [3e6, 8e6],
|
[[[1e6, 6e6], [1e6, 8e6], [3e6, 8e6],
|
||||||
[3e6, 6e6], [1e6, 6e6]]]
|
[3e6, 6e6], [1e6, 6e6]]]
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
@@ -222,7 +222,13 @@ var select = new ol.interaction.Select({
|
|||||||
|
|
||||||
var modify = new ol.interaction.Modify({
|
var modify = new ol.interaction.Modify({
|
||||||
features: select.getFeatures(),
|
features: select.getFeatures(),
|
||||||
style: overlayStyle
|
style: overlayStyle,
|
||||||
|
insertVertexCondition: function() {
|
||||||
|
// prevent new vertices to be added to the polygons
|
||||||
|
return !select.getFeatures().getArray().every(function(feature) {
|
||||||
|
return feature.getGeometry().getType().match(/Polygon/);
|
||||||
|
});
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
var map = new ol.Map({
|
var map = new ol.Map({
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ goog.require('ol.control');
|
|||||||
goog.require('ol.control.MousePosition');
|
goog.require('ol.control.MousePosition');
|
||||||
goog.require('ol.coordinate');
|
goog.require('ol.coordinate');
|
||||||
goog.require('ol.layer.Tile');
|
goog.require('ol.layer.Tile');
|
||||||
goog.require('ol.proj');
|
|
||||||
goog.require('ol.source.OSM');
|
goog.require('ol.source.OSM');
|
||||||
|
|
||||||
var mousePositionControl = new ol.control.MousePosition({
|
var mousePositionControl = new ol.control.MousePosition({
|
||||||
@@ -37,7 +36,7 @@ var map = new ol.Map({
|
|||||||
|
|
||||||
var projectionSelect = document.getElementById('projection');
|
var projectionSelect = document.getElementById('projection');
|
||||||
projectionSelect.addEventListener('change', function(event) {
|
projectionSelect.addEventListener('change', function(event) {
|
||||||
mousePositionControl.setProjection(ol.proj.get(event.target.value));
|
mousePositionControl.setProjection(event.target.value);
|
||||||
});
|
});
|
||||||
|
|
||||||
var precisionInput = document.getElementById('precision');
|
var precisionInput = document.getElementById('precision');
|
||||||
|
|||||||
12
examples/mousewheel-zoom.html
Normal file
12
examples/mousewheel-zoom.html
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
---
|
||||||
|
layout: example.html
|
||||||
|
title: Mousewheel/Trackpad Zoom
|
||||||
|
shortdesc: Restrict wheel/trackpad zooming to integer zoom levels.
|
||||||
|
docs: >
|
||||||
|
By default, the `ol.interaction.MouseWheelZoom` can leave the map at
|
||||||
|
fractional zoom levels. If instead you want to constrain wheel/trackpad
|
||||||
|
zooming to integer zoom levels, set <code>constrainResolution: true</code>
|
||||||
|
when constructing the interaction.
|
||||||
|
tags: "trackpad, mousewheel, zoom, interaction"
|
||||||
|
---
|
||||||
|
<div id="map" class="map"></div>
|
||||||
25
examples/mousewheel-zoom.js
Normal file
25
examples/mousewheel-zoom.js
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
goog.require('ol.Map');
|
||||||
|
goog.require('ol.View');
|
||||||
|
goog.require('ol.interaction');
|
||||||
|
goog.require('ol.interaction.MouseWheelZoom');
|
||||||
|
goog.require('ol.layer.Tile');
|
||||||
|
goog.require('ol.source.OSM');
|
||||||
|
|
||||||
|
|
||||||
|
var map = new ol.Map({
|
||||||
|
interactions: ol.interaction.defaults({mouseWheelZoom: false}).extend([
|
||||||
|
new ol.interaction.MouseWheelZoom({
|
||||||
|
constrainResolution: true // force zooming to a integer zoom
|
||||||
|
})
|
||||||
|
]),
|
||||||
|
layers: [
|
||||||
|
new ol.layer.Tile({
|
||||||
|
source: new ol.source.OSM()
|
||||||
|
})
|
||||||
|
],
|
||||||
|
target: 'map',
|
||||||
|
view: new ol.View({
|
||||||
|
center: [0, 0],
|
||||||
|
zoom: 2
|
||||||
|
})
|
||||||
|
});
|
||||||
@@ -3,7 +3,7 @@ layout: example.html
|
|||||||
title: OSM Vector Tiles
|
title: OSM Vector Tiles
|
||||||
shortdesc: Using OpenStreetMap vector tiles.
|
shortdesc: Using OpenStreetMap vector tiles.
|
||||||
docs: >
|
docs: >
|
||||||
A simple vector tiles map with Mapzen vector tiles. **Note**: TopoJSON vector tiles are not optimized for rendering - they might clip geometries exactly at the tile boundary instead of adding a buffer, and use geographic coordinates instead of tile relative pixel coordinates in view projection.
|
A simple vector tiles map with Mapzen vector tiles. This example uses the TopoJSON format's `layerName` option to determine the layer ("water", "roads", "buildings") for styling. **Note**: [`ol.format.MVT`](../apidoc/ol.format.MVT.html) is an even more efficient format for vector tiles.
|
||||||
tags: "vector, tiles, osm, mapzen"
|
tags: "vector, tiles, osm, mapzen"
|
||||||
cloak:
|
cloak:
|
||||||
vector-tiles-5eJz6JX: Your Mapzen API key from https://mapzen.com/developers
|
vector-tiles-5eJz6JX: Your Mapzen API key from https://mapzen.com/developers
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
goog.require('ol.Attribution');
|
|
||||||
goog.require('ol.Map');
|
goog.require('ol.Map');
|
||||||
goog.require('ol.View');
|
goog.require('ol.View');
|
||||||
goog.require('ol.format.TopoJSON');
|
goog.require('ol.format.TopoJSON');
|
||||||
@@ -8,16 +7,9 @@ goog.require('ol.source.VectorTile');
|
|||||||
goog.require('ol.style.Fill');
|
goog.require('ol.style.Fill');
|
||||||
goog.require('ol.style.Stroke');
|
goog.require('ol.style.Stroke');
|
||||||
goog.require('ol.style.Style');
|
goog.require('ol.style.Style');
|
||||||
goog.require('ol.tilegrid');
|
|
||||||
|
|
||||||
|
|
||||||
var key = 'vector-tiles-5eJz6JX';
|
var key = 'vector-tiles-5eJz6JX';
|
||||||
|
|
||||||
var attribution = [new ol.Attribution({
|
|
||||||
html: '© OpenStreetMap contributors, Who’s On First, Natural Earth, and openstreetmapdata.com'
|
|
||||||
})];
|
|
||||||
var format = new ol.format.TopoJSON();
|
|
||||||
var tileGrid = ol.tilegrid.createXYZ({maxZoom: 19});
|
|
||||||
var roadStyleCache = {};
|
var roadStyleCache = {};
|
||||||
var roadColor = {
|
var roadColor = {
|
||||||
'major_road': '#776',
|
'major_road': '#776',
|
||||||
@@ -34,65 +26,58 @@ var buildingStyle = new ol.style.Style({
|
|||||||
width: 1
|
width: 1
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
|
var waterStyle = new ol.style.Style({
|
||||||
|
fill: new ol.style.Fill({
|
||||||
|
color: '#9db9e8'
|
||||||
|
})
|
||||||
|
});
|
||||||
|
var roadStyle = function(feature) {
|
||||||
|
var kind = feature.get('kind');
|
||||||
|
var railway = feature.get('railway');
|
||||||
|
var sort_key = feature.get('sort_key');
|
||||||
|
var styleKey = kind + '/' + railway + '/' + sort_key;
|
||||||
|
var style = roadStyleCache[styleKey];
|
||||||
|
if (!style) {
|
||||||
|
var color, width;
|
||||||
|
if (railway) {
|
||||||
|
color = '#7de';
|
||||||
|
width = 1;
|
||||||
|
} else {
|
||||||
|
color = roadColor[kind];
|
||||||
|
width = kind == 'highway' ? 1.5 : 1;
|
||||||
|
}
|
||||||
|
style = new ol.style.Style({
|
||||||
|
stroke: new ol.style.Stroke({
|
||||||
|
color: color,
|
||||||
|
width: width
|
||||||
|
}),
|
||||||
|
zIndex: sort_key
|
||||||
|
});
|
||||||
|
roadStyleCache[styleKey] = style;
|
||||||
|
}
|
||||||
|
return style;
|
||||||
|
};
|
||||||
|
|
||||||
var map = new ol.Map({
|
var map = new ol.Map({
|
||||||
layers: [
|
layers: [
|
||||||
new ol.layer.VectorTile({
|
new ol.layer.VectorTile({
|
||||||
source: new ol.source.VectorTile({
|
source: new ol.source.VectorTile({
|
||||||
attributions: attribution,
|
attributions: '© OpenStreetMap contributors, Who’s On First, ' +
|
||||||
format: format,
|
'Natural Earth, and openstreetmapdata.com',
|
||||||
tileGrid: tileGrid,
|
format: new ol.format.TopoJSON({
|
||||||
url: 'https://tile.mapzen.com/mapzen/vector/v1/water/{z}/{x}/{y}.topojson?api_key=' + key
|
layerName: 'layer',
|
||||||
|
layers: ['water', 'roads', 'buildings']
|
||||||
|
}),
|
||||||
|
maxZoom: 19,
|
||||||
|
url: 'https://tile.mapzen.com/mapzen/vector/v1/all/{z}/{x}/{y}.topojson?api_key=' + key
|
||||||
}),
|
}),
|
||||||
style: new ol.style.Style({
|
style: function(feature, resolution) {
|
||||||
fill: new ol.style.Fill({
|
switch (feature.get('layer')) {
|
||||||
color: '#9db9e8'
|
case 'water': return waterStyle;
|
||||||
})
|
case 'roads': return roadStyle(feature);
|
||||||
})
|
case 'buildings': return (resolution < 10) ? buildingStyle : null;
|
||||||
}),
|
default: return null;
|
||||||
new ol.layer.VectorTile({
|
|
||||||
source: new ol.source.VectorTile({
|
|
||||||
attributions: attribution,
|
|
||||||
format: format,
|
|
||||||
tileGrid: tileGrid,
|
|
||||||
url: 'https://tile.mapzen.com/mapzen/vector/v1/roads/{z}/{x}/{y}.topojson?api_key=' + key
|
|
||||||
}),
|
|
||||||
style: function(feature) {
|
|
||||||
var kind = feature.get('kind');
|
|
||||||
var railway = feature.get('railway');
|
|
||||||
var sort_key = feature.get('sort_key');
|
|
||||||
var styleKey = kind + '/' + railway + '/' + sort_key;
|
|
||||||
var style = roadStyleCache[styleKey];
|
|
||||||
if (!style) {
|
|
||||||
var color, width;
|
|
||||||
if (railway) {
|
|
||||||
color = '#7de';
|
|
||||||
width = 1;
|
|
||||||
} else {
|
|
||||||
color = roadColor[kind];
|
|
||||||
width = kind == 'highway' ? 1.5 : 1;
|
|
||||||
}
|
|
||||||
style = new ol.style.Style({
|
|
||||||
stroke: new ol.style.Stroke({
|
|
||||||
color: color,
|
|
||||||
width: width
|
|
||||||
}),
|
|
||||||
zIndex: sort_key
|
|
||||||
});
|
|
||||||
roadStyleCache[styleKey] = style;
|
|
||||||
}
|
}
|
||||||
return style;
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
new ol.layer.VectorTile({
|
|
||||||
source: new ol.source.VectorTile({
|
|
||||||
attributions: attribution,
|
|
||||||
format: format,
|
|
||||||
tileGrid: tileGrid,
|
|
||||||
url: 'https://tile.mapzen.com/mapzen/vector/v1/buildings/{z}/{x}/{y}.topojson?api_key=' + key
|
|
||||||
}),
|
|
||||||
style: function(f, resolution) {
|
|
||||||
return (resolution < 10) ? buildingStyle : null;
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -54,28 +54,28 @@ var geojsonObject = {
|
|||||||
'geometry': {
|
'geometry': {
|
||||||
'type': 'Polygon',
|
'type': 'Polygon',
|
||||||
'coordinates': [[[-5e6, 6e6], [-5e6, 8e6], [-3e6, 8e6],
|
'coordinates': [[[-5e6, 6e6], [-5e6, 8e6], [-3e6, 8e6],
|
||||||
[-3e6, 6e6], [-5e6, 6e6]]]
|
[-3e6, 6e6], [-5e6, 6e6]]]
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
'type': 'Feature',
|
'type': 'Feature',
|
||||||
'geometry': {
|
'geometry': {
|
||||||
'type': 'Polygon',
|
'type': 'Polygon',
|
||||||
'coordinates': [[[-2e6, 6e6], [-2e6, 8e6], [0, 8e6],
|
'coordinates': [[[-2e6, 6e6], [-2e6, 8e6], [0, 8e6],
|
||||||
[0, 6e6], [-2e6, 6e6]]]
|
[0, 6e6], [-2e6, 6e6]]]
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
'type': 'Feature',
|
'type': 'Feature',
|
||||||
'geometry': {
|
'geometry': {
|
||||||
'type': 'Polygon',
|
'type': 'Polygon',
|
||||||
'coordinates': [[[1e6, 6e6], [1e6, 8e6], [3e6, 8e6],
|
'coordinates': [[[1e6, 6e6], [1e6, 8e6], [3e6, 8e6],
|
||||||
[3e6, 6e6], [1e6, 6e6]]]
|
[3e6, 6e6], [1e6, 6e6]]]
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
'type': 'Feature',
|
'type': 'Feature',
|
||||||
'geometry': {
|
'geometry': {
|
||||||
'type': 'Polygon',
|
'type': 'Polygon',
|
||||||
'coordinates': [[[-2e6, -1e6], [-1e6, 1e6],
|
'coordinates': [[[-2e6, -1e6], [-1e6, 1e6],
|
||||||
[0, -1e6], [-2e6, -1e6]]]
|
[0, -1e6], [-2e6, -1e6]]]
|
||||||
}
|
}
|
||||||
}]
|
}]
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -162,13 +162,13 @@ function plot(resolution, counts, threshold) {
|
|||||||
var value = counts.min + (index * counts.delta);
|
var value = counts.min + (index * counts.delta);
|
||||||
return 'bar' + (value >= threshold ? ' selected' : '');
|
return 'bar' + (value >= threshold ? ' selected' : '');
|
||||||
})
|
})
|
||||||
.attr('width', barWidth - 2);
|
.attr('width', barWidth - 2);
|
||||||
|
|
||||||
bar.transition().attr('transform', function(value, index) {
|
bar.transition().attr('transform', function(value, index) {
|
||||||
return 'translate(' + (index * barWidth) + ', ' +
|
return 'translate(' + (index * barWidth) + ', ' +
|
||||||
(plotHeight - yScale(value)) + ')';
|
(plotHeight - yScale(value)) + ')';
|
||||||
})
|
})
|
||||||
.attr('height', yScale);
|
.attr('height', yScale);
|
||||||
|
|
||||||
bar.on('mousemove', function(count, index) {
|
bar.on('mousemove', function(count, index) {
|
||||||
var threshold = counts.min + (index * counts.delta);
|
var threshold = counts.min + (index * counts.delta);
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ docs: >
|
|||||||
in <a href="https://epsg.io/">EPSG.io</a> database.
|
in <a href="https://epsg.io/">EPSG.io</a> database.
|
||||||
tags: "reprojection, projection, proj4js, epsg.io"
|
tags: "reprojection, projection, proj4js, epsg.io"
|
||||||
resources:
|
resources:
|
||||||
- https://cdnjs.cloudflare.com/ajax/libs/proj4js/2.3.15/proj4.js
|
- https://cdnjs.cloudflare.com/ajax/libs/proj4js/2.4.4/proj4.js
|
||||||
---
|
---
|
||||||
<div id="map" class="map"></div>
|
<div id="map" class="map"></div>
|
||||||
<form class="form-inline">
|
<form class="form-inline">
|
||||||
|
|||||||
@@ -6,6 +6,6 @@ docs: >
|
|||||||
This example shows client-side reprojection of single image source.
|
This example shows client-side reprojection of single image source.
|
||||||
tags: "reprojection, projection, proj4js, image, imagestatic"
|
tags: "reprojection, projection, proj4js, image, imagestatic"
|
||||||
resources:
|
resources:
|
||||||
- https://cdnjs.cloudflare.com/ajax/libs/proj4js/2.3.15/proj4.js
|
- https://cdnjs.cloudflare.com/ajax/libs/proj4js/2.4.4/proj4.js
|
||||||
---
|
---
|
||||||
<div id="map" class="map"></div>
|
<div id="map" class="map"></div>
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ docs: >
|
|||||||
This example shows client-side raster reprojection between various projections.
|
This example shows client-side raster reprojection between various projections.
|
||||||
tags: "reprojection, projection, proj4js, osm, wms, wmts, hidpi"
|
tags: "reprojection, projection, proj4js, osm, wms, wmts, hidpi"
|
||||||
resources:
|
resources:
|
||||||
- https://cdnjs.cloudflare.com/ajax/libs/proj4js/2.3.15/proj4.js
|
- https://cdnjs.cloudflare.com/ajax/libs/proj4js/2.4.4/proj4.js
|
||||||
---
|
---
|
||||||
<div id="map" class="map"></div>
|
<div id="map" class="map"></div>
|
||||||
<form class="form-inline">
|
<form class="form-inline">
|
||||||
|
|||||||
@@ -72,7 +72,8 @@ layers['wms4326'] = new ol.layer.Tile({
|
|||||||
url: 'https://ahocevar.com/geoserver/wms',
|
url: 'https://ahocevar.com/geoserver/wms',
|
||||||
crossOrigin: '',
|
crossOrigin: '',
|
||||||
params: {
|
params: {
|
||||||
'LAYERS': 'ne:NE1_HR_LC_SR_W_DR'
|
'LAYERS': 'ne:NE1_HR_LC_SR_W_DR',
|
||||||
|
'TILED': true
|
||||||
},
|
},
|
||||||
projection: 'EPSG:4326'
|
projection: 'EPSG:4326'
|
||||||
})
|
})
|
||||||
@@ -99,13 +100,15 @@ fetch(url).then(function(response) {
|
|||||||
return response.text();
|
return response.text();
|
||||||
}).then(function(text) {
|
}).then(function(text) {
|
||||||
var result = parser.read(text);
|
var result = parser.read(text);
|
||||||
var options = ol.source.WMTS.optionsFromCapabilities(result,
|
var options = ol.source.WMTS.optionsFromCapabilities(result, {
|
||||||
{layer: 'OSM_Land_Mask', matrixSet: 'EPSG3413_250m'});
|
layer: 'OSM_Land_Mask',
|
||||||
|
matrixSet: 'EPSG3413_250m'
|
||||||
|
});
|
||||||
options.crossOrigin = '';
|
options.crossOrigin = '';
|
||||||
options.projection = 'EPSG:3413';
|
options.projection = 'EPSG:3413';
|
||||||
options.wrapX = false;
|
options.wrapX = false;
|
||||||
layers['wmts3413'] = new ol.layer.Tile({
|
layers['wmts3413'] = new ol.layer.Tile({
|
||||||
source: new ol.source.WMTS(options)
|
source: new ol.source.WMTS(/** @type {!olx.source.WMTSOptions} */ (options))
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -131,7 +134,7 @@ layers['states'] = new ol.layer.Tile({
|
|||||||
source: new ol.source.TileWMS({
|
source: new ol.source.TileWMS({
|
||||||
url: 'https://ahocevar.com/geoserver/wms',
|
url: 'https://ahocevar.com/geoserver/wms',
|
||||||
crossOrigin: '',
|
crossOrigin: '',
|
||||||
params: {'LAYERS': 'topp:states', 'TILED': true},
|
params: {'LAYERS': 'topp:states'},
|
||||||
serverType: 'geoserver',
|
serverType: 'geoserver',
|
||||||
tileGrid: new ol.tilegrid.TileGrid({
|
tileGrid: new ol.tilegrid.TileGrid({
|
||||||
extent: [-13884991, 2870341, -7455066, 6338219],
|
extent: [-13884991, 2870341, -7455066, 6338219],
|
||||||
@@ -174,7 +177,7 @@ function updateViewProjection() {
|
|||||||
});
|
});
|
||||||
map.setView(newView);
|
map.setView(newView);
|
||||||
|
|
||||||
// Example how to prevent double occurence of map by limiting layer extent
|
// Example how to prevent double occurrence of map by limiting layer extent
|
||||||
if (newProj == ol.proj.get('EPSG:3857')) {
|
if (newProj == ol.proj.get('EPSG:3857')) {
|
||||||
layers['bng'].setExtent([-1057216, 6405988, 404315, 8759696]);
|
layers['bng'].setExtent([-1057216, 6405988, 404315, 8759696]);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -1,20 +1,20 @@
|
|||||||
// Styles for the mapbox-streets-v6 vector tile data set. Loosely based on
|
// Styles for the mapbox-streets-v6 vector tile data set. Loosely based on
|
||||||
// http://a.tiles.mapbox.com/v4/mapbox.mapbox-streets-v6.json
|
// http://a.tiles.mapbox.com/v4/mapbox.mapbox-streets-v6.json
|
||||||
|
|
||||||
function createMapboxStreetsV6Style() {
|
function createMapboxStreetsV6Style(Style, Fill, Stroke, Icon, Text) {
|
||||||
var fill = new ol.style.Fill({color: ''});
|
var fill = new Fill({color: ''});
|
||||||
var stroke = new ol.style.Stroke({color: '', width: 1});
|
var stroke = new Stroke({color: '', width: 1});
|
||||||
var polygon = new ol.style.Style({fill: fill});
|
var polygon = new Style({fill: fill});
|
||||||
var strokedPolygon = new ol.style.Style({fill: fill, stroke: stroke});
|
var strokedPolygon = new Style({fill: fill, stroke: stroke});
|
||||||
var line = new ol.style.Style({stroke: stroke});
|
var line = new Style({stroke: stroke});
|
||||||
var text = new ol.style.Style({text: new ol.style.Text({
|
var text = new Style({text: new Text({
|
||||||
text: '', fill: fill, stroke: stroke
|
text: '', fill: fill, stroke: stroke
|
||||||
})});
|
})});
|
||||||
var iconCache = {};
|
var iconCache = {};
|
||||||
function getIcon(iconName) {
|
function getIcon(iconName) {
|
||||||
var icon = iconCache[iconName];
|
var icon = iconCache[iconName];
|
||||||
if (!icon) {
|
if (!icon) {
|
||||||
icon = new ol.style.Style({image: new ol.style.Icon({
|
icon = new Style({image: new Icon({
|
||||||
src: 'https://cdn.rawgit.com/mapbox/maki/master/icons/' + iconName + '-15.svg',
|
src: 'https://cdn.rawgit.com/mapbox/maki/master/icons/' + iconName + '-15.svg',
|
||||||
imgSize: [15, 15]
|
imgSize: [15, 15]
|
||||||
})});
|
})});
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ var map = new ol.Map({
|
|||||||
})
|
})
|
||||||
}),
|
}),
|
||||||
view: new ol.View({
|
view: new ol.View({
|
||||||
center: [-25860000, 4130000],
|
center: [14200000, 4130000],
|
||||||
rotation: Math.PI / 6,
|
rotation: Math.PI / 6,
|
||||||
zoom: 10
|
zoom: 10
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -6,6 +6,6 @@ docs: >
|
|||||||
This example shows client-side reprojection of OpenStreetMap to NAD83 Indiana East, including a ScaleLine control with US units.
|
This example shows client-side reprojection of OpenStreetMap to NAD83 Indiana East, including a ScaleLine control with US units.
|
||||||
tags: "reprojection, projection, openstreetmap, nad83, tile, scaleline"
|
tags: "reprojection, projection, openstreetmap, nad83, tile, scaleline"
|
||||||
resources:
|
resources:
|
||||||
- https://cdnjs.cloudflare.com/ajax/libs/proj4js/2.3.15/proj4.js
|
- https://cdnjs.cloudflare.com/ajax/libs/proj4js/2.4.4/proj4.js
|
||||||
---
|
---
|
||||||
<div id="map" class="map"></div>
|
<div id="map" class="map"></div>
|
||||||
|
|||||||
@@ -26,7 +26,8 @@ function flood(pixels, data) {
|
|||||||
var key = 'pk.eyJ1IjoidHNjaGF1YiIsImEiOiJjaW5zYW5lNHkxMTNmdWttM3JyOHZtMmNtIn0.CDIBD8H-G2Gf-cPkIuWtRg';
|
var key = 'pk.eyJ1IjoidHNjaGF1YiIsImEiOiJjaW5zYW5lNHkxMTNmdWttM3JyOHZtMmNtIn0.CDIBD8H-G2Gf-cPkIuWtRg';
|
||||||
var elevation = new ol.source.XYZ({
|
var elevation = new ol.source.XYZ({
|
||||||
url: 'https://api.mapbox.com/v4/mapbox.terrain-rgb/{z}/{x}/{y}.pngraw?access_token=' + key,
|
url: 'https://api.mapbox.com/v4/mapbox.terrain-rgb/{z}/{x}/{y}.pngraw?access_token=' + key,
|
||||||
crossOrigin: 'anonymous'
|
crossOrigin: 'anonymous',
|
||||||
|
transition: 0
|
||||||
});
|
});
|
||||||
|
|
||||||
var raster = new ol.source.Raster({
|
var raster = new ol.source.Raster({
|
||||||
|
|||||||
@@ -104,7 +104,8 @@ function shade(inputs, data) {
|
|||||||
|
|
||||||
var elevation = new ol.source.XYZ({
|
var elevation = new ol.source.XYZ({
|
||||||
url: 'https://{a-d}.tiles.mapbox.com/v3/aj.sf-dem/{z}/{x}/{y}.png',
|
url: 'https://{a-d}.tiles.mapbox.com/v3/aj.sf-dem/{z}/{x}/{y}.png',
|
||||||
crossOrigin: 'anonymous'
|
crossOrigin: 'anonymous',
|
||||||
|
transition: 0
|
||||||
});
|
});
|
||||||
|
|
||||||
var raster = new ol.source.Raster({
|
var raster = new ol.source.Raster({
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ var map1 = new ol.Map({
|
|||||||
if (ol.has.WEBGL) {
|
if (ol.has.WEBGL) {
|
||||||
var map2 = new ol.Map({
|
var map2 = new ol.Map({
|
||||||
target: 'webglMap',
|
target: 'webglMap',
|
||||||
renderer: /** @type {ol.renderer.Type} */ ('webgl'),
|
renderer: /** @type {Array<ol.renderer.Type>} */ (['webgl', 'canvas']),
|
||||||
layers: [layer],
|
layers: [layer],
|
||||||
view: view
|
view: view
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ tags: "draw, edit, modify, vector, snap"
|
|||||||
<option value="Point">Point</option>
|
<option value="Point">Point</option>
|
||||||
<option value="LineString">LineString</option>
|
<option value="LineString">LineString</option>
|
||||||
<option value="Polygon">Polygon</option>
|
<option value="Polygon">Polygon</option>
|
||||||
|
<option value="Circle">Circle</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|||||||
@@ -81,6 +81,8 @@ var Draw = {
|
|||||||
this.LineString.setActive(false);
|
this.LineString.setActive(false);
|
||||||
map.addInteraction(this.Polygon);
|
map.addInteraction(this.Polygon);
|
||||||
this.Polygon.setActive(false);
|
this.Polygon.setActive(false);
|
||||||
|
map.addInteraction(this.Circle);
|
||||||
|
this.Circle.setActive(false);
|
||||||
},
|
},
|
||||||
Point: new ol.interaction.Draw({
|
Point: new ol.interaction.Draw({
|
||||||
source: vector.getSource(),
|
source: vector.getSource(),
|
||||||
@@ -94,6 +96,10 @@ var Draw = {
|
|||||||
source: vector.getSource(),
|
source: vector.getSource(),
|
||||||
type: /** @type {ol.geom.GeometryType} */ ('Polygon')
|
type: /** @type {ol.geom.GeometryType} */ ('Polygon')
|
||||||
}),
|
}),
|
||||||
|
Circle: new ol.interaction.Draw({
|
||||||
|
source: vector.getSource(),
|
||||||
|
type: /** @type {ol.geom.GeometryType} */ ('Circle')
|
||||||
|
}),
|
||||||
getActive: function() {
|
getActive: function() {
|
||||||
return this.activeType ? this[this.activeType].getActive() : false;
|
return this.activeType ? this[this.activeType].getActive() : false;
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -6,6 +6,6 @@ docs: >
|
|||||||
Example of a Sphere Mollweide map with a Graticule component.
|
Example of a Sphere Mollweide map with a Graticule component.
|
||||||
tags: "graticule, Mollweide, projection, proj4js"
|
tags: "graticule, Mollweide, projection, proj4js"
|
||||||
resources:
|
resources:
|
||||||
- https://cdnjs.cloudflare.com/ajax/libs/proj4js/2.3.15/proj4.js
|
- https://cdnjs.cloudflare.com/ajax/libs/proj4js/2.4.4/proj4.js
|
||||||
---
|
---
|
||||||
<div id="map" class="map"></div>
|
<div id="map" class="map"></div>
|
||||||
|
|||||||
11
examples/street-labels.html
Normal file
11
examples/street-labels.html
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
---
|
||||||
|
layout: example.html
|
||||||
|
title: Street Labels
|
||||||
|
shortdesc: Render street names with a custom render.
|
||||||
|
docs: >
|
||||||
|
Example showing the use of a text style with `placement: 'line'` to render text along a path.
|
||||||
|
tags: "vector, label, streets"
|
||||||
|
cloak:
|
||||||
|
As1HiMj1PvLPlqc_gtM7AqZfBL8ZL3VrjaS3zIb22Uvb9WKhuJObROC-qUpa81U5: Your Bing Maps Key from http://www.bingmapsportal.com/ here
|
||||||
|
---
|
||||||
|
<div id="map" class="map"></div>
|
||||||
48
examples/street-labels.js
Normal file
48
examples/street-labels.js
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
goog.require('ol.Map');
|
||||||
|
goog.require('ol.View');
|
||||||
|
goog.require('ol.extent');
|
||||||
|
goog.require('ol.format.GeoJSON');
|
||||||
|
goog.require('ol.layer.Tile');
|
||||||
|
goog.require('ol.layer.Vector');
|
||||||
|
goog.require('ol.source.BingMaps');
|
||||||
|
goog.require('ol.source.Vector');
|
||||||
|
goog.require('ol.style.Fill');
|
||||||
|
goog.require('ol.style.Style');
|
||||||
|
goog.require('ol.style.Text');
|
||||||
|
|
||||||
|
var style = new ol.style.Style({
|
||||||
|
text: new ol.style.Text({
|
||||||
|
font: 'bold 11px "Open Sans", "Arial Unicode MS", "sans-serif"',
|
||||||
|
placement: 'line',
|
||||||
|
fill: new ol.style.Fill({
|
||||||
|
color: 'white'
|
||||||
|
})
|
||||||
|
})
|
||||||
|
});
|
||||||
|
|
||||||
|
var viewExtent = [1817379, 6139595, 1827851, 6143616];
|
||||||
|
var map = new ol.Map({
|
||||||
|
layers: [new ol.layer.Tile({
|
||||||
|
source: new ol.source.BingMaps({
|
||||||
|
key: 'As1HiMj1PvLPlqc_gtM7AqZfBL8ZL3VrjaS3zIb22Uvb9WKhuJObROC-qUpa81U5',
|
||||||
|
imagerySet: 'Aerial'
|
||||||
|
})
|
||||||
|
}), new ol.layer.Vector({
|
||||||
|
declutter: true,
|
||||||
|
source: new ol.source.Vector({
|
||||||
|
format: new ol.format.GeoJSON(),
|
||||||
|
url: 'data/geojson/vienna-streets.geojson'
|
||||||
|
}),
|
||||||
|
style: function(feature) {
|
||||||
|
style.getText().setText(feature.get('name'));
|
||||||
|
return style;
|
||||||
|
}
|
||||||
|
})],
|
||||||
|
target: 'map',
|
||||||
|
view: new ol.View({
|
||||||
|
extent: viewExtent,
|
||||||
|
center: ol.extent.getCenter(viewExtent),
|
||||||
|
zoom: 17,
|
||||||
|
minZoom: 14
|
||||||
|
})
|
||||||
|
});
|
||||||
@@ -107,7 +107,7 @@ var vector = new ol.layer.Vector({
|
|||||||
});
|
});
|
||||||
|
|
||||||
var map = new ol.Map({
|
var map = new ol.Map({
|
||||||
renderer: /** @type {ol.renderer.Type} */ ('webgl'),
|
renderer: /** @type {Array<ol.renderer.Type>} */ (['webgl', 'canvas']),
|
||||||
layers: [vector],
|
layers: [vector],
|
||||||
target: document.getElementById('map'),
|
target: document.getElementById('map'),
|
||||||
view: new ol.View({
|
view: new ol.View({
|
||||||
|
|||||||
15
examples/tile-transitions.html
Normal file
15
examples/tile-transitions.html
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
---
|
||||||
|
layout: example.html
|
||||||
|
title: Tile Transitions
|
||||||
|
shortdesc: Custom configuration for opacity transitions on tiles.
|
||||||
|
docs: >
|
||||||
|
By default tiles are rendered with an opacity transition - fading in over
|
||||||
|
250 ms. To disable this behavior, set the <code>transition</code> option
|
||||||
|
of the tile source to 0.
|
||||||
|
tags: "fade, transition"
|
||||||
|
---
|
||||||
|
<div id="map" class="map"></div>
|
||||||
|
<label>
|
||||||
|
render with an opacity transition
|
||||||
|
<input id="transition" type="checkbox" checked>
|
||||||
|
</label>
|
||||||
31
examples/tile-transitions.js
Normal file
31
examples/tile-transitions.js
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
goog.require('ol.Map');
|
||||||
|
goog.require('ol.View');
|
||||||
|
goog.require('ol.layer.Tile');
|
||||||
|
goog.require('ol.source.XYZ');
|
||||||
|
|
||||||
|
var url = 'https://{a-c}.tiles.mapbox.com/v3/mapbox.world-bright/{z}/{x}/{y}.png';
|
||||||
|
|
||||||
|
var withTransition = new ol.layer.Tile({
|
||||||
|
source: new ol.source.XYZ({url: url})
|
||||||
|
});
|
||||||
|
|
||||||
|
var withoutTransition = new ol.layer.Tile({
|
||||||
|
source: new ol.source.XYZ({url: url, transition: 0}),
|
||||||
|
visible: false
|
||||||
|
});
|
||||||
|
|
||||||
|
var map = new ol.Map({
|
||||||
|
layers: [withTransition, withoutTransition],
|
||||||
|
target: 'map',
|
||||||
|
view: new ol.View({
|
||||||
|
center: [0, 0],
|
||||||
|
zoom: 2,
|
||||||
|
maxZoom: 11
|
||||||
|
})
|
||||||
|
});
|
||||||
|
|
||||||
|
document.getElementById('transition').addEventListener('change', function(event) {
|
||||||
|
var transition = event.target.checked;
|
||||||
|
withTransition.setVisible(transition);
|
||||||
|
withoutTransition.setVisible(!transition);
|
||||||
|
});
|
||||||
@@ -3,7 +3,7 @@ layout: example.html
|
|||||||
title: Tissot Indicatrix
|
title: Tissot Indicatrix
|
||||||
shortdesc: Draw Tissot's indicatrices on maps.
|
shortdesc: Draw Tissot's indicatrices on maps.
|
||||||
docs: >
|
docs: >
|
||||||
Example of [Tissot indicatrix](http://en.wikipedia.org/wiki/Tissot's_indicatrix)</a> maps. The map on the left is an EPSG:4326 map. The one on the right is EPSG:3857.
|
Example of [Tissot indicatrix](http://en.wikipedia.org/wiki/Tissot's_indicatrix) maps. The map on the top is an `EPSG:4326` map. The one on the bottom is `EPSG:3857`.
|
||||||
tags: "tissot, circle"
|
tags: "tissot, circle"
|
||||||
---
|
---
|
||||||
<h4>EPSG:4326</h4>
|
<h4>EPSG:4326</h4>
|
||||||
|
|||||||
@@ -22,7 +22,8 @@ var map4326 = new ol.Map({
|
|||||||
source: new ol.source.TileWMS({
|
source: new ol.source.TileWMS({
|
||||||
url: 'https://ahocevar.com/geoserver/wms',
|
url: 'https://ahocevar.com/geoserver/wms',
|
||||||
params: {
|
params: {
|
||||||
'LAYERS': 'ne:NE1_HR_LC_SR_W_DR'
|
'LAYERS': 'ne:NE1_HR_LC_SR_W_DR',
|
||||||
|
'TILED': true
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}),
|
}),
|
||||||
@@ -42,7 +43,8 @@ var map3857 = new ol.Map({
|
|||||||
source: new ol.source.TileWMS({
|
source: new ol.source.TileWMS({
|
||||||
url: 'https://ahocevar.com/geoserver/wms',
|
url: 'https://ahocevar.com/geoserver/wms',
|
||||||
params: {
|
params: {
|
||||||
'LAYERS': 'ne:NE1_HR_LC_SR_W_DR'
|
'LAYERS': 'ne:NE1_HR_LC_SR_W_DR',
|
||||||
|
'TILED': true
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}),
|
}),
|
||||||
|
|||||||
@@ -29,13 +29,14 @@ var style = new ol.style.Style({
|
|||||||
var vector = new ol.layer.Vector({
|
var vector = new ol.layer.Vector({
|
||||||
source: new ol.source.Vector({
|
source: new ol.source.Vector({
|
||||||
url: 'data/topojson/world-110m.json',
|
url: 'data/topojson/world-110m.json',
|
||||||
format: new ol.format.TopoJSON(),
|
format: new ol.format.TopoJSON({
|
||||||
|
// don't want to render the full world polygon (stored as 'land' layer),
|
||||||
|
// which repeats all countries
|
||||||
|
layers: ['countries']
|
||||||
|
}),
|
||||||
overlaps: false
|
overlaps: false
|
||||||
}),
|
}),
|
||||||
style: function(feature) {
|
style: style
|
||||||
// don't want to render the full world polygon, which repeats all countries
|
|
||||||
return feature.getId() !== undefined ? style : null;
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
var map = new ol.Map({
|
var map = new ol.Map({
|
||||||
|
|||||||
11
examples/vector-label-decluttering.html
Normal file
11
examples/vector-label-decluttering.html
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
---
|
||||||
|
layout: example.html
|
||||||
|
title: Vector Label Decluttering
|
||||||
|
shortdesc: Label decluttering with a custom renderer.
|
||||||
|
resources:
|
||||||
|
- https://cdn.polyfill.io/v2/polyfill.min.js?features=Set"
|
||||||
|
docs: >
|
||||||
|
Decluttering is used to avoid overlapping labels with `exceedLength: true` set on the text style. For MultiPolygon geometries, only the widest polygon is selected in a custom `geometry` function.
|
||||||
|
tags: "vector, decluttering, labels"
|
||||||
|
---
|
||||||
|
<div id="map" class="map"></div>
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user