Compare commits
779 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
68438c7c10 | ||
|
|
7dd322dd6f | ||
|
|
676476ec64 | ||
|
|
8f8b7e1f17 | ||
|
|
e62c333f32 | ||
|
|
78ac65e57d | ||
|
|
a796542223 | ||
|
|
dc7f60801a | ||
|
|
9b55d20f90 | ||
|
|
d8a845de39 | ||
|
|
ffea25fd6f | ||
|
|
aee37c4f90 | ||
|
|
62854f6e32 | ||
|
|
ab76c2cae3 | ||
|
|
eabb795624 | ||
|
|
0ae00fb277 | ||
|
|
9b0349f2d5 | ||
|
|
d4763a0fe7 | ||
|
|
3582445755 | ||
|
|
27b5036c62 | ||
|
|
a95327f18e | ||
|
|
95972b354e | ||
|
|
b7e0acf4fa | ||
|
|
3d86339b88 | ||
|
|
3bc84c7288 | ||
|
|
85a6de0ed6 | ||
|
|
a24716ac8a | ||
|
|
f1bf782133 | ||
|
|
2f5999529a | ||
|
|
fa68410e5d | ||
|
|
33cf4e6179 | ||
|
|
14ea2bf413 | ||
|
|
374f916b3a | ||
|
|
6d3103d4a9 | ||
|
|
4a311e66d7 | ||
|
|
6b46d5c76a | ||
|
|
1907de667a | ||
|
|
711ec705b7 | ||
|
|
8e8fc9977c | ||
|
|
ddc51ee267 | ||
|
|
cd0bed6291 | ||
|
|
440a85c6f4 | ||
|
|
5ca6b5dd81 | ||
|
|
fe0e17fdaf | ||
|
|
784701641d | ||
|
|
2bf191b5e3 | ||
|
|
19015d2ca9 | ||
|
|
e95a350203 | ||
|
|
b0cba674bc | ||
|
|
7c6ccca572 | ||
|
|
2ea685e18f | ||
|
|
13ce41a1d5 | ||
|
|
5192257a6d | ||
|
|
0bc96bb769 | ||
|
|
1bf4ddac6d | ||
|
|
d3365fb3a5 | ||
|
|
af30b88413 | ||
|
|
6478454a93 | ||
|
|
49f9690786 | ||
|
|
8d9acb8f48 | ||
|
|
2d12531105 | ||
|
|
e57ea1e66b | ||
|
|
a1c6662812 | ||
|
|
a101204ded | ||
|
|
fffeeaea97 | ||
|
|
babc33fcb0 | ||
|
|
abdae62481 | ||
|
|
7ece729d5f | ||
|
|
a8b7f3570d | ||
|
|
3623b4b31d | ||
|
|
5eb1537f48 | ||
|
|
7a09b11da5 | ||
|
|
3c00c7cf4c | ||
|
|
ae998a7585 | ||
|
|
86561e5ef2 | ||
|
|
e0f574bd25 | ||
|
|
f5722bbbf9 | ||
|
|
9b0b1543e0 | ||
|
|
aafe698285 | ||
|
|
c167b2b49d | ||
|
|
b60b0ecdb0 | ||
|
|
7fd017879f | ||
|
|
6dc90aefa2 | ||
|
|
a9f3367310 | ||
|
|
d07185e8f2 | ||
|
|
df170859cc | ||
|
|
ca355d2887 | ||
|
|
38dca7792c | ||
|
|
2c9fab22c8 | ||
|
|
65583a8b77 | ||
|
|
7bcd925cdb | ||
|
|
82a30b4cd5 | ||
|
|
e7db23761c | ||
|
|
31f7279de1 | ||
|
|
c3beae6b16 | ||
|
|
ae8f5149a7 | ||
|
|
0052116860 | ||
|
|
5c2501d982 | ||
|
|
1238ab0df0 | ||
|
|
f8b59dbd53 | ||
|
|
443c9749fb | ||
|
|
7bc2081138 | ||
|
|
0a01204bb3 | ||
|
|
aaf689bbec | ||
|
|
7922c08fe0 | ||
|
|
045109aaab | ||
|
|
de058c7889 | ||
|
|
39cb30308d | ||
|
|
a9e6b7115f | ||
|
|
ddcfe77897 | ||
|
|
f3824ec244 | ||
|
|
0c7e9a823c | ||
|
|
eb6aeee819 | ||
|
|
bcd983723f | ||
|
|
8fa628a11d | ||
|
|
4c504ede74 | ||
|
|
32a67801e5 | ||
|
|
b7d0e06f05 | ||
|
|
0fef608683 | ||
|
|
d28ffc4808 | ||
|
|
b03b762500 | ||
|
|
48478c6868 | ||
|
|
ca77a20b57 | ||
|
|
ac144d934f | ||
|
|
250a1e4da3 | ||
|
|
363ac54509 | ||
|
|
e3947fb09a | ||
|
|
c8bc3620d3 | ||
|
|
347c4c869d | ||
|
|
4b605d40d9 | ||
|
|
ef816d30ed | ||
|
|
99eab24b20 | ||
|
|
9f7e94ec85 | ||
|
|
641a829918 | ||
|
|
794c7950c8 | ||
|
|
d62ad47338 | ||
|
|
fdf52c1865 | ||
|
|
bdc05472bc | ||
|
|
47325cd4ae | ||
|
|
17e56d8357 | ||
|
|
3e2cc3c246 | ||
|
|
e4063102b7 | ||
|
|
3587418888 | ||
|
|
9802cfd56f | ||
|
|
12ddc7da57 | ||
|
|
571cd1c57a | ||
|
|
a820ccea5a | ||
|
|
9421bbd362 | ||
|
|
4c2a0d2053 | ||
|
|
b3ad50018d | ||
|
|
27d30e4286 | ||
|
|
3fb539460c | ||
|
|
61f0c55975 | ||
|
|
dfb55fb6a5 | ||
|
|
e716428895 | ||
|
|
87bb1b956b | ||
|
|
b2e419654b | ||
|
|
e109be4b57 | ||
|
|
0fd1a575a9 | ||
|
|
f0bf61bbf3 | ||
|
|
6d1d47a918 | ||
|
|
aef11b7471 | ||
|
|
b5d80679d8 | ||
|
|
dcd81ab4b3 | ||
|
|
ccc7c1b9b7 | ||
|
|
88a3fda514 | ||
|
|
22e33519c8 | ||
|
|
6255d8b493 | ||
|
|
0d16e0f0c8 | ||
|
|
c30233d9c7 | ||
|
|
4a07327dab | ||
|
|
cc39c26132 | ||
|
|
9f725f99ca | ||
|
|
4cbeb5ee22 | ||
|
|
8e4d7c0715 | ||
|
|
6790b8655a | ||
|
|
fabf05977a | ||
|
|
26ce8032eb | ||
|
|
d5bafc5e9f | ||
|
|
ce4ecb711b | ||
|
|
4734530ce2 | ||
|
|
1d7bae6b26 | ||
|
|
e385e81a20 | ||
|
|
25516fead9 | ||
|
|
f57f0e17ab | ||
|
|
56ad3ea9aa | ||
|
|
1a2544d30a | ||
|
|
6cd1f3f262 | ||
|
|
275f5bc796 | ||
|
|
c42ec27a4a | ||
|
|
6556e5eb52 | ||
|
|
da39e9f96a | ||
|
|
5878e7f839 | ||
|
|
802cfb59d5 | ||
|
|
2d74a6b10f | ||
|
|
34e82de8c8 | ||
|
|
9e591d21d0 | ||
|
|
890b96f1e9 | ||
|
|
5a29834555 | ||
|
|
5155e7a6ac | ||
|
|
1845665306 | ||
|
|
ed4bae064d | ||
|
|
b72fddf7f4 | ||
|
|
22491601ba | ||
|
|
638f8275aa | ||
|
|
fc16c4500d | ||
|
|
ec01aa45b9 | ||
|
|
8ba830f91f | ||
|
|
d6841e6d9d | ||
|
|
b8b48afc82 | ||
|
|
e307579d49 | ||
|
|
3ed46c50cc | ||
|
|
c0bbb6c4fa | ||
|
|
fe2f83e878 | ||
|
|
b3369cd516 | ||
|
|
857a8ca2bb | ||
|
|
37f91690f1 | ||
|
|
b904427087 | ||
|
|
57db47ac18 | ||
|
|
6360e4497d | ||
|
|
2e873d3e6d | ||
|
|
336de4b1b1 | ||
|
|
34953e8266 | ||
|
|
dae5bd53b7 | ||
|
|
a324f9805f | ||
|
|
32d5300682 | ||
|
|
fe74bd1b2c | ||
|
|
235f7c5bd1 | ||
|
|
fd9db053c0 | ||
|
|
ac24b615c3 | ||
|
|
44782c59a5 | ||
|
|
374f02c725 | ||
|
|
1e12e7ca90 | ||
|
|
fb8af71f25 | ||
|
|
283d878177 | ||
|
|
a665b76f8f | ||
|
|
8fcde092c7 | ||
|
|
40c33a21eb | ||
|
|
ab42965aa2 | ||
|
|
4132505313 | ||
|
|
97f8e4ac8d | ||
|
|
82ef80cf60 | ||
|
|
05f71383f9 | ||
|
|
ee54d21b89 | ||
|
|
7c88329354 | ||
|
|
2f7c97f25a | ||
|
|
3af2257345 | ||
|
|
7d01946fef | ||
|
|
257784e277 | ||
|
|
f1402522b5 | ||
|
|
20ceae2655 | ||
|
|
9681ec3e10 | ||
|
|
d5ffd8abac | ||
|
|
d73e183c89 | ||
|
|
d12db0419c | ||
|
|
c564a0963c | ||
|
|
4b61e864e7 | ||
|
|
3db26f1d2b | ||
|
|
aba47907ca | ||
|
|
ca3dfe2b35 | ||
|
|
4714c9b380 | ||
|
|
552f9483cb | ||
|
|
a77b7aa817 | ||
|
|
3bf4cf28f8 | ||
|
|
b1ac2ff2f2 | ||
|
|
46e33a2979 | ||
|
|
a306c5327c | ||
|
|
2b2f745248 | ||
|
|
327763cc82 | ||
|
|
f07e59d63f | ||
|
|
e9e76954b2 | ||
|
|
41eeed5f35 | ||
|
|
7593a18a19 | ||
|
|
ea65f65b37 | ||
|
|
c701ad6749 | ||
|
|
7e9dd65f8b | ||
|
|
cee1575a6c | ||
|
|
62e9d259b2 | ||
|
|
b3b7579f84 | ||
|
|
ffced21893 | ||
|
|
2a5fffaee4 | ||
|
|
41887e660b | ||
|
|
39010238b9 | ||
|
|
b991895c61 | ||
|
|
b269161276 | ||
|
|
96729baa9f | ||
|
|
3685626187 | ||
|
|
50c0bc6879 | ||
|
|
08aa6ee82d | ||
|
|
84889d9dc5 | ||
|
|
89248cf60a | ||
|
|
01bc02214c | ||
|
|
a7a2499bc7 | ||
|
|
344658edb0 | ||
|
|
46e436b599 | ||
|
|
23a24973eb | ||
|
|
c8e22bdb44 | ||
|
|
d9a4482393 | ||
|
|
501e7456c0 | ||
|
|
6c80ddcb14 | ||
|
|
87865be9f4 | ||
|
|
240f425c46 | ||
|
|
1de46c68d7 | ||
|
|
ce879e115f | ||
|
|
cb8167b31a | ||
|
|
96f8a806a6 | ||
|
|
fb816b7ab5 | ||
|
|
bdf3798c7a | ||
|
|
1df7f6c2c7 | ||
|
|
a2cf5b0889 | ||
|
|
d91330d83d | ||
|
|
c79f3aa101 | ||
|
|
b7376779fb | ||
|
|
2f17106b68 | ||
|
|
f32c550dbe | ||
|
|
bdeb195bfb | ||
|
|
583f47d24d | ||
|
|
d85c31e112 | ||
|
|
97dafa6425 | ||
|
|
5998011985 | ||
|
|
73e76fe468 | ||
|
|
4c3a7d0248 | ||
|
|
dee4d3b130 | ||
|
|
c05ffff629 | ||
|
|
6abe3047ec | ||
|
|
89e682ba9c | ||
|
|
f715e3186a | ||
|
|
fe3cdd8d1b | ||
|
|
440d253335 | ||
|
|
3268b20333 | ||
|
|
e0c5e742ad | ||
|
|
0a364b32ed | ||
|
|
c0acc8d825 | ||
|
|
c50b7d759c | ||
|
|
d4658837e2 | ||
|
|
1d221f8166 | ||
|
|
ebe0c6a88c | ||
|
|
0c6a40f5b5 | ||
|
|
64da2647a6 | ||
|
|
f0841b38cd | ||
|
|
4924f34287 | ||
|
|
5ba6ddcecf | ||
|
|
fb24c68b9c | ||
|
|
509fbaee1c | ||
|
|
815a22bd22 | ||
|
|
6b8a5870ba | ||
|
|
83025fb97d | ||
|
|
581b372c6a | ||
|
|
43756a2d59 | ||
|
|
64a7cdf372 | ||
|
|
9029c0fdad | ||
|
|
afe1467ddf | ||
|
|
03ed3fe43f | ||
|
|
84c11b08fa | ||
|
|
161d75dd22 | ||
|
|
1253177ae4 | ||
|
|
0f99f113e3 | ||
|
|
c0f2187310 | ||
|
|
d0d6215550 | ||
|
|
759386e37e | ||
|
|
4c8d8c21dc | ||
|
|
e32be091a4 | ||
|
|
cc442d964b | ||
|
|
e55caef0d2 | ||
|
|
c7a3fcd426 | ||
|
|
224d86802e | ||
|
|
8415a0c8ba | ||
|
|
02bfa42736 | ||
|
|
0115368649 | ||
|
|
7618c96c29 | ||
|
|
28e51740c6 | ||
|
|
1c9a87d50d | ||
|
|
209d39a460 | ||
|
|
d7a992ba83 | ||
|
|
1bd388188b | ||
|
|
05bbfd58a8 | ||
|
|
c99b1772ed | ||
|
|
46b03e79a4 | ||
|
|
787f98c5f2 | ||
|
|
2c92d9a709 | ||
|
|
14d7f2a797 | ||
|
|
4534bb8861 | ||
|
|
bf43816b66 | ||
|
|
a1dded3c27 | ||
|
|
26f025a409 | ||
|
|
00f20a11b5 | ||
|
|
22e1159736 | ||
|
|
6eea0a1fc6 | ||
|
|
95d2085cc4 | ||
|
|
495a7c95a1 | ||
|
|
64bc8f74be | ||
|
|
8bff6a1abe | ||
|
|
ed1be0d4e7 | ||
|
|
d4bd5f24c6 | ||
|
|
f332cdacf1 | ||
|
|
46ec078501 | ||
|
|
9201312737 | ||
|
|
178e3f1856 | ||
|
|
4b7e52c76f | ||
|
|
127818f9b7 | ||
|
|
6ca1640659 | ||
|
|
2d53eb7667 | ||
|
|
08c6e601b8 | ||
|
|
ffeda3f25a | ||
|
|
8027c577bc | ||
|
|
765189b86e | ||
|
|
fed6376e26 | ||
|
|
a1e19b4905 | ||
|
|
46870456ac | ||
|
|
f5761daa61 | ||
|
|
46eb14dc96 | ||
|
|
87a06c0086 | ||
|
|
b40c439d33 | ||
|
|
74410487aa | ||
|
|
9ebde652dc | ||
|
|
abb86e16f0 | ||
|
|
cd80ca6024 | ||
|
|
6fe80c4111 | ||
|
|
51da7bad8c | ||
|
|
f863386f39 | ||
|
|
e68eb726d2 | ||
|
|
44d9950e8c | ||
|
|
8a82048c12 | ||
|
|
1f54b33961 | ||
|
|
dc7aee1974 | ||
|
|
4d4d9abe76 | ||
|
|
aa41da1318 | ||
|
|
ef435d9deb | ||
|
|
88d1258e83 | ||
|
|
757b6a214c | ||
|
|
7c2e0fa627 | ||
|
|
ba2d39e683 | ||
|
|
aad9e4e8d3 | ||
|
|
67ec0b5988 | ||
|
|
ee3259d13e | ||
|
|
398b1f86ce | ||
|
|
f938ce82d9 | ||
|
|
70375d5227 | ||
|
|
d77d504d01 | ||
|
|
bd72f6117b | ||
|
|
bbea205a9c | ||
|
|
2ecd2eadf7 | ||
|
|
c8225e49b1 | ||
|
|
9f108391ae | ||
|
|
33adcd3903 | ||
|
|
5ddbe54310 | ||
|
|
2d415b6ce8 | ||
|
|
aa6a5d52dd | ||
|
|
8fb5dc75ef | ||
|
|
03fa9965c5 | ||
|
|
7152cdc87f | ||
|
|
d712b2ba54 | ||
|
|
c06774acb5 | ||
|
|
88030dbce7 | ||
|
|
773ac433ce | ||
|
|
771c418de3 | ||
|
|
1652da8e9d | ||
|
|
1d533d2924 | ||
|
|
5cab561f12 | ||
|
|
56e3ba4578 | ||
|
|
97acd989a2 | ||
|
|
8eaeb7bc35 | ||
|
|
c6b172aef2 | ||
|
|
120ace5cef | ||
|
|
47d17342ca | ||
|
|
478ecb80fd | ||
|
|
6d095bdf7c | ||
|
|
bf314f30d5 | ||
|
|
af4184e743 | ||
|
|
4785001548 | ||
|
|
780df9819b | ||
|
|
d917952615 | ||
|
|
fd6a5d8df3 | ||
|
|
01b64bc655 | ||
|
|
ed980e0e73 | ||
|
|
a6c3607897 | ||
|
|
45967992fb | ||
|
|
c83caa9686 | ||
|
|
f440de2446 | ||
|
|
0a93ad5430 | ||
|
|
473023d146 | ||
|
|
fa7f580053 | ||
|
|
3f5dd45310 | ||
|
|
119289040f | ||
|
|
d8d0f87ad6 | ||
|
|
b42b6ae1c5 | ||
|
|
6d531cdc29 | ||
|
|
b61c257124 | ||
|
|
5a2c206cab | ||
|
|
74fd55a3e8 | ||
|
|
017703f05d | ||
|
|
2b50734d0b | ||
|
|
26006418a8 | ||
|
|
dd665c7e9e | ||
|
|
9597a383e8 | ||
|
|
081f3689b1 | ||
|
|
8b3677967d | ||
|
|
323886cdda | ||
|
|
da479908e7 | ||
|
|
345c5c5eb7 | ||
|
|
a121d4c568 | ||
|
|
f277b5c9a5 | ||
|
|
1ce43e323d | ||
|
|
0a8c218b8a | ||
|
|
edb28d6a47 | ||
|
|
c3c81caf4b | ||
|
|
d2bea2692c | ||
|
|
c1afd513b7 | ||
|
|
9dd5b611c7 | ||
|
|
26be3a5450 | ||
|
|
b8369ad3f0 | ||
|
|
6f20afeba9 | ||
|
|
d45283c55e | ||
|
|
164407bc83 | ||
|
|
dc0ff2eee8 | ||
|
|
6fdc35e379 | ||
|
|
4970d143b0 | ||
|
|
141cd6853c | ||
|
|
e1ee3474bf | ||
|
|
7129a08e0b | ||
|
|
49796090fa | ||
|
|
ede37f26f7 | ||
|
|
ddc3dbaa87 | ||
|
|
63f126a528 | ||
|
|
389d36e4bd | ||
|
|
6cf5f204c5 | ||
|
|
d6afca38c2 | ||
|
|
dd337f3526 | ||
|
|
c4d6e04e4b | ||
|
|
4c63609749 | ||
|
|
4702aa496a | ||
|
|
1357ef295e | ||
|
|
9aeb9849fb | ||
|
|
efbeba3bb9 | ||
|
|
f17bb1a852 | ||
|
|
ddc6138dbf | ||
|
|
5c514b36dd | ||
|
|
8067bc3863 | ||
|
|
efd2357d5b | ||
|
|
c69974f460 | ||
|
|
c1259aacab | ||
|
|
27160be639 | ||
|
|
d1973a040f | ||
|
|
5adcaa3487 | ||
|
|
b832c42585 | ||
|
|
0858017085 | ||
|
|
bb1f51e5f0 | ||
|
|
19cba46b38 | ||
|
|
2321ed64bc | ||
|
|
1f098633e2 | ||
|
|
2139e4455a | ||
|
|
3dcba3bf15 | ||
|
|
31bb1ada0a | ||
|
|
9d1101c727 | ||
|
|
8c41e6c720 | ||
|
|
816cb44cc2 | ||
|
|
352d7071f7 | ||
|
|
44c300bfef | ||
|
|
be6c6ee93c | ||
|
|
0cf83c2047 | ||
|
|
ec129f5778 | ||
|
|
4c1d2f8c86 | ||
|
|
90fb83b95e | ||
|
|
59cc2ac736 | ||
|
|
ee4ca5bd2c | ||
|
|
6b437701a8 | ||
|
|
66234a73ba | ||
|
|
04e7a81b1e | ||
|
|
fa30ba29c9 | ||
|
|
a1c3d57013 | ||
|
|
27f32621ab | ||
|
|
93db3d42b7 | ||
|
|
8a07d241ff | ||
|
|
8f6b49877f | ||
|
|
d290445048 | ||
|
|
1a7cbfd6ac | ||
|
|
47e182524f | ||
|
|
bea721349a | ||
|
|
0646056751 | ||
|
|
678c66f50c | ||
|
|
607543e4e7 | ||
|
|
563174383a | ||
|
|
d3ac01445e | ||
|
|
58485fc1f1 | ||
|
|
07d6b83154 | ||
|
|
8182396454 | ||
|
|
9324580c87 | ||
|
|
d8114012bb | ||
|
|
c9171b8682 | ||
|
|
82f267f0c5 | ||
|
|
f8e8653480 | ||
|
|
192c7827c9 | ||
|
|
13f10f6a98 | ||
|
|
074330707c | ||
|
|
8efab3d4be | ||
|
|
8b38367e2b | ||
|
|
b8e5ffaf31 | ||
|
|
4aad872d71 | ||
|
|
5884f7343a | ||
|
|
c49891dcce | ||
|
|
42b58cddbd | ||
|
|
f5e5419cb6 | ||
|
|
6a1d143f9f | ||
|
|
24484d5e51 | ||
|
|
46db263088 | ||
|
|
6f3b01f3dc | ||
|
|
b321501476 | ||
|
|
b447e1f766 | ||
|
|
898f5ac547 | ||
|
|
078ba2dec0 | ||
|
|
fa60ec294e | ||
|
|
7273b501f1 | ||
|
|
0acf9662a4 | ||
|
|
a3b3e044f5 | ||
|
|
6c7a6a7811 | ||
|
|
ddbc1d260c | ||
|
|
af7944ef42 | ||
|
|
4c0bfd8905 | ||
|
|
c7ac9502bd | ||
|
|
1c7f2ad5cc | ||
|
|
1a856599cb | ||
|
|
a31f8a9446 | ||
|
|
eb4e72c754 | ||
|
|
67f4e9c817 | ||
|
|
c0fc220298 | ||
|
|
0e3b08d493 | ||
|
|
5d02760d23 | ||
|
|
cf8738f9f6 | ||
|
|
c868e4bbdd | ||
|
|
3285e0ddc8 | ||
|
|
b6c6dc03a9 | ||
|
|
62c0dbb876 | ||
|
|
704d53e589 | ||
|
|
4643c71e75 | ||
|
|
dede4f379f | ||
|
|
1a4d841a26 | ||
|
|
ced15e27c1 | ||
|
|
14e8c098c8 | ||
|
|
98ceee5d28 | ||
|
|
aaeb2b6938 | ||
|
|
6e3a5ca7ca | ||
|
|
291b033dbf | ||
|
|
8bded032df | ||
|
|
a1bb755123 | ||
|
|
abc7848073 | ||
|
|
afd43687f2 | ||
|
|
2ad27044a6 | ||
|
|
b0b62c6ac3 | ||
|
|
00800785d4 | ||
|
|
5f51fbc93d | ||
|
|
884fb5736c | ||
|
|
9fd0b53b02 | ||
|
|
48b9475bb6 | ||
|
|
4e5120ff71 | ||
|
|
aafe50c30e | ||
|
|
b1ca9a4fc0 | ||
|
|
0f81a994fe | ||
|
|
1f5ca28596 | ||
|
|
0145c4fb5f | ||
|
|
d03755859f | ||
|
|
1dcde66839 | ||
|
|
79b8ef3a53 | ||
|
|
b8d8acd3fd | ||
|
|
2e18f077c8 | ||
|
|
fb01814384 | ||
|
|
7dcb54fb58 | ||
|
|
69877de0d0 | ||
|
|
2248d2e012 | ||
|
|
de319b9ae8 | ||
|
|
6b2a703b35 | ||
|
|
a94f02e463 | ||
|
|
f8702e2038 | ||
|
|
23e597eb25 | ||
|
|
04f5768c76 | ||
|
|
49a2f2c926 | ||
|
|
ad83f83f2c | ||
|
|
9da909dd57 | ||
|
|
d85d34f3dd | ||
|
|
122b535393 | ||
|
|
5416badde1 | ||
|
|
9f1bdc7c83 | ||
|
|
ac8e7e16c2 | ||
|
|
d335318496 | ||
|
|
5eaafc5936 | ||
|
|
7ba7a61bb8 | ||
|
|
dfb2734368 | ||
|
|
6a450f45e1 | ||
|
|
f7e81f84db | ||
|
|
79932ee2f2 | ||
|
|
8660f00917 | ||
|
|
72e173d925 | ||
|
|
79445e993b | ||
|
|
227f3bae18 | ||
|
|
88911200c2 | ||
|
|
92c2aca480 | ||
|
|
8d7cf7960a | ||
|
|
d1f6f132d6 | ||
|
|
8bdeca9f0a | ||
|
|
67f98145bb | ||
|
|
612cf70560 | ||
|
|
a740f32e4d | ||
|
|
cdbc1a07be | ||
|
|
49fa7c01d4 | ||
|
|
3ce6229d34 | ||
|
|
24321f6feb | ||
|
|
b5db9db453 | ||
|
|
cb8b896230 | ||
|
|
0938ab654a | ||
|
|
163cc5b873 | ||
|
|
d67cefdf3a | ||
|
|
8e2cc7e3db | ||
|
|
e136b4b4db | ||
|
|
7e502ac477 | ||
|
|
83ded37cbc | ||
|
|
0b43183616 | ||
|
|
ec9386acfe | ||
|
|
8bf43f5f22 | ||
|
|
007fc34a23 | ||
|
|
2c37a99332 | ||
|
|
1bc650a19c | ||
|
|
b431487435 | ||
|
|
3da9a67162 | ||
|
|
267a950435 | ||
|
|
b86cb1f7b5 | ||
|
|
19319356d7 | ||
|
|
dfa6a7c497 | ||
|
|
fb87c22359 | ||
|
|
590486fa72 | ||
|
|
593532cb5a | ||
|
|
be7ee49701 | ||
|
|
1ae3e2a7f4 | ||
|
|
6eda02f208 | ||
|
|
20ce664068 | ||
|
|
2b395d3160 | ||
|
|
2eb9a4b72e | ||
|
|
ad1f255211 | ||
|
|
95d295bc6b | ||
|
|
c0c14cb09c | ||
|
|
96f7d6323a | ||
|
|
bfef6ab075 | ||
|
|
67a5b07a83 | ||
|
|
23745cd043 | ||
|
|
0e14639633 | ||
|
|
ebe3b48e0a | ||
|
|
2876902333 | ||
|
|
88c30795d3 | ||
|
|
ec00cd3222 | ||
|
|
0c36d7606b | ||
|
|
5de537001f | ||
|
|
13d84e75ad | ||
|
|
a50f6d7a2f | ||
|
|
e854d16646 | ||
|
|
9adb12846c | ||
|
|
f188cfd384 | ||
|
|
9a23778d50 | ||
|
|
eecb5770a5 | ||
|
|
b87a50726c | ||
|
|
d7ee71a811 | ||
|
|
b366407038 | ||
|
|
009cd9f840 | ||
|
|
0e964cb84c | ||
|
|
568f854f29 | ||
|
|
aa618e35e4 | ||
|
|
2470f21b4c | ||
|
|
ad8cc3c1e0 | ||
|
|
47fd7d8626 | ||
|
|
4a21ad566a | ||
|
|
da2a291208 | ||
|
|
62dfc15bd5 | ||
|
|
4969c2cf34 | ||
|
|
bcf5421541 | ||
|
|
1da5be6ffb | ||
|
|
273ba5fb00 | ||
|
|
36e5fb8bdc | ||
|
|
ff6da7ed79 | ||
|
|
962f1eecc0 | ||
|
|
5602ae6521 | ||
|
|
9feac717c8 | ||
|
|
f8824fa4b0 |
3
.gitignore
vendored
3
.gitignore
vendored
@@ -1,6 +1,7 @@
|
|||||||
*.pyc
|
*.pyc
|
||||||
/build
|
/build/
|
||||||
/examples/*.html.png
|
/examples/*.html.png
|
||||||
/examples/example-list.js
|
/examples/example-list.js
|
||||||
/examples/example-list.xml
|
/examples/example-list.xml
|
||||||
/node_modules/
|
/node_modules/
|
||||||
|
/dist/
|
||||||
|
|||||||
5
.npmignore
Normal file
5
.npmignore
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
*.pyc
|
||||||
|
/build/
|
||||||
|
/examples/*.html.png
|
||||||
|
/examples/example-list.js
|
||||||
|
/examples/example-list.xml
|
||||||
136
build.py
136
build.py
@@ -1,16 +1,58 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
|
||||||
from cStringIO import StringIO
|
from cStringIO import StringIO
|
||||||
|
import glob
|
||||||
import gzip
|
import gzip
|
||||||
import json
|
import json
|
||||||
|
import multiprocessing
|
||||||
import os
|
import os
|
||||||
import glob
|
|
||||||
import re
|
import re
|
||||||
import shutil
|
import shutil
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
from pake import Target
|
from pake import Target
|
||||||
from pake import ifind, main, output, rule, target, variables, virtual, which
|
from pake import ifind, main, output, rule, target, variables, virtual, which
|
||||||
|
from Queue import Queue
|
||||||
|
from threading import Thread
|
||||||
|
|
||||||
|
|
||||||
|
class ThreadPool:
|
||||||
|
"""A basic pool of worker threads"""
|
||||||
|
class Worker(Thread):
|
||||||
|
def __init__(self, tasks):
|
||||||
|
Thread.__init__(self)
|
||||||
|
self.tasks = tasks
|
||||||
|
self.daemon = True # threads will be killed on exit
|
||||||
|
self.start()
|
||||||
|
|
||||||
|
def run(self):
|
||||||
|
while True:
|
||||||
|
# block until a task is ready to be done
|
||||||
|
function, args, kargs = self.tasks.get()
|
||||||
|
try:
|
||||||
|
function(*args, **kargs)
|
||||||
|
except:
|
||||||
|
print("ERROR")
|
||||||
|
for count, thing in enumerate(args):
|
||||||
|
print '{0}. {1}'.format(count, thing)
|
||||||
|
print(sys.exc_info()[0])
|
||||||
|
print("ERROR")
|
||||||
|
self.tasks.errors = True
|
||||||
|
self.tasks.task_done()
|
||||||
|
|
||||||
|
def __init__(self, num_threads = multiprocessing.cpu_count() + 1):
|
||||||
|
self.tasks = Queue(num_threads)
|
||||||
|
self.tasks.errors = False
|
||||||
|
# create num_threads Workers, by default the number of CPUs + 1
|
||||||
|
for _ in range(num_threads): self.Worker(self.tasks)
|
||||||
|
|
||||||
|
def add_task(self, function, *args, **kargs):
|
||||||
|
self.tasks.put((function, args, kargs))
|
||||||
|
|
||||||
|
def wait_completion(self):
|
||||||
|
# wait for the queue to be empty
|
||||||
|
self.tasks.join()
|
||||||
|
return self.tasks.errors
|
||||||
|
|
||||||
|
|
||||||
if sys.platform == 'win32':
|
if sys.platform == 'win32':
|
||||||
@@ -75,9 +117,7 @@ EXAMPLES_SRC = [path
|
|||||||
for path in ifind('examples')
|
for path in ifind('examples')
|
||||||
if path.endswith('.js')
|
if path.endswith('.js')
|
||||||
if not path.endswith('.combined.js')
|
if not path.endswith('.combined.js')
|
||||||
if not path.startswith('examples/bootstrap')
|
|
||||||
if path != 'examples/Jugl.js'
|
if path != 'examples/Jugl.js'
|
||||||
if path != 'examples/jquery.min.js'
|
|
||||||
if path != 'examples/example-list.js']
|
if path != 'examples/example-list.js']
|
||||||
|
|
||||||
EXAMPLES_JSON = ['build/' + example.replace('.html', '.json')
|
EXAMPLES_JSON = ['build/' + example.replace('.html', '.json')
|
||||||
@@ -110,6 +150,7 @@ SRC = [path
|
|||||||
if path.endswith('.js')
|
if path.endswith('.js')
|
||||||
if path not in SHADER_SRC]
|
if path not in SHADER_SRC]
|
||||||
|
|
||||||
|
NPM_INSTALL = 'build/npm-install-timestamp'
|
||||||
|
|
||||||
def report_sizes(t):
|
def report_sizes(t):
|
||||||
stringio = StringIO()
|
stringio = StringIO()
|
||||||
@@ -140,18 +181,25 @@ virtual('check', 'lint', 'build/ol.js', 'test')
|
|||||||
virtual('todo', 'fixme')
|
virtual('todo', 'fixme')
|
||||||
|
|
||||||
|
|
||||||
@target('build/ol.css', 'css/ol.css')
|
@target(NPM_INSTALL, 'package.json')
|
||||||
|
def npm_install(t):
|
||||||
|
t.run('npm', 'install')
|
||||||
|
t.touch()
|
||||||
|
|
||||||
|
|
||||||
|
@target('build/ol.css', 'css/ol.css', NPM_INSTALL)
|
||||||
def build_ol_css(t):
|
def build_ol_css(t):
|
||||||
t.output('%(CLEANCSS)s', 'css/ol.css')
|
t.output('%(CLEANCSS)s', 'css/ol.css')
|
||||||
|
|
||||||
|
|
||||||
@target('build/ol.js', SRC, SHADER_SRC, 'config/ol.json')
|
@target('build/ol.js', SRC, SHADER_SRC, 'config/ol.json', NPM_INSTALL)
|
||||||
def build_ol_new_js(t):
|
def build_ol_new_js(t):
|
||||||
t.run('node', 'tasks/build.js', 'config/ol.json', 'build/ol.js')
|
t.run('node', 'tasks/build.js', 'config/ol.json', 'build/ol.js')
|
||||||
report_sizes(t)
|
report_sizes(t)
|
||||||
|
|
||||||
|
|
||||||
@target('build/ol-debug.js', SRC, SHADER_SRC, 'config/ol-debug.json')
|
@target('build/ol-debug.js', SRC, SHADER_SRC, 'config/ol-debug.json',
|
||||||
|
NPM_INSTALL)
|
||||||
def build_ol_debug_js(t):
|
def build_ol_debug_js(t):
|
||||||
t.run('node', 'tasks/build.js', 'config/ol-debug.json', 'build/ol-debug.js')
|
t.run('node', 'tasks/build.js', 'config/ol-debug.json', 'build/ol-debug.js')
|
||||||
report_sizes(t)
|
report_sizes(t)
|
||||||
@@ -200,7 +248,7 @@ def examples_examples_list_js(t):
|
|||||||
|
|
||||||
|
|
||||||
@target('build/examples/all.combined.js', 'build/examples/all.js',
|
@target('build/examples/all.combined.js', 'build/examples/all.js',
|
||||||
SRC, SHADER_SRC, 'config/examples-all.json')
|
SRC, SHADER_SRC, 'config/examples-all.json', NPM_INSTALL)
|
||||||
def build_examples_all_combined_js(t):
|
def build_examples_all_combined_js(t):
|
||||||
t.run('node', 'tasks/build.js', 'config/examples-all.json',
|
t.run('node', 'tasks/build.js', 'config/examples-all.json',
|
||||||
'build/examples/all.combined.js')
|
'build/examples/all.combined.js')
|
||||||
@@ -215,30 +263,47 @@ def build_examples_all_js(t):
|
|||||||
@rule(r'\Abuild/examples/(?P<id>.*).json\Z')
|
@rule(r'\Abuild/examples/(?P<id>.*).json\Z')
|
||||||
def examples_star_json(name, match):
|
def examples_star_json(name, match):
|
||||||
def action(t):
|
def action(t):
|
||||||
# It would make more sense to use olx.js as an input file here. We use
|
|
||||||
# it as an externs file instead to prevent "Cannot read property '*' of
|
# When compiling the ol3 code and the application code together it is
|
||||||
# undefined" error when running examples in "raw" or "whitespace" mode.
|
# better to use oli.js and olx.js files as "input" files rather than
|
||||||
# Note that we use the proper way in config/examples-all.json, which
|
# "externs" files. Indeed, externs prevent renaming, which is neither
|
||||||
# is only used to check the examples code using the compiler.
|
# necessary nor desirable in this case.
|
||||||
|
#
|
||||||
|
# oli.js and olx.js do not provide or require namespaces (using
|
||||||
|
# "goog.provide" or "goog.require"). For that reason, if they are
|
||||||
|
# specified as input files through the "src" property, then
|
||||||
|
# closure-util will exclude them when creating the dependencies graph.
|
||||||
|
# So the compile "js" property is used instead. With that property the
|
||||||
|
# oli.js and olx.js files are passed directly to the compiler. And by
|
||||||
|
# setting "manage_closure_dependencies" to "true" the compiler will not
|
||||||
|
# exclude them from its dependencies graph.
|
||||||
|
|
||||||
content = json.dumps({
|
content = json.dumps({
|
||||||
"exports": [],
|
"exports": [],
|
||||||
"src": ["src/**/*.js", "examples/%(id)s.js" % match.groupdict()],
|
"src": [
|
||||||
|
"src/**/*.js",
|
||||||
|
"build/ol.ext/*.js",
|
||||||
|
"examples/%(id)s.js" % match.groupdict()],
|
||||||
"compile": {
|
"compile": {
|
||||||
|
"js": [
|
||||||
|
"externs/olx.js",
|
||||||
|
"externs/oli.js",
|
||||||
|
],
|
||||||
"externs": [
|
"externs": [
|
||||||
"externs/bingmaps.js",
|
"externs/bingmaps.js",
|
||||||
"externs/bootstrap.js",
|
"externs/bootstrap.js",
|
||||||
"externs/closure-compiler.js",
|
"externs/closure-compiler.js",
|
||||||
"externs/example.js",
|
"externs/example.js",
|
||||||
|
"externs/fastclick.js",
|
||||||
"externs/geojson.js",
|
"externs/geojson.js",
|
||||||
"externs/jquery-1.7.js",
|
"externs/jquery-1.9.js",
|
||||||
"externs/oli.js",
|
|
||||||
"externs/olx.js",
|
|
||||||
"externs/proj4js.js",
|
"externs/proj4js.js",
|
||||||
"externs/tilejson.js",
|
"externs/tilejson.js",
|
||||||
"externs/topojson.js",
|
"externs/topojson.js",
|
||||||
"externs/vbarray.js"
|
"externs/vbarray.js"
|
||||||
],
|
],
|
||||||
"define": [
|
"define": [
|
||||||
|
"goog.array.ASSUME_NATIVE_FUNCTIONS=true",
|
||||||
"goog.dom.ASSUME_STANDARDS_MODE=true",
|
"goog.dom.ASSUME_STANDARDS_MODE=true",
|
||||||
"goog.json.USE_NATIVE_JSON=true",
|
"goog.json.USE_NATIVE_JSON=true",
|
||||||
"goog.DEBUG=false"
|
"goog.DEBUG=false"
|
||||||
@@ -274,23 +339,27 @@ def examples_star_json(name, match):
|
|||||||
"tweakValidation",
|
"tweakValidation",
|
||||||
"undefinedNames",
|
"undefinedNames",
|
||||||
"undefinedVars",
|
"undefinedVars",
|
||||||
"unknownDefines",
|
|
||||||
"uselessCode",
|
"uselessCode",
|
||||||
"violatedModuleDep",
|
"violatedModuleDep",
|
||||||
"visibility"
|
"visibility"
|
||||||
],
|
],
|
||||||
|
"jscomp_off": [
|
||||||
|
"unknownDefines"
|
||||||
|
],
|
||||||
"extra_annotation_name": [
|
"extra_annotation_name": [
|
||||||
"api", "observable"
|
"api", "observable"
|
||||||
],
|
],
|
||||||
"compilation_level": "ADVANCED",
|
"compilation_level": "ADVANCED",
|
||||||
"output_wrapper": "// OpenLayers 3. See http://ol3.js.org/\n(function(){%output%})();",
|
"warning_level": "VERBOSE",
|
||||||
|
"output_wrapper": "(function(){%output%})();",
|
||||||
"use_types_for_optimization": True,
|
"use_types_for_optimization": True,
|
||||||
"manage_closure_dependencies": True
|
"manage_closure_dependencies": True
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
with open(t.name, 'wb') as f:
|
with open(t.name, 'wb') as f:
|
||||||
f.write(content)
|
f.write(content)
|
||||||
return Target(name, action=action, dependencies=[__file__])
|
return Target(name, action=action,
|
||||||
|
dependencies=[__file__, NPM_INSTALL])
|
||||||
|
|
||||||
|
|
||||||
@rule(r'\Abuild/examples/(?P<id>.*).combined.js\Z')
|
@rule(r'\Abuild/examples/(?P<id>.*).combined.js\Z')
|
||||||
@@ -301,11 +370,12 @@ def examples_star_combined_js(name, match):
|
|||||||
report_sizes(t)
|
report_sizes(t)
|
||||||
dependencies = [SRC, SHADER_SRC,
|
dependencies = [SRC, SHADER_SRC,
|
||||||
'examples/%(id)s.js' % match.groupdict(),
|
'examples/%(id)s.js' % match.groupdict(),
|
||||||
'build/examples/%(id)s.json' % match.groupdict()]
|
'build/examples/%(id)s.json' % match.groupdict(),
|
||||||
|
NPM_INSTALL]
|
||||||
return Target(name, action=action, dependencies=dependencies)
|
return Target(name, action=action, dependencies=dependencies)
|
||||||
|
|
||||||
|
|
||||||
@target('serve', 'examples')
|
@target('serve', 'examples', NPM_INSTALL)
|
||||||
def serve(t):
|
def serve(t):
|
||||||
t.run('node', 'tasks/serve.js')
|
t.run('node', 'tasks/serve.js')
|
||||||
|
|
||||||
@@ -323,11 +393,10 @@ def build_lint_src_timestamp(t):
|
|||||||
t.newer(t.dependencies))
|
t.newer(t.dependencies))
|
||||||
t.touch()
|
t.touch()
|
||||||
|
|
||||||
|
|
||||||
virtual('jshint', 'build/jshint-timestamp')
|
virtual('jshint', 'build/jshint-timestamp')
|
||||||
|
|
||||||
@target('build/jshint-timestamp', SRC, EXAMPLES_SRC, SPEC, TASKS,
|
@target('build/jshint-timestamp', SRC, EXAMPLES_SRC, SPEC, TASKS,
|
||||||
precious=True)
|
NPM_INSTALL, precious=True)
|
||||||
def build_jshint_timestamp(t):
|
def build_jshint_timestamp(t):
|
||||||
t.run(variables.JSHINT, '--verbose', t.newer(t.dependencies))
|
t.run(variables.JSHINT, '--verbose', t.newer(t.dependencies))
|
||||||
t.touch()
|
t.touch()
|
||||||
@@ -533,7 +602,8 @@ virtual('apidoc', 'build/jsdoc-%(BRANCH)s-timestamp' % vars(variables))
|
|||||||
|
|
||||||
|
|
||||||
@target('build/jsdoc-%(BRANCH)s-timestamp' % vars(variables), 'host-resources',
|
@target('build/jsdoc-%(BRANCH)s-timestamp' % vars(variables), 'host-resources',
|
||||||
SRC, SHADER_SRC, ifind('config/jsdoc/api/template'))
|
SRC, SHADER_SRC, ifind('config/jsdoc/api/template'),
|
||||||
|
NPM_INSTALL)
|
||||||
def jsdoc_BRANCH_timestamp(t):
|
def jsdoc_BRANCH_timestamp(t):
|
||||||
t.run('%(JSDOC)s', 'config/jsdoc/api/index.md',
|
t.run('%(JSDOC)s', 'config/jsdoc/api/index.md',
|
||||||
'-c', 'config/jsdoc/api/conf.json',
|
'-c', 'config/jsdoc/api/conf.json',
|
||||||
@@ -601,15 +671,17 @@ def host_examples(t):
|
|||||||
t.cp('build/ol.js', 'build/ol-debug.js', build_dir)
|
t.cp('build/ol.js', 'build/ol-debug.js', build_dir)
|
||||||
t.cp('build/ol.css', css_dir)
|
t.cp('build/ol.css', css_dir)
|
||||||
t.cp('examples/index.html', 'examples/example-list.js',
|
t.cp('examples/index.html', 'examples/example-list.js',
|
||||||
'examples/example-list.xml', 'examples/Jugl.js',
|
'examples/example-list.xml', 'examples/Jugl.js', examples_dir)
|
||||||
'examples/jquery.min.js', examples_dir)
|
|
||||||
t.rm_rf('build/hosted/%(BRANCH)s/closure-library')
|
t.rm_rf('build/hosted/%(BRANCH)s/closure-library')
|
||||||
t.cp_r(closure_lib_path, 'build/hosted/%(BRANCH)s/closure-library')
|
t.cp_r(closure_lib_path, 'build/hosted/%(BRANCH)s/closure-library')
|
||||||
t.rm_rf('build/hosted/%(BRANCH)s/ol')
|
t.rm_rf('build/hosted/%(BRANCH)s/ol')
|
||||||
t.makedirs('build/hosted/%(BRANCH)s/ol')
|
t.makedirs('build/hosted/%(BRANCH)s/ol')
|
||||||
t.cp_r('src/ol', 'build/hosted/%(BRANCH)s/ol/ol')
|
t.cp_r('src/ol', 'build/hosted/%(BRANCH)s/ol/ol')
|
||||||
|
t.rm_rf('build/hosted/%(BRANCH)s/ol.ext')
|
||||||
|
t.cp_r('build/ol.ext', 'build/hosted/%(BRANCH)s/ol.ext')
|
||||||
t.run('%(PYTHON)s', closure_lib_path + '/closure/bin/build/depswriter.py',
|
t.run('%(PYTHON)s', closure_lib_path + '/closure/bin/build/depswriter.py',
|
||||||
'--root_with_prefix', 'src ../../../ol',
|
'--root_with_prefix', 'src ../../../ol',
|
||||||
|
'--root_with_prefix', 'build/ol.ext ../../../ol.ext',
|
||||||
'--root', 'build/hosted/%(BRANCH)s/closure-library/closure/goog',
|
'--root', 'build/hosted/%(BRANCH)s/closure-library/closure/goog',
|
||||||
'--root_with_prefix', 'build/hosted/%(BRANCH)s/closure-library/'
|
'--root_with_prefix', 'build/hosted/%(BRANCH)s/closure-library/'
|
||||||
'third_party ../../third_party',
|
'third_party ../../third_party',
|
||||||
@@ -621,13 +693,17 @@ def check_examples(t):
|
|||||||
examples = ['build/hosted/%(BRANCH)s/' + e
|
examples = ['build/hosted/%(BRANCH)s/' + e
|
||||||
for e in EXAMPLES
|
for e in EXAMPLES
|
||||||
if not open(e.replace('.html', '.js'), 'rU').readline().startswith('// NOCOMPILE')]
|
if not open(e.replace('.html', '.js'), 'rU').readline().startswith('// NOCOMPILE')]
|
||||||
all_examples = \
|
all_examples = [e + '?mode=advanced' for e in examples]
|
||||||
[e + '?mode=advanced' for e in examples]
|
# Run the examples checks in a pool of threads
|
||||||
|
pool = ThreadPool()
|
||||||
for example in all_examples:
|
for example in all_examples:
|
||||||
t.run('%(PHANTOMJS)s', 'bin/check-example.js', example)
|
pool.add_task(t.run, '%(PHANTOMJS)s', 'bin/check-example.js', example)
|
||||||
|
errors = pool.wait_completion()
|
||||||
|
if errors:
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
|
||||||
@target('test', phony=True)
|
@target('test', NPM_INSTALL, phony=True)
|
||||||
def test(t):
|
def test(t):
|
||||||
t.run('node', 'tasks/test.js')
|
t.run('node', 'tasks/test.js')
|
||||||
|
|
||||||
|
|||||||
234
changelog/v3.1.0.md
Normal file
234
changelog/v3.1.0.md
Normal file
@@ -0,0 +1,234 @@
|
|||||||
|
# 3.1.0
|
||||||
|
|
||||||
|
## Summary
|
||||||
|
|
||||||
|
The 3.1.0 release includes a whopping 214 merged pull requests since 3.0.0. Of note, the WebGL renderer [now supports point rendering](https://github.com/openlayers/ol3/pull/2967). You can use [UTFGrids for interaction](https://github.com/openlayers/ol3/pull/3015)! Styles can now specify [alternate geometries for rendering](https://github.com/openlayers/ol3/pull/3010). Library builds [can now be loaded](https://github.com/openlayers/ol3/pull/3039) with module loaders like Browserify or RequireJS. You can now symbolize point features with stars, squares, enneadecagons, or [any other regular(ish) polygon](https://github.com/openlayers/ol3/pull/2706). See the full list of [changes](#changes) below.
|
||||||
|
|
||||||
|
## Upgrade notes
|
||||||
|
|
||||||
|
The 3.1.0 release maintains a backwards-compatible API with the 3.0.0 release, so upgrades should be painless. Some special considerations below.
|
||||||
|
|
||||||
|
* If you are using a `ol.source.ImageStatic`, you no longer need to provide an `imageSize` option if you don't want any special scaling on your image (see [#2796](https://github.com/openlayers/ol3/pull/2796)).
|
||||||
|
|
||||||
|
* Instead of calling `obj.unByKey(key)` you can now call `ol.Observable.unByKey(key)` (see [#2794](https://github.com/openlayers/ol3/pull/2794)).
|
||||||
|
|
||||||
|
* If you were using `format.writeFeatures(features)`, note that this method returns a string for all feature formats. We considered the previous behavior a bug (see [#3003](https://github.com/openlayers/ol3/pull/3003)).
|
||||||
|
|
||||||
|
* The `obj.dispatchChangeEvent()` method is now spelled `obj.changed()`. This method is still unstable (see [#2684](https://github.com/openlayers/ol3/pull/2684)).
|
||||||
|
|
||||||
|
## Changes
|
||||||
|
|
||||||
|
* [#3076](https://github.com/openlayers/ol3/pull/3076) - Add script to standardize changelog creation. ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#3074](https://github.com/openlayers/ol3/pull/3074) - Remove misplaced function annotation. ([@fredj](https://github.com/fredj))
|
||||||
|
* [#3075](https://github.com/openlayers/ol3/pull/3075) - Remove unneeded undefined from ol.proj.ProjectionLike definitions (r=@tschaub) ([@bartvde](https://github.com/bartvde))
|
||||||
|
* [#3071](https://github.com/openlayers/ol3/pull/3071) - Add task for publishing to npm. ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#3070](https://github.com/openlayers/ol3/pull/3070) - Define goog and assign to global when generating UMD debug builds. ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#3068](https://github.com/openlayers/ol3/pull/3068) - Update pre-release version. ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#3039](https://github.com/openlayers/ol3/pull/3039) - Support for UMD builds. ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#3038](https://github.com/openlayers/ol3/pull/3038) - Update attribution CSS #2803 ([@acanimal](https://github.com/acanimal))
|
||||||
|
* [#3061](https://github.com/openlayers/ol3/pull/3061) - Add a renderBuffer option to ol.layer.Vector ([@elemoine](https://github.com/elemoine))
|
||||||
|
* [#3048](https://github.com/openlayers/ol3/pull/3048) - Add a drag-features example ([@elemoine](https://github.com/elemoine))
|
||||||
|
* [#3060](https://github.com/openlayers/ol3/pull/3060) - Update closure-library version ([@fredj](https://github.com/fredj))
|
||||||
|
* [#3058](https://github.com/openlayers/ol3/pull/3058) - Use an API function to extend the extent ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#3010](https://github.com/openlayers/ol3/pull/3010) - Allow styles to override feature geometries ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#3056](https://github.com/openlayers/ol3/pull/3056) - Reuse previousExtent_ local variable ([@fredj](https://github.com/fredj))
|
||||||
|
* [#3055](https://github.com/openlayers/ol3/pull/3055) - ol.tilecoord.createOrUpdate: add 'opt_' prefix to optional param ([@fredj](https://github.com/fredj))
|
||||||
|
* [#3044](https://github.com/openlayers/ol3/pull/3044) - Mark Image style constructor properties `@api` ([@gberaudo](https://github.com/gberaudo))
|
||||||
|
* [#3052](https://github.com/openlayers/ol3/pull/3052) - Add a testcase for parsing GML feature with only boundedBy ([@bartvde](https://github.com/bartvde))
|
||||||
|
* [#3051](https://github.com/openlayers/ol3/pull/3051) - Remove // NOCOMPILE from vector-wfs ([@elemoine](https://github.com/elemoine))
|
||||||
|
* [#2699](https://github.com/openlayers/ol3/pull/2699) - No need for featureNS and featureType to be quoted ([@bartvde](https://github.com/bartvde))
|
||||||
|
* [#3047](https://github.com/openlayers/ol3/pull/3047) - Move description above annotation to avoid JSDoc warnings. ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#2996](https://github.com/openlayers/ol3/pull/2996) - Add getter functions for points and angle in ol.style.RegularShape ([@bartvde](https://github.com/bartvde))
|
||||||
|
* [#3046](https://github.com/openlayers/ol3/pull/3046) - Need exportable constructor for constructor options in olx ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#3043](https://github.com/openlayers/ol3/pull/3043) - Use // NOCOMPILE for vector-wfs ([@elemoine](https://github.com/elemoine))
|
||||||
|
* [#3042](https://github.com/openlayers/ol3/pull/3042) - Print example name in check-examples exception ([@gberaudo](https://github.com/gberaudo))
|
||||||
|
* [#3032](https://github.com/openlayers/ol3/pull/3032) - Extension points for custom controls and interactions ([@elemoine](https://github.com/elemoine))
|
||||||
|
* [#3033](https://github.com/openlayers/ol3/pull/3033) - Allow custom mousemove conditions for Select interaction ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#3040](https://github.com/openlayers/ol3/pull/3040) - Transform the coordinates in place ([@fredj](https://github.com/fredj))
|
||||||
|
* [#3036](https://github.com/openlayers/ol3/pull/3036) - Respect geometry stride in modify interaction ([@tonio](https://github.com/tonio))
|
||||||
|
* [#3020](https://github.com/openlayers/ol3/pull/3020) - Correct error message from generate-info.js. ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#3037](https://github.com/openlayers/ol3/pull/3037) - Implement rotation for ol.style.RegularShape ([@bartvde](https://github.com/bartvde))
|
||||||
|
* [#3015](https://github.com/openlayers/ol3/pull/3015) - UTFGrid Support ([@klokantech](https://github.com/klokantech))
|
||||||
|
* [#3012](https://github.com/openlayers/ol3/pull/3012) - Failing tests in IE9 ([@bartvde](https://github.com/bartvde))
|
||||||
|
* [#3029](https://github.com/openlayers/ol3/pull/3029) - Update closure compiler and library ([@fredj](https://github.com/fredj))
|
||||||
|
* [#3031](https://github.com/openlayers/ol3/pull/3031) - Add missing maxZoom property in olx.view.FitGeometryOptions ([@fredj](https://github.com/fredj))
|
||||||
|
* [#3028](https://github.com/openlayers/ol3/pull/3028) - ol.format.WFS cleanup ([@fredj](https://github.com/fredj))
|
||||||
|
* [#3024](https://github.com/openlayers/ol3/pull/3024) - Add missing gmlFormat to olx.format.WFSOptions ([@fredj](https://github.com/fredj))
|
||||||
|
* [#3023](https://github.com/openlayers/ol3/pull/3023) - Change loader function return type ([@fredj](https://github.com/fredj))
|
||||||
|
* [#3021](https://github.com/openlayers/ol3/pull/3021) - Add missing properties in olx.control.AttributionOptions typedef ([@fredj](https://github.com/fredj))
|
||||||
|
* [#3013](https://github.com/openlayers/ol3/pull/3013) - Improve vector source clear() performance ([@gberaudo](https://github.com/gberaudo))
|
||||||
|
* [#3017](https://github.com/openlayers/ol3/pull/3017) - Use writeFeatures instead of writeFeaturesNode in GPX and KML example (r=@elemoine) ([@bartvde](https://github.com/bartvde))
|
||||||
|
* [#3014](https://github.com/openlayers/ol3/pull/3014) - Simplify hit detection code ([@elemoine](https://github.com/elemoine))
|
||||||
|
* [#3006](https://github.com/openlayers/ol3/pull/3006) - gml3.js and gml2.js don't follow file naming conventions ([@bartvde](https://github.com/bartvde))
|
||||||
|
* [#3003](https://github.com/openlayers/ol3/pull/3003) - The writeFeatures method should always return a string (r=@elemoine) ([@bartvde](https://github.com/bartvde))
|
||||||
|
* [#3011](https://github.com/openlayers/ol3/pull/3011) - opt_options may not be defined, use options ([@pagameba](https://github.com/pagameba))
|
||||||
|
* [#3009](https://github.com/openlayers/ol3/pull/3009) - Fix hit detection bug ([@elemoine](https://github.com/elemoine))
|
||||||
|
* [#3002](https://github.com/openlayers/ol3/pull/3002) - Passing options to RegularShape is mandatory ([@elemoine](https://github.com/elemoine))
|
||||||
|
* [#2967](https://github.com/openlayers/ol3/pull/2967) - Add support for drawing points with WebGL ([@camptocamp](https://github.com/camptocamp))
|
||||||
|
* [#2701](https://github.com/openlayers/ol3/pull/2701) - Writing GeoJSON does not respect the feature's geometryName ([@bartvde](https://github.com/bartvde))
|
||||||
|
* [#3000](https://github.com/openlayers/ol3/pull/3000) - Explain that return of ol.color.asArray should not be modified ([@bartvde](https://github.com/bartvde))
|
||||||
|
* [#2997](https://github.com/openlayers/ol3/pull/2997) - Use new demo GeoServer location ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#2976](https://github.com/openlayers/ol3/pull/2976) - Add an example to show off ol.style.RegularShape ([@bartvde](https://github.com/bartvde))
|
||||||
|
* [#2992](https://github.com/openlayers/ol3/pull/2992) - Add support for finding features at a given coordinates for vector tiles - fixes ([@pgiraud](https://github.com/pgiraud))
|
||||||
|
* [#2987](https://github.com/openlayers/ol3/pull/2987) - Image layer renderers use source projection if given and equivalent ([@kartverket](https://github.com/kartverket))
|
||||||
|
* [#2975](https://github.com/openlayers/ol3/pull/2975) - Use offsetX and offsetY if available ([@fredj](https://github.com/fredj))
|
||||||
|
* [#2973](https://github.com/openlayers/ol3/pull/2973) - Making GetTileCoordFor methods public avaible ([@s093294](https://github.com/s093294))
|
||||||
|
* [#2986](https://github.com/openlayers/ol3/pull/2986) - Add support for finding features at a given coordinates for vector tiles ([@pgiraud](https://github.com/pgiraud))
|
||||||
|
* [#2937](https://github.com/openlayers/ol3/pull/2937) - Clip layer rendering to limited extent. ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#2971](https://github.com/openlayers/ol3/pull/2971) - Two ol.source.TileVector fixes ([@elemoine](https://github.com/elemoine))
|
||||||
|
* [#2988](https://github.com/openlayers/ol3/pull/2988) - Correct olx.style.RegularShapeOptions definition (r=@elemoine) ([@bartvde](https://github.com/bartvde))
|
||||||
|
* [#2981](https://github.com/openlayers/ol3/pull/2981) - Use lineDash in ol.style.Circle's and ol.style.RegularShape's stroke (r=@fredj,@elemoine) ([@bartvde](https://github.com/bartvde))
|
||||||
|
* [#2982](https://github.com/openlayers/ol3/pull/2982) - Allow radius1 as an alias for radius in ol.style.RegularShape ([@bartvde](https://github.com/bartvde))
|
||||||
|
* [#2980](https://github.com/openlayers/ol3/pull/2980) - Export ol.source.TileVector#getFeatures in built mode ([@pgiraud](https://github.com/pgiraud))
|
||||||
|
* [#2979](https://github.com/openlayers/ol3/pull/2979) - Support OGC srs urns without an EPSG database version ([@bartvde](https://github.com/bartvde))
|
||||||
|
* [#2978](https://github.com/openlayers/ol3/pull/2978) - Fix zoom levels for the MapQuest Street layer ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#2889](https://github.com/openlayers/ol3/pull/2889) - Add GetFeatureInfo format ([@fgravin](https://github.com/fgravin))
|
||||||
|
* [#2965](https://github.com/openlayers/ol3/pull/2965) - Fix pan with select interaction in mousemove mode. ([@tonio](https://github.com/tonio))
|
||||||
|
* [#2960](https://github.com/openlayers/ol3/pull/2960) - LayerGroup extent should be used if extent not set on child layer ([@bartvde](https://github.com/bartvde))
|
||||||
|
* [#2956](https://github.com/openlayers/ol3/pull/2956) - Revert "Remove mousewheel event name workaround" ([@fredj](https://github.com/fredj))
|
||||||
|
* [#2959](https://github.com/openlayers/ol3/pull/2959) - Fix typo in selector ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#2895](https://github.com/openlayers/ol3/pull/2895) - Move font-family customization to layout.css ([@fredj](https://github.com/fredj))
|
||||||
|
* [#2896](https://github.com/openlayers/ol3/pull/2896) - Remove duplicated style parameter ([@kalinbas](https://github.com/kalinbas))
|
||||||
|
* [#2938](https://github.com/openlayers/ol3/pull/2938) - Additional image static docs. ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#2939](https://github.com/openlayers/ol3/pull/2939) - Make stability checkbox sticky. ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#2949](https://github.com/openlayers/ol3/pull/2949) - Add ol.ext to hosted dir ([@elemoine](https://github.com/elemoine))
|
||||||
|
* [#2943](https://github.com/openlayers/ol3/pull/2943) - Mark applyTransform api stable ([@fredj](https://github.com/fredj))
|
||||||
|
* [#2936](https://github.com/openlayers/ol3/pull/2936) - Fix unselection of selected features ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#2935](https://github.com/openlayers/ol3/pull/2935) - Fix jsdoc comment ([@geosense](https://github.com/geosense))
|
||||||
|
* [#2933](https://github.com/openlayers/ol3/pull/2933) - Fix compile warning ([@elemoine](https://github.com/elemoine))
|
||||||
|
* [#2931](https://github.com/openlayers/ol3/pull/2931) - Improvement to view docs ([@elemoine](https://github.com/elemoine))
|
||||||
|
* [#2906](https://github.com/openlayers/ol3/pull/2906) - Assume a latitude, longitude order for Polyline format ([@fredj](https://github.com/fredj))
|
||||||
|
* [#2927](https://github.com/openlayers/ol3/pull/2927) - Make it possible to programmatically finish drawing ([@elemoine](https://github.com/elemoine))
|
||||||
|
* [#2928](https://github.com/openlayers/ol3/pull/2928) - Do not rename handleMapBrowserEvent internally ([@elemoine](https://github.com/elemoine))
|
||||||
|
* [#2924](https://github.com/openlayers/ol3/pull/2924) - Readability rearangement in canvasmaprenderer.js ([@gberaudo](https://github.com/gberaudo))
|
||||||
|
* [#2911](https://github.com/openlayers/ol3/pull/2911) - List events fired in the navigation. ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#2921](https://github.com/openlayers/ol3/pull/2921) - Small feature overlay optimization ([@gberaudo](https://github.com/gberaudo))
|
||||||
|
* [#2897](https://github.com/openlayers/ol3/pull/2897) - Remove pointerup listener on controls ([@fredj](https://github.com/fredj))
|
||||||
|
* [#2912](https://github.com/openlayers/ol3/pull/2912) - jQuery externs update ([@fredj](https://github.com/fredj))
|
||||||
|
* [#2888](https://github.com/openlayers/ol3/pull/2888) - Element boundedBy must not be set as geometry field on GML reading ([@fgravin](https://github.com/fgravin))
|
||||||
|
* [#2903](https://github.com/openlayers/ol3/pull/2903) - Improved docs for icon options ([@elemoine](https://github.com/elemoine))
|
||||||
|
* [#2900](https://github.com/openlayers/ol3/pull/2900) - Allow build.js task to add header. ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#2893](https://github.com/openlayers/ol3/pull/2893) - Don't pass an object to goog.dom.createDom for the class name ([@fredj](https://github.com/fredj))
|
||||||
|
* [#2781](https://github.com/openlayers/ol3/pull/2781) - Use a standard title attribute for the control buttons ([@fredj](https://github.com/fredj))
|
||||||
|
* [#2852](https://github.com/openlayers/ol3/pull/2852) - Add missing space between class names ([@fredj](https://github.com/fredj))
|
||||||
|
* [#2891](https://github.com/openlayers/ol3/pull/2891) - Introduce a load function for image sources ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#2885](https://github.com/openlayers/ol3/pull/2885) - Add wrapX option to TileJSON source ([@elemoine](https://github.com/elemoine))
|
||||||
|
* [#2890](https://github.com/openlayers/ol3/pull/2890) - Use correct layer property names ([@elemoine](https://github.com/elemoine))
|
||||||
|
* [#2887](https://github.com/openlayers/ol3/pull/2887) - Explicitly pass coordinate dimension before transforming. ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#2886](https://github.com/openlayers/ol3/pull/2886) - Use ternary notation ([@elemoine](https://github.com/elemoine))
|
||||||
|
* [#2869](https://github.com/openlayers/ol3/pull/2869) - Export useful xml functions ([@tonio](https://github.com/tonio))
|
||||||
|
* [#2884](https://github.com/openlayers/ol3/pull/2884) - Make WKT methods throw errors instead of calling a method that throws. ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#2746](https://github.com/openlayers/ol3/pull/2746) - Add versioning for GML format ([@fgravin](https://github.com/fgravin))
|
||||||
|
* [#2882](https://github.com/openlayers/ol3/pull/2882) - Allow olx.source.WMTSOptions#requestEncoding to be a string ([@fredj](https://github.com/fredj))
|
||||||
|
* [#2881](https://github.com/openlayers/ol3/pull/2881) - Add default requestEncoding in documentation ([@fredj](https://github.com/fredj))
|
||||||
|
* [#2877](https://github.com/openlayers/ol3/pull/2877) - Remove FIXME in src/ol/structs/rbush.js ([@fredj](https://github.com/fredj))
|
||||||
|
* [#2870](https://github.com/openlayers/ol3/pull/2870) - Use bulk-insertion for addFeatures ([@tsauerwein](https://github.com/tsauerwein))
|
||||||
|
* [#2856](https://github.com/openlayers/ol3/pull/2856) - Allow layer source to be set. ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#2875](https://github.com/openlayers/ol3/pull/2875) - Avoid modifying `map.logos_` with each frame. ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#2874](https://github.com/openlayers/ol3/pull/2874) - Avoid shrinking logos. ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#2872](https://github.com/openlayers/ol3/pull/2872) - Remove the beforepropertychange event from ol.Object ([@fredj](https://github.com/fredj))
|
||||||
|
* [#2868](https://github.com/openlayers/ol3/pull/2868) - Remove doc about dispatching events. ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#2871](https://github.com/openlayers/ol3/pull/2871) - Make `npm install` a dependency of node based targets. ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#2867](https://github.com/openlayers/ol3/pull/2867) - Support for importing CommonJS style modules (like rbush). ([@openlayers](https://github.com/openlayers))
|
||||||
|
* [#2865](https://github.com/openlayers/ol3/pull/2865) - Add old value to property change events ([@elemoine](https://github.com/elemoine))
|
||||||
|
* [#2866](https://github.com/openlayers/ol3/pull/2866) - Cluster source calls loadFeatures on vector source ([@elemoine](https://github.com/elemoine))
|
||||||
|
* [#2864](https://github.com/openlayers/ol3/pull/2864) - Avoid mixed content in Bing Maps (r=@elemoine) ([@bartvde](https://github.com/bartvde))
|
||||||
|
* [#2855](https://github.com/openlayers/ol3/pull/2855) - Move touchstart preventDefault to ol.renderer.dom.Map ([@fredj](https://github.com/fredj))
|
||||||
|
* [#2690](https://github.com/openlayers/ol3/pull/2690) - Vector rendering with the DOM renderer ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#2859](https://github.com/openlayers/ol3/pull/2859) - Document exportable vector source symbols. ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#2857](https://github.com/openlayers/ol3/pull/2857) - Update the OSM attribution. ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#2847](https://github.com/openlayers/ol3/pull/2847) - Constrain center in zoomify example ([@elemoine](https://github.com/elemoine))
|
||||||
|
* [#2838](https://github.com/openlayers/ol3/pull/2838) - ol.source.WMTS now passes tileClass option to ol.source.TileImage ([@mike-mcgann](https://github.com/mike-mcgann))
|
||||||
|
* [#2821](https://github.com/openlayers/ol3/pull/2821) - Add ol.geom.Polygon.fromExtent ([@elemoine](https://github.com/elemoine))
|
||||||
|
* [#2835](https://github.com/openlayers/ol3/pull/2835) - Use correct Stamen URL for SSL. ([@j16sdiz](https://github.com/j16sdiz))
|
||||||
|
* [#2839](https://github.com/openlayers/ol3/pull/2839) - Dependency updates and new package name. ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#2840](https://github.com/openlayers/ol3/pull/2840) - Fewer point resolution tests. ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#2836](https://github.com/openlayers/ol3/pull/2836) - Give priority to feature's style instead of source's style ([@oterral](https://github.com/oterral))
|
||||||
|
* [#2834](https://github.com/openlayers/ol3/pull/2834) - Use ADVANCED instead of ADVANCED_OPTIMIZATIONS ([@fredj](https://github.com/fredj))
|
||||||
|
* [#2833](https://github.com/openlayers/ol3/pull/2833) - Avoid too many files open with graceful-fs@3.0.3. ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#2829](https://github.com/openlayers/ol3/pull/2829) - Zoom slider refactor. ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#2757](https://github.com/openlayers/ol3/pull/2757) - Clear the canvas on layer extent changes. ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#2796](https://github.com/openlayers/ol3/pull/2796) - Determine image size on load. ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#2825](https://github.com/openlayers/ol3/pull/2825) - Change comments for examples_star_json build target ([@elemoine](https://github.com/elemoine))
|
||||||
|
* [#2822](https://github.com/openlayers/ol3/pull/2822) - Remove obsolete comment ([@gingerik](https://github.com/gingerik))
|
||||||
|
* [#2769](https://github.com/openlayers/ol3/pull/2769) - OverviewMap control ([@adube](https://github.com/adube))
|
||||||
|
* [#2820](https://github.com/openlayers/ol3/pull/2820) - Add parsing of LabelStyle in KML format ([@oterral](https://github.com/oterral))
|
||||||
|
* [#2819](https://github.com/openlayers/ol3/pull/2819) - Improvements to the xyz-esri-4326-512 example ([@elemoine](https://github.com/elemoine))
|
||||||
|
* [#2743](https://github.com/openlayers/ol3/pull/2743) - Handle ol.interaction.Draw activation/deactivation ([@elemoine](https://github.com/elemoine))
|
||||||
|
* [#2816](https://github.com/openlayers/ol3/pull/2816) - Exit on check-examples failure ([@gberaudo](https://github.com/gberaudo))
|
||||||
|
* [#2794](https://github.com/openlayers/ol3/pull/2794) - Add ol.Observable.unByKey ([@elemoine](https://github.com/elemoine))
|
||||||
|
* [#2815](https://github.com/openlayers/ol3/pull/2815) - Fix jquery.min.js path in xyz-esri-4326-512 example ([@fredj](https://github.com/fredj))
|
||||||
|
* [#2756](https://github.com/openlayers/ol3/pull/2756) - Add an example for using an Esri 512x512 tile server in EPSG:4326 (r=@elemoine) ([@bartvde](https://github.com/bartvde))
|
||||||
|
* [#2814](https://github.com/openlayers/ol3/pull/2814) - Add missing whitespaces in CSS calc ([@fredj](https://github.com/fredj))
|
||||||
|
* [#2811](https://github.com/openlayers/ol3/pull/2811) - Remove defaultProjection and object from typedef ([@fredj](https://github.com/fredj))
|
||||||
|
* [#2779](https://github.com/openlayers/ol3/pull/2779) - Update jQuery to 1.9.1 ([@fredj](https://github.com/fredj))
|
||||||
|
* [#2810](https://github.com/openlayers/ol3/pull/2810) - Remove unused properties from olx.source.TileVectorOptions ([@pagameba](https://github.com/pagameba))
|
||||||
|
* [#2808](https://github.com/openlayers/ol3/pull/2808) - Remove reprojectTo option from olx.source.OSMXMLOptions ([@fredj](https://github.com/fredj))
|
||||||
|
* [#2809](https://github.com/openlayers/ol3/pull/2809) - Miscellaneous controls cleanups ([@fredj](https://github.com/fredj))
|
||||||
|
* [#2805](https://github.com/openlayers/ol3/pull/2805) - Enable subclassing Interaction in public API ([@sweco-sebhar](https://github.com/sweco-sebhar))
|
||||||
|
* [#2798](https://github.com/openlayers/ol3/pull/2798) - Update closure-util to version 1.0.0 ([@fredj](https://github.com/fredj))
|
||||||
|
* [#2785](https://github.com/openlayers/ol3/pull/2785) - Use goog.* types in externs ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#2795](https://github.com/openlayers/ol3/pull/2795) - Externs ([@gingerik](https://github.com/gingerik))
|
||||||
|
* [#2792](https://github.com/openlayers/ol3/pull/2792) - Use valid mediatype for GPX export. ([@pgiraud](https://github.com/pgiraud))
|
||||||
|
* [#2784](https://github.com/openlayers/ol3/pull/2784) - Add 'tooltip'-tag to KML example. ([@marcjansen](https://github.com/marcjansen))
|
||||||
|
* [#2782](https://github.com/openlayers/ol3/pull/2782) - Hide the rotate control when the rotation is 0 ([@fredj](https://github.com/fredj))
|
||||||
|
* [#2774](https://github.com/openlayers/ol3/pull/2774) - Remove unused distinctFeatures object in ol.interaction.Modify#handlePointerDown ([@fredj](https://github.com/fredj))
|
||||||
|
* [#2771](https://github.com/openlayers/ol3/pull/2771) - Allow package to be published in npm registry. ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#2773](https://github.com/openlayers/ol3/pull/2773) - Type-related changes to ol.style.Image ([@elemoine](https://github.com/elemoine))
|
||||||
|
* [#2751](https://github.com/openlayers/ol3/pull/2751) - Export constructors and options of ol.source.Source children ([@gberaudo](https://github.com/gberaudo))
|
||||||
|
* [#2772](https://github.com/openlayers/ol3/pull/2772) - Rename updatefeature event to changefeature ([@fredj](https://github.com/fredj))
|
||||||
|
* [#2766](https://github.com/openlayers/ol3/pull/2766) - Make interaction "active" an ol.Object property ([@elemoine](https://github.com/elemoine))
|
||||||
|
* [#2765](https://github.com/openlayers/ol3/pull/2765) - Treat unknown opt types as Object in ol externs ([@elemoine](https://github.com/elemoine))
|
||||||
|
* [#2759](https://github.com/openlayers/ol3/pull/2759) - Fix test failures. ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#2762](https://github.com/openlayers/ol3/pull/2762) - Report test failures to the console. ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#2768](https://github.com/openlayers/ol3/pull/2768) - Write the function name correctly in the doc. ([@xamgreen](https://github.com/xamgreen))
|
||||||
|
* [#2764](https://github.com/openlayers/ol3/pull/2764) - Remove rtree example ([@fredj](https://github.com/fredj))
|
||||||
|
* [#2763](https://github.com/openlayers/ol3/pull/2763) - Miscellaneous coding style and typo fixes ([@fredj](https://github.com/fredj))
|
||||||
|
* [#2758](https://github.com/openlayers/ol3/pull/2758) - Correctly generate child tile ranges for XYZ tiles. ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#2734](https://github.com/openlayers/ol3/pull/2734) - Add maxZoom option to BingMaps ([@elemoine](https://github.com/elemoine))
|
||||||
|
* [#2752](https://github.com/openlayers/ol3/pull/2752) - Call loadFeatures from ol.source.ImageVector ([@elemoine](https://github.com/elemoine))
|
||||||
|
* [#2658](https://github.com/openlayers/ol3/pull/2658) - Set inherited values when parsing a GetCapabilities ([@oterral](https://github.com/oterral))
|
||||||
|
* [#2750](https://github.com/openlayers/ol3/pull/2750) - Export ol.layer.Base ([@fredj](https://github.com/fredj))
|
||||||
|
* [#2749](https://github.com/openlayers/ol3/pull/2749) - Export ol.source.Source ([@fredj](https://github.com/fredj))
|
||||||
|
* [#2742](https://github.com/openlayers/ol3/pull/2742) - Dispatch an 'updatefeature' from the vector source ([@fredj](https://github.com/fredj))
|
||||||
|
* [#2747](https://github.com/openlayers/ol3/pull/2747) - Fix incorrect web address. ([@lazaruslarue](https://github.com/lazaruslarue))
|
||||||
|
* [#2745](https://github.com/openlayers/ol3/pull/2745) - DragBox Interaction: getGeometry return type can be ol.geom.Polygon (r=@fredj) ([@bartvde](https://github.com/bartvde))
|
||||||
|
* [#2744](https://github.com/openlayers/ol3/pull/2744) - Fix ol.Feature 'change' event documentation ([@fredj](https://github.com/fredj))
|
||||||
|
* [#2741](https://github.com/openlayers/ol3/pull/2741) - issue with reading scientific notation coordinates in ol.format.GML (r=@fredj) ([@bartvde](https://github.com/bartvde))
|
||||||
|
* [#2739](https://github.com/openlayers/ol3/pull/2739) - Revert "Function circular renamed to createCircularOnSphere" ([@elemoine](https://github.com/elemoine))
|
||||||
|
* [#2616](https://github.com/openlayers/ol3/pull/2616) - Target for attribution links differs between maps ([@fredj](https://github.com/fredj))
|
||||||
|
* [#2740](https://github.com/openlayers/ol3/pull/2740) - Make interactions activable and deactivable ([@elemoine](https://github.com/elemoine))
|
||||||
|
* [#2727](https://github.com/openlayers/ol3/pull/2727) - Rename ol.geom.Polygon#circular to createCircularOnSphere ([@elemoine](https://github.com/elemoine))
|
||||||
|
* [#2730](https://github.com/openlayers/ol3/pull/2730) - Do not call toLowerCase when forming a change:property event ([@elemoine](https://github.com/elemoine))
|
||||||
|
* [#2728](https://github.com/openlayers/ol3/pull/2728) - Mark `ol.extent.getIntersection` as stable. ([@tschaub](https://github.com/tschaub))
|
||||||
|
* [#2726](https://github.com/openlayers/ol3/pull/2726) - Make ol.Feature#setStyle accept null ([@elemoine](https://github.com/elemoine))
|
||||||
|
* [#2724](https://github.com/openlayers/ol3/pull/2724) - Error when compiling individual example ([@fredj](https://github.com/fredj))
|
||||||
|
* [#1959](https://github.com/openlayers/ol3/pull/1959) - Add a feature box selection example ([@elemoine](https://github.com/elemoine))
|
||||||
|
* [#2722](https://github.com/openlayers/ol3/pull/2722) - Make ol.Map#setView do not accept undefined ([@elemoine](https://github.com/elemoine))
|
||||||
|
* [#2696](https://github.com/openlayers/ol3/pull/2696) - Consistent circle transform. ([@gberaudo](https://github.com/gberaudo))
|
||||||
|
* [#2717](https://github.com/openlayers/ol3/pull/2717) - Change the control visibility by using css class ([@fredj](https://github.com/fredj))
|
||||||
|
* [#2715](https://github.com/openlayers/ol3/pull/2715) - Add an EPSG:3857 map to Tissot example ([@elemoine](https://github.com/elemoine))
|
||||||
|
* [#2714](https://github.com/openlayers/ol3/pull/2714) - Set the opacity directly to element.style.opacity ([@fredj](https://github.com/fredj))
|
||||||
|
* [#2647](https://github.com/openlayers/ol3/pull/2647) - Upgrade closure library version ([@fredj](https://github.com/fredj))
|
||||||
|
* [#2549](https://github.com/openlayers/ol3/pull/2549) - Use goog.array.ASSUME_NATIVE_FUNCTIONS define ([@fredj](https://github.com/fredj))
|
||||||
|
* [#2711](https://github.com/openlayers/ol3/pull/2711) - Remove Google Maps example ([@elemoine](https://github.com/elemoine))
|
||||||
|
* [#2684](https://github.com/openlayers/ol3/pull/2684) - Rename ol.Observable#dispatchChangeEvent() to #changed() ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#2678](https://github.com/openlayers/ol3/pull/2678) - Mutable symbolizer properties for styles ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#2568](https://github.com/openlayers/ol3/pull/2568) - re-implement auto-configure code for ol.format.GML (r=@ahocevar) ([@bartvde](https://github.com/bartvde))
|
||||||
|
* [#2704](https://github.com/openlayers/ol3/pull/2704) - Use pool thread for calling bin/check-example.js. ([@gberaudo](https://github.com/gberaudo))
|
||||||
|
* [#2698](https://github.com/openlayers/ol3/pull/2698) - StaticVector is not an abstract base class ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#2702](https://github.com/openlayers/ol3/pull/2702) - Add vector layer in export-map example ([@fredj](https://github.com/fredj))
|
||||||
|
* [#2687](https://github.com/openlayers/ol3/pull/2687) - Use ol.LEGACY_IE_SUPPORT and ol.IS_LEGACY_IE define ([@fredj](https://github.com/fredj))
|
||||||
|
* [#2675](https://github.com/openlayers/ol3/pull/2675) - Remove undefined from ol.Map#getLayers return type ([@fredj](https://github.com/fredj))
|
||||||
|
* [#2692](https://github.com/openlayers/ol3/pull/2692) - Unset z-index in overlay example ([@fredj](https://github.com/fredj))
|
||||||
|
* [#2681](https://github.com/openlayers/ol3/pull/2681) - Make tileSize a config option for ol.source.XYZ ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
* [#2534](https://github.com/openlayers/ol3/pull/2534) - Document ol.geom.Polygon#getLinearRing function ([@fredj](https://github.com/fredj))
|
||||||
|
* [#2677](https://github.com/openlayers/ol3/pull/2677) - Add TextStyle offsets getters to API. ([@gberaudo](https://github.com/gberaudo))
|
||||||
|
* [#2676](https://github.com/openlayers/ol3/pull/2676) - ol.FeatureOverlay: use the feature style if defined ([@fredj](https://github.com/fredj))
|
||||||
|
* [#2656](https://github.com/openlayers/ol3/pull/2656) - Set ol.layer.Image#getSource return type to ol.source.Image ([@fredj](https://github.com/fredj))
|
||||||
|
* [#2651](https://github.com/openlayers/ol3/pull/2651) - ol.layer.Vector.getSource return type specialisation. ([@gberaudo](https://github.com/gberaudo))
|
||||||
|
* [#2669](https://github.com/openlayers/ol3/pull/2669) - Revert "snapshot" ([@fredj](https://github.com/fredj))
|
||||||
|
* [#2663](https://github.com/openlayers/ol3/pull/2663) - Set tracking property to false on geolocation error ([@fredj](https://github.com/fredj))
|
||||||
|
* [#2662](https://github.com/openlayers/ol3/pull/2662) - Delegate transformation in ol.source.FormatVector#readFeatures to `ol.format.*` ([@gingerik](https://github.com/gingerik))
|
||||||
|
* [#2447](https://github.com/openlayers/ol3/pull/2447) - Correct documentation typo. ([@lazaruslarue](https://github.com/lazaruslarue))
|
||||||
|
* [#2660](https://github.com/openlayers/ol3/pull/2660) - New domain in the build header ([@elemoine](https://github.com/elemoine))
|
||||||
9
changelog/v3.1.1.md
Normal file
9
changelog/v3.1.1.md
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
# 3.1.0
|
||||||
|
|
||||||
|
## Summary
|
||||||
|
|
||||||
|
This is a patch release to fix an issue with the select interaction in the 3.1.0 release.
|
||||||
|
|
||||||
|
## Changes
|
||||||
|
|
||||||
|
* [#3082](https://github.com/openlayers/ol3/pull/3082) - Correct arguments for forEachGeometryAtPixel. ([@tschaub](https://github.com/tschaub))
|
||||||
@@ -1,3 +1,3 @@
|
|||||||
{
|
{
|
||||||
"library_url": "https://github.com/google/closure-library/archive/946a7d39d4ffe08676c755b21d901e71d9904a3b.zip"
|
"library_url": "https://github.com/google/closure-library/archive/ad5e66c1e7d7829b0d77feae49aaf5f011265715.zip"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,22 +1,30 @@
|
|||||||
{
|
{
|
||||||
"exports": [],
|
"exports": [],
|
||||||
"src": ["src/**/*.js", "build/examples/all.js"],
|
"src": [
|
||||||
|
"src/**/*.js",
|
||||||
|
"build/ol.ext/*.js",
|
||||||
|
"build/examples/all.js"
|
||||||
|
],
|
||||||
"compile": {
|
"compile": {
|
||||||
|
"js": [
|
||||||
|
"externs/olx.js",
|
||||||
|
"externs/oli.js"
|
||||||
|
],
|
||||||
"externs": [
|
"externs": [
|
||||||
"externs/bingmaps.js",
|
"externs/bingmaps.js",
|
||||||
"externs/bootstrap.js",
|
"externs/bootstrap.js",
|
||||||
"externs/closure-compiler.js",
|
"externs/closure-compiler.js",
|
||||||
"externs/example.js",
|
"externs/example.js",
|
||||||
|
"externs/fastclick.js",
|
||||||
"externs/geojson.js",
|
"externs/geojson.js",
|
||||||
"externs/jquery-1.7.js",
|
"externs/jquery-1.9.js",
|
||||||
"externs/oli.js",
|
|
||||||
"externs/olx.js",
|
|
||||||
"externs/proj4js.js",
|
"externs/proj4js.js",
|
||||||
"externs/tilejson.js",
|
"externs/tilejson.js",
|
||||||
"externs/topojson.js",
|
"externs/topojson.js",
|
||||||
"externs/vbarray.js"
|
"externs/vbarray.js"
|
||||||
],
|
],
|
||||||
"define": [
|
"define": [
|
||||||
|
"goog.array.ASSUME_NATIVE_FUNCTIONS=true",
|
||||||
"goog.dom.ASSUME_STANDARDS_MODE=true",
|
"goog.dom.ASSUME_STANDARDS_MODE=true",
|
||||||
"goog.json.USE_NATIVE_JSON=true",
|
"goog.json.USE_NATIVE_JSON=true",
|
||||||
"goog.DEBUG=false"
|
"goog.DEBUG=false"
|
||||||
@@ -61,7 +69,8 @@
|
|||||||
"api", "observable"
|
"api", "observable"
|
||||||
],
|
],
|
||||||
"compilation_level": "ADVANCED",
|
"compilation_level": "ADVANCED",
|
||||||
"output_wrapper": "// OpenLayers 3. See http://ol3.js.org/\n(function(){%output%})();",
|
"warning_level": "VERBOSE",
|
||||||
|
"output_wrapper": "(function(){%output%})();",
|
||||||
"use_types_for_optimization": true,
|
"use_types_for_optimization": true,
|
||||||
"manage_closure_dependencies": true
|
"manage_closure_dependencies": true
|
||||||
|
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ exports.handlers = {
|
|||||||
if (!cls.fires) {
|
if (!cls.fires) {
|
||||||
cls.fires = [];
|
cls.fires = [];
|
||||||
}
|
}
|
||||||
event = 'ol.ObjectEvent#event:change:' + name.toLowerCase();
|
event = 'ol.ObjectEvent#event:change:' + name;
|
||||||
if (cls.fires.indexOf(event) == -1) {
|
if (cls.fires.indexOf(event) == -1) {
|
||||||
cls.fires.push(event);
|
cls.fires.push(event);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -54,11 +54,25 @@ $(function () {
|
|||||||
_onResize();
|
_onResize();
|
||||||
|
|
||||||
// show/hide unstable items
|
// show/hide unstable items
|
||||||
|
var links = $('a[href^="ol."]');
|
||||||
var unstable = $('.unstable');
|
var unstable = $('.unstable');
|
||||||
var stabilityToggle = $('#stability-toggle');
|
var stabilityToggle = $('#stability-toggle');
|
||||||
stabilityToggle.change(function() {
|
stabilityToggle.change(function() {
|
||||||
unstable.toggle(!this.checked);
|
unstable.toggleClass('hidden', this.checked);
|
||||||
|
var search = this.checked ? '' : '?unstable=true';
|
||||||
|
links.each(function(i, el) {
|
||||||
|
this.href = this.pathname + search + this.hash;
|
||||||
|
});
|
||||||
|
if (history.replaceState) {
|
||||||
|
var url = window.location.pathname + search + window.location.hash;
|
||||||
|
history.replaceState({}, '', url);
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
unstable.toggle(!stabilityToggle[0].checked);
|
var search = window.location.search;
|
||||||
|
links.each(function(i, el) {
|
||||||
|
this.href = this.pathname + search + this.hash;
|
||||||
|
});
|
||||||
|
stabilityToggle.prop('checked', search !== '?unstable=true');
|
||||||
|
unstable.toggleClass('hidden', stabilityToggle[0].checked);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -372,7 +372,7 @@ footer {
|
|||||||
.main .readme table ul li {
|
.main .readme table ul li {
|
||||||
margin-bottom: 0;
|
margin-bottom: 0;
|
||||||
}
|
}
|
||||||
.unstable {
|
.hidden {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
#stability {
|
#stability {
|
||||||
|
|||||||
@@ -64,6 +64,23 @@ var self = this;
|
|||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
</ul>
|
</ul>
|
||||||
|
<ul class="fires itemMembers">
|
||||||
|
<?js
|
||||||
|
if (item.fires && item.fires.length) {
|
||||||
|
?>
|
||||||
|
<span class="subtitle">Fires</span>
|
||||||
|
<?js
|
||||||
|
item.fires.forEach(function (v) {
|
||||||
|
v = self.find({longname: v})[0] || {longname: v, name: v.split(/#?event:/)[1]};
|
||||||
|
?>
|
||||||
|
<li data-name="<?js= v.longname ?>" class="<?js= (v.stability != 'stable' ? 'unstable' : '') ?>">
|
||||||
|
<?js= self.linkto(v.longname, v.name) ?>
|
||||||
|
</li>
|
||||||
|
<?js
|
||||||
|
});
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<?js }); ?>
|
<?js }); ?>
|
||||||
</ul>
|
</ul>
|
||||||
|
|||||||
@@ -22,14 +22,6 @@ exports.publish = function(data, opts) {
|
|||||||
return types;
|
return types;
|
||||||
}
|
}
|
||||||
|
|
||||||
function replaceUnknownTypes(item) {
|
|
||||||
item.types.forEach(function(type, index) {
|
|
||||||
if (!(type in names)) {
|
|
||||||
item.types[index] = '*';
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// get all doclets with the "api" property or define (excluding events) or
|
// get all doclets with the "api" property or define (excluding events) or
|
||||||
// with olx namespace
|
// with olx namespace
|
||||||
var classes = {};
|
var classes = {};
|
||||||
@@ -168,16 +160,7 @@ exports.publish = function(data, opts) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
base = base.filter(function(symbol) {
|
base = base.filter(function(symbol) {
|
||||||
var pass = symbol.name in augments || symbol.virtual;
|
return (symbol.name in augments || symbol.virtual);
|
||||||
if (pass) {
|
|
||||||
if (symbol.params) {
|
|
||||||
symbol.params.forEach(replaceUnknownTypes);
|
|
||||||
}
|
|
||||||
if (symbol.returns) {
|
|
||||||
symbol.returns.forEach(replaceUnknownTypes);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return pass;
|
|
||||||
});
|
});
|
||||||
|
|
||||||
process.stdout.write(
|
process.stdout.write(
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
{
|
{
|
||||||
"exports": ["*"]
|
"exports": ["*"],
|
||||||
|
"umd": true
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
{
|
{
|
||||||
"exports": ["*"],
|
"exports": ["*"],
|
||||||
|
"umd": true,
|
||||||
"compile": {
|
"compile": {
|
||||||
"externs": [
|
"externs": [
|
||||||
"externs/bingmaps.js",
|
"externs/bingmaps.js",
|
||||||
@@ -13,6 +14,7 @@
|
|||||||
"externs/vbarray.js"
|
"externs/vbarray.js"
|
||||||
],
|
],
|
||||||
"define": [
|
"define": [
|
||||||
|
"goog.array.ASSUME_NATIVE_FUNCTIONS=true",
|
||||||
"goog.dom.ASSUME_STANDARDS_MODE=true",
|
"goog.dom.ASSUME_STANDARDS_MODE=true",
|
||||||
"goog.json.USE_NATIVE_JSON=true",
|
"goog.json.USE_NATIVE_JSON=true",
|
||||||
"goog.DEBUG=false"
|
"goog.DEBUG=false"
|
||||||
@@ -57,7 +59,7 @@
|
|||||||
"api", "observable"
|
"api", "observable"
|
||||||
],
|
],
|
||||||
"compilation_level": "ADVANCED",
|
"compilation_level": "ADVANCED",
|
||||||
"output_wrapper": "(function(){%output%})();",
|
"warning_level": "VERBOSE",
|
||||||
"use_types_for_optimization": true,
|
"use_types_for_optimization": true,
|
||||||
"manage_closure_dependencies": true
|
"manage_closure_dependencies": true
|
||||||
}
|
}
|
||||||
|
|||||||
123
css/ol.css
123
css/ol.css
@@ -55,6 +55,10 @@
|
|||||||
right: .5em;
|
right: .5em;
|
||||||
transition: opacity .25s;
|
transition: opacity .25s;
|
||||||
}
|
}
|
||||||
|
.ol-rotate.ol-hidden {
|
||||||
|
opacity: 0;
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
.ol-zoom-extent {
|
.ol-zoom-extent {
|
||||||
top: 4.643em;
|
top: 4.643em;
|
||||||
left: .5em;
|
left: .5em;
|
||||||
@@ -95,7 +99,6 @@
|
|||||||
}
|
}
|
||||||
.ol-compass {
|
.ol-compass {
|
||||||
display: block;
|
display: block;
|
||||||
font-family: Arial;
|
|
||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
font-size: 1.2em;
|
font-size: 1.2em;
|
||||||
}
|
}
|
||||||
@@ -127,65 +130,6 @@ button.ol-full-screen-true:after {
|
|||||||
content: "\00d7";
|
content: "\00d7";
|
||||||
}
|
}
|
||||||
|
|
||||||
/* invisible but not hidden */
|
|
||||||
.ol-has-tooltip [role=tooltip] {
|
|
||||||
position: absolute;
|
|
||||||
clip: rect(1px 1px 1px 1px); /* < IE8 */
|
|
||||||
clip: rect(1px, 1px, 1px, 1px);
|
|
||||||
padding: 0;
|
|
||||||
border: 0;
|
|
||||||
height: 1px;
|
|
||||||
width: 1px;
|
|
||||||
overflow: hidden;
|
|
||||||
font-weight: normal;
|
|
||||||
font-size: 14px;
|
|
||||||
text-shadow: 0 0 2px #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* show a tooltip offset to below and right */
|
|
||||||
.ol-has-tooltip:hover [role=tooltip], .ol-has-tooltip:focus [role=tooltip] {
|
|
||||||
-moz-box-sizing: content-box;
|
|
||||||
-webkit-box-sizing: content-box;
|
|
||||||
box-sizing: content-box;
|
|
||||||
clip: auto;
|
|
||||||
padding: 0 .4em;
|
|
||||||
font-size: .8em;
|
|
||||||
height: 1.2em;
|
|
||||||
width: auto;
|
|
||||||
line-height: 1.2em;
|
|
||||||
z-index: 1100;
|
|
||||||
max-height: 100px;
|
|
||||||
white-space: nowrap;
|
|
||||||
display: inline-block;
|
|
||||||
background: #FFF;
|
|
||||||
background: rgba(255,255,255,0.6);
|
|
||||||
color: #000;
|
|
||||||
border: 3px solid rgba(255,255,255,0);
|
|
||||||
border-left-width: 0;
|
|
||||||
border-radius: 0 4px 4px 0;
|
|
||||||
bottom: .3em;
|
|
||||||
left: 2.2em;
|
|
||||||
}
|
|
||||||
.ol-touch .ol-has-tooltip:hover [role=tooltip],
|
|
||||||
.ol-touch .ol-has-tooltip:focus [role=tooltip] {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
.ol-zoom .ol-has-tooltip:hover [role=tooltip],
|
|
||||||
.ol-zoom .ol-has-tooltip:focus [role=tooltip] {
|
|
||||||
top: 1.1em;
|
|
||||||
}
|
|
||||||
.ol-rotate .ol-has-tooltip:hover [role=tooltip],
|
|
||||||
.ol-rotate .ol-has-tooltip:focus [role=tooltip],
|
|
||||||
.ol-attribution .ol-has-tooltip:hover [role=tooltip],
|
|
||||||
.ol-attribution .ol-has-tooltip:focus [role=tooltip],
|
|
||||||
.ol-full-screen .ol-has-tooltip:hover [role=tooltip],
|
|
||||||
.ol-full-screen .ol-has-tooltip:focus [role=tooltip] {
|
|
||||||
right: 2.2em;
|
|
||||||
left: auto;
|
|
||||||
border-radius: 4px 0 0 4px;
|
|
||||||
border-left-width: 3px;
|
|
||||||
border-right-width: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.ol-attribution {
|
.ol-attribution {
|
||||||
text-align: right;
|
text-align: right;
|
||||||
@@ -201,7 +145,6 @@ button.ol-full-screen-true:after {
|
|||||||
line-height: 1.375em;
|
line-height: 1.375em;
|
||||||
color: #000;
|
color: #000;
|
||||||
text-shadow: 0 0 2px #fff;
|
text-shadow: 0 0 2px #fff;
|
||||||
max-width: calc(100% - 3.6em);
|
|
||||||
}
|
}
|
||||||
.ol-attribution li {
|
.ol-attribution li {
|
||||||
display: inline;
|
display: inline;
|
||||||
@@ -213,11 +156,11 @@ button.ol-full-screen-true:after {
|
|||||||
}
|
}
|
||||||
.ol-attribution img {
|
.ol-attribution img {
|
||||||
max-height: 2em;
|
max-height: 2em;
|
||||||
|
max-width: inherit;
|
||||||
}
|
}
|
||||||
.ol-attribution ul, .ol-attribution button {
|
.ol-attribution ul, .ol-attribution button {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
}
|
}
|
||||||
.ol-attribution:not(.ol-collapsed) button:hover [role=tooltip],
|
|
||||||
.ol-attribution.ol-collapsed ul {
|
.ol-attribution.ol-collapsed ul {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
@@ -255,29 +198,20 @@ button.ol-full-screen-true:after {
|
|||||||
left: .5em;
|
left: .5em;
|
||||||
background: #eee;
|
background: #eee;
|
||||||
background: rgba(255, 255, 255, 0.4);
|
background: rgba(255, 255, 255, 0.4);
|
||||||
border-radius: 4px;
|
width: 24px;
|
||||||
outline: none;
|
|
||||||
overflow: hidden;
|
|
||||||
width: 1.5675em;
|
|
||||||
height: 200px;
|
height: 200px;
|
||||||
padding: 3px;
|
|
||||||
margin: 0;
|
|
||||||
}
|
}
|
||||||
.ol-zoomslider-thumb {
|
.ol-zoomslider-thumb {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
display: block;
|
|
||||||
background: #7b98bc;
|
background: #7b98bc;
|
||||||
background: rgba(0,60,136,0.5);
|
background: rgba(0,60,136,0.5);
|
||||||
border-radius: 2px;
|
border-radius: 2px;
|
||||||
outline: none;
|
|
||||||
overflow: hidden;
|
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
font-size: 1.14em;
|
height: 10px;
|
||||||
height: 1em;
|
width: 22px;
|
||||||
width: 1.375em;
|
|
||||||
margin: 3px;
|
margin: 3px;
|
||||||
padding: 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.ol-touch .ol-zoomslider {
|
.ol-touch .ol-zoomslider {
|
||||||
top: 5.5em;
|
top: 5.5em;
|
||||||
width: 2.052em;
|
width: 2.052em;
|
||||||
@@ -286,9 +220,38 @@ button.ol-full-screen-true:after {
|
|||||||
width: 1.8em;
|
width: 1.8em;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ol-control button,
|
.ol-overviewmap {
|
||||||
.ol-attribution,
|
position: absolute;
|
||||||
.ol-scale-line-inner,
|
left: 0.5em;
|
||||||
.ol-has-tooltip [role=tooltip] {
|
bottom: 0.5em;
|
||||||
font-family: 'Lucida Grande',Verdana,Geneva,Lucida,Arial,Helvetica,sans-serif;
|
}
|
||||||
|
.ol-overviewmap.ol-uncollapsible {
|
||||||
|
bottom: 0;
|
||||||
|
left: 0;
|
||||||
|
border-radius: 0 4px 0 0;
|
||||||
|
}
|
||||||
|
.ol-overviewmap .ol-overviewmap-map,
|
||||||
|
.ol-overviewmap button {
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
.ol-overviewmap .ol-overviewmap-map {
|
||||||
|
border: 1px solid #7b98bc;
|
||||||
|
height: 150px;
|
||||||
|
margin: 2px;
|
||||||
|
width: 150px;
|
||||||
|
}
|
||||||
|
.ol-overviewmap:not(.ol-collapsed) button{
|
||||||
|
bottom: 1px;
|
||||||
|
left: 2px;
|
||||||
|
position: absolute;
|
||||||
|
}
|
||||||
|
.ol-overviewmap.ol-collapsed .ol-overviewmap-map,
|
||||||
|
.ol-overviewmap.ol-uncollapsible button {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.ol-overviewmap:not(.ol-collapsed) {
|
||||||
|
background: rgba(255,255,255,0.8);
|
||||||
|
}
|
||||||
|
.ol-overviewmap-box {
|
||||||
|
border: 2px dotted rgba(0,60,136,0.7);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -64,7 +64,7 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="jquery.min.js" type="text/javascript"></script>
|
<script src="../resources/jquery.min.js" type="text/javascript"></script>
|
||||||
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
||||||
<script src="loader.js?id=accessible" type="text/javascript"></script>
|
<script src="loader.js?id=accessible" type="text/javascript"></script>
|
||||||
|
|
||||||
|
|||||||
@@ -57,7 +57,7 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="jquery.min.js" type="text/javascript"></script>
|
<script src="../resources/jquery.min.js" type="text/javascript"></script>
|
||||||
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
||||||
<script src="loader.js?id=animation" type="text/javascript"></script>
|
<script src="loader.js?id=animation" type="text/javascript"></script>
|
||||||
|
|
||||||
|
|||||||
@@ -43,7 +43,7 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="jquery.min.js" type="text/javascript"></script>
|
<script src="../resources/jquery.min.js" type="text/javascript"></script>
|
||||||
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
||||||
<script src="loader.js?id=attributions" type="text/javascript"></script>
|
<script src="loader.js?id=attributions" type="text/javascript"></script>
|
||||||
|
|
||||||
|
|||||||
@@ -84,7 +84,7 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="jquery.min.js" type="text/javascript"></script>
|
<script src="../resources/jquery.min.js" type="text/javascript"></script>
|
||||||
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
||||||
<script src="loader.js?id=bind-input" type="text/javascript"></script>
|
<script src="loader.js?id=bind-input" type="text/javascript"></script>
|
||||||
|
|
||||||
|
|||||||
@@ -42,6 +42,7 @@
|
|||||||
<h4 id="title">Bing Maps example</h4>
|
<h4 id="title">Bing Maps example</h4>
|
||||||
<p id="shortdesc">Example of a Bing Maps layer.</p>
|
<p id="shortdesc">Example of a Bing Maps layer.</p>
|
||||||
<div id="docs">
|
<div id="docs">
|
||||||
|
<p>When the Bing Maps tile service doesn't have tiles for a given resolution and region it returns "placeholder" tiles indicating that. Zoom the map beyond level 19 to see the "placeholder" tiles. If you want OpenLayers to display stretched tiles in place of "placeholder" tiles beyond zoom level 19 then set <code>maxZoom</code> to <code>19</code> in the options passed to <code>ol.source.BingMaps</code>.</p>
|
||||||
<p>See the <a href="bing-maps.js" target="_blank">bing-maps.js source</a> to see how this is done.</p>
|
<p>See the <a href="bing-maps.js" target="_blank">bing-maps.js source</a> to see how this is done.</p>
|
||||||
</div>
|
</div>
|
||||||
<div id="tags">bing, bing-maps</div>
|
<div id="tags">bing, bing-maps</div>
|
||||||
@@ -51,7 +52,7 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="jquery.min.js" type="text/javascript"></script>
|
<script src="../resources/jquery.min.js" type="text/javascript"></script>
|
||||||
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
||||||
<script src="loader.js?id=bing-maps" type="text/javascript"></script>
|
<script src="loader.js?id=bing-maps" type="text/javascript"></script>
|
||||||
|
|
||||||
|
|||||||
@@ -20,6 +20,9 @@ for (i = 0, ii = styles.length; i < ii; ++i) {
|
|||||||
source: new ol.source.BingMaps({
|
source: new ol.source.BingMaps({
|
||||||
key: 'Ak-dzM4wZjSqTlzveKz5u0d4IQ4bRzVI309GxmkgSVr1ewS6iPSrOvOKhA-CJlm3',
|
key: 'Ak-dzM4wZjSqTlzveKz5u0d4IQ4bRzVI309GxmkgSVr1ewS6iPSrOvOKhA-CJlm3',
|
||||||
imagerySet: styles[i]
|
imagerySet: styles[i]
|
||||||
|
// use maxZoom 19 to see stretched tiles instead of the BingMaps
|
||||||
|
// "no photos at this zoom level" tiles
|
||||||
|
// maxZoom: 19
|
||||||
})
|
})
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|||||||
59
examples/box-selection.html
Normal file
59
examples/box-selection.html
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="chrome=1">
|
||||||
|
<meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width">
|
||||||
|
<link rel="stylesheet" href="../css/ol.css" type="text/css">
|
||||||
|
<link rel="stylesheet" href="../resources/bootstrap/css/bootstrap.min.css" type="text/css">
|
||||||
|
<link rel="stylesheet" href="../resources/layout.css" type="text/css">
|
||||||
|
<link rel="stylesheet" href="../resources/bootstrap/css/bootstrap-responsive.min.css" type="text/css">
|
||||||
|
<title>Box selection example</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<div class="navbar navbar-inverse navbar-fixed-top">
|
||||||
|
<div class="navbar-inner">
|
||||||
|
<div class="container">
|
||||||
|
<a class="brand" href="./"><img src="../resources/logo.png"> OpenLayers 3 Examples</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="container-fluid">
|
||||||
|
|
||||||
|
<div class="row-fluid">
|
||||||
|
<div class="span12">
|
||||||
|
<div id="map" class="map"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row-fluid">
|
||||||
|
|
||||||
|
<div class="span4">
|
||||||
|
<h4 id="title">Box selection example</h4>
|
||||||
|
<p id="shortdesc">Using a DragBox interaction to select features.</p>
|
||||||
|
<div id="docs">
|
||||||
|
<p>This example shows how to use a <code>DragBox</code> interaction to select features. Selected features are added
|
||||||
|
to the feature overlay of a select interaction (<code>ol.interaction.Select</code>) for highlighting.</p>
|
||||||
|
<p>Use <code>SHIFT+drag</code> to draw boxes.</p>
|
||||||
|
<p>See the <a href="box-selection.js" target="_blank">box-selection.js source</a> to see how this is done.</p>
|
||||||
|
</div>
|
||||||
|
<div id="tags">DragBox, feature, selection, box</div>
|
||||||
|
</div>
|
||||||
|
<div class="span4 offset4">
|
||||||
|
<div id="info" class="alert alert-success">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script src="../resources/jquery.min.js" type="text/javascript"></script>
|
||||||
|
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
||||||
|
<script src="loader.js?id=box-selection" type="text/javascript"></script>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
81
examples/box-selection.js
Normal file
81
examples/box-selection.js
Normal file
@@ -0,0 +1,81 @@
|
|||||||
|
goog.require('ol.Map');
|
||||||
|
goog.require('ol.View');
|
||||||
|
goog.require('ol.events.condition');
|
||||||
|
goog.require('ol.interaction');
|
||||||
|
goog.require('ol.interaction.DragBox');
|
||||||
|
goog.require('ol.interaction.Select');
|
||||||
|
goog.require('ol.layer.Tile');
|
||||||
|
goog.require('ol.layer.Vector');
|
||||||
|
goog.require('ol.source.GeoJSON');
|
||||||
|
goog.require('ol.source.OSM');
|
||||||
|
goog.require('ol.style.Stroke');
|
||||||
|
goog.require('ol.style.Style');
|
||||||
|
|
||||||
|
|
||||||
|
var vectorSource = new ol.source.GeoJSON({
|
||||||
|
projection: 'EPSG:3857',
|
||||||
|
url: 'data/geojson/countries.geojson'
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
var map = new ol.Map({
|
||||||
|
layers: [
|
||||||
|
new ol.layer.Tile({
|
||||||
|
source: new ol.source.OSM()
|
||||||
|
}),
|
||||||
|
new ol.layer.Vector({
|
||||||
|
source: vectorSource
|
||||||
|
})
|
||||||
|
],
|
||||||
|
renderer: 'canvas',
|
||||||
|
target: 'map',
|
||||||
|
view: new ol.View({
|
||||||
|
center: [0, 0],
|
||||||
|
zoom: 2
|
||||||
|
})
|
||||||
|
});
|
||||||
|
|
||||||
|
// a normal select interaction to handle click
|
||||||
|
var select = new ol.interaction.Select();
|
||||||
|
map.addInteraction(select);
|
||||||
|
|
||||||
|
var selectedFeatures = select.getFeatures();
|
||||||
|
|
||||||
|
// a DragBox interaction used to select features by drawing boxes
|
||||||
|
var dragBox = new ol.interaction.DragBox({
|
||||||
|
condition: ol.events.condition.shiftKeyOnly,
|
||||||
|
style: new ol.style.Style({
|
||||||
|
stroke: new ol.style.Stroke({
|
||||||
|
color: [0, 0, 255, 1]
|
||||||
|
})
|
||||||
|
})
|
||||||
|
});
|
||||||
|
|
||||||
|
map.addInteraction(dragBox);
|
||||||
|
|
||||||
|
var infoBox = document.getElementById('info');
|
||||||
|
|
||||||
|
dragBox.on('boxend', function(e) {
|
||||||
|
// features that intersect the box are added to the collection of
|
||||||
|
// selected features, and their names are displayed in the "info"
|
||||||
|
// div
|
||||||
|
var info = [];
|
||||||
|
var extent = dragBox.getGeometry().getExtent();
|
||||||
|
vectorSource.forEachFeatureIntersectingExtent(extent, function(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
|
||||||
|
dragBox.on('boxstart', function(e) {
|
||||||
|
selectedFeatures.clear();
|
||||||
|
infoBox.innerHTML = ' ';
|
||||||
|
});
|
||||||
|
map.on('click', function() {
|
||||||
|
selectedFeatures.clear();
|
||||||
|
infoBox.innerHTML = ' ';
|
||||||
|
});
|
||||||
@@ -66,7 +66,7 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="jquery.min.js" type="text/javascript"></script>
|
<script src="../resources/jquery.min.js" type="text/javascript"></script>
|
||||||
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
||||||
<script src="loader.js?id=brightness-contrast" type="text/javascript"></script>
|
<script src="loader.js?id=brightness-contrast" type="text/javascript"></script>
|
||||||
|
|
||||||
|
|||||||
@@ -5,18 +5,15 @@
|
|||||||
<meta http-equiv="X-UA-Compatible" content="chrome=1">
|
<meta http-equiv="X-UA-Compatible" content="chrome=1">
|
||||||
<meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width">
|
<meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width">
|
||||||
<link rel="stylesheet" href="../css/ol.css" type="text/css">
|
<link rel="stylesheet" href="../css/ol.css" type="text/css">
|
||||||
<link rel="stylesheet" href="../css/ol.css" type="text/css">
|
|
||||||
<link rel="stylesheet" href="../resources/bootstrap/css/bootstrap.min.css" type="text/css">
|
<link rel="stylesheet" href="../resources/bootstrap/css/bootstrap.min.css" type="text/css">
|
||||||
<link rel="stylesheet" href="../resources/layout.css" type="text/css">
|
<link rel="stylesheet" href="../resources/layout.css" type="text/css">
|
||||||
<link rel="stylesheet" href="../resources/bootstrap/css/bootstrap-responsive.min.css" type="text/css">
|
<link rel="stylesheet" href="../resources/bootstrap/css/bootstrap-responsive.min.css" type="text/css">
|
||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
div.fill {
|
.tooltip-inner {
|
||||||
width: 100%;
|
white-space: nowrap;
|
||||||
height: 100%;
|
}
|
||||||
}
|
|
||||||
</style>
|
</style>
|
||||||
<script src="http://maps.google.com/maps/api/js?v=3&sensor=false"></script>
|
<title>ol3 custom tooltips example</title>
|
||||||
<title>Google Maps integration example</title>
|
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
|
||||||
@@ -32,31 +29,34 @@
|
|||||||
|
|
||||||
<div class="row-fluid">
|
<div class="row-fluid">
|
||||||
<div class="span12">
|
<div class="span12">
|
||||||
<div id="map" class="map">
|
<div id="map" class="map"></div>
|
||||||
<div id="gmap" class="fill"></div>
|
|
||||||
<div id="olmap" class="fill"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="row-fluid">
|
<div class="row-fluid">
|
||||||
|
<div class="span12">
|
||||||
<div class="span4">
|
<h4 id="title">Custom tooltips</h4>
|
||||||
<h4 id="title">Google Maps integration example</h4>
|
<p id="shortdesc">
|
||||||
<p id="shortdesc">Example of a GMaps map with an ol3 map as control, to give users a Google base map with ol3 content on top.</p>
|
This example shows how to customize the buttons tooltips with
|
||||||
|
<a href="http://getbootstrap.com/javascript/#tooltips">Bootstrap</a>.
|
||||||
|
</p>
|
||||||
<div id="docs">
|
<div id="docs">
|
||||||
<p>See the <a href="google-map.js" target="_blank">google-map.js source</a> to see how this is done.</p>
|
<p>
|
||||||
|
See the <a href="button-title.js" target="_blank">button-title.js source</a> to see how this is done.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div id="tags">
|
||||||
|
custom, tooltip
|
||||||
</div>
|
</div>
|
||||||
<div id="tags">google</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="jquery.min.js" type="text/javascript"></script>
|
<script src="../resources/jquery.min.js" type="text/javascript"></script>
|
||||||
|
<script src="../resources/bootstrap/js/bootstrap.min.js" type="text/javascript"></script>
|
||||||
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
||||||
<script src="loader.js?id=google-map" type="text/javascript"></script>
|
<script src="loader.js?id=button-title" type="text/javascript"></script>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
27
examples/button-title.js
Normal file
27
examples/button-title.js
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
goog.require('ol.Map');
|
||||||
|
goog.require('ol.View');
|
||||||
|
goog.require('ol.layer.Tile');
|
||||||
|
goog.require('ol.source.OSM');
|
||||||
|
|
||||||
|
var map = new ol.Map({
|
||||||
|
layers: [
|
||||||
|
new ol.layer.Tile({
|
||||||
|
source: new ol.source.OSM()
|
||||||
|
})
|
||||||
|
],
|
||||||
|
renderer: exampleNS.getRendererFromQueryString(),
|
||||||
|
target: 'map',
|
||||||
|
view: new ol.View({
|
||||||
|
center: [-8730000, 5930000],
|
||||||
|
rotation: Math.PI / 5,
|
||||||
|
zoom: 8
|
||||||
|
})
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
$('.ol-zoom-in, .ol-zoom-out').tooltip({
|
||||||
|
placement: 'right'
|
||||||
|
});
|
||||||
|
$('.ol-rotate-reset, .ol-attribution button[title]').tooltip({
|
||||||
|
placement: 'left'
|
||||||
|
});
|
||||||
@@ -44,7 +44,7 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="jquery.min.js" type="text/javascript"></script>
|
<script src="../resources/jquery.min.js" type="text/javascript"></script>
|
||||||
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
||||||
<script src="loader.js?id=canvas-tiles" type="text/javascript"></script>
|
<script src="loader.js?id=canvas-tiles" type="text/javascript"></script>
|
||||||
|
|
||||||
|
|||||||
@@ -123,7 +123,7 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="jquery.min.js" type="text/javascript"></script>
|
<script src="../resources/jquery.min.js" type="text/javascript"></script>
|
||||||
<script src="loader.js?id=center" type="text/javascript"></script>
|
<script src="loader.js?id=center" type="text/javascript"></script>
|
||||||
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
||||||
|
|
||||||
|
|||||||
@@ -43,7 +43,7 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="jquery.min.js" type="text/javascript"></script>
|
<script src="../resources/jquery.min.js" type="text/javascript"></script>
|
||||||
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
||||||
<script src="loader.js?id=cluster" type="text/javascript"></script>
|
<script src="loader.js?id=cluster" type="text/javascript"></script>
|
||||||
|
|
||||||
|
|||||||
@@ -82,7 +82,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="jquery.min.js" type="text/javascript"></script>
|
<script src="../resources/jquery.min.js" type="text/javascript"></script>
|
||||||
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
||||||
<script src="loader.js?id=custom-controls" type="text/javascript"></script>
|
<script src="loader.js?id=custom-controls" type="text/javascript"></script>
|
||||||
|
|
||||||
|
|||||||
@@ -44,7 +44,7 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="jquery.min.js" type="text/javascript"></script>
|
<script src="../resources/jquery.min.js" type="text/javascript"></script>
|
||||||
<script src="http://d3js.org/d3.v3.min.js"></script>
|
<script src="http://d3js.org/d3.v3.min.js"></script>
|
||||||
<script src="http://d3js.org/topojson.v1.min.js"></script>
|
<script src="http://d3js.org/topojson.v1.min.js"></script>
|
||||||
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
||||||
|
|||||||
BIN
examples/data/Butterfly.png
Normal file
BIN
examples/data/Butterfly.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 61 KiB |
@@ -50,7 +50,7 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="jquery.min.js" type="text/javascript"></script>
|
<script src="../resources/jquery.min.js" type="text/javascript"></script>
|
||||||
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
||||||
<script src="loader.js?id=device-orientation" type="text/javascript"></script>
|
<script src="loader.js?id=device-orientation" type="text/javascript"></script>
|
||||||
|
|
||||||
|
|||||||
@@ -48,7 +48,7 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="jquery.min.js" type="text/javascript"></script>
|
<script src="../resources/jquery.min.js" type="text/javascript"></script>
|
||||||
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
||||||
<script src="loader.js?id=drag-and-drop-image-vector" type="text/javascript"></script>
|
<script src="loader.js?id=drag-and-drop-image-vector" type="text/javascript"></script>
|
||||||
|
|
||||||
|
|||||||
@@ -48,7 +48,7 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="jquery.min.js" type="text/javascript"></script>
|
<script src="../resources/jquery.min.js" type="text/javascript"></script>
|
||||||
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
||||||
<script src="loader.js?id=drag-and-drop" type="text/javascript"></script>
|
<script src="loader.js?id=drag-and-drop" type="text/javascript"></script>
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
<link rel="stylesheet" href="../resources/bootstrap/css/bootstrap.min.css" type="text/css">
|
<link rel="stylesheet" href="../resources/bootstrap/css/bootstrap.min.css" type="text/css">
|
||||||
<link rel="stylesheet" href="../resources/layout.css" type="text/css">
|
<link rel="stylesheet" href="../resources/layout.css" type="text/css">
|
||||||
<link rel="stylesheet" href="../resources/bootstrap/css/bootstrap-responsive.min.css" type="text/css">
|
<link rel="stylesheet" href="../resources/bootstrap/css/bootstrap-responsive.min.css" type="text/css">
|
||||||
<title>R-Tree example</title>
|
<title>Drag features example</title>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
|
||||||
@@ -31,21 +31,21 @@
|
|||||||
<div class="row-fluid">
|
<div class="row-fluid">
|
||||||
|
|
||||||
<div class="span12">
|
<div class="span12">
|
||||||
<h4 id="title">R-Tree example</h4>
|
<h4 id="title">Drag features example</h4>
|
||||||
<p id="shortdesc">R-Tree example. Please note that this example only works locally, it does not work when the examples are hosted. This is because it accesses internals the R-Tree data structure, which are not exported in the API.</p>
|
<p id="shortdesc">Example of a drag features interaction.</p>
|
||||||
<div id="docs">
|
<div id="docs">
|
||||||
<p>See the <a href="rtree.js" target="_blank">rtree.js source</a> to see how this is done.</p>
|
<p>See the <a href="drag-features.js" target="_blank">drag-features.js source</a> to see how this is done.</p>
|
||||||
</div>
|
</div>
|
||||||
<div id="tags">vector, rtree</div>
|
<div id="tags">drag, feature, vector, editing</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="jquery.min.js" type="text/javascript"></script>
|
<script src="../resources/jquery.min.js" type="text/javascript"></script>
|
||||||
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
||||||
<script src="loader.js?id=rtree" type="text/javascript"></script>
|
<script src="loader.js?id=drag-features" type="text/javascript"></script>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
192
examples/drag-features.js
Normal file
192
examples/drag-features.js
Normal file
@@ -0,0 +1,192 @@
|
|||||||
|
goog.require('ol.Feature');
|
||||||
|
goog.require('ol.Map');
|
||||||
|
goog.require('ol.View');
|
||||||
|
goog.require('ol.geom.LineString');
|
||||||
|
goog.require('ol.geom.Point');
|
||||||
|
goog.require('ol.geom.Polygon');
|
||||||
|
goog.require('ol.interaction');
|
||||||
|
goog.require('ol.interaction.Pointer');
|
||||||
|
goog.require('ol.layer.Tile');
|
||||||
|
goog.require('ol.layer.Vector');
|
||||||
|
goog.require('ol.source.TileJSON');
|
||||||
|
goog.require('ol.source.Vector');
|
||||||
|
goog.require('ol.style.Fill');
|
||||||
|
goog.require('ol.style.Icon');
|
||||||
|
goog.require('ol.style.Stroke');
|
||||||
|
goog.require('ol.style.Style');
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Define a namespace for the application.
|
||||||
|
*/
|
||||||
|
window.app = {};
|
||||||
|
var app = window.app;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @constructor
|
||||||
|
* @extends {ol.interaction.Pointer}
|
||||||
|
*/
|
||||||
|
app.Drag = function() {
|
||||||
|
|
||||||
|
ol.interaction.Pointer.call(this, {
|
||||||
|
handleDownEvent: app.Drag.prototype.handleDownEvent,
|
||||||
|
handleDragEvent: app.Drag.prototype.handleDragEvent,
|
||||||
|
handleMoveEvent: app.Drag.prototype.handleMoveEvent,
|
||||||
|
handleUpEvent: app.Drag.prototype.handleUpEvent
|
||||||
|
});
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @type {ol.Pixel}
|
||||||
|
* @private
|
||||||
|
*/
|
||||||
|
this.coordinate_ = null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @type {string|undefined}
|
||||||
|
* @private
|
||||||
|
*/
|
||||||
|
this.cursor_ = 'pointer';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @type {ol.Feature}
|
||||||
|
* @private
|
||||||
|
*/
|
||||||
|
this.feature_ = null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @type {string|undefined}
|
||||||
|
* @private
|
||||||
|
*/
|
||||||
|
this.previousCursor_ = undefined;
|
||||||
|
|
||||||
|
};
|
||||||
|
ol.inherits(app.Drag, ol.interaction.Pointer);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {ol.MapBrowserEvent} evt Map browser event.
|
||||||
|
* @return {boolean} `true` to start the drag sequence.
|
||||||
|
*/
|
||||||
|
app.Drag.prototype.handleDownEvent = function(evt) {
|
||||||
|
var map = evt.map;
|
||||||
|
|
||||||
|
var feature = map.forEachFeatureAtPixel(evt.pixel,
|
||||||
|
function(feature, layer) {
|
||||||
|
return feature;
|
||||||
|
});
|
||||||
|
|
||||||
|
if (feature) {
|
||||||
|
this.coordinate_ = evt.coordinate;
|
||||||
|
this.feature_ = feature;
|
||||||
|
}
|
||||||
|
|
||||||
|
return !!feature;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {ol.MapBrowserEvent} evt Map browser event.
|
||||||
|
*/
|
||||||
|
app.Drag.prototype.handleDragEvent = function(evt) {
|
||||||
|
var map = evt.map;
|
||||||
|
|
||||||
|
var feature = map.forEachFeatureAtPixel(evt.pixel,
|
||||||
|
function(feature, layer) {
|
||||||
|
return feature;
|
||||||
|
});
|
||||||
|
|
||||||
|
var deltaX = evt.coordinate[0] - this.coordinate_[0];
|
||||||
|
var deltaY = evt.coordinate[1] - this.coordinate_[1];
|
||||||
|
|
||||||
|
var geometry = /** @type {ol.geom.SimpleGeometry} */
|
||||||
|
(this.feature_.getGeometry());
|
||||||
|
geometry.translate(deltaX, deltaY);
|
||||||
|
|
||||||
|
this.coordinate_[0] = evt.coordinate[0];
|
||||||
|
this.coordinate_[1] = evt.coordinate[1];
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {ol.MapBrowserEvent} evt Event.
|
||||||
|
*/
|
||||||
|
app.Drag.prototype.handleMoveEvent = function(evt) {
|
||||||
|
if (this.cursor_) {
|
||||||
|
var map = evt.map;
|
||||||
|
var feature = map.forEachFeatureAtPixel(evt.pixel,
|
||||||
|
function(feature, layer) {
|
||||||
|
return feature;
|
||||||
|
});
|
||||||
|
var element = evt.map.getTargetElement();
|
||||||
|
if (feature) {
|
||||||
|
if (element.style.cursor != this.cursor_) {
|
||||||
|
this.previousCursor_ = element.style.cursor;
|
||||||
|
element.style.cursor = this.cursor_;
|
||||||
|
}
|
||||||
|
} else if (this.previousCursor_ !== undefined) {
|
||||||
|
element.style.cursor = this.previousCursor_;
|
||||||
|
this.previousCursor_ = undefined;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {ol.MapBrowserEvent} evt Map browser event.
|
||||||
|
* @return {boolean} `false` to stop the drag sequence.
|
||||||
|
*/
|
||||||
|
app.Drag.prototype.handleUpEvent = function(evt) {
|
||||||
|
this.coordinate_ = null;
|
||||||
|
this.feature_ = null;
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
var pointFeature = new ol.Feature(new ol.geom.Point([0, 0]));
|
||||||
|
|
||||||
|
var lineFeature = new ol.Feature(
|
||||||
|
new ol.geom.LineString([[-1e7, 1e6], [-1e6, 3e6]]));
|
||||||
|
|
||||||
|
var polygonFeature = new ol.Feature(
|
||||||
|
new ol.geom.Polygon([[[-3e6, -1e6], [-3e6, 1e6],
|
||||||
|
[-1e6, 1e6], [-1e6, -1e6], [-3e6, -1e6]]]));
|
||||||
|
|
||||||
|
|
||||||
|
var map = new ol.Map({
|
||||||
|
interactions: ol.interaction.defaults().extend([new app.Drag()]),
|
||||||
|
layers: [
|
||||||
|
new ol.layer.Tile({
|
||||||
|
source: new ol.source.TileJSON({
|
||||||
|
url: 'http://api.tiles.mapbox.com/v3/mapbox.geography-class.jsonp'
|
||||||
|
})
|
||||||
|
}),
|
||||||
|
new ol.layer.Vector({
|
||||||
|
source: new ol.source.Vector({
|
||||||
|
features: [pointFeature, lineFeature, polygonFeature]
|
||||||
|
}),
|
||||||
|
style: new ol.style.Style({
|
||||||
|
image: new ol.style.Icon(/** @type {olx.style.IconOptions} */ ({
|
||||||
|
anchor: [0.5, 46],
|
||||||
|
anchorXUnits: 'fraction',
|
||||||
|
anchorYUnits: 'pixels',
|
||||||
|
opacity: 0.95,
|
||||||
|
src: 'data/icon.png'
|
||||||
|
})),
|
||||||
|
stroke: new ol.style.Stroke({
|
||||||
|
width: 3,
|
||||||
|
color: [255, 0, 0, 1]
|
||||||
|
}),
|
||||||
|
fill: new ol.style.Fill({
|
||||||
|
color: [0, 0, 255, 0.6]
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
|
],
|
||||||
|
target: 'map',
|
||||||
|
view: new ol.View({
|
||||||
|
center: [0, 0],
|
||||||
|
zoom: 2
|
||||||
|
})
|
||||||
|
});
|
||||||
@@ -44,7 +44,7 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="jquery.min.js" type="text/javascript"></script>
|
<script src="../resources/jquery.min.js" type="text/javascript"></script>
|
||||||
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
||||||
<script src="loader.js?id=drag-rotate-and-zoom" type="text/javascript"></script>
|
<script src="loader.js?id=drag-rotate-and-zoom" type="text/javascript"></script>
|
||||||
|
|
||||||
|
|||||||
@@ -53,7 +53,7 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="jquery.min.js" type="text/javascript"></script>
|
<script src="../resources/jquery.min.js" type="text/javascript"></script>
|
||||||
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
||||||
<script src="loader.js?id=draw-and-modify-features" type="text/javascript"></script>
|
<script src="loader.js?id=draw-and-modify-features" type="text/javascript"></script>
|
||||||
|
|
||||||
|
|||||||
@@ -53,7 +53,7 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="jquery.min.js" type="text/javascript"></script>
|
<script src="../resources/jquery.min.js" type="text/javascript"></script>
|
||||||
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
||||||
<script src="loader.js?id=draw-features" type="text/javascript"></script>
|
<script src="loader.js?id=draw-features" type="text/javascript"></script>
|
||||||
|
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ var vector = new ol.layer.Vector({
|
|||||||
|
|
||||||
var map = new ol.Map({
|
var map = new ol.Map({
|
||||||
layers: [raster, vector],
|
layers: [raster, vector],
|
||||||
|
renderer: exampleNS.getRendererFromQueryString(),
|
||||||
target: 'map',
|
target: 'map',
|
||||||
view: new ol.View({
|
view: new ol.View({
|
||||||
center: [-11000000, 4600000],
|
center: [-11000000, 4600000],
|
||||||
|
|||||||
@@ -43,7 +43,7 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="jquery.min.js" type="text/javascript"></script>
|
<script src="../resources/jquery.min.js" type="text/javascript"></script>
|
||||||
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
||||||
<script src="loader.js?id=dynamic-data" type="text/javascript"></script>
|
<script src="loader.js?id=dynamic-data" type="text/javascript"></script>
|
||||||
|
|
||||||
|
|||||||
@@ -1,11 +1,14 @@
|
|||||||
|
goog.require('ol.Feature');
|
||||||
goog.require('ol.Map');
|
goog.require('ol.Map');
|
||||||
goog.require('ol.View');
|
goog.require('ol.View');
|
||||||
goog.require('ol.geom.MultiPoint');
|
goog.require('ol.geom.MultiPoint');
|
||||||
|
goog.require('ol.geom.Point');
|
||||||
goog.require('ol.layer.Tile');
|
goog.require('ol.layer.Tile');
|
||||||
goog.require('ol.source.MapQuest');
|
goog.require('ol.source.MapQuest');
|
||||||
goog.require('ol.style.Circle');
|
goog.require('ol.style.Circle');
|
||||||
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');
|
||||||
|
|
||||||
|
|
||||||
var map = new ol.Map({
|
var map = new ol.Map({
|
||||||
@@ -14,6 +17,7 @@ var map = new ol.Map({
|
|||||||
source: new ol.source.MapQuest({layer: 'sat'})
|
source: new ol.source.MapQuest({layer: 'sat'})
|
||||||
})
|
})
|
||||||
],
|
],
|
||||||
|
renderer: exampleNS.getRendererFromQueryString(),
|
||||||
target: 'map',
|
target: 'map',
|
||||||
view: new ol.View({
|
view: new ol.View({
|
||||||
center: [0, 0],
|
center: [0, 0],
|
||||||
@@ -28,6 +32,20 @@ var imageStyle = new ol.style.Circle({
|
|||||||
stroke: new ol.style.Stroke({color: 'red', width: 1})
|
stroke: new ol.style.Stroke({color: 'red', width: 1})
|
||||||
});
|
});
|
||||||
|
|
||||||
|
var headInnerImageStyle = new ol.style.Style({
|
||||||
|
image: new ol.style.Circle({
|
||||||
|
radius: 2,
|
||||||
|
snapToPixel: false,
|
||||||
|
fill: new ol.style.Fill({color: 'blue'})
|
||||||
|
})
|
||||||
|
});
|
||||||
|
|
||||||
|
var headOuterImageStyle = new ol.style.Circle({
|
||||||
|
radius: 5,
|
||||||
|
snapToPixel: false,
|
||||||
|
fill: new ol.style.Fill({color: 'black'})
|
||||||
|
});
|
||||||
|
|
||||||
var n = 200;
|
var n = 200;
|
||||||
var omegaTheta = 30000; // Rotation period in ms
|
var omegaTheta = 30000; // Rotation period in ms
|
||||||
var R = 7e6;
|
var R = 7e6;
|
||||||
@@ -48,6 +66,14 @@ map.on('postcompose', function(event) {
|
|||||||
vectorContext.setImageStyle(imageStyle);
|
vectorContext.setImageStyle(imageStyle);
|
||||||
vectorContext.drawMultiPointGeometry(
|
vectorContext.drawMultiPointGeometry(
|
||||||
new ol.geom.MultiPoint(coordinates), null);
|
new ol.geom.MultiPoint(coordinates), null);
|
||||||
|
|
||||||
|
var headPoint = new ol.geom.Point(coordinates[coordinates.length - 1]);
|
||||||
|
var headFeature = new ol.Feature(headPoint);
|
||||||
|
vectorContext.drawFeature(headFeature, headInnerImageStyle);
|
||||||
|
|
||||||
|
vectorContext.setImageStyle(headOuterImageStyle);
|
||||||
|
vectorContext.drawMultiPointGeometry(headPoint, null);
|
||||||
|
|
||||||
map.render();
|
map.render();
|
||||||
});
|
});
|
||||||
map.render();
|
map.render();
|
||||||
|
|||||||
75
examples/earthquake-clusters.html
Normal file
75
examples/earthquake-clusters.html
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="chrome=1">
|
||||||
|
<meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width">
|
||||||
|
<link rel="stylesheet" href="../css/ol.css" type="text/css">
|
||||||
|
<link rel="stylesheet" href="../resources/bootstrap/css/bootstrap.min.css" type="text/css">
|
||||||
|
<link rel="stylesheet" href="../resources/layout.css" type="text/css">
|
||||||
|
<link rel="stylesheet" href="../resources/bootstrap/css/bootstrap-responsive.min.css" type="text/css">
|
||||||
|
<title>Earthquake Clusters</title>
|
||||||
|
<style>
|
||||||
|
#map {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
#info {
|
||||||
|
position: absolute;
|
||||||
|
height: 1px;
|
||||||
|
width: 1px;
|
||||||
|
z-index: 100;
|
||||||
|
}
|
||||||
|
.tooltip.in {
|
||||||
|
opacity: 1;
|
||||||
|
filter: alpha(opacity=100);
|
||||||
|
}
|
||||||
|
.tooltip.top .tooltip-arrow {
|
||||||
|
border-top-color: white;
|
||||||
|
}
|
||||||
|
.tooltip-inner {
|
||||||
|
border: 2px solid white;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<div class="navbar navbar-inverse navbar-fixed-top">
|
||||||
|
<div class="navbar-inner">
|
||||||
|
<div class="container">
|
||||||
|
<a class="brand" href="./"><img src="../resources/logo.png"> OpenLayers 3 Examples</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="container-fluid">
|
||||||
|
|
||||||
|
<div class="row-fluid">
|
||||||
|
<div class="span12">
|
||||||
|
<div id="map" class="map"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row-fluid">
|
||||||
|
|
||||||
|
<div class="span12">
|
||||||
|
<h4 id="title">Earthquake Clusters</h4>
|
||||||
|
<p id="shortdesc">Demonstrates the use of style geometries to render source features of a cluster.</p>
|
||||||
|
<div id="docs">
|
||||||
|
<p>
|
||||||
|
This example parses a KML file and renders the features as clusters on a vector layer. The styling in this example is quite involved. Single earthquake locations (rendered as stars) have a size relative to their magnitude. Clusters have an opacity relative to the number of features in the cluster, and a size that represents the extent of the features that make up the cluster. When clicking or hovering on a cluster, the individual features that make up the cluster will be shown.
|
||||||
|
</p>
|
||||||
|
<p>To achieve this, we make heavy use of style functions and <code>ol.style.Style#geometry</code>. See the <a href="earthquake-clusters.js" target="_blank">earthquake-clusters.js source</a> to see how this is done.</p>
|
||||||
|
</div>
|
||||||
|
<div id="tags">KML, vector, style, geometry, cluster</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script src="../resources/jquery.min.js" type="text/javascript"></script>
|
||||||
|
<script src="../resources/bootstrap/js/bootstrap.min.js" type="text/javascript"></script>
|
||||||
|
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
||||||
|
<script src="loader.js?id=earthquake-clusters" type="text/javascript"></script>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
154
examples/earthquake-clusters.js
Normal file
154
examples/earthquake-clusters.js
Normal file
@@ -0,0 +1,154 @@
|
|||||||
|
goog.require('ol.Map');
|
||||||
|
goog.require('ol.View');
|
||||||
|
goog.require('ol.extent');
|
||||||
|
goog.require('ol.interaction');
|
||||||
|
goog.require('ol.interaction.Select');
|
||||||
|
goog.require('ol.layer.Tile');
|
||||||
|
goog.require('ol.layer.Vector');
|
||||||
|
goog.require('ol.source.Cluster');
|
||||||
|
goog.require('ol.source.KML');
|
||||||
|
goog.require('ol.source.Stamen');
|
||||||
|
goog.require('ol.style.Circle');
|
||||||
|
goog.require('ol.style.Fill');
|
||||||
|
goog.require('ol.style.RegularShape');
|
||||||
|
goog.require('ol.style.Stroke');
|
||||||
|
goog.require('ol.style.Style');
|
||||||
|
goog.require('ol.style.Text');
|
||||||
|
|
||||||
|
|
||||||
|
var earthquakeFill = new ol.style.Fill({
|
||||||
|
color: 'rgba(255, 153, 0, 0.8)'
|
||||||
|
});
|
||||||
|
var earthquakeStroke = new ol.style.Stroke({
|
||||||
|
color: 'rgba(255, 204, 0, 0.2)',
|
||||||
|
width: 1
|
||||||
|
});
|
||||||
|
var textFill = new ol.style.Fill({
|
||||||
|
color: '#fff'
|
||||||
|
});
|
||||||
|
var textStroke = new ol.style.Stroke({
|
||||||
|
color: 'rgba(0, 0, 0, 0.6)',
|
||||||
|
width: 3
|
||||||
|
});
|
||||||
|
var invisibleFill = new ol.style.Fill({
|
||||||
|
color: 'rgba(255, 255, 255, 0.01)'
|
||||||
|
});
|
||||||
|
|
||||||
|
function createEarthquakeStyle(feature) {
|
||||||
|
// 2012_Earthquakes_Mag5.kml stores the magnitude of each earthquake in a
|
||||||
|
// standards-violating <magnitude> tag in each Placemark. We extract it
|
||||||
|
// from the Placemark's name instead.
|
||||||
|
var name = feature.get('name');
|
||||||
|
var magnitude = parseFloat(name.substr(2));
|
||||||
|
var radius = 5 + 20 * (magnitude - 5);
|
||||||
|
|
||||||
|
return new ol.style.Style({
|
||||||
|
geometry: feature.getGeometry(),
|
||||||
|
image: new ol.style.RegularShape({
|
||||||
|
radius1: radius,
|
||||||
|
radius2: 3,
|
||||||
|
points: 5,
|
||||||
|
angle: Math.PI,
|
||||||
|
fill: earthquakeFill,
|
||||||
|
stroke: earthquakeStroke
|
||||||
|
})
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
var maxFeatureCount;
|
||||||
|
function calculateClusterInfo(resolution) {
|
||||||
|
maxFeatureCount = 0;
|
||||||
|
var features = vector.getSource().getFeatures();
|
||||||
|
var feature, radius;
|
||||||
|
for (var i = features.length - 1; i >= 0; --i) {
|
||||||
|
feature = features[i];
|
||||||
|
var originalFeatures = feature.get('features');
|
||||||
|
var extent = ol.extent.createEmpty();
|
||||||
|
for (var j = 0, jj = originalFeatures.length; j < jj; ++j) {
|
||||||
|
ol.extent.extend(extent, originalFeatures[j].getGeometry().getExtent());
|
||||||
|
}
|
||||||
|
maxFeatureCount = Math.max(maxFeatureCount, jj);
|
||||||
|
radius = 0.25 * (ol.extent.getWidth(extent) + ol.extent.getHeight(extent)) /
|
||||||
|
resolution;
|
||||||
|
feature.set('radius', radius);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var currentResolution;
|
||||||
|
function styleFunction(feature, resolution) {
|
||||||
|
if (resolution != currentResolution) {
|
||||||
|
calculateClusterInfo(resolution);
|
||||||
|
currentResolution = resolution;
|
||||||
|
}
|
||||||
|
var style;
|
||||||
|
var size = feature.get('features').length;
|
||||||
|
if (size > 1) {
|
||||||
|
style = [new ol.style.Style({
|
||||||
|
image: new ol.style.Circle({
|
||||||
|
radius: feature.get('radius'),
|
||||||
|
fill: new ol.style.Fill({
|
||||||
|
color: [255, 153, 0, Math.min(0.8, 0.4 + (size / maxFeatureCount))]
|
||||||
|
})
|
||||||
|
}),
|
||||||
|
text: new ol.style.Text({
|
||||||
|
text: size.toString(),
|
||||||
|
fill: textFill,
|
||||||
|
stroke: textStroke
|
||||||
|
})
|
||||||
|
})];
|
||||||
|
} else {
|
||||||
|
var originalFeature = feature.get('features')[0];
|
||||||
|
style = [createEarthquakeStyle(originalFeature)];
|
||||||
|
}
|
||||||
|
return style;
|
||||||
|
}
|
||||||
|
|
||||||
|
function selectStyleFunction(feature, resolution) {
|
||||||
|
var styles = [new ol.style.Style({
|
||||||
|
image: new ol.style.Circle({
|
||||||
|
radius: feature.get('radius'),
|
||||||
|
fill: invisibleFill
|
||||||
|
})
|
||||||
|
})];
|
||||||
|
var originalFeatures = feature.get('features');
|
||||||
|
var originalFeature;
|
||||||
|
for (var i = originalFeatures.length - 1; i >= 0; --i) {
|
||||||
|
originalFeature = originalFeatures[i];
|
||||||
|
styles.push(createEarthquakeStyle(originalFeature));
|
||||||
|
}
|
||||||
|
return styles;
|
||||||
|
}
|
||||||
|
|
||||||
|
var vector = new ol.layer.Vector({
|
||||||
|
source: new ol.source.Cluster({
|
||||||
|
distance: 40,
|
||||||
|
source: new ol.source.KML({
|
||||||
|
extractStyles: false,
|
||||||
|
projection: 'EPSG:3857',
|
||||||
|
url: 'data/kml/2012_Earthquakes_Mag5.kml'
|
||||||
|
})
|
||||||
|
}),
|
||||||
|
style: styleFunction
|
||||||
|
});
|
||||||
|
|
||||||
|
var raster = new ol.layer.Tile({
|
||||||
|
source: new ol.source.Stamen({
|
||||||
|
layer: 'toner'
|
||||||
|
})
|
||||||
|
});
|
||||||
|
|
||||||
|
var map = new ol.Map({
|
||||||
|
layers: [raster, vector],
|
||||||
|
interactions: ol.interaction.defaults().extend([new ol.interaction.Select({
|
||||||
|
condition: function(evt) {
|
||||||
|
return evt.originalEvent.type == 'mousemove' ||
|
||||||
|
evt.type == 'singleclick';
|
||||||
|
},
|
||||||
|
style: selectStyleFunction
|
||||||
|
})]),
|
||||||
|
target: 'map',
|
||||||
|
view: new ol.View({
|
||||||
|
center: [0, 0],
|
||||||
|
zoom: 2
|
||||||
|
})
|
||||||
|
});
|
||||||
@@ -43,7 +43,7 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="jquery.min.js" type="text/javascript"></script>
|
<script src="../resources/jquery.min.js" type="text/javascript"></script>
|
||||||
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
||||||
<script src="loader.js?id=epsg-4326" type="text/javascript"></script>
|
<script src="loader.js?id=epsg-4326" type="text/javascript"></script>
|
||||||
|
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ goog.require('ol.source.TileWMS');
|
|||||||
var layers = [
|
var layers = [
|
||||||
new ol.layer.Tile({
|
new ol.layer.Tile({
|
||||||
source: new ol.source.TileWMS({
|
source: new ol.source.TileWMS({
|
||||||
url: 'http://demo.opengeo.org/geoserver/wms',
|
url: 'http://demo.boundlessgeo.com/geoserver/wms',
|
||||||
params: {
|
params: {
|
||||||
'LAYERS': 'ne:NE1_HR_LC_SR_W_DR'
|
'LAYERS': 'ne:NE1_HR_LC_SR_W_DR'
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -48,7 +48,7 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="jquery.min.js" type="text/javascript"></script>
|
<script src="../resources/jquery.min.js" type="text/javascript"></script>
|
||||||
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
||||||
<script src="loader.js?id=export-map" type="text/javascript"></script>
|
<script src="loader.js?id=export-map" type="text/javascript"></script>
|
||||||
|
|
||||||
|
|||||||
@@ -2,13 +2,20 @@ 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.layer.Vector');
|
||||||
|
goog.require('ol.source.GeoJSON');
|
||||||
goog.require('ol.source.OSM');
|
goog.require('ol.source.OSM');
|
||||||
|
|
||||||
|
|
||||||
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()
|
||||||
|
}),
|
||||||
|
new ol.layer.Vector({
|
||||||
|
source: new ol.source.GeoJSON({
|
||||||
|
projection: 'EPSG:3857',
|
||||||
|
url: 'data/geojson/countries.geojson'
|
||||||
|
})
|
||||||
})
|
})
|
||||||
],
|
],
|
||||||
target: 'map',
|
target: 'map',
|
||||||
|
|||||||
@@ -56,7 +56,7 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="jquery.min.js" type="text/javascript"></script>
|
<script src="../resources/jquery.min.js" type="text/javascript"></script>
|
||||||
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
||||||
<script src="loader.js?id=fractal" type="text/javascript"></script>
|
<script src="loader.js?id=fractal" type="text/javascript"></script>
|
||||||
|
|
||||||
|
|||||||
@@ -56,7 +56,7 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="jquery.min.js" type="text/javascript"></script>
|
<script src="../resources/jquery.min.js" type="text/javascript"></script>
|
||||||
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
||||||
<script src="loader.js?id=full-screen-drag-rotate-and-zoom" type="text/javascript"></script>
|
<script src="loader.js?id=full-screen-drag-rotate-and-zoom" type="text/javascript"></script>
|
||||||
|
|
||||||
|
|||||||
@@ -62,7 +62,7 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="jquery.min.js" type="text/javascript"></script>
|
<script src="../resources/jquery.min.js" type="text/javascript"></script>
|
||||||
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
||||||
<script src="loader.js?id=full-screen" type="text/javascript"></script>
|
<script src="loader.js?id=full-screen" type="text/javascript"></script>
|
||||||
|
|
||||||
|
|||||||
@@ -43,7 +43,7 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="jquery.min.js" type="text/javascript"></script>
|
<script src="../resources/jquery.min.js" type="text/javascript"></script>
|
||||||
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
||||||
<script src="loader.js?id=geojson" type="text/javascript"></script>
|
<script src="loader.js?id=geojson" type="text/javascript"></script>
|
||||||
|
|
||||||
|
|||||||
@@ -40,7 +40,7 @@
|
|||||||
<button id="simulate">Simulate</button>
|
<button id="simulate">Simulate</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="jquery.min.js" type="text/javascript"></script>
|
<script src="../resources/jquery.min.js" type="text/javascript"></script>
|
||||||
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
||||||
<script src="loader.js?id=geolocation-orientation" type="text/javascript"></script>
|
<script src="loader.js?id=geolocation-orientation" type="text/javascript"></script>
|
||||||
|
|
||||||
|
|||||||
@@ -220,7 +220,7 @@ function simulatePositionChange(position) {
|
|||||||
'EPSG:3857');
|
'EPSG:3857');
|
||||||
geolocation.set('position', projectedPosition);
|
geolocation.set('position', projectedPosition);
|
||||||
geolocation.set('speed', coords.speed);
|
geolocation.set('speed', coords.speed);
|
||||||
geolocation.dispatchChangeEvent();
|
geolocation.changed();
|
||||||
}
|
}
|
||||||
|
|
||||||
function disableButtons() {
|
function disableButtons() {
|
||||||
|
|||||||
@@ -53,7 +53,7 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="jquery.min.js" type="text/javascript"></script>
|
<script src="../resources/jquery.min.js" type="text/javascript"></script>
|
||||||
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
||||||
<script src="loader.js?id=geolocation" type="text/javascript"></script>
|
<script src="loader.js?id=geolocation" type="text/javascript"></script>
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,10 @@ goog.require('ol.dom.Input');
|
|||||||
goog.require('ol.geom.Point');
|
goog.require('ol.geom.Point');
|
||||||
goog.require('ol.layer.Tile');
|
goog.require('ol.layer.Tile');
|
||||||
goog.require('ol.source.OSM');
|
goog.require('ol.source.OSM');
|
||||||
|
goog.require('ol.style.Circle');
|
||||||
|
goog.require('ol.style.Fill');
|
||||||
|
goog.require('ol.style.Stroke');
|
||||||
|
goog.require('ol.style.Style');
|
||||||
|
|
||||||
var view = new ol.View({
|
var view = new ol.View({
|
||||||
center: [0, 0],
|
center: [0, 0],
|
||||||
@@ -57,6 +60,19 @@ var accuracyFeature = new ol.Feature();
|
|||||||
accuracyFeature.bindTo('geometry', geolocation, 'accuracyGeometry');
|
accuracyFeature.bindTo('geometry', geolocation, 'accuracyGeometry');
|
||||||
|
|
||||||
var positionFeature = new ol.Feature();
|
var positionFeature = new ol.Feature();
|
||||||
|
positionFeature.setStyle(new ol.style.Style({
|
||||||
|
image: new ol.style.Circle({
|
||||||
|
radius: 6,
|
||||||
|
fill: new ol.style.Fill({
|
||||||
|
color: '#3399CC'
|
||||||
|
}),
|
||||||
|
stroke: new ol.style.Stroke({
|
||||||
|
color: '#fff',
|
||||||
|
width: 2
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}));
|
||||||
|
|
||||||
positionFeature.bindTo('geometry', geolocation, 'position')
|
positionFeature.bindTo('geometry', geolocation, 'position')
|
||||||
.transform(function() {}, function(coordinates) {
|
.transform(function() {}, function(coordinates) {
|
||||||
return coordinates ? new ol.geom.Point(coordinates) : null;
|
return coordinates ? new ol.geom.Point(coordinates) : null;
|
||||||
|
|||||||
@@ -49,7 +49,7 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="jquery.min.js" type="text/javascript"></script>
|
<script src="../resources/jquery.min.js" type="text/javascript"></script>
|
||||||
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
||||||
<script src="loader.js?id=getfeatureinfo-image" type="text/javascript"></script>
|
<script src="loader.js?id=getfeatureinfo-image" type="text/javascript"></script>
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ goog.require('ol.source.ImageWMS');
|
|||||||
|
|
||||||
|
|
||||||
var wmsSource = new ol.source.ImageWMS({
|
var wmsSource = new ol.source.ImageWMS({
|
||||||
url: 'http://demo.opengeo.org/geoserver/wms',
|
url: 'http://demo.boundlessgeo.com/geoserver/wms',
|
||||||
params: {'LAYERS': 'ne:ne'},
|
params: {'LAYERS': 'ne:ne'},
|
||||||
serverType: 'geoserver'
|
serverType: 'geoserver'
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -49,7 +49,7 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="jquery.min.js" type="text/javascript"></script>
|
<script src="../resources/jquery.min.js" type="text/javascript"></script>
|
||||||
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
||||||
<script src="loader.js?id=getfeatureinfo-tile" type="text/javascript"></script>
|
<script src="loader.js?id=getfeatureinfo-tile" type="text/javascript"></script>
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ goog.require('ol.source.TileWMS');
|
|||||||
|
|
||||||
|
|
||||||
var wmsSource = new ol.source.TileWMS({
|
var wmsSource = new ol.source.TileWMS({
|
||||||
url: 'http://demo.opengeo.org/geoserver/wms',
|
url: 'http://demo.boundlessgeo.com/geoserver/wms',
|
||||||
params: {'LAYERS': 'ne:ne'},
|
params: {'LAYERS': 'ne:ne'},
|
||||||
serverType: 'geoserver'
|
serverType: 'geoserver'
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,67 +0,0 @@
|
|||||||
// NOCOMPILE
|
|
||||||
// This example uses the GMapx v3 API, which we do not have an exports file for.
|
|
||||||
goog.require('ol.Map');
|
|
||||||
goog.require('ol.View');
|
|
||||||
goog.require('ol.interaction');
|
|
||||||
goog.require('ol.interaction.DragPan');
|
|
||||||
goog.require('ol.layer.Vector');
|
|
||||||
goog.require('ol.proj');
|
|
||||||
goog.require('ol.source.GeoJSON');
|
|
||||||
goog.require('ol.style.Fill');
|
|
||||||
goog.require('ol.style.Stroke');
|
|
||||||
goog.require('ol.style.Style');
|
|
||||||
|
|
||||||
|
|
||||||
var gmap = new google.maps.Map(document.getElementById('gmap'), {
|
|
||||||
disableDefaultUI: true,
|
|
||||||
keyboardShortcuts: false,
|
|
||||||
draggable: false,
|
|
||||||
disableDoubleClickZoom: true,
|
|
||||||
scrollwheel: false,
|
|
||||||
streetViewControl: false
|
|
||||||
});
|
|
||||||
|
|
||||||
var view = new ol.View({
|
|
||||||
// make sure the view doesn't go beyond the 22 zoom levels of Google Maps
|
|
||||||
maxZoom: 21
|
|
||||||
});
|
|
||||||
view.on('change:center', function() {
|
|
||||||
var center = ol.proj.transform(view.getCenter(), 'EPSG:3857', 'EPSG:4326');
|
|
||||||
gmap.setCenter(new google.maps.LatLng(center[1], center[0]));
|
|
||||||
});
|
|
||||||
view.on('change:resolution', function() {
|
|
||||||
gmap.setZoom(view.getZoom());
|
|
||||||
});
|
|
||||||
|
|
||||||
var vector = new ol.layer.Vector({
|
|
||||||
source: new ol.source.GeoJSON({
|
|
||||||
url: 'data/geojson/countries.geojson',
|
|
||||||
projection: 'EPSG:3857'
|
|
||||||
}),
|
|
||||||
style: new ol.style.Style({
|
|
||||||
fill: new ol.style.Fill({
|
|
||||||
color: 'rgba(255, 255, 255, 0.6)'
|
|
||||||
}),
|
|
||||||
stroke: new ol.style.Stroke({
|
|
||||||
color: '#319FD3',
|
|
||||||
width: 1
|
|
||||||
})
|
|
||||||
})
|
|
||||||
});
|
|
||||||
|
|
||||||
var olMapDiv = document.getElementById('olmap');
|
|
||||||
var map = new ol.Map({
|
|
||||||
layers: [vector],
|
|
||||||
interactions: ol.interaction.defaults({
|
|
||||||
altShiftDragRotate: false,
|
|
||||||
dragPan: false,
|
|
||||||
rotate: false
|
|
||||||
}).extend([new ol.interaction.DragPan({kinetic: null})]),
|
|
||||||
target: olMapDiv,
|
|
||||||
view: view
|
|
||||||
});
|
|
||||||
view.setCenter([0, 0]);
|
|
||||||
view.setZoom(1);
|
|
||||||
|
|
||||||
olMapDiv.parentNode.removeChild(olMapDiv);
|
|
||||||
gmap.controls[google.maps.ControlPosition.TOP_LEFT].push(olMapDiv);
|
|
||||||
@@ -54,7 +54,7 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="jquery.min.js" type="text/javascript"></script>
|
<script src="../resources/jquery.min.js" type="text/javascript"></script>
|
||||||
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
||||||
<script src="loader.js?id=gpx" type="text/javascript"></script>
|
<script src="loader.js?id=gpx" type="text/javascript"></script>
|
||||||
|
|
||||||
|
|||||||
@@ -96,7 +96,7 @@ map.on('click', function(evt) {
|
|||||||
|
|
||||||
var exportGPXElement = document.getElementById('export-gpx');
|
var exportGPXElement = document.getElementById('export-gpx');
|
||||||
if ('download' in exportGPXElement) {
|
if ('download' in exportGPXElement) {
|
||||||
var vectorSource = /** @type {ol.source.Vector} */ (vector.getSource());
|
var vectorSource = vector.getSource();
|
||||||
exportGPXElement.addEventListener('click', function(e) {
|
exportGPXElement.addEventListener('click', function(e) {
|
||||||
if (!exportGPXElement.href) {
|
if (!exportGPXElement.href) {
|
||||||
var features = [];
|
var features = [];
|
||||||
@@ -105,12 +105,10 @@ if ('download' in exportGPXElement) {
|
|||||||
clone.getGeometry().transform(projection, 'EPSG:4326');
|
clone.getGeometry().transform(projection, 'EPSG:4326');
|
||||||
features.push(clone);
|
features.push(clone);
|
||||||
});
|
});
|
||||||
var node = new ol.format.GPX().writeFeatures(features);
|
var string = new ol.format.GPX().writeFeatures(features);
|
||||||
var string = new XMLSerializer().serializeToString(
|
|
||||||
/** @type {Node} */ (node));
|
|
||||||
var base64 = exampleNS.strToBase64(string);
|
var base64 = exampleNS.strToBase64(string);
|
||||||
exportGPXElement.href =
|
exportGPXElement.href =
|
||||||
'data:gpx+xml;base64,' + base64;
|
'data:text/gpx+xml;base64,' + base64;
|
||||||
}
|
}
|
||||||
}, false);
|
}, false);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -43,7 +43,7 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="jquery.min.js" type="text/javascript"></script>
|
<script src="../resources/jquery.min.js" type="text/javascript"></script>
|
||||||
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
||||||
<script src="loader.js?id=graticule" type="text/javascript"></script>
|
<script src="loader.js?id=graticule" type="text/javascript"></script>
|
||||||
|
|
||||||
|
|||||||
@@ -44,7 +44,7 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="jquery.min.js" type="text/javascript"></script>
|
<script src="../resources/jquery.min.js" type="text/javascript"></script>
|
||||||
<script src="loader.js?id=heatmap-earthquakes" type="text/javascript"></script>
|
<script src="loader.js?id=heatmap-earthquakes" type="text/javascript"></script>
|
||||||
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
||||||
|
|
||||||
|
|||||||
@@ -66,7 +66,7 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="jquery.min.js" type="text/javascript"></script>
|
<script src="../resources/jquery.min.js" type="text/javascript"></script>
|
||||||
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
||||||
<script src="loader.js?id=hue-saturation" type="text/javascript"></script>
|
<script src="loader.js?id=hue-saturation" type="text/javascript"></script>
|
||||||
|
|
||||||
|
|||||||
53
examples/icon-sprite-webgl.html
Normal file
53
examples/icon-sprite-webgl.html
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="chrome=1">
|
||||||
|
<meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width">
|
||||||
|
<link rel="stylesheet" href="../css/ol.css" type="text/css">
|
||||||
|
<link rel="stylesheet" href="../resources/bootstrap/css/bootstrap.min.css" type="text/css">
|
||||||
|
<link rel="stylesheet" href="../resources/layout.css" type="text/css">
|
||||||
|
<link rel="stylesheet" href="../resources/bootstrap/css/bootstrap-responsive.min.css" type="text/css">
|
||||||
|
<title>Icon sprites with WebGL example</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<div class="navbar navbar-inverse navbar-fixed-top">
|
||||||
|
<div class="navbar-inner">
|
||||||
|
<div class="container">
|
||||||
|
<a class="brand" href="./"><img src="../resources/logo.png"> OpenLayers 3 Examples</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="container-fluid">
|
||||||
|
|
||||||
|
<div class="row-fluid">
|
||||||
|
<div class="span12">
|
||||||
|
<div id="map" class="map"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row-fluid">
|
||||||
|
|
||||||
|
<div class="span12">
|
||||||
|
<h4 id="title">Icon sprite with WebGL example</h4>
|
||||||
|
<p id="shortdesc">Icon sprite with WebGL.</p>
|
||||||
|
<div id="docs">
|
||||||
|
<p>See the <a href="icon-sprite-webgl.js" target="_blank">icon-sprite-webgl.js source</a> to see how this is done.</p>
|
||||||
|
<p>In this example a sprite image is used for the icon styles. Using a sprite is required to get good performance with WebGL.</p>
|
||||||
|
</div>
|
||||||
|
<div id="tags">webgl, icon, sprite, vector, point</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script src="../resources/jquery.min.js" type="text/javascript"></script>
|
||||||
|
<script src="../resources/bootstrap/js/bootstrap.min.js" type="text/javascript"></script>
|
||||||
|
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
||||||
|
<script src="loader.js?id=icon-sprite-webgl" type="text/javascript"></script>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
111
examples/icon-sprite-webgl.js
Normal file
111
examples/icon-sprite-webgl.js
Normal file
@@ -0,0 +1,111 @@
|
|||||||
|
goog.require('ol.Feature');
|
||||||
|
goog.require('ol.FeatureOverlay');
|
||||||
|
goog.require('ol.Map');
|
||||||
|
goog.require('ol.View');
|
||||||
|
goog.require('ol.geom.Point');
|
||||||
|
goog.require('ol.layer.Vector');
|
||||||
|
goog.require('ol.source.Vector');
|
||||||
|
goog.require('ol.style.Icon');
|
||||||
|
goog.require('ol.style.Style');
|
||||||
|
|
||||||
|
|
||||||
|
var iconInfo = [{
|
||||||
|
offset: [0, 0],
|
||||||
|
opacity: 1.0,
|
||||||
|
rotateWithView: true,
|
||||||
|
rotation: 0.0,
|
||||||
|
scale: 1.0,
|
||||||
|
size: [55, 55]
|
||||||
|
}, {
|
||||||
|
offset: [110, 86],
|
||||||
|
opacity: 0.75,
|
||||||
|
rotateWithView: false,
|
||||||
|
rotation: Math.PI / 2.0,
|
||||||
|
scale: 1.25,
|
||||||
|
size: [55, 55]
|
||||||
|
}, {
|
||||||
|
offset: [55, 0],
|
||||||
|
opacity: 0.5,
|
||||||
|
rotateWithView: true,
|
||||||
|
rotation: Math.PI / 3.0,
|
||||||
|
scale: 1.5,
|
||||||
|
size: [55, 86]
|
||||||
|
}, {
|
||||||
|
offset: [212, 0],
|
||||||
|
opacity: 1.0,
|
||||||
|
rotateWithView: true,
|
||||||
|
rotation: 0.0,
|
||||||
|
scale: 1.0,
|
||||||
|
size: [44, 44]
|
||||||
|
}];
|
||||||
|
|
||||||
|
var i;
|
||||||
|
|
||||||
|
var iconCount = iconInfo.length;
|
||||||
|
var icons = new Array(iconCount);
|
||||||
|
for (i = 0; i < iconCount; ++i) {
|
||||||
|
var info = iconInfo[i];
|
||||||
|
icons[i] = new ol.style.Icon({
|
||||||
|
offset: info.offset,
|
||||||
|
opacity: info.opacity,
|
||||||
|
rotateWithView: info.rotateWithView,
|
||||||
|
rotation: info.rotation,
|
||||||
|
scale: info.scale,
|
||||||
|
size: info.size,
|
||||||
|
src: 'data/Butterfly.png'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
var featureCount = 50000;
|
||||||
|
var features = new Array(featureCount);
|
||||||
|
var feature, geometry;
|
||||||
|
var e = 25000000;
|
||||||
|
for (i = 0; i < featureCount; ++i) {
|
||||||
|
geometry = new ol.geom.Point(
|
||||||
|
[2 * e * Math.random() - e, 2 * e * Math.random() - e]);
|
||||||
|
feature = new ol.Feature(geometry);
|
||||||
|
feature.setStyle(
|
||||||
|
new ol.style.Style({
|
||||||
|
image: icons[i % (iconCount - 1)]
|
||||||
|
})
|
||||||
|
);
|
||||||
|
features[i] = feature;
|
||||||
|
}
|
||||||
|
|
||||||
|
var vectorSource = new ol.source.Vector({
|
||||||
|
features: features
|
||||||
|
});
|
||||||
|
var vector = new ol.layer.Vector({
|
||||||
|
source: vectorSource
|
||||||
|
});
|
||||||
|
|
||||||
|
// Use the "webgl" renderer by default.
|
||||||
|
var renderer = exampleNS.getRendererFromQueryString();
|
||||||
|
if (!renderer) {
|
||||||
|
renderer = 'webgl';
|
||||||
|
}
|
||||||
|
|
||||||
|
var map = new ol.Map({
|
||||||
|
renderer: renderer,
|
||||||
|
layers: [vector],
|
||||||
|
target: document.getElementById('map'),
|
||||||
|
view: new ol.View({
|
||||||
|
center: [0, 0],
|
||||||
|
zoom: 5
|
||||||
|
})
|
||||||
|
});
|
||||||
|
|
||||||
|
var overlayFeatures = [];
|
||||||
|
for (i = 0; i < featureCount; i += 30) {
|
||||||
|
var clone = features[i].clone();
|
||||||
|
clone.setStyle(null);
|
||||||
|
overlayFeatures.push(clone);
|
||||||
|
}
|
||||||
|
|
||||||
|
var featureOverlay = new ol.FeatureOverlay({
|
||||||
|
map: map,
|
||||||
|
style: new ol.style.Style({
|
||||||
|
image: icons[iconCount - 1]
|
||||||
|
}),
|
||||||
|
features: overlayFeatures
|
||||||
|
});
|
||||||
@@ -53,7 +53,7 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="jquery.min.js" type="text/javascript"></script>
|
<script src="../resources/jquery.min.js" type="text/javascript"></script>
|
||||||
<script src="../resources/bootstrap/js/bootstrap.min.js" type="text/javascript"></script>
|
<script src="../resources/bootstrap/js/bootstrap.min.js" type="text/javascript"></script>
|
||||||
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
||||||
<script src="loader.js?id=icon" type="text/javascript"></script>
|
<script src="loader.js?id=icon" type="text/javascript"></script>
|
||||||
|
|||||||
@@ -50,7 +50,7 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="jquery.min.js" type="text/javascript"></script>
|
<script src="../resources/jquery.min.js" type="text/javascript"></script>
|
||||||
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
||||||
<script src="loader.js?id=igc" type="text/javascript"></script>
|
<script src="loader.js?id=igc" type="text/javascript"></script>
|
||||||
|
|
||||||
|
|||||||
@@ -73,7 +73,7 @@ var map = new ol.Map({
|
|||||||
html: 'All maps © ' +
|
html: 'All maps © ' +
|
||||||
'<a href="http://www.opencyclemap.org/">OpenCycleMap</a>'
|
'<a href="http://www.opencyclemap.org/">OpenCycleMap</a>'
|
||||||
}),
|
}),
|
||||||
ol.source.OSM.DATA_ATTRIBUTION
|
ol.source.OSM.ATTRIBUTION
|
||||||
],
|
],
|
||||||
url: 'http://{a-c}.tile.opencyclemap.org/cycle/{z}/{x}/{y}.png'
|
url: 'http://{a-c}.tile.opencyclemap.org/cycle/{z}/{x}/{y}.png'
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -57,7 +57,7 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="jquery.min.js" type="text/javascript"></script>
|
<script src="../resources/jquery.min.js" type="text/javascript"></script>
|
||||||
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
||||||
<script src="loader.js?id=image-filter" type="text/javascript"></script>
|
<script src="loader.js?id=image-filter" type="text/javascript"></script>
|
||||||
|
|
||||||
|
|||||||
@@ -51,7 +51,7 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="jquery.min.js" type="text/javascript"></script>
|
<script src="../resources/jquery.min.js" type="text/javascript"></script>
|
||||||
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
||||||
<script src="loader.js?id=image-vector-layer" type="text/javascript"></script>
|
<script src="loader.js?id=image-vector-layer" type="text/javascript"></script>
|
||||||
|
|
||||||
|
|||||||
4
examples/jquery.min.js
vendored
4
examples/jquery.min.js
vendored
File diff suppressed because one or more lines are too long
@@ -60,13 +60,13 @@
|
|||||||
</p>
|
</p>
|
||||||
<p>See the <a href="kml-earthquakes.js" target="_blank">kml-earthquakes.js source</a> to see how this is done.</p>
|
<p>See the <a href="kml-earthquakes.js" target="_blank">kml-earthquakes.js source</a> to see how this is done.</p>
|
||||||
</div>
|
</div>
|
||||||
<div id="tags">KML, vector, style</div>
|
<div id="tags">KML, vector, style, tooltip</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="jquery.min.js" type="text/javascript"></script>
|
<script src="../resources/jquery.min.js" type="text/javascript"></script>
|
||||||
<script src="../resources/bootstrap/js/bootstrap.min.js" type="text/javascript"></script>
|
<script src="../resources/bootstrap/js/bootstrap.min.js" type="text/javascript"></script>
|
||||||
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
||||||
<script src="loader.js?id=kml-earthquakes" type="text/javascript"></script>
|
<script src="loader.js?id=kml-earthquakes" type="text/javascript"></script>
|
||||||
|
|||||||
@@ -54,7 +54,7 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="jquery.min.js" type="text/javascript"></script>
|
<script src="../resources/jquery.min.js" type="text/javascript"></script>
|
||||||
<script src="../resources/bootstrap/js/bootstrap.min.js" type="text/javascript"></script>
|
<script src="../resources/bootstrap/js/bootstrap.min.js" type="text/javascript"></script>
|
||||||
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
||||||
<script src="loader.js?id=kml-timezones" type="text/javascript"></script>
|
<script src="loader.js?id=kml-timezones" type="text/javascript"></script>
|
||||||
|
|||||||
@@ -53,7 +53,7 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="jquery.min.js" type="text/javascript"></script>
|
<script src="../resources/jquery.min.js" type="text/javascript"></script>
|
||||||
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
||||||
<script src="loader.js?id=kml" type="text/javascript"></script>
|
<script src="loader.js?id=kml" type="text/javascript"></script>
|
||||||
|
|
||||||
|
|||||||
@@ -63,7 +63,7 @@ map.on('click', function(evt) {
|
|||||||
|
|
||||||
var exportKMLElement = document.getElementById('export-kml');
|
var exportKMLElement = document.getElementById('export-kml');
|
||||||
if ('download' in exportKMLElement) {
|
if ('download' in exportKMLElement) {
|
||||||
var vectorSource = /** @type {ol.source.Vector} */ (vector.getSource());
|
var vectorSource = vector.getSource();
|
||||||
exportKMLElement.addEventListener('click', function(e) {
|
exportKMLElement.addEventListener('click', function(e) {
|
||||||
if (!exportKMLElement.href) {
|
if (!exportKMLElement.href) {
|
||||||
var features = [];
|
var features = [];
|
||||||
@@ -73,9 +73,7 @@ if ('download' in exportKMLElement) {
|
|||||||
clone.getGeometry().transform(projection, 'EPSG:4326');
|
clone.getGeometry().transform(projection, 'EPSG:4326');
|
||||||
features.push(clone);
|
features.push(clone);
|
||||||
});
|
});
|
||||||
var node = new ol.format.KML().writeFeatures(features);
|
var string = new ol.format.KML().writeFeatures(features);
|
||||||
var string = new XMLSerializer().serializeToString(
|
|
||||||
/** @type {Node} */ (node));
|
|
||||||
var base64 = exampleNS.strToBase64(string);
|
var base64 = exampleNS.strToBase64(string);
|
||||||
exportKMLElement.href =
|
exportKMLElement.href =
|
||||||
'data:application/vnd.google-earth.kml+xml;base64,' + base64;
|
'data:application/vnd.google-earth.kml+xml;base64,' + base64;
|
||||||
|
|||||||
@@ -48,7 +48,7 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="jquery.min.js" type="text/javascript"></script>
|
<script src="../resources/jquery.min.js" type="text/javascript"></script>
|
||||||
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
||||||
<script src="loader.js?id=layer-clipping-webgl" type="text/javascript"></script>
|
<script src="loader.js?id=layer-clipping-webgl" type="text/javascript"></script>
|
||||||
|
|
||||||
|
|||||||
@@ -43,7 +43,7 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="jquery.min.js" type="text/javascript"></script>
|
<script src="../resources/jquery.min.js" type="text/javascript"></script>
|
||||||
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
||||||
<script src="loader.js?id=layer-clipping" type="text/javascript"></script>
|
<script src="loader.js?id=layer-clipping" type="text/javascript"></script>
|
||||||
|
|
||||||
|
|||||||
68
examples/layer-extent.html
Normal file
68
examples/layer-extent.html
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="chrome=1">
|
||||||
|
<meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width">
|
||||||
|
<link rel="stylesheet" href="../css/ol.css" type="text/css">
|
||||||
|
<link rel="stylesheet" href="../resources/bootstrap/css/bootstrap.min.css" type="text/css">
|
||||||
|
<link rel="stylesheet" href="../resources/layout.css" type="text/css">
|
||||||
|
<link rel="stylesheet" href="../resources/bootstrap/css/bootstrap-responsive.min.css" type="text/css">
|
||||||
|
<title>Limited Layer Extent</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<div class="navbar navbar-inverse navbar-fixed-top">
|
||||||
|
<div class="navbar-inner">
|
||||||
|
<div class="container">
|
||||||
|
<a class="brand" href="./"><img src="../resources/logo.png"> OpenLayers 3 Examples</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="container-fluid">
|
||||||
|
|
||||||
|
<div class="row-fluid">
|
||||||
|
<div class="span12">
|
||||||
|
<div id="map" class="map"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row-fluid">
|
||||||
|
|
||||||
|
<div class="span12">
|
||||||
|
<h4 id="title">Limited layer extent</h4>
|
||||||
|
<p id="shortdesc">Restricting layer rendering to a limited extent.</p>
|
||||||
|
<div id="docs">
|
||||||
|
<p>
|
||||||
|
This example uses the <code>layer.setExtent()</code> method to
|
||||||
|
modify the extent of the overlay layer. Use the controls below
|
||||||
|
to limit rendering based on an extent.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<div class="btn-group">
|
||||||
|
<button type="button" class="btn btn-default" id="northwest">northwest</button>
|
||||||
|
<button type="button" class="btn btn-default" id="northeast">northeast</button>
|
||||||
|
<button type="button" class="btn btn-default" id="southeast">southeast</button>
|
||||||
|
<button type="button" class="btn btn-default" id="southwest">southwest</button>
|
||||||
|
<button type="button" class="btn btn-default" id="world">world</button>
|
||||||
|
</div>
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
See the <a href="layer-extent.js" target="_blank">layer-extent.js
|
||||||
|
source</a> for details on how this is done.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div id="tags">extent, tilejson</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script src="../resources/jquery.min.js" type="text/javascript"></script>
|
||||||
|
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
||||||
|
<script src="loader.js?id=layer-extent" type="text/javascript"></script>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
50
examples/layer-extent.js
Normal file
50
examples/layer-extent.js
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
goog.require('ol.Map');
|
||||||
|
goog.require('ol.View');
|
||||||
|
goog.require('ol.layer.Tile');
|
||||||
|
goog.require('ol.proj');
|
||||||
|
goog.require('ol.source.TileJSON');
|
||||||
|
|
||||||
|
function transform(extent) {
|
||||||
|
return ol.proj.transformExtent(extent, 'EPSG:4326', 'EPSG:3857');
|
||||||
|
}
|
||||||
|
|
||||||
|
var extents = {
|
||||||
|
northwest: transform([-180, 0, 0, 85]),
|
||||||
|
northeast: transform([0, 0, 180, 85]),
|
||||||
|
southeast: transform([0, -85, 180, 0]),
|
||||||
|
southwest: transform([-180, -85, 0, 0]),
|
||||||
|
world: transform([-180, -85, 180, 85])
|
||||||
|
};
|
||||||
|
|
||||||
|
var base = new ol.layer.Tile({
|
||||||
|
source: new ol.source.TileJSON({
|
||||||
|
url: 'http://api.tiles.mapbox.com/v3/' +
|
||||||
|
'mapbox.world-black.jsonp',
|
||||||
|
crossOrigin: 'anonymous'
|
||||||
|
})
|
||||||
|
});
|
||||||
|
|
||||||
|
var overlay = new ol.layer.Tile({
|
||||||
|
extent: extents.northwest,
|
||||||
|
source: new ol.source.TileJSON({
|
||||||
|
url: 'http://api.tiles.mapbox.com/v3/' +
|
||||||
|
'mapbox.world-glass.jsonp',
|
||||||
|
crossOrigin: 'anonymous'
|
||||||
|
})
|
||||||
|
});
|
||||||
|
|
||||||
|
var map = new ol.Map({
|
||||||
|
layers: [base, overlay],
|
||||||
|
renderer: exampleNS.getRendererFromQueryString(),
|
||||||
|
target: 'map',
|
||||||
|
view: new ol.View({
|
||||||
|
center: [0, 0],
|
||||||
|
zoom: 1
|
||||||
|
})
|
||||||
|
});
|
||||||
|
|
||||||
|
for (var key in extents) {
|
||||||
|
document.getElementById(key).onclick = function(event) {
|
||||||
|
overlay.setExtent(extents[event.target.id]);
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -118,7 +118,7 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="jquery.min.js" type="text/javascript"></script>
|
<script src="../resources/jquery.min.js" type="text/javascript"></script>
|
||||||
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
||||||
<script src="loader.js?id=layer-group" type="text/javascript"></script>
|
<script src="loader.js?id=layer-group" type="text/javascript"></script>
|
||||||
|
|
||||||
|
|||||||
@@ -52,7 +52,7 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="jquery.min.js" type="text/javascript"></script>
|
<script src="../resources/jquery.min.js" type="text/javascript"></script>
|
||||||
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
||||||
<script src="loader.js?id=layer-spy" type="text/javascript"></script>
|
<script src="loader.js?id=layer-spy" type="text/javascript"></script>
|
||||||
|
|
||||||
|
|||||||
@@ -44,7 +44,7 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="jquery.min.js" type="text/javascript"></script>
|
<script src="../resources/jquery.min.js" type="text/javascript"></script>
|
||||||
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
||||||
<script src="loader.js?id=layer-swipe" type="text/javascript"></script>
|
<script src="loader.js?id=layer-swipe" type="text/javascript"></script>
|
||||||
|
|
||||||
|
|||||||
73
examples/lazy-source.html
Normal file
73
examples/lazy-source.html
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="chrome=1">
|
||||||
|
<meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width">
|
||||||
|
<link rel="stylesheet" href="../css/ol.css" type="text/css">
|
||||||
|
<link rel="stylesheet" href="../resources/bootstrap/css/bootstrap.min.css" type="text/css">
|
||||||
|
<link rel="stylesheet" href="../resources/layout.css" type="text/css">
|
||||||
|
<link rel="stylesheet" href="../resources/bootstrap/css/bootstrap-responsive.min.css" type="text/css">
|
||||||
|
<title>Lazy Source</title>
|
||||||
|
<style>
|
||||||
|
button.code {
|
||||||
|
font-family: Monaco,Menlo,Consolas,"Courier New",monospace;
|
||||||
|
font-size: 12px;
|
||||||
|
padding: 5px;
|
||||||
|
margin: 0 5px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<div class="navbar navbar-inverse navbar-fixed-top">
|
||||||
|
<div class="navbar-inner">
|
||||||
|
<div class="container">
|
||||||
|
<a class="brand" href="./"><img src="../resources/logo.png"> OpenLayers 3 Examples</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="container-fluid">
|
||||||
|
|
||||||
|
<div class="row-fluid">
|
||||||
|
<div class="span12">
|
||||||
|
<div id="map" class="map"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row-fluid">
|
||||||
|
|
||||||
|
<div class="span12">
|
||||||
|
<h4 id="title">Lazy source example</h4>
|
||||||
|
<p id="shortdesc">Example of setting a layer source after construction.</p>
|
||||||
|
<div id="docs">
|
||||||
|
<p>
|
||||||
|
Typically, the source for a layer is provided to the layer constructor.
|
||||||
|
If you need to set a layer source after construction, this can be
|
||||||
|
done with the <code>layer.setSource()</code> method.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
The layer in the map above is constructed with no source. Use the
|
||||||
|
links below to set/unset the layer source. A layer is not rendered
|
||||||
|
until its source is set.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<button id="set-source" class="code">layer.setSource(source)</button>
|
||||||
|
<button id="unset-source" class="code">layer.setSource(null)</button>
|
||||||
|
</p>
|
||||||
|
<p>See the <a href="lazy-source.js" target="_blank">lazy-source.js source</a> for details on how this is done.</p>
|
||||||
|
</div>
|
||||||
|
<div id="tags">source</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script src="../resources/jquery.min.js" type="text/javascript"></script>
|
||||||
|
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
||||||
|
<script src="loader.js?id=lazy-source" type="text/javascript"></script>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
26
examples/lazy-source.js
Normal file
26
examples/lazy-source.js
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
goog.require('ol.Map');
|
||||||
|
goog.require('ol.View');
|
||||||
|
goog.require('ol.layer.Tile');
|
||||||
|
goog.require('ol.source.MapQuest');
|
||||||
|
|
||||||
|
var source = new ol.source.MapQuest({layer: 'sat'});
|
||||||
|
|
||||||
|
var layer = new ol.layer.Tile();
|
||||||
|
|
||||||
|
var map = new ol.Map({
|
||||||
|
layers: [layer],
|
||||||
|
renderer: exampleNS.getRendererFromQueryString(),
|
||||||
|
target: 'map',
|
||||||
|
view: new ol.View({
|
||||||
|
center: [0, 0],
|
||||||
|
zoom: 2
|
||||||
|
})
|
||||||
|
});
|
||||||
|
|
||||||
|
document.getElementById('set-source').onclick = function() {
|
||||||
|
layer.setSource(source);
|
||||||
|
};
|
||||||
|
|
||||||
|
document.getElementById('unset-source').onclick = function() {
|
||||||
|
layer.setSource(null);
|
||||||
|
};
|
||||||
@@ -44,7 +44,7 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="jquery.min.js" type="text/javascript"></script>
|
<script src="../resources/jquery.min.js" type="text/javascript"></script>
|
||||||
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
||||||
<script src="loader.js?id=localized-openstreetmap" type="text/javascript"></script>
|
<script src="loader.js?id=localized-openstreetmap" type="text/javascript"></script>
|
||||||
|
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ var openCycleMapLayer = new ol.layer.Tile({
|
|||||||
html: 'All maps © ' +
|
html: 'All maps © ' +
|
||||||
'<a href="http://www.opencyclemap.org/">OpenCycleMap</a>'
|
'<a href="http://www.opencyclemap.org/">OpenCycleMap</a>'
|
||||||
}),
|
}),
|
||||||
ol.source.OSM.DATA_ATTRIBUTION
|
ol.source.OSM.ATTRIBUTION
|
||||||
],
|
],
|
||||||
url: 'http://{a-c}.tile.opencyclemap.org/cycle/{z}/{x}/{y}.png'
|
url: 'http://{a-c}.tile.opencyclemap.org/cycle/{z}/{x}/{y}.png'
|
||||||
})
|
})
|
||||||
@@ -29,7 +29,7 @@ var openSeaMapLayer = new ol.layer.Tile({
|
|||||||
html: 'All maps © ' +
|
html: 'All maps © ' +
|
||||||
'<a href="http://www.openseamap.org/">OpenSeaMap</a>'
|
'<a href="http://www.openseamap.org/">OpenSeaMap</a>'
|
||||||
}),
|
}),
|
||||||
ol.source.OSM.DATA_ATTRIBUTION
|
ol.source.OSM.ATTRIBUTION
|
||||||
],
|
],
|
||||||
crossOrigin: null,
|
crossOrigin: null,
|
||||||
url: 'http://tiles.openseamap.org/seamark/{z}/{x}/{y}.png'
|
url: 'http://tiles.openseamap.org/seamark/{z}/{x}/{y}.png'
|
||||||
|
|||||||
@@ -43,7 +43,7 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="jquery.min.js" type="text/javascript"></script>
|
<script src="../resources/jquery.min.js" type="text/javascript"></script>
|
||||||
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
||||||
<script src="loader.js?id=mapguide-untiled" type="text/javascript"></script>
|
<script src="loader.js?id=mapguide-untiled" type="text/javascript"></script>
|
||||||
|
|
||||||
|
|||||||
@@ -48,7 +48,7 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="jquery.min.js" type="text/javascript"></script>
|
<script src="../resources/jquery.min.js" type="text/javascript"></script>
|
||||||
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
||||||
<script src="loader.js?id=mapquest" type="text/javascript"></script>
|
<script src="loader.js?id=mapquest" type="text/javascript"></script>
|
||||||
|
|
||||||
|
|||||||
@@ -57,7 +57,7 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="jquery.min.js" type="text/javascript"></script>
|
<script src="../resources/jquery.min.js" type="text/javascript"></script>
|
||||||
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
||||||
<script src="loader.js?id=measure" type="text/javascript"></script>
|
<script src="loader.js?id=measure" type="text/javascript"></script>
|
||||||
|
|
||||||
|
|||||||
@@ -52,7 +52,7 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="jquery.min.js" type="text/javascript"></script>
|
<script src="../resources/jquery.min.js" type="text/javascript"></script>
|
||||||
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
||||||
<script src="loader.js?id=min-max-resolution" type="text/javascript"></script>
|
<script src="loader.js?id=min-max-resolution" type="text/javascript"></script>
|
||||||
|
|
||||||
|
|||||||
@@ -16,8 +16,9 @@
|
|||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="map" class="map"></div>
|
<div id="map" class="map"></div>
|
||||||
<script src="jquery.min.js" type="text/javascript"></script>
|
<script src="../resources/jquery.min.js" type="text/javascript"></script>
|
||||||
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
||||||
|
<script src="http://cdnjs.cloudflare.com/ajax/libs/fastclick/1.0.3/fastclick.js" type="text/javascript"></script>
|
||||||
<script src="loader.js?id=mobile-full-screen" type="text/javascript"></script>
|
<script src="loader.js?id=mobile-full-screen" type="text/javascript"></script>
|
||||||
|
|
||||||
<div style="display: none;">
|
<div style="display: none;">
|
||||||
|
|||||||
@@ -32,3 +32,11 @@ geolocation.once('change:position', function() {
|
|||||||
view.setCenter(geolocation.getPosition());
|
view.setCenter(geolocation.getPosition());
|
||||||
view.setResolution(2.388657133911758);
|
view.setResolution(2.388657133911758);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Use FastClick to eliminate the 300ms delay between a physical tap
|
||||||
|
// and the firing of a click event on mobile browsers.
|
||||||
|
// See http://updates.html5rocks.com/2013/12/300ms-tap-delay-gone-away
|
||||||
|
// for more information.
|
||||||
|
$(function() {
|
||||||
|
FastClick.attach(document.body);
|
||||||
|
});
|
||||||
|
|||||||
@@ -45,7 +45,7 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="jquery.min.js" type="text/javascript"></script>
|
<script src="../resources/jquery.min.js" type="text/javascript"></script>
|
||||||
<script src="loader.js?id=modify-features" type="text/javascript"></script>
|
<script src="loader.js?id=modify-features" type="text/javascript"></script>
|
||||||
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
||||||
|
|
||||||
|
|||||||
@@ -49,7 +49,7 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="jquery.min.js" type="text/javascript"></script>
|
<script src="../resources/jquery.min.js" type="text/javascript"></script>
|
||||||
<script src="loader.js?id=modify-test" type="text/javascript"></script>
|
<script src="loader.js?id=modify-test" type="text/javascript"></script>
|
||||||
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
||||||
|
|
||||||
|
|||||||
@@ -51,7 +51,7 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="jquery.min.js" type="text/javascript"></script>
|
<script src="../resources/jquery.min.js" type="text/javascript"></script>
|
||||||
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
||||||
<script src="loader.js?id=mouse-position" type="text/javascript"></script>
|
<script src="loader.js?id=mouse-position" type="text/javascript"></script>
|
||||||
|
|
||||||
|
|||||||
@@ -46,7 +46,7 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="jquery.min.js" type="text/javascript"></script>
|
<script src="../resources/jquery.min.js" type="text/javascript"></script>
|
||||||
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
<script src="../resources/example-behaviour.js" type="text/javascript"></script>
|
||||||
<script src="loader.js?id=moveend" type="text/javascript"></script>
|
<script src="loader.js?id=moveend" type="text/javascript"></script>
|
||||||
|
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user