Compare commits
608 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3beb830baf | ||
|
|
a9b7e310be | ||
|
|
d04e2a06fb | ||
|
|
f3f629779f | ||
|
|
278ef523b8 | ||
|
|
b98e20273c | ||
|
|
2a0ec3d82e | ||
|
|
334a5e3fdb | ||
|
|
12b56905f6 | ||
|
|
63cd462109 | ||
|
|
f07de4c910 | ||
|
|
66c5e2b773 | ||
|
|
02b42539f3 | ||
|
|
5605fff111 | ||
|
|
052e3970e5 | ||
|
|
0bb0312913 | ||
|
|
ed735aea64 | ||
|
|
c9e266408e | ||
|
|
dc262dbd1d | ||
|
|
9a6ea88c23 | ||
|
|
d58d79facf | ||
|
|
bbd27f1332 | ||
|
|
37b80e904d | ||
|
|
f2bf6cd6ee | ||
|
|
40f2910991 | ||
|
|
a74e7f04e2 | ||
|
|
cfb12dd3f1 | ||
|
|
df67f81156 | ||
|
|
bb69e6acbd | ||
|
|
9ac533846d | ||
|
|
a7147d1c6e | ||
|
|
a1c5f4aa5a | ||
|
|
981af11011 | ||
|
|
c0efc78d37 | ||
|
|
857b2318f9 | ||
|
|
9e52e9e848 | ||
|
|
c8068d5835 | ||
|
|
2752878e9e | ||
|
|
2e9b6bf42c | ||
|
|
4ebca73023 | ||
|
|
e6a90a8da5 | ||
|
|
0fefd20cc6 | ||
|
|
94a2461741 | ||
|
|
4d7de87e7d | ||
|
|
f9193eaa3f | ||
|
|
0f5af24361 | ||
|
|
befa40e094 | ||
|
|
92937667d8 | ||
|
|
12cb34146c | ||
|
|
34023cdc95 | ||
|
|
c79dbb26ea | ||
|
|
77ea71c519 | ||
|
|
472a34c280 | ||
|
|
7a9fc99079 | ||
|
|
b4c8305f0d | ||
|
|
5d1da5fecd | ||
|
|
6dad9af7da | ||
|
|
7ca09f3acb | ||
|
|
b9f989a454 | ||
|
|
516b18bdef | ||
|
|
3a67bbce84 | ||
|
|
77cfad50e0 | ||
|
|
ccfbb359a4 | ||
|
|
b240be8ba7 | ||
|
|
241281c5e7 | ||
|
|
a92b3a18c1 | ||
|
|
625f11cc55 | ||
|
|
4e368e77dc | ||
|
|
d8163b9f12 | ||
|
|
cb36cfc983 | ||
|
|
512383892c | ||
|
|
11de89536d | ||
|
|
d1f9a4e8f6 | ||
|
|
7aac624ec7 | ||
|
|
d7aad27ed8 | ||
|
|
d036bb0bac | ||
|
|
12e04ca7ef | ||
|
|
e204056972 | ||
|
|
0604d579de | ||
|
|
57d56fbedf | ||
|
|
cdd07c0da3 | ||
|
|
c7eaaa9100 | ||
|
|
345b57c57a | ||
|
|
27a3c5a926 | ||
|
|
c3b62fbdf5 | ||
|
|
846074ddc1 | ||
|
|
0137d9ff1f | ||
|
|
fed0996f6f | ||
|
|
dcad929316 | ||
|
|
69ed1fe034 | ||
|
|
6fef1854c8 | ||
|
|
6af2d305b3 | ||
|
|
da628f99d6 | ||
|
|
5f57f97844 | ||
|
|
88d94ede01 | ||
|
|
27bf0316de | ||
|
|
77d0c36539 | ||
|
|
cd77b8fcd4 | ||
|
|
28e938b536 | ||
|
|
e85e056a0c | ||
|
|
e108e6e3d7 | ||
|
|
884f524fb1 | ||
|
|
f1570a9531 | ||
|
|
7e0d4f64dd | ||
|
|
ba18ccf967 | ||
|
|
956feec116 | ||
|
|
f3bc792ebe | ||
|
|
2bacad9bb5 | ||
|
|
3a81957f9a | ||
|
|
7d6d41b3c1 | ||
|
|
bbc6e2cc65 | ||
|
|
5b15eb9d7c | ||
|
|
4e263fb95b | ||
|
|
a5c6bc027f | ||
|
|
67dde0af7d | ||
|
|
bd9e7d7456 | ||
|
|
71a82d087b | ||
|
|
3ed6c43161 | ||
|
|
0e855cb47f | ||
|
|
5aba3ac373 | ||
|
|
03eb28f09e | ||
|
|
241f112b58 | ||
|
|
3a59a31ab3 | ||
|
|
25aa1329fc | ||
|
|
d76ac00403 | ||
|
|
beed7335fc | ||
|
|
f7f1940054 | ||
|
|
c46548d15e | ||
|
|
1be12b2700 | ||
|
|
20bdf84d91 | ||
|
|
e304c04f1c | ||
|
|
ea21d64822 | ||
|
|
3905ddb5e4 | ||
|
|
57ce026efd | ||
|
|
1ba83801e9 | ||
|
|
c93bb64a8a | ||
|
|
05d0b2b116 | ||
|
|
33241250ff | ||
|
|
dcd2ebad29 | ||
|
|
49476e17bb | ||
|
|
4d7078e861 | ||
|
|
08c20daef2 | ||
|
|
fd647f7458 | ||
|
|
5ff9abca1a | ||
|
|
a1cfd80853 | ||
|
|
45cb01c59d | ||
|
|
f98fe65827 | ||
|
|
131f36dbd4 | ||
|
|
8e35a178d2 | ||
|
|
aa623f81db | ||
|
|
43c9c4c8bd | ||
|
|
e36d5b53ea | ||
|
|
23f48082a1 | ||
|
|
b42973662e | ||
|
|
431790a638 | ||
|
|
aa5a1436ca | ||
|
|
f5386f3503 | ||
|
|
92d218572f | ||
|
|
067f08834d | ||
|
|
af98b0668a | ||
|
|
ab7164499d | ||
|
|
be483fff89 | ||
|
|
25627462c4 | ||
|
|
758f62a589 | ||
|
|
84c734accd | ||
|
|
d049d378dd | ||
|
|
5093f292ba | ||
|
|
80634a4adf | ||
|
|
969c44717a | ||
|
|
51d4521e6a | ||
|
|
3a596aaf1a | ||
|
|
699d63db10 | ||
|
|
ca9786dca3 | ||
|
|
85342ddd84 | ||
|
|
e16d7d2059 | ||
|
|
75fc29e9d5 | ||
|
|
0be2560594 | ||
|
|
fef055777a | ||
|
|
edfbae323f | ||
|
|
6c92f9db33 | ||
|
|
ec3e8ba5c9 | ||
|
|
54de362e44 | ||
|
|
1e0fd54ee1 | ||
|
|
5fc42268a4 | ||
|
|
1d8cdd7feb | ||
|
|
baa924c697 | ||
|
|
9de76897bc | ||
|
|
a67b2f2c91 | ||
|
|
791f054f70 | ||
|
|
7e13586463 | ||
|
|
c3639dcb24 | ||
|
|
49ded685b4 | ||
|
|
9b14865bf3 | ||
|
|
abac84e82a | ||
|
|
0367507dae | ||
|
|
9977061680 | ||
|
|
3cae38040c | ||
|
|
97cdfa119d | ||
|
|
641db3ade0 | ||
|
|
bddf2443b6 | ||
|
|
1404d21838 | ||
|
|
95bbc5ea3e | ||
|
|
f8776ffe5f | ||
|
|
bc1dee49a4 | ||
|
|
d81a6309bf | ||
|
|
9a6da018a9 | ||
|
|
8d639499ba | ||
|
|
a5d7a8f6b0 | ||
|
|
577f1520d2 | ||
|
|
c938533943 | ||
|
|
e3b137e3c4 | ||
|
|
72b72b8029 | ||
|
|
ba68b79e86 | ||
|
|
49ef4c8e1b | ||
|
|
535482025e | ||
|
|
e73ac4acfc | ||
|
|
bc20664bc5 | ||
|
|
06936fc4ee | ||
|
|
0829098ebb | ||
|
|
8ad2036ec1 | ||
|
|
4f7675d2a8 | ||
|
|
8f4e9967f0 | ||
|
|
f884c17195 | ||
|
|
490b932eab | ||
|
|
149353119b | ||
|
|
9c3f3b8a4c | ||
|
|
f9e06c80ad | ||
|
|
fe2c067272 | ||
|
|
9c3488e107 | ||
|
|
df784f6f68 | ||
|
|
a178357ca8 | ||
|
|
6627eab8e2 | ||
|
|
0a7638e10d | ||
|
|
f94c665b27 | ||
|
|
d23bca9c7f | ||
|
|
53dbb737fb | ||
|
|
1aa5f24e11 | ||
|
|
1d44057198 | ||
|
|
bcf4cff42b | ||
|
|
cbdeb58c2f | ||
|
|
df5bcd583f | ||
|
|
e2a4ad8a97 | ||
|
|
795359fb44 | ||
|
|
a9a042ea41 | ||
|
|
cd5a62a2ff | ||
|
|
dfd3a7dcf6 | ||
|
|
5615604170 | ||
|
|
b3f6899b1f | ||
|
|
e3f2f19119 | ||
|
|
126b98ae8c | ||
|
|
9104b746ac | ||
|
|
fc6bce20bb | ||
|
|
76582da497 | ||
|
|
a06ea5492e | ||
|
|
1d7ece5a65 | ||
|
|
67b911a7df | ||
|
|
7947e5c027 | ||
|
|
69f7ed7ae0 | ||
|
|
fa658bd1f0 | ||
|
|
233f0c4f7e | ||
|
|
02b29c7584 | ||
|
|
cedf3edc61 | ||
|
|
60aa9600d8 | ||
|
|
3d92807d26 | ||
|
|
67195bbc0c | ||
|
|
7ba5984e5f | ||
|
|
27aee33cb9 | ||
|
|
4a848cc08c | ||
|
|
75c2841a13 | ||
|
|
ed8f03122b | ||
|
|
d80e4fdabc | ||
|
|
c8817f80c8 | ||
|
|
3ee1034f1a | ||
|
|
3b224d21fc | ||
|
|
0d7d75ccb5 | ||
|
|
324a1c309c | ||
|
|
0046f5c159 | ||
|
|
7865867973 | ||
|
|
7c12c2ae9b | ||
|
|
564435a22a | ||
|
|
607cdeb5db | ||
|
|
4903a4b5f4 | ||
|
|
e5043447e3 | ||
|
|
4f78fed094 | ||
|
|
0fbce21140 | ||
|
|
3a19c2f2f5 | ||
|
|
c694fbc63b | ||
|
|
c4b6d019ff | ||
|
|
3603dfef03 | ||
|
|
35f1e7092c | ||
|
|
9283b80594 | ||
|
|
f81dff2365 | ||
|
|
5c2b404b3f | ||
|
|
095ed65eb3 | ||
|
|
3d7a09c457 | ||
|
|
abc1867d7c | ||
|
|
3449bd86e8 | ||
|
|
1861ca4a1b | ||
|
|
a77d89b8b3 | ||
|
|
f63c303293 | ||
|
|
f1634e4976 | ||
|
|
b59f20ef49 | ||
|
|
07138f3240 | ||
|
|
eddfa5a896 | ||
|
|
4532e397c0 | ||
|
|
81a270428c | ||
|
|
76e73368ab | ||
|
|
f4f8eb8d1c | ||
|
|
b695d43fee | ||
|
|
f6d2db4c6f | ||
|
|
e1db67f099 | ||
|
|
7142f3410d | ||
|
|
b110314077 | ||
|
|
1cf4d3a60b | ||
|
|
9c5fd29ff1 | ||
|
|
27a39fbfd7 | ||
|
|
d3aa2af73b | ||
|
|
2555fea5da | ||
|
|
8bb63c875f | ||
|
|
76dcc8b909 | ||
|
|
c38975fcba | ||
|
|
b90d99f82b | ||
|
|
76d55bb1a0 | ||
|
|
d9f7638a25 | ||
|
|
e7a391e640 | ||
|
|
12fe08884e | ||
|
|
4d9ad3e942 | ||
|
|
ae6ce553b9 | ||
|
|
13c42d509c | ||
|
|
a6aa2b2388 | ||
|
|
9f7fe2577b | ||
|
|
ad2348631a | ||
|
|
2dbad2b16a | ||
|
|
8db30d8537 | ||
|
|
25f0310334 | ||
|
|
3041ab5515 | ||
|
|
27e2c5dde5 | ||
|
|
a386cfea4f | ||
|
|
fe104300ba | ||
|
|
f1ae5c3d68 | ||
|
|
767019ee06 | ||
|
|
3a3a58d273 | ||
|
|
0eb53403d1 | ||
|
|
4938852b40 | ||
|
|
0d14473132 | ||
|
|
34ddf3a005 | ||
|
|
9ca4785701 | ||
|
|
8d2aba9c65 | ||
|
|
2872ce94a3 | ||
|
|
d5ebf43e3d | ||
|
|
223eb120fa | ||
|
|
b94d943247 | ||
|
|
d409aa5b96 | ||
|
|
644c83ed69 | ||
|
|
db871d4a22 | ||
|
|
3f959a3b46 | ||
|
|
903dbad9c6 | ||
|
|
3afca64080 | ||
|
|
16f0d524c5 | ||
|
|
f669022ca3 | ||
|
|
dce7886447 | ||
|
|
f77c46f56d | ||
|
|
45383397bc | ||
|
|
c14e93e25d | ||
|
|
7b7b5a923a | ||
|
|
6b4bb7d8bf | ||
|
|
5d4d630ce0 | ||
|
|
8d121c0798 | ||
|
|
6b362e5125 | ||
|
|
c2eb679adf | ||
|
|
183cb8aafd | ||
|
|
4bf27bc910 | ||
|
|
f0639972b4 | ||
|
|
e1d17321c6 | ||
|
|
b75ac0d647 | ||
|
|
7f81ddf47f | ||
|
|
c580e1d7a5 | ||
|
|
7a28788972 | ||
|
|
36e547d828 | ||
|
|
bd762dae9e | ||
|
|
347c1d31bb | ||
|
|
c6be08a903 | ||
|
|
8ab2195500 | ||
|
|
9fff945978 | ||
|
|
18d8e18bdf | ||
|
|
b32692942f | ||
|
|
9c58d8219c | ||
|
|
32c57a42a4 | ||
|
|
6c004b8be7 | ||
|
|
9a31cc07b5 | ||
|
|
0de27b7354 | ||
|
|
dc340a382e | ||
|
|
4c9354c326 | ||
|
|
d1fdca170e | ||
|
|
d614809df0 | ||
|
|
0c3acfd69c | ||
|
|
da95660c73 | ||
|
|
c8396062ae | ||
|
|
579f49bfd6 | ||
|
|
20f1121d3a | ||
|
|
26253a6104 | ||
|
|
b190211e5a | ||
|
|
edf29d2b0e | ||
|
|
a001f4615c | ||
|
|
5818edc228 | ||
|
|
e562ebdff6 | ||
|
|
d08ef59278 | ||
|
|
bb1d602267 | ||
|
|
c1eca04ab1 | ||
|
|
f6c28dc158 | ||
|
|
b760eadd4d | ||
|
|
7500ca1711 | ||
|
|
808671c1fb | ||
|
|
2d3ab0b6fd | ||
|
|
6461d39357 | ||
|
|
e0c02a83d0 | ||
|
|
ca56e0fe33 | ||
|
|
320ce5b44d | ||
|
|
f061e06d94 | ||
|
|
d1ce52ef52 | ||
|
|
28961caa79 | ||
|
|
4b30ca3242 | ||
|
|
84c45e153a | ||
|
|
d8001e23f6 | ||
|
|
559f4899dd | ||
|
|
04f02d9ae5 | ||
|
|
acb7727234 | ||
|
|
ac0455b1b4 | ||
|
|
5480cd6df8 | ||
|
|
325f848969 | ||
|
|
ea402f77f1 | ||
|
|
759915861e | ||
|
|
bc46217449 | ||
|
|
d8030c1364 | ||
|
|
23d34fa00a | ||
|
|
29322acf87 | ||
|
|
5dcffcc537 | ||
|
|
67afa0b7ab | ||
|
|
a6ecab334c | ||
|
|
edf89ce36b | ||
|
|
4f687e6fec | ||
|
|
cfc036c7ec | ||
|
|
3dbc44e9c2 | ||
|
|
c9e1c81cca | ||
|
|
f7e5544238 | ||
|
|
981536595f | ||
|
|
5aaa2ca96b | ||
|
|
b7a3844aac | ||
|
|
b3e2385ba5 | ||
|
|
03821e1f51 | ||
|
|
77dc06d650 | ||
|
|
0cd6c48b16 | ||
|
|
8a595fd37f | ||
|
|
967875d6b8 | ||
|
|
d60e2ef575 | ||
|
|
58ecf60d9d | ||
|
|
17356e5a2b | ||
|
|
296fdd3c13 | ||
|
|
735acc520a | ||
|
|
ac115b1f0f | ||
|
|
d2ba6647ea | ||
|
|
0180c40855 | ||
|
|
817bd13d7b | ||
|
|
d22dc79655 | ||
|
|
fc9ef062c0 | ||
|
|
f2dda7c8eb | ||
|
|
fdc793d9ec | ||
|
|
3d24aade21 | ||
|
|
6d93aaf57f | ||
|
|
8fc354c96a | ||
|
|
e30f3f7cc3 | ||
|
|
aff2c77267 | ||
|
|
33365b3f7d | ||
|
|
33fdc938fa | ||
|
|
8397d5a3be | ||
|
|
980e9d5e54 | ||
|
|
bc7c55b1f8 | ||
|
|
120182ec15 | ||
|
|
945b84f04f | ||
|
|
f67c457006 | ||
|
|
a2852b0761 | ||
|
|
ebf5d408bc | ||
|
|
75719eae29 | ||
|
|
5c825ea9eb | ||
|
|
15bc23cadf | ||
|
|
88f3283878 | ||
|
|
80848f9d2d | ||
|
|
f1f5726457 | ||
|
|
2ccf3e4c64 | ||
|
|
c8cbf8e0ce | ||
|
|
6544cc1081 | ||
|
|
4c72831336 | ||
|
|
06ac5142f7 | ||
|
|
feae45f78b | ||
|
|
61b8233b97 | ||
|
|
7acbea88cc | ||
|
|
19109516ae | ||
|
|
c1a5ad7e74 | ||
|
|
1a93e4ae13 | ||
|
|
1de6ca8fb7 | ||
|
|
02db7ca08d | ||
|
|
e9bb7aaae4 | ||
|
|
989e9c2ae8 | ||
|
|
e8f41cd339 | ||
|
|
eabd90d14c | ||
|
|
3e4aad4d51 | ||
|
|
b6dc72bbb6 | ||
|
|
4cd11462da | ||
|
|
6344542b10 | ||
|
|
e0031ae8aa | ||
|
|
229ea0b350 | ||
|
|
0a5d08a908 | ||
|
|
aed54c9a49 | ||
|
|
1a3bf4e4fe | ||
|
|
591ae03667 | ||
|
|
3a191fb513 | ||
|
|
2821d8ddb8 | ||
|
|
71d7b71035 | ||
|
|
85858911fa | ||
|
|
0a92c84668 | ||
|
|
c21d7b4390 | ||
|
|
38a9c71bc2 | ||
|
|
2573e458d5 | ||
|
|
25a9891133 | ||
|
|
8ee4e5fb8c | ||
|
|
a38b054228 | ||
|
|
d9bf94da99 | ||
|
|
77653096f9 | ||
|
|
5f534656ea | ||
|
|
ba93445259 | ||
|
|
71f7c45b21 | ||
|
|
ca5e34e1fb | ||
|
|
d937f3516c | ||
|
|
a8909fca08 | ||
|
|
b39feae045 | ||
|
|
9f4ef47b95 | ||
|
|
25e79bac55 | ||
|
|
311f4c7929 | ||
|
|
557e1858a7 | ||
|
|
16fa42d462 | ||
|
|
1133edb83d | ||
|
|
f6dbeba3d8 | ||
|
|
bf8f0745a6 | ||
|
|
829e45224f | ||
|
|
acde5d565d | ||
|
|
f0a652faf3 | ||
|
|
41867344e2 | ||
|
|
0c39ff8be0 | ||
|
|
6f78f08a04 | ||
|
|
3388e1401f | ||
|
|
308497ffa6 | ||
|
|
bfa5a095f0 | ||
|
|
96be36edb8 | ||
|
|
7c9c3732fb | ||
|
|
add62c9fe8 | ||
|
|
4aaa1ce620 | ||
|
|
aa63b49e5a | ||
|
|
1f1d91202c | ||
|
|
51eae28926 | ||
|
|
58b5f2741b | ||
|
|
d82faad435 | ||
|
|
fc8223bfc8 | ||
|
|
3584c4be1e | ||
|
|
001dbe8447 | ||
|
|
54feb7a25e | ||
|
|
ea2a94f76b | ||
|
|
b6bfbc612a | ||
|
|
1d545fd804 | ||
|
|
3acf77c102 | ||
|
|
6dfe2df2fb | ||
|
|
6cb40e1c15 | ||
|
|
afd03809e8 | ||
|
|
efa3cb0231 | ||
|
|
a709bd2623 | ||
|
|
439f2b20ff | ||
|
|
877d217f31 | ||
|
|
885264ad8c | ||
|
|
e224a7cf5b | ||
|
|
e10a223ea6 | ||
|
|
f85453e60c | ||
|
|
a6b3d7b0c2 | ||
|
|
dc15ba5f34 | ||
|
|
1d7afaf8de | ||
|
|
422d81d665 | ||
|
|
4b55043dcc | ||
|
|
7885529fff | ||
|
|
2c610f5e0b | ||
|
|
64a586dde8 | ||
|
|
c1f65144df | ||
|
|
ad2ee3f40e | ||
|
|
01365686fa | ||
|
|
dece13ddc9 | ||
|
|
05e9e0cdc8 | ||
|
|
a9283dd408 | ||
|
|
53ca77d18a | ||
|
|
97654f0670 | ||
|
|
cbd0ac01df | ||
|
|
ca841f5181 | ||
|
|
a322768f8a | ||
|
|
fc7bb2df9b | ||
|
|
062bb8d573 | ||
|
|
ccdea3b663 | ||
|
|
985bbc3f36 | ||
|
|
aa5fc79681 | ||
|
|
58095f31a4 | ||
|
|
e53523b82a | ||
|
|
e5c62c9bc4 | ||
|
|
3c1091d8e0 |
2
.github/CONTRIBUTING.md
vendored
@@ -6,7 +6,7 @@ Before you start working on an unresolved issue or try to implement a new featur
|
||||
|
||||
You may also create a new issue on [Github](https://github.com/mapsforge/vtm/issues) or comment on an existing one to describe your ideas. We will then discuss the best way to realize your proposal and figure out how we can help you to get started quickly.
|
||||
|
||||
If you are only requesting a small change in the code, you may attach a patch file to the corresponding issue, but it is best to create a pull request on Github. Make sure that your patch is derived from the latest version in our **master** repository, otherwise we might be unable to apply it. Please follow our code and style conventions.
|
||||
If you are only requesting a small change in the code, you may attach a patch file to the corresponding issue, but it is best to create a pull request on Github. Make sure that your patch is derived from the latest version in our **master** repository, otherwise we might be unable to apply it. Important is to keep pull requests simple with one feature in each. Please follow our code and style conventions.
|
||||
|
||||
Also please keep the pull request commits squashed, in order to avoid the clutter in repository and have only the finally changed files together. One way is described [here](http://gitready.com/advanced/2009/02/10/squashing-commits-with-rebase.html).
|
||||
|
||||
|
||||
2
.gitignore
vendored
@@ -11,8 +11,10 @@ robovm-build
|
||||
/vtm-web/war/
|
||||
/vtm-web/assets/
|
||||
/vtm-web/gwt-unitCache
|
||||
/vtm-web-app/war/WEB-INF/
|
||||
/vtm-web-app/assets/
|
||||
/vtm-web-app/src/main/webapp/
|
||||
/vtm-web-js/war/WEB-INF/
|
||||
/vtm-web-js/assets/
|
||||
/vtm-web-js/src/main/webapp/
|
||||
/vtm-spatialite/
|
||||
|
||||
40
.travis.yml
@@ -1,22 +1,32 @@
|
||||
sudo: false
|
||||
language: android
|
||||
jdk:
|
||||
- oraclejdk8
|
||||
android:
|
||||
components:
|
||||
- platform-tools
|
||||
- tools
|
||||
- build-tools-24.0.3
|
||||
- android-24
|
||||
- extra-android-m2repository
|
||||
- oraclejdk8
|
||||
env:
|
||||
global:
|
||||
- GRADLE_OPTS="-Xmx2048m"
|
||||
- secure: sW674wuFZOuoX7jHQHDbX3j8NxL8JxR07cyq+CrrqJ537dU9lxWQmMBRUpOb+p/q7sQ74PUtiKJkmFgKCSJSAKY+nr6GJ8P/q6u5TUKbmUWODSn8znehX2zualfvFwpF4PILok/wUzXBQE62jn4lUua7cMdsHRMNHbLmKqBoVL0meObDDjsaJ/RCbOPuruy3FmgvXPp0+Y4zl1GsklDSyjFzg4LBzjAk9Ryvh1O4zvJBkkyfCgurLKCnOKIPy3v5fPMS9oDfO1aarAVGoZZe416pvTW4hb8cdB6kn9XWYDob4NDFX/sP5k7XIhd/NAIn9LrKFg0sLtATaKLX+BcasF1CgDR/u6+SEeQd5QaRF7Go2Nq5Ltuu4OIFONI2qhEeVDDK6Otf2WSWj9KPno2GHuumBfbg4ypWoJgmZrMXk8JeVV/OP/0jIQz3p/7yfF21X1XBEqYaVHPAMKdEYYkCSa46KfACyOt6LfnkuCHtoTOpFo7sq0omIA2HOtpIx1u3vMBUyAbQqT6cokkKB1b6gNTFwhHc+8ybfLFPljJB8cWshI+V/b06S6fekRmvTNxvDykWNsdlkENBYqc9hMfjcT4hO4K+76SWN62mimQYODvFyfTVMC7WkQ3k/XEnmqUPV5XkbaILbS1d/tA57N148FiJ5/QXtI6Y94imubYyVqU=
|
||||
- secure: AdKSZKA4gMuKXI4X4dQNJqcMv5OmPIHdN8fpy55Y9yoOQPQHZE3Zwc4QDWBh20q298jyEC854tVTPTysdZ7h+2s2FhsprYv1Bt/QNzKIrLpeIMj2quuVGMbdPuk08y55gost94KwVLJv0sIDpRlB/PEQkA7Mg/UDsT9zR8E1Ms5x+ul2C8e1ag0zzNl1wVnT5jY8WCp74uA/XXCcJl/80qT1stUERazCKwbKNo007hi7rdm4HA7YGevORq8e2r67je+WIBZUAwrHT0Zjuo4ibwUii4LdwvjuN3w0Z6e9Wf4x5bBqGgnih0T31uom2yPjNx+U/c2AWI+Nxfy/SEF2U+9bjBEZ3ZhI7F1B9ofXo2mhvvsVDiUrymMBbG2V64C9kAzeUh7xIBTqIrbdtpAEBV9FlLAtF2swVTwtCgZgcVTOt3RKXCi3X3nk3cuH7PAorFa/QGfT4xxVu2011FVAt2Rm7SD0ZWztZTSTz/4Nt/egtGBOJfrCc7oLEygLzDmLqsqCwCROITVQjWLjrtqDyLteaNiSXeNIQMKun3izApbXnHmXB+FV3R3EZocboqk3v5bmPTahnG6Ghc2zknWyyxSx+O9qIfOpHUL8JMJiT82lUQUeibtCn7DCE8wVQ/gYC5i+a+KO/d3NemSzIFlZ8aoUiEPYq18dYlsDXeLXwF0=
|
||||
- ANDROID=28
|
||||
- ANDROID_BUILD_TOOLS=28.0.2
|
||||
- GRADLE_OPTS="-Xmx2048m"
|
||||
- secure: sW674wuFZOuoX7jHQHDbX3j8NxL8JxR07cyq+CrrqJ537dU9lxWQmMBRUpOb+p/q7sQ74PUtiKJkmFgKCSJSAKY+nr6GJ8P/q6u5TUKbmUWODSn8znehX2zualfvFwpF4PILok/wUzXBQE62jn4lUua7cMdsHRMNHbLmKqBoVL0meObDDjsaJ/RCbOPuruy3FmgvXPp0+Y4zl1GsklDSyjFzg4LBzjAk9Ryvh1O4zvJBkkyfCgurLKCnOKIPy3v5fPMS9oDfO1aarAVGoZZe416pvTW4hb8cdB6kn9XWYDob4NDFX/sP5k7XIhd/NAIn9LrKFg0sLtATaKLX+BcasF1CgDR/u6+SEeQd5QaRF7Go2Nq5Ltuu4OIFONI2qhEeVDDK6Otf2WSWj9KPno2GHuumBfbg4ypWoJgmZrMXk8JeVV/OP/0jIQz3p/7yfF21X1XBEqYaVHPAMKdEYYkCSa46KfACyOt6LfnkuCHtoTOpFo7sq0omIA2HOtpIx1u3vMBUyAbQqT6cokkKB1b6gNTFwhHc+8ybfLFPljJB8cWshI+V/b06S6fekRmvTNxvDykWNsdlkENBYqc9hMfjcT4hO4K+76SWN62mimQYODvFyfTVMC7WkQ3k/XEnmqUPV5XkbaILbS1d/tA57N148FiJ5/QXtI6Y94imubYyVqU=
|
||||
- secure: AdKSZKA4gMuKXI4X4dQNJqcMv5OmPIHdN8fpy55Y9yoOQPQHZE3Zwc4QDWBh20q298jyEC854tVTPTysdZ7h+2s2FhsprYv1Bt/QNzKIrLpeIMj2quuVGMbdPuk08y55gost94KwVLJv0sIDpRlB/PEQkA7Mg/UDsT9zR8E1Ms5x+ul2C8e1ag0zzNl1wVnT5jY8WCp74uA/XXCcJl/80qT1stUERazCKwbKNo007hi7rdm4HA7YGevORq8e2r67je+WIBZUAwrHT0Zjuo4ibwUii4LdwvjuN3w0Z6e9Wf4x5bBqGgnih0T31uom2yPjNx+U/c2AWI+Nxfy/SEF2U+9bjBEZ3ZhI7F1B9ofXo2mhvvsVDiUrymMBbG2V64C9kAzeUh7xIBTqIrbdtpAEBV9FlLAtF2swVTwtCgZgcVTOt3RKXCi3X3nk3cuH7PAorFa/QGfT4xxVu2011FVAt2Rm7SD0ZWztZTSTz/4Nt/egtGBOJfrCc7oLEygLzDmLqsqCwCROITVQjWLjrtqDyLteaNiSXeNIQMKun3izApbXnHmXB+FV3R3EZocboqk3v5bmPTahnG6Ghc2zknWyyxSx+O9qIfOpHUL8JMJiT82lUQUeibtCn7DCE8wVQ/gYC5i+a+KO/d3NemSzIFlZ8aoUiEPYq18dYlsDXeLXwF0=
|
||||
android:
|
||||
components:
|
||||
- tools
|
||||
- platform-tools
|
||||
- tools
|
||||
- build-tools-$ANDROID_BUILD_TOOLS
|
||||
- android-$ANDROID
|
||||
before_install:
|
||||
- yes | sdkmanager "platforms;android-$ANDROID"
|
||||
script:
|
||||
- ./gradlew clean build
|
||||
- ./gradlew clean build
|
||||
after_success:
|
||||
- if [ "$TRAVIS_BRANCH" == "master" ] && [ "$TRAVIS_PULL_REQUEST" == "false" ]; then
|
||||
./gradlew uploadArchives -PSONATYPE_USERNAME="${SONATYPE_USERNAME}" -PSONATYPE_PASSWORD="${SONATYPE_PASSWORD}";
|
||||
fi
|
||||
- if [ "$TRAVIS_BRANCH" == "master" ] && [ "$TRAVIS_PULL_REQUEST" == "false" ]; then
|
||||
./gradlew uploadArchives -PSONATYPE_USERNAME="${SONATYPE_USERNAME}" -PSONATYPE_PASSWORD="${SONATYPE_PASSWORD}";
|
||||
fi
|
||||
notifications:
|
||||
email:
|
||||
recipients:
|
||||
- secure: fOInp4SGBqiIMgnsGceQTa0SuFLaAoxAF15W0crhuljGlqSgnbnBjh0xFEF4P5+q3VT3DgDZs53GVVo6S9gEl8AWJy84KGuUX1M/CQKUQC4bwNXJdHfY3MIy6D50da6UfwWeNS4ienKh2Rj6w2TapN9M8C9nJJZk9aJFc9NWZmWTVboHZd4oUDeeRBJ6KSk1Ay7L/mmxv4cMCXaW7pPJixvUFESKNYgK4KAN3zYpym2UijrQ8zf7OVcYnTorcAuXUZDk8EvwdHl3rIAdlbVqvyZ8rmoQ2Da/Q2VlWUL/HrHUVJtCPZ+T+dNUag4a8joIDqWKwcyk76PElmgft3azb7GERb+bkZz1ToQc2IvuOeUk2SsuXWZugoEQImKWl/yWeirWBLrwzieaVh4j04dMSn/Npc1yL5kjX9EuiM6MFHdYPianMpvhFiaYKihjzW0GPV6sfuY7xS8cA9L9DjAsXoHIXIxc/+hRA+bpPUl+qMaQdGjJmNJJ2VPFnOY0XCsDDQDIVa3nZOA6aXMUG2c4H26RJZPe7uvfRiuL86n3KAmkoXSwne9t8WYMgl89LMsU5XxjBvwz2Qa1HqG09tVs6nhB23easrhEYEf/ZsGg0DIIL1FImUHj+wUUfZXeyFmbiE6lD/i2+3a5DqzZGHbXUDCoUIagObMf8fe2z5+0K/Q=
|
||||
on_success: always
|
||||
on_failure: always
|
||||
|
||||
80
README.md
@@ -1,60 +1,74 @@
|
||||
[](https://search.maven.org/search?q=g:org.mapsforge)
|
||||
[](https://travis-ci.org/mapsforge/vtm)
|
||||
[](COPYING.LESSER)
|
||||
[](https://maven-badges.herokuapp.com/maven-central/org.mapsforge/vtm)
|
||||
[](http://www.gnu.org/licenses/lgpl-3.0)
|
||||
|
||||
# V™
|
||||
|
||||
VTM was developed within the [OpenScienceMap](http://opensciencemap.org) project.
|
||||
VTM was developed within the [OpenScienceMap](https://github.com/opensciencemap) project.
|
||||
|
||||
**This fork continues VTM development. And provides compatibility with latest [Mapsforge](https://github.com/mapsforge/mapsforge).**
|
||||
|
||||
If you have any questions or problems, don't hesitate to ask our public [mailing list](https://groups.google.com/group/mapsforge-dev) for help.
|
||||
See the **[integration guide](docs/Integration.md)** and [changelog](docs/Changelog.md). And read through [how to contribute](.github/CONTRIBUTING.md) guidelines.
|
||||
|
||||
See the [integration guide](docs/Integration.md) and [changelog](docs/Changelog.md). And read through [how to contribute](.github/CONTRIBUTING.md) guidelines.
|
||||
If you have any questions or problems, don't hesitate to ask our public [mailing list](https://groups.google.com/group/mapsforge-dev) for help.
|
||||
|
||||
## Features
|
||||
- Java map library
|
||||
- OpenGL vector-tile rendering
|
||||
- Themeable vector layers
|
||||
- Themeable vector layers ([render themes](docs/Rendertheme.md))
|
||||
- Support for multiple tile sources:
|
||||
- primary opensciencemap (.vtm)
|
||||
- mapsforge files
|
||||
- GeoJSON tiles
|
||||
- bitmap: any quadtree-scheme tiles as texture
|
||||
- OpenScienceMap vector tiles
|
||||
- Mapsforge vector maps
|
||||
- Mapbox vector tiles (e.g. Mapzen, Nextzen, OpenMapTiles)
|
||||
- GeoJSON vector tiles (e.g. Mapzen, Nextzen)
|
||||
- Raster tiles: any quadtree-scheme tiles as texture
|
||||
- Backends:
|
||||
- Android (optional libGDX)
|
||||
- iOS (using libGDX/RoboVM, [instructions](docs/ios.md))
|
||||
- Desktop (using libGDX/LWJGL)
|
||||
- HTML5/WebGL (using libGDX/GWT)
|
||||
- Android ([example](vtm-android-example/src/org/oscim/android/test/GettingStarted.java))
|
||||
- iOS (libGDX/RoboVM, [instructions](docs/ios.md))
|
||||
- Desktop (libGDX/LWJGL, [instructions](docs/desktop.md))
|
||||
- HTML5/WebGL (libGDX/GWT, [instructions](docs/web.md))
|
||||
|
||||
### Projects
|
||||
- **vtm** contains the core library
|
||||
- **vtm-android** Android backend (no libGDX required)
|
||||
- **vtm-android-example** provides examples using **vtm-android**
|
||||
- **vtm** core library
|
||||
- **vtm-android** Android backend
|
||||
- **vtm-android-example** Android examples
|
||||
- **vtm-gdx** common libGDX backend
|
||||
- **vtm-android-gdx** Android backend (with libGDX)
|
||||
- **vtm-desktop** Desktop backend
|
||||
- **vtm-ios** iOS backend
|
||||
- **vtm-web** HTML5/GWT backend
|
||||
- **vtm-android-gdx** Android libGDX backend
|
||||
- **vtm-desktop** Desktop libGDX backend
|
||||
- **vtm-playground** Desktop examples
|
||||
- **vtm-ios** iOS libGDX backend
|
||||
- **vtm-ios-example** iOS examples
|
||||
- **vtm-web** HTML5/GWT libGDX backend
|
||||
- **vtm-web-app** HTML5/GWT application
|
||||
|
||||
The libGDX backend for GWT is experimental.
|
||||
|
||||
## Applications
|
||||
- VTM is used by many [applications](docs/Applications.md).
|
||||
|
||||
## WebGL Demo
|
||||
[OpenScienceMap](http://opensciencemap.org/s3db/#scale=17,rot=61,tilt=51,lat=53.075,lon=8.807) view of Bremen.
|
||||
- Hold right mouse button to change view direction.
|
||||
|
||||
## Applications
|
||||
- VTM is used by many [applications](docs/Applications.md).
|
||||
|
||||
## Maps
|
||||
- Mapsforge [map providers](docs/Mapsforge-Maps.md).
|
||||
|
||||
## Credits
|
||||
This library contains code from several projects:
|
||||
- **Android**: some Matrix code, TimSort (http://source.android.com)
|
||||
- **libGDX**: AsyncTask, MathUtils and Interpolation classes (https://github.com/libgdx)
|
||||
- **mapsforge**: based on 0.2.4 (https://github.com/mapsforge/mapsforge)
|
||||
- **osmdroid**: some overlay classes (https://github.com/osmdroid/osmdroid)
|
||||
- **tessellate**: (https://github.com/cscheid/tessellate)
|
||||
- **Android** (Apache 2.0): some Matrix code, TimSort (http://source.android.com)
|
||||
- **libGDX** (Apache 2.0): AsyncTask, MathUtils, Interpolation, PixmapPacker (https://github.com/libgdx)
|
||||
- **mapsforge** (LGPL3): based on 0.2.4 (https://github.com/mapsforge/mapsforge)
|
||||
- **osmdroid** (Apache 2.0): some overlay classes (https://github.com/osmdroid/osmdroid)
|
||||
- **tessellate** (SGI Free Software License B 2.0): (https://github.com/cscheid/tessellate)
|
||||
|
||||
## Screenshots
|
||||

|
||||

|
||||
|
||||
### Android
|
||||

|
||||
|
||||
### iOS
|
||||

|
||||
|
||||
### Desktop
|
||||

|
||||
|
||||
### Browser
|
||||

|
||||
|
||||
25
build.gradle
@@ -1,10 +1,11 @@
|
||||
buildscript {
|
||||
repositories {
|
||||
google()
|
||||
jcenter()
|
||||
}
|
||||
dependencies {
|
||||
classpath 'com.android.tools.build:gradle:2.2.0'
|
||||
classpath 'com.github.dcendents:android-maven-gradle-plugin:1.4.1'
|
||||
classpath 'com.android.tools.build:gradle:3.1.4'
|
||||
classpath 'com.github.dcendents:android-maven-gradle-plugin:2.0'
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,8 +14,10 @@ allprojects {
|
||||
version = 'master-SNAPSHOT'
|
||||
ext.isReleaseVersion = !version.endsWith("SNAPSHOT")
|
||||
|
||||
ext.androidBuildVersionTools = "24.0.3"
|
||||
ext.gdxVersion = "1.9.4"
|
||||
ext.androidBuildVersionTools = "28.0.2"
|
||||
ext.gdxVersion = "1.9.8"
|
||||
ext.gwtVersion = "2.8.0"
|
||||
ext.slf4jVersion = "1.7.25"
|
||||
|
||||
if (JavaVersion.current().isJava8Compatible()) {
|
||||
tasks.withType(Javadoc) {
|
||||
@@ -25,20 +28,24 @@ allprojects {
|
||||
}
|
||||
}
|
||||
|
||||
def androidCompileSdk() { return 24 }
|
||||
static def androidCompileSdk() { return 28 }
|
||||
|
||||
def androidMinSdk() { return 10 }
|
||||
// 14 for Support Library, 16 for sqlite-android
|
||||
static def androidMinSdk() { return 16 }
|
||||
|
||||
def androidTargetSdk() { return 22 }
|
||||
static def androidTargetSdk() { return 22 }
|
||||
|
||||
def versionCode() { return 50 }
|
||||
static def versionCode() { return 1 }
|
||||
|
||||
def versionName() { return version }
|
||||
|
||||
subprojects {
|
||||
repositories {
|
||||
maven { url 'https://repo.boundlessgeo.com/main' }
|
||||
google()
|
||||
maven { url 'https://repo.boundlessgeo.com/main/' }
|
||||
jcenter()
|
||||
maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
|
||||
maven { url 'https://jitpack.io' }
|
||||
}
|
||||
|
||||
tasks.withType(JavaCompile) {
|
||||
|
||||
@@ -4,13 +4,11 @@ if (project.hasProperty("android")) {
|
||||
task sourcesJar(type: Jar) {
|
||||
classifier = 'sources'
|
||||
from android.sourceSets.main.java.srcDirs
|
||||
exclude 'android-logger.properties'
|
||||
}
|
||||
|
||||
task javadoc(type: Javadoc) {
|
||||
source = android.sourceSets.main.java.srcDirs
|
||||
classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
|
||||
exclude 'android-logger.properties'
|
||||
}
|
||||
} else {
|
||||
task sourcesJar(type: Jar) {
|
||||
|
||||
@@ -1,8 +1,20 @@
|
||||
# Applications using VTM software (in lexical order)
|
||||
|
||||
|**Name**|**Type**|**License/Cost**|**Sources**|
|
||||
|--------|--------|----------------|-----------|
|
||||
| [Cachebox 3.0](https://github.com/Longri/cachebox3.0) | Android / Desktop / iOS geocaching application | GPL/Free | Open |
|
||||
| [Cruiser](http://wiki.openstreetmap.org/wiki/Cruiser) | Android / Desktop map and navigation application | Proprietary/Free | Closed |
|
||||
|**Name**|**Type**|**License/Cost**|**Platforms**|**Sources**|
|
||||
|--------|--------|----------------|-------------|-----------|
|
||||
| [AdvRider WD](https://play.google.com/store/apps/details?id=com.abware.watchdog_client) | Tool-set for the adventure rider | Proprietary/Free | Android | Closed |
|
||||
| [Cachebox 3.0](https://github.com/Longri/cachebox3.0) | Geocaching application | Apache 2.0/Free | Android, Desktop, iOS | Open |
|
||||
| [Cruiser](http://wiki.openstreetmap.org/wiki/Cruiser) | Map and navigation application | Proprietary/Free | Android, Desktop | Closed |
|
||||
| [GCDroid](https://play.google.com/store/apps/details?id=com.gcdroid) | Geocaching App | Proprietary/Free and Commercial | Android | Closed |
|
||||
| [Hunt Cyprus](https://play.google.com/store/apps/developer?id=Talent+S.A.) | Map and navigation application for hunters | Proprietary/Free and Commercial | Android | Closed |
|
||||
| [Kurviger](https://kurviger.de/en) | Route planner specialized on motorcyclists | Proprietary/Free and Commercial | Android | Closed |
|
||||
| [MapTrek](http://maptrek.mobi) | Application for outdoor activities | GPL3/Free and Commercial | Android | Open |
|
||||
| [MyTourbook](http://mytourbook.sourceforge.net/mytourbook/) | Visualize and analyze tours | GPL2/Free | Desktop | Open |
|
||||
| [Navi Cyprus](https://play.google.com/store/apps/developer?id=Talent+S.A.) | Map and navigation application | Proprietary/Free and Commercial | Android | Closed |
|
||||
| Tokyo Ogiqvo | Visualize App | Commercial | [Android](https://play.google.com/store/apps/details?id=com.ogiqvo.view.tokyo&hl=ja), [iOS](https://itunes.apple.com/us/app/tokyo-ogiqvo/id1097100677?mt=8) | Closed |
|
||||
| [topoGuide](http://www.topoguide.gr/index-en.php) | Digital guides for the outdoor | Proprietary/Free and Commercial | Android | Closed |
|
||||
| [Ubitrek](https://play.google.com/store/apps/details?id=ubicarta.ubitrek) | Hiking with IGN maps | Proprietary/Free | Android | Closed |
|
||||
| [VTM with Eclipse RCP](https://github.com/wolfgang-ch/vtm-with-rcp) | VTM with an Eclipse RCP application | GPL3/Free | Desktop | Open |
|
||||
| [XCTrack](http://xctrack.org/) | Flight computer for paraglider pilots | Proprietary/Free | Android | Closed |
|
||||
|
||||
You know an application that is missing here? Please inform us by sending a message via our public [mailing list](https://groups.google.com/group/mapsforge-dev).
|
||||
|
||||
@@ -1,29 +1,161 @@
|
||||
# Changelog
|
||||
|
||||
## Version 0.6.X
|
||||
## Version 0.10.0 (2018-08-28)
|
||||
|
||||
**Version 0.6.0-rc1 (2016-10-08)**
|
||||
- Map overzoom [#393](https://github.com/mapsforge/vtm/issues/393)
|
||||
- Buildings overzoom [#503](https://github.com/mapsforge/vtm/issues/503)
|
||||
- Labels / symbols overzoom [#544](https://github.com/mapsforge/vtm/pull/544)
|
||||
- S3DB layer [#475](https://github.com/mapsforge/vtm/pull/475)
|
||||
- vtm-mvt module with MVT tile decoder [#481](https://github.com/mapsforge/vtm/pull/481)
|
||||
- Nextzen MVT / GeoJSON vector tiles [#498](https://github.com/mapsforge/vtm/issues/498)
|
||||
- OpenMapTiles MVT vector tiles [#482](https://github.com/mapsforge/vtm/issues/482)
|
||||
- Location texture renderer [#547](https://github.com/mapsforge/vtm/issues/547)
|
||||
- Render themes: symbols on lines [#495](https://github.com/mapsforge/vtm/issues/495)
|
||||
- Render themes: styles improvements [#479](https://github.com/mapsforge/vtm/pull/479)
|
||||
- Internal render themes improvements [#488](https://github.com/mapsforge/vtm/pull/488)
|
||||
- Map view roll [#474](https://github.com/mapsforge/vtm/pull/474)
|
||||
- Physical fling and fling on rotation / scale [#497](https://github.com/mapsforge/vtm/pull/497) [#499](https://github.com/mapsforge/vtm/pull/499)
|
||||
- `Parameters.ANIMATOR2 = true;`
|
||||
- Scale factor for short vertices calculation [#537](https://github.com/mapsforge/vtm/issues/537)
|
||||
- `Parameters.CUSTOM_COORD_SCALE = false;`
|
||||
- Polygon symbols default disabled [#405](https://github.com/mapsforge/vtm/issues/405)
|
||||
- `Parameters.POLY_SYMBOL = true;`
|
||||
- Map fractional zoom [#487](https://github.com/mapsforge/vtm/issues/487)
|
||||
- Render theme fallback internal resources [#477](https://github.com/mapsforge/vtm/issues/477)
|
||||
- Fix layers synchronization [#507](https://github.com/mapsforge/vtm/issues/507)
|
||||
- Fix Mapsforge clipping on small zooms [#264](https://github.com/mapsforge/vtm/issues/264)
|
||||
- Fix PathLayer (vtm) reverse segments [#220](https://github.com/mapsforge/vtm/issues/220)
|
||||
- Fix FadeStep alpha interpolation [#486](https://github.com/mapsforge/vtm/issues/486)
|
||||
- Fix libGDX flickering [#148](https://github.com/mapsforge/vtm/issues/148) [#149](https://github.com/mapsforge/vtm/issues/149)
|
||||
- ViewController refactor [#523](https://github.com/mapsforge/vtm/pull/523)
|
||||
- `ViewController.setScreenSize` renamed to `setViewSize`
|
||||
- `ViewController.setMapScreenCenter` renamed to `setMapViewCenter`
|
||||
- Android 9 compatibility [#550](https://github.com/mapsforge/vtm/issues/550)
|
||||
- JTS (LocationTech) [#484](https://github.com/mapsforge/vtm/issues/484)
|
||||
- SVG Salamander (JitPack) [#560](https://github.com/mapsforge/vtm/issues/560)
|
||||
- Many other minor improvements and bug fixes
|
||||
- [Solved issues](https://github.com/mapsforge/vtm/issues?q=is%3Aclosed+milestone%3A0.10.0)
|
||||
|
||||
**Revive of VTM vector map library**
|
||||
## Version 0.9.2 (2018-01-04)
|
||||
|
||||
- Gradle fix transitive dependencies [#433](https://github.com/mapsforge/vtm/issues/433)
|
||||
- libGDX 1.9.8 [#464](https://github.com/mapsforge/vtm/issues/464)
|
||||
- [Solved issues](https://github.com/mapsforge/vtm/issues?q=is%3Aclosed+milestone%3A0.9.2)
|
||||
|
||||
## Version 0.9.1 (2017-12-29)
|
||||
|
||||
- LwHttp engine fix http headers [#460](https://github.com/mapsforge/vtm/issues/460)
|
||||
- S3DBLayer renamed to S3DBTileLayer [#452](https://github.com/mapsforge/vtm/issues/452)
|
||||
- Many other minor improvements and bug fixes
|
||||
- [Solved issues](https://github.com/mapsforge/vtm/issues?q=is%3Aclosed+milestone%3A0.9.1)
|
||||
|
||||
## Version 0.9.0 (2017-12-03)
|
||||
|
||||
- Mapsforge maps **v5** support [#429](https://github.com/mapsforge/vtm/issues/429)
|
||||
- Mapsforge themes compatibility [#100](https://github.com/mapsforge/vtm/issues/100)
|
||||
- Render themes: line symbol [#124](https://github.com/mapsforge/vtm/issues/124)
|
||||
- Render themes: stroke dash array [#131](https://github.com/mapsforge/vtm/issues/131)
|
||||
- PathLayer overlay touch events [#316](https://github.com/mapsforge/vtm/issues/316)
|
||||
- VectorLayer (polygon) overlay touch events [#424](https://github.com/mapsforge/vtm/issues/424)
|
||||
- Two finger tap zoom out gesture [#423](https://github.com/mapsforge/vtm/issues/423)
|
||||
- POI Search example [#394](https://github.com/mapsforge/vtm/issues/394)
|
||||
- Mapsforge Reverse Geocoding [#383](https://github.com/mapsforge/vtm/issues/383)
|
||||
- Core utilities [#396](https://github.com/mapsforge/vtm/issues/396)
|
||||
- `MercatorProjection.groundResolution` renamed to `groundResolutionWithScale`
|
||||
- Map scaling improvements [#401](https://github.com/mapsforge/vtm/issues/401)
|
||||
- Mapsforge fix artifacts zoom >17 [#231](https://github.com/mapsforge/vtm/issues/231)
|
||||
- Mapzen building extrusions [#419](https://github.com/mapsforge/vtm/issues/419)
|
||||
- BuildingLayer expects height tags in meters
|
||||
- Polygon symbol positioning [#405](https://github.com/mapsforge/vtm/issues/405)
|
||||
- PolyLabel default disabled [#402](https://github.com/mapsforge/vtm/issues/402)
|
||||
- `Parameters.POLY_LABEL = true;`
|
||||
- vtm-theme-comparator module [#387](https://github.com/mapsforge/vtm/issues/387)
|
||||
- Feature parameters [#403](https://github.com/mapsforge/vtm/issues/403)
|
||||
- vtm-android-gdx module enhancements [#435](https://github.com/mapsforge/vtm/issues/435)
|
||||
- Gradle 4 / Android plugin 3 support [#433](https://github.com/mapsforge/vtm/issues/433)
|
||||
- libGDX 1.9.7 [#434](https://github.com/mapsforge/vtm/issues/434)
|
||||
- Internal render themes various improvements [#41](https://github.com/mapsforge/vtm/issues/41)
|
||||
- Many other minor improvements and bug fixes
|
||||
- [Solved issues](https://github.com/mapsforge/vtm/issues?q=is%3Aclosed+milestone%3A0.9.0)
|
||||
|
||||
## Version 0.8.0 (2017-07-19)
|
||||
|
||||
- Real time (SVG) texture atlas [#63](https://github.com/mapsforge/vtm/issues/63)
|
||||
- `Parameters.TEXTURE_ATLAS = true;`
|
||||
- Marker clustering [#312](https://github.com/mapsforge/vtm/issues/312)
|
||||
- Osmagray theme [#300](https://github.com/mapsforge/vtm/issues/300)
|
||||
- Symbol rotation [#294](https://github.com/mapsforge/vtm/issues/294)
|
||||
- Location renderer improvements [#317](https://github.com/mapsforge/vtm/issues/317)
|
||||
- POT textures [#334](https://github.com/mapsforge/vtm/issues/334)
|
||||
- `Parameters.POT_TEXTURES = true;`
|
||||
- OkHttp external cache [#135](https://github.com/mapsforge/vtm/issues/135)
|
||||
- Texture atlas improvements [#301](https://github.com/mapsforge/vtm/pull/301) [#304](https://github.com/mapsforge/vtm/pull/304)
|
||||
- vtm-json module [#367](https://github.com/mapsforge/vtm/issues/367)
|
||||
- Mapzen GeoJSON vector tiles [#55](https://github.com/mapsforge/vtm/issues/55)
|
||||
- vtm-ios-example module [#326](https://github.com/mapsforge/vtm/issues/326)
|
||||
- Handle layers enabled state [#342](https://github.com/mapsforge/vtm/issues/342)
|
||||
- Fix coord scale short overflow [#343](https://github.com/mapsforge/vtm/issues/343)
|
||||
- Mapsforge map read improvements [#357](https://github.com/mapsforge/vtm/issues/357) [#370](https://github.com/mapsforge/vtm/issues/370)
|
||||
- Improve canvas DPI setting [#349](https://github.com/mapsforge/vtm/issues/349)
|
||||
- OSM indoor layer enhancements [#366](https://github.com/mapsforge/vtm/issues/366)
|
||||
- Gretty plugin at web modules [#338](https://github.com/mapsforge/vtm/issues/338)
|
||||
- libGDX 1.9.6 [#333](https://github.com/mapsforge/vtm/issues/333)
|
||||
- Internal render themes various improvements [#41](https://github.com/mapsforge/vtm/issues/41)
|
||||
- Many other minor improvements and bug fixes
|
||||
- [Solved issues](https://github.com/mapsforge/vtm/issues?q=is%3Aclosed+milestone%3A0.8.0)
|
||||
|
||||
## Version 0.7.0 (2017-02-26)
|
||||
|
||||
- Mapsforge multiple map files [#208](https://github.com/mapsforge/vtm/issues/208)
|
||||
- New gestures implementation [#253](https://github.com/mapsforge/vtm/issues/253)
|
||||
- `Parameters.MAP_EVENT_LAYER2 = true;`
|
||||
- Polygon label position enhancements [#80](https://github.com/mapsforge/vtm/issues/80)
|
||||
- vtm-web modules update [#51](https://github.com/mapsforge/vtm/issues/51)
|
||||
- Mapzen MVT vector tiles [#57](https://github.com/mapsforge/vtm/issues/57)
|
||||
- SVG resources scaling in themes [#214](https://github.com/mapsforge/vtm/issues/214)
|
||||
- Circle map style [#122](https://github.com/mapsforge/vtm/issues/122)
|
||||
- Oneway arrows in themes [#275](https://github.com/mapsforge/vtm/issues/275)
|
||||
- Texture atlas from bitmaps [#283](https://github.com/mapsforge/vtm/pull/283)
|
||||
- PathLayer (vtm) fix disappearing segments [#108](https://github.com/mapsforge/vtm/issues/108)
|
||||
- House numbers (nodes) fix visibility [#168](https://github.com/mapsforge/vtm/issues/168)
|
||||
- Android fix quick scale vs long press [#250](https://github.com/mapsforge/vtm/issues/250)
|
||||
- Use baseline 160dpi in scaling [#236](https://github.com/mapsforge/vtm/issues/236)
|
||||
- OkHttp3 update [#138](https://github.com/mapsforge/vtm/issues/138)
|
||||
- libGDX double tap zoom [#263](https://github.com/mapsforge/vtm/issues/263)
|
||||
- MapFileTileSource zoom level API enhancements [#219](https://github.com/mapsforge/vtm/issues/219)
|
||||
- Animator enhancements with easing functions [#246](https://github.com/mapsforge/vtm/issues/246)
|
||||
- Tile grid layer scaling [#238](https://github.com/mapsforge/vtm/issues/238)
|
||||
- Internal render themes new SVG resources [#251](https://github.com/mapsforge/vtm/issues/251)
|
||||
- Fix theme parsing in non-Latin locales [#297](https://github.com/mapsforge/vtm/issues/297)
|
||||
- libGDX 1.9.5 [#270](https://github.com/mapsforge/vtm/issues/270)
|
||||
- Internal render themes various improvements [#41](https://github.com/mapsforge/vtm/issues/41)
|
||||
- Many other minor improvements and bug fixes
|
||||
- [Solved issues](https://github.com/mapsforge/vtm/issues?q=is%3Aclosed+milestone%3A0.7.0)
|
||||
|
||||
## Version 0.6.0 (2016-10-28) - VTM revive
|
||||
|
||||
- Mapsforge maps **v4** support [#34](https://github.com/mapsforge/vtm/issues/34)
|
||||
- Render theme SVG resources [#60](https://github.com/mapsforge/vtm/issues/60)
|
||||
- Mapsforge multilingual maps [#34](https://github.com/mapsforge/vtm/issues/34)
|
||||
- Render theme styles [#93](https://github.com/mapsforge/vtm/issues/93)
|
||||
- vtm-ios module update [#29](https://github.com/mapsforge/vtm/issues/29)
|
||||
- Native libraries for all platforms [#14](https://github.com/mapsforge/vtm/issues/14)
|
||||
- Line stipple and texture rendering [#105](https://github.com/mapsforge/vtm/issues/105)
|
||||
- Layer groups [#99](https://github.com/mapsforge/vtm/issues/99) [#103](https://github.com/mapsforge/vtm/issues/103)
|
||||
- Location renderer [#171](https://github.com/mapsforge/vtm/issues/171)
|
||||
- Location renderer and layer [#171](https://github.com/mapsforge/vtm/issues/171)
|
||||
- Map scale bar [#84](https://github.com/mapsforge/vtm/issues/84)
|
||||
- Tile size based on scale factor [#183](https://github.com/mapsforge/vtm/issues/183)
|
||||
- `Parameters.CUSTOM_TILE_SIZE = false;`
|
||||
- libGDX layer gestures [#151](https://github.com/mapsforge/vtm/issues/151)
|
||||
- Render theme area tessellation option [#37](https://github.com/mapsforge/vtm/issues/37)
|
||||
- Render theme resources optional location prefixes [#66](https://github.com/mapsforge/vtm/issues/66)
|
||||
- Graphics API platform enhancements [#92](https://github.com/mapsforge/vtm/issues/92)
|
||||
- GeoPoint & BoundingBox improvements [#201](https://github.com/mapsforge/vtm/issues/201) [#200](https://github.com/mapsforge/vtm/issues/200)
|
||||
- vtm-jts module [#53](https://github.com/mapsforge/vtm/issues/53)
|
||||
- vtm-http module [#140](https://github.com/mapsforge/vtm/issues/140)
|
||||
- Internal render themes various improvements [#41](https://github.com/mapsforge/vtm/issues/41)
|
||||
- LWJGL desktop libGDX backend [#129](https://github.com/mapsforge/vtm/issues/129)
|
||||
- Available on [Maven Central](https://search.maven.org/search?q=g:org.mapsforge)
|
||||
- SNAPSHOT builds publish to Sonatype OSSRH [#165](https://github.com/mapsforge/vtm/issues/165)
|
||||
- libGDX 1.9.4 [#164](https://github.com/mapsforge/vtm/issues/164)
|
||||
- Internal render themes various improvements [#41](https://github.com/mapsforge/vtm/issues/41)
|
||||
- Many other minor improvements and bug fixes
|
||||
- [Solved issues](https://github.com/mapsforge/vtm/issues?q=is%3Aissue+is%3Aclosed+milestone%3A0.6.0)
|
||||
- [Solved issues](https://github.com/mapsforge/vtm/issues?q=is%3Aclosed+milestone%3A0.6.0)
|
||||
|
||||
@@ -1,25 +1,44 @@
|
||||
# Integration guide
|
||||
|
||||
This article describes how to integrate the library in your project.
|
||||
This article describes how to integrate the library in your project, with Gradle / Maven / Jars or SNAPSHOT builds.
|
||||
|
||||
Current version is [](https://maven-badges.herokuapp.com/maven-central/org.mapsforge/vtm)
|
||||
Current version is [](https://search.maven.org/search?q=g:org.mapsforge)
|
||||
|
||||
## Gradle
|
||||
|
||||
### Core
|
||||
```groovy
|
||||
compile 'org.mapsforge:vtm:[CURRENT-VERSION]'
|
||||
compile 'org.mapsforge:vtm-themes:[CURRENT-VERSION]'
|
||||
compile 'org.slf4j:slf4j-api:1.7.21'
|
||||
implementation 'org.mapsforge:vtm:[CURRENT-VERSION]'
|
||||
implementation 'org.mapsforge:vtm-themes:[CURRENT-VERSION]'
|
||||
implementation 'org.slf4j:slf4j-api:1.7.25'
|
||||
```
|
||||
|
||||
### Android
|
||||
```groovy
|
||||
compile 'org.mapsforge:vtm-android:[CURRENT-VERSION]'
|
||||
compile 'org.mapsforge:vtm-android:[CURRENT-VERSION]:natives-armeabi'
|
||||
compile 'org.mapsforge:vtm-android:[CURRENT-VERSION]:natives-armeabi-v7a'
|
||||
compile 'org.mapsforge:vtm-android:[CURRENT-VERSION]:natives-x86'
|
||||
compile 'com.caverock:androidsvg:1.2.2-beta-1'
|
||||
implementation 'org.mapsforge:vtm-android:[CURRENT-VERSION]'
|
||||
implementation 'org.mapsforge:vtm-android:[CURRENT-VERSION]:natives-armeabi-v7a'
|
||||
implementation 'org.mapsforge:vtm-android:[CURRENT-VERSION]:natives-arm64-v8a'
|
||||
implementation 'org.mapsforge:vtm-android:[CURRENT-VERSION]:natives-x86'
|
||||
implementation 'org.mapsforge:vtm-android:[CURRENT-VERSION]:natives-x86_64'
|
||||
implementation 'com.caverock:androidsvg:1.3'
|
||||
```
|
||||
|
||||
### Android (libGDX)
|
||||
```groovy
|
||||
implementation 'org.mapsforge:vtm-android:[CURRENT-VERSION]'
|
||||
implementation 'org.mapsforge:vtm-android:[CURRENT-VERSION]:natives-armeabi-v7a'
|
||||
implementation 'org.mapsforge:vtm-android:[CURRENT-VERSION]:natives-arm64-v8a'
|
||||
implementation 'org.mapsforge:vtm-android:[CURRENT-VERSION]:natives-x86'
|
||||
implementation 'org.mapsforge:vtm-android:[CURRENT-VERSION]:natives-x86_64'
|
||||
implementation 'org.mapsforge:vtm-gdx:[CURRENT-VERSION]'
|
||||
implementation 'org.mapsforge:vtm-android-gdx:[CURRENT-VERSION]'
|
||||
implementation 'org.mapsforge:vtm-android-gdx:[CURRENT-VERSION]:natives-armeabi-v7a'
|
||||
implementation 'org.mapsforge:vtm-android-gdx:[CURRENT-VERSION]:natives-arm64-v8a'
|
||||
implementation 'org.mapsforge:vtm-android-gdx:[CURRENT-VERSION]:natives-x86'
|
||||
implementation 'org.mapsforge:vtm-android-gdx:[CURRENT-VERSION]:natives-x86_64'
|
||||
implementation 'com.badlogicgames.gdx:gdx:1.9.8'
|
||||
implementation 'com.badlogicgames.gdx:gdx-backend-android:1.9.8'
|
||||
implementation 'com.caverock:androidsvg:1.3'
|
||||
```
|
||||
|
||||
### iOS
|
||||
@@ -28,24 +47,88 @@ Detailed iOS instructions can be found [here](ios.md).
|
||||
|
||||
### Desktop
|
||||
```groovy
|
||||
compile 'org.mapsforge:vtm-gdx:[CURRENT-VERSION]'
|
||||
compile 'org.mapsforge:vtm-desktop:[CURRENT-VERSION]'
|
||||
compile 'org.mapsforge:vtm-desktop:[CURRENT-VERSION]:natives-linux'
|
||||
compile 'org.mapsforge:vtm-desktop:[CURRENT-VERSION]:natives-osx'
|
||||
compile 'org.mapsforge:vtm-desktop:[CURRENT-VERSION]:natives-windows'
|
||||
compile 'com.badlogicgames.gdx:gdx:1.9.4'
|
||||
compile 'com.badlogicgames.gdx:gdx-platform:1.9.4:natives-desktop'
|
||||
compile 'com.badlogicgames.gdx:gdx-backend-lwjgl:1.9.4'
|
||||
compile 'org.lwjgl.lwjgl:lwjgl:2.9.3'
|
||||
compile 'org.lwjgl.lwjgl:lwjgl-platform:2.9.3:natives-linux'
|
||||
compile 'org.lwjgl.lwjgl:lwjgl-platform:2.9.3:natives-osx'
|
||||
compile 'org.lwjgl.lwjgl:lwjgl-platform:2.9.3:natives-windows'
|
||||
compile 'com.kitfox.svg:svg-salamander:1.0'
|
||||
repositories {
|
||||
maven { url 'https://jitpack.io' }
|
||||
}
|
||||
|
||||
implementation 'org.mapsforge:vtm-gdx:[CURRENT-VERSION]'
|
||||
implementation 'org.mapsforge:vtm-desktop:[CURRENT-VERSION]'
|
||||
implementation 'org.mapsforge:vtm-desktop:[CURRENT-VERSION]:natives-linux'
|
||||
implementation 'org.mapsforge:vtm-desktop:[CURRENT-VERSION]:natives-osx'
|
||||
implementation 'org.mapsforge:vtm-desktop:[CURRENT-VERSION]:natives-windows'
|
||||
implementation 'com.badlogicgames.gdx:gdx:1.9.8'
|
||||
implementation 'com.badlogicgames.gdx:gdx-platform:1.9.8:natives-desktop'
|
||||
implementation 'com.badlogicgames.gdx:gdx-backend-lwjgl:1.9.8'
|
||||
implementation 'org.lwjgl.lwjgl:lwjgl:2.9.3'
|
||||
implementation 'org.lwjgl.lwjgl:lwjgl-platform:2.9.3:natives-linux'
|
||||
implementation 'org.lwjgl.lwjgl:lwjgl-platform:2.9.3:natives-osx'
|
||||
implementation 'org.lwjgl.lwjgl:lwjgl-platform:2.9.3:natives-windows'
|
||||
implementation 'com.github.blackears:svgSalamander:v1.1.1'
|
||||
```
|
||||
|
||||
### JTS geometries
|
||||
|
||||
```groovy
|
||||
implementation 'org.mapsforge:vtm-jts:[CURRENT-VERSION]'
|
||||
implementation 'org.locationtech.jts:jts-core:1.15.0'
|
||||
```
|
||||
|
||||
### Online tiles
|
||||
|
||||
```groovy
|
||||
implementation 'org.mapsforge:vtm-http:[CURRENT-VERSION]'
|
||||
implementation 'com.squareup.okhttp3:okhttp:3.8.0'
|
||||
implementation 'com.squareup.okio:okio:1.13.0'
|
||||
```
|
||||
|
||||
### Mapbox vector tiles
|
||||
|
||||
```groovy
|
||||
implementation 'org.mapsforge:vtm-mvt:[CURRENT-VERSION]'
|
||||
implementation 'com.google.protobuf:protobuf-java:3.5.1'
|
||||
implementation 'com.wdtinc:mapbox-vector-tile:3.0.0'
|
||||
implementation 'org.locationtech.jts:jts-core:1.15.0'
|
||||
```
|
||||
|
||||
### GeoJSON vector tiles
|
||||
|
||||
```groovy
|
||||
implementation 'org.mapsforge:vtm-json:[CURRENT-VERSION]'
|
||||
implementation 'com.fasterxml.jackson.core:jackson-annotations:2.8.4'
|
||||
implementation 'com.fasterxml.jackson.core:jackson-core:2.8.4'
|
||||
implementation 'com.fasterxml.jackson.core:jackson-databind:2.8.4'
|
||||
```
|
||||
|
||||
### jeo (indoor maps)
|
||||
|
||||
Add _first_ the Boundless repository:
|
||||
```groovy
|
||||
repositories {
|
||||
maven { url 'https://repo.boundlessgeo.com/main/' }
|
||||
jcenter()
|
||||
...
|
||||
}
|
||||
```
|
||||
|
||||
```groovy
|
||||
implementation 'org.mapsforge:vtm-jeo:[CURRENT-VERSION]'
|
||||
implementation('org.jeo:jeo:0-SNAPSHOT') {
|
||||
exclude group: 'org.slf4j', module: 'slf4j-jdk14'
|
||||
}
|
||||
implementation('org.jeo:jeo-carto:0-SNAPSHOT') {
|
||||
exclude group: 'org.slf4j', module: 'slf4j-jdk14'
|
||||
}
|
||||
implementation('org.jeo:jeo-render:0-SNAPSHOT') {
|
||||
exclude group: 'org.slf4j', module: 'slf4j-jdk14'
|
||||
}
|
||||
implementation 'org.osgeo:proj4j:0.1.0:jeo'
|
||||
implementation 'com.metaweb:lessen:1.0'
|
||||
implementation 'com.vividsolutions:jts:1.13'
|
||||
```
|
||||
|
||||
## Snapshots
|
||||
|
||||
We publish regularly SNAPSHOT builds to Sonatype OSS Repository Hosting.
|
||||
We publish SNAPSHOT builds to Sonatype OSS Repository Hosting.
|
||||
|
||||
You need to add the repository:
|
||||
```groovy
|
||||
@@ -56,10 +139,17 @@ repositories {
|
||||
|
||||
And declare the dependencies like:
|
||||
```groovy
|
||||
compile 'org.mapsforge:vtm:master-SNAPSHOT'
|
||||
implementation 'org.mapsforge:vtm:master-SNAPSHOT'
|
||||
...
|
||||
```
|
||||
|
||||
For checking latest snapshot on every build:
|
||||
```groovy
|
||||
configurations.all {
|
||||
resolutionStrategy.cacheChangingModulesFor 0, 'seconds'
|
||||
}
|
||||
```
|
||||
|
||||
## Maven
|
||||
|
||||
The dependencies for Maven are declared in a similar way. For example:
|
||||
@@ -74,6 +164,6 @@ The dependencies for Maven are declared in a similar way. For example:
|
||||
|
||||
## Jars
|
||||
|
||||
You can find jars (regular and with dependencies) in Maven Central or Snapshots repositories.
|
||||
You can find release and snapshot jars (regular and with dependencies) in [Maven Central](https://search.maven.org/search?q=g:org.mapsforge) and [Sonatype OSS Repository Hosting](https://oss.sonatype.org/content/repositories/snapshots/org/mapsforge/).
|
||||
|
||||
Third party jars can be found at their respective sites or in Maven Central repository.
|
||||
|
||||
11
docs/Mapsforge-Maps.md
Normal file
@@ -0,0 +1,11 @@
|
||||
# Mapsforge map providers (in lexical order)
|
||||
|
||||
- [AndroidMaps](http://www.androidmaps.co.uk/)
|
||||
- [Freizeitkarte](http://www.freizeitkarte-osm.de/android/en/index.html)
|
||||
- [Kurviger](https://offline-maps.kurviger.de/)
|
||||
- [Locusvectormaps](http://www.locusvectormaps.com)
|
||||
- [Mapsforge](http://download.mapsforge.org/)
|
||||
- [OpenAndroMaps](http://www.openandromaps.org/en/)
|
||||
- [OpenMaps](http://openmaps.eu/)
|
||||
|
||||
You know a Mapsforge map provider that is missing here? Please inform us by sending a message via our public [mailing list](https://groups.google.com/group/mapsforge-dev).
|
||||
279
docs/Rendertheme.md
Normal file
@@ -0,0 +1,279 @@
|
||||
# RenderTheme
|
||||
|
||||
**This article describes how to use XML-based render-themes to style maps.**
|
||||
|
||||
If you have any questions or problems, don't hesitate to ask our public [mapsforge-dev](https://groups.google.com/group/mapsforge-dev) mailing list for help. You can also report bugs and improvement requests via our [issue tracker](https://github.com/mapsforge/vtm/issues).
|
||||
|
||||
## Introduction
|
||||
|
||||
A render-theme is an XML file which contains rules and rendering instructions. Such files can be used to customize the visual style of the rendered map. The vtm map library comes with built-in render-themes similar to the [Osmarender](http://wiki.openstreetmap.org/wiki/Osmarender) style. External render-theme files are also supported and can be activated via the `map.setTheme(ThemeLoader.load(File))` method at runtime.
|
||||
|
||||
Syntax and semantics of render-theme files are similar but not identical to [Osmarender rules](http://wiki.openstreetmap.org/wiki/Osmarender/Rules). A formal render-theme description exists as an *XML schema document*, it can be found in the [repository](https://github.com/mapsforge/vtm/blob/master/resources/rendertheme.xsd).
|
||||
|
||||
It is always recommended to study the [default](https://github.com/mapsforge/vtm/blob/master/vtm-themes/resources/assets/vtm/default.xml) built-in render theme.
|
||||
|
||||
## Rules
|
||||
|
||||
A rule element `<m/>` has several attributes to specify which map elements the rule matches. Non of them is required.
|
||||
|
||||
|**Attribute**|**Valid values**|**Description**|**Default**|
|
||||
|-------------|----------------|---------------|------------|
|
||||
|e|<ul><li>node</li><li>way</li><li>any</li></ul>|Defines which map element type will be matched.|*any*|
|
||||
|k|[string](http://www.w3.org/TR/xmlschema-2/#string)|The key of the OpenStreetMap tag. <ul><li>A vertical bar "`\|`" can be used to specify multiple keys.</li>|any key|
|
||||
|v|[string](http://www.w3.org/TR/xmlschema-2/#string)|The value of the OpenStreetMap tag. <ul><li>A vertical bar "`\|`" can be used to specify multiple values.</li><li>A minus sign "`-`" excludes the other values after "`\|`". It never works alone.</li><li>A tilde "`~`" matches if the map element does not have a tag with the specified key.</li>|any value|
|
||||
|closed|<ul><li>yes</li><li>no</li><li>any</li></ul>|Defines which ways will be matched. A way is considered as closed if its first node and its last node are equal.|*any*|
|
||||
|select|<ul><li>first</li><li>when-matched</li><li>any</li></ul>|<ul><li>Only add the first matching sub-rule in this rule section (the others are ignored)</li><li>Select all matches of the enclosing rule section</li><li>Select all (whether it was matched or not)</li></ul>|*any*|
|
||||
|zoom-min|[unsigned byte](http://www.w3.org/TR/xmlschema-2/#unsignedByte)|The minimum zoom level on which the rule will be matched.|*0*|
|
||||
|zoom-max|[unsigned byte](http://www.w3.org/TR/xmlschema-2/#unsignedByte)|The maximum zoom level on which the rule will be matched.|*127*|
|
||||
|
||||
Rules can be nested to any level of depth. This can be used to define rendering instructions which depend on multiple rules. It may also be used to structure complex declarations and to avoid redundancy:
|
||||
|
||||
```xml
|
||||
<m e="way" closed="no">
|
||||
<m k="highway" v="motorway">
|
||||
<m k="tunnel" v="true|yes">
|
||||
…
|
||||
</m>
|
||||
<m k="tunnel" v="~|no|false">
|
||||
…
|
||||
</m>
|
||||
</m>
|
||||
</m>
|
||||
```
|
||||
|
||||
|
||||
Here is an example how to use the `select` attribute. The symbol is shown. The **bold** caption isn't visible cause only the first matched sub-rule is considered. The _italic_ caption is displayed as it was selected by the first sub-rule.
|
||||
|
||||
```xml
|
||||
<m k="railway" v="halt|tram_stop" zoom-min="15" select="first">
|
||||
<m v="tram_stop">
|
||||
<symbol src="assets:symbols/transport/tram_stop.svg" />
|
||||
</m>
|
||||
<m v="tram_stop">
|
||||
<caption style="bold" dy="20" fill="#af3a3a" k="name" size="12"/>
|
||||
</m>
|
||||
<m select="when-matched">
|
||||
<caption style="italic" dy="-20" fill="#222222" k="name" size="12"/>
|
||||
</m>
|
||||
</m>
|
||||
```
|
||||
|
||||
## Rendering Instructions
|
||||
|
||||
A rendering instruction specifies how a map element is drawn. Each rule element might include any number of rendering instructions. Except for labels and symbols, all rendering instructions are drawn on the map in the order of their definition.
|
||||
|
||||
At the moment, the following rendering instructions are available:
|
||||
|
||||
- `area`
|
||||
- `caption`
|
||||
- `circle`
|
||||
- `line`
|
||||
- `outline`
|
||||
- `lineSymbol`
|
||||
- `text`
|
||||
- `extrusion`
|
||||
- `symbol`
|
||||
|
||||
## Header Elements
|
||||
|
||||
The following header elements can be used:
|
||||
- `map-background`: a color value to set the color of a blank tile. This should not be used to set the color of the sea or land. Default is `#FFFFFF`.
|
||||
- `base-stroke-width`: set the basic width of strokes. Default is `1`.
|
||||
- `base-text-scale`: set the overall text scale. Default is `1`.
|
||||
|
||||
```xml
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<rendertheme xmlns="http://opensciencemap.org/rendertheme" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://opensciencemap.org/rendertheme https://raw.githubusercontent.com/mapsforge/vtm/master/resources/rendertheme.xsd" version="1" map-background="#FFFCFA">
|
||||
…
|
||||
</rendertheme>
|
||||
```
|
||||
|
||||
## Texts and Captions
|
||||
|
||||
The most common attributes for textual styling:
|
||||
|
||||
|**Attribute**|**Valid values**|**Description**|**Default**|
|
||||
|-------------|----------------|---------------|-----------|
|
||||
|font-family|*default*, *default_bold*, *monospace*, *sans_serif*, *serif*, *thin*, *light*, *medium*, *black*, *condensed*|Set font family|*default*|
|
||||
|style|*bold*, *bold_italic*, *italic*, *normal*|Set font style|*normal*|
|
||||
|size|non negative [float](https://www.w3.org/TR/xmlschema-2/#float)|Set font size|*0*|
|
||||
|fill|[color](https://www.w3.org/TR/css-color-4)|Set fill color|*#000000*|
|
||||
|stroke|[color](https://www.w3.org/TR/css-color-4)|Set stroke color|*#000000*|
|
||||
|stroke-width|non negative [float](https://www.w3.org/TR/xmlschema-2/#float)|Set stroke width|*0*|
|
||||
|dy|[float](https://www.w3.org/TR/xmlschema-2/#float)|Offset in vertical direction|*0*|
|
||||
|
||||
## Styles
|
||||
|
||||
There are different possibilities to simplify and accelerate map styling or changing styles.
|
||||
|
||||
### Style patterns
|
||||
|
||||
If you want to use a specific style multiple times you not have to rewrite it for each text, area, or line rule.
|
||||
If you define a style set an `id` and use it with `use` in your rendering instructions:
|
||||
- `style-text`
|
||||
- `style-line`
|
||||
- `style-area`
|
||||
|
||||
This example styles all areas with the_residential_ style, which haven't the `highway` or `building` key.
|
||||
|
||||
```xml
|
||||
<style-area fade="11" fill="#e8e7e3" id="residential" />
|
||||
|
||||
<m closed="yes" e="way" k="highway|building" v="~">
|
||||
<m v="residential|commercial|retail|farmyard">
|
||||
<area use="residential" />
|
||||
</m>
|
||||
</m>
|
||||
```
|
||||
|
||||
### Stylemenus
|
||||
|
||||
The **stylemenu** allows you to selectively turn rules on and off, in effect defining multiple layers in a map that can be controlled individually.
|
||||
|
||||
To make use of style menus, you will first need to group the elements of your map into categories by attaching a **cat** element to them.
|
||||
|
||||
```xml
|
||||
<m cat="areas" e="way" k="landuse" v="landfill|quarry" zoom-min="14">
|
||||
```
|
||||
|
||||
The same cat tag can be given to as many elements as you like, but each element can only have one cat tag.
|
||||
However, this does not limit your ability to group elements, as in the style definitions, multiple categories can be combined into one layer.
|
||||
|
||||
You can think about the cat tag as a switch that switches all elements in the rendertheme below it either on or off. If a category is turned off, all elements below it become invisible. If a category is turned on, all elements below become visible (unless they are themselves controlled via a category which is turned off).
|
||||
|
||||
Layers are combinations of categories that can be toggled on and off together and other layers (via **overlay**) that can be toggled on and off individually. In general, categories are not visible to a map user, but layers are. To make layers more user friendly, they can be named with the name tag in various languages.
|
||||
|
||||
```xml
|
||||
<layer id="public_transport" visible="true">
|
||||
<name lang="de" value="Öffentlicher Verkehr"/>
|
||||
<name lang="en" value="Public Transport"/>
|
||||
<name lang="es" value="Transporte público"/>
|
||||
<name lang="fr" value="Transport public"/>
|
||||
<cat id="public_transport"/>
|
||||
<cat id="rail"/>
|
||||
</layer>
|
||||
```
|
||||
|
||||
A set of layer definitions makes up a style:
|
||||
|
||||
```xml
|
||||
<stylemenu id="r4menu" defaultvalue="terrain" defaultlang="en">
|
||||
<layer id="shopping" visible="true">
|
||||
<name lang="de" value="Shopping"/>
|
||||
<name lang="en" value="Shopping"/>
|
||||
<name lang="es" value="Tiendas"/>
|
||||
<name lang="fr" value="Shopping"/>
|
||||
<cat id="shopping"/>
|
||||
</layer>
|
||||
|
||||
<layer id="terrain" visible="true">
|
||||
<name lang="de" value="Topographischer Hintergrund"/>
|
||||
<name lang="en" value="Topographic Colours"/>
|
||||
<name lang="es" value="Colores topográficos"/>
|
||||
<name lang="fr" value="Couleurs topographiques"/>
|
||||
<cat id="topo"/>
|
||||
</layer>
|
||||
</stylemenu>
|
||||
```
|
||||
|
||||
The **visible** attribute is meant to indicate which of the layers are visible in the user interface. Layers where visible is set to false should not be seen by a user, and are thus useful to build base-layers of common categories from which then user-visible layers can be inherited, like this:
|
||||
|
||||
```xml
|
||||
<layer id="base">
|
||||
<cat id="roads"/>
|
||||
<cat id="waterbodies"/>
|
||||
<cat id="landuse"/>
|
||||
<cat id="places"/>
|
||||
<overlay id="emergency"/>
|
||||
<overlay id="food"/>
|
||||
</layer>
|
||||
|
||||
<layer id="simple" parent="base" visible="true">
|
||||
<name lang="de" value="Auto"/>
|
||||
<name lang="en" value="Driving"/>
|
||||
<name lang="es" value="Conducción"/>
|
||||
<name lang="fr" value="Conduite"/>
|
||||
<cat id="transport"/>
|
||||
<cat id="barrier"/>
|
||||
<cat id="driving"/>
|
||||
<overlay id="parking"/>
|
||||
<overlay id="shopping"/>
|
||||
</layer>
|
||||
|
||||
<layer id="standard" parent="base" visible="true">
|
||||
<name lang="de" value="Stadt"/>
|
||||
<name lang="en" value="City"/>
|
||||
<name lang="es" value="City"/>
|
||||
<name lang="fr" value="Ville"/>
|
||||
<cat id="areas"/>
|
||||
<overlay id="tourism"/>
|
||||
<overlay id="sports"/>
|
||||
<overlay id="amenities"/>
|
||||
<overlay id="buildings"/>
|
||||
<overlay id="public_transport"/>
|
||||
<overlay id="accommodation"/>
|
||||
<overlay id="shopping"/>
|
||||
</layer>
|
||||
```
|
||||
|
||||
To turn layers on by default, add the **enabled=true** attribute. In this case, buildings should be by default visible, while parking related elements not:
|
||||
|
||||
```xml
|
||||
<layer id="parking">
|
||||
<name lang="de" value="Parkplätze"/>
|
||||
<name lang="en" value="Parking"/>
|
||||
<name lang="es" value="Aparcamiento"/>
|
||||
<name lang="fr" value="Parking"/>
|
||||
<cat id="parking"/>
|
||||
</layer>
|
||||
|
||||
<layer enabled="true" id="buildings">
|
||||
<name lang="de" value="Gebäude"/>
|
||||
<name lang="en" value="Buildings"/>
|
||||
<name lang="es" value="Edificios"/>
|
||||
<name lang="fr" value="Bâtiments"/>
|
||||
<cat id="buildings"/>
|
||||
</layer>
|
||||
```
|
||||
|
||||
#### Map Integration
|
||||
|
||||
The [Playground](https://github.com/mapsforge/vtm/blob/master/vtm-playground/src/org/oscim/test/MapsforgeStyleTest.java) and [Android](https://github.com/mapsforge/vtm/blob/master/vtm-android-example/src/org/oscim/android/test/MapsforgeStyleActivity.java) Samples app have a completely worked style menu.
|
||||
When a rendertheme is parsed, the style menu definitons are parsed and a callback is made into the application giving it access to the stylemenu definitions.
|
||||
|
||||
On Android, the stylemenus can thus be converted into standard Android settings, providing a seamless integration of the rendertheme definitions that do not require changes every time the rendertheme changes. There is an example on how to do this in the Samples app of Mapsforge, see the [Settings.java](https://github.com/mapsforge/mapsforge/blob/master/mapsforge-samples-android/src/main/java/org/mapsforge/samples/android/Settings.java) file in Mapsforge repository.
|
||||
|
||||
## Priorities
|
||||
|
||||
Labels and icons are drawn in order of priority. The default (and highest) priority is 0, so anything with a priority higher than 0 will only be drawn if the space is not yet taken up or has a lower priority value than its colliding elements.
|
||||
|
||||
_VTM priorities have the opposite meaning to the Mapsforge render-theme priorities._
|
||||
|
||||
```xml
|
||||
<m e="node" k="place" v="town" zoom-min="8">
|
||||
<caption priority="2" k="name" style="bold" size="14" fill="#333380" stroke="#FFFFFF" stroke-width="2.0"/>
|
||||
</m>
|
||||
<m e="node" k="place" v="city" zoom-min="6" zoom-max="6">
|
||||
<caption priority="0" k="name" style="bold" size="11" fill="#333380" stroke="#FFFFFF" stroke-width="2.0"/>
|
||||
</m>
|
||||
```
|
||||
|
||||
## Symbols
|
||||
|
||||
Symbols can be either defined in the raster PNG format or as vector graphics in SVG format. VTM uses libraries for [Android](https://github.com/BigBadaboom/androidsvg) and [Java](https://github.com/blackears/svgSalamander) that support a large subset of the [Tiny SVG](http://www.w3.org/TR/SVGTiny12/index.html) specification.
|
||||
|
||||
### SVG Scaling
|
||||
|
||||
SVG resources can be automatically scaled to accommodate different device resolutions.
|
||||
|
||||
The options available are:
|
||||
|
||||
- If no size is given, a svg is rendered to a 20x20px multiplied by the device scale factor and any user adjustments.
|
||||
- symbol-percent: the svg is rendered as a percentage size of its default size. This is the best way to make certain svg smaller or bigger than others.
|
||||
- symbol-width and/or symbol-height: additional parameters give the absolute pixel size for the symbol, again adjusted by the scale factors. If only one dimension is set, the other is calculated from aspect ratio.
|
||||
|
||||
### SVG Icon Design
|
||||
|
||||
If you want to know how to design your own icons, you can have a look at Google's [Material Design](https://material.io/design/iconography/system-icons.html) conventions.
|
||||
To keep SVG sizes down, it is advisable to make use of the reuse facilities within SVG files and to remove any unneccessary comments and metadata.
|
||||
8
docs/desktop.md
Normal file
@@ -0,0 +1,8 @@
|
||||
### Desktop
|
||||
|
||||
To run the desktop samples can use the Gradle `run` task.
|
||||
|
||||
e.g. for `vtm-playground` can change the [mainClassName](../vtm-playground/build.gradle) to run each sample and pass args:
|
||||
```groovy
|
||||
./gradlew :vtm-playground:run -Pargs=/path/to/map
|
||||
```
|
||||
BIN
docs/images/android.png
Normal file
|
After Width: | Height: | Size: 717 KiB |
BIN
docs/images/browser.png
Normal file
|
After Width: | Height: | Size: 791 KiB |
BIN
docs/images/desktop.png
Normal file
|
After Width: | Height: | Size: 580 KiB |
BIN
docs/images/ios.png
Normal file
|
After Width: | Height: | Size: 450 KiB |
|
Before Width: | Height: | Size: 827 KiB |
|
Before Width: | Height: | Size: 1.1 MiB |
35
docs/logo/OSciMap.svg
Normal file
@@ -0,0 +1,35 @@
|
||||
<?xml version="1.0" encoding="utf-8"?><!-- Generator: Adobe Illustrator 16.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) --><!DOCTYPE svg PUBLIC
|
||||
"-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="800px"
|
||||
height="800px" viewBox="0 0 800 800" enable-background="new 0 0 800 800" xml:space="preserve">
|
||||
<g id="Ebene_4">
|
||||
<rect opacity="0.85" width="800" height="800"/>
|
||||
</g>
|
||||
<g id="Ebene_5">
|
||||
<g>
|
||||
<path fill="#FFFFFF" stroke="#706F6F" stroke-width="0.25" stroke-miterlimit="10" d="M340.333,239.725
|
||||
c24.1-18.739,49.74-35.585,76.703-50.308c-3.103-4.982-5.507-10.438-7.083-16.234c-28.377,15.341-55.359,32.98-80.819,52.813
|
||||
C333.395,230.096,337.16,234.703,340.333,239.725z"/>
|
||||
<path fill="#FFFFFF" stroke="#706F6F" stroke-width="0.25" stroke-miterlimit="10" d="M124.824,616.625
|
||||
c3.986-31.477,10.562-62.157,19.499-91.824c-5.839-1.242-11.376-3.311-16.475-6.089c-9.576,31.622-16.422,63.948-20.489,96.824
|
||||
c1.405-0.081,2.817-0.134,4.242-0.134C116.118,615.402,120.532,615.836,124.824,616.625z"/>
|
||||
<path fill="#FFFFFF" stroke="#706F6F" stroke-width="0.25" stroke-miterlimit="10" d="M225.997,329.133
|
||||
c-18.96,24.339-35.909,50.074-50.768,77.084c5.718,1.771,11.077,4.362,15.948,7.629c14.3-25.795,30.55-50.366,48.548-73.514
|
||||
C234.703,337.16,230.096,333.395,225.997,329.133z"/>
|
||||
<path fill="#FFFFFF" stroke="#706F6F" stroke-width="0.25" stroke-miterlimit="10" d="M616.625,124.824
|
||||
c-0.789-4.292-1.223-8.707-1.223-13.223c0-1.425,0.053-2.837,0.134-4.242c-31.602,3.909-62.698,10.376-93.146,19.377
|
||||
c2.895,5.059,5.088,10.563,6.452,16.388C557.252,134.797,586.575,128.629,616.625,124.824z"/>
|
||||
<path fill="#FFFFFF" stroke="#706F6F" stroke-width="0.25" stroke-miterlimit="10" d="M429.969,417.653l-94.016-94.016
|
||||
c-3.604,4.578-7.738,8.712-12.316,12.316l94.627,94.627C421.537,425.734,425.484,421.383,429.969,417.653z"/>
|
||||
<path fill="#FFFFFF" stroke="#706F6F" stroke-width="0.25" stroke-miterlimit="10" d="M643.346,631.029l-127.051-127.05
|
||||
c-3.729,4.483-8.082,8.431-12.928,11.703l127.662,127.663C634.633,638.767,638.767,634.633,643.346,631.029z"/>
|
||||
<circle fill="#FCEA21" stroke="#706F6F" stroke-width="0.25" stroke-miterlimit="10" cx="278.583" cy="278.583" r="59.934"/>
|
||||
<circle fill="#2FAADD" stroke="#706F6F" stroke-width="0.25" stroke-miterlimit="10" cx="157.1" cy="464.815" r="48.272"/>
|
||||
<circle fill="#2FAADD" stroke="#706F6F" stroke-width="0.25" stroke-miterlimit="10" cx="469.132" cy="464.815" r="48.272"/>
|
||||
<circle fill="#2FAADD" stroke="#706F6F" stroke-width="0.25" stroke-miterlimit="10" cx="469.132" cy="157.1" r="48.272"/>
|
||||
<circle fill="#FCEA21" stroke="#706F6F" stroke-width="0.25" stroke-miterlimit="10" cx="111.601" cy="688.399" r="59.934"/>
|
||||
<circle fill="#FCEA21" stroke="#706F6F" stroke-width="0.25" stroke-miterlimit="10" cx="688.398" cy="111.601" r="59.934"/>
|
||||
<circle fill="#FCEA21" stroke="#706F6F" stroke-width="0.25" stroke-miterlimit="10" cx="688.398" cy="688.399" r="59.934"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.0 KiB |
477
docs/logo/VTM.svg
Normal file
@@ -0,0 +1,477 @@
|
||||
<?xml version="1.0" encoding="utf-8"?><!-- Generator: Adobe Illustrator 16.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) --><!DOCTYPE svg PUBLIC
|
||||
"-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="Ebene_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
width="515.667px" height="515.668px" viewBox="0 0 515.667 515.668" enable-background="new 0 0 515.667 515.668"
|
||||
xml:space="preserve">
|
||||
<g id="Ebene_9">
|
||||
<g>
|
||||
<path fill="#33B6EA" d="M211.969,454.364c-0.39,1.071-0.487,1.268-1.852,1.268h-7.989c-1.364,0-1.461-0.195-1.851-1.268
|
||||
l-15.491-44.914c-0.097-0.195-0.39-0.975-0.487-1.656c0-0.778,0.682-0.877,2.143-1.07l8.086-0.877
|
||||
c0.292,0,1.364-0.099,1.559-0.099c0.779,0,1.072,0.976,1.364,1.948l5.943,21.921c1.072,3.897,2.533,10.522,3.118,14.127h0.195
|
||||
c0.584-3.507,2.144-10.326,3.313-14.127l6.625-21.921c0.292-1.071,0.584-1.948,1.364-1.948c0.195,0,1.267,0.099,1.559,0.099
|
||||
l6.625,0.877c1.461,0.193,2.144,0.292,2.144,1.07c-0.098,0.683-0.39,1.461-0.487,1.656L211.969,454.364z"/>
|
||||
<path fill="#33B6EA" d="M264.58,451.929c0.098,0.486,0.194,0.486,0.194,0.778c0,1.852-7.112,3.702-13.737,3.702
|
||||
c-12.568,0-12.568-9.84-12.568-18.804v-21.921h-6.917c-1.169,0-1.364-0.292-1.364-1.364v-6.333c0-1.071,0.195-1.363,1.364-1.363
|
||||
h6.917v-12.275c0-1.268,0.195-1.56,1.559-1.753l8.573-1.171c0.292,0,0.682-0.097,1.267-0.097c0.877,0,0.975,0.486,0.975,1.656
|
||||
v13.64h11.107c0.877,0,1.655,0,1.655,1.071c0,0.195,0,0.39-0.099,0.779l-1.266,5.749c-0.293,1.362-0.586,1.461-1.754,1.461h-9.646
|
||||
v23.577c0,3.118,0,5.942,3.313,5.942c3.897,0,6.333-1.852,7.697-1.852c0.39,0,0.683,0.195,0.778,0.585L264.58,451.929z"/>
|
||||
<path fill="#33B6EA" d="M334.433,453.39c0,1.072-0.193,1.364-1.361,1.364h-9.646c-1.17,0-1.365-0.292-1.365-1.364v-30.008
|
||||
c0-3.702-0.389-8.185-4.092-8.185c-4.092,0-7.307,2.825-8.574,3.995v34.196c0,1.072-0.193,1.364-1.361,1.364h-9.646
|
||||
c-1.17,0-1.364-0.292-1.364-1.364v-30.008c0-3.702-0.39-8.185-4.093-8.185c-4.092,0-7.307,2.825-8.572,3.995v34.196
|
||||
c0,1.072-0.193,1.364-1.363,1.364h-9.646c-1.171,0-1.365-0.292-1.365-1.364v-29.423c0-13.737-1.851-12.959-1.851-15.198
|
||||
c0-0.487,0.39-0.877,1.07-1.072l7.404-2.436c0.586-0.194,1.072-0.292,1.462-0.292c1.267,0,2.046,2.144,3.118,6.723
|
||||
c2.922-2.533,7.209-6.723,14.906-6.723c4.189,0,8.768,2.63,9.938,6.723c2.924-2.533,7.111-6.723,15.102-6.723
|
||||
c9.158,0,11.301,6.917,11.301,15.394V453.39L334.433,453.39z"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="Ebene_10">
|
||||
<g>
|
||||
<path fill="#707072" d="M121.25,51.267c0,0,5.583,58,4.625,85.229c-0.397,11.281-4.188,42.375-21.813,42.375
|
||||
c-18.979,0-21.146-22.813-44.438-22.813c-13.875,0-37.625,9.042-37.625,48.75c0,30.375,19.25,45.375,34.625,45.375
|
||||
c22.875,0,19.625-18,43.875-18c23.917,0,24.875,22.375,24.875,34.75s-3.042,47-8.875,82c4.417,0.667,11.51,1.468,23.25,5.125
|
||||
c15.917,4.959,28.125,8.875,53.625,8.875S233,353.309,233,342.309c0-17.041-15.625-14.25-15.625-34.75s20.625-30,41.25-30
|
||||
c20.625,0,41.459,9.959,41.459,34.875c0,22.5-13.084,17.125-13.084,35.75s22.375,18.125,28,18.125s61.5-1.832,87-7.041
|
||||
c-1-13.25-4.582-66.542-4.582-82.917c0-21.667,10.082-23.792,15.457-23.792c16.125,0,16.875,12.292,39.625,12.292
|
||||
c20.584,0,40.625-19.75,40.625-49.792c0-27.125-19-38.75-34.625-38.75s-20.875,13.5-47.75,13.5
|
||||
c-9.498,0-15.832-3.792-15.832-22.292c0-37.275,4.166-74.417,4.332-109.583c-18.666-2.75-66.625-10-93.125-10
|
||||
c-24.207,0-25.957,10.125-25.957,16.75c0,17.083,23.5,22.167,23.5,38.5c0,29.917-23.793,37.75-43.293,37.75
|
||||
c-17.042,0-42.458-15.583-42.458-40.083c0-12.042,3.374-15.688,6.844-19.159c5.189-5.189,11.177-8.299,11.177-16.508
|
||||
c0-14.25-14.396-16.667-31.271-16.667S121.25,51.267,121.25,51.267z"/>
|
||||
<g opacity="0.2">
|
||||
<path fill="#FFFFFF" d="M306.125,47.934c26.5,0,74.459,7.25,93.125,10c-0.166,35.167-4.332,72.309-4.332,109.583
|
||||
c0,18.5,6.334,22.292,15.832,22.292c26.875,0,32.125-13.5,47.75-13.5s34.625,11.625,34.625,38.75
|
||||
c0,30.042-20.041,49.792-40.625,49.792c-22.75,0-23.5-12.292-39.625-12.292c-5.375,0-15.457,2.125-15.457,23.792
|
||||
c0,16.375,3.582,69.667,4.582,82.917c-25.5,5.209-81.375,7.041-87,7.041c-0.287,0-0.615,0.001-0.984,0.001
|
||||
c-6.861,0-27.016-0.45-27.016-18.126c0-18.625,13.084-13.25,13.084-35.75c0-24.916-20.834-34.875-41.459-34.875
|
||||
c-20.625,0-41.25,9.5-41.25,30S233,325.268,233,342.309c0,11-14.125,20.625-39.625,20.625s-37.708-3.916-53.625-8.875
|
||||
c-11.74-3.657-18.833-4.458-23.25-5.125c5.833-35,8.875-69.625,8.875-82s-0.958-34.75-24.875-34.75c-24.25,0-21,18-43.875,18
|
||||
c-15.375,0-34.625-15-34.625-45.375c0-39.708,23.75-48.75,37.625-48.75c23.292,0,25.458,22.813,44.438,22.813
|
||||
c17.625,0,21.416-31.094,21.813-42.375c0.958-27.229-4.625-85.229-4.625-85.229s66.542-2.75,83.417-2.75
|
||||
s31.271,2.417,31.271,16.667c0,8.208-5.988,11.318-11.177,16.508c-3.47,3.47-6.844,7.117-6.844,19.159
|
||||
c0,24.5,25.417,40.083,42.458,40.083c19.5,0,43.291-7.833,43.291-37.75c0-16.333-23.5-21.417-23.5-38.5
|
||||
C280.167,58.059,281.917,47.934,306.125,47.934 M306.125,47.434c-23.451,0-26.457,9.219-26.457,17.25
|
||||
c0,8.855,6.154,14.563,12.106,20.082c5.858,5.431,11.394,10.562,11.394,18.418c0,33.62-29.926,37.25-42.793,37.25
|
||||
c-8.763,0-19.225-4.116-27.303-10.741c-9.451-7.751-14.655-17.994-14.655-28.843c0-12.108,3.405-15.514,6.697-18.806
|
||||
c1.085-1.085,2.216-2.088,3.309-3.057c4.122-3.654,8.014-7.105,8.014-13.805c0-15.127-16.06-17.167-31.771-17.167
|
||||
c-16.692,0-82.772,2.723-83.438,2.75l-0.528,0.021l0.051,0.525c0.056,0.58,5.569,58.278,4.623,85.164
|
||||
c-0.548,15.56-5.653,41.893-21.313,41.893c-8.799,0-13.929-5.046-19.36-10.388c-6.209-6.108-12.631-12.424-25.077-12.424
|
||||
c-4.252,0-15.137,0.938-24.358,9.621c-9.135,8.602-13.767,21.935-13.767,39.629c0,17.628,6.348,28.442,11.674,34.411
|
||||
c6.406,7.178,15.172,11.464,23.451,11.464c11.46,0,16.58-4.539,21.531-8.93c5.03-4.46,10.231-9.07,22.344-9.07
|
||||
c24.375,0,24.375,24.001,24.375,34.25c0,11.578-2.818,45.62-8.868,81.918l-0.083,0.501l0.502,0.075
|
||||
c0.462,0.069,0.953,0.141,1.475,0.217c4.47,0.647,11.224,1.628,21.701,4.892l0.657,0.205c15.583,4.856,27.893,8.692,53.116,8.692
|
||||
c12.11,0,22.353-2.162,29.62-6.252c6.774-3.813,10.505-9.096,10.505-14.873c0-8.332-3.602-11.997-7.415-15.877
|
||||
c-4.036-4.107-8.21-8.354-8.21-18.873c0-20.378,20.467-29.5,40.75-29.5c18.895,0,40.959,9.003,40.959,34.375
|
||||
c0,11.595-3.5,15.632-6.883,19.536c-3.189,3.679-6.201,7.153-6.201,16.214c0,7.779,3.785,13.217,11.25,16.155
|
||||
c5.621,2.215,11.975,2.471,16.264,2.471h0.557l0.43-0.001c4.451,0,60.859-1.69,87.1-7.052l0.434-0.089l-0.033-0.438
|
||||
c-0.932-12.355-4.582-66.493-4.582-82.879c0-15.455,5.033-23.292,14.959-23.292c7.229,0,11.383,2.564,15.781,5.281
|
||||
c5.32,3.285,11.35,7.011,23.844,7.011c10.402,0,20.756-5.03,28.408-13.803c8.199-9.399,12.717-22.358,12.717-36.489
|
||||
c0-12.434-4.016-22.776-11.611-29.911c-6.316-5.936-14.889-9.339-23.514-9.339c-6.883,0-11.699,2.525-17.277,5.451
|
||||
c-7.193,3.771-15.348,8.049-30.473,8.049c-9.203,0-15.334-3.706-15.334-21.792c0-19.29,1.127-38.726,2.219-57.521
|
||||
c1.047-18.047,2.035-35.093,2.115-52.061l0.002-0.435l-0.43-0.063L396.9,57.08C377.355,54.194,331.582,47.434,306.125,47.434
|
||||
L306.125,47.434z"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="Ebene_5">
|
||||
<g>
|
||||
<path fill="#33B6EA" d="M395.246,253.01c0.27-2.734-1.365-4.583-2.832-6.502c-0.643-0.837-0.605-1.451,0.162-2.072
|
||||
c0.881-0.711,0.844-1.509,0.482-2.506c-0.715-1.979-2.061-3.534-3.193-5.245c-1.344-2.021-4.088-3.735-1.973-6.808
|
||||
c0.355-0.521-0.047-1.574,0.896-1.65c0.904-0.076,1.119,0.885,1.506,1.48c0.822,1.282,1.775,2.069,3.412,1.449
|
||||
c0.447-0.17,0.986-0.104,1.486-0.123c2.223-0.085,3.834-1.387,4.582-3.714c0.779-2.433,0.242-4.502-1.639-5.825
|
||||
c-0.83-0.585-1.578-1.233-2.207-2.006c-0.525-0.649-0.568-1.421,0.027-2.053c0.764-0.81,1.572-1.801,2.77-1.667
|
||||
c1.068,0.119,0.598,1.197,0.633,1.873c0.053,0.985,0.102,2.088,1.326,2.066c1.078-0.018,1.178-1.114,1.26-1.996
|
||||
c0.064-0.667-0.189-1.583,0.592-1.832c1.602-0.506,3.016-1.451,4.721-1.727c3.568-0.578,6.23-2.42,7.514-5.924
|
||||
c0.514-1.4,0.971-2.759,2-3.952c0.898-1.036,1.096-2.398,0.619-3.877c-0.684-2.116-1.891-3.933-2.977-5.818
|
||||
c-0.672-1.167-0.41-1.793,0.699-2.395c0.891-0.484,2.154-0.442,2.563-1.674c0.035-0.189,0.072-0.378,0.111-0.566l-0.072-0.469
|
||||
c-2.152,0.212-4.465,0.33-6.965,0.33c-9.498,0-15.832-3.792-15.832-22.292c0-30.716,2.824-61.339,3.912-90.844
|
||||
c-0.459,0.064-0.873,0.121-0.963,0.129c-0.471-0.294-0.939-0.589-1.41-0.885c0,0,0-0.001,0-0.002
|
||||
c0.057-0.488-0.029-1.056,0.193-1.453c0.945-1.694,1.037-3.354,0.055-5.048c-2.23-0.616-3.424,0.834-4.689,2.271
|
||||
c-1.482,1.685-2.777,3.506-3.936,5.409c-1.496,2.457-3.807,2.362-6.137,2.094c-1.678-0.194-3.182-0.269-4.436,1.181
|
||||
c-0.457,0.527-1.168,0.904-1.932,1.087c-1.789,0.426-2.865,1.688-3.596,3.281c-1.695,3.702-4.016,6.812-7.916,8.439
|
||||
c-1.141,0.476-1.566,1.31-1.479,2.522c0.07,0.935,0.018,1.876,0.014,2.813c-0.004,0.704-0.375,1.202-0.982,1.469
|
||||
c-0.639,0.277-1.092-0.16-1.443-0.598c-0.818-1.015-1.543-2.104-2.393-3.088c-0.947-1.094-2.078-1.406-3.236-0.29
|
||||
c-0.609,0.587-1.176,0.62-2.014,0.495c-1.469-0.221-2.986-0.133-4.484-0.139c-0.971-0.003-1.369,0.729-1.764,1.465
|
||||
c-1.084,2.025-1.889,4.181-3.273,6.076c-0.813,1.118-0.225,2.679-0.279,4.038c-0.086,1.994-0.342,2.18-2.229,1.416
|
||||
c-0.346-0.141-0.713-0.234-1.057-0.376c-0.875-0.363-1.67-0.719-0.756-1.875c0.438-0.555,0.275-1.274-0.313-1.663
|
||||
c-2.787-1.85-1.818-4.563-1.438-6.96c0.432-2.694,1.951-4.966,3.893-6.912c0.307-0.309,0.625-0.617,0.885-0.966
|
||||
c0.674-0.903,0.771-1.873,0.014-2.751c-0.783-0.909-1.727-0.555-2.543-0.042c-3.301,2.081-5.449,5.021-6.605,8.762
|
||||
c-0.904,2.933-0.754,5.919-0.738,8.908c0.006,1.373,1.094,1.848,2.088,2.383c0.857,0.463,1.998,0.708,1.982,1.975
|
||||
c-0.016,1.253-1.145,1.502-2.002,1.971c-0.383,0.208-0.814,0.384-1.111,0.683c-1.578,1.589-3.273,1.396-4.912,0.242
|
||||
c-1.076-0.755-1.879-0.753-2.766,0.224c-0.363,0.402-0.887,0.697-1.387,0.932c-1.932,0.896-3.805,1.858-5.131,3.61
|
||||
c-0.184,0.243-0.398,0.577-0.748,0.408c-0.455-0.22-0.234-0.611-0.135-0.966c0.719-2.45-1.293-4.758-3.861-4.45
|
||||
c-1.271,0.153-2.115,1.469-1.836,2.972c0.229,1.22,0.498,2.437,0.826,3.631c0.189,0.681,0.266,1.296-0.508,1.546
|
||||
c-0.791,0.256-1.139-0.371-1.34-0.979c-0.227-0.706-0.332-1.449-0.531-2.166c-0.166-0.594-6.02-5.959-6.646-6.133
|
||||
c-0.061-0.017-0.123-0.011-0.188-0.016c-0.025,0.076-0.271,0.04-0.627-0.057c-2.24,13.228-10.033,20.992-19.579,25.231
|
||||
c-0.134,0.21-0.271,0.386-0.425,0.473c-0.58,1.232-0.373,2.271,0.765,3.075c0.604,0.428,1.185,0.897,1.824,1.266
|
||||
c0.628,0.362,0.971,0.853,0.712,1.52c-0.448,1.147-0.262,2.321-0.283,3.488c-0.018,1.127-0.122,2.087-1.679,1.481
|
||||
c-0.624-0.242-1.073,0.063-1.354,0.64c-0.479,0.395-0.691,0.924-0.764,1.522c-0.404,0.276-0.357,0.698-0.354,1.105
|
||||
c-0.293,1.102-0.545,2.227-1.521,2.979c-0.63,0.21-1.316,0.288-1.833,0.767c-0.633,0.016-1.267,0.028-1.899,0.043
|
||||
c-0.752,0.048-1.561-0.289-2.229,0.33c-0.258,0.018-0.518,0.034-0.773,0.053c-1.367-0.092-2.762,0.105-4.096-0.376
|
||||
c-0.374-0.265-0.75-0.529-1.124-0.793c0.005-1.051,0.047-2.102,0.007-3.148c-0.033-0.879,0.342-1.905-0.738-2.483l-0.008-0.012
|
||||
c-0.523-0.892-1.047-0.833-1.568,0c-0.125,0.125-0.248,0.249-0.369,0.373c-0.547,0.857-2.334,1.323-1.568,2.526
|
||||
c1.357,2.128,1.68,3.915-0.344,5.709c-0.738,0.05-1.475,0.101-2.209,0.149c-0.102,0.088-0.204,0.177-0.305,0.264
|
||||
c-1.127,0.703-1.631,1.874-2.06,3.021c-0.329,0.881-0.942,1.505-1.604,1.995c-0.582,0.433-1.634,0.576-1.54-0.658
|
||||
c0.218-2.815-1.361-4.965-2.783-7.007c-1.056-1.521-1.577-3.261-2.023-4.825c-0.465-1.629-1.241-3.077-1.824-4.611
|
||||
c-0.494-1.306-2.2-1.399-2.564-0.149c-0.563,1.94-2.404,3.871-0.557,6.078c0.326,0.388,0.471,0.952,0.118,1.393
|
||||
c-0.373,0.464-0.901,0.259-1.384,0.104c-1.403-0.449-2.569-0.059-3.553,1.001c-0.644,0.694-1.375,1.243-2.32,1.503
|
||||
c-0.761,0.21-1.121,0.898-0.533,1.396c1.293,1.096,1.226,2.466,1.235,3.912c0.007,1.374,0.875,1.867,2.136,1.65
|
||||
c1.186-0.204,2.209-0.808,3.191-1.489c0.438-0.304,0.883-0.917,1.469-0.501c0.593,0.422,0.376,1.156,0.228,1.733
|
||||
c-0.119,0.466-0.396,0.926-0.71,1.297c-0.512,0.601-1.05,1.214-0.458,1.967c0.551,0.703,1.344,0.427,2.074,0.21
|
||||
c1.668-0.497,3.267-1.223,5.022-1.431c0.464-0.054,0.917-0.174,1.112,0.337c0.25,0.645-0.291,0.917-0.747,1.073
|
||||
c-1.177,0.402-2.385,0.704-3.56,1.104c-0.834,0.283-1.658,0.655-1.857,1.657c-0.22,1.114,0.495,1.762,1.295,2.279
|
||||
c1.159,0.75,2.042,1.64,2.085,3.114c0.1,0.625,0.201,1.251,0.303,1.876c0.085,0.671-0.076,1.23-0.715,1.571
|
||||
c-1.698,0.635-3.419,0.42-5.122,0.081c-3.549-0.709-5.808,1.404-4.804,4.8c0.252,0.851,0.453,1.883,0.045,2.57
|
||||
c-1.296,2.195-0.223,3.93,0.754,5.763c0.588,1.104,1.37,1.447,2.611,1.203c1.58-0.311,3.191-0.524,4.799-0.613
|
||||
c1.791-0.1,3.387-0.699,3.786-2.469c0.897-3.999,5-5.124,6.939-8.146c0.125-0.193,0.572-0.28,0.855-0.258
|
||||
c1.416,0.117,2.717-0.173,3.941-0.9c0.344-0.204,1.15-0.364,1,0.173c-0.396,1.402,1.271,3.163-0.742,4.266
|
||||
c-0.226,0.123-0.328,0.525-0.422,0.819c-0.227,0.69-0.197,1.344,0.355,1.908c0.617,0.629,1.387,0.586,2.102,0.378
|
||||
c0.699-0.207,1.073-0.779,1.114-1.563c0.047-0.905-0.095-1.739-0.661-2.471c-0.273-0.352-0.58-0.718-0.156-1.143
|
||||
c0.453-0.456,1.103-0.598,1.523-0.173c1.755,1.765,4.297,2.563,5.719,4.718c0.127,1.577-0.937,1.574-2.033,1.545
|
||||
c-0.586-0.016-1.111,0.119-1.267,0.782c-0.128,0.543-0.007,0.973,0.646,1.054c0.375,0.375,0.748,0.748,1.123,1.123
|
||||
c0.268,1.004,0.767,0.64,1.367,0.29c1.479-0.863,2.327-2.339,3.498-3.499c0.93-0.92,1.822-1.354,2.399,0.368
|
||||
c0.153,0.449,0.376,0.943,1.004,0.943c0.011,0.337,0.104,0.618,0.459,0.743c0.122,1.08,0.772,1.651,1.789,1.877
|
||||
c0.542,0.061,1.112,0.235,1.485-0.372c0.865-0.124,1.379-0.587,1.435-1.494c0.05-0.108,0.075-0.225,0.081-0.345
|
||||
c1.124-0.259,0.543-1.227,0.775-1.854c0.233-0.621,0.332-1.552,1.211-1.403c0.826,0.138,0.467,0.92,0.479,1.541
|
||||
c0.065,3.409,3.003,6.105,5.423,5.701c0.493,0,0.984-0.001,1.479-0.001c1.183,0.033,2.365,0.071,3.547,0.097
|
||||
c0.941,0.021,1.547,0.471,1.73,1.39c0.365,1.865-2.271,5.095-4.19,5.051c-2.802-0.063-5.673,1.639-8.41-0.336
|
||||
c-0.206-0.15-0.612-0.05-0.922-0.026c-1.289,0.093-2.509-0.204-3.581-0.871c-1.732-1.077-2.953-0.226-4.08,0.969
|
||||
c-0.418,0.445-0.684,1.037-1.018,1.562c-0.693,1.086-1.428,1.224-2.409,0.268c-0.741-0.723-1.271-1.732-2.404-1.996
|
||||
c0.031-0.577-0.5-0.748-0.79-1.094c-0.059-0.487-0.17-0.865-0.712-0.342c-0.25-0.015-0.5-0.029-0.751-0.044
|
||||
c-0.068-0.443-0.252-0.738-0.773-0.586c-0.375-0.052-0.748-0.104-1.125-0.156c-0.068-0.709-0.58-0.744-1.121-0.735
|
||||
c-0.166-0.254-0.336-0.508-0.504-0.763c0.125-0.897,0.084-1.806,0.379-2.697c0.176-0.526,0.311-1.27-0.639-1.39
|
||||
c-0.211-0.562-0.595-0.945-1.154-1.153c-0.08-0.842-0.752-0.816-1.265-0.708c-2.718,0.573-5.501,0.056-8.189,0.479
|
||||
c-1.339,0.21-3.078-0.258-4.02,1.329c-0.479,0.125-1.028,0.142-1.43,0.394c-2.17,1.363-4.457,1.729-6.95,1.11
|
||||
c-0.734-0.183-1.686-0.05-1.97,0.729c-0.892,2.455-3.495,3.992-3.62,6.854c-0.012,0.304-0.388,0.63-0.654,0.881
|
||||
c-1.637,1.539-3.124,3.223-4.88,4.653c-1.271,1.033-2.804,2.057-2.89,3.958c-0.044,0.98-0.428,1.692-1.157,2.229
|
||||
c-1.583,1.164-1.662,2.628-1.401,4.471c0.224,1.584,1.093,3.239,0.144,4.899c-1.486,2.598-1.531,4.197,0.425,6.269
|
||||
c3.04,3.221,5.598,6.84,8.698,10.016c1.951,1.999,3.984,2.362,6.437,1.544c1.589-0.529,3.325-0.772,4.784-0.202
|
||||
c1.522,0.592,2.596,0.267,3.839-0.416c1.879-1.035,3.739-1.329,5.552,0.243c1.037,0.897,2.364,1.055,3.688,1.119
|
||||
c0.681,0.032,1.356,0.002,2.034,0.222c1.316,0.428,1.846,0.965,0.748,2.238c-1.275,1.479-1.736,3.221-0.834,5.042
|
||||
c1.07,2.166,2.283,4.256,3.438,6.381c-0.146,1.139,0.406,1.99,1.02,2.895c1.348,1.982,2.084,3.986,0.695,6.42
|
||||
c-2.216,3.873-2.867,7.908-0.422,12.027c0.396,0.666,0.609,1.508,0.518,2.35c0.062,0.102,0.094,0.516,0.127,0.91
|
||||
c9.334,1.685,17.914,5.714,23.633,12.592c1.953-2.099,4.527-4.729,5.152-7.411c0.078-0.334,0.328-0.769,0.615-0.896
|
||||
c2.014-0.887,2.01-2.559,1.955-4.396c-0.043-1.336-0.602-2.931,0.416-3.988c1.57-1.639,2.863-3.666,5.221-4.43
|
||||
c0.906-0.293,1.441-1.136,1.438-2.033c-0.002-2.723,0.029-5.447-1.076-8.06c-0.736-1.741-1.891-3.473-1.33-5.512
|
||||
c1.012-3.684,3.529-6.376,6.348-8.699c4.24-3.491,7.348-7.759,9.535-12.733c0.469-1.064,1.016-2.424,0.094-3.361
|
||||
c-0.881-0.892-2.229-0.408-3.389-0.198c-2.078,0.375-4.074,1.239-6.256,0.964c-0.619-0.078-1.297,0.008-1.547-0.758
|
||||
c-0.16-0.488,0.15-0.833,0.475-1.14c0.521-0.5,1.115-0.563,1.703-0.15c1.256,0.883,2.455,0.532,3.703-0.043
|
||||
c2.689-1.234,4.832-3.479,7.512-4.545c3.006-1.195,5.582-2.71,7.717-5.119c0.824-0.927,1.818-1.698,2.48-2.783
|
||||
c0.576-0.942,0.51-1.767-0.324-2.507c-0.861-0.765-1.91-1.566-2.998-1.291c-2.359,0.597-4.564,0.394-6.77-0.495
|
||||
c-1.23-0.753-1.777-2.006-2.4-3.221c-0.799-1.56-1.645-3.083-3.705-3.276c-0.535-0.052-1.127-0.374-1.004-1.108
|
||||
c0.113-0.667,0.701-0.815,1.256-0.922c1.754-0.34,2.951,0.58,4.035,1.787c1.752,1.952,3.695,3.527,6.574,3.107
|
||||
c1.387,1.82,3.553,2.434,5.41,3.527c0.934,0.549,1.758,0.518,2.59-0.14c1.455-1.15,2.979-1.109,4.545-0.249
|
||||
c1.094,0.6,2.168,1.239,3.279,1.803c0.834,0.424,1.234,0.898,0.9,1.922c-0.42,1.295,0.414,2.246,1.512,2.317
|
||||
c2.311,0.153,2.66,1.596,2.826,3.405c0.439,4.79,2.623,8.884,5.258,12.771c0.959,1.414,2.221,1.563,3.504,0.451
|
||||
c2.076-1.797,3.029-4.201,2.697-6.848c-0.184-1.468,0.279-2.161,1.299-2.949c2.512-1.947,5.348-3.653,7.109-6.302
|
||||
c1.5-2.249,3.686-2.021,5.715-2.513c0.514-0.122,1.061,0.34,1.373,0.847c1.201,1.942,2.754,3.684,2.801,6.206
|
||||
c0.025,1.369,0.83,2.336,2.449,2.183c2.279-0.218,3.467,0.926,2.928,3.167c-1.109,4.619-0.865,8.794,3.088,12.077
|
||||
c0.141,0.112,0.225,0.302,0.303,0.47c0.219,0.459,1.143,0.813,0.574,1.355c-0.646,0.621-1.242-0.067-1.73-0.548
|
||||
c-0.844-0.833-1.637-1.722-2.521-2.513c-0.768-0.688-1.775-0.898-2.551-0.19c-0.74,0.676,0.066,1.423,0.428,1.98
|
||||
c0.777,1.194,1.855,2.162,2.623,3.394c1.781,2.854,3.686,5.636,5.514,8.46c0.285,0.439,0.637,0.742,1.084,0.994
|
||||
c3.023,1.701,5.59,4.386,9.428,4.33c0.154-0.003,0.787,0.146,1.271,0.271c0.904-1.166,1.887-2.069,2.9-2.763
|
||||
c-2.412-0.8-5.723-0.824-8.076-0.843C396.181,253.939,395.132,254.152,395.246,253.01z M248.805,156.258
|
||||
c-0.096,0.881-0.293,1.807-1.396,1.905c-0.906,0.083-1.133-0.578-1.123-1.282c-0.016-1.051,0.322-1.826,1.385-1.939
|
||||
C248.563,154.847,248.89,155.466,248.805,156.258z M278.5,183.979c-1.053-1.027-2.092-2.066-3.129-3.11
|
||||
c-0.483-0.488-0.974-0.948-1.74-0.85c-0.246-0.25-0.494-0.501-0.742-0.753c0.351-0.585-1.271-1.963,0.752-1.878
|
||||
c0.746,0.499,1.49,0.997,2.234,1.497c0.055,0.468,0.283,0.733,0.789,0.681c0.894,0.896,1.787,1.79,2.682,2.686
|
||||
c-0.055,0.5,0.205,0.727,0.677,0.766c-0.011,0.125,0.013,0.247,0.067,0.359C279.978,184.677,279.443,184.899,278.5,183.979z
|
||||
M306.382,124.542c0.771,0.064,0.986,0.608,0.967,1.295c-0.012,0.606-0.189,1.177-0.889,1.13c-0.756-0.049-1.197-0.584-1.227-1.35
|
||||
C305.205,124.858,305.642,124.48,306.382,124.542z M298.623,181.036c-1.105,0.415-2.201,0.91-3.347,1.158
|
||||
c-1.928,0.416-3.073-0.921-2.329-2.758c0.518-1.279,1.016-2.484,1.021-3.918c0.006-1.313,1.186-1.392,2.207-1.52
|
||||
c1.656,0.315,3.527,0.159,4.189,2.368c0.242,0.808,1.113,1.118,1.908,1.371c1.758,0.561,3.273,1.5,4.473,2.926
|
||||
c0.311,0.373,0.803,0.709,0.496,1.279c-0.254,0.475-0.814,0.404-1.18,0.28c-1.432-0.484-3.057-0.002-4.398-1.194
|
||||
C300.896,180.35,299.654,180.648,298.623,181.036z M308.689,226.039c-0.217-1.417-1.541-2.061-2.229-3.166
|
||||
c-1.67-2.678-2.623-5.649-3.766-8.534c-0.762-1.919-1.615-3.775-2.51-5.629c-0.268-0.559-1.051-1.239-0.217-1.79
|
||||
c0.787-0.521,1.162,0.446,1.633,0.858c1.146,1.004,1.914,2.285,2.576,3.639c2.1,4.293,4.193,8.584,6.291,12.877
|
||||
C310.398,225.41,310.818,227.026,308.689,226.039z M320.189,187.722c-0.127-0.856-0.043-1.741-0.074-2.613
|
||||
c-0.02-0.535,0.141-1.179-0.662-1.329c-0.021-0.642-0.041-1.284-0.063-1.925c0.646-0.578,0.004-1.032-0.219-1.432
|
||||
c-0.922-1.646-1.42-3.379-1.35-5.269c0.35-0.48,0.572-1.084,1.24-1.248c1.357-0.21,2.656-1.011,4.094-0.4
|
||||
c0.17,0.173,0.34,0.346,0.51,0.519c-0.184,0.862-0.98,0.86-1.588,1.082c-0.998,0.366-2.098,0.635-2.213,1.938
|
||||
c-0.117,1.331,0.059,2.596,1.393,3.35c0.057,0.972,0.977,1.448,1.299,2.267c0.107,0.08,0.27,0.164,0.385,0.247
|
||||
c-0.115-0.083-0.279-0.167-0.387-0.248c-0.029,0.987-0.213,2-0.057,2.958c0.227,1.399,0.197,2.991,1.74,3.818
|
||||
c0.004,0.226,0.008,0.454,0.01,0.681C321.88,190.938,320.552,190.18,320.189,187.722z M352.781,101.823
|
||||
c-0.613,0.174-0.676-0.389-0.668-0.843c0.014-0.862,0.467-1.413,1.299-1.583c0.498-0.102,0.85,0.131,0.855,0.836
|
||||
C354.134,100.99,353.593,101.591,352.781,101.823z M360.394,121.037c-0.836-0.154-1.857-0.271-1.896-1.619
|
||||
c-0.02-0.702,0.248-1.289,1.025-1.225c1.094,0.091,2.082,0.504,2.215,1.779C361.82,120.747,361.263,121.034,360.394,121.037z"/>
|
||||
<path fill="#33B6EA" d="M93.814,179.34c-1.706,2.358-1.584,4.791-0.422,7.328c0.216,0.473,0.128,1.096,0.14,1.648
|
||||
c0.012,0.53,0.087,0.992,0.696,1.146c0.023,0.224,0.048,0.447,0.073,0.67c-0.035,0.501,0.233,0.733,0.7,0.789
|
||||
c-0.002,0.117,0.018,0.229,0.06,0.34c-0.044,0.5,0.223,0.73,0.686,0.794c-0.004,0.115,0.017,0.228,0.064,0.333
|
||||
c-0.04,0.495,0.225,0.727,0.685,0.79c0.569,2.029,1.965,3.702,3.591,4.625c2.341,1.327,3.17,3.387,4.038,5.569
|
||||
c1.73,4.353,4.99,7.727,7.404,11.641c0.451,0.729,1.259,0.854,2,0.49c0.891-0.437,0.428-1.17,0.221-1.796
|
||||
c-0.615-1.875-1.808-3.398-2.975-4.945c-0.789-1.042-1.545-2.111-2.262-3.205c-0.258-0.392-0.66-1.015-0.107-1.325
|
||||
c0.593-0.332,0.803,0.369,1.015,0.795c0.272,0.549,0.338,1.176,0.827,1.648c1.913,1.852,3.758,3.763,5.54,5.753
|
||||
c1.688,1.886,2.903,3.788,3.343,6.305c0.237,1.353,0.563,3.116,2.124,3.514c3.487,0.885,6.537,3.077,10.114,3.488
|
||||
c2.978,0.343,5.79,0.759,7.92,3.106c0-0.002,0.119,0.026,0.119,0.026l0.124-0.005c0.434,0.831,1.238,0.878,2.029,0.952
|
||||
c1.653,0.549,2.838,1.668,3.763,3.104c0,1.154,0.038,2.284,1.476,2.626c0.127,0.295,0.373,0.398,0.672,0.418
|
||||
c0.92,1.306,2.401,1.334,3.756,1.597c1.092,0.211,2.289,0.851,3.188-0.445c0.333-0.055,0.662-0.109,0.994-0.163
|
||||
c0.863,0.201,1.09,0.786,1.195,1.62c0.182,1.473-0.4,2.768-0.726,4.125c-0.034,0.227-0.071,0.454-0.106,0.681
|
||||
c-1.02,0.439-1.209,1.381-1.407,2.319c-0.445,1.549-1.806,2.344-2.823,3.421c-1.604,1.693-1.741,5.729-0.293,7.542
|
||||
c1.949,2.449,3.878,4.975,4.717,8.018c1.028,3.724,2.847,6.558,6.74,7.699c0.459,0.136,0.854,0.515,1.254,0.81
|
||||
c1.115,0.836,1.771,1.881,1.688,3.352c-0.066,1.185,0.026,2.375-0.001,3.563c-0.102,4.77,0.383,9.612-1.738,14.137
|
||||
c-0.151,0.324-0.15,0.731-0.174,1.104c-0.282,4.343-0.523,8.687-2.435,12.726c-0.496,1.051-0.275,2.07,0.717,2.842
|
||||
c0.463,0.359,0.862,0.861,0.45,1.445c-0.869,1.229-0.656,2.893-1.749,4.055c-0.528,0.562-0.446,1.365-0.066,2.113
|
||||
c1.585,3.117,1.051,6.018-0.965,8.746c-0.563,0.758-1.133,1.563-1.134,2.521c-0.001,2.562-0.542,5.078-0.454,7.652
|
||||
c0.146,4.271,1.943,6.373,6.126,6.85c1.311,0.148,1.753,0.951,1.127,2.051c-1.432,2.515-0.319,4.349,2.641,4.353
|
||||
c1.625,0.006,3.253,0.063,4.874-0.021c0.921-0.049,2.165,0.552,2.67-0.694c0.541-1.332-0.38-2.242-1.318-3.023
|
||||
c-0.427-0.354-0.907-0.66-1.399-0.92c-4.346-2.287-5.139-7.1-1.722-10.518c0.221-0.224,0.442-0.443,0.662-0.664
|
||||
c2.563-2.588,2.61-3.379,0.144-5.979c-0.701-0.735-0.833-1.258-0.063-2.02c1.855-1.828,2.749-4.287,4.099-6.451
|
||||
c0.457-0.732,0.617-1.471-0.071-2.226c-0.997-1.094-0.375-1.522,0.767-1.616c1.008-0.078,1.805-0.648,1.868-1.541
|
||||
c0.142-2.052,1.452-2.138,2.995-2.222c3.324-0.176,5.661-3.231,4.886-6.424c-0.296-1.219,0.276-1.526,1.219-1.477
|
||||
c1.463,0.084,2.464-0.604,3.424-1.592c1.101-1.138,2.03-2.373,2.694-3.802c1.525-3.276,2.92-6.629,4.58-9.838
|
||||
c1.802-3.485,4.638-5.836,8.373-7.248c2.516-0.951,4.089-3.074,5.102-5.561c1.271-0.906,1.198-2.379,1.39-3.652
|
||||
c0.419-2.809,0.519-5.668,2.485-7.994c0.746-0.883,1.661-1.703,1.73-2.989c0.002,0.002,0.004,0.018,0.004,0.018
|
||||
c3.726-2.994,3.392-7.268-0.728-9.383c-0.555-0.285-1.118-0.572-1.609-0.947c-1.106-0.842-2.373-1.109-3.681-1.51
|
||||
c-2.895-0.89-5.997-1.268-8.524-3.365c-1.421-1.179-3.381-1.958-5.383-0.799c-0.28,0.163-0.592,0.3-0.868,0.082
|
||||
c-0.367-0.29-0.272-0.689-0.045-1.004c0.651-0.902,0.796-1.831,0.168-2.78c-1.784-2.698-4.088-4.774-7.349-5.379
|
||||
c-1.571-0.292-2.796-0.957-3.861-2.076c-1.94-2.04-4.012-3.892-6.441-5.387c-1.589-0.977-3.023-1.066-4.557-0.236
|
||||
c-1.591,0.86-2.893,0.529-4.002-0.777c-1.394-1.641-3.036-2.747-5.231-1.918c-1.903,0.722-4.381,1.258-5.368,2.713
|
||||
c-1.152,1.698-2.973,2.544-4.003,4.263c-0.972,1.624-2.731,1.363-4.224,0.847c-1.457-0.503-2.283-1.657-2.287-3.31
|
||||
c-0.003-1.256,0.165-2.481,0.328-3.72c0.251-1.925-0.579-2.966-2.484-2.829c-3.292,0.234-3.28-1.115-3.009-3.83
|
||||
c0.056-0.551,0.246-1.096,0.414-1.63c0.246-0.783,0.586-1.604-0.186-2.25c-0.771-0.646-1.723-0.758-2.662-0.456
|
||||
c-1.287,0.406-2.381,1.17-3.1,2.311c-1.215,1.929-3.086,1.316-4.753,1.252c-1.539-0.062-2.118-1.258-2.529-2.613
|
||||
c-0.681-2.243-0.843-4.521-0.796-6.842c0.065-3.192,2.056-5.158,5.304-5.163c1.924-0.003,3.772,0.02,5.656-0.858
|
||||
c1.979-0.922,4.207-0.07,6.221,0.388c1.286,0.292,1.138,2.078,1.626,3.195c0.645,1.479,1.116,3.007,2.659,3.944
|
||||
c1.359,0.824,2.084,0.355,2.665-0.856c0.432-0.904,0.417-1.831-0.082-2.697c-0.588-1.024-1.249-2.012-1.865-3.021
|
||||
c-1.183-1.939-1.023-3.307,0.598-4.986c0.3-0.312,0.687-0.535,1.015-0.82c1.845-1.596,3.589-3.285,5.042-5.262
|
||||
c0.319-0.435,0.599-0.91,0.35-1.373c-0.656-1.223,0.164-1.848,0.898-2.531c1.067-0.994,2.344-2.125,2.094-3.585
|
||||
c-0.365-2.126,0.964-1.979,2.192-2.172c0.675-0.104,1.39-0.043,2.03-0.243c0.982-0.304,1.593-0.898,0.652-1.901
|
||||
c-1.267-1.35-0.342-1.936,0.814-2.461c1.816-1.931,2.465-1.966,5.748-0.321c1.133-0.012,2.329,0.277,3.267-0.68
|
||||
c0.802-1.007,1.305-2.014,0.12-3.111c-0.639-0.594-1.261-1.214-1.854-1.858c-0.715-0.777-1.047-1.675-0.728-2.753
|
||||
c0.723-2.417,0.104-3.102-2.417-2.744c-0.654,0.095-1.353,0.735-2.053-0.054c0.759-0.761,1.408-1.534,2.515-1.591
|
||||
c2.115,0.008,4.232,0.017,6.348,0.027c0.262-0.002,0.523,0,0.784,0c0.621,0.068,1.305,0.286,1.514-0.634
|
||||
c1.638-1.122,2.602-3.08,4.743-3.623c0.841-0.214,0.969-1.193,0.906-2.045c0.345-0.271,0.334-0.517-0.053-0.734
|
||||
c-0.628-2.905-2.213-4.493-4.511-4.517c-0.851-0.798-1.064-2.121-2.203-2.683c-0.022-0.235-0.047-0.47-0.071-0.704
|
||||
c-0.782-3.359-2.929-6.136-4.01-9.376c-0.262-0.783-1.085-1.031-1.827-0.301c-0.713,0.699-1.398,1.427-2.123,2.116
|
||||
c-0.575,0.548-1.166,1.346-2.051,0.955c-0.88-0.39-1.432-1.243-1.533-2.224c-0.102-0.989-0.058-1.996-0.057-2.995
|
||||
c0.001-0.706-0.055-1.423-0.609-1.902c-2.555-2.202-5.307-3.844-8.903-3.568c-2.9,0.222-4.174,2.229-2.822,4.72
|
||||
c0.417,0.771,0.913,1.515,0.312,2.43c-1.784,2.716-1.021,5.326,0.358,7.903c0.022,0.251,0.047,0.501,0.07,0.751
|
||||
c-0.005,1.195,0.003,2.36-1.133,3.19c-2.563,1.871-2.831,4.269-1.689,7.097c0.701,1.733,0.167,2.368-1.699,2.465
|
||||
c-0.172-0.995-0.931-1.583-1.563-2.261c0.005-0.063,0.017-0.124,0.013-0.188c-0.327-5.265-0.947-7.05-6.288-6.572
|
||||
c-1.982,0.178-3.609-1.082-4.253-2.993c-0.946-2.8-3.123-4.482-5.381-6.083c-1.199-0.852-1.708-1.763-0.859-3.146
|
||||
c0.682-1.11,1.093-2.472,1.989-3.351c1.843-1.808,3.003-4.54,6.124-4.785c0.762-0.059,1.512-0.781,1.463-1.514
|
||||
c-0.154-2.252,0.83-4.151,1.396-6.21c0.481-1.749,1.281-2.369,2.799-2.667c0.608-0.12,1.217-0.296,1.787-0.538
|
||||
c2.755-1.163,3.647-3.313,2.573-6.21c-0.227-0.616-0.43-1.346-0.125-1.818c1.141-1.772-0.008-2.925-0.978-4.118
|
||||
c-0.372-0.458-0.743-1.183-1.444-1.036c-0.811,0.17-1.112,0.969-1.326,1.688c-0.336,1.133-0.543,2.307-0.9,3.432
|
||||
c-0.221,0.699-0.503,1.539-1.481,1.407c-1.048-0.141-0.637-1.048-0.693-1.661c-0.076-0.833,0.005-1.694-1.268-1.575
|
||||
c-2.749,0.261-4.019-0.885-3.993-3.64c0.017-1.795-0.311-3.505-1.309-4.991c-1.952-2.909-2.811-2.883-4.622,0.027
|
||||
c-0.294,0.473-0.591,0.962-0.782,1.482c-0.506,1.382-0.848,2.877,0.085,4.134c0.978,1.313,1.589,2.828,2.558,4.127
|
||||
c0.648,0.87,1.173,1.776,0.014,2.563c-0.993,0.674-1.935,0.442-2.872-0.373c-1.309-1.138-1.373-2.563-1.319-4.099
|
||||
c0.035-1.013,0.007-2.184-1.106-2.549c-0.996-0.326-1.688,0.589-2.352,1.243c-0.222,0.218-0.455,0.447-0.595,0.718
|
||||
c-0.531,1.019-0.939,1.937,0.7,2.451c1.341,0.422,1.329,1.385,0.646,2.516c-0.387,0.64-2.091,1.16-3.653,1.585
|
||||
c0.201,6.693,0.251,12.89,0.072,18.001c-0.397,11.281-4.188,42.375-21.813,42.375c-4.042,0-7.318-1.041-10.201-2.669
|
||||
c-0.001,1.048-0.005,1.793-0.013,1.929C94.132,178.542,94.079,178.972,93.814,179.34z M156.285,178.357
|
||||
c0.168-1.072,0.971-1.334,1.93-1.298c0.81-0.002,1.401,0.328,1.253,1.202c-0.209,1.245-1.278,0.906-2.095,0.957
|
||||
C156.781,179.251,156.159,179.164,156.285,178.357z M146.371,177.911c-0.633,0.987-0.721,2.082-0.744,3.211
|
||||
c-0.016,0.749-0.465,1.16-1.214,1.071c-0.791-0.092-0.966-0.668-0.848-1.363c0.199-1.28,0.354-2.567,0.61-3.835
|
||||
c0.204-1.016,1.047-1.594,1.92-1.267C147.172,176.131,146.886,177.11,146.371,177.911z M155.749,180.521
|
||||
c-0.25,1.05-1.095,1.639-2.121,1.965c-0.645,0.204-1.166-0.188-1.137-0.84c0.058-1.225,0.855-1.853,2.027-1.972
|
||||
C155.061,179.619,155.684,179.582,155.749,180.521z M142.313,170.602c0.336-0.354,0.638-0.583,0.929-0.688
|
||||
C142.951,170.019,142.649,170.248,142.313,170.602c0.861,0.001,1.722,0.003,2.583,0.004c1.124,0.073,1.833,0.911,2.241,1.711
|
||||
c0.922,1.804,2.427,2.109,4.169,2.105c0.161,0.288,0.421,0.34,0.718,0.3c0.799,0.305,2.016,0.674,1.75,1.545
|
||||
c-0.41,1.333-1.806,1.987-3.063,2.577c-0.152,0.071-0.365,0.012-0.55,0.013c-0.235-0.236-0.468-0.476-0.702-0.713
|
||||
c-0.409-2.105-3.118-4.506-5.168-4.529c-1.297-0.015-2.596,0.051-3.894,0.08c-0.017,0.188-0.042,0.396-0.188,0.478
|
||||
c0.146-0.081,0.172-0.29,0.188-0.479c-0.235-0.019-0.472-0.036-0.708-0.054l-0.032-0.032c-0.013-0.36-0.026-0.721-0.039-1.081
|
||||
C140.217,171.465,141.12,170.831,142.313,170.602z"/>
|
||||
<path fill="#33B6EA" d="M261.123,144.733c0.373,1.167,1.229,2.144,2.688,2.289c1.512,0.152,2.291-0.697,2.886-1.896
|
||||
c0.278-0.557,0.534-1.142,0.909-1.626c0.363-0.467,0.764-1.146,1.492-0.882c0.693,0.25,0.421,0.968,0.4,1.488
|
||||
c-0.09,2.453,0.017,4.823,1.479,6.976c1.228,1.811,2.933,2.129,4.505,0.592c1.049-1.024,1.564-2.347,1.936-3.764
|
||||
c0.381-1.474,0.457-3.054,1.633-4.271c1.972-2.035,1.617-3.884-0.616-5.247c-5.669,1.75-11.687,2.479-17.375,2.532
|
||||
C260.507,141.762,260.603,143.113,261.123,144.733z"/>
|
||||
<path fill="#33B6EA" d="M288.996,78.165c1.332-0.097,2.771,1.13,3.922,0.059c1.434-1.339,2.813-2.797,3.685-4.624
|
||||
c0.63-1.326,0.272-2.284-1.062-2.873c-2.209-0.976-4.162-2.148-6.929-2.062c-2.282,0.071-3.606,0.396-4.562,2.35
|
||||
c-0.131,0.27-1.159,1.218-1.854,1.882c0.958,1.86,2.197,3.577,3.603,5.202C287.152,78.135,288.642,78.19,288.996,78.165z"/>
|
||||
<path fill="#33B6EA" d="M226.581,124.819c-0.941-0.525-2.057-0.161-3.043-0.691c-1.795-0.962-2.925-0.21-2.789,1.82
|
||||
c0.186,2.794,0.175,5.723,3.674,6.771c0.792,0.236,1.234,1.312,2.26,1.1c1.938-0.399,3.894-0.721,5.758-1.435
|
||||
c0.208-0.08,0.818-0.639,1.528-1.352c-2.45-1.883-4.744-4.013-6.791-6.373C226.892,124.826,226.671,124.906,226.581,124.819z"/>
|
||||
<path fill="#33B6EA" d="M131.975,94.741c0.444-0.877,1.002-2.652-0.867-3.268c-0.695-0.229-1.457-0.282-2.194-0.357
|
||||
c-1.839-0.187-2.837,0.975-2.519,2.802c0.162,0.938,0.574,2.051-0.906,2.403c0.016,0.523,0.032,1.046,0.046,1.567
|
||||
c0.604,0.093,0.618,0.566,0.568,0.996c-0.188,1.614,0.621,2.901,1.407,4.156c1.179,1.878,3.376,2.004,4.869,0.364
|
||||
c1.631-1.793,1.691-3.727,0.192-5.732C131.921,96.802,131.278,96.12,131.975,94.741z"/>
|
||||
<path fill="#33B6EA" d="M418.878,250.344c-0.58-0.945-1.154-1.913-1.172-3.109c-0.01-0.604-0.496-1.006-1.076-1.159
|
||||
c-0.678-0.181-1.225-0.494-1.055-1.269c0.186-0.843,0.965-0.967,1.643-0.892c1.045,0.115,2.066,0.415,3.105,0.594
|
||||
c0.652,0.112,1.104-0.193,1.203-0.863c0.105-0.725-0.307-0.997-0.98-1.04c-1.48-0.092-3.066-0.065-4.389,0.274
|
||||
c-1.26,0.325-2.68,1.541-2.898,3.136c-0.324,2.396,0.959,4.755,2.652,5.401c0.432,0.166,0.83,0.826,1.006,1.429
|
||||
c0.711,0.104,1.385,0.242,2.035,0.399C419.162,252.391,419.357,251.125,418.878,250.344z"/>
|
||||
<path fill="#33B6EA" d="M424.419,194.958c1.324,0.021,2.738-1.396,3.01-2.866c0.201-1.085-0.424-2.828-0.986-4.153
|
||||
c-1.719,0.448-3.561,0.833-5.545,1.136c0.57,0.979,1.146,2.499,1.326,3.357C422.486,193.688,422.794,194.931,424.419,194.958z"/>
|
||||
<path fill="#33B6EA" d="M443.439,181.242c2.627,1.035,5.447-0.266,6.488-2.99c-0.137,0.012-0.25-0.129-0.359-0.345
|
||||
c-2.119,0.762-4.143,1.739-6.213,2.807C443.509,180.945,443.576,181.138,443.439,181.242z"/>
|
||||
<path fill="#33B6EA" d="M470.48,257.766c0.164-0.756,0.027-1.41-0.898-1.478c-0.906-0.063-1.16,0.547-1.145,1.326
|
||||
c0.01,0.633,0.078,2.023,0.129,3.143c0.615-0.322,1.227-0.664,1.83-1.023C470.38,258.961,470.416,258.062,470.48,257.766z"/>
|
||||
<path fill="#33B6EA" d="M124.979,66.436c-0.258-1.046-0.754-1.981-2.065-2.01c-0.169,0.05-0.329,0.107-0.479,0.172
|
||||
c0.095,1.128,0.193,2.309,0.294,3.542c0.091,0.01,0.176,0.023,0.273,0.028C124.496,68.493,125.318,67.813,124.979,66.436z"/>
|
||||
<path fill="#33B6EA" d="M168.799,219.878c-0.905-0.421-1.85-0.767-2.714-1.256c-1.137-0.646-2.152-1.509-3.52-0.372
|
||||
c-0.437,0.361-1.041-0.047-1.516-0.416c-2.75-2.133-6.473-1.997-9.315-3.948c-0.254-0.176-0.732-0.025-1.107-0.025
|
||||
c0-0.012,0-0.023,0-0.037c-0.25,0-0.5-0.012-0.75,0.002c-1.147,0.068-3.129,1.632-2.944,2.438
|
||||
c0.352,1.528,1.672,1.132,2.752,1.247c1.194,0.13,2.501-0.478,3.569,0.566c2.037,1.991,4.587,2.827,7.341,3.133
|
||||
c0.62,0.07,1.018,0.385,1.438,0.77c2.632,2.403,4.277,2.487,7.04,0.39C170.322,221.422,170.227,220.545,168.799,219.878z"/>
|
||||
<path fill="#33B6EA" d="M172.526,221.396c-0.69,0.008-1.145,0.479-1.202,1.146c-0.062,0.699,0.445,0.953,1.072,0.923
|
||||
c0.664-0.03,0.961-0.442,0.981-1.046C173.353,221.827,173.105,221.386,172.526,221.396z"/>
|
||||
<path fill="#33B6EA" d="M319.966,261.688c-0.795-0.379-1.451,0.174-1.988,0.688c-1.174,1.125-2.113,2.623-3.479,3.39
|
||||
c-4.676,2.625-2.58,7.69-4.314,11.346c-0.16,0.332,0.188,0.967,0.406,1.408c0.779,1.561,1.836,3.01,3.695,3.076
|
||||
c1.83,0.069,2.473-1.632,2.879-3c0.99-3.316,1.771-6.697,2.547-10.068c0.375-1.635,0.551-3.314,0.791-4.824
|
||||
C320.425,262.889,320.748,262.057,319.966,261.688z"/>
|
||||
<path fill="#33B6EA" d="M217.104,83.273c0.8-1.035,1.484-2.144,1.934-3.391c0.387-1.07,0.337-2.037-0.775-2.559
|
||||
c-1.148-0.539-1.893,0.062-2.341,1.141c-0.142,0.347-0.292,0.701-0.51,1c-0.545,0.742-1.211,1.933-2.149,1.274
|
||||
c-0.96-0.673,0.181-1.482,0.629-2.149c0.947-1.413,0.593-2.33-1.092-2.522c-0.876-0.101-1.518-0.354-1.42-1.318
|
||||
c0.186-1.802-0.82-2.578-2.342-3.081c-0.637-0.209-1.347-0.532-1.755-1.026c-1.315-1.586-2.982-1.936-4.862-1.659
|
||||
c-2.325-0.292-4.409,0.191-5.995,1.964c-2.832,3.163-6.6,4.367-10.573,5.123c-2.216,0.422-3.315,1.563-3.448,3.885
|
||||
c-0.037,0.646-0.472,1.021-0.913,1.348c-0.599,0.442-1.239,0.848-1.909,1.172c-2.484,1.207-2.587,1.982-0.995,4.132
|
||||
c0.771,1.042,0.616,1.911-0.267,2.816c-1.222,1.26-2.806,1.81-4.368,2.427c-1.457,0.574-1.53,1.694-1.024,2.915
|
||||
c0.234,0.566,0.849,0.874,1.372,1.233c1.417,0.975,1.37,1.426-0.127,2.276c-0.752,0.427-1.403,0.894-0.775,1.909
|
||||
c1.297,2.095,3.563,3.065,6.045,2.575c0.854-0.167,1.714-0.297,2.572-0.449c1.823-0.325,3.028,0.374,3.574,2.156
|
||||
c0.873,2.861,1.535,5.741,1.095,8.775c-0.191,1.32-0.365,2.7,1.569,2.991c0.705,0.105,0.71,0.679,0.337,1.133
|
||||
c-0.939,1.145-0.242,1.661,0.737,2.089c1.018,0.445,1.09,0.944,0.354,1.827c-1.15,1.374-1.618,2.985-1.634,4.842
|
||||
c-0.036,3.965,1.706,7.363,3.151,10.864c0.233,0.569,0.728,1.032,1.324,1.275c4.189,1.711,4.195,1.707,5.881-2.587
|
||||
c0.206-0.521,0.481-1.063,0.494-1.603c0.063-2.558,1.508-4.042,3.553-5.366c3.229-2.089,5.229-5.659,9.298-6.935
|
||||
c2.404-0.753,2.173-1.906-0.042-3.576c-0.387-0.292-0.897-0.662-0.427-1.215c0.488-0.573,0.889-0.104,1.231,0.262
|
||||
c0.362,0.385,0.553,1.093,1.297,0.728c0.771-0.377,0.973-1.058,0.945-1.88c-0.023-0.726-0.334-1.334-0.674-1.924
|
||||
c-0.749-1.298-0.615-2.494,0.31-3.637c0.51-0.629,1.036-1.246,1.515-1.896c1.802-2.438,1.575-4.376-0.714-6.415
|
||||
c-0.363-0.324-0.86-0.627-0.772-1.204c0.109-0.717,0.742-0.551,1.203-0.559c0.875-0.014,1.007-0.551,0.996-1.249
|
||||
c-0.012-0.626,0.019-1.251-0.001-1.876c-0.02-0.536,0.141-1.198-0.651-1.347c-0.667-0.124-1.049,0.263-1.305,0.824
|
||||
c-0.302,0.667-0.707,1.32-1.541,0.893c-0.934-0.479-0.716-1.352-0.429-2.14c0.335-0.919,1.127-1.483,1.78-2.146
|
||||
c0.702-0.71,0.813-1.273-0.297-1.613c-0.647-0.198-1.094-0.581-1.276-1.241c-0.321-1.173,0.466-2.55,1.663-2.71
|
||||
c1.413-0.189,1.623,0.789,1.649,1.898c0.009,0.4-0.185,0.936,0.375,1.119c0.154,0.05,0.581-0.191,0.579-0.298
|
||||
c-0.01-1.228,1.162-2.52-0.058-3.674C215.78,85.646,216.16,84.495,217.104,83.273z"/>
|
||||
<path fill="#33B6EA" d="M179.837,120.635c-2.297-1.378-5.719-2.322-4.344-5.646c0.507-2.175-0.573-3.014-1.521-3.574
|
||||
c-1.982-1.172-3.397-2.92-5.096-4.375c-1.2-1.027-2.345-2.187-4.217-2.121c-2.664,0.094-2.813-0.167-3.258-2.88
|
||||
c-0.208-1.269-0.78-2.033-2.157-1.095c-0.455,0.309-0.956,0.383-1.411,0.096c-1.38-0.866-2.649-0.941-3.866,0.313
|
||||
c-1.501,1.548-2.821,3.436-2.096,5.489c0.81,2.292,2.023,4.604,4.287,5.984c1.049,0.639,1.688,1.441,1.522,2.744
|
||||
c-0.171,1.348,0.573,2.011,1.813,2.083c1.171,0.068,1.609-0.607,1.616-1.772c0.009-1.158,0.795-1.595,1.901-1.561
|
||||
c2.297,0.069,4.733,2.068,5.121,4.221c0.504,2.79-0.979,6.598-2.988,7.338c-0.823,0.303-1.671,0.416-1.388,1.528
|
||||
c0.256,1.017,1.101,1.327,2.054,1.202c1.602-0.209,2.759,0.558,3.799,1.61c0.922,0.933,1.743,1.98,2.748,2.811
|
||||
c1.001,0.825,2.11,2.061,3.449,0.348c0.128-0.165,0.433-0.266,0.658-0.27c0.875-0.018,1.813,0.129,2.124-1.023
|
||||
c0.345-1.268-0.021-2.328-0.951-3.232c-0.898-0.872-1.782-1.758-2.646-2.66c-0.415-0.436-0.698-1.063-0.194-1.493
|
||||
c0.614-0.525,0.964,0.109,1.29,0.576c0.463,0.666,0.901,1.386,1.844,1.423c1.105,0.045,3.584-1.531,3.744-2.433
|
||||
C181.963,122.616,181.403,121.571,179.837,120.635z"/>
|
||||
<path fill="#33B6EA" d="M157.557,86.107c-0.893,1.163-0.663,1.946,0.333,2.676c1.527,1.117,3.277,1.849,5.104,2.232
|
||||
c1.326,0.277,2.81-0.292,2.812-1.736c0.003-1.724,0.936-2.612,1.962-3.602c1.189-1.15,2.051-2.518,2.602-4.063
|
||||
c0.25-0.703,0.601-1.231,1.331-1.431c1.511-0.41,2.599-1.409,3.672-2.484c1.137-1.14,2.104-2.49,3.663-3.158
|
||||
c0.614-0.263,0.876-0.697,0.373-1.32c-0.413-0.511-0.495-1.358,0.099-1.407c2.866-0.23,2.185-1.752,1.429-3.417
|
||||
c-0.118-0.26-0.042-0.619-0.018-0.931c0.091-1.14-0.464-1.965-1.11-2.866c-1.891-2.635-4.783-1.923-7.165-2.443
|
||||
c-0.961,0.141-1.869-0.222-2.556,0.265c-2.417,1.705-5.235,2.623-7.774,4.073c-0.632,0.361-1.286,0.88-1.2,1.766
|
||||
c0.088,0.909,0.738,1.436,1.515,1.737c1.547,0.6,3.055,1.415,4.836,0.847c0.535-0.171,1.145-0.012,1.385,0.648
|
||||
c0.119,0.328,0.017,0.645-0.301,0.796c-1.338,0.643-2.648,1.646-4.045,1.792c-1.783,0.189-2.062,0.982-1.942,2.425
|
||||
c0.05,0.62-0.044,1.255,0.019,1.873c0.153,1.534-0.129,2.725-1.923,3.044c-0.495,0.09-0.951,0.523-0.999,1.027
|
||||
C159.513,84.003,158.398,85.012,157.557,86.107z"/>
|
||||
<path fill="#33B6EA" d="M152.884,77.528c-0.429,1.846,1.912,3.921,3.456,3.26c1.558-0.667,3.551-3.911,3.501-5.78
|
||||
c-0.104-0.343-0.147-0.813-0.369-1.168c-0.75-1.197-0.961-2.493-1.141-3.88c-0.238-1.819-1.496-3.13-3.053-4.043
|
||||
c-1.273-0.748-2.296-0.46-2.746,1.055c-0.708,2.383-0.803,4.812-0.008,7.166C152.91,75.282,153.177,76.269,152.884,77.528z"/>
|
||||
<path fill="#33B6EA" d="M154.511,87.379c-0.448-0.894-4.153-2.092-4.979-1.511c-1.591,1.12-2.899,0.739-4.143-0.542
|
||||
c-0.869-0.894-1.742-1.784-2.648-2.639c-0.882-0.833-1.917-1.371-3.568-1.415c-0.545-0.048-1.463,0.136-1.679,1.163
|
||||
c-0.231,1.102,0.811,1.245,1.542,1.503c1.932,0.68,3.007,1.995,2.839,4.063c-0.128,1.554,0.396,2.189,1.969,1.993
|
||||
c0.858-0.108,1.543,0.375,2.201,0.872c0.796,0.597,1.755,0.897,2.642,0.507c1.182-0.523,2.365-0.643,3.621-0.693
|
||||
C153.635,90.624,155.032,88.417,154.511,87.379z"/>
|
||||
<path fill="#33B6EA" d="M135.405,62.536c-0.487-0.039-0.896-0.254-1.072-0.639c-0.813-1.791-2.86-1.762-4.157-2.856
|
||||
c-0.55-0.463-1.419-0.317-2.049,0.291c-0.659,0.641-0.264,1.234,0.002,1.867c0.529,1.257,1.607,2.044,2.522,2.96
|
||||
c0.712,0.71,1.04,1.299,0.219,2.204c-0.656,0.721,0.689,3.457,1.694,3.608c0.516,0.077,0.921-0.179,0.989-0.642
|
||||
c0.251-1.678,0.935-1.223,1.814-0.463c0.778,0.675,1.502,0.46,1.58-0.553c0.09-1.178,0.623-2.294,0.438-3.375
|
||||
C137.395,62.709,137.396,62.697,135.405,62.536z"/>
|
||||
<path fill="#33B6EA" d="M145.415,93.232c-0.57-0.247-1.138-0.504-1.727-0.699c-2.589-0.854-4.123,0.147-4.369,2.852
|
||||
c-0.039,0.433-0.005,0.871-0.005,1.219c-0.163,2.235,0.82,4.215,0.924,6.333c0.027,0.562,0.41,1.271,1.211,1.177
|
||||
c0.692-0.082,1.225-0.628,1.133-1.274c-0.245-1.704,0.827-2.629,1.86-3.635c0.857-0.832,1.458-1.852,1.982-2.919
|
||||
C147.088,94.934,146.887,93.87,145.415,93.232z"/>
|
||||
<path fill="#33B6EA" d="M135.176,83.364c-1.252-1.275-1.979,0.143-2.852,0.625c-0.475,0.263-0.822,0.848-1.461,0.532
|
||||
c-0.613-0.305-0.459-0.938-0.557-1.481c-0.291-1.616,0.609-3.013,0.789-4.536c0.045-0.864-0.208-1.648-0.796-2.237
|
||||
c-0.736-0.735-1.932-1.169-2.682-0.755c-0.937,0.52,0.273,1.219,0.485,1.85c0.246,0.734,0.572,1.503-0.053,2.094
|
||||
c-0.812,0.767-1.315-0.101-1.855-0.562c-0.378-0.323-0.761-0.793-1.288-0.429c-0.47,0.324-0.335,0.927-0.254,1.394
|
||||
c0.222,1.281,1.568,1.737,2.137,2.736c1.48,2.606,3.672,3.894,6.633,4.132c1.091,0.086,2.387,0.797,3.052-0.371
|
||||
C137.194,85.094,135.996,84.2,135.176,83.364z"/>
|
||||
<path fill="#33B6EA" d="M149.353,126.215c-1.273-0.751-1.826,0.549-2.627,1.147c-1.37,1.023-1.145,2.256-0.409,3.445
|
||||
c0.687,1.111,1.582,1.833,3.092,1.142c0.937-0.427,2.023-0.547,3.052-0.749c0.637-0.125,1.021-0.411,1.059-1.093
|
||||
C153.079,127.81,151.014,127.196,149.353,126.215z"/>
|
||||
<path fill="#33B6EA" d="M153.201,94.265c-0.024,1.688,1.389,2.757,3.699,2.796c2.291,0.039,3.372-0.68,3.388-2.247
|
||||
c0.022-2.104-1.114-3.339-3.086-3.358C155.042,91.435,153.223,92.712,153.201,94.265z"/>
|
||||
<path fill="#33B6EA" d="M141.812,71.47c1.313,0.771,2.33,0.174,2.345-1.456c-0.008-0.115,0.025-0.32-0.042-0.485
|
||||
c-0.52-1.267-1.048-2.53-1.599-3.784c-0.355-0.808-0.735-1.72-1.813-1.609c-1.206,0.121-1.566,1.138-1.743,2.146
|
||||
C138.607,68.295,139.699,70.228,141.812,71.47z"/>
|
||||
<path fill="#33B6EA" d="M130.177,74.204c0.368,0.293,0.66,0.837,1.25,0.428c0.428-0.296,0.702-0.699,0.633-1.591
|
||||
c-0.327-0.875-0.917-1.95-1.903-2.751c-0.355-0.287-0.823-0.265-1.229-0.017c-0.428,0.261-0.518,0.686-0.44,1.138
|
||||
C128.682,72.56,129.272,73.479,130.177,74.204z"/>
|
||||
<path fill="#33B6EA" d="M158.885,130.881c-0.849,0.049-1.496,0.471-1.478,1.352c0.017,0.819,0.745,0.871,1.399,0.866
|
||||
c0.753-0.001,1.409-0.175,1.436-1.086C160.27,131.102,159.672,130.837,158.885,130.881z"/>
|
||||
<path fill="#33B6EA" d="M460.431,248.217c-0.59-0.375-1.238-0.112-1.533,0.28c-1.113,1.483-2.855,2.118-4.186,3.284
|
||||
c-1.611,1.414-2.814,1.516-4.387,0.047c-1.566-1.461-3.104-2.824-5.443-2.912c-0.816-0.028-1.643-0.567-2.404-0.98
|
||||
c-2.719-1.469-3.031-1.512-5.166,0.646c-1.092,1.106-1.838,0.827-2.502-0.267c-0.498-0.814-1.115-1.494-1.793-2.144
|
||||
c-0.561-0.539-1.23-0.627-1.902-0.332c-0.783,0.346-1.156,1.08-0.928,1.853c0.479,1.614,1.094,3.316,2.881,3.841
|
||||
c3.412,1.005,6.57,2.078,8.695,5.386c1.307,2.029,2.697,1.953,4.662,0.604c1.531-1.049,2.828-0.75,4.041,0.395
|
||||
c0.961,0.908,2.025,1.652,3.127,2.359c1.16,0.744,2.07,0.17,2.789-0.66c0.799-0.922-0.143-1.457-0.686-1.992
|
||||
c-0.486-0.475-1.072-0.848-1.598-1.289c-0.328-0.276-0.727-0.576-0.582-1.08c0.143-0.487,0.59-0.582,1.047-0.631
|
||||
c1.453-0.158,2.77-0.758,3.994-1.487c1.316-0.783,2.361-1.859,2.34-3.573C460.886,249.06,460.929,248.535,460.431,248.217z"/>
|
||||
<path fill="#33B6EA" d="M412.113,236.797c-1.705-1.199-2.561-1.15-3.811,0.388c-0.393,0.479-0.668,1.053-1.057,1.536
|
||||
c-1.645,2.027-3.311,4.085-5.605,5.364c-1.135,0.636-1.842,1.204-1.602,2.467c-0.063,0.972-0.084,1.903,0.832,2.388
|
||||
c1.373,0.728,2.742,1.556,4.215,1.968c1.029,0.289,2.441,0.711,3.252-0.565c1.064-1.678,1.961-3.462,3.223-5.016
|
||||
c0.301-0.366,0.355-0.84,0.18-1.243c-0.676-1.523-0.146-2.856,0.746-4.013C413.492,238.77,413.503,237.775,412.113,236.797z"/>
|
||||
<path fill="#33B6EA" d="M431.595,198.366c0.166-1.884,2.295-3.179,3.91-2.288c0.969,0.533,1.623,0.4,2.303-0.343
|
||||
c0.338-0.372,0.748-0.621,1.232-0.805c3.996-1.514,5.275-4.807,5.678-8.823c-0.063-0.361-0.125-0.855-0.238-1.336
|
||||
c-0.168-0.695-0.09-1.668-1.143-1.645c-0.922,0.021-1.92,0.183-2.354,1.198c-0.289,0.682-0.475,1.414-0.666,2.134
|
||||
c-0.93,3.454-3.432,5.878-6.875,5.855c-2.393-0.018-3.676,1.22-4.924,2.781c-1.426,1.778-1.188,3.73,0.459,5.318
|
||||
c0.789,0.762,1.385,0.578,2.051-0.135C431.554,199.716,431.533,199.054,431.595,198.366z"/>
|
||||
<path fill="#33B6EA" d="M422.068,232.705c-2.004,0.14-2.932-0.748-3.451-2.467c-0.088-0.287-0.32-0.532-0.504-0.782
|
||||
c-0.998-1.354-0.848-1.776,0.867-2.164c0.566-0.126,1.182-0.146,1.24-0.871c0.063-0.73-0.541-0.885-1.096-1.044
|
||||
c-1.396-0.398-1.754-1.257-1.143-2.565c0.184-0.393,0.314-0.816,0.42-1.238c0.291-1.192-0.15-2.116-1.199-2.671
|
||||
c-1.002-0.533-1.762-0.007-2.455,0.738c-2.283,2.454-1.92,7.347,0.803,9.614c0.611,0.51,0.73,0.986,0.936,1.743
|
||||
c0.412,1.534,1.66,2.858,0.662,4.604c-0.041,0.077,0.152,0.333,0.285,0.457c0.975,0.922,2.119,1.508,3.332,1.716
|
||||
c1.359,0.026,3.596-1.841,3.557-3.008C424.279,233.394,423.115,232.635,422.068,232.705z"/>
|
||||
<path fill="#33B6EA" d="M412.986,230.351c-0.922,0.021-2.322,1.49-2.246,2.375c0.063,0.72,0.57,0.872,1.391,0.877
|
||||
c1.004-0.194,1.836-0.9,2.094-2.061C414.412,230.702,413.8,230.334,412.986,230.351z"/>
|
||||
<path fill="#33B6EA" d="M425.611,245.563c1.049-0.026,1.586-0.787,1.842-1.833c-0.225-0.822-0.672-1.415-1.645-1.368
|
||||
c-1.01,0.049-1.604,0.609-1.625,1.632C424.164,244.933,424.671,245.587,425.611,245.563z"/>
|
||||
<path fill="#33B6EA" d="M462.447,256.295c-1.039-0.045-1.156,0.711-1.137,1.502c0.021,0.724-0.078,1.658,1.014,1.572
|
||||
c0.859-0.063,1.15-0.801,1.137-1.619C463.466,257.023,463.353,256.334,462.447,256.295z"/>
|
||||
<path fill="#33B6EA" d="M462.496,252.148c-0.873-0.088-1.395,0.477-1.479,1.309c-0.092,0.877,0.502,1.166,1.465,1.193
|
||||
c0.531,0,1.242-0.068,1.295-0.988C463.826,252.803,463.326,252.229,462.496,252.148z"/>
|
||||
<path fill="#33B6EA" d="M444.171,233.102c0.029,0.882,0.676,1.254,1.414,1.277c0.832-0.024,1.33-0.312,1.309-1.103
|
||||
c-0.025-0.961-0.773-1.254-1.521-1.317C444.675,231.901,444.152,232.416,444.171,233.102z"/>
|
||||
<path fill="#33B6EA" d="M427.648,249.127c-1.051-0.313-1.939,0.034-2.707,0.75c-0.318,0.298-0.65,0.677-0.391,1.125
|
||||
c0.375,0.642,0.975,0.372,1.475,0.175c0.799-0.313,1.918-0.069,2.268-1.163C428.248,249.538,428.027,249.242,427.648,249.127z"/>
|
||||
<path fill="#33B6EA" d="M421.107,230.936c0.881-0.002,1.307-0.541,1.424-1.314c-0.045-0.834-0.502-1.12-1.221-1.12
|
||||
c-0.822-0.003-1.26,0.387-1.262,1.222C420.044,230.434,420.333,230.938,421.107,230.936z"/>
|
||||
<path fill="#33B6EA" d="M422.009,247.63c-0.934,0.01-1.383,0.615-1.387,1.408c-0.006,0.754,0.711,0.696,1.266,0.724
|
||||
c0.75-0.02,1.385-0.207,1.375-1.121C423.257,247.83,422.71,247.622,422.009,247.63z"/>
|
||||
<path fill="#33B6EA" d="M469.253,252.525c-0.646,0.027-1.086,0.299-1.098,1c-0.018,0.799,0.477,1.088,1.203,1.094
|
||||
c0.738,0.004,1.184-0.317,1.199-1.09C470.49,252.701,469.96,252.498,469.253,252.525z"/>
|
||||
<path fill="#33B6EA" d="M315.509,76.046c0.484,0.088,0.998,0.071,1.494,0.041c0.822-0.05,1.402,0.261,1.916,0.916
|
||||
c1.646,2.095,3.092,1.881,4.469-0.422c0.668-1.117,1.658-2.063,3.182-1.97c0.58,0.036,0.764,0.437,0.686,0.906
|
||||
c-0.232,1.435-1.215,2.387-2.498,2.692c-1.053,0.251-1.49,0.629-1.158,1.594c0.322,0.933,1.145,1.559,2.051,0.995
|
||||
c1.959-1.215,4.146-1.18,6.217-1.688c2.654-0.653,6.43-0.664,7.465-4.601c0.264-0.996,2.168-1.847,1.109-2.928
|
||||
c-1.311-1.332-2.064,0.56-2.971,1.229c-0.463,0.341-0.871,0.809-1.467,0.361c-0.539-0.402-0.475-0.979-0.246-1.529
|
||||
c0.262-0.63,0.672-1.211,0.58-1.929c0.076-1.14-0.5-1.81-1.559-1.506c-1.854,0.531-3.922,0.556-5.281,2.372
|
||||
c-1.121,1.493-2.615,1.831-4.248,0.59c-1.076-0.82-2.02-1.247-2.664,0.582c-0.311,0.878-1.365,1.517-1.893,0.203
|
||||
c-0.525-1.316-1.412-1.169-2.4-1.18c-1.613-0.015-2.535,1.23-3.674,2.045c-0.5,0.356-1.371,0.796-1.025,1.586
|
||||
C313.933,75.183,314.574,75.875,315.509,76.046z"/>
|
||||
<path fill="#33B6EA" d="M341.888,70.054c1.117-0.098,1.77-0.781,1.938-1.866c0.092-0.576-0.004-1.212-0.801-1.123
|
||||
c-1.17,0.129-1.658,1.104-2.23,1.888C340.89,69.702,341.236,70.11,341.888,70.054z"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="Ebene_6">
|
||||
<g>
|
||||
<g>
|
||||
<defs>
|
||||
<path id="SVGID_1_" d="M121.25,51.267c0,0,5.583,58,4.625,85.229c-0.397,11.281-4.188,42.375-21.813,42.375
|
||||
c-18.979,0-21.146-22.813-44.438-22.813c-13.875,0-37.625,9.042-37.625,48.75c0,30.375,19.25,45.375,34.625,45.375
|
||||
c22.875,0,19.625-18,43.875-18c23.917,0,24.875,22.375,24.875,34.75s-3.042,47-8.875,82c4.417,0.667,11.51,1.468,23.25,5.125
|
||||
c15.917,4.959,28.125,8.875,53.625,8.875S233,353.309,233,342.309c0-17.041-15.625-14.25-15.625-34.75s20.625-30,41.25-30
|
||||
c20.625,0,41.459,9.959,41.459,34.875c0,22.5-13.084,17.125-13.084,35.75s22.375,18.125,28,18.125s61.5-1.832,87-7.041
|
||||
c-1-13.25-4.582-66.542-4.582-82.917c0-21.667,10.082-23.792,15.457-23.792c16.125,0,16.875,12.292,39.625,12.292
|
||||
c20.584,0,40.625-19.75,40.625-49.792c0-27.125-19-38.75-34.625-38.75s-20.875,13.5-47.75,13.5
|
||||
c-9.498,0-15.832-3.792-15.832-22.292c0-37.275,4.166-74.417,4.332-109.583c-18.666-2.75-66.625-10-93.125-10
|
||||
c-24.207,0-25.957,10.125-25.957,16.75c0,17.083,23.5,22.167,23.5,38.5c0,29.917-23.793,37.75-43.293,37.75
|
||||
c-17.042,0-42.458-15.583-42.458-40.083c0-12.042,3.374-15.688,6.844-19.159c5.189-5.189,11.177-8.299,11.177-16.508
|
||||
c0-14.25-14.396-16.667-31.271-16.667S121.25,51.267,121.25,51.267z"/>
|
||||
</defs>
|
||||
<clipPath id="SVGID_2_">
|
||||
<use xlink:href="#SVGID_1_" overflow="visible"/>
|
||||
</clipPath>
|
||||
<g clip-path="url(#SVGID_2_)">
|
||||
|
||||
<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="149.084" y1="733.7126" x2="149.084" y2="231.4646" gradientTransform="matrix(1 0 0 -1 0.04 514.7319)">
|
||||
<stop offset="0" style="stop-color:#FFFFFF;stop-opacity:0.9"/>
|
||||
<stop offset="1" style="stop-color:#FFFFFF;stop-opacity:0.05"/>
|
||||
</linearGradient>
|
||||
<circle fill="url(#SVGID_3_)" cx="149.124" cy="32.143" r="251.124"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 48 KiB |
460
docs/logo/puzzle.svg
Normal file
@@ -0,0 +1,460 @@
|
||||
<?xml version="1.0" encoding="utf-8"?><!-- Generator: Adobe Illustrator 16.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) --><!DOCTYPE svg PUBLIC
|
||||
"-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="Ebene_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
width="515.667px" height="515.668px" viewBox="0 0 515.667 515.668" enable-background="new 0 0 515.667 515.668"
|
||||
xml:space="preserve">
|
||||
<g id="Ebene_10">
|
||||
<g>
|
||||
<path fill="#707072" d="M108.925,89.292c0,0,6.092,63.286,5.047,92.998c-0.434,12.308-4.57,46.237-23.802,46.237
|
||||
c-20.709,0-23.073-24.892-48.489-24.892c-15.139,0-41.055,9.865-41.055,53.192c0,33.143,21.005,49.511,37.781,49.511
|
||||
c24.96,0,21.414-19.64,47.875-19.64c26.097,0,27.142,24.412,27.142,37.917c0,13.504-3.319,51.283-9.684,89.475
|
||||
c4.819,0.727,12.558,1.601,25.368,5.593c17.369,5.409,30.689,9.682,58.513,9.682s43.238-10.5,43.238-22.503
|
||||
c0-18.594-17.049-15.549-17.049-37.918s22.505-32.735,45.009-32.735c22.506,0,45.238,10.866,45.238,38.056
|
||||
c0,24.55-14.277,18.685-14.277,39.008c0,20.322,24.413,19.777,30.552,19.777c6.138,0,67.106-1.999,94.93-7.683
|
||||
c-1.09-14.458-4.998-72.608-4.998-90.475c0-23.643,11.001-25.961,16.865-25.961c17.595,0,18.414,13.413,43.237,13.413
|
||||
c22.46,0,44.325-21.551,44.325-54.33c0-29.599-20.73-42.283-37.779-42.283s-22.776,14.73-52.103,14.73
|
||||
c-10.363,0-17.275-4.137-17.275-24.324c0-40.672,4.546-81.199,4.727-119.571c-20.365-3.001-72.697-10.913-101.611-10.913
|
||||
c-26.414,0-28.323,11.049-28.323,18.278c0,18.64,25.643,24.187,25.643,42.009c0,32.644-25.962,41.191-47.239,41.191
|
||||
c-18.596,0-46.328-17.004-46.328-43.737c0-13.139,3.681-17.117,7.467-20.905c5.662-5.663,12.196-9.056,12.196-18.013
|
||||
c0-15.549-15.709-18.187-34.122-18.187S108.925,89.292,108.925,89.292z"/>
|
||||
<g opacity="0.2">
|
||||
<path fill="#FFFFFF" d="M310.651,85.654c28.914,0,81.246,7.911,101.611,10.913c-0.181,38.373-4.727,78.9-4.727,119.571
|
||||
c0,20.187,6.912,24.324,17.275,24.324c29.326,0,35.054-14.73,52.103-14.73s37.779,12.684,37.779,42.283
|
||||
c0,32.779-21.865,54.33-44.325,54.33c-24.823,0-25.643-13.413-43.237-13.413c-5.864,0-16.865,2.318-16.865,25.961
|
||||
c0,17.866,3.908,76.017,4.998,90.475c-27.823,5.684-88.792,7.683-94.93,7.683c-0.312,0-0.67,0-1.073,0
|
||||
c-7.485,0-29.479-0.49-29.479-19.777c0-20.323,14.277-14.458,14.277-39.008c0-27.189-22.732-38.056-45.238-38.056
|
||||
c-22.504,0-45.009,10.366-45.009,32.735s17.049,19.324,17.049,37.918c0,12.003-15.413,22.505-43.237,22.505
|
||||
c-27.824,0-41.145-4.272-58.513-9.684c-12.811-3.99-20.549-4.864-25.369-5.593c6.365-38.189,9.684-75.971,9.684-89.473
|
||||
c0-13.505-1.045-37.919-27.142-37.919c-26.461,0-22.915,19.642-47.875,19.642c-16.776,0-37.781-16.368-37.781-49.512
|
||||
c0-43.327,25.916-53.192,41.054-53.192c25.416,0,27.779,24.892,48.489,24.892c19.231,0,23.368-33.929,23.802-46.237
|
||||
c1.044-29.712-5.047-92.998-5.047-92.998s72.607-3.001,91.021-3.001s34.122,2.638,34.122,18.187
|
||||
c0,8.956-6.534,12.349-12.196,18.013c-3.787,3.787-7.468,7.766-7.468,20.905c0,26.733,27.733,43.737,46.329,43.737
|
||||
c21.277,0,47.237-8.547,47.237-41.191c0-17.822-25.643-23.369-25.643-42.009C282.328,96.702,284.237,85.654,310.651,85.654
|
||||
M310.651,85.109c-25.589,0-28.87,10.059-28.87,18.823c0,9.662,6.717,15.89,13.21,21.913
|
||||
c6.394,5.925,12.433,11.524,12.433,20.096c0,36.685-32.652,40.646-46.692,40.646c-9.562,0-20.978-4.493-29.792-11.722
|
||||
c-10.312-8.457-15.991-19.633-15.991-31.471c0-13.211,3.715-16.928,7.307-20.521c1.183-1.184,2.419-2.277,3.611-3.335
|
||||
c4.498-3.987,8.745-7.752,8.745-15.063c0-16.506-17.524-18.732-34.667-18.732c-18.213,0-90.316,2.971-91.043,3.001l-0.576,0.023
|
||||
l0.056,0.572c0.06,0.632,6.076,63.589,5.044,92.926c-0.598,16.979-6.169,45.712-23.256,45.712
|
||||
c-9.601,0-15.199-5.507-21.125-11.336c-6.774-6.663-13.783-13.555-27.363-13.555c-4.639,0-16.517,1.023-26.578,10.498
|
||||
c-9.967,9.385-15.021,23.934-15.021,43.241c0,19.236,6.926,31.037,12.738,37.549c6.99,7.83,16.556,12.506,25.588,12.506
|
||||
c12.505,0,18.092-4.951,23.494-9.741c5.488-4.869,11.163-9.897,24.381-9.897c26.597,0,26.597,26.188,26.597,37.372
|
||||
c0,12.634-3.075,49.777-9.676,89.385l-0.091,0.546l0.547,0.082c0.505,0.075,1.041,0.154,1.61,0.236
|
||||
c4.878,0.707,12.248,1.776,23.68,5.34l0.716,0.222c17.003,5.299,30.436,9.486,57.958,9.486c13.214,0,24.391-2.361,32.32-6.824
|
||||
c7.392-4.159,11.462-9.925,11.462-16.229c0-9.092-3.93-13.09-8.091-17.323c-4.404-4.48-8.958-9.118-8.958-20.593
|
||||
c0-22.236,22.333-32.189,44.465-32.189c20.616,0,44.692,9.822,44.692,37.508c0,12.65-3.82,17.057-7.511,21.316
|
||||
c-3.479,4.016-6.766,7.807-6.766,17.691c0,8.489,4.131,14.422,12.275,17.629c6.134,2.417,13.065,2.695,17.746,2.695h0.608
|
||||
l0.467-0.002c4.858,0,66.407-1.844,95.039-7.694l0.476-0.095l-0.036-0.481c-1.018-13.479-5.001-72.552-5.001-90.432
|
||||
c0-16.863,5.493-25.415,16.323-25.415c7.888,0,12.421,2.798,17.221,5.764c5.805,3.582,12.383,7.649,26.017,7.649
|
||||
c11.35,0,22.647-5.488,30.997-15.061c8.946-10.256,13.876-24.397,13.876-39.816c0-13.566-4.38-24.852-12.671-32.638
|
||||
c-6.891-6.476-16.243-10.189-25.655-10.189c-7.512,0-12.767,2.755-18.853,5.948c-7.85,4.114-16.745,8.783-33.25,8.783
|
||||
c-10.042,0-16.731-4.043-16.731-23.778c0-21.048,1.23-42.255,2.421-62.763c1.143-19.693,2.22-38.293,2.309-56.807l0.002-0.475
|
||||
l-0.47-0.069l-2.648-0.386C388.373,92.485,338.428,85.109,310.651,85.109L310.651,85.109z"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="Ebene_5">
|
||||
<g>
|
||||
<path fill="#33B6EA" d="M407.896,309.423c0.292-2.983-1.491-5.002-3.092-7.095c-0.7-0.912-0.66-1.583,0.177-2.261
|
||||
c0.961-0.774,0.921-1.646,0.526-2.733c-0.78-2.159-2.248-3.857-3.484-5.725c-1.466-2.203-4.461-4.076-2.152-7.429
|
||||
c0.388-0.568-0.051-1.715,0.979-1.8c0.986-0.082,1.221,0.965,1.643,1.614c0.897,1.399,1.938,2.258,3.723,1.58
|
||||
c0.49-0.183,1.077-0.112,1.624-0.132c2.425-0.094,4.182-1.515,4.998-4.054c0.849-2.653,0.264-4.913-1.79-6.354
|
||||
c-0.905-0.639-1.721-1.346-2.408-2.191c-0.569-0.707-0.616-1.549,0.03-2.238c0.832-0.884,1.717-1.967,3.022-1.818
|
||||
c1.164,0.13,0.653,1.306,0.691,2.042c0.058,1.075,0.11,2.279,1.445,2.256c1.176-0.021,1.287-1.218,1.376-2.18
|
||||
c0.068-0.726-0.206-1.726,0.646-1.996c1.747-0.555,3.291-1.586,5.151-1.888c3.894-0.63,6.798-2.64,8.199-6.463
|
||||
c0.56-1.528,1.059-3.01,2.181-4.312c0.981-1.131,1.195-2.616,0.676-4.23c-0.746-2.309-2.063-4.291-3.246-6.348
|
||||
c-0.734-1.273-0.449-1.956,0.761-2.614c0.973-0.526,2.35-0.481,2.798-1.826c0.038-0.207,0.079-0.412,0.12-0.619l-0.078-0.511
|
||||
c-2.35,0.232-4.872,0.36-7.601,0.36c-10.363,0-17.275-4.137-17.275-24.324c0-33.515,3.084-66.929,4.271-99.125
|
||||
c-0.501,0.07-0.954,0.132-1.053,0.141c-0.515-0.32-1.025-0.642-1.538-0.965c0,0,0-0.001,0-0.002
|
||||
c0.063-0.533-0.031-1.153,0.212-1.585c1.029-1.849,1.129-3.661,0.058-5.508c-2.433-0.673-3.734,0.91-5.115,2.477
|
||||
c-1.617,1.839-3.029,3.825-4.294,5.902c-1.633,2.681-4.156,2.578-6.695,2.285c-1.834-0.21-3.474-0.293-4.844,1.29
|
||||
c-0.498,0.574-1.275,0.986-2.105,1.187c-1.955,0.464-3.128,1.841-3.925,3.579c-1.851,4.039-4.382,7.434-8.638,9.208
|
||||
c-1.244,0.519-1.709,1.429-1.613,2.752c0.076,1.02,0.019,2.046,0.015,3.069c-0.004,0.768-0.408,1.311-1.072,1.602
|
||||
c-0.695,0.303-1.191-0.175-1.574-0.652c-0.895-1.108-1.683-2.295-2.611-3.369c-1.032-1.195-2.267-1.536-3.53-0.317
|
||||
c-0.666,0.64-1.283,0.676-2.197,0.54c-1.603-0.242-3.259-0.146-4.895-0.152c-1.06-0.003-1.494,0.796-1.923,1.598
|
||||
c-1.182,2.21-2.061,4.563-3.571,6.63c-0.888,1.22-0.246,2.924-0.307,4.406c-0.092,2.175-0.371,2.38-2.431,1.545
|
||||
c-0.377-0.153-0.778-0.254-1.154-0.411c-0.954-0.396-1.82-0.784-0.823-2.046c0.478-0.604,0.3-1.389-0.343-1.814
|
||||
c-3.039-2.018-1.981-4.979-1.569-7.594c0.474-2.938,2.129-5.418,4.249-7.542c0.335-0.337,0.684-0.673,0.966-1.055
|
||||
c0.736-0.985,0.844-2.044,0.015-3.001c-0.854-0.992-1.883-0.604-2.774-0.045c-3.603,2.27-5.945,5.479-7.208,9.56
|
||||
c-0.986,3.201-0.821,6.458-0.805,9.72c0.006,1.499,1.193,2.018,2.279,2.6c0.934,0.505,2.179,0.772,2.161,2.155
|
||||
c-0.018,1.367-1.249,1.639-2.184,2.15c-0.417,0.227-0.889,0.419-1.213,0.745c-1.721,1.735-3.57,1.524-5.358,0.264
|
||||
c-1.174-0.823-2.053-0.821-3.019,0.246c-0.397,0.438-0.969,0.76-1.514,1.016c-2.108,0.979-4.151,2.029-5.599,3.939
|
||||
c-0.2,0.266-0.435,0.629-0.816,0.445c-0.497-0.24-0.256-0.667-0.146-1.055c0.783-2.672-1.411-5.19-4.214-4.855
|
||||
c-1.387,0.167-2.309,1.604-2.002,3.244c0.249,1.33,0.542,2.659,0.899,3.962c0.208,0.742,0.29,1.414-0.553,1.687
|
||||
c-0.863,0.279-1.241-0.405-1.461-1.068c-0.248-0.77-0.364-1.581-0.582-2.363c-0.18-0.649-6.567-6.502-7.252-6.693
|
||||
c-0.065-0.018-0.132-0.012-0.204-0.017c-0.027,0.083-0.296,0.043-0.685-0.061c-2.444,14.433-10.949,22.904-21.363,27.53
|
||||
c-0.147,0.229-0.294,0.421-0.463,0.517c-0.633,1.343-0.407,2.478,0.835,3.354c0.658,0.468,1.292,0.979,1.989,1.382
|
||||
c0.685,0.395,1.06,0.93,0.776,1.658c-0.489,1.252-0.285,2.533-0.309,3.806c-0.019,1.23-0.133,2.277-1.83,1.615
|
||||
c-0.682-0.262-1.173,0.07-1.479,0.699c-0.521,0.431-0.755,1.008-0.833,1.66c-0.441,0.301-0.391,0.762-0.387,1.206
|
||||
c-0.317,1.203-0.594,2.43-1.658,3.25c-0.688,0.229-1.437,0.315-2.003,0.837c-0.689,0.018-1.381,0.031-2.07,0.047
|
||||
c-0.82,0.052-1.704-0.316-2.433,0.359c-0.281,0.02-0.564,0.038-0.843,0.058c-1.492-0.1-3.014,0.116-4.47-0.41
|
||||
c-0.407-0.29-0.818-0.577-1.227-0.866c0.006-1.147,0.051-2.293,0.008-3.435c-0.036-0.959,0.373-2.078-0.807-2.709l-0.008-0.013
|
||||
c-0.57-0.973-1.142-0.909-1.711,0c-0.135,0.136-0.27,0.271-0.401,0.406c-0.599,0.936-2.547,1.445-1.712,2.757
|
||||
c1.48,2.322,1.834,4.272-0.375,6.229c-0.807,0.054-1.61,0.111-2.41,0.162c-0.112,0.096-0.224,0.193-0.334,0.289
|
||||
c-1.23,0.766-1.778,2.045-2.246,3.297c-0.36,0.96-1.028,1.641-1.751,2.175c-0.635,0.472-1.782,0.628-1.681-0.718
|
||||
c0.239-3.071-1.484-5.418-3.036-7.646c-1.152-1.659-1.721-3.558-2.208-5.264c-0.508-1.777-1.355-3.357-1.99-5.031
|
||||
c-0.54-1.425-2.4-1.527-2.797-0.163c-0.615,2.117-2.624,4.223-0.609,6.632c0.356,0.424,0.515,1.039,0.128,1.521
|
||||
c-0.406,0.506-0.982,0.282-1.509,0.113c-1.531-0.491-2.803-0.064-3.877,1.093c-0.703,0.757-1.5,1.356-2.531,1.639
|
||||
c-0.831,0.229-1.223,0.98-0.582,1.523c1.411,1.197,1.338,2.691,1.347,4.269c0.008,1.5,0.956,2.038,2.331,1.8
|
||||
c1.294-0.223,2.411-0.882,3.482-1.624c0.479-0.332,0.964-1.001,1.604-0.547c0.646,0.46,0.409,1.26,0.248,1.89
|
||||
c-0.129,0.508-0.433,1.01-0.775,1.416c-0.558,0.656-1.146,1.323-0.5,2.146c0.602,0.767,1.467,0.466,2.263,0.229
|
||||
c1.82-0.542,3.566-1.334,5.48-1.561c0.506-0.059,1-0.189,1.214,0.367c0.272,0.705-0.319,1.001-0.815,1.171
|
||||
c-1.285,0.439-2.603,0.767-3.884,1.204c-0.91,0.309-1.809,0.716-2.026,1.809c-0.241,1.215,0.54,1.923,1.413,2.487
|
||||
c1.265,0.818,2.229,1.79,2.275,3.398c0.109,0.682,0.219,1.365,0.33,2.047c0.093,0.731-0.082,1.341-0.78,1.712
|
||||
c-1.853,0.694-3.73,0.459-5.588,0.088c-3.874-0.773-6.338,1.533-5.242,5.239c0.275,0.927,0.494,2.054,0.049,2.803
|
||||
c-1.415,2.396-0.244,4.29,0.822,6.289c0.642,1.204,1.496,1.578,2.849,1.312c1.725-0.339,3.482-0.571,5.237-0.668
|
||||
c1.955-0.11,3.695-0.763,4.131-2.696c0.978-4.362,5.456-5.59,7.571-8.888c0.137-0.21,0.623-0.306,0.934-0.281
|
||||
c1.546,0.127,2.965-0.188,4.301-0.982c0.376-0.224,1.254-0.398,1.091,0.189c-0.432,1.53,1.386,3.451-0.809,4.656
|
||||
c-0.248,0.134-0.359,0.571-0.461,0.892c-0.25,0.753-0.216,1.467,0.388,2.082c0.672,0.686,1.511,0.639,2.292,0.413
|
||||
c0.763-0.226,1.172-0.85,1.216-1.705c0.051-0.989-0.104-1.898-0.723-2.697c-0.297-0.384-0.632-0.784-0.168-1.247
|
||||
c0.493-0.498,1.203-0.652,1.66-0.189c1.915,1.926,4.688,2.796,6.242,5.148c0.138,1.721-1.023,1.717-2.22,1.686
|
||||
c-0.639-0.018-1.213,0.13-1.383,0.854c-0.14,0.592-0.007,1.061,0.705,1.149c0.41,0.41,0.817,0.816,1.225,1.226
|
||||
c0.293,1.096,0.838,0.699,1.493,0.316c1.613-0.942,2.538-2.551,3.816-3.817c1.014-1.003,1.986-1.477,2.618,0.402
|
||||
c0.166,0.489,0.408,1.029,1.094,1.029c0.012,0.368,0.113,0.675,0.502,0.81c0.133,1.179,0.842,1.803,1.952,2.049
|
||||
c0.591,0.066,1.212,0.256,1.62-0.406c0.943-0.135,1.503-0.642,1.566-1.63c0.054-0.118,0.081-0.246,0.088-0.377
|
||||
c1.227-0.282,0.592-1.338,0.844-2.022c0.254-0.678,0.363-1.694,1.321-1.531c0.903,0.151,0.512,1.003,0.524,1.681
|
||||
c0.071,3.721,3.276,6.662,5.917,6.221c0.538,0,1.074-0.001,1.613-0.001c1.292,0.036,2.581,0.078,3.87,0.106
|
||||
c1.026,0.023,1.688,0.515,1.889,1.517c0.398,2.036-2.479,5.559-4.571,5.512c-3.058-0.07-6.191,1.788-9.177-0.367
|
||||
c-0.225-0.165-0.667-0.055-1.006-0.029c-1.408,0.103-2.738-0.223-3.908-0.951c-1.889-1.174-3.222-0.246-4.452,1.059
|
||||
c-0.455,0.485-0.745,1.132-1.111,1.704c-0.755,1.185-1.559,1.336-2.628,0.293c-0.808-0.79-1.388-1.891-2.623-2.178
|
||||
c0.034-0.63-0.545-0.816-0.861-1.194c-0.065-0.531-0.186-0.943-0.777-0.373c-0.273-0.017-0.546-0.032-0.82-0.048
|
||||
c-0.072-0.484-0.273-0.806-0.843-0.639c-0.408-0.057-0.815-0.113-1.228-0.171c-0.075-0.774-0.632-0.812-1.223-0.802
|
||||
c-0.182-0.277-0.366-0.555-0.549-0.833c0.136-0.979,0.092-1.97,0.412-2.942c0.191-0.575,0.34-1.386-0.697-1.517
|
||||
c-0.23-0.613-0.649-1.031-1.259-1.258c-0.088-0.92-0.82-0.89-1.38-0.772c-2.967,0.625-6.003,0.06-8.936,0.522
|
||||
c-1.461,0.229-3.359-0.281-4.387,1.45c-0.522,0.136-1.121,0.154-1.56,0.429c-2.368,1.488-4.863,1.888-7.584,1.212
|
||||
c-0.8-0.2-1.84-0.054-2.149,0.796c-0.974,2.679-3.813,4.354-3.95,7.478c-0.014,0.331-0.424,0.687-0.714,0.961
|
||||
c-1.786,1.68-3.409,3.518-5.324,5.078c-1.387,1.126-3.06,2.243-3.153,4.318c-0.048,1.069-0.468,1.847-1.263,2.432
|
||||
c-1.728,1.271-1.813,2.868-1.529,4.88c0.244,1.729,1.193,3.532,0.157,5.343c-1.621,2.835-1.67,4.582,0.464,6.843
|
||||
c3.317,3.515,6.108,7.464,9.49,10.928c2.129,2.182,4.348,2.58,7.024,1.688c1.734-0.58,3.628-0.845,5.22-0.221
|
||||
c1.661,0.646,2.832,0.292,4.189-0.458c2.05-1.127,4.08-1.447,6.059,0.269c1.13,0.978,2.578,1.149,4.023,1.22
|
||||
c0.742,0.036,1.479,0.002,2.218,0.242c1.437,0.468,2.016,1.054,0.817,2.443c-1.391,1.612-1.895,3.514-0.912,5.5
|
||||
c1.17,2.364,2.492,4.646,3.752,6.964c-0.158,1.241,0.445,2.172,1.115,3.16c1.471,2.161,2.274,4.347,0.758,7.005
|
||||
c-2.419,4.226-3.129,8.629-0.462,13.121c0.432,0.729,0.664,1.647,0.567,2.564c0.066,0.113,0.101,0.564,0.139,0.994
|
||||
c10.184,1.838,19.545,6.234,25.784,13.74c2.132-2.29,4.942-5.162,5.623-8.088c0.087-0.363,0.358-0.84,0.672-0.978
|
||||
c2.197-0.968,2.192-2.791,2.133-4.797c-0.047-1.456-0.658-3.198,0.454-4.353c1.713-1.788,3.122-3.999,5.697-4.833
|
||||
c0.987-0.319,1.569-1.237,1.567-2.218c-0.002-2.97,0.033-5.94-1.174-8.793c-0.802-1.901-2.063-3.791-1.451-6.017
|
||||
c1.104-4.02,3.852-6.955,6.926-9.491c4.628-3.81,8.019-8.466,10.404-13.896c0.512-1.159,1.11-2.644,0.104-3.667
|
||||
c-0.962-0.974-2.432-0.444-3.697-0.214c-2.269,0.409-4.447,1.353-6.827,1.051c-0.674-0.084-1.415,0.01-1.688-0.827
|
||||
c-0.176-0.531,0.165-0.909,0.518-1.243c0.57-0.547,1.217-0.615,1.859-0.163c1.37,0.962,2.679,0.58,4.039-0.047
|
||||
c2.935-1.348,5.273-3.797,8.197-4.959c3.28-1.305,6.091-2.958,8.421-5.588c0.898-1.01,1.983-1.851,2.705-3.035
|
||||
c0.63-1.027,0.558-1.929-0.353-2.735c-0.939-0.835-2.086-1.709-3.271-1.41c-2.573,0.653-4.979,0.43-7.387-0.538
|
||||
c-1.343-0.823-1.94-2.19-2.62-3.516c-0.871-1.704-1.793-3.364-4.042-3.575c-0.583-0.056-1.23-0.408-1.095-1.209
|
||||
c0.124-0.729,0.765-0.889,1.37-1.006c1.914-0.371,3.22,0.633,4.402,1.95c1.912,2.129,4.033,3.849,7.174,3.392
|
||||
c1.513,1.982,3.877,2.654,5.904,3.847c1.018,0.599,1.918,0.565,2.824-0.152c1.589-1.255,3.249-1.21,4.96-0.271
|
||||
c1.192,0.654,2.365,1.351,3.577,1.966c0.91,0.464,1.348,0.982,0.982,2.099c-0.458,1.413,0.452,2.45,1.651,2.529
|
||||
c2.521,0.166,2.9,1.74,3.082,3.714c0.48,5.227,2.862,9.695,5.739,13.937c1.045,1.542,2.422,1.703,3.821,0.491
|
||||
c2.266-1.962,3.307-4.584,2.944-7.472c-0.201-1.602,0.305-2.357,1.417-3.219c2.739-2.124,5.835-3.985,7.758-6.877
|
||||
c1.635-2.454,4.021-2.204,6.234-2.74c0.562-0.135,1.157,0.369,1.498,0.924c1.313,2.117,3.005,4.019,3.057,6.772
|
||||
c0.027,1.493,0.906,2.549,2.672,2.379c2.488-0.236,3.783,1.01,3.194,3.457c-1.211,5.04-0.943,9.595,3.37,13.178
|
||||
c0.153,0.122,0.247,0.328,0.33,0.513c0.237,0.502,1.247,0.887,0.627,1.479c-0.704,0.678-1.355-0.075-1.89-0.599
|
||||
c-0.919-0.908-1.784-1.878-2.75-2.741c-0.838-0.753-1.936-0.981-2.783-0.207c-0.808,0.736,0.073,1.551,0.469,2.16
|
||||
c0.848,1.302,2.022,2.358,2.859,3.702c1.945,3.114,4.025,6.15,6.02,9.231c0.309,0.48,0.693,0.811,1.182,1.085
|
||||
c3.299,1.855,6.101,4.785,10.288,4.725c0.169-0.004,0.857,0.158,1.387,0.295c0.984-1.271,2.059-2.257,3.162-3.014
|
||||
c-2.632-0.873-6.244-0.9-8.813-0.922C408.916,310.436,407.771,310.668,407.896,309.423z M248.106,203.852
|
||||
c-0.105,0.961-0.319,1.971-1.522,2.079c-0.99,0.09-1.237-0.631-1.227-1.399c-0.018-1.147,0.351-1.993,1.511-2.116
|
||||
C247.843,202.313,248.199,202.988,248.106,203.852z M280.506,234.099c-1.147-1.119-2.281-2.253-3.413-3.392
|
||||
c-0.526-0.533-1.063-1.035-1.898-0.929c-0.269-0.272-0.539-0.546-0.81-0.82c0.384-0.639-1.387-2.143,0.821-2.05
|
||||
c0.813,0.545,1.624,1.088,2.437,1.634c0.06,0.511,0.309,0.799,0.862,0.742c0.974,0.979,1.948,1.953,2.927,2.932
|
||||
c-0.061,0.545,0.222,0.792,0.737,0.836c-0.011,0.136,0.016,0.269,0.073,0.391C282.121,234.861,281.538,235.104,280.506,234.099z
|
||||
M310.93,169.246c0.843,0.068,1.077,0.663,1.056,1.413c-0.012,0.66-0.207,1.284-0.969,1.232c-0.824-0.053-1.307-0.637-1.338-1.472
|
||||
C309.646,169.59,310.124,169.178,310.93,169.246z M302.464,230.89c-1.204,0.452-2.401,0.991-3.651,1.262
|
||||
c-2.104,0.454-3.354-1.005-2.543-3.01c0.567-1.396,1.108-2.709,1.117-4.274c0.006-1.433,1.293-1.519,2.406-1.659
|
||||
c1.809,0.343,3.851,0.172,4.572,2.583c0.264,0.882,1.213,1.22,2.083,1.496c1.915,0.612,3.569,1.636,4.879,3.194
|
||||
c0.34,0.408,0.876,0.773,0.541,1.395c-0.276,0.519-0.889,0.441-1.288,0.306c-1.563-0.529-3.336-0.002-4.8-1.303
|
||||
C304.946,230.14,303.59,230.466,302.464,230.89z M313.45,279.994c-0.237-1.545-1.684-2.25-2.433-3.455
|
||||
c-1.822-2.924-2.863-6.164-4.108-9.313c-0.834-2.094-1.764-4.119-2.74-6.142c-0.292-0.61-1.148-1.352-0.236-1.954
|
||||
c0.857-0.568,1.267,0.488,1.779,0.938c1.252,1.094,2.091,2.492,2.812,3.972c2.295,4.684,4.576,9.365,6.864,14.049
|
||||
C315.312,279.308,315.772,281.071,313.45,279.994z M325.997,238.184c-0.138-0.935-0.046-1.899-0.08-2.851
|
||||
c-0.021-0.585,0.153-1.287-0.723-1.45c-0.023-0.7-0.046-1.4-0.068-2.101c0.704-0.631,0.004-1.127-0.238-1.563
|
||||
c-1.007-1.795-1.55-3.687-1.474-5.75c0.382-0.524,0.622-1.183,1.351-1.362c1.481-0.229,2.898-1.103,4.47-0.436
|
||||
c0.187,0.188,0.371,0.378,0.557,0.566c-0.2,0.94-1.07,0.938-1.732,1.181c-1.089,0.399-2.29,0.693-2.415,2.115
|
||||
c-0.127,1.453,0.064,2.832,1.519,3.655c0.063,1.062,1.066,1.581,1.418,2.474c0.118,0.087,0.294,0.18,0.42,0.27
|
||||
c-0.126-0.09-0.304-0.183-0.422-0.271c-0.031,1.077-0.232,2.182-0.062,3.228c0.247,1.526,0.215,3.263,1.897,4.166
|
||||
c0.007,0.247,0.011,0.495,0.013,0.744C327.842,241.693,326.393,240.866,325.997,238.184z M361.558,144.455
|
||||
c-0.667,0.19-0.735-0.424-0.727-0.92c0.015-0.938,0.508-1.541,1.416-1.727c0.545-0.111,0.928,0.144,0.935,0.912
|
||||
C363.037,143.546,362.444,144.202,361.558,144.455z M369.867,165.421c-0.914-0.167-2.027-0.295-2.07-1.766
|
||||
c-0.021-0.766,0.271-1.407,1.119-1.338c1.194,0.101,2.272,0.55,2.415,1.942C371.422,165.105,370.814,165.417,369.867,165.421z"/>
|
||||
<path fill="#33B6EA" d="M78.988,229.038c-1.861,2.572-1.729,5.228-0.459,7.997c0.235,0.515,0.139,1.195,0.152,1.797
|
||||
c0.013,0.579,0.095,1.083,0.759,1.251c0.025,0.244,0.053,0.487,0.08,0.731c-0.038,0.546,0.254,0.799,0.764,0.862
|
||||
c-0.002,0.127,0.019,0.249,0.066,0.37c-0.049,0.545,0.244,0.795,0.749,0.867c-0.004,0.125,0.018,0.248,0.069,0.363
|
||||
c-0.043,0.541,0.246,0.793,0.747,0.863c0.621,2.214,2.144,4.039,3.919,5.046c2.554,1.448,3.458,3.696,4.406,6.077
|
||||
c1.888,4.75,5.445,8.431,8.078,12.703c0.493,0.794,1.374,0.933,2.183,0.534c0.973-0.476,0.467-1.276,0.241-1.958
|
||||
c-0.671-2.048-1.972-3.71-3.246-5.397c-0.861-1.137-1.687-2.305-2.468-3.497c-0.283-0.427-0.721-1.108-0.117-1.447
|
||||
c0.647-0.362,0.875,0.403,1.107,0.868c0.297,0.6,0.369,1.285,0.903,1.797c2.086,2.021,4.099,4.107,6.045,6.278
|
||||
c1.842,2.057,3.167,4.134,3.647,6.88c0.259,1.476,0.614,3.399,2.317,3.834c3.805,0.966,7.133,3.355,11.036,3.806
|
||||
c3.25,0.375,6.318,0.828,8.643,3.39c0-0.002,0.13,0.028,0.13,0.028l0.135-0.007c0.473,0.907,1.35,0.959,2.213,1.038
|
||||
c1.804,0.601,3.096,1.823,4.106,3.389c0,1.259,0.042,2.493,1.611,2.866c0.138,0.321,0.406,0.434,0.732,0.455
|
||||
c1.005,1.424,2.621,1.456,4.099,1.742c1.191,0.231,2.498,0.93,3.479-0.485c0.363-0.059,0.722-0.118,1.084-0.177
|
||||
c0.941,0.218,1.189,0.857,1.305,1.767c0.198,1.607-0.437,3.021-0.793,4.501c-0.037,0.249-0.077,0.495-0.116,0.743
|
||||
c-1.112,0.479-1.318,1.508-1.535,2.532c-0.485,1.688-1.971,2.557-3.081,3.732c-1.751,1.847-1.899,6.25-0.32,8.229
|
||||
c2.128,2.673,4.232,5.427,5.147,8.75c1.123,4.061,3.106,7.155,7.354,8.399c0.501,0.147,0.932,0.562,1.368,0.883
|
||||
c1.217,0.911,1.933,2.051,1.842,3.659c-0.071,1.292,0.028,2.59-0.001,3.888c-0.111,5.203,0.418,10.486-1.895,15.424
|
||||
c-0.166,0.354-0.165,0.798-0.191,1.205c-0.308,4.739-0.57,9.479-2.658,13.885c-0.541,1.149-0.3,2.261,0.783,3.103
|
||||
c0.505,0.394,0.939,0.938,0.49,1.576c-0.948,1.341-0.715,3.158-1.908,4.425c-0.576,0.613-0.486,1.488-0.071,2.307
|
||||
c1.729,3.398,1.146,6.566-1.054,9.542c-0.614,0.827-1.236,1.705-1.237,2.752c-0.001,2.795-0.592,5.539-0.496,8.349
|
||||
c0.159,4.661,2.12,6.953,6.685,7.476c1.43,0.159,1.913,1.038,1.229,2.237c-1.562,2.744-0.347,4.744,2.882,4.748
|
||||
c1.773,0.006,3.549,0.068,5.318-0.022c1.005-0.054,2.363,0.604,2.914-0.755c0.59-1.455-0.415-2.448-1.438-3.3
|
||||
c-0.465-0.386-0.989-0.721-1.526-1.003c-4.742-2.498-5.607-7.749-1.879-11.479c0.241-0.244,0.482-0.483,0.722-0.727
|
||||
c2.797-2.821,2.848-3.684,0.158-6.521c-0.766-0.803-0.909-1.374-0.069-2.205c2.024-1.996,2.999-4.679,4.472-7.04
|
||||
c0.499-0.797,0.674-1.604-0.077-2.428c-1.087-1.194-0.409-1.661,0.837-1.764c1.1-0.087,1.969-0.708,2.037-1.681
|
||||
c0.155-2.241,1.584-2.333,3.269-2.425c3.627-0.192,6.176-3.527,5.331-7.009c-0.323-1.33,0.301-1.667,1.33-1.614
|
||||
c1.596,0.093,2.688-0.657,3.736-1.734c1.202-1.243,2.216-2.592,2.94-4.151c1.664-3.575,3.186-7.231,4.997-10.734
|
||||
c1.966-3.803,5.061-6.368,9.135-7.905c2.746-1.039,4.463-3.355,5.567-6.07c1.387-0.987,1.308-2.595,1.518-3.984
|
||||
c0.457-3.065,0.566-6.185,2.711-8.722c0.813-0.965,1.812-1.859,1.887-3.262c0.002,0.002,0.005,0.02,0.005,0.02
|
||||
c4.065-3.266,3.701-7.931-0.794-10.24c-0.606-0.311-1.221-0.623-1.756-1.033c-1.207-0.918-2.588-1.209-4.016-1.646
|
||||
c-3.159-0.972-6.544-1.384-9.301-3.673c-1.551-1.286-3.69-2.136-5.874-0.871c-0.306,0.179-0.646,0.328-0.947,0.088
|
||||
c-0.401-0.315-0.297-0.748-0.05-1.093c0.711-0.984,0.869-1.999,0.184-3.034c-1.946-2.944-4.461-5.209-8.019-5.87
|
||||
c-1.715-0.317-3.051-1.043-4.214-2.265c-2.116-2.226-4.377-4.247-7.028-5.878c-1.734-1.066-3.299-1.163-4.973-0.257
|
||||
c-1.735,0.938-3.155,0.576-4.366-0.849c-1.521-1.79-3.313-2.996-5.708-2.094c-2.076,0.788-4.78,1.374-5.857,2.961
|
||||
c-1.257,1.854-3.244,2.776-4.368,4.653c-1.061,1.77-2.98,1.484-4.608,0.923c-1.591-0.55-2.492-1.809-2.496-3.612
|
||||
c-0.003-1.37,0.18-2.706,0.358-4.059c0.274-2.101-0.632-3.235-2.71-3.087c-3.593,0.256-3.579-1.217-3.284-4.179
|
||||
c0.062-0.602,0.269-1.195,0.453-1.779c0.268-0.854,0.638-1.75-0.204-2.455c-0.841-0.702-1.88-0.827-2.904-0.497
|
||||
c-1.405,0.443-2.598,1.276-3.384,2.521c-1.325,2.106-3.367,1.438-5.186,1.367c-1.679-0.067-2.311-1.373-2.759-2.852
|
||||
c-0.743-2.447-0.92-4.932-0.868-7.465c0.07-3.483,2.242-5.628,5.786-5.634c2.101-0.003,4.116,0.022,6.172-0.936
|
||||
c2.16-1.006,4.59-0.076,6.789,0.425c1.403,0.318,1.241,2.266,1.773,3.484c0.704,1.613,1.218,3.281,2.902,4.304
|
||||
c1.483,0.899,2.274,0.388,2.908-0.934c0.471-0.987,0.454-1.999-0.089-2.943c-0.642-1.117-1.363-2.195-2.036-3.296
|
||||
c-1.291-2.115-1.116-3.608,0.653-5.44c0.327-0.341,0.749-0.584,1.107-0.895c2.013-1.742,3.916-3.585,5.502-5.742
|
||||
c0.347-0.475,0.654-0.993,0.381-1.499c-0.715-1.335,0.18-2.016,0.98-2.761c1.164-1.084,2.557-2.319,2.285-3.912
|
||||
c-0.398-2.319,1.052-2.16,2.393-2.37c0.735-0.115,1.516-0.047,2.213-0.266c1.072-0.331,1.738-0.979,0.712-2.074
|
||||
c-1.383-1.473-0.374-2.112,0.887-2.685c1.981-2.108,2.691-2.145,6.272-0.35c1.237-0.014,2.542,0.301,3.564-0.742
|
||||
c0.876-1.099,1.425-2.199,0.132-3.396c-0.698-0.647-1.376-1.323-2.023-2.026c-0.781-0.848-1.144-1.828-0.795-3.004
|
||||
c0.789-2.637,0.113-3.385-2.637-2.994c-0.714,0.104-1.477,0.802-2.24-0.059c0.828-0.832,1.536-1.673,2.744-1.736
|
||||
c2.308,0.009,4.618,0.019,6.927,0.03c0.285-0.002,0.57,0,0.854,0c0.678,0.075,1.424,0.312,1.651-0.691
|
||||
c1.789-1.224,2.84-3.361,5.177-3.954c0.916-0.233,1.056-1.303,0.987-2.23c0.377-0.297,0.366-0.566-0.057-0.803
|
||||
c-0.686-3.168-2.416-4.902-4.922-4.928c-0.928-0.87-1.162-2.314-2.404-2.928c-0.024-0.255-0.051-0.512-0.077-0.767
|
||||
c-0.854-3.666-3.196-6.696-4.376-10.231c-0.286-0.854-1.184-1.125-1.993-0.329c-0.778,0.763-1.525,1.559-2.317,2.31
|
||||
c-0.627,0.598-1.272,1.468-2.237,1.042c-0.961-0.426-1.563-1.356-1.673-2.425c-0.112-1.081-0.063-2.179-0.062-3.269
|
||||
c0.001-0.771-0.061-1.553-0.665-2.076c-2.789-2.402-5.791-4.194-9.714-3.892c-3.164,0.241-4.555,2.432-3.079,5.15
|
||||
c0.454,0.841,0.996,1.652,0.34,2.651c-1.947,2.964-1.114,5.811,0.39,8.624c0.024,0.273,0.051,0.547,0.076,0.819
|
||||
c-0.005,1.304,0.004,2.575-1.235,3.48c-2.797,2.041-3.089,4.659-1.843,7.745c0.765,1.891,0.182,2.583-1.854,2.689
|
||||
c-0.188-1.086-1.016-1.728-1.705-2.467c0.004-0.068,0.018-0.134,0.013-0.205c-0.355-5.745-1.033-7.693-6.86-7.171
|
||||
c-2.163,0.195-3.938-1.181-4.641-3.266c-1.033-3.056-3.408-4.891-5.872-6.637c-1.309-0.931-1.864-1.924-0.937-3.433
|
||||
c0.744-1.212,1.192-2.698,2.169-3.656c2.011-1.974,3.277-4.955,6.682-5.222c0.833-0.065,1.65-0.852,1.597-1.653
|
||||
c-0.168-2.456,0.906-4.528,1.523-6.775c0.525-1.909,1.398-2.585,3.054-2.911c0.664-0.131,1.328-0.322,1.949-0.586
|
||||
c3.007-1.269,3.98-3.615,2.808-6.777c-0.249-0.671-0.469-1.467-0.137-1.982c1.246-1.934-0.008-3.192-1.067-4.494
|
||||
c-0.405-0.5-0.81-1.291-1.574-1.13c-0.885,0.186-1.214,1.057-1.448,1.843c-0.366,1.235-0.592,2.516-0.981,3.744
|
||||
c-0.242,0.763-0.549,1.68-1.617,1.536c-1.144-0.155-0.695-1.144-0.756-1.813c-0.083-0.91,0.005-1.849-1.384-1.719
|
||||
c-2.999,0.285-4.384-0.965-4.356-3.972c0.018-1.958-0.339-3.823-1.429-5.445c-2.13-3.174-3.067-3.146-5.043,0.03
|
||||
c-0.322,0.515-0.645,1.049-0.854,1.616c-0.551,1.507-0.926,3.14,0.093,4.511c1.067,1.433,1.733,3.085,2.792,4.503
|
||||
c0.706,0.949,1.279,1.938,0.014,2.796c-1.083,0.736-2.111,0.483-3.133-0.406c-1.429-1.243-1.499-2.797-1.44-4.474
|
||||
c0.039-1.105,0.008-2.383-1.208-2.782c-1.087-0.354-1.842,0.644-2.566,1.356c-0.242,0.238-0.496,0.488-0.649,0.783
|
||||
c-0.579,1.112-1.024,2.115,0.765,2.675c1.463,0.459,1.451,1.513,0.705,2.745c-0.422,0.699-2.281,1.267-3.987,1.73
|
||||
c0.221,7.302,0.275,14.064,0.08,19.642c-0.433,12.308-4.57,46.237-23.802,46.237c-4.41,0-7.984-1.136-11.13-2.912
|
||||
c-0.001,1.142-0.006,1.956-0.015,2.104C79.335,228.167,79.277,228.636,78.988,229.038z M147.153,227.965
|
||||
c0.184-1.168,1.059-1.455,2.105-1.416c0.884-0.002,1.529,0.358,1.368,1.312c-0.229,1.358-1.395,0.989-2.286,1.044
|
||||
C147.695,228.942,147.016,228.847,147.153,227.965z M136.335,227.479c-0.691,1.075-0.787,2.271-0.812,3.503
|
||||
c-0.018,0.817-0.507,1.265-1.325,1.168c-0.863-0.101-1.053-0.729-0.925-1.486c0.218-1.397,0.386-2.801,0.665-4.185
|
||||
c0.223-1.11,1.143-1.74,2.096-1.384C137.209,225.536,136.897,226.604,136.335,227.479z M146.568,230.325
|
||||
c-0.272,1.146-1.194,1.791-2.314,2.145c-0.704,0.223-1.271-0.205-1.24-0.917c0.063-1.336,0.934-2.021,2.212-2.151
|
||||
C145.818,229.342,146.498,229.302,146.568,230.325z M131.908,219.503c0.366-0.386,0.696-0.636,1.014-0.75
|
||||
C132.604,218.867,132.274,219.117,131.908,219.503c0.939,0.001,1.879,0.003,2.818,0.004c1.227,0.081,2.001,0.995,2.446,1.867
|
||||
c1.006,1.97,2.648,2.302,4.548,2.298c0.176,0.314,0.459,0.37,0.784,0.327c0.873,0.333,2.2,0.735,1.909,1.686
|
||||
c-0.447,1.455-1.971,2.169-3.342,2.812c-0.166,0.078-0.398,0.014-0.6,0.015c-0.256-0.258-0.51-0.52-0.765-0.778
|
||||
c-0.446-2.296-3.403-4.916-5.64-4.942c-1.415-0.016-2.832,0.057-4.248,0.087c-0.02,0.206-0.047,0.433-0.206,0.522
|
||||
c0.159-0.088,0.188-0.316,0.206-0.523c-0.257-0.02-0.516-0.039-0.773-0.058l-0.035-0.036c-0.014-0.392-0.028-0.787-0.042-1.179
|
||||
C129.621,220.446,130.606,219.754,131.908,219.503z"/>
|
||||
<path fill="#33B6EA" d="M261.546,191.276c0.407,1.273,1.343,2.34,2.935,2.498c1.648,0.167,2.499-0.76,3.146-2.068
|
||||
c0.306-0.608,0.585-1.246,0.993-1.774c0.396-0.51,0.835-1.251,1.629-0.962c0.755,0.273,0.459,1.055,0.435,1.623
|
||||
c-0.097,2.678,0.021,5.264,1.615,7.612c1.339,1.976,3.2,2.324,4.916,0.646c1.144-1.118,1.708-2.56,2.111-4.107
|
||||
c0.416-1.608,0.499-3.333,1.782-4.66c2.151-2.221,1.764-4.237-0.673-5.725c-6.185,1.909-12.752,2.706-18.957,2.763
|
||||
C260.875,188.034,260.979,189.509,261.546,191.276z"/>
|
||||
<path fill="#33B6EA" d="M291.96,118.641c1.454-0.106,3.023,1.233,4.278,0.063c1.565-1.46,3.069-3.052,4.022-5.045
|
||||
c0.687-1.446,0.296-2.492-1.161-3.134c-2.41-1.065-4.54-2.344-7.56-2.25c-2.488,0.077-3.934,0.432-4.978,2.563
|
||||
c-0.143,0.296-1.265,1.329-2.021,2.054c1.045,2.03,2.396,3.902,3.93,5.676C289.949,118.609,291.575,118.668,291.96,118.641z"/>
|
||||
<path fill="#33B6EA" d="M223.856,169.547c-1.026-0.573-2.245-0.175-3.32-0.754c-1.958-1.048-3.192-0.229-3.043,1.986
|
||||
c0.203,3.049,0.191,6.246,4.008,7.388c0.865,0.258,1.348,1.432,2.467,1.2c2.115-0.434,4.249-0.787,6.283-1.566
|
||||
c0.227-0.087,0.892-0.696,1.667-1.476c-2.673-2.055-5.176-4.378-7.41-6.953C224.196,169.555,223.955,169.641,223.856,169.547z"/>
|
||||
<path fill="#33B6EA" d="M120.627,136.728c0.484-0.958,1.093-2.894-0.946-3.566c-0.758-0.249-1.59-0.308-2.395-0.391
|
||||
c-2.006-0.203-3.094,1.065-2.748,3.06c0.177,1.022,0.626,2.238-0.989,2.621c0.018,0.571,0.035,1.143,0.05,1.71
|
||||
c0.659,0.101,0.674,0.618,0.62,1.087c-0.206,1.76,0.677,3.165,1.535,4.535c1.286,2.048,3.684,2.186,5.313,0.396
|
||||
c1.779-1.957,1.845-4.067,0.209-6.254C120.569,138.977,119.867,138.233,120.627,136.728z"/>
|
||||
<path fill="#33B6EA" d="M433.681,306.516c-0.632-1.034-1.259-2.091-1.277-3.396c-0.011-0.658-0.542-1.098-1.176-1.263
|
||||
c-0.738-0.198-1.336-0.539-1.151-1.384c0.203-0.922,1.054-1.057,1.793-0.976c1.141,0.124,2.256,0.453,3.389,0.649
|
||||
c0.711,0.123,1.204-0.212,1.313-0.943c0.112-0.789-0.338-1.087-1.07-1.134c-1.615-0.101-3.346-0.07-4.789,0.3
|
||||
c-1.374,0.354-2.927,1.682-3.162,3.421c-0.353,2.614,1.047,5.188,2.895,5.895c0.47,0.182,0.904,0.9,1.098,1.558
|
||||
c0.774,0.114,1.512,0.263,2.219,0.437C433.99,308.746,434.203,307.366,433.681,306.516z"/>
|
||||
<path fill="#33B6EA" d="M439.728,246.08c1.443,0.022,2.988-1.524,3.284-3.127c0.22-1.184-0.463-3.086-1.076-4.532
|
||||
c-1.877,0.488-3.885,0.908-6.05,1.24c0.621,1.067,1.251,2.725,1.446,3.662C437.617,244.694,437.954,246.049,439.728,246.08z"/>
|
||||
<path fill="#33B6EA" d="M460.48,231.114c2.867,1.128,5.945-0.291,7.081-3.263c-0.149,0.013-0.273-0.141-0.393-0.377
|
||||
c-2.313,0.833-4.521,1.898-6.779,3.063C460.557,230.789,460.63,231,460.48,231.114z"/>
|
||||
<path fill="#33B6EA" d="M489.987,314.613c0.179-0.824,0.03-1.537-0.98-1.611c-0.989-0.07-1.267,0.596-1.25,1.444
|
||||
c0.013,0.693,0.087,2.208,0.142,3.43c0.671-0.35,1.338-0.723,1.995-1.115C489.876,315.917,489.917,314.936,489.987,314.613z"/>
|
||||
<path fill="#33B6EA" d="M112.994,105.843c-0.281-1.141-0.823-2.162-2.253-2.193c-0.185,0.054-0.36,0.117-0.522,0.188
|
||||
c0.103,1.23,0.209,2.519,0.32,3.865c0.1,0.011,0.193,0.025,0.299,0.03C112.467,108.088,113.363,107.344,112.994,105.843z"/>
|
||||
<path fill="#33B6EA" d="M160.808,273.271c-0.988-0.458-2.019-0.838-2.961-1.37c-1.241-0.706-2.348-1.647-3.842-0.405
|
||||
c-0.476,0.393-1.136-0.053-1.654-0.455c-3-2.326-7.063-2.178-10.164-4.307c-0.278-0.191-0.799-0.028-1.208-0.028
|
||||
c0-0.013,0-0.024,0-0.039c-0.272,0-0.545-0.013-0.818,0.003c-1.252,0.073-3.414,1.778-3.213,2.658
|
||||
c0.385,1.666,1.825,1.234,3.003,1.36c1.303,0.142,2.729-0.52,3.895,0.619c2.222,2.171,5.004,3.084,8.01,3.419
|
||||
c0.676,0.073,1.11,0.42,1.569,0.84c2.871,2.62,4.667,2.714,7.681,0.426C162.469,274.955,162.366,273.998,160.808,273.271z"/>
|
||||
<path fill="#33B6EA" d="M164.875,274.928c-0.753,0.008-1.25,0.523-1.312,1.25c-0.068,0.762,0.485,1.041,1.17,1.007
|
||||
c0.724-0.033,1.049-0.484,1.07-1.14C165.777,275.399,165.506,274.915,164.875,274.928z"/>
|
||||
<path fill="#33B6EA" d="M325.753,318.891c-0.866-0.411-1.582,0.191-2.169,0.753c-1.28,1.229-2.307,2.861-3.796,3.699
|
||||
c-5.102,2.862-2.815,8.391-4.708,12.38c-0.173,0.361,0.204,1.056,0.442,1.536c0.852,1.703,2.006,3.284,4.033,3.355
|
||||
c1.997,0.074,2.7-1.78,3.142-3.273c1.081-3.62,1.931-7.309,2.78-10.984c0.407-1.786,0.601-3.617,0.862-5.264
|
||||
C326.253,320.202,326.606,319.294,325.753,318.891z"/>
|
||||
<path fill="#33B6EA" d="M213.516,124.214c0.873-1.129,1.619-2.339,2.111-3.699c0.422-1.168,0.367-2.224-0.846-2.793
|
||||
c-1.253-0.588-2.065,0.067-2.555,1.245c-0.154,0.379-0.318,0.766-0.556,1.092c-0.595,0.81-1.321,2.109-2.346,1.389
|
||||
c-1.047-0.733,0.197-1.616,0.688-2.343c1.032-1.542,0.646-2.543-1.193-2.752c-0.955-0.11-1.656-0.385-1.549-1.438
|
||||
c0.203-1.966-0.895-2.813-2.555-3.362c-0.695-0.228-1.47-0.581-1.915-1.12c-1.435-1.731-3.254-2.112-5.306-1.811
|
||||
c-2.537-0.319-4.81,0.208-6.541,2.142c-3.09,3.452-7.202,4.766-11.537,5.591c-2.417,0.461-3.617,1.706-3.762,4.241
|
||||
c-0.041,0.704-0.515,1.112-0.996,1.469c-0.654,0.483-1.353,0.925-2.084,1.279c-2.71,1.316-2.823,2.163-1.086,4.508
|
||||
c0.842,1.137,0.673,2.085-0.291,3.073c-1.333,1.375-3.062,1.975-4.767,2.649c-1.589,0.625-1.669,1.848-1.117,3.18
|
||||
c0.255,0.618,0.926,0.954,1.498,1.346c1.545,1.063,1.494,1.556-0.14,2.483c-0.82,0.466-1.53,0.976-0.845,2.083
|
||||
c1.415,2.285,3.887,3.345,6.596,2.81c0.932-0.183,1.87-0.324,2.807-0.49c1.989-0.355,3.304,0.407,3.898,2.353
|
||||
c0.953,3.123,1.676,6.264,1.195,9.574c-0.208,1.442-0.397,2.947,1.712,3.265c0.769,0.114,0.774,0.74,0.367,1.236
|
||||
c-1.024,1.25-0.263,1.813,0.805,2.28c1.11,0.484,1.189,1.029,0.386,1.993c-1.254,1.499-1.765,3.257-1.783,5.285
|
||||
c-0.039,4.326,1.861,8.033,3.438,11.853c0.253,0.621,0.794,1.126,1.445,1.392c4.57,1.867,4.578,1.862,6.417-2.824
|
||||
c0.225-0.568,0.525-1.159,0.539-1.749c0.068-2.791,1.646-4.41,3.877-5.853c3.523-2.28,5.706-6.175,10.145-7.568
|
||||
c2.624-0.822,2.372-2.082-0.045-3.903c-0.421-0.318-0.978-0.722-0.466-1.325c0.532-0.625,0.97-0.113,1.344,0.288
|
||||
c0.394,0.419,0.603,1.192,1.416,0.792c0.84-0.411,1.062-1.154,1.03-2.05c-0.025-0.793-0.365-1.456-0.736-2.1
|
||||
c-0.817-1.416-0.671-2.721,0.339-3.969c0.556-0.688,1.13-1.36,1.653-2.069c1.965-2.66,1.718-4.775-0.779-7
|
||||
c-0.396-0.354-0.938-0.684-0.843-1.314c0.119-0.782,0.811-0.601,1.313-0.609c0.955-0.016,1.099-0.603,1.086-1.363
|
||||
c-0.013-0.683,0.021-1.364-0.001-2.047c-0.021-0.584,0.155-1.307-0.71-1.47c-0.728-0.135-1.145,0.288-1.424,0.899
|
||||
c-0.329,0.729-0.771,1.44-1.681,0.974c-1.02-0.522-0.782-1.475-0.468-2.335c0.365-1.002,1.229-1.617,1.942-2.34
|
||||
c0.765-0.775,0.887-1.39-0.325-1.761c-0.706-0.216-1.193-0.634-1.393-1.354c-0.349-1.279,0.508-2.781,1.815-2.957
|
||||
c1.542-0.207,1.771,0.861,1.799,2.072c0.011,0.436-0.202,1.021,0.41,1.222c0.168,0.053,0.634-0.21,0.632-0.327
|
||||
c-0.012-1.34,1.268-2.75-0.064-4.009C212.071,126.803,212.486,125.548,213.516,124.214z"/>
|
||||
<path fill="#33B6EA" d="M172.852,164.982c-2.506-1.504-6.24-2.534-4.739-6.161c0.553-2.373-0.626-3.289-1.66-3.899
|
||||
c-2.163-1.278-3.706-3.186-5.561-4.774c-1.309-1.121-2.559-2.386-4.602-2.314c-2.907,0.103-3.069-0.182-3.555-3.142
|
||||
c-0.227-1.385-0.851-2.219-2.353-1.196c-0.497,0.338-1.043,0.419-1.54,0.105c-1.505-0.945-2.891-1.027-4.218,0.341
|
||||
c-1.639,1.689-3.079,3.75-2.287,5.989c0.883,2.502,2.207,5.023,4.678,6.53c1.145,0.697,1.841,1.571,1.661,2.993
|
||||
c-0.187,1.472,0.625,2.195,1.978,2.273c1.278,0.075,1.755-0.662,1.762-1.933c0.011-1.264,0.868-1.74,2.075-1.704
|
||||
c2.506,0.075,5.165,2.257,5.588,4.606c0.549,3.044-1.069,7.2-3.261,8.006c-0.898,0.331-1.823,0.455-1.515,1.667
|
||||
c0.28,1.11,1.202,1.448,2.241,1.312c1.748-0.228,3.011,0.61,4.145,1.757c1.008,1.019,1.902,2.16,2.999,3.068
|
||||
c1.093,0.9,2.302,2.249,3.763,0.38c0.14-0.18,0.473-0.291,0.719-0.295c0.954-0.019,1.978,0.141,2.316-1.116
|
||||
c0.377-1.385-0.022-2.541-1.036-3.527c-0.98-0.952-1.945-1.918-2.888-2.902c-0.453-0.476-0.761-1.16-0.211-1.63
|
||||
c0.67-0.573,1.052,0.118,1.407,0.628c0.505,0.728,0.982,1.514,2.013,1.554c1.206,0.049,3.91-1.67,4.084-2.656
|
||||
C175.172,167.143,174.561,166.002,172.852,164.982z"/>
|
||||
<path fill="#33B6EA" d="M148.542,127.307c-0.975,1.268-0.724,2.123,0.363,2.92c1.666,1.218,3.576,2.017,5.569,2.434
|
||||
c1.447,0.304,3.066-0.317,3.068-1.894c0.003-1.881,1.021-2.85,2.142-3.93c1.297-1.255,2.237-2.748,2.839-4.434
|
||||
c0.274-0.766,0.655-1.342,1.452-1.561c1.648-0.448,2.835-1.538,4.007-2.711c1.24-1.243,2.295-2.716,3.997-3.444
|
||||
c0.669-0.288,0.956-0.761,0.407-1.441c-0.451-0.557-0.541-1.482,0.107-1.535c3.128-0.251,2.385-1.912,1.56-3.729
|
||||
c-0.128-0.283-0.045-0.676-0.019-1.016c0.099-1.244-0.506-2.145-1.211-3.127c-2.063-2.875-5.219-2.098-7.818-2.667
|
||||
c-1.048,0.155-2.04-0.242-2.79,0.29c-2.636,1.861-5.711,2.861-8.481,4.444c-0.689,0.394-1.404,0.96-1.309,1.927
|
||||
c0.096,0.991,0.805,1.566,1.653,1.896c1.687,0.654,3.333,1.544,5.276,0.924c0.584-0.187,1.249-0.013,1.512,0.708
|
||||
c0.13,0.357,0.019,0.702-0.329,0.868c-1.46,0.701-2.89,1.795-4.413,1.956c-1.946,0.207-2.251,1.071-2.12,2.646
|
||||
c0.055,0.677-0.048,1.369,0.021,2.043c0.167,1.674-0.141,2.973-2.098,3.322c-0.541,0.097-1.038,0.569-1.09,1.121
|
||||
C150.676,125.011,149.459,126.112,148.542,127.307z"/>
|
||||
<path fill="#33B6EA" d="M143.442,117.947c-0.468,2.014,2.086,4.277,3.771,3.557c1.701-0.728,3.875-4.268,3.82-6.308
|
||||
c-0.114-0.374-0.161-0.887-0.402-1.274c-0.819-1.307-1.049-2.721-1.245-4.234c-0.26-1.985-1.633-3.415-3.332-4.412
|
||||
c-1.389-0.816-2.506-0.502-2.996,1.152c-0.773,2.599-0.877,5.25-0.009,7.818C143.47,115.494,143.762,116.573,143.442,117.947z"/>
|
||||
<path fill="#33B6EA" d="M145.218,128.696c-0.489-0.977-4.531-2.283-5.433-1.649c-1.736,1.222-3.163,0.806-4.521-0.591
|
||||
c-0.948-0.976-1.9-1.946-2.89-2.88c-0.962-0.908-2.092-1.496-3.894-1.544c-0.594-0.052-1.596,0.149-1.832,1.269
|
||||
c-0.252,1.204,0.885,1.359,1.684,1.641c2.107,0.743,3.28,2.177,3.097,4.434c-0.14,1.695,0.433,2.388,2.148,2.174
|
||||
c0.937-0.119,1.684,0.41,2.402,0.953c0.867,0.65,1.915,0.977,2.882,0.552c1.291-0.571,2.582-0.702,3.952-0.756
|
||||
C144.262,132.236,145.787,129.828,145.218,128.696z"/>
|
||||
<path fill="#33B6EA" d="M124.37,101.588c-0.531-0.042-0.977-0.277-1.169-0.698c-0.887-1.955-3.121-1.922-4.535-3.115
|
||||
c-0.6-0.505-1.549-0.346-2.236,0.316c-0.719,0.699-0.288,1.346,0.002,2.038c0.578,1.371,1.754,2.23,2.752,3.231
|
||||
c0.776,0.773,1.135,1.416,0.239,2.404c-0.715,0.788,0.752,3.772,1.848,3.937c0.564,0.084,1.006-0.195,1.08-0.7
|
||||
c0.274-1.832,1.021-1.335,1.979-0.506c0.85,0.737,1.64,0.502,1.724-0.604c0.099-1.285,0.68-2.503,0.478-3.684
|
||||
C126.542,101.777,126.543,101.763,124.37,101.588z"/>
|
||||
<path fill="#33B6EA" d="M135.293,135.081c-0.622-0.27-1.242-0.55-1.885-0.763c-2.825-0.932-4.5,0.16-4.767,3.112
|
||||
c-0.043,0.473-0.005,0.95-0.005,1.329c-0.179,2.44,0.894,4.6,1.008,6.911c0.03,0.614,0.448,1.387,1.321,1.283
|
||||
c0.755-0.089,1.337-0.685,1.236-1.389c-0.267-1.86,0.903-2.869,2.03-3.967c0.935-0.908,1.59-2.021,2.163-3.184
|
||||
C137.117,136.938,136.898,135.778,135.293,135.081z"/>
|
||||
<path fill="#33B6EA" d="M124.121,124.314c-1.367-1.391-2.159,0.156-3.112,0.681c-0.519,0.289-0.897,0.927-1.595,0.582
|
||||
c-0.668-0.332-0.501-1.023-0.607-1.615c-0.318-1.764,0.665-3.289,0.86-4.949c0.049-0.944-0.227-1.8-0.868-2.441
|
||||
c-0.803-0.803-2.108-1.276-2.927-0.825c-1.022,0.567,0.298,1.331,0.529,2.019c0.269,0.801,0.624,1.64-0.058,2.285
|
||||
c-0.886,0.837-1.436-0.111-2.024-0.613c-0.412-0.353-0.83-0.866-1.405-0.468c-0.512,0.354-0.365,1.012-0.277,1.521
|
||||
c0.243,1.398,1.711,1.896,2.332,2.985c1.614,2.844,4.006,4.249,7.237,4.509c1.191,0.094,2.604,0.869,3.33-0.406
|
||||
C126.322,126.201,125.015,125.226,124.121,124.314z"/>
|
||||
<path fill="#33B6EA" d="M139.589,171.072c-1.388-0.821-1.992,0.598-2.865,1.25c-1.496,1.117-1.25,2.461-0.447,3.759
|
||||
c0.75,1.212,1.728,2,3.375,1.246c1.022-0.466,2.207-0.598,3.33-0.816c0.695-0.136,1.114-0.449,1.155-1.194
|
||||
C143.655,172.811,141.402,172.14,139.589,171.072z"/>
|
||||
<path fill="#33B6EA" d="M143.789,136.208c-0.026,1.843,1.515,3.008,4.036,3.052c2.5,0.042,3.68-0.742,3.696-2.453
|
||||
c0.024-2.295-1.215-3.643-3.366-3.663C145.797,133.121,143.813,134.515,143.789,136.208z"/>
|
||||
<path fill="#33B6EA" d="M131.362,111.335c1.432,0.842,2.542,0.19,2.559-1.588c-0.009-0.126,0.027-0.35-0.046-0.53
|
||||
c-0.567-1.382-1.144-2.759-1.745-4.128c-0.387-0.883-0.801-1.877-1.977-1.756c-1.316,0.132-1.709,1.241-1.903,2.341
|
||||
C127.864,107.871,129.056,109.981,131.362,111.335z"/>
|
||||
<path fill="#33B6EA" d="M118.666,114.32c0.401,0.319,0.72,0.914,1.363,0.467c0.467-0.323,0.767-0.764,0.691-1.735
|
||||
c-0.357-0.956-1.001-2.129-2.076-3.002c-0.389-0.313-0.898-0.29-1.341-0.019c-0.468,0.285-0.566,0.748-0.481,1.243
|
||||
C117.034,112.526,117.678,113.528,118.666,114.32z"/>
|
||||
<path fill="#33B6EA" d="M149.991,176.162c-0.928,0.053-1.633,0.513-1.614,1.475c0.018,0.893,0.813,0.95,1.526,0.944
|
||||
c0.822-0.001,1.537-0.191,1.567-1.185C151.502,176.403,150.849,176.114,149.991,176.162z"/>
|
||||
<path fill="#33B6EA" d="M479.022,304.194c-0.644-0.41-1.352-0.121-1.674,0.305c-1.215,1.619-3.115,2.311-4.566,3.583
|
||||
c-1.758,1.542-3.07,1.655-4.787,0.052c-1.708-1.592-3.389-3.081-5.94-3.178c-0.889-0.03-1.791-0.62-2.622-1.067
|
||||
c-2.968-1.604-3.308-1.652-5.636,0.704c-1.193,1.206-2.006,0.902-2.731-0.293c-0.543-0.887-1.217-1.63-1.956-2.339
|
||||
c-0.612-0.587-1.342-0.684-2.076-0.361c-0.854,0.377-1.262,1.178-1.012,2.022c0.521,1.762,1.191,3.617,3.145,4.19
|
||||
c3.723,1.098,7.168,2.269,9.486,5.876c1.426,2.216,2.942,2.132,5.089,0.659c1.668-1.144,3.084-0.817,4.407,0.431
|
||||
c1.048,0.989,2.211,1.804,3.412,2.576c1.267,0.811,2.26,0.184,3.045-0.723c0.87-1.006-0.156-1.589-0.749-2.172
|
||||
c-0.529-0.518-1.169-0.926-1.746-1.406c-0.355-0.303-0.793-0.63-0.635-1.179c0.158-0.532,0.646-0.635,1.144-0.689
|
||||
c1.586-0.173,3.023-0.827,4.357-1.623c1.436-0.854,2.578-2.027,2.555-3.897C479.519,305.115,479.566,304.539,479.022,304.194z"/>
|
||||
<path fill="#33B6EA" d="M426.299,291.733c-1.86-1.309-2.794-1.255-4.159,0.423c-0.428,0.521-0.727,1.147-1.151,1.676
|
||||
c-1.796,2.213-3.614,4.458-6.118,5.854c-1.236,0.694-2.009,1.313-1.746,2.691c-0.069,1.061-0.091,2.076,0.908,2.604
|
||||
c1.498,0.796,2.991,1.701,4.6,2.148c1.123,0.314,2.663,0.777,3.546-0.615c1.164-1.831,2.14-3.778,3.519-5.474
|
||||
c0.328-0.398,0.387-0.918,0.196-1.357c-0.738-1.66-0.16-3.116,0.813-4.378C427.803,293.884,427.816,292.798,426.299,291.733z"/>
|
||||
<path fill="#33B6EA" d="M447.558,249.798c0.181-2.055,2.504-3.468,4.266-2.496c1.058,0.581,1.771,0.437,2.513-0.375
|
||||
c0.368-0.405,0.816-0.677,1.345-0.878c4.359-1.651,5.755-5.244,6.195-9.626c-0.068-0.394-0.137-0.933-0.261-1.458
|
||||
c-0.184-0.758-0.098-1.82-1.246-1.794c-1.006,0.022-2.094,0.198-2.567,1.306c-0.315,0.745-0.52,1.542-0.728,2.329
|
||||
c-1.018,3.769-3.746,6.414-7.503,6.389c-2.613-0.019-4.011,1.332-5.374,3.035c-1.555,1.94-1.296,4.069,0.502,5.803
|
||||
c0.861,0.831,1.514,0.63,2.239-0.149C447.513,251.271,447.49,250.548,447.558,249.798z"/>
|
||||
<path fill="#33B6EA" d="M437.163,287.267c-2.188,0.152-3.2-0.814-3.767-2.692c-0.095-0.313-0.349-0.579-0.55-0.852
|
||||
c-1.088-1.478-0.925-1.938,0.945-2.363c0.619-0.136,1.29-0.157,1.354-0.949c0.068-0.798-0.591-0.965-1.196-1.139
|
||||
c-1.523-0.434-1.914-1.373-1.247-2.799c0.201-0.428,0.342-0.89,0.459-1.352c0.317-1.3-0.164-2.307-1.309-2.915
|
||||
c-1.094-0.58-1.922-0.008-2.679,0.806c-2.491,2.678-2.095,8.016,0.876,10.49c0.666,0.557,0.796,1.076,1.021,1.902
|
||||
c0.449,1.672,1.813,3.118,0.723,5.023c-0.045,0.083,0.168,0.365,0.311,0.499c1.064,1.007,2.313,1.644,3.637,1.871
|
||||
c1.482,0.03,3.923-2.007,3.88-3.28C439.575,288.02,438.305,287.192,437.163,287.267z"/>
|
||||
<path fill="#33B6EA" d="M427.252,284.699c-1.006,0.024-2.534,1.624-2.451,2.59c0.068,0.787,0.62,0.952,1.518,0.958
|
||||
c1.095-0.212,2.003-0.982,2.284-2.248C428.809,285.081,428.14,284.681,427.252,284.699z"/>
|
||||
<path fill="#33B6EA" d="M441.027,301.296c1.146-0.027,1.731-0.857,2.01-1.999c-0.244-0.896-0.732-1.543-1.793-1.493
|
||||
c-1.104,0.054-1.749,0.665-1.774,1.78C439.448,300.61,440.002,301.325,441.027,301.296z"/>
|
||||
<path fill="#33B6EA" d="M481.22,313.009c-1.133-0.051-1.261,0.775-1.241,1.637c0.024,0.789-0.083,1.81,1.108,1.718
|
||||
c0.938-0.069,1.254-0.877,1.239-1.768C482.333,313.802,482.21,313.051,481.22,313.009z"/>
|
||||
<path fill="#33B6EA" d="M481.273,308.482c-0.951-0.097-1.521,0.521-1.612,1.43c-0.099,0.957,0.547,1.271,1.598,1.3
|
||||
c0.58,0,1.357-0.072,1.414-1.075C482.725,309.198,482.18,308.571,481.273,308.482z"/>
|
||||
<path fill="#33B6EA" d="M461.282,287.7c0.031,0.961,0.735,1.369,1.54,1.393c0.909-0.025,1.453-0.341,1.428-1.201
|
||||
c-0.028-1.052-0.841-1.37-1.658-1.438C461.829,286.39,461.26,286.952,461.282,287.7z"/>
|
||||
<path fill="#33B6EA" d="M443.25,305.186c-1.146-0.341-2.116,0.039-2.955,0.819c-0.346,0.324-0.709,0.737-0.426,1.227
|
||||
c0.409,0.702,1.063,0.407,1.609,0.19c0.872-0.341,2.093-0.074,2.475-1.27C443.905,305.634,443.664,305.313,443.25,305.186z"/>
|
||||
<path fill="#33B6EA" d="M436.112,285.336c0.963-0.002,1.426-0.589,1.554-1.434c-0.049-0.91-0.546-1.222-1.332-1.222
|
||||
c-0.896-0.002-1.373,0.423-1.375,1.334C434.954,284.789,435.269,285.34,436.112,285.336z"/>
|
||||
<path fill="#33B6EA" d="M437.098,303.553c-1.019,0.01-1.509,0.672-1.513,1.537c-0.008,0.82,0.774,0.756,1.381,0.788
|
||||
c0.817-0.021,1.512-0.227,1.501-1.224C438.46,303.772,437.863,303.545,437.098,303.553z"/>
|
||||
<path fill="#33B6EA" d="M488.649,308.893c-0.706,0.03-1.187,0.326-1.198,1.093c-0.022,0.87,0.519,1.186,1.313,1.193
|
||||
c0.804,0.004,1.291-0.347,1.307-1.189C489.997,309.087,489.418,308.865,488.649,308.893z"/>
|
||||
<path fill="#33B6EA" d="M320.89,116.329c0.529,0.096,1.09,0.078,1.632,0.044c0.896-0.054,1.529,0.286,2.09,1
|
||||
c1.796,2.286,3.372,2.052,4.876-0.461c0.729-1.219,1.81-2.251,3.472-2.149c0.631,0.039,0.832,0.477,0.747,0.989
|
||||
c-0.25,1.567-1.324,2.604-2.726,2.938c-1.148,0.274-1.624,0.686-1.263,1.74c0.351,1.017,1.249,1.7,2.24,1.085
|
||||
c2.137-1.326,4.521-1.287,6.782-1.842c2.897-0.712,7.016-0.725,8.144-5.02c0.289-1.087,2.367-2.016,1.214-3.195
|
||||
c-1.434-1.454-2.255,0.61-3.245,1.34c-0.506,0.373-0.949,0.883-1.602,0.395c-0.586-0.439-0.516-1.07-0.268-1.669
|
||||
c0.284-0.688,0.732-1.321,0.634-2.104c0.082-1.246-0.548-1.977-1.702-1.644c-2.021,0.579-4.278,0.606-5.763,2.588
|
||||
c-1.223,1.629-2.853,1.999-4.634,0.643c-1.176-0.894-2.203-1.359-2.908,0.636c-0.337,0.958-1.489,1.655-2.063,0.222
|
||||
c-0.574-1.437-1.542-1.275-2.621-1.288c-1.76-0.016-2.765,1.343-4.007,2.231c-0.547,0.389-1.497,0.868-1.117,1.73
|
||||
C319.17,115.386,319.871,116.143,320.89,116.329z"/>
|
||||
<path fill="#33B6EA" d="M349.673,109.791c1.219-0.107,1.932-0.853,2.115-2.037c0.1-0.628-0.004-1.322-0.874-1.225
|
||||
c-1.277,0.14-1.81,1.204-2.434,2.061C348.585,109.407,348.962,109.852,349.673,109.791z"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="Ebene_6">
|
||||
<g>
|
||||
<g>
|
||||
<g>
|
||||
<defs>
|
||||
<path id="SVGID_1_" d="M108.925,89.292c0,0,6.092,63.286,5.047,92.998c-0.434,12.308-4.57,46.237-23.802,46.237
|
||||
c-20.709,0-23.073-24.892-48.489-24.892c-15.139,0-41.055,9.865-41.055,53.192c0,33.143,21.005,49.511,37.781,49.511
|
||||
c24.96,0,21.414-19.64,47.875-19.64c26.097,0,27.142,24.412,27.142,37.917c0,13.504-3.319,51.283-9.684,89.475
|
||||
c4.819,0.727,12.558,1.601,25.368,5.593c17.369,5.409,30.689,9.682,58.513,9.682s43.238-10.5,43.238-22.503
|
||||
c0-18.594-17.049-15.549-17.049-37.918s22.505-32.735,45.009-32.735c22.506,0,45.238,10.866,45.238,38.056
|
||||
c0,24.55-14.277,18.685-14.277,39.008c0,20.322,24.413,19.777,30.552,19.777c6.138,0,67.106-1.999,94.93-7.683
|
||||
c-1.09-14.458-4.998-72.608-4.998-90.475c0-23.643,11.001-25.961,16.865-25.961c17.595,0,18.414,13.413,43.237,13.413
|
||||
c22.46,0,44.325-21.551,44.325-54.33c0-29.599-20.73-42.283-37.779-42.283s-22.776,14.73-52.103,14.73
|
||||
c-10.363,0-17.275-4.137-17.275-24.324c0-40.672,4.546-81.199,4.727-119.571c-20.365-3.001-72.697-10.913-101.611-10.913
|
||||
c-26.414,0-28.323,11.049-28.323,18.278c0,18.64,25.643,24.187,25.643,42.009c0,32.644-25.962,41.191-47.239,41.191
|
||||
c-18.596,0-46.328-17.004-46.328-43.737c0-13.139,3.681-17.117,7.467-20.905c5.662-5.663,12.196-9.056,12.196-18.013
|
||||
c0-15.549-15.709-18.187-34.122-18.187S108.925,89.292,108.925,89.292z"/>
|
||||
</defs>
|
||||
<clipPath id="SVGID_2_">
|
||||
<use xlink:href="#SVGID_1_" overflow="visible"/>
|
||||
</clipPath>
|
||||
<g clip-path="url(#SVGID_2_)">
|
||||
|
||||
<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="139.2588" y1="121.6145" x2="139.2588" y2="669.6423" gradientTransform="matrix(1 0 0 1 0.0801 -327.2031)">
|
||||
<stop offset="0" style="stop-color:#FFFFFF;stop-opacity:0.9"/>
|
||||
<stop offset="1" style="stop-color:#FFFFFF;stop-opacity:0.05"/>
|
||||
</linearGradient>
|
||||
<circle fill="url(#SVGID_3_)" cx="139.339" cy="68.425" r="274.014"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 46 KiB |
7
docs/web.md
Normal file
@@ -0,0 +1,7 @@
|
||||
### Web implementation
|
||||
|
||||
`./gradlew :vtm-web-app:farmRun` will run standalone web server at port 8080.
|
||||
|
||||
Then go to [http://localhost:8080/vtm-web-app](http://localhost:8080/vtm-web-app) in the web browser to see the map.
|
||||
|
||||
Hold right mouse button to change view direction.
|
||||
@@ -1,16 +1,12 @@
|
||||
# Project-wide Gradle settings.
|
||||
|
||||
# IDE (e.g. Android Studio) users:
|
||||
# Gradle settings configured through the IDE *will override*
|
||||
# any settings specified in this file.
|
||||
|
||||
# For more details on how to configure your build environment visit
|
||||
# http://www.gradle.org/docs/current/userguide/build_environment.html
|
||||
|
||||
# Specifies the JVM arguments used for the daemon process.
|
||||
# The setting is particularly useful for tweaking memory settings.
|
||||
# org.gradle.jvmargs=-Xmx1536m
|
||||
|
||||
org.gradle.jvmargs=-Xmx1536m
|
||||
# When configured, Gradle will run in incubating parallel mode.
|
||||
# This option should only be used with decoupled projects. More details, visit
|
||||
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
|
||||
|
||||
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
4
gradle/wrapper/gradle-wrapper.properties
vendored
@@ -1,6 +1,6 @@
|
||||
#Tue Aug 16 13:14:49 EEST 2016
|
||||
#Wed Mar 28 09:56:50 EEST 2018
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip
|
||||
|
||||
100
gradlew
vendored
@@ -1,4 +1,4 @@
|
||||
#!/usr/bin/env bash
|
||||
#!/usr/bin/env sh
|
||||
|
||||
##############################################################################
|
||||
##
|
||||
@@ -6,42 +6,6 @@
|
||||
##
|
||||
##############################################################################
|
||||
|
||||
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||
DEFAULT_JVM_OPTS=""
|
||||
|
||||
APP_NAME="Gradle"
|
||||
APP_BASE_NAME=`basename "$0"`
|
||||
|
||||
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
||||
MAX_FD="maximum"
|
||||
|
||||
warn ( ) {
|
||||
echo "$*"
|
||||
}
|
||||
|
||||
die ( ) {
|
||||
echo
|
||||
echo "$*"
|
||||
echo
|
||||
exit 1
|
||||
}
|
||||
|
||||
# OS specific support (must be 'true' or 'false').
|
||||
cygwin=false
|
||||
msys=false
|
||||
darwin=false
|
||||
case "`uname`" in
|
||||
CYGWIN* )
|
||||
cygwin=true
|
||||
;;
|
||||
Darwin* )
|
||||
darwin=true
|
||||
;;
|
||||
MINGW* )
|
||||
msys=true
|
||||
;;
|
||||
esac
|
||||
|
||||
# Attempt to set APP_HOME
|
||||
# Resolve links: $0 may be a link
|
||||
PRG="$0"
|
||||
@@ -60,6 +24,46 @@ cd "`dirname \"$PRG\"`/" >/dev/null
|
||||
APP_HOME="`pwd -P`"
|
||||
cd "$SAVED" >/dev/null
|
||||
|
||||
APP_NAME="Gradle"
|
||||
APP_BASE_NAME=`basename "$0"`
|
||||
|
||||
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||
DEFAULT_JVM_OPTS=""
|
||||
|
||||
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
||||
MAX_FD="maximum"
|
||||
|
||||
warn () {
|
||||
echo "$*"
|
||||
}
|
||||
|
||||
die () {
|
||||
echo
|
||||
echo "$*"
|
||||
echo
|
||||
exit 1
|
||||
}
|
||||
|
||||
# OS specific support (must be 'true' or 'false').
|
||||
cygwin=false
|
||||
msys=false
|
||||
darwin=false
|
||||
nonstop=false
|
||||
case "`uname`" in
|
||||
CYGWIN* )
|
||||
cygwin=true
|
||||
;;
|
||||
Darwin* )
|
||||
darwin=true
|
||||
;;
|
||||
MINGW* )
|
||||
msys=true
|
||||
;;
|
||||
NONSTOP* )
|
||||
nonstop=true
|
||||
;;
|
||||
esac
|
||||
|
||||
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
|
||||
|
||||
# Determine the Java command to use to start the JVM.
|
||||
@@ -85,7 +89,7 @@ location of your Java installation."
|
||||
fi
|
||||
|
||||
# Increase the maximum file descriptors if we can.
|
||||
if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
|
||||
if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
|
||||
MAX_FD_LIMIT=`ulimit -H -n`
|
||||
if [ $? -eq 0 ] ; then
|
||||
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
|
||||
@@ -150,11 +154,19 @@ if $cygwin ; then
|
||||
esac
|
||||
fi
|
||||
|
||||
# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
|
||||
function splitJvmOpts() {
|
||||
JVM_OPTS=("$@")
|
||||
# Escape application args
|
||||
save () {
|
||||
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
|
||||
echo " "
|
||||
}
|
||||
eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
|
||||
JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
|
||||
APP_ARGS=$(save "$@")
|
||||
|
||||
exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
|
||||
# Collect all arguments for the java command, following the shell quoting and substitution rules
|
||||
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
|
||||
|
||||
# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
|
||||
if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
|
||||
cd "$(dirname "$0")"
|
||||
fi
|
||||
|
||||
exec "$JAVACMD" "$@"
|
||||
|
||||
14
gradlew.bat
vendored
@@ -8,14 +8,14 @@
|
||||
@rem Set local scope for the variables with windows NT shell
|
||||
if "%OS%"=="Windows_NT" setlocal
|
||||
|
||||
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||
set DEFAULT_JVM_OPTS=
|
||||
|
||||
set DIRNAME=%~dp0
|
||||
if "%DIRNAME%" == "" set DIRNAME=.
|
||||
set APP_BASE_NAME=%~n0
|
||||
set APP_HOME=%DIRNAME%
|
||||
|
||||
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||
set DEFAULT_JVM_OPTS=
|
||||
|
||||
@rem Find java.exe
|
||||
if defined JAVA_HOME goto findJavaFromJavaHome
|
||||
|
||||
@@ -46,10 +46,9 @@ echo location of your Java installation.
|
||||
goto fail
|
||||
|
||||
:init
|
||||
@rem Get command-line arguments, handling Windowz variants
|
||||
@rem Get command-line arguments, handling Windows variants
|
||||
|
||||
if not "%OS%" == "Windows_NT" goto win9xME_args
|
||||
if "%@eval[2+2]" == "4" goto 4NT_args
|
||||
|
||||
:win9xME_args
|
||||
@rem Slurp the command line arguments.
|
||||
@@ -60,11 +59,6 @@ set _SKIP=2
|
||||
if "x%~1" == "x" goto execute
|
||||
|
||||
set CMD_LINE_ARGS=%*
|
||||
goto execute
|
||||
|
||||
:4NT_args
|
||||
@rem Get arguments from the 4NT Shell from JP Software
|
||||
set CMD_LINE_ARGS=%$
|
||||
|
||||
:execute
|
||||
@rem Setup the command line
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
apply plugin: 'java'
|
||||
apply plugin: 'java-library'
|
||||
|
||||
dependencies {
|
||||
compile "com.badlogicgames.gdx:gdx-jnigen:$gdxVersion"
|
||||
api "com.badlogicgames.gdx:gdx-jnigen:$gdxVersion"
|
||||
}
|
||||
|
||||
sourceSets {
|
||||
|
||||
@@ -49,6 +49,11 @@
|
||||
<xs:enumeration value="monospace" />
|
||||
<xs:enumeration value="sans_serif" />
|
||||
<xs:enumeration value="serif" />
|
||||
<xs:enumeration value="thin" />
|
||||
<xs:enumeration value="light" />
|
||||
<xs:enumeration value="medium" />
|
||||
<xs:enumeration value="black" />
|
||||
<xs:enumeration value="condensed" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
@@ -69,7 +74,7 @@
|
||||
|
||||
<xs:simpleType name="src">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="(file|assets):.+" />
|
||||
<xs:pattern value="((file|assets):)?.+" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
@@ -84,6 +89,8 @@
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="ele" />
|
||||
<xs:enumeration value="addr:housenumber" />
|
||||
<xs:enumeration value="addr_housenumber" /> <!-- Mapzen -->
|
||||
<xs:enumeration value="housenumber" /> <!-- OpenMapTiles -->
|
||||
<xs:enumeration value="name" />
|
||||
<xs:enumeration value="ref" />
|
||||
</xs:restriction>
|
||||
@@ -124,6 +131,9 @@
|
||||
<xs:attribute name="id" default="0" type="xs:string" use="optional" />
|
||||
<xs:attribute name="use" default="0" type="xs:string" use="optional" />
|
||||
<xs:attribute name="src" type="tns:src" use="optional" />
|
||||
<xs:attribute name="symbol-width" type="xs:positiveInteger" use="optional" />
|
||||
<xs:attribute name="symbol-height" type="xs:positiveInteger" use="optional" />
|
||||
<xs:attribute name="symbol-percent" type="xs:positiveInteger" use="optional" />
|
||||
<xs:attribute name="fill" default="#000000" type="tns:color" use="optional" />
|
||||
<xs:attribute name="stroke" default="#00000000" type="tns:color" use="optional" />
|
||||
<xs:attribute name="stroke-width" default="0" type="tns:nonNegativeFloat" use="optional" />
|
||||
@@ -143,11 +153,15 @@
|
||||
<xs:attribute name="fill" default="#000000" type="tns:color" use="optional" />
|
||||
<xs:attribute name="stroke" default="#000000" type="tns:color" use="optional" />
|
||||
<xs:attribute name="stroke-width" default="0" type="tns:nonNegativeFloat" use="optional" />
|
||||
<!-- polygon area expressed as a ratio to tile area, e.g. 0.1 for 10% of tile area -->
|
||||
<xs:attribute name="area-size" default="0" type="tns:nonNegativeFloat" use="optional" />
|
||||
<!-- priority for label placement, 0 = highest priority -->
|
||||
<xs:attribute name="priority" default="0" type="xs:integer" use="optional" />
|
||||
|
||||
<!-- symbol src name in atlas -->
|
||||
<!-- symbol src name -->
|
||||
<xs:attribute name="symbol" type="tns:src" use="optional" />
|
||||
<xs:attribute name="symbol-width" type="xs:positiveInteger" use="optional" />
|
||||
<xs:attribute name="symbol-height" type="xs:positiveInteger" use="optional" />
|
||||
<xs:attribute name="symbol-percent" type="xs:positiveInteger" use="optional" />
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="circle">
|
||||
@@ -169,6 +183,9 @@
|
||||
<xs:attribute name="use" default="0" type="xs:string" use="optional" />
|
||||
|
||||
<xs:attribute name="src" type="tns:src" use="optional" />
|
||||
<xs:attribute name="symbol-width" type="xs:positiveInteger" use="optional" />
|
||||
<xs:attribute name="symbol-height" type="xs:positiveInteger" use="optional" />
|
||||
<xs:attribute name="symbol-percent" type="xs:positiveInteger" use="optional" />
|
||||
<xs:attribute name="stroke" default="#000000" type="tns:color" use="optional" />
|
||||
<xs:attribute name="width" default="0" type="xs:float" use="optional" />
|
||||
<!-- minimum scaled width to draw outline -->
|
||||
@@ -179,6 +196,8 @@
|
||||
<xs:attribute name="fade" default="-1" type="xs:integer" use="optional" />
|
||||
<xs:attribute name="blur" default="-1" type="xs:float" use="optional" />
|
||||
<xs:attribute name="fix" default="false" type="xs:boolean" use="optional" />
|
||||
<xs:attribute name="repeat-gap" default="200" type="xs:float" use="optional" />
|
||||
<xs:attribute name="repeat-start" default="30" type="xs:float" use="optional" />
|
||||
|
||||
<!-- stipple repeat in 'pixel' -->
|
||||
<xs:attribute name="stipple" default="0" type="xs:integer" use="optional" />
|
||||
@@ -189,21 +208,6 @@
|
||||
|
||||
</xs:complexType>
|
||||
|
||||
<!--<xs:complexType name="outline">
|
||||
<xs:attribute name="cat" type="xs:string" use="optional" />
|
||||
<xs:attribute name="name" default="0" type="xs:string" use="optional" />
|
||||
<xs:attribute name="src" type="tns:src" use="optional" />
|
||||
<xs:attribute name="stroke" default="#000000" type="tns:color" use="optional" />
|
||||
<xs:attribute name="stroke-width" default="0" type="tns:nonNegativeFloat" use="optional" />
|
||||
</xs:complexType>-->
|
||||
|
||||
<xs:complexType name="lineSymbol">
|
||||
<xs:attribute name="cat" type="xs:string" use="optional" />
|
||||
<xs:attribute name="src" type="tns:src" use="required" />
|
||||
<xs:attribute name="align-center" default="false" type="xs:boolean" use="optional" />
|
||||
<xs:attribute name="repeat" default="false" type="xs:boolean" use="optional" />
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="text">
|
||||
<xs:attribute name="cat" type="xs:string" use="optional" />
|
||||
|
||||
@@ -219,6 +223,8 @@
|
||||
<xs:attribute name="stroke" default="#000000" type="tns:color" use="optional" />
|
||||
<xs:attribute name="stroke-width" default="0" type="tns:nonNegativeFloat" use="optional" />
|
||||
<xs:attribute name="caption" default="false" type="xs:boolean" use="optional" />
|
||||
<!-- polygon area expressed as a ratio to tile area, e.g. 0.1 for 10% of tile area -->
|
||||
<xs:attribute name="area-size" default="0" type="tns:nonNegativeFloat" use="optional" />
|
||||
<!-- priority for label placement, 0 = highest priority -->
|
||||
<xs:attribute name="priority" default="0" type="xs:integer" use="optional" />
|
||||
</xs:complexType>
|
||||
@@ -226,6 +232,12 @@
|
||||
<xs:complexType name="symbol">
|
||||
<xs:attribute name="cat" type="xs:string" use="optional" />
|
||||
<xs:attribute name="src" type="tns:src" use="required" />
|
||||
<xs:attribute name="symbol-width" type="xs:positiveInteger" use="optional" />
|
||||
<xs:attribute name="symbol-height" type="xs:positiveInteger" use="optional" />
|
||||
<xs:attribute name="symbol-percent" type="xs:positiveInteger" use="optional" />
|
||||
<xs:attribute name="repeat" default="false" type="xs:boolean" use="optional" />
|
||||
<xs:attribute name="repeat-gap" default="200" type="xs:float" use="optional" />
|
||||
<xs:attribute name="repeat-start" default="30" type="xs:float" use="optional" />
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="extrusion">
|
||||
@@ -233,6 +245,8 @@
|
||||
<xs:attribute name="line-color" type="tns:color" use="optional" />
|
||||
<xs:attribute name="side-color" type="tns:color" use="required" />
|
||||
<xs:attribute name="top-color" type="tns:color" use="required" />
|
||||
<!-- 12m default -->
|
||||
<xs:attribute name="default-height" default="12" type="xs:positiveInteger" use="optional" />
|
||||
</xs:complexType>
|
||||
|
||||
<!-- match elements -->
|
||||
@@ -246,7 +260,7 @@
|
||||
<xs:element name="circle" type="tns:circle" />
|
||||
<xs:element name="line" type="tns:line" />
|
||||
<xs:element name="outline" type="tns:line" />
|
||||
<xs:element name="lineSymbol" type="tns:lineSymbol" />
|
||||
<xs:element name="lineSymbol" type="tns:line" />
|
||||
<xs:element name="text" type="tns:text" />
|
||||
<xs:element name="extrusion" type="tns:extrusion" />
|
||||
<xs:element name="symbol" type="tns:symbol" />
|
||||
|
||||
@@ -1,19 +1,23 @@
|
||||
rootProject.name = 'vtm-parent'
|
||||
include ':vtm'
|
||||
include ':vtm-http'
|
||||
include ':vtm-jts'
|
||||
include ':vtm-tests'
|
||||
include ':vtm-extras'
|
||||
include ':vtm-android'
|
||||
include ':vtm-android-example'
|
||||
include ':vtm-themes'
|
||||
include ':vtm-gdx'
|
||||
include ':vtm-desktop'
|
||||
include ':vtm-android-gdx'
|
||||
//include ':vtm-web'
|
||||
//include ':vtm-web-app'
|
||||
//include ':vtm-web-js'
|
||||
include ':vtm-jeo'
|
||||
include ':vtm-playground'
|
||||
include ':vtm-ios'
|
||||
include ':vtm-app'
|
||||
include ':vtm-desktop'
|
||||
include ':vtm-extras'
|
||||
include ':vtm-gdx'
|
||||
include ':vtm-http'
|
||||
include ':vtm-ios'
|
||||
include ':vtm-ios-example'
|
||||
include ':vtm-jeo'
|
||||
include ':vtm-json'
|
||||
include ':vtm-jts'
|
||||
include ':vtm-mvt'
|
||||
include ':vtm-playground'
|
||||
include ':vtm-tests'
|
||||
include ':vtm-theme-comparator'
|
||||
include ':vtm-themes'
|
||||
include ':vtm-web'
|
||||
include ':vtm-web-app'
|
||||
//include ':vtm-web-js'
|
||||
|
||||
@@ -8,16 +8,12 @@
|
||||
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
|
||||
<uses-permission android:name="android.permission.INTERNET" />
|
||||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
||||
|
||||
<uses-sdk
|
||||
android:minSdkVersion="10"
|
||||
android:targetSdkVersion="22" />
|
||||
|
||||
<application
|
||||
android:allowBackup="true"
|
||||
android:icon="@drawable/ic_launcher"
|
||||
android:label="@string/app_name">
|
||||
android:icon="@mipmap/ic_launcher"
|
||||
android:label="@string/app_name"
|
||||
android:usesCleartextTraffic="true">
|
||||
<activity
|
||||
android:name=".Samples"
|
||||
android:configChanges="keyboardHidden|orientation|screenSize">
|
||||
@@ -27,10 +23,31 @@
|
||||
</intent-filter>
|
||||
</activity>
|
||||
<activity
|
||||
android:name=".BitmapTileMapActivity"
|
||||
android:name=".Animator2Activity"
|
||||
android:configChanges="keyboardHidden|orientation|screenSize" />
|
||||
<activity
|
||||
android:name=".JeoIndoorMapActivity"
|
||||
android:name=".AtlasMarkerOverlayActivity"
|
||||
android:configChanges="keyboardHidden|orientation|screenSize" />
|
||||
<activity
|
||||
android:name=".AtlasMultiTextureActivity"
|
||||
android:configChanges="keyboardHidden|orientation|screenSize" />
|
||||
<activity
|
||||
android:name=".AtlasThemeActivity"
|
||||
android:configChanges="keyboardHidden|orientation|screenSize" />
|
||||
<activity
|
||||
android:name=".BitmapTileActivity"
|
||||
android:configChanges="keyboardHidden|orientation|screenSize" />
|
||||
<activity
|
||||
android:name=".ClusterMarkerOverlayActivity"
|
||||
android:configChanges="keyboardHidden|orientation|screenSize" />
|
||||
<activity
|
||||
android:name=".GettingStarted"
|
||||
android:configChanges="keyboardHidden|orientation|screenSize" />
|
||||
<activity
|
||||
android:name=".GdxActivity"
|
||||
android:configChanges="keyboardHidden|orientation|screenSize" />
|
||||
<activity
|
||||
android:name=".JeoIndoorActivity"
|
||||
android:configChanges="keyboardHidden|orientation|screenSize" />
|
||||
<activity
|
||||
android:name=".LayerGroupActivity"
|
||||
@@ -39,25 +56,73 @@
|
||||
android:name=".LineTexActivity"
|
||||
android:configChanges="keyboardHidden|orientation|screenSize" />
|
||||
<activity
|
||||
android:name=".MapsforgeMapActivity"
|
||||
android:name=".LocationActivity"
|
||||
android:configChanges="keyboardHidden|orientation|screenSize" />
|
||||
<activity
|
||||
android:name=".MapsforgeMapActivity$MapFilePicker"
|
||||
android:name=".LocationTextureActivity"
|
||||
android:configChanges="keyboardHidden|orientation|screenSize" />
|
||||
<activity
|
||||
android:name=".MapEventLayer2Activity"
|
||||
android:configChanges="keyboardHidden|orientation|screenSize" />
|
||||
<activity
|
||||
android:name=".MapsforgeActivity"
|
||||
android:configChanges="keyboardHidden|orientation|screenSize" />
|
||||
<activity
|
||||
android:name=".MapsforgeActivity$MapFilePicker"
|
||||
android:configChanges="keyboardHidden|orientation|screenSize" />
|
||||
<activity
|
||||
android:name=".MapsforgeActivity$ThemeFilePicker"
|
||||
android:configChanges="keyboardHidden|orientation|screenSize" />
|
||||
<activity
|
||||
android:name=".MapsforgePolyLabelActivity"
|
||||
android:configChanges="keyboardHidden|orientation|screenSize" />
|
||||
<activity
|
||||
android:name=".MapsforgeS3DBActivity"
|
||||
android:configChanges="keyboardHidden|orientation|screenSize" />
|
||||
<activity
|
||||
android:name=".MapsforgeStyleActivity"
|
||||
android:configChanges="keyboardHidden|orientation|screenSize" />
|
||||
<activity
|
||||
android:name=".MapzenGeojsonActivity"
|
||||
android:configChanges="keyboardHidden|orientation|screenSize" />
|
||||
<activity
|
||||
android:name=".MapzenMvtActivity"
|
||||
android:configChanges="keyboardHidden|orientation|screenSize" />
|
||||
<activity
|
||||
android:name=".MarkerOverlayActivity"
|
||||
android:configChanges="keyboardHidden|orientation|screenSize" />
|
||||
<activity
|
||||
android:name=".MultiMapActivity"
|
||||
android:name=".MultiMapViewActivity"
|
||||
android:configChanges="keyboardHidden|orientation|screenSize" />
|
||||
<activity
|
||||
android:name=".OsmJsonMapActivity"
|
||||
android:name=".NextzenGeojsonActivity"
|
||||
android:configChanges="keyboardHidden|orientation|screenSize" />
|
||||
<activity
|
||||
android:name=".NextzenMvtActivity"
|
||||
android:configChanges="keyboardHidden|orientation|screenSize" />
|
||||
<activity
|
||||
android:name=".OpenMapTilesMvtActivity"
|
||||
android:configChanges="keyboardHidden|orientation|screenSize" />
|
||||
<activity
|
||||
android:name=".OSciMapS3DBActivity"
|
||||
android:configChanges="keyboardHidden|orientation|screenSize" />
|
||||
<activity
|
||||
android:name=".PathOverlayActivity"
|
||||
android:configChanges="keyboardHidden|orientation|screenSize" />
|
||||
<activity
|
||||
android:name=".S3DBMapActivity"
|
||||
android:name=".PoiSearchActivity"
|
||||
android:configChanges="keyboardHidden|orientation|screenSize" />
|
||||
<activity
|
||||
android:name=".PoiSearchActivity$PoiFilePicker"
|
||||
android:configChanges="keyboardHidden|orientation|screenSize" />
|
||||
<activity
|
||||
android:name=".POTTextureActivity"
|
||||
android:configChanges="keyboardHidden|orientation|screenSize" />
|
||||
<activity
|
||||
android:name=".ReverseGeocodeActivity"
|
||||
android:configChanges="keyboardHidden|orientation|screenSize" />
|
||||
<activity
|
||||
android:name=".RotateMarkerOverlayActivity"
|
||||
android:configChanges="keyboardHidden|orientation|screenSize" />
|
||||
<activity
|
||||
android:name=".SimpleMapActivity"
|
||||
@@ -66,7 +131,7 @@
|
||||
android:name=".ThemeStylerActivity"
|
||||
android:configChanges="keyboardHidden|orientation|screenSize" />
|
||||
<activity
|
||||
android:name=".VectorLayerMapActivity"
|
||||
android:name=".VectorLayerActivity"
|
||||
android:configChanges="keyboardHidden|orientation|screenSize" />
|
||||
</application>
|
||||
|
||||
|
||||
50
vtm-android-example/assets/vtm/stylemenu.xml
Normal file
@@ -0,0 +1,50 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<rendertheme xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" map-background="#fffcfa"
|
||||
version="1" xmlns="http://opensciencemap.org/rendertheme"
|
||||
xsi:schemaLocation="http://opensciencemap.org/rendertheme https://raw.githubusercontent.com/mapsforge/vtm/master/resources/rendertheme.xsd">
|
||||
|
||||
<stylemenu defaultlang="en" defaultvalue="1" id="menu">
|
||||
<layer enabled="true" id="nature">
|
||||
<name lang="de" value="Natur" />
|
||||
<name lang="en" value="Nature" />
|
||||
<name lang="es" value="Naturaleza" />
|
||||
<name lang="fr" value="Nature" />
|
||||
<cat id="nature" />
|
||||
</layer>
|
||||
|
||||
<layer id="base">
|
||||
<cat id="sea" />
|
||||
<cat id="land" />
|
||||
</layer>
|
||||
|
||||
<!-- Show nature layers (enabled by default) -->
|
||||
<layer id="1" parent="base" visible="true">
|
||||
<name lang="de" value="1" />
|
||||
<name lang="en" value="1" />
|
||||
<name lang="es" value="1" />
|
||||
<name lang="fr" value="1" />
|
||||
<overlay id="nature" />
|
||||
</layer>
|
||||
|
||||
<!-- Don't show nature layers -->
|
||||
<layer id="2" parent="base" visible="true">
|
||||
<name lang="de" value="2" />
|
||||
<name lang="en" value="2" />
|
||||
<name lang="es" value="2" />
|
||||
<name lang="fr" value="2" />
|
||||
</layer>
|
||||
</stylemenu>
|
||||
|
||||
<m cat="sea" e="way" k="natural" v="issea|sea">
|
||||
<area fill="#b5d6f1" mesh="true" />
|
||||
</m>
|
||||
|
||||
<m cat="land" e="way" k="natural" v="nosea">
|
||||
<area fill="#f8f8f8" mesh="true" />
|
||||
</m>
|
||||
|
||||
<m cat="nature" e="way" k="natural|landuse" v="forest|wood">
|
||||
<area fill="#83aa5b" />
|
||||
</m>
|
||||
|
||||
</rendertheme>
|
||||
@@ -1,12 +1,31 @@
|
||||
apply plugin: 'com.android.application'
|
||||
|
||||
/*
|
||||
configurations.all {
|
||||
// Check latest snapshot on every build
|
||||
resolutionStrategy.cacheChangingModulesFor 0, 'seconds'
|
||||
}
|
||||
*/
|
||||
|
||||
dependencies {
|
||||
compile project(':vtm-android')
|
||||
compile project(':vtm-extras')
|
||||
compile project(':vtm-jeo')
|
||||
compile project(':vtm-jts')
|
||||
compile project(':vtm-themes')
|
||||
compile 'com.noveogroup.android:android-logger:1.3.6'
|
||||
implementation project(':vtm-android')
|
||||
implementation project(':vtm-http')
|
||||
implementation project(':vtm-jeo')
|
||||
implementation project(':vtm-json')
|
||||
implementation project(':vtm-jts')
|
||||
implementation project(':vtm-mvt')
|
||||
implementation project(':vtm-themes')
|
||||
implementation "org.slf4j:slf4j-android:$slf4jVersion"
|
||||
|
||||
implementation project(':vtm-android-gdx')
|
||||
implementation project(':vtm-gdx')
|
||||
implementation "com.badlogicgames.gdx:gdx-backend-android:$gdxVersion"
|
||||
|
||||
implementation 'org.mapsforge:mapsforge-poi-android:master-SNAPSHOT'
|
||||
implementation 'org.mapsforge:sqlite-android:master-SNAPSHOT:natives-armeabi-v7a'
|
||||
implementation 'org.mapsforge:sqlite-android:master-SNAPSHOT:natives-arm64-v8a'
|
||||
implementation 'org.mapsforge:sqlite-android:master-SNAPSHOT:natives-x86'
|
||||
implementation 'org.mapsforge:sqlite-android:master-SNAPSHOT:natives-x86_64'
|
||||
}
|
||||
|
||||
android {
|
||||
@@ -22,6 +41,7 @@ android {
|
||||
versionCode versionCode()
|
||||
versionName versionName()
|
||||
minSdkVersion androidMinSdk()
|
||||
targetSdkVersion androidTargetSdk()
|
||||
}
|
||||
|
||||
sourceSets {
|
||||
@@ -34,6 +54,9 @@ android {
|
||||
file("${rootDir}/vtm-android/natives").eachDir() { dir ->
|
||||
jniLibs.srcDirs += "${dir.path}/lib"
|
||||
}
|
||||
file("${rootDir}/vtm-android-gdx/natives").eachDir() { dir ->
|
||||
jniLibs.srcDirs += "${dir.path}/lib"
|
||||
}
|
||||
}
|
||||
debug.setRoot('build-types/debug')
|
||||
release.setRoot('build-types/release')
|
||||
@@ -46,6 +69,14 @@ android {
|
||||
exclude 'META-INF/LICENSE'
|
||||
exclude 'META-INF/NOTICE'
|
||||
}
|
||||
|
||||
/*buildTypes {
|
||||
all {
|
||||
minifyEnabled true
|
||||
useProguard false
|
||||
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
task run(dependsOn: 'installDebug') {
|
||||
|
||||
10
vtm-android-example/proguard-rules.pro
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
-keep class com.** { *; }
|
||||
-dontwarn com.**
|
||||
-keep class jsqlite.** { *; }
|
||||
-dontwarn jsqlite.**
|
||||
-keep class okhttp3.** { *; }
|
||||
-dontwarn okhttp3.**
|
||||
-keep class okio.** { *; }
|
||||
-dontwarn okio.**
|
||||
-keep class org.** { *; }
|
||||
-dontwarn org.**
|
||||
BIN
vtm-android-example/res/drawable-hdpi/marker_green.png
Normal file
|
After Width: | Height: | Size: 3.2 KiB |
BIN
vtm-android-example/res/drawable-hdpi/marker_red.png
Normal file
|
After Width: | Height: | Size: 3.5 KiB |
BIN
vtm-android-example/res/drawable-mdpi/marker_green.png
Normal file
|
After Width: | Height: | Size: 1.9 KiB |
BIN
vtm-android-example/res/drawable-mdpi/marker_red.png
Normal file
|
After Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 41 KiB |
11
vtm-android-example/res/layout/activity_map_fragment.xml
Normal file
@@ -0,0 +1,11 @@
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical">
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/fragment_container"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" />
|
||||
|
||||
</LinearLayout>
|
||||
11
vtm-android-example/res/layout/fragment_map.xml
Normal file
@@ -0,0 +1,11 @@
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@android:color/white">
|
||||
|
||||
<org.oscim.android.MapView
|
||||
android:id="@+id/mapView"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" />
|
||||
|
||||
</RelativeLayout>
|
||||
@@ -1,7 +0,0 @@
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item
|
||||
android:id="@+id/menu_settings"
|
||||
android:title="@string/menu_settings"
|
||||
android:orderInCategory="100"
|
||||
android:showAsAction="never" />
|
||||
</menu>
|
||||
16
vtm-android-example/res/menu/style_menu.xml
Normal file
@@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
|
||||
<group
|
||||
android:id="@+id/styles"
|
||||
android:checkableBehavior="single">
|
||||
<item
|
||||
android:id="@+id/style_1"
|
||||
android:checked="true"
|
||||
android:title="@string/style_1" />
|
||||
<item
|
||||
android:id="@+id/style_2"
|
||||
android:title="@string/style_2" />
|
||||
</group>
|
||||
|
||||
</menu>
|
||||
@@ -7,26 +7,27 @@
|
||||
<item
|
||||
android:id="@+id/theme_default"
|
||||
android:checked="true"
|
||||
android:showAsAction="never"
|
||||
android:title="@string/theme_default"></item>
|
||||
<item
|
||||
android:id="@+id/theme_tubes"
|
||||
android:showAsAction="never"
|
||||
android:title="@string/theme_tubes"></item>
|
||||
android:title="@string/theme_default" />
|
||||
<item
|
||||
android:id="@+id/theme_osmarender"
|
||||
android:showAsAction="never"
|
||||
android:title="@string/theme_osmarender"></item>
|
||||
android:title="@string/theme_osmarender" />
|
||||
<item
|
||||
android:id="@+id/theme_osmagray"
|
||||
android:title="@string/theme_osmagray" />
|
||||
<item
|
||||
android:id="@+id/theme_tubes"
|
||||
android:title="@string/theme_tubes" />
|
||||
<item
|
||||
android:id="@+id/theme_newtron"
|
||||
android:showAsAction="never"
|
||||
android:title="@string/theme_newtron"></item>
|
||||
android:title="@string/theme_newtron" />
|
||||
<item
|
||||
android:id="@+id/theme_external"
|
||||
android:title="@string/theme_external" />
|
||||
</group>
|
||||
|
||||
<item
|
||||
android:id="@+id/gridlayer"
|
||||
android:showAsAction="never"
|
||||
android:checkable="true"
|
||||
android:title="@string/menu_gridlayer"></item>
|
||||
android:title="@string/menu_gridlayer" />
|
||||
|
||||
</menu>
|
||||
</menu>
|
||||
|
||||
BIN
vtm-android-example/res/mipmap-hdpi/ic_launcher.png
Normal file
|
After Width: | Height: | Size: 8.1 KiB |
BIN
vtm-android-example/res/mipmap-mdpi/ic_launcher.png
Normal file
|
After Width: | Height: | Size: 6.0 KiB |
BIN
vtm-android-example/res/mipmap-xhdpi/ic_launcher.png
Normal file
|
After Width: | Height: | Size: 10 KiB |
BIN
vtm-android-example/res/mipmap-xxhdpi/ic_launcher.png
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
vtm-android-example/res/mipmap-xxxhdpi/ic_launcher.png
Normal file
|
After Width: | Height: | Size: 20 KiB |
19
vtm-android-example/res/raw/arrow.svg
Normal file
@@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="utf-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" baseProfile="full" width="249.667" height="254.667" viewBox="0 0 249.67 254.67" enable-background="new 0 0 249.67 254.67" xml:space="preserve">
|
||||
<linearGradient id="SVGID_Fill1_" gradientUnits="objectBoundingBox" x1="-0.0161654" y1="0.500001" x2="1.01616" y2="0.500001">
|
||||
<stop offset="0.0344828" stop-color="#FF0000" stop-opacity="1"/>
|
||||
<stop offset="0.5" stop-color="#FF0000" stop-opacity="1"/>
|
||||
<stop offset="1" stop-color="#F8E6E6" stop-opacity="1"/>
|
||||
</linearGradient>
|
||||
<path fill="url(#SVGID_Fill1_)" stroke-width="5" stroke-linejoin="round" stroke="#000000" stroke-opacity="1" d="M 47.5002,250.834L 124.833,2.50006L 202.167,252.167L 124.167,199.167L 47.5002,250.834 Z "/>
|
||||
<linearGradient id="SVGID_Fill2_" gradientUnits="objectBoundingBox" x1="0.0255055" y1="0.518124" x2="0.986547" y2="0.518124" gradientTransform="rotate(42.130627 0.025506 0.518124)">
|
||||
<stop offset="0.301724" stop-color="#ECECEC" stop-opacity="0.345098"/>
|
||||
<stop offset="0.62931" stop-color="#1C1C1C" stop-opacity="0.776471"/>
|
||||
<stop offset="0.689655" stop-color="#000000" stop-opacity="0.423529"/>
|
||||
<stop offset="1" stop-color="#000000" stop-opacity="0.286275"/>
|
||||
</linearGradient>
|
||||
<filter id="Filter_GaussianBlur1_" filterUnits="userSpaceOnUse">
|
||||
<feGaussianBlur stdDeviation="1.88976"/>
|
||||
</filter>
|
||||
<path fill="url(#SVGID_Fill2_)" stroke-width="0.2" stroke-linejoin="round" filter="url(#Filter_GaussianBlur1_)" d="M 56.8333,241.5L 124.833,31.0001L 123.5,195.167L 56.8333,241.5 Z "/>
|
||||
</svg>
|
||||
@@ -1,11 +1,12 @@
|
||||
<resources>
|
||||
|
||||
<string name="app_name">VTM Samples</string>
|
||||
<string name="menu_settings">Settings</string>
|
||||
<string name="theme_default">Default</string>
|
||||
<string name="theme_tubes">Tubes</string>
|
||||
<string name="theme_osmarender">Osmarender</string>
|
||||
<string name="theme_osmagray">Osmagray</string>
|
||||
<string name="theme_tubes">Tubes</string>
|
||||
<string name="theme_newtron">NewTron</string>
|
||||
<string name="theme_external">External theme</string>
|
||||
<string name="ok">OK</string>
|
||||
<string name="cancel">Cancel</string>
|
||||
<string name="error">Error</string>
|
||||
@@ -14,6 +15,9 @@
|
||||
<string name="styler_mode_area">Area</string>
|
||||
<string name="styler_mode_outline">Outline</string>
|
||||
<string name="styler_controls_toggle">Controls</string>
|
||||
<string name="menu_gridlayer">Gridlayer</string>
|
||||
<string name="style_1">Show nature</string>
|
||||
<string name="style_2">Hide nature</string>
|
||||
<string name="menu_gridlayer">Grid</string>
|
||||
<string name="dialog_reverse_geocoding_title">Reverse Geocoding</string>
|
||||
|
||||
</resources>
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
root=DEBUG:%logger
|
||||
@@ -1,6 +1,7 @@
|
||||
/*
|
||||
* Copyright 2010, 2011, 2012 mapsforge.org
|
||||
* Copyright 2016 devemux86
|
||||
* Copyright 2016-2018 devemux86
|
||||
* Copyright 2017 Longri
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it under the
|
||||
* terms of the GNU Lesser General Public License as published by the Free Software
|
||||
@@ -21,6 +22,7 @@ import org.oscim.theme.XmlThemeBuilder;
|
||||
import org.oscim.tiling.TileSource.OpenResult;
|
||||
import org.xml.sax.InputSource;
|
||||
import org.xml.sax.XMLReader;
|
||||
import org.xml.sax.helpers.DefaultHandler;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
@@ -34,9 +36,10 @@ public final class ValidRenderTheme implements ValidFileFilter {
|
||||
|
||||
@Override
|
||||
public boolean accept(File file) {
|
||||
|
||||
try {
|
||||
ThemeFile theme = new ExternalRenderTheme(file.getAbsolutePath());
|
||||
XmlThemeBuilder renderThemeHandler = new XmlThemeBuilder(theme);
|
||||
DefaultHandler renderThemeHandler = new XmlThemeBuilder(theme);
|
||||
XMLReader xmlReader = SAXParserFactory.newInstance().newSAXParser().getXMLReader();
|
||||
xmlReader.setContentHandler(renderThemeHandler);
|
||||
xmlReader.parse(new InputSource(theme.getRenderThemeAsStream()));
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
/*
|
||||
* Copyright 2018 devemux86
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it under the
|
||||
* terms of the GNU Lesser General Public License as published by the Free Software
|
||||
* Foundation, either version 3 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License along with
|
||||
* this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package org.oscim.android.test;
|
||||
|
||||
import org.oscim.utils.Parameters;
|
||||
|
||||
public class Animator2Activity extends MarkerOverlayActivity {
|
||||
|
||||
public Animator2Activity() {
|
||||
super();
|
||||
Parameters.ANIMATOR2 = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDestroy() {
|
||||
super.onDestroy();
|
||||
|
||||
Parameters.ANIMATOR2 = false;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,91 @@
|
||||
/*
|
||||
* Copyright 2014 Hannes Janetzek
|
||||
* Copyright 2016-2018 devemux86
|
||||
* Copyright 2017 Longri
|
||||
*
|
||||
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it under the
|
||||
* terms of the GNU Lesser General Public License as published by the Free Software
|
||||
* Foundation, either version 3 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License along with
|
||||
* this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package org.oscim.android.test;
|
||||
|
||||
import org.oscim.backend.canvas.Bitmap;
|
||||
import org.oscim.core.GeoPoint;
|
||||
import org.oscim.layers.marker.ItemizedLayer;
|
||||
import org.oscim.layers.marker.MarkerItem;
|
||||
import org.oscim.layers.marker.MarkerSymbol;
|
||||
import org.oscim.layers.marker.MarkerSymbol.HotspotPlace;
|
||||
import org.oscim.layers.tile.bitmap.BitmapTileLayer;
|
||||
import org.oscim.renderer.atlas.TextureAtlas;
|
||||
import org.oscim.renderer.atlas.TextureRegion;
|
||||
import org.oscim.tiling.TileSource;
|
||||
import org.oscim.tiling.source.OkHttpEngine;
|
||||
import org.oscim.tiling.source.bitmap.DefaultSources;
|
||||
import org.oscim.utils.TextureAtlasUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
|
||||
import static org.oscim.android.canvas.AndroidGraphics.drawableToBitmap;
|
||||
|
||||
public class AtlasMarkerOverlayActivity extends MarkerOverlayActivity {
|
||||
|
||||
@Override
|
||||
void createLayers() {
|
||||
// Map events receiver
|
||||
mMap.layers().add(new MapEventsReceiver(mMap));
|
||||
|
||||
TileSource tileSource = DefaultSources.OPENSTREETMAP
|
||||
.httpFactory(new OkHttpEngine.OkHttpFactory())
|
||||
.build();
|
||||
mMap.layers().add(new BitmapTileLayer(mMap, tileSource));
|
||||
|
||||
Bitmap bitmapPoi = drawableToBitmap(getResources().getDrawable(R.drawable.marker_poi));
|
||||
Bitmap bitmapFocus = drawableToBitmap(getResources().getDrawable(R.drawable.marker_focus));
|
||||
|
||||
// Create Atlas from Bitmaps
|
||||
java.util.Map<Object, Bitmap> inputMap = new LinkedHashMap<>();
|
||||
java.util.Map<Object, TextureRegion> regionsMap = new LinkedHashMap<>();
|
||||
List<TextureAtlas> atlasList = new ArrayList<>();
|
||||
|
||||
inputMap.put("poi", bitmapPoi);
|
||||
inputMap.put("focus", bitmapFocus);
|
||||
|
||||
// Bitmaps will never used any more
|
||||
// With iOS we must flip the Y-Axis
|
||||
TextureAtlasUtils.createTextureRegions(inputMap, regionsMap, atlasList, true, false);
|
||||
|
||||
MarkerSymbol symbol;
|
||||
if (BILLBOARDS)
|
||||
symbol = new MarkerSymbol(regionsMap.get("poi"), HotspotPlace.BOTTOM_CENTER);
|
||||
else
|
||||
symbol = new MarkerSymbol(regionsMap.get("poi"), HotspotPlace.CENTER, false);
|
||||
|
||||
if (BILLBOARDS)
|
||||
mFocusMarker = new MarkerSymbol(regionsMap.get("focus"), HotspotPlace.BOTTOM_CENTER);
|
||||
else
|
||||
mFocusMarker = new MarkerSymbol(regionsMap.get("focus"), HotspotPlace.CENTER, false);
|
||||
|
||||
mMarkerLayer = new ItemizedLayer<>(mMap, new ArrayList<MarkerItem>(), symbol, this);
|
||||
mMap.layers().add(mMarkerLayer);
|
||||
|
||||
List<MarkerItem> pts = new ArrayList<>();
|
||||
|
||||
for (double lat = -90; lat <= 90; lat += 5) {
|
||||
for (double lon = -180; lon <= 180; lon += 5)
|
||||
pts.add(new MarkerItem(lat + "/" + lon, "", new GeoPoint(lat, lon)));
|
||||
}
|
||||
|
||||
mMarkerLayer.addItems(pts);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,113 @@
|
||||
/*
|
||||
* Copyright 2014 Hannes Janetzek
|
||||
* Copyright 2016-2018 devemux86
|
||||
* Copyright 2017 Longri
|
||||
*
|
||||
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it under the
|
||||
* terms of the GNU Lesser General Public License as published by the Free Software
|
||||
* Foundation, either version 3 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License along with
|
||||
* this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package org.oscim.android.test;
|
||||
|
||||
import android.widget.Toast;
|
||||
|
||||
import org.oscim.backend.CanvasAdapter;
|
||||
import org.oscim.backend.canvas.Bitmap;
|
||||
import org.oscim.backend.canvas.Canvas;
|
||||
import org.oscim.backend.canvas.Color;
|
||||
import org.oscim.backend.canvas.Paint;
|
||||
import org.oscim.core.GeoPoint;
|
||||
import org.oscim.layers.marker.ItemizedLayer;
|
||||
import org.oscim.layers.marker.MarkerItem;
|
||||
import org.oscim.layers.marker.MarkerSymbol;
|
||||
import org.oscim.layers.marker.MarkerSymbol.HotspotPlace;
|
||||
import org.oscim.layers.tile.bitmap.BitmapTileLayer;
|
||||
import org.oscim.renderer.atlas.TextureAtlas;
|
||||
import org.oscim.renderer.atlas.TextureRegion;
|
||||
import org.oscim.tiling.TileSource;
|
||||
import org.oscim.tiling.source.OkHttpEngine;
|
||||
import org.oscim.tiling.source.bitmap.DefaultSources;
|
||||
import org.oscim.utils.TextureAtlasUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
|
||||
public class AtlasMultiTextureActivity extends MarkerOverlayActivity {
|
||||
|
||||
@Override
|
||||
void createLayers() {
|
||||
// Map events receiver
|
||||
mMap.layers().add(new MapEventsReceiver(mMap));
|
||||
|
||||
TileSource tileSource = DefaultSources.OPENSTREETMAP
|
||||
.httpFactory(new OkHttpEngine.OkHttpFactory())
|
||||
.build();
|
||||
mMap.layers().add(new BitmapTileLayer(mMap, tileSource));
|
||||
|
||||
// Create Atlas from Bitmaps
|
||||
java.util.Map<Object, Bitmap> inputMap = new LinkedHashMap<>();
|
||||
java.util.Map<Object, TextureRegion> regionsMap = new LinkedHashMap<>();
|
||||
List<TextureAtlas> atlasList = new ArrayList<>();
|
||||
|
||||
Canvas canvas = CanvasAdapter.newCanvas();
|
||||
Paint paint = CanvasAdapter.newPaint();
|
||||
paint.setTypeface(Paint.FontFamily.DEFAULT, Paint.FontStyle.NORMAL);
|
||||
paint.setTextSize(12 * CanvasAdapter.getScale());
|
||||
paint.setStrokeWidth(2 * CanvasAdapter.getScale());
|
||||
paint.setColor(Color.BLACK);
|
||||
List<MarkerItem> pts = new ArrayList<>();
|
||||
for (double lat = -90; lat <= 90; lat += 10) {
|
||||
for (double lon = -180; lon <= 180; lon += 10) {
|
||||
String title = lat + "/" + lon;
|
||||
pts.add(new MarkerItem(title, "", new GeoPoint(lat, lon)));
|
||||
|
||||
Bitmap bmp = CanvasAdapter.newBitmap((int) (40 * CanvasAdapter.getScale()), (int) (40 * CanvasAdapter.getScale()), 0);
|
||||
canvas.setBitmap(bmp);
|
||||
canvas.fillColor(Color.GREEN);
|
||||
|
||||
canvas.drawText(Double.toString(lat), 3 * CanvasAdapter.getScale(), 17 * CanvasAdapter.getScale(), paint);
|
||||
canvas.drawText(Double.toString(lon), 3 * CanvasAdapter.getScale(), 35 * CanvasAdapter.getScale(), paint);
|
||||
inputMap.put(title, bmp);
|
||||
}
|
||||
}
|
||||
|
||||
// Bitmaps will never used any more
|
||||
// With iOS we must flip the Y-Axis
|
||||
TextureAtlasUtils.createTextureRegions(inputMap, regionsMap, atlasList, true, false);
|
||||
|
||||
mMarkerLayer = new ItemizedLayer<>(mMap, new ArrayList<MarkerItem>(), (MarkerSymbol) null, this);
|
||||
mMap.layers().add(mMarkerLayer);
|
||||
|
||||
mMarkerLayer.addItems(pts);
|
||||
|
||||
// set all markers
|
||||
for (MarkerItem item : pts) {
|
||||
MarkerSymbol markerSymbol = new MarkerSymbol(regionsMap.get(item.getTitle()), HotspotPlace.BOTTOM_CENTER);
|
||||
item.setMarker(markerSymbol);
|
||||
}
|
||||
|
||||
Toast.makeText(this, "Atlas count: " + atlasList.size(), Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onItemSingleTapUp(int index, MarkerItem item) {
|
||||
Toast.makeText(this, "Marker tap\n" + item.getTitle(), Toast.LENGTH_SHORT).show();
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onItemLongPress(int index, MarkerItem item) {
|
||||
Toast.makeText(this, "Marker long press\n" + item.getTitle(), Toast.LENGTH_SHORT).show();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
/*
|
||||
* Copyright 2017 Longri
|
||||
* Copyright 2017-2018 devemux86
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it under the
|
||||
* terms of the GNU Lesser General Public License as published by the Free Software
|
||||
* Foundation, either version 3 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License along with
|
||||
* this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package org.oscim.android.test;
|
||||
|
||||
import android.os.Bundle;
|
||||
|
||||
import org.oscim.utils.Parameters;
|
||||
|
||||
public class AtlasThemeActivity extends SimpleMapActivity {
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
Parameters.TEXTURE_ATLAS = true;
|
||||
|
||||
super.onCreate(savedInstanceState);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDestroy() {
|
||||
super.onDestroy();
|
||||
|
||||
Parameters.TEXTURE_ATLAS = false;
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
/*
|
||||
* Copyright 2013 Hannes Janetzek
|
||||
* Copyright 2016-2018 devemux86
|
||||
*
|
||||
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
||||
*
|
||||
@@ -26,6 +27,7 @@ import org.oscim.layers.TileGridLayer;
|
||||
import org.oscim.layers.tile.vector.VectorTileLayer;
|
||||
import org.oscim.theme.VtmThemes;
|
||||
import org.oscim.tiling.TileSource;
|
||||
import org.oscim.tiling.source.OkHttpEngine;
|
||||
import org.oscim.tiling.source.oscimap4.OSciMap4TileSource;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
@@ -33,7 +35,7 @@ import org.slf4j.LoggerFactory;
|
||||
public class BaseMapActivity extends MapActivity {
|
||||
static final Logger log = LoggerFactory.getLogger(BaseMapActivity.class);
|
||||
|
||||
final static boolean USE_CACHE = true;
|
||||
final static boolean USE_CACHE = false;
|
||||
|
||||
VectorTileLayer mBaseLayer;
|
||||
TileSource mTileSource;
|
||||
@@ -52,7 +54,9 @@ public class BaseMapActivity extends MapActivity {
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
mTileSource = new OSciMap4TileSource();
|
||||
mTileSource = OSciMap4TileSource.builder()
|
||||
.httpFactory(new OkHttpEngine.OkHttpFactory())
|
||||
.build();
|
||||
|
||||
if (USE_CACHE) {
|
||||
mCache = new TileCache(this, null, "tile.db");
|
||||
@@ -85,13 +89,18 @@ public class BaseMapActivity extends MapActivity {
|
||||
item.setChecked(true);
|
||||
return true;
|
||||
|
||||
case R.id.theme_tubes:
|
||||
mMap.setTheme(VtmThemes.TRONRENDER);
|
||||
case R.id.theme_osmarender:
|
||||
mMap.setTheme(VtmThemes.OSMARENDER);
|
||||
item.setChecked(true);
|
||||
return true;
|
||||
|
||||
case R.id.theme_osmarender:
|
||||
mMap.setTheme(VtmThemes.OSMARENDER);
|
||||
case R.id.theme_osmagray:
|
||||
mMap.setTheme(VtmThemes.OSMAGRAY);
|
||||
item.setChecked(true);
|
||||
return true;
|
||||
|
||||
case R.id.theme_tubes:
|
||||
mMap.setTheme(VtmThemes.TRONRENDER);
|
||||
item.setChecked(true);
|
||||
return true;
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
/*
|
||||
* Copyright 2014 Hannes Janetzek
|
||||
* Copyright 2017-2018 devemux86
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it under the
|
||||
* terms of the GNU Lesser General Public License as published by the Free Software
|
||||
@@ -17,10 +18,8 @@ package org.oscim.android.test;
|
||||
import android.os.Bundle;
|
||||
|
||||
import org.oscim.android.cache.TileCache;
|
||||
import org.oscim.backend.canvas.Color;
|
||||
import org.oscim.core.MapPosition;
|
||||
import org.oscim.core.MercatorProjection;
|
||||
import org.oscim.layers.TileGridLayer;
|
||||
import org.oscim.layers.tile.bitmap.BitmapTileLayer;
|
||||
import org.oscim.renderer.MapRenderer;
|
||||
import org.oscim.tiling.source.bitmap.BitmapTileSource;
|
||||
@@ -28,20 +27,20 @@ import org.oscim.tiling.source.bitmap.DefaultSources;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
public class BitmapTileMapActivity extends MapActivity {
|
||||
public class BitmapTileActivity extends MapActivity {
|
||||
|
||||
static final Logger log = LoggerFactory.getLogger(BitmapTileMapActivity.class);
|
||||
static final Logger log = LoggerFactory.getLogger(BitmapTileActivity.class);
|
||||
|
||||
private final static boolean USE_CACHE = true;
|
||||
private final static boolean USE_CACHE = false;
|
||||
|
||||
private final BitmapTileSource mTileSource;
|
||||
protected BitmapTileLayer mBitmapLayer;
|
||||
|
||||
public BitmapTileMapActivity() {
|
||||
public BitmapTileActivity() {
|
||||
this(DefaultSources.OPENSTREETMAP.build());
|
||||
}
|
||||
|
||||
public BitmapTileMapActivity(BitmapTileSource tileSource) {
|
||||
public BitmapTileActivity(BitmapTileSource tileSource) {
|
||||
super(R.layout.activity_map);
|
||||
mTileSource = tileSource;
|
||||
}
|
||||
@@ -53,7 +52,6 @@ public class BitmapTileMapActivity extends MapActivity {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
MapRenderer.setBackgroundColor(0xff777777);
|
||||
mMap.layers().add(new TileGridLayer(mMap, Color.GRAY, 1.8f, 8));
|
||||
|
||||
if (mTileSource == null)
|
||||
return;
|
||||
@@ -105,6 +103,7 @@ public class BitmapTileMapActivity extends MapActivity {
|
||||
|
||||
p.setTilt((float) (Math.random() * 60));
|
||||
p.setBearing((float) (Math.random() * 360));
|
||||
p.setRoll((float) (Math.random() * 360));
|
||||
//mMapView.map().setMapPosition(p);
|
||||
|
||||
mMapView.map().animator().animateTo(time, p);
|
||||
@@ -0,0 +1,102 @@
|
||||
/*
|
||||
* Copyright 2016-2018 devemux86
|
||||
* Copyright 2017 nebular
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it under the
|
||||
* terms of the GNU Lesser General Public License as published by the Free Software
|
||||
* Foundation, either version 3 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License along with
|
||||
* this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package org.oscim.android.test;
|
||||
|
||||
import org.oscim.backend.canvas.Bitmap;
|
||||
import org.oscim.backend.canvas.Color;
|
||||
import org.oscim.core.GeoPoint;
|
||||
import org.oscim.layers.marker.ClusterMarkerRenderer;
|
||||
import org.oscim.layers.marker.ItemizedLayer;
|
||||
import org.oscim.layers.marker.MarkerItem;
|
||||
import org.oscim.layers.marker.MarkerLayer;
|
||||
import org.oscim.layers.marker.MarkerRenderer;
|
||||
import org.oscim.layers.marker.MarkerRendererFactory;
|
||||
import org.oscim.layers.marker.MarkerSymbol;
|
||||
import org.oscim.layers.tile.bitmap.BitmapTileLayer;
|
||||
import org.oscim.tiling.TileSource;
|
||||
import org.oscim.tiling.source.OkHttpEngine;
|
||||
import org.oscim.tiling.source.bitmap.DefaultSources;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import static org.oscim.android.canvas.AndroidGraphics.drawableToBitmap;
|
||||
|
||||
public class ClusterMarkerOverlayActivity extends MarkerOverlayActivity {
|
||||
|
||||
private static final int COUNT = 5;
|
||||
private static final float STEP = 100f / 110000f; // roughly 100 meters
|
||||
|
||||
@Override
|
||||
void createLayers() {
|
||||
// Map events receiver
|
||||
mMap.layers().add(new MapEventsReceiver(mMap));
|
||||
|
||||
TileSource tileSource = DefaultSources.OPENSTREETMAP
|
||||
.httpFactory(new OkHttpEngine.OkHttpFactory())
|
||||
.build();
|
||||
mMap.layers().add(new BitmapTileLayer(mMap, tileSource));
|
||||
|
||||
Bitmap bitmapPoi = drawableToBitmap(getResources().getDrawable(R.drawable.marker_poi));
|
||||
final MarkerSymbol symbol;
|
||||
if (BILLBOARDS)
|
||||
symbol = new MarkerSymbol(bitmapPoi, MarkerSymbol.HotspotPlace.BOTTOM_CENTER);
|
||||
else
|
||||
symbol = new MarkerSymbol(bitmapPoi, MarkerSymbol.HotspotPlace.CENTER, false);
|
||||
|
||||
MarkerRendererFactory markerRendererFactory = new MarkerRendererFactory() {
|
||||
@Override
|
||||
public MarkerRenderer create(MarkerLayer markerLayer) {
|
||||
return new ClusterMarkerRenderer(markerLayer, symbol, new ClusterMarkerRenderer.ClusterStyle(Color.WHITE, Color.BLUE)) {
|
||||
@Override
|
||||
protected Bitmap getClusterBitmap(int size) {
|
||||
// Can customize cluster bitmap here
|
||||
return super.getClusterBitmap(size);
|
||||
}
|
||||
};
|
||||
}
|
||||
};
|
||||
mMarkerLayer = new ItemizedLayer<>(
|
||||
mMap,
|
||||
new ArrayList<MarkerItem>(),
|
||||
markerRendererFactory,
|
||||
this);
|
||||
mMap.layers().add(mMarkerLayer);
|
||||
|
||||
// Create some markers spaced STEP degrees
|
||||
List<MarkerItem> pts = new ArrayList<>();
|
||||
mMap.setMapPosition(53.08, 8.83, 1 << 15);
|
||||
GeoPoint center = mMap.getMapPosition().getGeoPoint();
|
||||
for (int x = -COUNT; x < COUNT; x++) {
|
||||
for (int y = -COUNT; y < COUNT; y++) {
|
||||
double random = STEP * Math.random() * 2;
|
||||
MarkerItem item = new MarkerItem(y + ", " + x, "",
|
||||
new GeoPoint(center.getLatitude() + y * STEP + random, center.getLongitude() + x * STEP + random)
|
||||
);
|
||||
pts.add(item);
|
||||
}
|
||||
}
|
||||
mMarkerLayer.addItems(pts);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onResume() {
|
||||
super.onResume();
|
||||
|
||||
/* ignore saved position */
|
||||
mMap.setMapPosition(53.08, 8.83, 1 << 15);
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
/*
|
||||
* Copyright 2013 Hannes Janetzek
|
||||
* Copyright 2016 devemux86
|
||||
* Copyright 2016-2018 devemux86
|
||||
* Copyright 2018 Gustl22
|
||||
*
|
||||
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
||||
*
|
||||
@@ -15,7 +16,7 @@
|
||||
* You should have received a copy of the GNU Lesser General Public License along with
|
||||
* this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package org.oscim.gdx;
|
||||
package org.oscim.android.test;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.util.DisplayMetrics;
|
||||
@@ -24,14 +25,20 @@ import com.badlogic.gdx.backends.android.AndroidApplication;
|
||||
import com.badlogic.gdx.backends.android.AndroidApplicationConfiguration;
|
||||
import com.badlogic.gdx.utils.SharedLibraryLoader;
|
||||
|
||||
import org.oscim.android.MapPreferences;
|
||||
import org.oscim.android.canvas.AndroidGraphics;
|
||||
import org.oscim.backend.CanvasAdapter;
|
||||
import org.oscim.backend.GLAdapter;
|
||||
import org.oscim.core.Tile;
|
||||
import org.oscim.gdx.AndroidGL;
|
||||
import org.oscim.gdx.GdxAssets;
|
||||
import org.oscim.gdx.GdxMap;
|
||||
import org.oscim.tiling.TileSource;
|
||||
import org.oscim.tiling.source.OkHttpEngine;
|
||||
import org.oscim.tiling.source.oscimap4.OSciMap4TileSource;
|
||||
|
||||
public class MainActivity extends AndroidApplication {
|
||||
public class GdxActivity extends AndroidApplication {
|
||||
MapPreferences mPrefs;
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
@@ -42,23 +49,35 @@ public class MainActivity extends AndroidApplication {
|
||||
GLAdapter.init(new AndroidGL());
|
||||
|
||||
DisplayMetrics metrics = getResources().getDisplayMetrics();
|
||||
CanvasAdapter.dpi = (int) Math.max(metrics.xdpi, metrics.ydpi);
|
||||
Tile.SIZE = Tile.calculateTileSize(metrics.scaledDensity);
|
||||
CanvasAdapter.dpi = (int) (metrics.scaledDensity * CanvasAdapter.DEFAULT_DPI);
|
||||
Tile.SIZE = Tile.calculateTileSize();
|
||||
|
||||
AndroidApplicationConfiguration cfg = new AndroidApplicationConfiguration();
|
||||
cfg.stencil = 8;
|
||||
cfg.numSamples = 2;
|
||||
//cfg.numSamples = 2;
|
||||
|
||||
new SharedLibraryLoader().load("vtm-jni");
|
||||
|
||||
initialize(new GdxMapAndroid(), cfg);
|
||||
mPrefs = new MapPreferences(GdxActivity.class.getName(), this);
|
||||
}
|
||||
|
||||
class GdxMapAndroid extends GdxMap {
|
||||
@Override
|
||||
public void createLayers() {
|
||||
TileSource ts = new OSciMap4TileSource();
|
||||
initDefaultLayers(ts, true, true, true);
|
||||
TileSource ts = OSciMap4TileSource.builder()
|
||||
.httpFactory(new OkHttpEngine.OkHttpFactory())
|
||||
.build();
|
||||
initDefaultLayers(ts, false, true, true);
|
||||
|
||||
mPrefs.load(getMap());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void pause() {
|
||||
mPrefs.save(getMap());
|
||||
|
||||
super.pause();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,104 @@
|
||||
/*
|
||||
* Copyright 2018 devemux86
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it under the
|
||||
* terms of the GNU Lesser General Public License as published by the Free Software
|
||||
* Foundation, either version 3 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License along with
|
||||
* this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package org.oscim.android.test;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
import android.os.Environment;
|
||||
|
||||
import org.oscim.android.MapView;
|
||||
import org.oscim.backend.CanvasAdapter;
|
||||
import org.oscim.layers.tile.buildings.BuildingLayer;
|
||||
import org.oscim.layers.tile.vector.VectorTileLayer;
|
||||
import org.oscim.layers.tile.vector.labeling.LabelLayer;
|
||||
import org.oscim.renderer.GLViewport;
|
||||
import org.oscim.scalebar.DefaultMapScaleBar;
|
||||
import org.oscim.scalebar.MapScaleBar;
|
||||
import org.oscim.scalebar.MapScaleBarLayer;
|
||||
import org.oscim.theme.VtmThemes;
|
||||
import org.oscim.tiling.source.mapfile.MapFileTileSource;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
/**
|
||||
* A very basic Android app example.
|
||||
* <p>
|
||||
* You'll need a map with filename germany.map from download.mapsforge.org in device storage.
|
||||
* Can be berlin.map renamed as germany.map because of smaller size.
|
||||
*/
|
||||
public class GettingStarted extends Activity {
|
||||
|
||||
// Name of the map file in device storage
|
||||
private static final String MAP_FILE = "germany.map";
|
||||
|
||||
private MapView mapView;
|
||||
private MapScaleBar mapScaleBar;
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
// Map view
|
||||
mapView = new MapView(this);
|
||||
setContentView(mapView);
|
||||
|
||||
// Tile source
|
||||
MapFileTileSource tileSource = new MapFileTileSource();
|
||||
String mapPath = new File(Environment.getExternalStorageDirectory(), MAP_FILE).getAbsolutePath();
|
||||
if (tileSource.setMapFile(mapPath)) {
|
||||
// Vector layer
|
||||
VectorTileLayer tileLayer = mapView.map().setBaseMap(tileSource);
|
||||
|
||||
// Building layer
|
||||
mapView.map().layers().add(new BuildingLayer(mapView.map(), tileLayer));
|
||||
|
||||
// Label layer
|
||||
mapView.map().layers().add(new LabelLayer(mapView.map(), tileLayer));
|
||||
|
||||
// Render theme
|
||||
mapView.map().setTheme(VtmThemes.DEFAULT);
|
||||
|
||||
// Scale bar
|
||||
mapScaleBar = new DefaultMapScaleBar(mapView.map());
|
||||
MapScaleBarLayer mapScaleBarLayer = new MapScaleBarLayer(mapView.map(), mapScaleBar);
|
||||
mapScaleBarLayer.getRenderer().setPosition(GLViewport.Position.BOTTOM_LEFT);
|
||||
mapScaleBarLayer.getRenderer().setOffset(5 * CanvasAdapter.getScale(), 0);
|
||||
mapView.map().layers().add(mapScaleBarLayer);
|
||||
|
||||
// Note: this map position is specific to Berlin area
|
||||
mapView.map().setMapPosition(52.517037, 13.38886, 1 << 12);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onResume() {
|
||||
super.onResume();
|
||||
mapView.onResume();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPause() {
|
||||
mapView.onPause();
|
||||
super.onPause();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDestroy() {
|
||||
if (mapScaleBar != null)
|
||||
mapScaleBar.destroy();
|
||||
mapView.onDestroy();
|
||||
super.onDestroy();
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
/*
|
||||
* Copyright 2016 devemux86
|
||||
* Copyright 2014 Hannes Janetzek
|
||||
* Copyright 2016-2018 devemux86
|
||||
*
|
||||
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
||||
*
|
||||
@@ -24,11 +25,14 @@ import android.widget.ToggleButton;
|
||||
|
||||
import org.jeo.map.Style;
|
||||
import org.jeo.vector.VectorDataset;
|
||||
import org.oscim.backend.CanvasAdapter;
|
||||
import org.oscim.backend.canvas.Color;
|
||||
import org.oscim.layers.OSMIndoorLayer;
|
||||
import org.oscim.layers.tile.buildings.BuildingLayer;
|
||||
import org.oscim.layers.tile.vector.labeling.LabelLayer;
|
||||
import org.oscim.test.JeoTest;
|
||||
import org.oscim.theme.VtmThemes;
|
||||
import org.oscim.theme.styles.TextStyle;
|
||||
import org.oscim.utils.IOUtils;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
@@ -39,16 +43,15 @@ import java.net.URL;
|
||||
import java.net.URLConnection;
|
||||
import java.util.Arrays;
|
||||
|
||||
public class JeoIndoorMapActivity extends BaseMapActivity {
|
||||
public static final Logger log = LoggerFactory.getLogger(JeoIndoorMapActivity.class);
|
||||
public class JeoIndoorActivity extends BaseMapActivity {
|
||||
public static final Logger log = LoggerFactory.getLogger(JeoIndoorActivity.class);
|
||||
|
||||
// from http://overpass-turbo.eu/s/2vp
|
||||
String PATH = "https://gist.github.com/anonymous/8960337/raw/overpass.geojson";
|
||||
//String PATH = "https://gist.github.com/hjanetzek/9280925/raw/overpass.geojson";
|
||||
String PATH = "https://gist.githubusercontent.com/anonymous/09062103a66844a96048f25626078c8d/raw/1d3af6a5a55e9ea4adc9551fa633a051a44a5a9c/overpass.geojson";
|
||||
|
||||
private OSMIndoorLayer mIndoorLayer;
|
||||
|
||||
public JeoIndoorMapActivity() {
|
||||
public JeoIndoorActivity() {
|
||||
super(R.layout.jeo_indoor_map);
|
||||
}
|
||||
|
||||
@@ -83,7 +86,6 @@ public class JeoIndoorMapActivity extends BaseMapActivity {
|
||||
mMap.layers().add(new BuildingLayer(mMap, mBaseLayer));
|
||||
mMap.layers().add(new LabelLayer(mMap, mBaseLayer));
|
||||
|
||||
// mMap.layers().add(new TileGridLayer(mMap));
|
||||
// String file = Environment.getExternalStorageDirectory().getAbsolutePath();
|
||||
// VectorDataset data = (VectorDataset) JeoTest.getJsonData(file + "/states.json", true);
|
||||
// Style style = JeoTest.getStyle();
|
||||
@@ -95,7 +97,12 @@ public class JeoIndoorMapActivity extends BaseMapActivity {
|
||||
|
||||
VectorDataset data = JeoTest.readGeoJson(is);
|
||||
Style style = JeoTest.getStyle();
|
||||
mIndoorLayer = new OSMIndoorLayer(mMap, data, style);
|
||||
TextStyle textStyle = TextStyle.builder()
|
||||
.isCaption(true)
|
||||
.fontSize(16 * CanvasAdapter.getScale()).color(Color.BLACK)
|
||||
.strokeWidth(2.2f * CanvasAdapter.getScale()).strokeColor(Color.WHITE)
|
||||
.build();
|
||||
mIndoorLayer = new OSMIndoorLayer(mMap, data, style, textStyle);
|
||||
mMap.layers().add(mIndoorLayer);
|
||||
|
||||
showToast("data ready");
|
||||
@@ -157,7 +164,8 @@ public class JeoIndoorMapActivity extends BaseMapActivity {
|
||||
i = 0;
|
||||
|
||||
mIndoorLayer.activeLevels[i] ^= true;
|
||||
((ToggleButton) v).setChecked(mIndoorLayer.activeLevels[i]);
|
||||
if (v instanceof ToggleButton)
|
||||
((ToggleButton) v).setChecked(mIndoorLayer.activeLevels[i]);
|
||||
log.debug(Arrays.toString(mIndoorLayer.activeLevels));
|
||||
mIndoorLayer.update();
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright 2013 Hannes Janetzek
|
||||
* Copyright 2016 devemux86
|
||||
* Copyright 2016-2018 devemux86
|
||||
* Copyright 2016 Andrey Novikov
|
||||
*
|
||||
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
||||
@@ -53,7 +53,7 @@ public class LayerGroupActivity extends BaseMapActivity {
|
||||
layers.addGroup(GROUP_LABELS);
|
||||
layers.add(new LabelLayer(mMap, mBaseLayer), GROUP_LABELS);
|
||||
|
||||
mapScaleBar = new DefaultMapScaleBar(mMap, CanvasAdapter.dpi / 160);
|
||||
mapScaleBar = new DefaultMapScaleBar(mMap);
|
||||
mapScaleBar.setScaleBarMode(DefaultMapScaleBar.ScaleBarMode.BOTH);
|
||||
mapScaleBar.setDistanceUnitAdapter(MetricUnitAdapter.INSTANCE);
|
||||
mapScaleBar.setSecondaryDistanceUnitAdapter(ImperialUnitAdapter.INSTANCE);
|
||||
@@ -62,7 +62,7 @@ public class LayerGroupActivity extends BaseMapActivity {
|
||||
MapScaleBarLayer mapScaleBarLayer = new MapScaleBarLayer(mMap, mapScaleBar);
|
||||
BitmapRenderer renderer = mapScaleBarLayer.getRenderer();
|
||||
renderer.setPosition(GLViewport.Position.BOTTOM_LEFT);
|
||||
renderer.setOffset(5 * CanvasAdapter.dpi / 160, 0);
|
||||
renderer.setOffset(5 * CanvasAdapter.getScale(), 0);
|
||||
|
||||
layers.addGroup(GROUP_OVERLAYS);
|
||||
layers.add(mapScaleBarLayer, GROUP_OVERLAYS);
|
||||
@@ -72,7 +72,8 @@ public class LayerGroupActivity extends BaseMapActivity {
|
||||
|
||||
@Override
|
||||
protected void onDestroy() {
|
||||
mapScaleBar.destroy();
|
||||
if (mapScaleBar != null)
|
||||
mapScaleBar.destroy();
|
||||
|
||||
super.onDestroy();
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright 2014 Hannes Janetzek
|
||||
* Copyright 2016 devemux86
|
||||
* Copyright 2016-2018 devemux86
|
||||
*
|
||||
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
||||
*
|
||||
@@ -28,32 +28,31 @@ import org.oscim.layers.vector.geometries.Style;
|
||||
import org.oscim.map.Map;
|
||||
import org.oscim.renderer.bucket.TextureItem;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import static org.oscim.tiling.source.bitmap.DefaultSources.STAMEN_TONER;
|
||||
|
||||
/**
|
||||
* This is a very INEFFICIENT and somewhat less useful example for how to use
|
||||
* PathLayers!
|
||||
*/
|
||||
public class LineTexActivity extends BitmapTileMapActivity {
|
||||
public class LineTexActivity extends BitmapTileActivity {
|
||||
|
||||
private static final boolean ANIMATION = false;
|
||||
|
||||
private List<PathLayer> mPathLayers = new ArrayList<>();
|
||||
|
||||
public LineTexActivity() {
|
||||
super(STAMEN_TONER.build());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
mBitmapLayer.tileRenderer().setBitmapAlpha(0.5f);
|
||||
|
||||
TextureItem tex = new TextureItem(CanvasAdapter.getBitmapAsset("", "patterns/pike.png"));
|
||||
tex.mipmap = true;
|
||||
TextureItem tex = null;
|
||||
try {
|
||||
tex = new TextureItem(CanvasAdapter.getBitmapAsset("", "patterns/pike.png"));
|
||||
tex.mipmap = true;
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
for (double lat = -90; lat <= 90; lat += 5) {
|
||||
int c = Color.fade(Color.rainbow((float) (lat + 90) / 180), 0.5f);
|
||||
|
||||
@@ -0,0 +1,90 @@
|
||||
/*
|
||||
* Copyright 2016-2018 devemux86
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it under the
|
||||
* terms of the GNU Lesser General Public License as published by the Free Software
|
||||
* Foundation, either version 3 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License along with
|
||||
* this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package org.oscim.android.test;
|
||||
|
||||
import android.content.Context;
|
||||
import android.location.Location;
|
||||
import android.location.LocationListener;
|
||||
import android.location.LocationManager;
|
||||
import android.os.Bundle;
|
||||
|
||||
import org.oscim.core.MapPosition;
|
||||
import org.oscim.layers.LocationLayer;
|
||||
|
||||
public class LocationActivity extends BitmapTileActivity implements LocationListener {
|
||||
private LocationLayer locationLayer;
|
||||
private LocationManager locationManager;
|
||||
private final MapPosition mapPosition = new MapPosition();
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
|
||||
|
||||
locationLayer = new LocationLayer(mMap);
|
||||
locationLayer.locationRenderer.setShader("location_1_reverse");
|
||||
locationLayer.setEnabled(false);
|
||||
mMap.layers().add(locationLayer);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onResume() {
|
||||
super.onResume();
|
||||
|
||||
enableAvailableProviders();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPause() {
|
||||
super.onPause();
|
||||
|
||||
locationManager.removeUpdates(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLocationChanged(Location location) {
|
||||
locationLayer.setEnabled(true);
|
||||
locationLayer.setPosition(location.getLatitude(), location.getLongitude(), location.getAccuracy());
|
||||
|
||||
// Follow location
|
||||
mMap.getMapPosition(mapPosition);
|
||||
mapPosition.setPosition(location.getLatitude(), location.getLongitude());
|
||||
mMap.setMapPosition(mapPosition);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onProviderDisabled(String provider) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onProviderEnabled(String provider) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStatusChanged(String provider, int status, Bundle extras) {
|
||||
}
|
||||
|
||||
private void enableAvailableProviders() {
|
||||
locationManager.removeUpdates(this);
|
||||
|
||||
for (String provider : locationManager.getProviders(true)) {
|
||||
if (LocationManager.GPS_PROVIDER.equals(provider)
|
||||
|| LocationManager.NETWORK_PROVIDER.equals(provider)) {
|
||||
locationManager.requestLocationUpdates(provider, 0, 0, this);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,127 @@
|
||||
/*
|
||||
* Copyright 2016-2018 devemux86
|
||||
* Copyright 2018 Longri
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it under the
|
||||
* terms of the GNU Lesser General Public License as published by the Free Software
|
||||
* Foundation, either version 3 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License along with
|
||||
* this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package org.oscim.android.test;
|
||||
|
||||
import android.content.Context;
|
||||
import android.location.Location;
|
||||
import android.location.LocationListener;
|
||||
import android.location.LocationManager;
|
||||
import android.os.Bundle;
|
||||
|
||||
import org.oscim.backend.CanvasAdapter;
|
||||
import org.oscim.backend.canvas.Bitmap;
|
||||
import org.oscim.backend.canvas.Color;
|
||||
import org.oscim.core.MapPosition;
|
||||
import org.oscim.layers.LocationTextureLayer;
|
||||
import org.oscim.renderer.atlas.TextureAtlas;
|
||||
import org.oscim.renderer.atlas.TextureRegion;
|
||||
import org.oscim.renderer.bucket.TextureItem;
|
||||
import org.oscim.utils.IOUtils;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
|
||||
public class LocationTextureActivity extends BitmapTileActivity implements LocationListener {
|
||||
private LocationTextureLayer locationLayer;
|
||||
private LocationManager locationManager;
|
||||
private final MapPosition mapPosition = new MapPosition();
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
|
||||
|
||||
// load a Bitmap/SVG from resources
|
||||
InputStream is = null;
|
||||
Bitmap bmp = null;
|
||||
try {
|
||||
is = getResources().openRawResource(R.raw.arrow);
|
||||
float scale = CanvasAdapter.getScale();
|
||||
bmp = CanvasAdapter.decodeSvgBitmap(is, (int) (60 * scale), (int) (60 * scale), 100);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
} finally {
|
||||
IOUtils.closeQuietly(is);
|
||||
}
|
||||
|
||||
// create TextureRegion from Bitmap
|
||||
TextureRegion textureRegion = new TextureRegion(new TextureItem(bmp), new TextureAtlas.Rect(0, 0, bmp.getWidth(), bmp.getHeight()));
|
||||
|
||||
// create LocationTextureLayer with created/loaded TextureRegion
|
||||
locationLayer = new LocationTextureLayer(mMap, textureRegion);
|
||||
|
||||
// set color of accuracy circle (Color.BLUE is default)
|
||||
locationLayer.locationRenderer.setAccuracyColor(Color.get(50, 50, 255));
|
||||
|
||||
// set color of indicator circle (Color.RED is default)
|
||||
locationLayer.locationRenderer.setIndicatorColor(Color.MAGENTA);
|
||||
|
||||
// set billboard rendering for TextureRegion (false is default)
|
||||
locationLayer.locationRenderer.setBillboard(false);
|
||||
|
||||
locationLayer.setEnabled(false);
|
||||
mMap.layers().add(locationLayer);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onResume() {
|
||||
super.onResume();
|
||||
|
||||
enableAvailableProviders();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPause() {
|
||||
super.onPause();
|
||||
|
||||
locationManager.removeUpdates(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLocationChanged(Location location) {
|
||||
locationLayer.setEnabled(true);
|
||||
locationLayer.setPosition(location.getLatitude(), location.getLongitude(), location.getBearing(), location.getAccuracy());
|
||||
|
||||
// Follow location
|
||||
mMap.getMapPosition(mapPosition);
|
||||
mapPosition.setPosition(location.getLatitude(), location.getLongitude());
|
||||
mMap.setMapPosition(mapPosition);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onProviderDisabled(String provider) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onProviderEnabled(String provider) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStatusChanged(String provider, int status, Bundle extras) {
|
||||
}
|
||||
|
||||
private void enableAvailableProviders() {
|
||||
locationManager.removeUpdates(this);
|
||||
|
||||
for (String provider : locationManager.getProviders(true)) {
|
||||
if (LocationManager.GPS_PROVIDER.equals(provider)
|
||||
|| LocationManager.NETWORK_PROVIDER.equals(provider)) {
|
||||
locationManager.requestLocationUpdates(provider, 0, 0, this);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2016 devemux86
|
||||
* Copyright 2016-2017 devemux86
|
||||
*
|
||||
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
||||
*
|
||||
@@ -21,7 +21,6 @@ import android.os.Bundle;
|
||||
|
||||
import org.oscim.android.MapPreferences;
|
||||
import org.oscim.android.MapView;
|
||||
import org.oscim.core.Tile;
|
||||
import org.oscim.map.Map;
|
||||
|
||||
public class MapActivity extends Activity {
|
||||
@@ -41,7 +40,6 @@ public class MapActivity extends Activity {
|
||||
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
Tile.SIZE = Tile.calculateTileSize(getResources().getDisplayMetrics().scaledDensity);
|
||||
setContentView(mContentView);
|
||||
|
||||
setTitle(getClass().getSimpleName());
|
||||
@@ -61,9 +59,16 @@ public class MapActivity extends Activity {
|
||||
|
||||
@Override
|
||||
protected void onPause() {
|
||||
super.onPause();
|
||||
|
||||
mMapView.onPause();
|
||||
mPrefs.save(mMapView.map());
|
||||
mMapView.onPause();
|
||||
|
||||
super.onPause();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDestroy() {
|
||||
mMapView.onDestroy();
|
||||
|
||||
super.onDestroy();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
/*
|
||||
* Copyright 2016-2017 devemux86
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it under the
|
||||
* terms of the GNU Lesser General Public License as published by the Free Software
|
||||
* Foundation, either version 3 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License along with
|
||||
* this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package org.oscim.android.test;
|
||||
|
||||
import org.oscim.utils.Parameters;
|
||||
|
||||
public class MapEventLayer2Activity extends MarkerOverlayActivity {
|
||||
|
||||
public MapEventLayer2Activity() {
|
||||
super();
|
||||
Parameters.MAP_EVENT_LAYER2 = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDestroy() {
|
||||
super.onDestroy();
|
||||
|
||||
Parameters.MAP_EVENT_LAYER2 = false;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,249 @@
|
||||
/*
|
||||
* Copyright 2014 Hannes Janetzek
|
||||
* Copyright 2016-2018 devemux86
|
||||
* Copyright 2017 Longri
|
||||
* Copyright 2018 Gustl22
|
||||
*
|
||||
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it under the
|
||||
* terms of the GNU Lesser General Public License as published by the Free Software
|
||||
* Foundation, either version 3 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License along with
|
||||
* this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package org.oscim.android.test;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
|
||||
import org.oscim.android.filepicker.FilePicker;
|
||||
import org.oscim.android.filepicker.FilterByFileExtension;
|
||||
import org.oscim.android.filepicker.ValidMapFile;
|
||||
import org.oscim.android.filepicker.ValidRenderTheme;
|
||||
import org.oscim.backend.CanvasAdapter;
|
||||
import org.oscim.core.MapElement;
|
||||
import org.oscim.core.MapPosition;
|
||||
import org.oscim.core.Tag;
|
||||
import org.oscim.core.Tile;
|
||||
import org.oscim.layers.TileGridLayer;
|
||||
import org.oscim.layers.tile.MapTile;
|
||||
import org.oscim.layers.tile.buildings.BuildingLayer;
|
||||
import org.oscim.layers.tile.buildings.S3DBLayer;
|
||||
import org.oscim.layers.tile.vector.VectorTileLayer;
|
||||
import org.oscim.layers.tile.vector.labeling.LabelLayer;
|
||||
import org.oscim.renderer.BitmapRenderer;
|
||||
import org.oscim.renderer.GLViewport;
|
||||
import org.oscim.renderer.bucket.RenderBuckets;
|
||||
import org.oscim.scalebar.DefaultMapScaleBar;
|
||||
import org.oscim.scalebar.ImperialUnitAdapter;
|
||||
import org.oscim.scalebar.MapScaleBar;
|
||||
import org.oscim.scalebar.MapScaleBarLayer;
|
||||
import org.oscim.scalebar.MetricUnitAdapter;
|
||||
import org.oscim.theme.ExternalRenderTheme;
|
||||
import org.oscim.theme.ThemeUtils;
|
||||
import org.oscim.theme.VtmThemes;
|
||||
import org.oscim.theme.styles.AreaStyle;
|
||||
import org.oscim.theme.styles.RenderStyle;
|
||||
import org.oscim.tiling.source.mapfile.MapFileTileSource;
|
||||
import org.oscim.tiling.source.mapfile.MapInfo;
|
||||
|
||||
public class MapsforgeActivity extends MapActivity {
|
||||
|
||||
static final int SELECT_MAP_FILE = 0;
|
||||
static final int SELECT_THEME_FILE = SELECT_MAP_FILE + 1;
|
||||
|
||||
private static final Tag ISSEA_TAG = new Tag("natural", "issea");
|
||||
private static final Tag NOSEA_TAG = new Tag("natural", "nosea");
|
||||
private static final Tag SEA_TAG = new Tag("natural", "sea");
|
||||
|
||||
private TileGridLayer mGridLayer;
|
||||
private DefaultMapScaleBar mMapScaleBar;
|
||||
private Menu mMenu;
|
||||
private boolean mS3db;
|
||||
private VectorTileLayer mTileLayer;
|
||||
MapFileTileSource mTileSource;
|
||||
|
||||
public MapsforgeActivity() {
|
||||
this(false);
|
||||
}
|
||||
|
||||
public MapsforgeActivity(boolean s3db) {
|
||||
super();
|
||||
mS3db = s3db;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
startActivityForResult(new Intent(this, MapFilePicker.class),
|
||||
SELECT_MAP_FILE);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDestroy() {
|
||||
if (mMapScaleBar != null)
|
||||
mMapScaleBar.destroy();
|
||||
|
||||
super.onDestroy();
|
||||
}
|
||||
|
||||
public static class MapFilePicker extends FilePicker {
|
||||
public MapFilePicker() {
|
||||
setFileDisplayFilter(new FilterByFileExtension(".map"));
|
||||
setFileSelectFilter(new ValidMapFile());
|
||||
}
|
||||
}
|
||||
|
||||
public static class ThemeFilePicker extends FilePicker {
|
||||
public ThemeFilePicker() {
|
||||
setFileDisplayFilter(new FilterByFileExtension(".xml"));
|
||||
setFileSelectFilter(new ValidRenderTheme());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCreateOptionsMenu(Menu menu) {
|
||||
getMenuInflater().inflate(R.menu.theme_menu, menu);
|
||||
mMenu = menu;
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(MenuItem item) {
|
||||
|
||||
switch (item.getItemId()) {
|
||||
case R.id.theme_default:
|
||||
mMap.setTheme(VtmThemes.DEFAULT);
|
||||
item.setChecked(true);
|
||||
return true;
|
||||
|
||||
case R.id.theme_osmarender:
|
||||
mMap.setTheme(VtmThemes.OSMARENDER);
|
||||
item.setChecked(true);
|
||||
return true;
|
||||
|
||||
case R.id.theme_osmagray:
|
||||
mMap.setTheme(VtmThemes.OSMAGRAY);
|
||||
item.setChecked(true);
|
||||
return true;
|
||||
|
||||
case R.id.theme_tubes:
|
||||
mMap.setTheme(VtmThemes.TRONRENDER);
|
||||
item.setChecked(true);
|
||||
return true;
|
||||
|
||||
case R.id.theme_newtron:
|
||||
mMap.setTheme(VtmThemes.NEWTRON);
|
||||
item.setChecked(true);
|
||||
return true;
|
||||
|
||||
case R.id.theme_external:
|
||||
startActivityForResult(new Intent(this, ThemeFilePicker.class),
|
||||
SELECT_THEME_FILE);
|
||||
return true;
|
||||
|
||||
case R.id.gridlayer:
|
||||
if (item.isChecked()) {
|
||||
item.setChecked(false);
|
||||
mMap.layers().remove(mGridLayer);
|
||||
} else {
|
||||
item.setChecked(true);
|
||||
if (mGridLayer == null)
|
||||
mGridLayer = new TileGridLayer(mMap);
|
||||
|
||||
mMap.layers().add(mGridLayer);
|
||||
}
|
||||
mMap.updateMap(true);
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
|
||||
|
||||
if (requestCode == SELECT_MAP_FILE) {
|
||||
if (resultCode != RESULT_OK || intent == null || intent.getStringExtra(FilePicker.SELECTED_FILE) == null) {
|
||||
finish();
|
||||
return;
|
||||
}
|
||||
|
||||
mTileSource = new MapFileTileSource();
|
||||
//mTileSource.setPreferredLanguage("en");
|
||||
String file = intent.getStringExtra(FilePicker.SELECTED_FILE);
|
||||
if (mTileSource.setMapFile(file)) {
|
||||
|
||||
mTileLayer = mMap.setBaseMap(mTileSource);
|
||||
loadTheme(null);
|
||||
|
||||
if (mS3db)
|
||||
mMap.layers().add(new S3DBLayer(mMap, mTileLayer));
|
||||
else
|
||||
mMap.layers().add(new BuildingLayer(mMap, mTileLayer));
|
||||
mMap.layers().add(new LabelLayer(mMap, mTileLayer));
|
||||
|
||||
mMapScaleBar = new DefaultMapScaleBar(mMap);
|
||||
mMapScaleBar.setScaleBarMode(DefaultMapScaleBar.ScaleBarMode.BOTH);
|
||||
mMapScaleBar.setDistanceUnitAdapter(MetricUnitAdapter.INSTANCE);
|
||||
mMapScaleBar.setSecondaryDistanceUnitAdapter(ImperialUnitAdapter.INSTANCE);
|
||||
mMapScaleBar.setScaleBarPosition(MapScaleBar.ScaleBarPosition.BOTTOM_LEFT);
|
||||
|
||||
MapScaleBarLayer mapScaleBarLayer = new MapScaleBarLayer(mMap, mMapScaleBar);
|
||||
BitmapRenderer renderer = mapScaleBarLayer.getRenderer();
|
||||
renderer.setPosition(GLViewport.Position.BOTTOM_LEFT);
|
||||
renderer.setOffset(5 * CanvasAdapter.getScale(), 0);
|
||||
mMap.layers().add(mapScaleBarLayer);
|
||||
|
||||
MapInfo info = mTileSource.getMapInfo();
|
||||
if (!info.boundingBox.contains(mMap.getMapPosition().getGeoPoint())) {
|
||||
MapPosition pos = new MapPosition();
|
||||
pos.setByBoundingBox(info.boundingBox, Tile.SIZE * 4, Tile.SIZE * 4);
|
||||
mMap.setMapPosition(pos);
|
||||
mPrefs.clear();
|
||||
}
|
||||
}
|
||||
} else if (requestCode == SELECT_THEME_FILE) {
|
||||
if (resultCode != RESULT_OK || intent == null || intent.getStringExtra(FilePicker.SELECTED_FILE) == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
String file = intent.getStringExtra(FilePicker.SELECTED_FILE);
|
||||
ExternalRenderTheme externalRenderTheme = new ExternalRenderTheme(file);
|
||||
|
||||
// Use tessellation with sea and land for Mapsforge themes
|
||||
if (ThemeUtils.isMapsforgeTheme(externalRenderTheme)) {
|
||||
mTileLayer.addHook(new VectorTileLayer.TileLoaderThemeHook() {
|
||||
@Override
|
||||
public boolean process(MapTile tile, RenderBuckets buckets, MapElement element, RenderStyle style, int level) {
|
||||
if (element.tags.contains(ISSEA_TAG) || element.tags.contains(SEA_TAG) || element.tags.contains(NOSEA_TAG)) {
|
||||
if (style instanceof AreaStyle)
|
||||
((AreaStyle) style).mesh = true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void complete(MapTile tile, boolean success) {
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
mMap.setTheme(externalRenderTheme);
|
||||
mMenu.findItem(R.id.theme_external).setChecked(true);
|
||||
}
|
||||
}
|
||||
|
||||
protected void loadTheme(final String styleId) {
|
||||
mMap.setTheme(VtmThemes.DEFAULT);
|
||||
}
|
||||
}
|
||||
@@ -1,135 +0,0 @@
|
||||
/*
|
||||
* Copyright 2014 Hannes Janetzek
|
||||
* Copyright 2016 devemux86
|
||||
*
|
||||
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it under the
|
||||
* terms of the GNU Lesser General Public License as published by the Free Software
|
||||
* Foundation, either version 3 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License along with
|
||||
* this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package org.oscim.android.test;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
|
||||
import org.oscim.android.filepicker.FilePicker;
|
||||
import org.oscim.android.filepicker.FilterByFileExtension;
|
||||
import org.oscim.android.filepicker.ValidMapFile;
|
||||
import org.oscim.core.MapPosition;
|
||||
import org.oscim.core.Tile;
|
||||
import org.oscim.layers.TileGridLayer;
|
||||
import org.oscim.layers.tile.buildings.BuildingLayer;
|
||||
import org.oscim.layers.tile.vector.VectorTileLayer;
|
||||
import org.oscim.layers.tile.vector.labeling.LabelLayer;
|
||||
import org.oscim.theme.VtmThemes;
|
||||
import org.oscim.tiling.source.mapfile.MapFileTileSource;
|
||||
import org.oscim.tiling.source.mapfile.MapInfo;
|
||||
|
||||
public class MapsforgeMapActivity extends MapActivity {
|
||||
private static final int SELECT_MAP_FILE = 0;
|
||||
|
||||
private TileGridLayer mGridLayer;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
startActivityForResult(new Intent(this, MapFilePicker.class),
|
||||
SELECT_MAP_FILE);
|
||||
}
|
||||
|
||||
public static class MapFilePicker extends FilePicker {
|
||||
public MapFilePicker() {
|
||||
setFileDisplayFilter(new FilterByFileExtension(".map"));
|
||||
setFileSelectFilter(new ValidMapFile());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCreateOptionsMenu(Menu menu) {
|
||||
getMenuInflater().inflate(R.menu.theme_menu, menu);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(MenuItem item) {
|
||||
|
||||
switch (item.getItemId()) {
|
||||
case R.id.theme_default:
|
||||
mMap.setTheme(VtmThemes.DEFAULT);
|
||||
item.setChecked(true);
|
||||
return true;
|
||||
|
||||
case R.id.theme_tubes:
|
||||
mMap.setTheme(VtmThemes.TRONRENDER);
|
||||
item.setChecked(true);
|
||||
return true;
|
||||
|
||||
case R.id.theme_osmarender:
|
||||
mMap.setTheme(VtmThemes.OSMARENDER);
|
||||
item.setChecked(true);
|
||||
return true;
|
||||
|
||||
case R.id.theme_newtron:
|
||||
mMap.setTheme(VtmThemes.NEWTRON);
|
||||
item.setChecked(true);
|
||||
return true;
|
||||
|
||||
case R.id.gridlayer:
|
||||
if (item.isChecked()) {
|
||||
item.setChecked(false);
|
||||
mMap.layers().remove(mGridLayer);
|
||||
} else {
|
||||
item.setChecked(true);
|
||||
if (mGridLayer == null)
|
||||
mGridLayer = new TileGridLayer(mMap);
|
||||
|
||||
mMap.layers().add(mGridLayer);
|
||||
}
|
||||
mMap.updateMap(true);
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
|
||||
|
||||
if (requestCode == SELECT_MAP_FILE) {
|
||||
if (resultCode != RESULT_OK || intent == null || intent.getStringExtra(FilePicker.SELECTED_FILE) == null) {
|
||||
finish();
|
||||
return;
|
||||
}
|
||||
|
||||
MapFileTileSource tileSource = new MapFileTileSource();
|
||||
tileSource.setPreferredLanguage("en");
|
||||
String file = intent.getStringExtra(FilePicker.SELECTED_FILE);
|
||||
if (tileSource.setMapFile(file)) {
|
||||
|
||||
VectorTileLayer l = mMap.setBaseMap(tileSource);
|
||||
mMap.setTheme(VtmThemes.DEFAULT);
|
||||
|
||||
mMap.layers().add(new BuildingLayer(mMap, l));
|
||||
mMap.layers().add(new LabelLayer(mMap, l));
|
||||
|
||||
MapInfo info = tileSource.getMapInfo();
|
||||
MapPosition pos = new MapPosition();
|
||||
pos.setByBoundingBox(info.boundingBox, Tile.SIZE * 4, Tile.SIZE * 4);
|
||||
mMap.setMapPosition(pos);
|
||||
|
||||
mPrefs.clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
/*
|
||||
* Copyright 2017-2018 devemux86
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it under the
|
||||
* terms of the GNU Lesser General Public License as published by the Free Software
|
||||
* Foundation, either version 3 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License along with
|
||||
* this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package org.oscim.android.test;
|
||||
|
||||
import android.os.Bundle;
|
||||
|
||||
import org.oscim.utils.Parameters;
|
||||
|
||||
public class MapsforgePolyLabelActivity extends MapsforgeActivity {
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
Parameters.POLY_LABEL = true;
|
||||
|
||||
super.onCreate(savedInstanceState);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDestroy() {
|
||||
super.onDestroy();
|
||||
|
||||
Parameters.POLY_LABEL = false;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
/*
|
||||
* Copyright 2018 devemux86
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it under the
|
||||
* terms of the GNU Lesser General Public License as published by the Free Software
|
||||
* Foundation, either version 3 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License along with
|
||||
* this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package org.oscim.android.test;
|
||||
|
||||
public class MapsforgeS3DBActivity extends MapsforgeActivity {
|
||||
|
||||
public MapsforgeS3DBActivity() {
|
||||
super(true);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,89 @@
|
||||
/*
|
||||
* Copyright 2016-2017 devemux86
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it under the
|
||||
* terms of the GNU Lesser General Public License as published by the Free Software
|
||||
* Foundation, either version 3 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License along with
|
||||
* this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package org.oscim.android.test;
|
||||
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import android.widget.Toast;
|
||||
|
||||
import org.oscim.android.theme.AssetsRenderTheme;
|
||||
import org.oscim.theme.XmlRenderThemeMenuCallback;
|
||||
import org.oscim.theme.XmlRenderThemeStyleLayer;
|
||||
import org.oscim.theme.XmlRenderThemeStyleMenu;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* Load render theme from Android assets folder and show a configuration menu based on stylemenu.
|
||||
*/
|
||||
public class MapsforgeStyleActivity extends MapsforgeActivity {
|
||||
|
||||
@Override
|
||||
public boolean onCreateOptionsMenu(Menu menu) {
|
||||
getMenuInflater().inflate(R.menu.style_menu, menu);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(MenuItem item) {
|
||||
switch (item.getItemId()) {
|
||||
case R.id.style_1:
|
||||
item.setChecked(true);
|
||||
loadTheme("1");
|
||||
mMap.clearMap();
|
||||
Toast.makeText(this, "Show nature layers", Toast.LENGTH_SHORT).show();
|
||||
return true;
|
||||
case R.id.style_2:
|
||||
item.setChecked(true);
|
||||
loadTheme("2");
|
||||
mMap.clearMap();
|
||||
Toast.makeText(this, "Hide nature layers", Toast.LENGTH_SHORT).show();
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void loadTheme(final String styleId) {
|
||||
mMap.setTheme(new AssetsRenderTheme(getAssets(), "", "vtm/stylemenu.xml", new XmlRenderThemeMenuCallback() {
|
||||
@Override
|
||||
public Set<String> getCategories(XmlRenderThemeStyleMenu renderThemeStyleMenu) {
|
||||
// Use the selected style or the default
|
||||
String style = styleId != null ? styleId : renderThemeStyleMenu.getDefaultValue();
|
||||
|
||||
// Retrieve the layer from the style id
|
||||
XmlRenderThemeStyleLayer renderThemeStyleLayer = renderThemeStyleMenu.getLayer(style);
|
||||
if (renderThemeStyleLayer == null) {
|
||||
System.err.println("Invalid style " + style);
|
||||
return null;
|
||||
}
|
||||
|
||||
// First get the selected layer's categories that are enabled together
|
||||
Set<String> categories = renderThemeStyleLayer.getCategories();
|
||||
|
||||
// Then add the selected layer's overlays that are enabled individually
|
||||
// Here we use the style menu, but users can use their own preferences
|
||||
for (XmlRenderThemeStyleLayer overlay : renderThemeStyleLayer.getOverlays()) {
|
||||
if (overlay.isEnabled())
|
||||
categories.addAll(overlay.getCategories());
|
||||
}
|
||||
|
||||
// This is the whole categories set to be enabled
|
||||
return categories;
|
||||
}
|
||||
}));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,68 @@
|
||||
/*
|
||||
* Copyright 2017-2018 devemux86
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it under the
|
||||
* terms of the GNU Lesser General Public License as published by the Free Software
|
||||
* Foundation, either version 3 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License along with
|
||||
* this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package org.oscim.android.test;
|
||||
|
||||
import android.os.Bundle;
|
||||
|
||||
import org.oscim.android.cache.TileCache;
|
||||
import org.oscim.layers.TileGridLayer;
|
||||
import org.oscim.layers.tile.buildings.BuildingLayer;
|
||||
import org.oscim.layers.tile.vector.VectorTileLayer;
|
||||
import org.oscim.layers.tile.vector.labeling.LabelLayer;
|
||||
import org.oscim.theme.VtmThemes;
|
||||
import org.oscim.tiling.source.OkHttpEngine;
|
||||
import org.oscim.tiling.source.UrlTileSource;
|
||||
import org.oscim.tiling.source.geojson.MapzenGeojsonTileSource;
|
||||
|
||||
public class MapzenGeojsonActivity extends MapActivity {
|
||||
|
||||
private static final boolean USE_CACHE = false;
|
||||
|
||||
private TileCache mCache;
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
UrlTileSource tileSource = MapzenGeojsonTileSource.builder()
|
||||
.apiKey("xxxxxxx") // Put a proper API key
|
||||
.httpFactory(new OkHttpEngine.OkHttpFactory())
|
||||
//.locale("en")
|
||||
.build();
|
||||
|
||||
if (USE_CACHE) {
|
||||
// Cache the tiles into a local SQLite database
|
||||
mCache = new TileCache(this, null, "tile.db");
|
||||
mCache.setCacheSize(512 * (1 << 10));
|
||||
tileSource.setCache(mCache);
|
||||
}
|
||||
|
||||
VectorTileLayer l = mMap.setBaseMap(tileSource);
|
||||
mMap.setTheme(VtmThemes.MAPZEN);
|
||||
|
||||
mMap.layers().add(new BuildingLayer(mMap, l));
|
||||
mMap.layers().add(new LabelLayer(mMap, l));
|
||||
|
||||
mMap.layers().add(new TileGridLayer(mMap));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDestroy() {
|
||||
super.onDestroy();
|
||||
|
||||
if (mCache != null)
|
||||
mCache.dispose();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,69 @@
|
||||
/*
|
||||
* Copyright 2016-2018 devemux86
|
||||
* Copyright 2017 Mathieu De Brito
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it under the
|
||||
* terms of the GNU Lesser General Public License as published by the Free Software
|
||||
* Foundation, either version 3 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License along with
|
||||
* this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package org.oscim.android.test;
|
||||
|
||||
import android.os.Bundle;
|
||||
|
||||
import org.oscim.android.cache.TileCache;
|
||||
import org.oscim.layers.TileGridLayer;
|
||||
import org.oscim.layers.tile.buildings.BuildingLayer;
|
||||
import org.oscim.layers.tile.vector.VectorTileLayer;
|
||||
import org.oscim.layers.tile.vector.labeling.LabelLayer;
|
||||
import org.oscim.theme.VtmThemes;
|
||||
import org.oscim.tiling.source.OkHttpEngine;
|
||||
import org.oscim.tiling.source.UrlTileSource;
|
||||
import org.oscim.tiling.source.mvt.MapzenMvtTileSource;
|
||||
|
||||
public class MapzenMvtActivity extends MapActivity {
|
||||
|
||||
private static final boolean USE_CACHE = false;
|
||||
|
||||
private TileCache mCache;
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
UrlTileSource tileSource = MapzenMvtTileSource.builder()
|
||||
.apiKey("xxxxxxx") // Put a proper API key
|
||||
.httpFactory(new OkHttpEngine.OkHttpFactory())
|
||||
//.locale("en")
|
||||
.build();
|
||||
|
||||
if (USE_CACHE) {
|
||||
// Cache the tiles into a local SQLite database
|
||||
mCache = new TileCache(this, null, "tile.db");
|
||||
mCache.setCacheSize(512 * (1 << 10));
|
||||
tileSource.setCache(mCache);
|
||||
}
|
||||
|
||||
VectorTileLayer l = mMap.setBaseMap(tileSource);
|
||||
mMap.setTheme(VtmThemes.MAPZEN);
|
||||
|
||||
mMap.layers().add(new BuildingLayer(mMap, l));
|
||||
mMap.layers().add(new LabelLayer(mMap, l));
|
||||
|
||||
mMap.layers().add(new TileGridLayer(mMap));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDestroy() {
|
||||
super.onDestroy();
|
||||
|
||||
if (mCache != null)
|
||||
mCache.dispose();
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright 2014 Hannes Janetzek
|
||||
* Copyright 2016 devemux86
|
||||
* Copyright 2016-2018 devemux86
|
||||
*
|
||||
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
||||
*
|
||||
@@ -17,60 +17,68 @@
|
||||
*/
|
||||
package org.oscim.android.test;
|
||||
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.Bundle;
|
||||
import android.widget.Toast;
|
||||
|
||||
import org.oscim.backend.canvas.Bitmap;
|
||||
import org.oscim.core.GeoPoint;
|
||||
import org.oscim.layers.TileGridLayer;
|
||||
import org.oscim.event.Gesture;
|
||||
import org.oscim.event.GestureListener;
|
||||
import org.oscim.event.MotionEvent;
|
||||
import org.oscim.layers.Layer;
|
||||
import org.oscim.layers.marker.ItemizedLayer;
|
||||
import org.oscim.layers.marker.MarkerItem;
|
||||
import org.oscim.layers.marker.MarkerSymbol;
|
||||
import org.oscim.layers.marker.MarkerSymbol.HotspotPlace;
|
||||
import org.oscim.layers.tile.bitmap.BitmapTileLayer;
|
||||
import org.oscim.map.Map;
|
||||
import org.oscim.tiling.TileSource;
|
||||
import org.oscim.tiling.source.OkHttpEngine;
|
||||
import org.oscim.tiling.source.bitmap.DefaultSources;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import static org.oscim.android.canvas.AndroidGraphics.drawableToBitmap;
|
||||
import static org.oscim.tiling.source.bitmap.DefaultSources.STAMEN_TONER;
|
||||
|
||||
public class MarkerOverlayActivity extends BitmapTileMapActivity
|
||||
public class MarkerOverlayActivity extends MapActivity
|
||||
implements ItemizedLayer.OnItemGestureListener<MarkerItem> {
|
||||
|
||||
private static final boolean BILLBOARDS = true;
|
||||
private MarkerSymbol mFocusMarker;
|
||||
|
||||
public MarkerOverlayActivity() {
|
||||
super(STAMEN_TONER.build());
|
||||
}
|
||||
static final boolean BILLBOARDS = true;
|
||||
MarkerSymbol mFocusMarker;
|
||||
ItemizedLayer<MarkerItem> mMarkerLayer;
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
mBitmapLayer.tileRenderer().setBitmapAlpha(0.5f);
|
||||
|
||||
/* directly load bitmap from resources */
|
||||
Bitmap bitmap = drawableToBitmap(getResources(), R.drawable.marker_poi);
|
||||
createLayers();
|
||||
}
|
||||
|
||||
void createLayers() {
|
||||
// Map events receiver
|
||||
mMap.layers().add(new MapEventsReceiver(mMap));
|
||||
|
||||
TileSource tileSource = DefaultSources.OPENSTREETMAP
|
||||
.httpFactory(new OkHttpEngine.OkHttpFactory())
|
||||
.build();
|
||||
mMap.layers().add(new BitmapTileLayer(mMap, tileSource));
|
||||
|
||||
Bitmap bitmapPoi = drawableToBitmap(getResources().getDrawable(R.drawable.marker_poi));
|
||||
MarkerSymbol symbol;
|
||||
if (BILLBOARDS)
|
||||
symbol = new MarkerSymbol(bitmap, HotspotPlace.BOTTOM_CENTER);
|
||||
symbol = new MarkerSymbol(bitmapPoi, HotspotPlace.BOTTOM_CENTER);
|
||||
else
|
||||
symbol = new MarkerSymbol(bitmap, HotspotPlace.CENTER, false);
|
||||
symbol = new MarkerSymbol(bitmapPoi, HotspotPlace.CENTER, false);
|
||||
|
||||
/* another option: use some bitmap drawable */
|
||||
Drawable d = getResources().getDrawable(R.drawable.marker_focus);
|
||||
Bitmap bitmapFocus = drawableToBitmap(getResources().getDrawable(R.drawable.marker_focus));
|
||||
if (BILLBOARDS)
|
||||
mFocusMarker = new MarkerSymbol(drawableToBitmap(d), HotspotPlace.BOTTOM_CENTER);
|
||||
mFocusMarker = new MarkerSymbol(bitmapFocus, HotspotPlace.BOTTOM_CENTER);
|
||||
else
|
||||
mFocusMarker = new MarkerSymbol(drawableToBitmap(d), HotspotPlace.CENTER, false);
|
||||
mFocusMarker = new MarkerSymbol(bitmapFocus, HotspotPlace.CENTER, false);
|
||||
|
||||
ItemizedLayer<MarkerItem> markerLayer =
|
||||
new ItemizedLayer<>(mMap, new ArrayList<MarkerItem>(),
|
||||
symbol, this);
|
||||
|
||||
mMap.layers().add(markerLayer);
|
||||
mMarkerLayer = new ItemizedLayer<>(mMap, new ArrayList<MarkerItem>(), symbol, this);
|
||||
mMap.layers().add(mMarkerLayer);
|
||||
|
||||
List<MarkerItem> pts = new ArrayList<>();
|
||||
|
||||
@@ -79,9 +87,7 @@ public class MarkerOverlayActivity extends BitmapTileMapActivity
|
||||
pts.add(new MarkerItem(lat + "/" + lon, "", new GeoPoint(lat, lon)));
|
||||
}
|
||||
|
||||
markerLayer.addItems(pts);
|
||||
|
||||
mMap.layers().add(new TileGridLayer(mMap));
|
||||
mMarkerLayer.addItems(pts);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -99,13 +105,45 @@ public class MarkerOverlayActivity extends BitmapTileMapActivity
|
||||
else
|
||||
item.setMarker(null);
|
||||
|
||||
Toast toast = Toast.makeText(this, item.getTitle(), Toast.LENGTH_SHORT);
|
||||
toast.show();
|
||||
Toast.makeText(this, "Marker tap\n" + item.getTitle(), Toast.LENGTH_SHORT).show();
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onItemLongPress(int index, MarkerItem item) {
|
||||
return false;
|
||||
if (item.getMarker() == null)
|
||||
item.setMarker(mFocusMarker);
|
||||
else
|
||||
item.setMarker(null);
|
||||
|
||||
Toast.makeText(this, "Marker long press\n" + item.getTitle(), Toast.LENGTH_SHORT).show();
|
||||
return true;
|
||||
}
|
||||
|
||||
class MapEventsReceiver extends Layer implements GestureListener {
|
||||
|
||||
MapEventsReceiver(Map map) {
|
||||
super(map);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onGesture(Gesture g, MotionEvent e) {
|
||||
if (g instanceof Gesture.Tap) {
|
||||
GeoPoint p = mMap.viewport().fromScreenPoint(e.getX(), e.getY());
|
||||
Toast.makeText(MarkerOverlayActivity.this, "Map tap\n" + p, Toast.LENGTH_SHORT).show();
|
||||
return true;
|
||||
}
|
||||
if (g instanceof Gesture.LongPress) {
|
||||
GeoPoint p = mMap.viewport().fromScreenPoint(e.getX(), e.getY());
|
||||
Toast.makeText(MarkerOverlayActivity.this, "Map long press\n" + p, Toast.LENGTH_SHORT).show();
|
||||
return true;
|
||||
}
|
||||
if (g instanceof Gesture.TripleTap) {
|
||||
GeoPoint p = mMap.viewport().fromScreenPoint(e.getX(), e.getY());
|
||||
Toast.makeText(MarkerOverlayActivity.this, "Map triple tap\n" + p, Toast.LENGTH_SHORT).show();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright 2016 Marvin W
|
||||
* Copyright 2016 devemux86
|
||||
* Copyright 2016-2017 devemux86
|
||||
*
|
||||
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
||||
*
|
||||
@@ -22,21 +22,21 @@ import android.os.Bundle;
|
||||
|
||||
import org.oscim.android.MapPreferences;
|
||||
import org.oscim.android.MapView;
|
||||
import org.oscim.core.Tile;
|
||||
import org.oscim.layers.tile.buildings.BuildingLayer;
|
||||
import org.oscim.layers.tile.vector.VectorTileLayer;
|
||||
import org.oscim.layers.tile.vector.labeling.LabelLayer;
|
||||
import org.oscim.map.Map;
|
||||
import org.oscim.theme.VtmThemes;
|
||||
import org.oscim.tiling.TileSource;
|
||||
import org.oscim.tiling.source.OkHttpEngine;
|
||||
import org.oscim.tiling.source.oscimap4.OSciMap4TileSource;
|
||||
|
||||
public class MultiMapActivity extends Activity {
|
||||
public class MultiMapViewActivity extends Activity {
|
||||
private MapView mMapView1, mMapView2;
|
||||
private MapPreferences mPrefs1, mPrefs2;
|
||||
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
Tile.SIZE = Tile.calculateTileSize(getResources().getDisplayMetrics().scaledDensity);
|
||||
setContentView(R.layout.activity_map_multi);
|
||||
|
||||
setTitle(getClass().getSimpleName());
|
||||
@@ -44,8 +44,11 @@ public class MultiMapActivity extends Activity {
|
||||
// 1st map view
|
||||
mMapView1 = (MapView) findViewById(R.id.mapView1);
|
||||
Map map1 = mMapView1.map();
|
||||
mPrefs1 = new MapPreferences(MultiMapActivity.class.getName() + "1", this);
|
||||
VectorTileLayer baseLayer1 = map1.setBaseMap(new OSciMap4TileSource());
|
||||
mPrefs1 = new MapPreferences(MultiMapViewActivity.class.getName() + "1", this);
|
||||
TileSource tileSource1 = OSciMap4TileSource.builder()
|
||||
.httpFactory(new OkHttpEngine.OkHttpFactory())
|
||||
.build();
|
||||
VectorTileLayer baseLayer1 = map1.setBaseMap(tileSource1);
|
||||
map1.layers().add(new BuildingLayer(map1, baseLayer1));
|
||||
map1.layers().add(new LabelLayer(map1, baseLayer1));
|
||||
map1.setTheme(VtmThemes.DEFAULT);
|
||||
@@ -53,8 +56,11 @@ public class MultiMapActivity extends Activity {
|
||||
// 2nd map view
|
||||
mMapView2 = (MapView) findViewById(R.id.mapView2);
|
||||
Map map2 = mMapView2.map();
|
||||
mPrefs2 = new MapPreferences(MultiMapActivity.class.getName() + "2", this);
|
||||
VectorTileLayer baseLayer2 = map2.setBaseMap(new OSciMap4TileSource());
|
||||
mPrefs2 = new MapPreferences(MultiMapViewActivity.class.getName() + "2", this);
|
||||
TileSource tileSource2 = OSciMap4TileSource.builder()
|
||||
.httpFactory(new OkHttpEngine.OkHttpFactory())
|
||||
.build();
|
||||
VectorTileLayer baseLayer2 = map2.setBaseMap(tileSource2);
|
||||
map2.layers().add(new BuildingLayer(map2, baseLayer2));
|
||||
map2.layers().add(new LabelLayer(map2, baseLayer2));
|
||||
map2.setTheme(VtmThemes.DEFAULT);
|
||||
@@ -0,0 +1,68 @@
|
||||
/*
|
||||
* Copyright 2018 devemux86
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it under the
|
||||
* terms of the GNU Lesser General Public License as published by the Free Software
|
||||
* Foundation, either version 3 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License along with
|
||||
* this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package org.oscim.android.test;
|
||||
|
||||
import android.os.Bundle;
|
||||
|
||||
import org.oscim.android.cache.TileCache;
|
||||
import org.oscim.layers.TileGridLayer;
|
||||
import org.oscim.layers.tile.buildings.BuildingLayer;
|
||||
import org.oscim.layers.tile.vector.VectorTileLayer;
|
||||
import org.oscim.layers.tile.vector.labeling.LabelLayer;
|
||||
import org.oscim.theme.VtmThemes;
|
||||
import org.oscim.tiling.source.OkHttpEngine;
|
||||
import org.oscim.tiling.source.UrlTileSource;
|
||||
import org.oscim.tiling.source.geojson.NextzenGeojsonTileSource;
|
||||
|
||||
public class NextzenGeojsonActivity extends MapActivity {
|
||||
|
||||
private static final boolean USE_CACHE = false;
|
||||
|
||||
private TileCache mCache;
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
UrlTileSource tileSource = NextzenGeojsonTileSource.builder()
|
||||
.apiKey("xxxxxxx") // Put a proper API key
|
||||
.httpFactory(new OkHttpEngine.OkHttpFactory())
|
||||
//.locale("en")
|
||||
.build();
|
||||
|
||||
if (USE_CACHE) {
|
||||
// Cache the tiles into a local SQLite database
|
||||
mCache = new TileCache(this, null, "tile.db");
|
||||
mCache.setCacheSize(512 * (1 << 10));
|
||||
tileSource.setCache(mCache);
|
||||
}
|
||||
|
||||
VectorTileLayer l = mMap.setBaseMap(tileSource);
|
||||
mMap.setTheme(VtmThemes.MAPZEN);
|
||||
|
||||
mMap.layers().add(new BuildingLayer(mMap, l));
|
||||
mMap.layers().add(new LabelLayer(mMap, l));
|
||||
|
||||
mMap.layers().add(new TileGridLayer(mMap));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDestroy() {
|
||||
super.onDestroy();
|
||||
|
||||
if (mCache != null)
|
||||
mCache.dispose();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,68 @@
|
||||
/*
|
||||
* Copyright 2018 devemux86
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it under the
|
||||
* terms of the GNU Lesser General Public License as published by the Free Software
|
||||
* Foundation, either version 3 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License along with
|
||||
* this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package org.oscim.android.test;
|
||||
|
||||
import android.os.Bundle;
|
||||
|
||||
import org.oscim.android.cache.TileCache;
|
||||
import org.oscim.layers.TileGridLayer;
|
||||
import org.oscim.layers.tile.buildings.BuildingLayer;
|
||||
import org.oscim.layers.tile.vector.VectorTileLayer;
|
||||
import org.oscim.layers.tile.vector.labeling.LabelLayer;
|
||||
import org.oscim.theme.VtmThemes;
|
||||
import org.oscim.tiling.source.OkHttpEngine;
|
||||
import org.oscim.tiling.source.UrlTileSource;
|
||||
import org.oscim.tiling.source.mvt.NextzenMvtTileSource;
|
||||
|
||||
public class NextzenMvtActivity extends MapActivity {
|
||||
|
||||
private static final boolean USE_CACHE = false;
|
||||
|
||||
private TileCache mCache;
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
UrlTileSource tileSource = NextzenMvtTileSource.builder()
|
||||
.apiKey("xxxxxxx") // Put a proper API key
|
||||
.httpFactory(new OkHttpEngine.OkHttpFactory())
|
||||
//.locale("en")
|
||||
.build();
|
||||
|
||||
if (USE_CACHE) {
|
||||
// Cache the tiles into a local SQLite database
|
||||
mCache = new TileCache(this, null, "tile.db");
|
||||
mCache.setCacheSize(512 * (1 << 10));
|
||||
tileSource.setCache(mCache);
|
||||
}
|
||||
|
||||
VectorTileLayer l = mMap.setBaseMap(tileSource);
|
||||
mMap.setTheme(VtmThemes.MAPZEN);
|
||||
|
||||
mMap.layers().add(new BuildingLayer(mMap, l));
|
||||
mMap.layers().add(new LabelLayer(mMap, l));
|
||||
|
||||
mMap.layers().add(new TileGridLayer(mMap));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDestroy() {
|
||||
super.onDestroy();
|
||||
|
||||
if (mCache != null)
|
||||
mCache.dispose();
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2016 devemux86
|
||||
* Copyright 2016-2017 devemux86
|
||||
*
|
||||
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
||||
*
|
||||
@@ -20,13 +20,14 @@ import android.os.Bundle;
|
||||
|
||||
import org.oscim.android.cache.TileCache;
|
||||
import org.oscim.layers.tile.TileLayer;
|
||||
import org.oscim.layers.tile.buildings.S3DBLayer;
|
||||
import org.oscim.layers.tile.buildings.S3DBTileLayer;
|
||||
import org.oscim.layers.tile.vector.labeling.LabelLayer;
|
||||
import org.oscim.theme.VtmThemes;
|
||||
import org.oscim.tiling.TileSource;
|
||||
import org.oscim.tiling.source.OkHttpEngine;
|
||||
import org.oscim.tiling.source.oscimap4.OSciMap4TileSource;
|
||||
|
||||
public class S3DBMapActivity extends BaseMapActivity {
|
||||
public class OSciMapS3DBActivity extends BaseMapActivity {
|
||||
|
||||
TileCache mS3dbCache;
|
||||
|
||||
@@ -37,6 +38,7 @@ public class S3DBMapActivity extends BaseMapActivity {
|
||||
mMap.setTheme(VtmThemes.DEFAULT);
|
||||
|
||||
TileSource ts = OSciMap4TileSource.builder()
|
||||
.httpFactory(new OkHttpEngine.OkHttpFactory())
|
||||
.url("http://opensciencemap.org/tiles/s3db")
|
||||
.zoomMin(16)
|
||||
.zoomMax(16)
|
||||
@@ -47,7 +49,7 @@ public class S3DBMapActivity extends BaseMapActivity {
|
||||
mS3dbCache.setCacheSize(512 * (1 << 10));
|
||||
ts.setCache(mS3dbCache);
|
||||
}
|
||||
TileLayer tl = new S3DBLayer(mMap, ts, true, false);
|
||||
TileLayer tl = new S3DBTileLayer(mMap, ts, true, false);
|
||||
mMap.layers().add(tl);
|
||||
mMap.layers().add(new LabelLayer(mMap, mBaseLayer));
|
||||
}
|
||||
@@ -0,0 +1,68 @@
|
||||
/*
|
||||
* Copyright 2016-2018 devemux86
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it under the
|
||||
* terms of the GNU Lesser General Public License as published by the Free Software
|
||||
* Foundation, either version 3 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License along with
|
||||
* this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package org.oscim.android.test;
|
||||
|
||||
import android.os.Bundle;
|
||||
|
||||
import org.oscim.android.cache.TileCache;
|
||||
import org.oscim.layers.TileGridLayer;
|
||||
import org.oscim.layers.tile.buildings.BuildingLayer;
|
||||
import org.oscim.layers.tile.vector.VectorTileLayer;
|
||||
import org.oscim.layers.tile.vector.labeling.LabelLayer;
|
||||
import org.oscim.theme.VtmThemes;
|
||||
import org.oscim.tiling.source.OkHttpEngine;
|
||||
import org.oscim.tiling.source.UrlTileSource;
|
||||
import org.oscim.tiling.source.mvt.OpenMapTilesMvtTileSource;
|
||||
|
||||
public class OpenMapTilesMvtActivity extends MapActivity {
|
||||
|
||||
private static final boolean USE_CACHE = false;
|
||||
|
||||
private TileCache mCache;
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
UrlTileSource tileSource = OpenMapTilesMvtTileSource.builder()
|
||||
.apiKey("xxxxxxx") // Put a proper API key
|
||||
.httpFactory(new OkHttpEngine.OkHttpFactory())
|
||||
//.locale("en")
|
||||
.build();
|
||||
|
||||
if (USE_CACHE) {
|
||||
// Cache the tiles into a local SQLite database
|
||||
mCache = new TileCache(this, null, "tile.db");
|
||||
mCache.setCacheSize(512 * (1 << 10));
|
||||
tileSource.setCache(mCache);
|
||||
}
|
||||
|
||||
VectorTileLayer l = mMap.setBaseMap(tileSource);
|
||||
mMap.setTheme(VtmThemes.OPENMAPTILES);
|
||||
|
||||
mMap.layers().add(new BuildingLayer(mMap, l));
|
||||
mMap.layers().add(new LabelLayer(mMap, l));
|
||||
|
||||
mMap.layers().add(new TileGridLayer(mMap));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDestroy() {
|
||||
super.onDestroy();
|
||||
|
||||
if (mCache != null)
|
||||
mCache.dispose();
|
||||
}
|
||||
}
|
||||
@@ -1,72 +0,0 @@
|
||||
/*
|
||||
* Copyright 2014 Hannes Janetzek
|
||||
* Copyright 2016 devemux86
|
||||
*
|
||||
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it under the
|
||||
* terms of the GNU Lesser General Public License as published by the Free Software
|
||||
* Foundation, either version 3 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License along with
|
||||
* this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package org.oscim.android.test;
|
||||
|
||||
import android.os.Bundle;
|
||||
|
||||
import org.oscim.layers.TileGridLayer;
|
||||
import org.oscim.layers.tile.buildings.BuildingLayer;
|
||||
import org.oscim.layers.tile.vector.VectorTileLayer;
|
||||
import org.oscim.layers.tile.vector.labeling.LabelLayer;
|
||||
import org.oscim.theme.IRenderTheme;
|
||||
import org.oscim.theme.ThemeLoader;
|
||||
import org.oscim.theme.VtmThemes;
|
||||
import org.oscim.tiling.source.geojson.OsmBuildingJsonTileSource;
|
||||
import org.oscim.tiling.source.geojson.OsmLanduseJsonTileSource;
|
||||
import org.oscim.tiling.source.geojson.OsmRoadLabelJsonTileSource;
|
||||
import org.oscim.tiling.source.geojson.OsmRoadLineJsonTileSource;
|
||||
import org.oscim.tiling.source.geojson.OsmWaterJsonTileSource;
|
||||
|
||||
public class OsmJsonMapActivity extends MapActivity {
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
IRenderTheme theme = ThemeLoader.load(VtmThemes.DEFAULT);
|
||||
|
||||
mMap.setBaseMap(new VectorTileLayer(mMap, new OsmLanduseJsonTileSource()));
|
||||
mMap.setTheme(theme);
|
||||
|
||||
VectorTileLayer l = new VectorTileLayer(mMap, new OsmWaterJsonTileSource());
|
||||
l.setRenderTheme(theme);
|
||||
l.tileRenderer().setOverdrawColor(0);
|
||||
mMap.layers().add(l);
|
||||
|
||||
l = new VectorTileLayer(mMap, new OsmRoadLineJsonTileSource());
|
||||
l.setRenderTheme(theme);
|
||||
l.tileRenderer().setOverdrawColor(0);
|
||||
mMap.layers().add(l);
|
||||
|
||||
l = new VectorTileLayer(mMap, new OsmBuildingJsonTileSource());
|
||||
l.setRenderTheme(theme);
|
||||
l.tileRenderer().setOverdrawColor(0);
|
||||
mMap.layers().add(l);
|
||||
mMap.layers().add(new BuildingLayer(mMap, l));
|
||||
|
||||
l = new VectorTileLayer(mMap, new OsmRoadLabelJsonTileSource());
|
||||
l.setRenderTheme(theme);
|
||||
l.tileRenderer().setOverdrawColor(0);
|
||||
mMap.layers().add(l);
|
||||
mMap.layers().add(new LabelLayer(mMap, l));
|
||||
|
||||
mMap.layers().add(new TileGridLayer(mMap));
|
||||
|
||||
mMap.setMapPosition(53.08, 8.83, Math.pow(2, 16));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
/*
|
||||
* Copyright 2017-2018 devemux86
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it under the
|
||||
* terms of the GNU Lesser General Public License as published by the Free Software
|
||||
* Foundation, either version 3 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License along with
|
||||
* this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package org.oscim.android.test;
|
||||
|
||||
import android.os.Bundle;
|
||||
|
||||
import org.oscim.utils.Parameters;
|
||||
|
||||
public class POTTextureActivity extends SimpleMapActivity {
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
Parameters.POT_TEXTURES = true;
|
||||
|
||||
super.onCreate(savedInstanceState);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDestroy() {
|
||||
super.onDestroy();
|
||||
|
||||
Parameters.POT_TEXTURES = false;
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright 2014 Hannes Janetzek
|
||||
* Copyright 2016 devemux86
|
||||
* Copyright 2016-2018 devemux86
|
||||
*
|
||||
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
||||
*
|
||||
@@ -18,40 +18,48 @@
|
||||
package org.oscim.android.test;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.widget.Toast;
|
||||
|
||||
import org.oscim.backend.CanvasAdapter;
|
||||
import org.oscim.backend.canvas.Color;
|
||||
import org.oscim.core.MapPosition;
|
||||
import org.oscim.event.Event;
|
||||
import org.oscim.event.Gesture;
|
||||
import org.oscim.event.MotionEvent;
|
||||
import org.oscim.layers.vector.PathLayer;
|
||||
import org.oscim.map.Map.UpdateListener;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import static org.oscim.tiling.source.bitmap.DefaultSources.STAMEN_TONER;
|
||||
|
||||
/**
|
||||
* This is a very INEFFICIENT and somewhat less useful example for how to use
|
||||
* PathLayers!
|
||||
*/
|
||||
public class PathOverlayActivity extends BitmapTileMapActivity {
|
||||
public class PathOverlayActivity extends BitmapTileActivity {
|
||||
|
||||
private static final boolean ANIMATION = true;
|
||||
|
||||
private List<PathLayer> mPathLayers = new ArrayList<>();
|
||||
|
||||
public PathOverlayActivity() {
|
||||
super(STAMEN_TONER.build());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
mBitmapLayer.tileRenderer().setBitmapAlpha(0.5f);
|
||||
|
||||
for (double lat = -90; lat <= 90; lat += 5) {
|
||||
int c = Color.fade(Color.rainbow((float) (lat + 90) / 180), 0.5f);
|
||||
PathLayer pathLayer = new PathLayer(mMap, c, 6);
|
||||
PathLayer pathLayer = new PathLayer(mMap, c, 6 * CanvasAdapter.getScale()) {
|
||||
@Override
|
||||
public boolean onGesture(Gesture g, MotionEvent e) {
|
||||
if (g instanceof Gesture.Tap) {
|
||||
if (contains(e.getX(), e.getY())) {
|
||||
Toast.makeText(PathOverlayActivity.this, "PathLayer tap\n" + mMap.viewport().fromScreenPoint(e.getX(), e.getY()), Toast.LENGTH_SHORT).show();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
};
|
||||
mMap.layers().add(pathLayer);
|
||||
mPathLayers.add(pathLayer);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,196 @@
|
||||
/*
|
||||
* Copyright 2017-2018 devemux86
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it under the
|
||||
* terms of the GNU Lesser General Public License as published by the Free Software
|
||||
* Foundation, either version 3 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License along with
|
||||
* this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package org.oscim.android.test;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.os.AsyncTask;
|
||||
import android.os.Bundle;
|
||||
import android.view.Menu;
|
||||
import android.widget.Toast;
|
||||
|
||||
import org.mapsforge.poi.android.storage.AndroidPoiPersistenceManagerFactory;
|
||||
import org.mapsforge.poi.storage.ExactMatchPoiCategoryFilter;
|
||||
import org.mapsforge.poi.storage.PoiCategoryFilter;
|
||||
import org.mapsforge.poi.storage.PoiCategoryManager;
|
||||
import org.mapsforge.poi.storage.PoiPersistenceManager;
|
||||
import org.mapsforge.poi.storage.PointOfInterest;
|
||||
import org.oscim.android.filepicker.FilePicker;
|
||||
import org.oscim.android.filepicker.FilterByFileExtension;
|
||||
import org.oscim.backend.canvas.Bitmap;
|
||||
import org.oscim.core.BoundingBox;
|
||||
import org.oscim.core.GeoPoint;
|
||||
import org.oscim.event.Gesture;
|
||||
import org.oscim.event.GestureListener;
|
||||
import org.oscim.event.MotionEvent;
|
||||
import org.oscim.layers.Layer;
|
||||
import org.oscim.layers.marker.ItemizedLayer;
|
||||
import org.oscim.layers.marker.MarkerItem;
|
||||
import org.oscim.layers.marker.MarkerSymbol;
|
||||
import org.oscim.map.Map;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.lang.ref.WeakReference;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
import static org.oscim.android.canvas.AndroidGraphics.drawableToBitmap;
|
||||
|
||||
/**
|
||||
* POI search.<br/>
|
||||
* Long press on map to search inside visible bounding box.<br/>
|
||||
* Tap on POIs to show their name (in default locale).
|
||||
*/
|
||||
public class PoiSearchActivity extends MapsforgeActivity implements ItemizedLayer.OnItemGestureListener<MarkerItem> {
|
||||
|
||||
private static final Logger log = LoggerFactory.getLogger(PoiSearchActivity.class);
|
||||
|
||||
private static final String POI_CATEGORY = "Restaurants";
|
||||
private static final int SELECT_POI_FILE = MapsforgeActivity.SELECT_THEME_FILE + 1;
|
||||
|
||||
private ItemizedLayer<MarkerItem> mMarkerLayer;
|
||||
private PoiPersistenceManager mPersistenceManager;
|
||||
|
||||
public static class PoiFilePicker extends FilePicker {
|
||||
public PoiFilePicker() {
|
||||
setFileDisplayFilter(new FilterByFileExtension(".poi"));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
// Map events receiver
|
||||
mMap.layers().add(new PoiSearchActivity.MapEventsReceiver(mMap));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDestroy() {
|
||||
if (mPersistenceManager != null)
|
||||
mPersistenceManager.close();
|
||||
|
||||
super.onDestroy();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCreateOptionsMenu(Menu menu) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
|
||||
super.onActivityResult(requestCode, resultCode, intent);
|
||||
|
||||
if (requestCode == SELECT_MAP_FILE) {
|
||||
if (mTileSource != null)
|
||||
startActivityForResult(new Intent(this, PoiFilePicker.class),
|
||||
SELECT_POI_FILE);
|
||||
else
|
||||
finish();
|
||||
} else if (requestCode == SELECT_POI_FILE) {
|
||||
if (resultCode != RESULT_OK || intent == null || intent.getStringExtra(FilePicker.SELECTED_FILE) == null) {
|
||||
finish();
|
||||
return;
|
||||
}
|
||||
|
||||
String file = intent.getStringExtra(FilePicker.SELECTED_FILE);
|
||||
mPersistenceManager = AndroidPoiPersistenceManagerFactory.getPoiPersistenceManager(file);
|
||||
|
||||
Bitmap bitmap = drawableToBitmap(getResources().getDrawable(R.drawable.marker_green));
|
||||
MarkerSymbol symbol = new MarkerSymbol(bitmap, MarkerSymbol.HotspotPlace.BOTTOM_CENTER);
|
||||
mMarkerLayer = new ItemizedLayer<>(mMap, new ArrayList<MarkerItem>(), symbol, this);
|
||||
mMap.layers().add(mMarkerLayer);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onItemSingleTapUp(int index, MarkerItem item) {
|
||||
Toast.makeText(this, item.getTitle(), Toast.LENGTH_SHORT).show();
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onItemLongPress(int index, MarkerItem item) {
|
||||
return false;
|
||||
}
|
||||
|
||||
private class MapEventsReceiver extends Layer implements GestureListener {
|
||||
|
||||
MapEventsReceiver(Map map) {
|
||||
super(map);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onGesture(Gesture g, MotionEvent e) {
|
||||
if (g instanceof Gesture.LongPress) {
|
||||
// Clear overlays
|
||||
mMarkerLayer.removeAllItems();
|
||||
mMap.render();
|
||||
// POI search
|
||||
new PoiSearchTask(PoiSearchActivity.this, POI_CATEGORY).execute(mMap.getBoundingBox(0));
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private class PoiSearchTask extends AsyncTask<BoundingBox, Void, Collection<PointOfInterest>> {
|
||||
private final WeakReference<PoiSearchActivity> weakActivity;
|
||||
private final String category;
|
||||
|
||||
private PoiSearchTask(PoiSearchActivity activity, String category) {
|
||||
this.weakActivity = new WeakReference<>(activity);
|
||||
this.category = category;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Collection<PointOfInterest> doInBackground(BoundingBox... params) {
|
||||
// Search POI
|
||||
try {
|
||||
PoiCategoryManager categoryManager = mPersistenceManager.getCategoryManager();
|
||||
PoiCategoryFilter categoryFilter = new ExactMatchPoiCategoryFilter();
|
||||
categoryFilter.addCategory(categoryManager.getPoiCategoryByTitle(category));
|
||||
org.mapsforge.core.model.BoundingBox bb = new org.mapsforge.core.model.BoundingBox(
|
||||
params[0].getMinLatitude(), params[0].getMinLongitude(),
|
||||
params[0].getMaxLatitude(), params[0].getMaxLongitude());
|
||||
return mPersistenceManager.findInRect(bb, categoryFilter, null, Integer.MAX_VALUE);
|
||||
} catch (Throwable t) {
|
||||
log.error(t.getMessage(), t);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPostExecute(Collection<PointOfInterest> pointOfInterests) {
|
||||
PoiSearchActivity activity = weakActivity.get();
|
||||
if (activity == null) {
|
||||
return;
|
||||
}
|
||||
Toast.makeText(activity, category + ": " + (pointOfInterests != null ? pointOfInterests.size() : 0), Toast.LENGTH_SHORT).show();
|
||||
if (pointOfInterests == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Overlay POI
|
||||
List<MarkerItem> pts = new ArrayList<>();
|
||||
for (PointOfInterest pointOfInterest : pointOfInterests)
|
||||
pts.add(new MarkerItem(pointOfInterest.getName(), "", new GeoPoint(pointOfInterest.getLatitude(), pointOfInterest.getLongitude())));
|
||||
mMarkerLayer.addItems(pts);
|
||||
mMap.render();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,145 @@
|
||||
/*
|
||||
* Copyright 2017-2018 devemux86
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it under the
|
||||
* terms of the GNU Lesser General Public License as published by the Free Software
|
||||
* Foundation, either version 3 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License along with
|
||||
* this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package org.oscim.android.test;
|
||||
|
||||
import android.app.AlertDialog;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.view.Menu;
|
||||
|
||||
import org.oscim.backend.CanvasAdapter;
|
||||
import org.oscim.core.GeoPoint;
|
||||
import org.oscim.core.GeometryBuffer;
|
||||
import org.oscim.core.MercatorProjection;
|
||||
import org.oscim.core.Point;
|
||||
import org.oscim.core.Tag;
|
||||
import org.oscim.core.Tile;
|
||||
import org.oscim.event.Gesture;
|
||||
import org.oscim.event.GestureListener;
|
||||
import org.oscim.event.MotionEvent;
|
||||
import org.oscim.layers.Layer;
|
||||
import org.oscim.layers.TileGridLayer;
|
||||
import org.oscim.map.Map;
|
||||
import org.oscim.tiling.source.mapfile.MapDatabase;
|
||||
import org.oscim.tiling.source.mapfile.MapReadResult;
|
||||
import org.oscim.tiling.source.mapfile.PointOfInterest;
|
||||
import org.oscim.tiling.source.mapfile.Way;
|
||||
import org.oscim.utils.GeoPointUtils;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Reverse Geocoding with long press.
|
||||
* <p/>
|
||||
* - POI in specified radius.<br/>
|
||||
* - Ways containing touch point.
|
||||
*/
|
||||
public class ReverseGeocodeActivity extends MapsforgeActivity {
|
||||
|
||||
private static final int TOUCH_RADIUS = 32 / 2;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
// Map events receiver
|
||||
mMap.layers().add(new MapEventsReceiver(mMap));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCreateOptionsMenu(Menu menu) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
|
||||
super.onActivityResult(requestCode, resultCode, intent);
|
||||
|
||||
if (requestCode == SELECT_MAP_FILE) {
|
||||
// For debug
|
||||
TileGridLayer gridLayer = new TileGridLayer(mMap);
|
||||
mMap.layers().add(gridLayer);
|
||||
}
|
||||
}
|
||||
|
||||
private class MapEventsReceiver extends Layer implements GestureListener {
|
||||
|
||||
MapEventsReceiver(Map map) {
|
||||
super(map);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onGesture(Gesture g, MotionEvent e) {
|
||||
if (g instanceof Gesture.LongPress) {
|
||||
GeoPoint p = mMap.viewport().fromScreenPoint(e.getX(), e.getY());
|
||||
|
||||
// Read all labeled POI and ways for the area covered by the tiles under touch
|
||||
float touchRadius = TOUCH_RADIUS * CanvasAdapter.getScale();
|
||||
long mapSize = MercatorProjection.getMapSize((byte) mMap.getMapPosition().getZoomLevel());
|
||||
double pixelX = MercatorProjection.longitudeToPixelX(p.getLongitude(), mapSize);
|
||||
double pixelY = MercatorProjection.latitudeToPixelY(p.getLatitude(), mapSize);
|
||||
int tileXMin = MercatorProjection.pixelXToTileX(pixelX - touchRadius, (byte) mMap.getMapPosition().getZoomLevel());
|
||||
int tileXMax = MercatorProjection.pixelXToTileX(pixelX + touchRadius, (byte) mMap.getMapPosition().getZoomLevel());
|
||||
int tileYMin = MercatorProjection.pixelYToTileY(pixelY - touchRadius, (byte) mMap.getMapPosition().getZoomLevel());
|
||||
int tileYMax = MercatorProjection.pixelYToTileY(pixelY + touchRadius, (byte) mMap.getMapPosition().getZoomLevel());
|
||||
Tile upperLeft = new Tile(tileXMin, tileYMin, (byte) mMap.getMapPosition().getZoomLevel());
|
||||
Tile lowerRight = new Tile(tileXMax, tileYMax, (byte) mMap.getMapPosition().getZoomLevel());
|
||||
MapReadResult mapReadResult = ((MapDatabase) mTileSource.getDataSource()).readLabels(upperLeft, lowerRight);
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
// Filter POI
|
||||
sb.append("*** POI ***");
|
||||
for (PointOfInterest pointOfInterest : mapReadResult.pointOfInterests) {
|
||||
Point layerXY = new Point();
|
||||
mMap.viewport().toScreenPoint(pointOfInterest.position, false, layerXY);
|
||||
Point tapXY = new Point(e.getX(), e.getY());
|
||||
if (layerXY.distance(tapXY) > touchRadius) {
|
||||
continue;
|
||||
}
|
||||
sb.append("\n");
|
||||
List<Tag> tags = pointOfInterest.tags;
|
||||
for (Tag tag : tags) {
|
||||
sb.append("\n").append(tag.key).append("=").append(tag.value);
|
||||
}
|
||||
}
|
||||
|
||||
// Filter ways
|
||||
sb.append("\n\n").append("*** WAYS ***");
|
||||
for (Way way : mapReadResult.ways) {
|
||||
if (way.geometryType != GeometryBuffer.GeometryType.POLY
|
||||
|| !GeoPointUtils.contains(way.geoPoints[0], p)) {
|
||||
continue;
|
||||
}
|
||||
sb.append("\n");
|
||||
List<Tag> tags = way.tags;
|
||||
for (Tag tag : tags) {
|
||||
sb.append("\n").append(tag.key).append("=").append(tag.value);
|
||||
}
|
||||
}
|
||||
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(ReverseGeocodeActivity.this);
|
||||
builder.setIcon(android.R.drawable.ic_menu_search);
|
||||
builder.setTitle(R.string.dialog_reverse_geocoding_title);
|
||||
builder.setMessage(sb);
|
||||
builder.setPositiveButton(R.string.ok, null);
|
||||
builder.show();
|
||||
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,78 @@
|
||||
/*
|
||||
* Copyright 2014 Hannes Janetzek
|
||||
* Copyright 2016-2017 devemux86
|
||||
* Copyright 2017 Longri
|
||||
*
|
||||
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it under the
|
||||
* terms of the GNU Lesser General Public License as published by the Free Software
|
||||
* Foundation, either version 3 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License along with
|
||||
* this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package org.oscim.android.test;
|
||||
|
||||
import android.widget.Toast;
|
||||
|
||||
import org.oscim.layers.marker.MarkerItem;
|
||||
|
||||
import java.util.Timer;
|
||||
import java.util.TimerTask;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
|
||||
public class RotateMarkerOverlayActivity extends MarkerOverlayActivity {
|
||||
|
||||
private Timer timer;
|
||||
private int markerCount = 0;
|
||||
|
||||
private void itemEvent(final MarkerItem item) {
|
||||
if (item.getMarker() == null) {
|
||||
item.setMarker(mFocusMarker);
|
||||
markerCount++;
|
||||
final AtomicInteger rotValue = new AtomicInteger(0);
|
||||
if (timer != null)
|
||||
timer.cancel();
|
||||
timer = new Timer();
|
||||
TimerTask timerTask = new TimerTask() {
|
||||
@Override
|
||||
public void run() {
|
||||
float value = (float) (rotValue.incrementAndGet() * 10);
|
||||
item.setRotation(value);
|
||||
if (rotValue.get() > 36)
|
||||
rotValue.set(0);
|
||||
mMarkerLayer.update();
|
||||
mMap.updateMap(true);
|
||||
}
|
||||
};
|
||||
timer.schedule(timerTask, 1000, 1000);
|
||||
|
||||
} else {
|
||||
item.setMarker(null);
|
||||
markerCount--;
|
||||
if (timer != null && markerCount == 0)
|
||||
timer.cancel();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onItemSingleTapUp(int index, MarkerItem item) {
|
||||
itemEvent(item);
|
||||
|
||||
Toast.makeText(this, "Marker tap\n" + item.getTitle(), Toast.LENGTH_SHORT).show();
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onItemLongPress(int index, MarkerItem item) {
|
||||
itemEvent(item);
|
||||
|
||||
Toast.makeText(this, "Marker long press\n" + item.getTitle(), Toast.LENGTH_SHORT).show();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,9 @@
|
||||
/*
|
||||
* Copyright 2010, 2011, 2012, 2013 mapsforge.org
|
||||
* Copyright 2013 Hannes Janetzek
|
||||
* Copyright 2016 devemux86
|
||||
* Copyright 2016-2018 devemux86
|
||||
* Copyright 2017-2018 Longri
|
||||
* Copyright 2017 nebular
|
||||
*
|
||||
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
||||
*
|
||||
@@ -20,59 +22,117 @@ package org.oscim.android.test;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.net.Uri;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.view.Gravity;
|
||||
import android.view.View;
|
||||
import android.view.View.OnClickListener;
|
||||
import android.widget.Button;
|
||||
import android.widget.LinearLayout;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import android.widget.TextView;
|
||||
|
||||
/**
|
||||
* A simple start screen for the sample activities.
|
||||
* Start screen for the sample activities.
|
||||
*/
|
||||
public class Samples extends Activity {
|
||||
public static Logger log = LoggerFactory.getLogger(Samples.class);
|
||||
|
||||
private Button createButton(Class<?> clazz) {
|
||||
return this.createButton(clazz, null, null);
|
||||
}
|
||||
|
||||
private Button createButton(final Class<?> clazz, String text, View.OnClickListener customListener) {
|
||||
Button button = new Button(this);
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH)
|
||||
button.setAllCaps(false);
|
||||
if (text == null) {
|
||||
button.setText(clazz.getSimpleName());
|
||||
} else {
|
||||
button.setText(text);
|
||||
}
|
||||
if (customListener == null) {
|
||||
button.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
startActivity(new Intent(Samples.this, clazz));
|
||||
}
|
||||
});
|
||||
} else {
|
||||
button.setOnClickListener(customListener);
|
||||
}
|
||||
return button;
|
||||
}
|
||||
|
||||
private TextView createLabel(String text) {
|
||||
TextView textView = new TextView(this);
|
||||
textView.setGravity(Gravity.CENTER);
|
||||
if (text == null) {
|
||||
textView.setText("----------");
|
||||
} else {
|
||||
textView.setText(text);
|
||||
}
|
||||
return textView;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
setContentView(R.layout.activity_samples);
|
||||
LinearLayout linearLayout = (LinearLayout) findViewById(R.id.samples);
|
||||
LinearLayout linearLayout = findViewById(R.id.samples);
|
||||
linearLayout.addView(createButton(GettingStarted.class));
|
||||
linearLayout.addView(createLabel(null));
|
||||
linearLayout.addView(createButton(SimpleMapActivity.class));
|
||||
linearLayout.addView(createButton(BitmapTileMapActivity.class));
|
||||
linearLayout.addView(createButton(MapsforgeMapActivity.class));
|
||||
linearLayout.addView(createButton(MapsforgeActivity.class));
|
||||
/*linearLayout.addView(createButton(MapzenMvtActivity.class));
|
||||
linearLayout.addView(createButton(MapzenGeojsonActivity.class));*/
|
||||
linearLayout.addView(createButton(NextzenMvtActivity.class));
|
||||
linearLayout.addView(createButton(NextzenGeojsonActivity.class));
|
||||
linearLayout.addView(createButton(OpenMapTilesMvtActivity.class));
|
||||
linearLayout.addView(createButton(GdxActivity.class));
|
||||
|
||||
linearLayout.addView(createLabel("Features"));
|
||||
linearLayout.addView(createButton(null, "GraphHopper Routing", new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://github.com/graphhopper/graphhopper/tree/master/android")));
|
||||
}
|
||||
}));
|
||||
linearLayout.addView(createButton(LocationActivity.class));
|
||||
linearLayout.addView(createButton(LocationTextureActivity.class));
|
||||
linearLayout.addView(createButton(PoiSearchActivity.class));
|
||||
|
||||
linearLayout.addView(createLabel("Vector Features"));
|
||||
linearLayout.addView(createButton(MapsforgeStyleActivity.class));
|
||||
linearLayout.addView(createButton(MapsforgePolyLabelActivity.class));
|
||||
linearLayout.addView(createButton(MapsforgeS3DBActivity.class));
|
||||
linearLayout.addView(createButton(AtlasThemeActivity.class));
|
||||
linearLayout.addView(createButton(POTTextureActivity.class));
|
||||
|
||||
linearLayout.addView(createLabel("Raster Maps"));
|
||||
linearLayout.addView(createButton(BitmapTileActivity.class));
|
||||
|
||||
linearLayout.addView(createLabel("Overlays"));
|
||||
linearLayout.addView(createButton(MarkerOverlayActivity.class));
|
||||
linearLayout.addView(createButton(RotateMarkerOverlayActivity.class));
|
||||
linearLayout.addView(createButton(AtlasMarkerOverlayActivity.class));
|
||||
linearLayout.addView(createButton(AtlasMultiTextureActivity.class));
|
||||
linearLayout.addView(createButton(ClusterMarkerOverlayActivity.class));
|
||||
linearLayout.addView(createButton(PathOverlayActivity.class));
|
||||
linearLayout.addView(createButton(LineTexActivity.class));
|
||||
linearLayout.addView(createButton(VectorLayerActivity.class));
|
||||
|
||||
linearLayout.addView(createLabel("User Interaction"));
|
||||
linearLayout.addView(createButton(Animator2Activity.class));
|
||||
linearLayout.addView(createButton(MapEventLayer2Activity.class));
|
||||
linearLayout.addView(createButton(LayerGroupActivity.class));
|
||||
|
||||
linearLayout.addView(createLabel("Dual Map Views"));
|
||||
linearLayout.addView(createButton(MultiMapViewActivity.class));
|
||||
|
||||
linearLayout.addView(createLabel("Experiments"));
|
||||
linearLayout.addView(createButton(ReverseGeocodeActivity.class));
|
||||
linearLayout.addView(createButton(OSciMapS3DBActivity.class));
|
||||
linearLayout.addView(createButton(ThemeStylerActivity.class));
|
||||
linearLayout.addView(createButton(S3DBMapActivity.class));
|
||||
linearLayout.addView(createButton(JeoIndoorMapActivity.class));
|
||||
linearLayout.addView(createButton(OsmJsonMapActivity.class));
|
||||
linearLayout.addView(createButton(VectorLayerMapActivity.class));
|
||||
linearLayout.addView(createButton(MultiMapActivity.class));
|
||||
}
|
||||
|
||||
private Button createButton(final Class<?> clazz) {
|
||||
return this.createButton(clazz, null);
|
||||
}
|
||||
|
||||
private Button createButton(final Class<?> clazz, String text) {
|
||||
Button button = new Button(this);
|
||||
if (text == null) {
|
||||
button.setText(clazz.getSimpleName());
|
||||
} else {
|
||||
button.setText(text);
|
||||
}
|
||||
button.setOnClickListener(new OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
startActivity(new Intent(Samples.this, clazz));
|
||||
}
|
||||
});
|
||||
return button;
|
||||
linearLayout.addView(createButton(JeoIndoorActivity.class));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright 2013 Hannes Janetzek
|
||||
* Copyright 2016 devemux86
|
||||
* Copyright 2016-2018 devemux86
|
||||
*
|
||||
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
||||
*
|
||||
@@ -43,12 +43,16 @@ public class SimpleMapActivity extends BaseMapActivity {
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
createLayers();
|
||||
}
|
||||
|
||||
void createLayers() {
|
||||
GroupLayer groupLayer = new GroupLayer(mMap);
|
||||
groupLayer.layers.add(new BuildingLayer(mMap, mBaseLayer));
|
||||
groupLayer.layers.add(new LabelLayer(mMap, mBaseLayer));
|
||||
mMap.layers().add(groupLayer);
|
||||
|
||||
mapScaleBar = new DefaultMapScaleBar(mMap, CanvasAdapter.dpi / 160);
|
||||
mapScaleBar = new DefaultMapScaleBar(mMap);
|
||||
mapScaleBar.setScaleBarMode(DefaultMapScaleBar.ScaleBarMode.BOTH);
|
||||
mapScaleBar.setDistanceUnitAdapter(MetricUnitAdapter.INSTANCE);
|
||||
mapScaleBar.setSecondaryDistanceUnitAdapter(ImperialUnitAdapter.INSTANCE);
|
||||
@@ -57,7 +61,7 @@ public class SimpleMapActivity extends BaseMapActivity {
|
||||
MapScaleBarLayer mapScaleBarLayer = new MapScaleBarLayer(mMap, mapScaleBar);
|
||||
BitmapRenderer renderer = mapScaleBarLayer.getRenderer();
|
||||
renderer.setPosition(GLViewport.Position.BOTTOM_LEFT);
|
||||
renderer.setOffset(5 * CanvasAdapter.dpi / 160, 0);
|
||||
renderer.setOffset(5 * CanvasAdapter.getScale(), 0);
|
||||
mMap.layers().add(mapScaleBarLayer);
|
||||
|
||||
mMap.setTheme(VtmThemes.DEFAULT);
|
||||
@@ -65,7 +69,8 @@ public class SimpleMapActivity extends BaseMapActivity {
|
||||
|
||||
@Override
|
||||
protected void onDestroy() {
|
||||
mapScaleBar.destroy();
|
||||
if (mapScaleBar != null)
|
||||
mapScaleBar.destroy();
|
||||
|
||||
super.onDestroy();
|
||||
}
|
||||
@@ -104,6 +109,7 @@ public class SimpleMapActivity extends BaseMapActivity {
|
||||
|
||||
p.setTilt((float) (Math.random() * 60));
|
||||
p.setBearing((float) (Math.random() * 360));
|
||||
p.setRoll((float) (Math.random() * 360));
|
||||
//mMapView.map().setMapPosition(p);
|
||||
|
||||
mMapView.map().animator().animateTo(time, p);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright 2013 Hannes Janetzek
|
||||
* Copyright 2016 devemux86
|
||||
* Copyright 2016-2018 devemux86
|
||||
*
|
||||
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
||||
*
|
||||
@@ -20,24 +20,16 @@ package org.oscim.android.test;
|
||||
import android.os.Bundle;
|
||||
|
||||
import org.oscim.backend.canvas.Color;
|
||||
import org.oscim.layers.TileGridLayer;
|
||||
import org.oscim.layers.vector.VectorLayer;
|
||||
import org.oscim.layers.vector.geometries.PointDrawable;
|
||||
import org.oscim.layers.vector.geometries.Style;
|
||||
import org.oscim.utils.ColorUtil;
|
||||
|
||||
import static org.oscim.tiling.source.bitmap.DefaultSources.STAMEN_TONER;
|
||||
|
||||
public class VectorLayerMapActivity extends BitmapTileMapActivity {
|
||||
|
||||
public VectorLayerMapActivity() {
|
||||
super(STAMEN_TONER.build());
|
||||
}
|
||||
public class VectorLayerActivity extends BitmapTileActivity {
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
mBitmapLayer.tileRenderer().setBitmapAlpha(0.5f);
|
||||
|
||||
VectorLayer vectorLayer = new VectorLayer(mMap);
|
||||
|
||||
@@ -95,7 +87,6 @@ public class VectorLayerMapActivity extends BitmapTileMapActivity {
|
||||
vectorLayer.update();
|
||||
|
||||
mMap.layers().add(vectorLayer);
|
||||
mMap.layers().add(new TileGridLayer(mMap, 0xff222222, 1.2f, 1));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -1,30 +1,2 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="org.oscim.gdx"
|
||||
android:installLocation="auto"
|
||||
android:versionCode="1"
|
||||
android:versionName="1.0">
|
||||
|
||||
<uses-permission android:name="android.permission.INTERNET" />
|
||||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
||||
|
||||
<uses-sdk
|
||||
android:minSdkVersion="10"
|
||||
android:targetSdkVersion="22" />
|
||||
|
||||
<application
|
||||
android:allowBackup="true"
|
||||
android:icon="@drawable/ic_launcher"
|
||||
android:label="@string/app_name">
|
||||
<activity
|
||||
android:name=".MainActivity"
|
||||
android:configChanges="keyboard|keyboardHidden|orientation|screenSize">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
</application>
|
||||
|
||||
</manifest>
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<manifest package="org.oscim.gdx" />
|
||||
|
||||
@@ -1,11 +1,8 @@
|
||||
apply plugin: 'com.android.application'
|
||||
apply plugin: 'com.android.library'
|
||||
apply plugin: 'com.github.dcendents.android-maven'
|
||||
|
||||
dependencies {
|
||||
compile project(':vtm-android')
|
||||
compile project(':vtm-gdx')
|
||||
compile "com.badlogicgames.gdx:gdx-backend-android:$gdxVersion"
|
||||
compile 'com.noveogroup.android:android-logger:1.3.6'
|
||||
api project(':vtm')
|
||||
}
|
||||
|
||||
android {
|
||||
@@ -21,6 +18,7 @@ android {
|
||||
versionCode versionCode()
|
||||
versionName versionName()
|
||||
minSdkVersion androidMinSdk()
|
||||
targetSdkVersion androidTargetSdk()
|
||||
}
|
||||
|
||||
sourceSets {
|
||||
@@ -28,14 +26,6 @@ android {
|
||||
manifest.srcFile 'AndroidManifest.xml'
|
||||
java.srcDirs = ['src']
|
||||
resources.srcDirs = ['src']
|
||||
aidl.srcDirs = ['src', 'assets']
|
||||
renderscript.srcDirs = ['src', 'assets']
|
||||
res.srcDirs = ['res']
|
||||
assets.srcDirs = ['assets']
|
||||
file('natives').eachDir() { dir ->
|
||||
jniLibs.srcDirs += "${dir.path}/lib"
|
||||
jniLibs.srcDirs += "${rootDir}/vtm-android/natives/${dir.name}/lib"
|
||||
}
|
||||
}
|
||||
debug.setRoot('build-types/debug')
|
||||
release.setRoot('build-types/release')
|
||||
@@ -44,52 +34,24 @@ android {
|
||||
lintOptions { abortOnError false }
|
||||
}
|
||||
|
||||
android.applicationVariants.all { variant ->
|
||||
android.libraryVariants.all { variant ->
|
||||
def name = variant.buildType.name
|
||||
if (name.equals("debug")) {
|
||||
print "Skipping debug jar"
|
||||
return; // Skip debug builds.
|
||||
}
|
||||
if (name == "debug")
|
||||
return
|
||||
|
||||
def jar = project.tasks.create "jar${name.capitalize()}", Jar
|
||||
jar.dependsOn variant.javaCompile
|
||||
jar.from variant.javaCompile.destinationDir
|
||||
jar.exclude 'android-logger.properties'
|
||||
artifacts.add('archives', jar);
|
||||
jar.dependsOn variant.javaCompiler
|
||||
jar.exclude '**/BuildConfig.class'
|
||||
jar.exclude '**/R.class'
|
||||
jar.exclude '**/R$*.class'
|
||||
jar.from variant.javaCompiler.destinationDir
|
||||
artifacts.add('archives', jar)
|
||||
|
||||
file('natives').eachDir() { dir ->
|
||||
def nativesJar = project.tasks.create "nativesJar${name.capitalize()}-${dir.name}", Jar
|
||||
nativesJar.classifier = "natives-${dir.name}"
|
||||
nativesJar.from(dir.path)
|
||||
artifacts.add('archives', nativesJar);
|
||||
}
|
||||
|
||||
def fatJar = project.tasks.create "fatJar${name.capitalize()}", Jar
|
||||
fatJar.classifier = 'jar-with-dependencies'
|
||||
fatJar.dependsOn variant.javaCompile
|
||||
fatJar.from variant.javaCompile.destinationDir
|
||||
fatJar.from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
|
||||
file('natives').eachDir() { dir ->
|
||||
fatJar.from(dir.path)
|
||||
fatJar.from("${rootProject.projectDir}/vtm-android/natives/${dir.name}")
|
||||
}
|
||||
fatJar.exclude 'android-logger.properties'
|
||||
artifacts.add('archives', fatJar);
|
||||
}
|
||||
|
||||
afterEvaluate {
|
||||
configurations.archives.artifacts.removeAll { it.file =~ 'apk' }
|
||||
}
|
||||
|
||||
task run(dependsOn: 'installDebug') {
|
||||
doFirst {
|
||||
println(">> adb run...")
|
||||
String adb = System.getenv()['ANDROID_HOME'] + '/platform-tools/adb'
|
||||
String cmd = "${adb} shell am start -n org.oscim.gdx/.MainActivity"
|
||||
def proc = cmd.execute()
|
||||
proc.in.eachLine { line -> println line }
|
||||
proc.err.eachLine { line -> System.err.println('ERROR: ' + line) }
|
||||
proc.waitFor()
|
||||
artifacts.add('archives', nativesJar)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
Before Width: | Height: | Size: 41 KiB |
@@ -1,7 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent"
|
||||
android:orientation="vertical">
|
||||
|
||||
</LinearLayout>
|
||||