186 Commits

Author SHA1 Message Date
Emux
3beb830baf 0.10.0 2018-08-28 11:27:52 +03:00
Emux
a9b7e310be Merge pull request #573 from Gustl22/scanbox
ScanBox docs: Remove problematic arrows (#571)
2018-08-28 09:47:58 +03:00
Gustl22
d04e2a06fb ScanBox docs: Remove problematic arrows (#571) 2018-08-27 22:14:58 +02:00
Gustl22
f3f629779f GDX samples: remember map position (#569) 2018-08-25 17:33:49 +03:00
Emux
278ef523b8 Merge pull request #567 from Gustl22/gdx_poi3d
vtm-playground: fix scale of trees in higher zoom levels (GDX)
2018-08-25 13:57:21 +03:00
Gustl22
b98e20273c playground gdx: fix scale of trees in higher zoom levels 2018-08-24 19:06:15 +02:00
Gustl22
2a0ec3d82e ExtrusionRenderer: fix translucency for meshes (#566) 2018-08-24 09:58:52 +03:00
Emux
334a5e3fdb Merge pull request #565 from Gustl22/gl_state
GLState: State DISABLED = -1
2018-08-24 09:43:08 +03:00
Gustl22
12b56905f6 ExtrusionRenderer: simplify mesh-mode int to boolean (readability) (#564) 2018-08-24 09:27:04 +03:00
Gustl22
63cd462109 GLState: State DISABLED = -1 (readability). 2018-08-23 22:46:40 +02:00
Emux
f07de4c910 Layers more synchronized API #507 2018-08-22 20:07:32 +03:00
Izumi Kawashima
66c5e2b773 Support display density for WebGL (#563) 2018-08-15 18:45:47 +03:00
Emux
02b42539f3 POI: SQLite Android Bindings, fix #562 2018-08-13 12:55:34 +03:00
Emux
5605fff111 Update integration guide 2018-08-13 12:43:30 +03:00
Emux
052e3970e5 Gradle: exclude R inner classes from jar files for Android libs 2018-08-13 12:21:48 +03:00
Emux
0bb0312913 AndroidSVG 1.3 2018-08-12 17:35:04 +03:00
Emux
ed735aea64 SVG Salamander (JitPack), fix #560 2018-08-12 15:50:22 +03:00
Emux
c9e266408e Update Maven Central links 2018-08-12 14:54:46 +03:00
Emux
dc262dbd1d Update Android build tools 2018-08-07 09:47:49 +03:00
Emux
9a6ea88c23 LocationRenderer: some protected members 2018-08-02 12:50:21 +03:00
Emux
d58d79facf ViewController API enhancements 2018-07-06 14:12:27 +03:00
Emux
bbd27f1332 Render themes: extrusion color improvements #41 2018-07-06 13:09:17 +03:00
Emux
37b80e904d Mapsforge maps v5 exit 'beta' 2018-07-05 21:44:14 +03:00
Emux
f2bf6cd6ee Mapsforge themes parser united with VTM #100 2018-07-05 21:42:56 +03:00
Emux
40f2910991 Update Android build tools 2018-07-02 21:05:10 +03:00
Emux
a74e7f04e2 Update Applications.md 2018-07-01 15:49:50 +03:00
Emux
cfb12dd3f1 Location renderers: add animation option 2018-07-01 12:40:33 +03:00
Emux
df67f81156 LocationRenderer improvements 2018-07-01 12:40:33 +03:00
Emux
bb69e6acbd LocationTextureLayer improvements #547 2018-07-01 12:40:33 +03:00
Emux
9ac533846d Update README.md 2018-07-01 12:39:32 +03:00
Gustl22
a7147d1c6e Render themes documentation (#558)
* vtm render-theme docs

* remove 'a' from render-theme docs

* Rendertheme: correct "priority" description

* Rendertheme: improve "priority" description
2018-07-01 12:37:38 +03:00
Gustl22
a1c5f4aa5a Docs improvements (#557) 2018-06-28 11:12:08 +03:00
Gustl22
981af11011 S3DBLayer: use transparency of extrusion style (#556) 2018-06-24 18:43:01 +03:00
Gustl22
c0efc78d37 Clarify building TRANSLUCENT flag #181 (#555) 2018-06-24 18:22:34 +03:00
Emux
857b2318f9 Update changelog 2018-06-24 13:37:16 +03:00
Gustl22
9e52e9e848 Label layer: use ZoomLimiter for overzoom (#544) 2018-06-24 13:35:22 +03:00
Emux
c8068d5835 Merge pull request #553 from Gustl22/s3db_roof_angle
S3DBLayer: fix roof height estimation based on tag "roof:angle"
2018-06-21 11:38:08 +03:00
Gustl22
2752878e9e S3DBLayer: fix roof angle estimation 2018-06-15 11:43:05 +02:00
Emux
2e9b6bf42c Fix g3d models 2018-06-11 11:05:34 +03:00
Emux
4ebca73023 Android 9 compatibility, fix #550 2018-06-10 19:14:55 +03:00
Emux
e6a90a8da5 Android P 2018-06-08 20:11:30 +03:00
Longri
0fefd20cc6 LocationTextureRenderer: add billboard rendering property (#549) 2018-06-02 15:28:44 +03:00
Emux
94a2461741 LocationTextureRenderer: disable billboard in symbol rendering #547 2018-06-02 12:37:04 +03:00
Emux
4d7de87e7d LocationTextureActivity: scale location texture size #547 2018-06-01 14:58:50 +03:00
Emux
f9193eaa3f Location texture renderer improvements #547 2018-06-01 13:52:17 +03:00
Longri
0f5af24361 Location texture renderer (#548)
- add LocationTextureLayer with accuracy
- add Android sample for LocationTextureLayer
2018-06-01 12:27:53 +03:00
Emux
befa40e094 Map overzoom: fix MapElement labelPosition processing #393 2018-05-17 09:48:32 +03:00
Emux
92937667d8 Render themes: use tessellation in water areas, fix #224 2018-05-11 14:55:34 +03:00
Emux
12cb34146c Scale factor for short vertices improvements, fix #537 2018-05-11 13:19:02 +03:00
Emux
34023cdc95 Render themes: house numbers zoom-min 18 #393 2018-05-11 12:08:14 +03:00
Emux
c79dbb26ea Tile sources: enable full overzoom #393 2018-05-11 12:08:14 +03:00
Emux
77ea71c519 Update changelog 2018-05-11 10:36:58 +03:00
Gustl22
472a34c280 Building layers: use ZoomLimiter for overzoom (#528) 2018-05-11 09:51:09 +03:00
Emux
7a9fc99079 Merge pull request #541 from Gustl22/bucket_format
Package renderer: minor formatting & amendments
2018-05-10 15:12:47 +03:00
Emux
b4c8305f0d Merge pull request #540 from Gustl22/short_bucket
Buckets: assign short qualifier
2018-05-10 15:06:12 +03:00
Gustl22
5d1da5fecd Renderer: minor formatting & amendments 2018-05-09 13:30:05 +02:00
Gustl22
6dad9af7da Buckets: assign short bytes qualifier 2018-05-09 12:55:35 +02:00
Emux
7ca09f3acb MapTile.unlock improvements #539 2018-05-08 15:18:54 +03:00
Emux
b9f989a454 MapTile.unlock NullPointerException, fix #539 2018-05-08 14:26:56 +03:00
Emux
516b18bdef Scale factor for short vertices calculation, fix #537 2018-05-05 20:19:26 +03:00
Emux
3a67bbce84 Update changelog 2018-05-01 18:20:21 +03:00
Gustl22
77cfad50e0 LineTexBucket: fix out of short range (#532) 2018-05-01 18:20:21 +03:00
Gustl22
ccfbb359a4 Vector layers: clip to max GL.Short resolution (#529) 2018-05-01 18:20:21 +03:00
Emux
b240be8ba7 Merge pull request #534 from Gustl22/format_shader
format shaders
2018-04-29 18:54:10 +03:00
Emux
241281c5e7 Merge pull request #533 from Gustl22/shader_poly_texture
Poly Texture shader: correct shader separator
2018-04-29 16:59:48 +03:00
Gustl22
a92b3a18c1 format shaders 2018-04-27 10:58:38 +02:00
Gustl22
625f11cc55 poly_texture shader: correct shader separator 2018-04-27 10:49:27 +02:00
Emux
4e368e77dc Update Android Gradle plugin 2018-04-24 19:20:07 +03:00
Emux
d8163b9f12 Merge pull request #530 from Gustl22/path_refactor
PathLayer Task (regular): final variables + minor refactor
2018-04-18 19:06:49 +03:00
Gustl22
cb36cfc983 PathLayer Task (regular): final variables + minor refactor 2018-04-17 20:44:30 +02:00
Emux
512383892c Update changelog 2018-04-15 11:43:17 +03:00
Gustl22
11de89536d Mapsforge fix map clipping on small zooms (#526) 2018-04-15 11:40:52 +03:00
Gustl22
d1f9a4e8f6 Fix blank tiles on large windows and tilt (#522) 2018-04-14 18:37:58 +03:00
Emux
7aac624ec7 Update changelog 2018-04-14 17:41:13 +03:00
Gustl22
d7aad27ed8 ViewController: refactor 'setScreenSize' to 'setViewSize', 'setMapScreenCenter' to 'setMapViewCenter' (#523) 2018-04-14 17:36:13 +03:00
Emux
d036bb0bac Merge pull request #524 from Gustl22/path
PathLayer: refactor 'RenderPath' to 'PathRenderer'
2018-04-14 17:30:00 +03:00
xiaoyan-qq
12e04ca7ef JtsLayer: fix Envelope parameters order in processFeatures (#525) 2018-04-14 17:21:20 +03:00
Gustl22
e204056972 refactor 'RenderPath' to 'PathRenderer' 2018-04-12 15:04:49 +02:00
Emux
0604d579de Update Android Gradle plugin 2018-04-10 10:25:36 +03:00
Emux
57d56fbedf Fix Mapsforge dependency 2018-04-10 10:25:27 +03:00
Emux
cdd07c0da3 MapDatabase: decode way geometry by @Bezzu, fix #517 2018-03-29 16:35:21 +03:00
Emux
c7eaaa9100 MapDatabase tile clipping: convert some local variables #518 2018-03-29 16:32:07 +03:00
Gustl22
345b57c57a Buildings overzoom: use TileSeparator (#518) 2018-03-29 15:28:40 +03:00
Gustl22
27a3c5a926 LineClipper: name and unify clip states (#519) 2018-03-29 14:07:59 +03:00
Emux
c3b62fbdf5 Update Gradle 2018-03-28 10:00:03 +03:00
Gustl22
846074ddc1 OpenMapTiles: support building heights (#516) 2018-03-22 16:07:31 +02:00
Emux
0137d9ff1f Samples Desktop: remember map position #32 2018-03-22 11:11:01 +02:00
Emux
fed0996f6f Samples improvements #32 2018-03-22 11:08:03 +02:00
Gustl22
dcad929316 Samples MapsforgeActivity: remember map position (#515) 2018-03-22 09:52:46 +02:00
Emux
69ed1fe034 Update applications list 2018-03-21 11:36:56 +02:00
Gustl22
6fef1854c8 MapDatabase: improve buildings processing (#514) 2018-03-20 10:01:15 +02:00
Emux
6af2d305b3 Make Travis happy 2018-03-18 19:56:05 +02:00
Emux
da628f99d6 Mapsforge maps v5: fix (empty) wildcards processing #429 2018-03-18 18:23:11 +02:00
Gustl22
5f57f97844 TileRenderer: load tile with proxy immediately (#510) 2018-03-06 11:07:27 +02:00
Emux
88d94ede01 Getting Started example in Samples #32 2018-02-24 18:28:42 +02:00
Emux
27bf0316de GridRenderer fix default scaling #238 2018-02-24 18:22:06 +02:00
Gustl22
77d0c36539 VTM high resolution logo (#508) 2018-02-24 18:22:06 +02:00
Emux
cd77b8fcd4 Samples improvements #32 2018-02-21 13:12:28 +02:00
Emux
28e938b536 Markers: increase properly the view to show partially visible items 2018-02-20 16:15:24 +02:00
Emux
e85e056a0c ItemizedLayer synchronized API, fix #507 2018-02-20 15:53:45 +02:00
Emux
e108e6e3d7 Merge pull request #506 from Gustl22/s3db
S3DB: Fix skillion calculation on (triangular) shapes
2018-02-20 14:27:07 +02:00
Gustl22
884f524fb1 Fix skillion calculation on triangles 2018-02-20 12:08:35 +01:00
Emux
f1570a9531 POI search sample: open / close DB at start / exit #32 2018-02-17 16:47:45 +02:00
Emux
7e0d4f64dd Animator2: improve docs 2018-02-16 11:00:52 +02:00
Gustl22
ba18ccf967 Physical fling enhancements (#505) 2018-02-15 19:43:59 +02:00
Emux
956feec116 Update integration guide 2018-02-14 13:09:49 +02:00
Emux
f3bc792ebe Update integration guide with jeo 2018-02-14 13:00:23 +02:00
Emux
2bacad9bb5 TileSource add getter 2018-02-13 15:29:42 +02:00
Emux
3a81957f9a Animator: enhance API 2018-02-12 20:46:59 +02:00
Emux
7d6d41b3c1 Animator: enhance API 2018-02-12 13:03:27 +02:00
Emux
bbc6e2cc65 Merge pull request #502 from devemux86/overzoom
Map overzoom implementation
2018-02-11 19:46:11 +02:00
Emux
5b15eb9d7c Update changelog 2018-02-11 19:11:16 +02:00
Emux
4e263fb95b OpenMapTiles: apply map overzoom #482 2018-02-11 19:11:15 +02:00
Emux
a5c6bc027f Map overzoom implementation #393 2018-02-11 19:11:07 +02:00
Emux
67dde0af7d FastMath reorganization 2018-02-11 11:48:18 +02:00
Gustl22
bd9e7d7456 Fix fling rotation reverses direction (#501), fix #500 2018-02-11 11:14:51 +02:00
Emux
71a82d087b Update changelog with Parameters 2018-02-09 11:57:29 +02:00
Gustl22
3ed6c43161 Add rotate & scale fling animation (#499) 2018-02-09 11:17:54 +02:00
Emux
0e855cb47f Samples improvements #32 2018-02-08 12:50:07 +02:00
Emux
5aba3ac373 Animator2 samples #497 2018-02-08 11:41:33 +02:00
Gustl22
03eb28f09e Animator2: physical fling (#497) 2018-02-08 11:38:10 +02:00
Emux
241f112b58 Minor samples renaming 2018-02-07 20:34:13 +02:00
Emux
3a59a31ab3 Building / S3DB layers: simplify building element 2018-02-06 19:24:48 +02:00
Emux
25aa1329fc BuildingRenderer: deprecate redundant S3DB render from parent tiles 2018-02-06 15:40:18 +02:00
Emux
d76ac00403 Update readme 2018-02-06 15:31:14 +02:00
Emux
beed7335fc Nextzen MVT & GeoJSON vector tiles, fix #498 2018-02-06 14:17:15 +02:00
Emux
f7f1940054 MapElement: add building methods 2018-02-06 14:02:50 +02:00
Emux
c46548d15e XmlMapsforgeThemeBuilder: use tags #411 2018-02-06 13:51:34 +02:00
Emux
1be12b2700 Minor key adjustments 2018-02-06 13:49:50 +02:00
Emux
20bdf84d91 Theme texture atlas: maintain symbol attributes #63 2018-01-30 20:08:55 +02:00
Emux
e304c04f1c Render themes: symbols on lines, fix #495 2018-01-30 15:44:29 +02:00
Emux
ea21d64822 Mapsforge themes: 3D buildings improvements #411 2018-01-30 15:42:35 +02:00
Gustl22
3905ddb5e4 MapEventLayer2: improve double tap (#493) 2018-01-30 11:29:44 +02:00
Emux
57ce026efd LineTexBucket: fix scale precision #105 2018-01-28 18:18:28 +02:00
Emux
1ba83801e9 Polygon symbols default disabled, fix #405 2018-01-28 15:39:16 +02:00
Emux
c93bb64a8a Fix map view roll normalization #474 2018-01-26 20:20:36 +02:00
Emux
05d0b2b116 Fix map view roll #474 2018-01-26 19:01:11 +02:00
Emux
33241250ff Update changelog 2018-01-26 18:29:35 +02:00
Emux
dcd2ebad29 Viewport: fix initial values 2018-01-26 18:29:35 +02:00
Izumi Kawashima
49476e17bb Map view roll (#474) 2018-01-26 18:29:35 +02:00
Emux
4d7078e861 MapPosition: fix initial values 2018-01-26 15:47:38 +02:00
Emux
08c20daef2 MapUrl: fix parameters 2018-01-26 15:34:39 +02:00
Emux
fd647f7458 Update changelog 2018-01-26 13:30:58 +02:00
Gustl22
5ff9abca1a Improve fling animation (#489)
Easing: add Sin in and out
Animator: Smooth Fling
MapEventLayer: note for changing initial rotation position
2018-01-26 13:30:58 +02:00
Emux
a1cfd80853 mapbox-vector-tile 3.0.0 #481 2018-01-24 20:34:03 +02:00
Emux
45cb01c59d Merge pull request #492 from Gustl22/themes
Fix Internal render theme styles order (#490)
2018-01-24 19:32:39 +02:00
Gustl22
f98fe65827 fix styles order via use-attribute 2018-01-24 16:20:47 +01:00
Emux
131f36dbd4 Update changelog 2018-01-23 21:38:31 +02:00
Gustl22
8e35a178d2 Internal render theme improvements (#488) 2018-01-23 21:19:32 +02:00
Emux
aa623f81db Update samples 2018-01-22 12:13:08 +02:00
Emux
43c9c4c8bd mapbox-vector-tile-java (JitPack) #481 2018-01-22 12:05:47 +02:00
Emux
e36d5b53ea Gradle improvements 2018-01-22 11:30:48 +02:00
Emux
23f48082a1 Fade steps alpha interpolation, fix #486 2018-01-20 18:56:39 +02:00
Emux
b42973662e Map fractional zoom, fix #487 2018-01-20 18:55:00 +02:00
Emux
431790a638 TileSource: add alpha parameter 2018-01-19 14:49:47 +02:00
Emux
aa5a1436ca JTS (LocationTech), fix #484 2018-01-16 14:48:50 +02:00
Emux
f5386f3503 Update dependencies 2018-01-16 14:25:48 +02:00
Emux
92d218572f Update changelog 2018-01-14 15:56:47 +02:00
Gustl22
067f08834d Improved theme styles (#479)
Fonts added: thin, light, medium, black, condensed
2018-01-14 15:31:31 +02:00
Emux
af98b0668a Fix libGDX flickering, fix #148, fix #149 2018-01-13 14:14:28 +02:00
Emux
ab7164499d Deprecate OpenMapTiles GeoJSON vector tiles, #385 2018-01-13 14:14:27 +02:00
Emux
be483fff89 Merge pull request #483 from Longri/update_SVGh
Update iOS SVGgh (exclude x86 natives)
2018-01-13 14:11:56 +02:00
Longri
25627462c4 update iOS SVGh (exclude x86 native's) 2018-01-13 12:58:35 +01:00
Emux
758f62a589 Samples improvements #32 2018-01-12 20:15:42 +02:00
Emux
84c734accd Update documentation 2018-01-12 19:38:56 +02:00
Robin
d049d378dd vtm-mvt module with new MVT tile decoder (#481) 2018-01-12 19:02:43 +02:00
Emux
5093f292ba Update documentation 2018-01-10 21:21:33 +02:00
Emux
80634a4adf Samples improvements #32 2018-01-10 20:53:56 +02:00
Emux
969c44717a S3DBLayer: add zoom limit options #475 2018-01-10 20:21:56 +02:00
Emux
51d4521e6a Render themes: fallback internal resources, fix #477 2018-01-09 15:56:16 +02:00
Gustl22
3a596aaf1a ColorUtil implement semi-relative color modification (#478) 2018-01-09 15:36:45 +02:00
Emux
699d63db10 S3DB layer samples #475 2018-01-09 12:22:28 +02:00
Gustl22
ca9786dca3 S3DB layer (#475) 2018-01-09 11:51:04 +02:00
Emux
85342ddd84 OpenMapTile theme improvements 2018-01-08 11:17:38 +02:00
Emux
e16d7d2059 Merge pull request #476 from boldtrn/patch-1
OpenMapTiles Max-Zoom Fix
2018-01-08 10:57:48 +02:00
Robin
75fc29e9d5 OpenMapTiles Max-Zoom Fix
Fixed Maxzoom for OpenMapTiles
2018-01-08 16:01:24 +11:00
Emux
0be2560594 Samples: improve permissions 2018-01-05 15:11:47 +02:00
Emux
fef055777a OSciMapS3DBTest add labels 2018-01-05 13:16:22 +02:00
Emux
edfbae323f OpenMapTilesGeojsonTileSource: fix header date #468 2018-01-04 22:06:08 +02:00
Emux
6c92f9db33 OpenMapTiles max zoom 16 #468 2018-01-04 22:03:23 +02:00
Emux
ec3e8ba5c9 Samples: disable cache for debug 2018-01-04 20:20:55 +02:00
Emux
54de362e44 Update changelog 2018-01-04 16:05:33 +02:00
Emux
1e0fd54ee1 Comment Mapzen examples 2018-01-04 16:04:34 +02:00
Robin
5fc42268a4 OpenMapTiles theme (#468) 2018-01-04 15:18:22 +02:00
Gustl22
1d8cdd7feb GeometryUtils: add vector utils (#467)
+ calc bisections
+ sum, diff
+ distance
+ dot product
+ intersections (line and plane)
+ normalizations
+ normal of plane
+ scale
2018-01-04 14:56:54 +02:00
Gustl22
baa924c697 Tessellator: support GeometryBuffer (#466) 2018-01-04 14:51:49 +02:00
312 changed files with 10968 additions and 5218 deletions

View File

@@ -4,8 +4,8 @@ jdk:
- oraclejdk8 - oraclejdk8
env: env:
global: global:
- ANDROID=27 - ANDROID=28
- ANDROID_BUILD_TOOLS=27.0.3 - ANDROID_BUILD_TOOLS=28.0.2
- GRADLE_OPTS="-Xmx2048m" - 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: 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= - secure: AdKSZKA4gMuKXI4X4dQNJqcMv5OmPIHdN8fpy55Y9yoOQPQHZE3Zwc4QDWBh20q298jyEC854tVTPTysdZ7h+2s2FhsprYv1Bt/QNzKIrLpeIMj2quuVGMbdPuk08y55gost94KwVLJv0sIDpRlB/PEQkA7Mg/UDsT9zR8E1Ms5x+ul2C8e1ag0zzNl1wVnT5jY8WCp74uA/XXCcJl/80qT1stUERazCKwbKNo007hi7rdm4HA7YGevORq8e2r67je+WIBZUAwrHT0Zjuo4ibwUii4LdwvjuN3w0Z6e9Wf4x5bBqGgnih0T31uom2yPjNx+U/c2AWI+Nxfy/SEF2U+9bjBEZ3ZhI7F1B9ofXo2mhvvsVDiUrymMBbG2V64C9kAzeUh7xIBTqIrbdtpAEBV9FlLAtF2swVTwtCgZgcVTOt3RKXCi3X3nk3cuH7PAorFa/QGfT4xxVu2011FVAt2Rm7SD0ZWztZTSTz/4Nt/egtGBOJfrCc7oLEygLzDmLqsqCwCROITVQjWLjrtqDyLteaNiSXeNIQMKun3izApbXnHmXB+FV3R3EZocboqk3v5bmPTahnG6Ghc2zknWyyxSx+O9qIfOpHUL8JMJiT82lUQUeibtCn7DCE8wVQ/gYC5i+a+KO/d3NemSzIFlZ8aoUiEPYq18dYlsDXeLXwF0=

View File

@@ -1,4 +1,4 @@
[![Maven Central](https://img.shields.io/maven-central/v/org.mapsforge/vtm.svg)](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22org.mapsforge%22) [![Maven Central](https://img.shields.io/maven-central/v/org.mapsforge/vtm.svg)](https://search.maven.org/search?q=g:org.mapsforge)
[![Build Status](https://travis-ci.org/mapsforge/vtm.svg?branch=master)](https://travis-ci.org/mapsforge/vtm) [![Build Status](https://travis-ci.org/mapsforge/vtm.svg?branch=master)](https://travis-ci.org/mapsforge/vtm)
[![License: LGPL v3](https://img.shields.io/badge/License-LGPL%20v3-blue.svg)](http://www.gnu.org/licenses/lgpl-3.0) [![License: LGPL v3](https://img.shields.io/badge/License-LGPL%20v3-blue.svg)](http://www.gnu.org/licenses/lgpl-3.0)
@@ -15,18 +15,18 @@ If you have any questions or problems, don't hesitate to ask our public [mailing
## Features ## Features
- Java map library - Java map library
- OpenGL vector-tile rendering - OpenGL vector-tile rendering
- Themeable vector layers - Themeable vector layers ([render themes](docs/Rendertheme.md))
- Support for multiple tile sources: - Support for multiple tile sources:
- OpenScienceMap vector tiles - OpenScienceMap vector tiles
- Mapsforge vector maps - Mapsforge vector maps
- Mapbox vector tiles - Mapbox vector tiles (e.g. Mapzen, Nextzen, OpenMapTiles)
- GeoJSON vector tiles - GeoJSON vector tiles (e.g. Mapzen, Nextzen)
- Raster tiles: any quadtree-scheme tiles as texture - Raster tiles: any quadtree-scheme tiles as texture
- Backends: - Backends:
- Android - Android ([example](vtm-android-example/src/org/oscim/android/test/GettingStarted.java))
- iOS (using libGDX/RoboVM, [instructions](docs/ios.md)) - iOS (libGDX/RoboVM, [instructions](docs/ios.md))
- Desktop (using libGDX/LWJGL) - Desktop (libGDX/LWJGL, [instructions](docs/desktop.md))
- HTML5/WebGL (using libGDX/GWT, [instructions](docs/web.md)) - HTML5/WebGL (libGDX/GWT, [instructions](docs/web.md))
### Projects ### Projects
- **vtm** core library - **vtm** core library

View File

@@ -4,7 +4,7 @@ buildscript {
jcenter() jcenter()
} }
dependencies { dependencies {
classpath 'com.android.tools.build:gradle:3.0.1' classpath 'com.android.tools.build:gradle:3.1.4'
classpath 'com.github.dcendents:android-maven-gradle-plugin:2.0' classpath 'com.github.dcendents:android-maven-gradle-plugin:2.0'
} }
} }
@@ -14,7 +14,7 @@ allprojects {
version = 'master-SNAPSHOT' version = 'master-SNAPSHOT'
ext.isReleaseVersion = !version.endsWith("SNAPSHOT") ext.isReleaseVersion = !version.endsWith("SNAPSHOT")
ext.androidBuildVersionTools = "27.0.3" ext.androidBuildVersionTools = "28.0.2"
ext.gdxVersion = "1.9.8" ext.gdxVersion = "1.9.8"
ext.gwtVersion = "2.8.0" ext.gwtVersion = "2.8.0"
ext.slf4jVersion = "1.7.25" ext.slf4jVersion = "1.7.25"
@@ -28,10 +28,10 @@ allprojects {
} }
} }
static def androidCompileSdk() { return 27 } static def androidCompileSdk() { return 28 }
// Minimum API Level by Support Library // 14 for Support Library, 16 for sqlite-android
static def androidMinSdk() { return 14 } static def androidMinSdk() { return 16 }
static def androidTargetSdk() { return 22 } static def androidTargetSdk() { return 22 }
@@ -42,8 +42,10 @@ def versionName() { return version }
subprojects { subprojects {
repositories { repositories {
google() google()
maven { url 'https://repo.boundlessgeo.com/main' } maven { url 'https://repo.boundlessgeo.com/main/' }
jcenter() jcenter()
maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
maven { url 'https://jitpack.io' }
} }
tasks.withType(JavaCompile) { tasks.withType(JavaCompile) {

View File

@@ -2,6 +2,7 @@
|**Name**|**Type**|**License/Cost**|**Platforms**|**Sources**| |**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 | | [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 | | [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 | | [GCDroid](https://play.google.com/store/apps/details?id=com.gcdroid) | Geocaching App | Proprietary/Free and Commercial | Android | Closed |
@@ -14,5 +15,6 @@
| [topoGuide](http://www.topoguide.gr/index-en.php) | Digital guides for the outdoor | Proprietary/Free and Commercial | Android | 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 | | [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 | | [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). 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).

View File

@@ -1,5 +1,41 @@
# Changelog # Changelog
## Version 0.10.0 (2018-08-28)
- 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)
## Version 0.9.2 (2018-01-04) ## Version 0.9.2 (2018-01-04)
- Gradle fix transitive dependencies [#433](https://github.com/mapsforge/vtm/issues/433) - Gradle fix transitive dependencies [#433](https://github.com/mapsforge/vtm/issues/433)
@@ -15,7 +51,7 @@
## Version 0.9.0 (2017-12-03) ## Version 0.9.0 (2017-12-03)
- Mapsforge maps **v5 beta** support [#429](https://github.com/mapsforge/vtm/issues/429) - Mapsforge maps **v5** support [#429](https://github.com/mapsforge/vtm/issues/429)
- Mapsforge themes compatibility [#100](https://github.com/mapsforge/vtm/issues/100) - 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: line symbol [#124](https://github.com/mapsforge/vtm/issues/124)
- Render themes: stroke dash array [#131](https://github.com/mapsforge/vtm/issues/131) - Render themes: stroke dash array [#131](https://github.com/mapsforge/vtm/issues/131)
@@ -25,13 +61,14 @@
- POI Search example [#394](https://github.com/mapsforge/vtm/issues/394) - POI Search example [#394](https://github.com/mapsforge/vtm/issues/394)
- Mapsforge Reverse Geocoding [#383](https://github.com/mapsforge/vtm/issues/383) - Mapsforge Reverse Geocoding [#383](https://github.com/mapsforge/vtm/issues/383)
- Core utilities [#396](https://github.com/mapsforge/vtm/issues/396) - Core utilities [#396](https://github.com/mapsforge/vtm/issues/396)
- MercatorProjection.groundResolution renamed to groundResolutionWithScale - `MercatorProjection.groundResolution` renamed to `groundResolutionWithScale`
- Map scaling improvements [#401](https://github.com/mapsforge/vtm/issues/401) - Map scaling improvements [#401](https://github.com/mapsforge/vtm/issues/401)
- Mapsforge fix artifacts zoom >17 [#231](https://github.com/mapsforge/vtm/issues/231) - Mapsforge fix artifacts zoom >17 [#231](https://github.com/mapsforge/vtm/issues/231)
- Mapzen building extrusions [#419](https://github.com/mapsforge/vtm/issues/419) - Mapzen building extrusions [#419](https://github.com/mapsforge/vtm/issues/419)
- BuildingLayer expects height tags in meters - BuildingLayer expects height tags in meters
- Polygon symbol positioning [#405](https://github.com/mapsforge/vtm/issues/405) - Polygon symbol positioning [#405](https://github.com/mapsforge/vtm/issues/405)
- PolyLabel default disabled [#402](https://github.com/mapsforge/vtm/issues/402) - 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) - vtm-theme-comparator module [#387](https://github.com/mapsforge/vtm/issues/387)
- Feature parameters [#403](https://github.com/mapsforge/vtm/issues/403) - Feature parameters [#403](https://github.com/mapsforge/vtm/issues/403)
- vtm-android-gdx module enhancements [#435](https://github.com/mapsforge/vtm/issues/435) - vtm-android-gdx module enhancements [#435](https://github.com/mapsforge/vtm/issues/435)
@@ -44,11 +81,13 @@
## Version 0.8.0 (2017-07-19) ## Version 0.8.0 (2017-07-19)
- Real time (SVG) texture atlas [#63](https://github.com/mapsforge/vtm/issues/63) - 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) - Marker clustering [#312](https://github.com/mapsforge/vtm/issues/312)
- Osmagray theme [#300](https://github.com/mapsforge/vtm/issues/300) - Osmagray theme [#300](https://github.com/mapsforge/vtm/issues/300)
- Symbol rotation [#294](https://github.com/mapsforge/vtm/issues/294) - Symbol rotation [#294](https://github.com/mapsforge/vtm/issues/294)
- Location renderer improvements [#317](https://github.com/mapsforge/vtm/issues/317) - Location renderer improvements [#317](https://github.com/mapsforge/vtm/issues/317)
- POT textures [#334](https://github.com/mapsforge/vtm/issues/334) - 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) - 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) - 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) - vtm-json module [#367](https://github.com/mapsforge/vtm/issues/367)
@@ -68,7 +107,8 @@
## Version 0.7.0 (2017-02-26) ## Version 0.7.0 (2017-02-26)
- Mapsforge multiple map files [#208](https://github.com/mapsforge/vtm/issues/208) - Mapsforge multiple map files [#208](https://github.com/mapsforge/vtm/issues/208)
- Improved gestures implementation [#253](https://github.com/mapsforge/vtm/issues/253) - 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) - Polygon label position enhancements [#80](https://github.com/mapsforge/vtm/issues/80)
- vtm-web modules update [#51](https://github.com/mapsforge/vtm/issues/51) - vtm-web modules update [#51](https://github.com/mapsforge/vtm/issues/51)
- Mapzen MVT vector tiles [#57](https://github.com/mapsforge/vtm/issues/57) - Mapzen MVT vector tiles [#57](https://github.com/mapsforge/vtm/issues/57)
@@ -104,14 +144,16 @@
- Location renderer and layer [#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) - 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) - 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) - 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 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) - 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) - 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-jts module [#53](https://github.com/mapsforge/vtm/issues/53)
- vtm-http module [#140](https://github.com/mapsforge/vtm/issues/140) - vtm-http module [#140](https://github.com/mapsforge/vtm/issues/140)
- LWJGL desktop libGDX backend [#129](https://github.com/mapsforge/vtm/issues/129) - LWJGL desktop libGDX backend [#129](https://github.com/mapsforge/vtm/issues/129)
- Available on [Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22org.mapsforge%22) - 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) - 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) - 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) - Internal render themes various improvements [#41](https://github.com/mapsforge/vtm/issues/41)

View File

@@ -2,7 +2,7 @@
This article describes how to integrate the library in your project, with Gradle / Maven / Jars or SNAPSHOT builds. This article describes how to integrate the library in your project, with Gradle / Maven / Jars or SNAPSHOT builds.
Current version is [![Maven Central](https://img.shields.io/maven-central/v/org.mapsforge/vtm.svg)](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22org.mapsforge%22) Current version is [![Maven Central](https://img.shields.io/maven-central/v/org.mapsforge/vtm.svg)](https://search.maven.org/search?q=g:org.mapsforge)
## Gradle ## Gradle
@@ -16,34 +16,29 @@ implementation 'org.slf4j:slf4j-api:1.7.25'
### Android ### Android
```groovy ```groovy
implementation 'org.mapsforge:vtm-android:[CURRENT-VERSION]' implementation 'org.mapsforge:vtm-android:[CURRENT-VERSION]'
implementation 'org.mapsforge:vtm-android:[CURRENT-VERSION]:natives-arm64-v8a'
implementation 'org.mapsforge:vtm-android:[CURRENT-VERSION]:natives-armeabi'
implementation 'org.mapsforge:vtm-android:[CURRENT-VERSION]:natives-armeabi-v7a' implementation 'org.mapsforge:vtm-android:[CURRENT-VERSION]:natives-armeabi-v7a'
implementation 'org.mapsforge:vtm-android:[CURRENT-VERSION]:natives-mips' implementation 'org.mapsforge:vtm-android:[CURRENT-VERSION]:natives-arm64-v8a'
implementation 'org.mapsforge:vtm-android:[CURRENT-VERSION]:natives-mips64'
implementation 'org.mapsforge:vtm-android:[CURRENT-VERSION]:natives-x86' implementation 'org.mapsforge:vtm-android:[CURRENT-VERSION]:natives-x86'
implementation 'org.mapsforge:vtm-android:[CURRENT-VERSION]:natives-x86_64' implementation 'org.mapsforge:vtm-android:[CURRENT-VERSION]:natives-x86_64'
implementation 'com.caverock:androidsvg:1.2.2-beta-1' implementation 'com.caverock:androidsvg:1.3'
``` ```
### Android (with libGDX) ### Android (libGDX)
```groovy ```groovy
implementation 'org.mapsforge:vtm-android:[CURRENT-VERSION]' implementation 'org.mapsforge:vtm-android:[CURRENT-VERSION]'
implementation 'org.mapsforge:vtm-android:[CURRENT-VERSION]:natives-arm64-v8a'
implementation 'org.mapsforge:vtm-android:[CURRENT-VERSION]:natives-armeabi'
implementation 'org.mapsforge:vtm-android:[CURRENT-VERSION]:natives-armeabi-v7a' 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'
implementation 'org.mapsforge:vtm-android:[CURRENT-VERSION]:natives-x86_64' implementation 'org.mapsforge:vtm-android:[CURRENT-VERSION]:natives-x86_64'
implementation 'org.mapsforge:vtm-gdx:[CURRENT-VERSION]' implementation 'org.mapsforge:vtm-gdx:[CURRENT-VERSION]'
implementation 'org.mapsforge:vtm-android-gdx:[CURRENT-VERSION]' implementation 'org.mapsforge:vtm-android-gdx:[CURRENT-VERSION]'
implementation 'org.mapsforge:vtm-android-gdx:[CURRENT-VERSION]:natives-arm64-v8a'
implementation 'org.mapsforge:vtm-android-gdx:[CURRENT-VERSION]:natives-armeabi'
implementation 'org.mapsforge:vtm-android-gdx:[CURRENT-VERSION]:natives-armeabi-v7a' 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'
implementation 'org.mapsforge:vtm-android-gdx:[CURRENT-VERSION]:natives-x86_64' implementation 'org.mapsforge:vtm-android-gdx:[CURRENT-VERSION]:natives-x86_64'
implementation 'com.badlogicgames.gdx:gdx:1.9.8' implementation 'com.badlogicgames.gdx:gdx:1.9.8'
implementation 'com.badlogicgames.gdx:gdx-backend-android:1.9.8' implementation 'com.badlogicgames.gdx:gdx-backend-android:1.9.8'
implementation 'com.caverock:androidsvg:1.2.2-beta-1' implementation 'com.caverock:androidsvg:1.3'
``` ```
### iOS ### iOS
@@ -52,6 +47,10 @@ Detailed iOS instructions can be found [here](ios.md).
### Desktop ### Desktop
```groovy ```groovy
repositories {
maven { url 'https://jitpack.io' }
}
implementation 'org.mapsforge:vtm-gdx:[CURRENT-VERSION]' implementation 'org.mapsforge:vtm-gdx:[CURRENT-VERSION]'
implementation 'org.mapsforge:vtm-desktop:[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-linux'
@@ -64,19 +63,17 @@ 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-linux'
implementation 'org.lwjgl.lwjgl:lwjgl-platform:2.9.3:natives-osx' implementation 'org.lwjgl.lwjgl:lwjgl-platform:2.9.3:natives-osx'
implementation 'org.lwjgl.lwjgl:lwjgl-platform:2.9.3:natives-windows' implementation 'org.lwjgl.lwjgl:lwjgl-platform:2.9.3:natives-windows'
implementation 'com.metsci.ext.com.kitfox.svg:svg-salamander:0.1.19' implementation 'com.github.blackears:svgSalamander:v1.1.1'
``` ```
### Optional ### JTS geometries
- JTS geometries
```groovy ```groovy
implementation 'org.mapsforge:vtm-jts:[CURRENT-VERSION]' implementation 'org.mapsforge:vtm-jts:[CURRENT-VERSION]'
implementation 'com.vividsolutions:jts:1.13' implementation 'org.locationtech.jts:jts-core:1.15.0'
``` ```
- Online tiles ### Online tiles
```groovy ```groovy
implementation 'org.mapsforge:vtm-http:[CURRENT-VERSION]' implementation 'org.mapsforge:vtm-http:[CURRENT-VERSION]'
@@ -84,7 +81,16 @@ implementation 'com.squareup.okhttp3:okhttp:3.8.0'
implementation 'com.squareup.okio:okio:1.13.0' implementation 'com.squareup.okio:okio:1.13.0'
``` ```
- GeoJSON tiles ### 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 ```groovy
implementation 'org.mapsforge:vtm-json:[CURRENT-VERSION]' implementation 'org.mapsforge:vtm-json:[CURRENT-VERSION]'
@@ -93,6 +99,33 @@ implementation 'com.fasterxml.jackson.core:jackson-core:2.8.4'
implementation 'com.fasterxml.jackson.core:jackson-databind: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 ## Snapshots
We publish SNAPSHOT builds to Sonatype OSS Repository Hosting. We publish SNAPSHOT builds to Sonatype OSS Repository Hosting.
@@ -131,6 +164,6 @@ The dependencies for Maven are declared in a similar way. For example:
## Jars ## Jars
You can find release and snapshot jars (regular and with dependencies) in [Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22org.mapsforge%22) and [Sonatype OSS Repository Hosting](https://oss.sonatype.org/content/repositories/snapshots/org/mapsforge/). 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. Third party jars can be found at their respective sites or in Maven Central repository.

279
docs/Rendertheme.md Normal file
View 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
View 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
```

35
docs/logo/OSciMap.svg Normal file
View 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
View 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
View 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

View File

@@ -1,16 +1,12 @@
# Project-wide Gradle settings. # Project-wide Gradle settings.
# IDE (e.g. Android Studio) users: # IDE (e.g. Android Studio) users:
# Gradle settings configured through the IDE *will override* # Gradle settings configured through the IDE *will override*
# any settings specified in this file. # any settings specified in this file.
# For more details on how to configure your build environment visit # For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html # http://www.gradle.org/docs/current/userguide/build_environment.html
# Specifies the JVM arguments used for the daemon process. # Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings. # 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. # When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit # 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 # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects

Binary file not shown.

View File

@@ -1,6 +1,6 @@
#Thu Oct 26 11:57:58 EEST 2017 #Wed Mar 28 09:56:50 EEST 2018
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip

100
gradlew vendored
View File

@@ -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 # Attempt to set APP_HOME
# Resolve links: $0 may be a link # Resolve links: $0 may be a link
PRG="$0" PRG="$0"
@@ -60,6 +24,46 @@ cd "`dirname \"$PRG\"`/" >/dev/null
APP_HOME="`pwd -P`" APP_HOME="`pwd -P`"
cd "$SAVED" >/dev/null 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 CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
# Determine the Java command to use to start the JVM. # Determine the Java command to use to start the JVM.
@@ -85,7 +89,7 @@ location of your Java installation."
fi fi
# Increase the maximum file descriptors if we can. # 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` MAX_FD_LIMIT=`ulimit -H -n`
if [ $? -eq 0 ] ; then if [ $? -eq 0 ] ; then
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
@@ -150,11 +154,19 @@ if $cygwin ; then
esac esac
fi fi
# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules # Escape application args
function splitJvmOpts() { save () {
JVM_OPTS=("$@") for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
echo " "
} }
eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS APP_ARGS=$(save "$@")
JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
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
View File

@@ -8,14 +8,14 @@
@rem Set local scope for the variables with windows NT shell @rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal 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 set DIRNAME=%~dp0
if "%DIRNAME%" == "" set DIRNAME=. if "%DIRNAME%" == "" set DIRNAME=.
set APP_BASE_NAME=%~n0 set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME% 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 @rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome if defined JAVA_HOME goto findJavaFromJavaHome
@@ -46,10 +46,9 @@ echo location of your Java installation.
goto fail goto fail
:init :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 not "%OS%" == "Windows_NT" goto win9xME_args
if "%@eval[2+2]" == "4" goto 4NT_args
:win9xME_args :win9xME_args
@rem Slurp the command line arguments. @rem Slurp the command line arguments.
@@ -60,11 +59,6 @@ set _SKIP=2
if "x%~1" == "x" goto execute if "x%~1" == "x" goto execute
set CMD_LINE_ARGS=%* set CMD_LINE_ARGS=%*
goto execute
:4NT_args
@rem Get arguments from the 4NT Shell from JP Software
set CMD_LINE_ARGS=%$
:execute :execute
@rem Setup the command line @rem Setup the command line

View File

@@ -49,6 +49,11 @@
<xs:enumeration value="monospace" /> <xs:enumeration value="monospace" />
<xs:enumeration value="sans_serif" /> <xs:enumeration value="sans_serif" />
<xs:enumeration value="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:restriction>
</xs:simpleType> </xs:simpleType>
@@ -85,6 +90,7 @@
<xs:enumeration value="ele" /> <xs:enumeration value="ele" />
<xs:enumeration value="addr:housenumber" /> <xs:enumeration value="addr:housenumber" />
<xs:enumeration value="addr_housenumber" /> <!-- Mapzen --> <xs:enumeration value="addr_housenumber" /> <!-- Mapzen -->
<xs:enumeration value="housenumber" /> <!-- OpenMapTiles -->
<xs:enumeration value="name" /> <xs:enumeration value="name" />
<xs:enumeration value="ref" /> <xs:enumeration value="ref" />
</xs:restriction> </xs:restriction>
@@ -229,6 +235,9 @@
<xs:attribute name="symbol-width" type="xs:positiveInteger" 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-height" type="xs:positiveInteger" use="optional" />
<xs:attribute name="symbol-percent" 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>
<xs:complexType name="extrusion"> <xs:complexType name="extrusion">

View File

@@ -13,6 +13,7 @@ include ':vtm-ios-example'
include ':vtm-jeo' include ':vtm-jeo'
include ':vtm-json' include ':vtm-json'
include ':vtm-jts' include ':vtm-jts'
include ':vtm-mvt'
include ':vtm-playground' include ':vtm-playground'
include ':vtm-tests' include ':vtm-tests'
include ':vtm-theme-comparator' include ':vtm-theme-comparator'

View File

@@ -8,12 +8,12 @@
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<application <application
android:allowBackup="true" android:allowBackup="true"
android:icon="@drawable/ic_launcher" android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"> android:label="@string/app_name"
android:usesCleartextTraffic="true">
<activity <activity
android:name=".Samples" android:name=".Samples"
android:configChanges="keyboardHidden|orientation|screenSize"> android:configChanges="keyboardHidden|orientation|screenSize">
@@ -22,6 +22,9 @@
<category android:name="android.intent.category.LAUNCHER" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter> </intent-filter>
</activity> </activity>
<activity
android:name=".Animator2Activity"
android:configChanges="keyboardHidden|orientation|screenSize" />
<activity <activity
android:name=".AtlasMarkerOverlayActivity" android:name=".AtlasMarkerOverlayActivity"
android:configChanges="keyboardHidden|orientation|screenSize" /> android:configChanges="keyboardHidden|orientation|screenSize" />
@@ -32,16 +35,19 @@
android:name=".AtlasThemeActivity" android:name=".AtlasThemeActivity"
android:configChanges="keyboardHidden|orientation|screenSize" /> android:configChanges="keyboardHidden|orientation|screenSize" />
<activity <activity
android:name=".BitmapTileMapActivity" android:name=".BitmapTileActivity"
android:configChanges="keyboardHidden|orientation|screenSize" /> android:configChanges="keyboardHidden|orientation|screenSize" />
<activity <activity
android:name=".ClusterMarkerOverlayActivity" android:name=".ClusterMarkerOverlayActivity"
android:configChanges="keyboardHidden|orientation|screenSize" /> android:configChanges="keyboardHidden|orientation|screenSize" />
<activity <activity
android:name=".GdxMapActivity" android:name=".GettingStarted"
android:configChanges="keyboardHidden|orientation|screenSize" /> android:configChanges="keyboardHidden|orientation|screenSize" />
<activity <activity
android:name=".JeoIndoorMapActivity" android:name=".GdxActivity"
android:configChanges="keyboardHidden|orientation|screenSize" />
<activity
android:name=".JeoIndoorActivity"
android:configChanges="keyboardHidden|orientation|screenSize" /> android:configChanges="keyboardHidden|orientation|screenSize" />
<activity <activity
android:name=".LayerGroupActivity" android:name=".LayerGroupActivity"
@@ -53,40 +59,52 @@
android:name=".LocationActivity" android:name=".LocationActivity"
android:configChanges="keyboardHidden|orientation|screenSize" /> android:configChanges="keyboardHidden|orientation|screenSize" />
<activity <activity
android:name=".MapsforgeMapActivity" android:name=".LocationTextureActivity"
android:configChanges="keyboardHidden|orientation|screenSize" /> android:configChanges="keyboardHidden|orientation|screenSize" />
<activity <activity
android:name=".MapsforgeMapActivity$MapFilePicker" android:name=".MapEventLayer2Activity"
android:configChanges="keyboardHidden|orientation|screenSize" /> android:configChanges="keyboardHidden|orientation|screenSize" />
<activity <activity
android:name=".MapsforgeMapActivity$ThemeFilePicker" 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" /> android:configChanges="keyboardHidden|orientation|screenSize" />
<activity <activity
android:name=".MapsforgePolyLabelActivity" android:name=".MapsforgePolyLabelActivity"
android:configChanges="keyboardHidden|orientation|screenSize" /> android:configChanges="keyboardHidden|orientation|screenSize" />
<activity
android:name=".MapsforgeS3DBActivity"
android:configChanges="keyboardHidden|orientation|screenSize" />
<activity <activity
android:name=".MapsforgeStyleActivity" android:name=".MapsforgeStyleActivity"
android:configChanges="keyboardHidden|orientation|screenSize" /> android:configChanges="keyboardHidden|orientation|screenSize" />
<activity <activity
android:name=".MapzenGeojsonMapActivity" android:name=".MapzenGeojsonActivity"
android:configChanges="keyboardHidden|orientation|screenSize" /> android:configChanges="keyboardHidden|orientation|screenSize" />
<activity <activity
android:name=".MapzenMvtMapActivity" android:name=".MapzenMvtActivity"
android:configChanges="keyboardHidden|orientation|screenSize" /> android:configChanges="keyboardHidden|orientation|screenSize" />
<activity <activity
android:name=".MarkerOverlayActivity" android:name=".MarkerOverlayActivity"
android:configChanges="keyboardHidden|orientation|screenSize" /> android:configChanges="keyboardHidden|orientation|screenSize" />
<activity <activity
android:name=".MultiMapActivity" android:name=".MultiMapViewActivity"
android:configChanges="keyboardHidden|orientation|screenSize" /> android:configChanges="keyboardHidden|orientation|screenSize" />
<activity <activity
android:name=".NewGesturesActivity" android:name=".NextzenGeojsonActivity"
android:configChanges="keyboardHidden|orientation|screenSize" /> android:configChanges="keyboardHidden|orientation|screenSize" />
<activity <activity
android:name=".OpenMapTilesGeojsonMapActivity" android:name=".NextzenMvtActivity"
android:configChanges="keyboardHidden|orientation|screenSize" /> android:configChanges="keyboardHidden|orientation|screenSize" />
<activity <activity
android:name=".OSciMapS3DBMapActivity" android:name=".OpenMapTilesMvtActivity"
android:configChanges="keyboardHidden|orientation|screenSize" />
<activity
android:name=".OSciMapS3DBActivity"
android:configChanges="keyboardHidden|orientation|screenSize" /> android:configChanges="keyboardHidden|orientation|screenSize" />
<activity <activity
android:name=".PathOverlayActivity" android:name=".PathOverlayActivity"
@@ -113,7 +131,7 @@
android:name=".ThemeStylerActivity" android:name=".ThemeStylerActivity"
android:configChanges="keyboardHidden|orientation|screenSize" /> android:configChanges="keyboardHidden|orientation|screenSize" />
<activity <activity
android:name=".VectorLayerMapActivity" android:name=".VectorLayerActivity"
android:configChanges="keyboardHidden|orientation|screenSize" /> android:configChanges="keyboardHidden|orientation|screenSize" />
</application> </application>

View File

@@ -1,8 +1,11 @@
apply plugin: 'com.android.application' apply plugin: 'com.android.application'
repositories { /*
maven { url "https://oss.sonatype.org/content/repositories/snapshots/" } configurations.all {
// Check latest snapshot on every build
resolutionStrategy.cacheChangingModulesFor 0, 'seconds'
} }
*/
dependencies { dependencies {
implementation project(':vtm-android') implementation project(':vtm-android')
@@ -10,6 +13,7 @@ dependencies {
implementation project(':vtm-jeo') implementation project(':vtm-jeo')
implementation project(':vtm-json') implementation project(':vtm-json')
implementation project(':vtm-jts') implementation project(':vtm-jts')
implementation project(':vtm-mvt')
implementation project(':vtm-themes') implementation project(':vtm-themes')
implementation "org.slf4j:slf4j-android:$slf4jVersion" implementation "org.slf4j:slf4j-android:$slf4jVersion"
@@ -18,9 +22,10 @@ dependencies {
implementation "com.badlogicgames.gdx:gdx-backend-android:$gdxVersion" implementation "com.badlogicgames.gdx:gdx-backend-android:$gdxVersion"
implementation 'org.mapsforge:mapsforge-poi-android:master-SNAPSHOT' implementation 'org.mapsforge:mapsforge-poi-android:master-SNAPSHOT'
implementation 'org.mapsforge:spatialite-android:master-SNAPSHOT:natives-armeabi' implementation 'org.mapsforge:sqlite-android:master-SNAPSHOT:natives-armeabi-v7a'
implementation 'org.mapsforge:spatialite-android:master-SNAPSHOT:natives-armeabi-v7a' implementation 'org.mapsforge:sqlite-android:master-SNAPSHOT:natives-arm64-v8a'
implementation 'org.mapsforge:spatialite-android:master-SNAPSHOT:natives-x86' implementation 'org.mapsforge:sqlite-android:master-SNAPSHOT:natives-x86'
implementation 'org.mapsforge:sqlite-android:master-SNAPSHOT:natives-x86_64'
} }
android { android {
@@ -64,6 +69,14 @@ android {
exclude 'META-INF/LICENSE' exclude 'META-INF/LICENSE'
exclude 'META-INF/NOTICE' exclude 'META-INF/NOTICE'
} }
/*buildTypes {
all {
minifyEnabled true
useProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}*/
} }
task run(dependsOn: 'installDebug') { task run(dependsOn: 'installDebug') {

10
vtm-android-example/proguard-rules.pro vendored Normal file
View 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.**

Binary file not shown.

Before

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

View 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>

View File

@@ -1,6 +1,6 @@
/* /*
* Copyright 2010, 2011, 2012 mapsforge.org * Copyright 2010, 2011, 2012 mapsforge.org
* Copyright 2016-2017 devemux86 * Copyright 2016-2018 devemux86
* Copyright 2017 Longri * Copyright 2017 Longri
* *
* This program is free software: you can redistribute it and/or modify it under the * This program is free software: you can redistribute it and/or modify it under the
@@ -18,8 +18,6 @@ package org.oscim.android.filepicker;
import org.oscim.theme.ExternalRenderTheme; import org.oscim.theme.ExternalRenderTheme;
import org.oscim.theme.ThemeFile; import org.oscim.theme.ThemeFile;
import org.oscim.theme.ThemeUtils;
import org.oscim.theme.XmlMapsforgeThemeBuilder;
import org.oscim.theme.XmlThemeBuilder; import org.oscim.theme.XmlThemeBuilder;
import org.oscim.tiling.TileSource.OpenResult; import org.oscim.tiling.TileSource.OpenResult;
import org.xml.sax.InputSource; import org.xml.sax.InputSource;
@@ -41,11 +39,7 @@ public final class ValidRenderTheme implements ValidFileFilter {
try { try {
ThemeFile theme = new ExternalRenderTheme(file.getAbsolutePath()); ThemeFile theme = new ExternalRenderTheme(file.getAbsolutePath());
DefaultHandler renderThemeHandler; DefaultHandler renderThemeHandler = new XmlThemeBuilder(theme);
if (ThemeUtils.isMapsforgeTheme(theme))
renderThemeHandler = new XmlMapsforgeThemeBuilder(theme);
else
renderThemeHandler = new XmlThemeBuilder(theme);
XMLReader xmlReader = SAXParserFactory.newInstance().newSAXParser().getXMLReader(); XMLReader xmlReader = SAXParserFactory.newInstance().newSAXParser().getXMLReader();
xmlReader.setContentHandler(renderThemeHandler); xmlReader.setContentHandler(renderThemeHandler);
xmlReader.parse(new InputSource(theme.getRenderThemeAsStream())); xmlReader.parse(new InputSource(theme.getRenderThemeAsStream()));

View File

@@ -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;
}
}

View File

@@ -1,6 +1,6 @@
/* /*
* Copyright 2014 Hannes Janetzek * Copyright 2014 Hannes Janetzek
* Copyright 2016-2017 devemux86 * Copyright 2016-2018 devemux86
* Copyright 2017 Longri * Copyright 2017 Longri
* *
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org). * This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
@@ -24,15 +24,12 @@ import org.oscim.layers.marker.ItemizedLayer;
import org.oscim.layers.marker.MarkerItem; import org.oscim.layers.marker.MarkerItem;
import org.oscim.layers.marker.MarkerSymbol; import org.oscim.layers.marker.MarkerSymbol;
import org.oscim.layers.marker.MarkerSymbol.HotspotPlace; import org.oscim.layers.marker.MarkerSymbol.HotspotPlace;
import org.oscim.layers.tile.buildings.BuildingLayer; import org.oscim.layers.tile.bitmap.BitmapTileLayer;
import org.oscim.layers.tile.vector.VectorTileLayer;
import org.oscim.layers.tile.vector.labeling.LabelLayer;
import org.oscim.renderer.atlas.TextureAtlas; import org.oscim.renderer.atlas.TextureAtlas;
import org.oscim.renderer.atlas.TextureRegion; import org.oscim.renderer.atlas.TextureRegion;
import org.oscim.theme.VtmThemes;
import org.oscim.tiling.TileSource; import org.oscim.tiling.TileSource;
import org.oscim.tiling.source.OkHttpEngine; import org.oscim.tiling.source.OkHttpEngine;
import org.oscim.tiling.source.oscimap4.OSciMap4TileSource; import org.oscim.tiling.source.bitmap.DefaultSources;
import org.oscim.utils.TextureAtlasUtils; import org.oscim.utils.TextureAtlasUtils;
import java.util.ArrayList; import java.util.ArrayList;
@@ -48,13 +45,10 @@ public class AtlasMarkerOverlayActivity extends MarkerOverlayActivity {
// Map events receiver // Map events receiver
mMap.layers().add(new MapEventsReceiver(mMap)); mMap.layers().add(new MapEventsReceiver(mMap));
TileSource tileSource = OSciMap4TileSource.builder() TileSource tileSource = DefaultSources.OPENSTREETMAP
.httpFactory(new OkHttpEngine.OkHttpFactory()) .httpFactory(new OkHttpEngine.OkHttpFactory())
.build(); .build();
VectorTileLayer l = mMap.setBaseMap(tileSource); mMap.layers().add(new BitmapTileLayer(mMap, tileSource));
mMap.layers().add(new BuildingLayer(mMap, l));
mMap.layers().add(new LabelLayer(mMap, l));
mMap.setTheme(VtmThemes.DEFAULT);
Bitmap bitmapPoi = drawableToBitmap(getResources().getDrawable(R.drawable.marker_poi)); Bitmap bitmapPoi = drawableToBitmap(getResources().getDrawable(R.drawable.marker_poi));
Bitmap bitmapFocus = drawableToBitmap(getResources().getDrawable(R.drawable.marker_focus)); Bitmap bitmapFocus = drawableToBitmap(getResources().getDrawable(R.drawable.marker_focus));

View File

@@ -1,6 +1,6 @@
/* /*
* Copyright 2014 Hannes Janetzek * Copyright 2014 Hannes Janetzek
* Copyright 2016-2017 devemux86 * Copyright 2016-2018 devemux86
* Copyright 2017 Longri * Copyright 2017 Longri
* *
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org). * This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
@@ -30,15 +30,12 @@ import org.oscim.layers.marker.ItemizedLayer;
import org.oscim.layers.marker.MarkerItem; import org.oscim.layers.marker.MarkerItem;
import org.oscim.layers.marker.MarkerSymbol; import org.oscim.layers.marker.MarkerSymbol;
import org.oscim.layers.marker.MarkerSymbol.HotspotPlace; import org.oscim.layers.marker.MarkerSymbol.HotspotPlace;
import org.oscim.layers.tile.buildings.BuildingLayer; import org.oscim.layers.tile.bitmap.BitmapTileLayer;
import org.oscim.layers.tile.vector.VectorTileLayer;
import org.oscim.layers.tile.vector.labeling.LabelLayer;
import org.oscim.renderer.atlas.TextureAtlas; import org.oscim.renderer.atlas.TextureAtlas;
import org.oscim.renderer.atlas.TextureRegion; import org.oscim.renderer.atlas.TextureRegion;
import org.oscim.theme.VtmThemes;
import org.oscim.tiling.TileSource; import org.oscim.tiling.TileSource;
import org.oscim.tiling.source.OkHttpEngine; import org.oscim.tiling.source.OkHttpEngine;
import org.oscim.tiling.source.oscimap4.OSciMap4TileSource; import org.oscim.tiling.source.bitmap.DefaultSources;
import org.oscim.utils.TextureAtlasUtils; import org.oscim.utils.TextureAtlasUtils;
import java.util.ArrayList; import java.util.ArrayList;
@@ -52,25 +49,21 @@ public class AtlasMultiTextureActivity extends MarkerOverlayActivity {
// Map events receiver // Map events receiver
mMap.layers().add(new MapEventsReceiver(mMap)); mMap.layers().add(new MapEventsReceiver(mMap));
TileSource tileSource = OSciMap4TileSource.builder() TileSource tileSource = DefaultSources.OPENSTREETMAP
.httpFactory(new OkHttpEngine.OkHttpFactory()) .httpFactory(new OkHttpEngine.OkHttpFactory())
.build(); .build();
VectorTileLayer l = mMap.setBaseMap(tileSource); mMap.layers().add(new BitmapTileLayer(mMap, tileSource));
mMap.layers().add(new BuildingLayer(mMap, l));
mMap.layers().add(new LabelLayer(mMap, l));
mMap.setTheme(VtmThemes.DEFAULT);
// Create Atlas from Bitmaps // Create Atlas from Bitmaps
java.util.Map<Object, Bitmap> inputMap = new LinkedHashMap<>(); java.util.Map<Object, Bitmap> inputMap = new LinkedHashMap<>();
java.util.Map<Object, TextureRegion> regionsMap = new LinkedHashMap<>(); java.util.Map<Object, TextureRegion> regionsMap = new LinkedHashMap<>();
List<TextureAtlas> atlasList = new ArrayList<>(); List<TextureAtlas> atlasList = new ArrayList<>();
float scale = getResources().getDisplayMetrics().density;
Canvas canvas = CanvasAdapter.newCanvas(); Canvas canvas = CanvasAdapter.newCanvas();
Paint paint = CanvasAdapter.newPaint(); Paint paint = CanvasAdapter.newPaint();
paint.setTypeface(Paint.FontFamily.DEFAULT, Paint.FontStyle.NORMAL); paint.setTypeface(Paint.FontFamily.DEFAULT, Paint.FontStyle.NORMAL);
paint.setTextSize(12 * scale); paint.setTextSize(12 * CanvasAdapter.getScale());
paint.setStrokeWidth(2 * scale); paint.setStrokeWidth(2 * CanvasAdapter.getScale());
paint.setColor(Color.BLACK); paint.setColor(Color.BLACK);
List<MarkerItem> pts = new ArrayList<>(); List<MarkerItem> pts = new ArrayList<>();
for (double lat = -90; lat <= 90; lat += 10) { for (double lat = -90; lat <= 90; lat += 10) {
@@ -78,12 +71,12 @@ public class AtlasMultiTextureActivity extends MarkerOverlayActivity {
String title = lat + "/" + lon; String title = lat + "/" + lon;
pts.add(new MarkerItem(title, "", new GeoPoint(lat, lon))); pts.add(new MarkerItem(title, "", new GeoPoint(lat, lon)));
Bitmap bmp = CanvasAdapter.newBitmap((int) (40 * scale), (int) (40 * scale), 0); Bitmap bmp = CanvasAdapter.newBitmap((int) (40 * CanvasAdapter.getScale()), (int) (40 * CanvasAdapter.getScale()), 0);
canvas.setBitmap(bmp); canvas.setBitmap(bmp);
canvas.fillColor(Color.GREEN); canvas.fillColor(Color.GREEN);
canvas.drawText(Double.toString(lat), 3 * scale, 17 * scale, paint); canvas.drawText(Double.toString(lat), 3 * CanvasAdapter.getScale(), 17 * CanvasAdapter.getScale(), paint);
canvas.drawText(Double.toString(lon), 3 * scale, 35 * scale, paint); canvas.drawText(Double.toString(lon), 3 * CanvasAdapter.getScale(), 35 * CanvasAdapter.getScale(), paint);
inputMap.put(title, bmp); inputMap.put(title, bmp);
} }
} }

View File

@@ -1,6 +1,6 @@
/* /*
* Copyright 2017 Longri * Copyright 2017 Longri
* Copyright 2017 devemux86 * Copyright 2017-2018 devemux86
* *
* This program is free software: you can redistribute it and/or modify it under the * 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 * terms of the GNU Lesser General Public License as published by the Free Software
@@ -27,4 +27,11 @@ public class AtlasThemeActivity extends SimpleMapActivity {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
} }
@Override
protected void onDestroy() {
super.onDestroy();
Parameters.TEXTURE_ATLAS = false;
}
} }

View File

@@ -1,6 +1,6 @@
/* /*
* Copyright 2013 Hannes Janetzek * Copyright 2013 Hannes Janetzek
* Copyright 2016-2017 devemux86 * Copyright 2016-2018 devemux86
* *
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org). * This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
* *
@@ -35,7 +35,7 @@ import org.slf4j.LoggerFactory;
public class BaseMapActivity extends MapActivity { public class BaseMapActivity extends MapActivity {
static final Logger log = LoggerFactory.getLogger(BaseMapActivity.class); static final Logger log = LoggerFactory.getLogger(BaseMapActivity.class);
final static boolean USE_CACHE = true; final static boolean USE_CACHE = false;
VectorTileLayer mBaseLayer; VectorTileLayer mBaseLayer;
TileSource mTileSource; TileSource mTileSource;
@@ -116,7 +116,7 @@ public class BaseMapActivity extends MapActivity {
} else { } else {
item.setChecked(true); item.setChecked(true);
if (mGridLayer == null) if (mGridLayer == null)
mGridLayer = new TileGridLayer(mMap, getResources().getDisplayMetrics().density); mGridLayer = new TileGridLayer(mMap);
mMap.layers().add(mGridLayer); mMap.layers().add(mGridLayer);
} }

View File

@@ -1,6 +1,6 @@
/* /*
* Copyright 2014 Hannes Janetzek * Copyright 2014 Hannes Janetzek
* Copyright 2017 devemux86 * Copyright 2017-2018 devemux86
* *
* This program is free software: you can redistribute it and/or modify it under the * 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 * terms of the GNU Lesser General Public License as published by the Free Software
@@ -27,20 +27,20 @@ import org.oscim.tiling.source.bitmap.DefaultSources;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; 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; private final BitmapTileSource mTileSource;
protected BitmapTileLayer mBitmapLayer; protected BitmapTileLayer mBitmapLayer;
public BitmapTileMapActivity() { public BitmapTileActivity() {
this(DefaultSources.OPENSTREETMAP.build()); this(DefaultSources.OPENSTREETMAP.build());
} }
public BitmapTileMapActivity(BitmapTileSource tileSource) { public BitmapTileActivity(BitmapTileSource tileSource) {
super(R.layout.activity_map); super(R.layout.activity_map);
mTileSource = tileSource; mTileSource = tileSource;
} }
@@ -103,6 +103,7 @@ public class BitmapTileMapActivity extends MapActivity {
p.setTilt((float) (Math.random() * 60)); p.setTilt((float) (Math.random() * 60));
p.setBearing((float) (Math.random() * 360)); p.setBearing((float) (Math.random() * 360));
p.setRoll((float) (Math.random() * 360));
//mMapView.map().setMapPosition(p); //mMapView.map().setMapPosition(p);
mMapView.map().animator().animateTo(time, p); mMapView.map().animator().animateTo(time, p);

View File

@@ -1,5 +1,5 @@
/* /*
* Copyright 2016-2017 devemux86 * Copyright 2016-2018 devemux86
* Copyright 2017 nebular * Copyright 2017 nebular
* *
* This program is free software: you can redistribute it and/or modify it under the * This program is free software: you can redistribute it and/or modify it under the
@@ -25,13 +25,10 @@ import org.oscim.layers.marker.MarkerLayer;
import org.oscim.layers.marker.MarkerRenderer; import org.oscim.layers.marker.MarkerRenderer;
import org.oscim.layers.marker.MarkerRendererFactory; import org.oscim.layers.marker.MarkerRendererFactory;
import org.oscim.layers.marker.MarkerSymbol; import org.oscim.layers.marker.MarkerSymbol;
import org.oscim.layers.tile.buildings.BuildingLayer; import org.oscim.layers.tile.bitmap.BitmapTileLayer;
import org.oscim.layers.tile.vector.VectorTileLayer;
import org.oscim.layers.tile.vector.labeling.LabelLayer;
import org.oscim.theme.VtmThemes;
import org.oscim.tiling.TileSource; import org.oscim.tiling.TileSource;
import org.oscim.tiling.source.OkHttpEngine; import org.oscim.tiling.source.OkHttpEngine;
import org.oscim.tiling.source.oscimap4.OSciMap4TileSource; import org.oscim.tiling.source.bitmap.DefaultSources;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@@ -48,13 +45,10 @@ public class ClusterMarkerOverlayActivity extends MarkerOverlayActivity {
// Map events receiver // Map events receiver
mMap.layers().add(new MapEventsReceiver(mMap)); mMap.layers().add(new MapEventsReceiver(mMap));
TileSource tileSource = OSciMap4TileSource.builder() TileSource tileSource = DefaultSources.OPENSTREETMAP
.httpFactory(new OkHttpEngine.OkHttpFactory()) .httpFactory(new OkHttpEngine.OkHttpFactory())
.build(); .build();
VectorTileLayer l = mMap.setBaseMap(tileSource); mMap.layers().add(new BitmapTileLayer(mMap, tileSource));
mMap.layers().add(new BuildingLayer(mMap, l));
mMap.layers().add(new LabelLayer(mMap, l));
mMap.setTheme(VtmThemes.DEFAULT);
Bitmap bitmapPoi = drawableToBitmap(getResources().getDrawable(R.drawable.marker_poi)); Bitmap bitmapPoi = drawableToBitmap(getResources().getDrawable(R.drawable.marker_poi));
final MarkerSymbol symbol; final MarkerSymbol symbol;
@@ -84,6 +78,7 @@ public class ClusterMarkerOverlayActivity extends MarkerOverlayActivity {
// Create some markers spaced STEP degrees // Create some markers spaced STEP degrees
List<MarkerItem> pts = new ArrayList<>(); List<MarkerItem> pts = new ArrayList<>();
mMap.setMapPosition(53.08, 8.83, 1 << 15);
GeoPoint center = mMap.getMapPosition().getGeoPoint(); GeoPoint center = mMap.getMapPosition().getGeoPoint();
for (int x = -COUNT; x < COUNT; x++) { for (int x = -COUNT; x < COUNT; x++) {
for (int y = -COUNT; y < COUNT; y++) { for (int y = -COUNT; y < COUNT; y++) {

View File

@@ -1,6 +1,7 @@
/* /*
* Copyright 2013 Hannes Janetzek * Copyright 2013 Hannes Janetzek
* Copyright 2016-2017 devemux86 * Copyright 2016-2018 devemux86
* Copyright 2018 Gustl22
* *
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org). * This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
* *
@@ -24,6 +25,7 @@ import com.badlogic.gdx.backends.android.AndroidApplication;
import com.badlogic.gdx.backends.android.AndroidApplicationConfiguration; import com.badlogic.gdx.backends.android.AndroidApplicationConfiguration;
import com.badlogic.gdx.utils.SharedLibraryLoader; import com.badlogic.gdx.utils.SharedLibraryLoader;
import org.oscim.android.MapPreferences;
import org.oscim.android.canvas.AndroidGraphics; import org.oscim.android.canvas.AndroidGraphics;
import org.oscim.backend.CanvasAdapter; import org.oscim.backend.CanvasAdapter;
import org.oscim.backend.GLAdapter; import org.oscim.backend.GLAdapter;
@@ -35,7 +37,8 @@ import org.oscim.tiling.TileSource;
import org.oscim.tiling.source.OkHttpEngine; import org.oscim.tiling.source.OkHttpEngine;
import org.oscim.tiling.source.oscimap4.OSciMap4TileSource; import org.oscim.tiling.source.oscimap4.OSciMap4TileSource;
public class GdxMapActivity extends AndroidApplication { public class GdxActivity extends AndroidApplication {
MapPreferences mPrefs;
@Override @Override
public void onCreate(Bundle savedInstanceState) { public void onCreate(Bundle savedInstanceState) {
@@ -51,11 +54,12 @@ public class GdxMapActivity extends AndroidApplication {
AndroidApplicationConfiguration cfg = new AndroidApplicationConfiguration(); AndroidApplicationConfiguration cfg = new AndroidApplicationConfiguration();
cfg.stencil = 8; cfg.stencil = 8;
cfg.numSamples = 2; //cfg.numSamples = 2;
new SharedLibraryLoader().load("vtm-jni"); new SharedLibraryLoader().load("vtm-jni");
initialize(new GdxMapAndroid(), cfg); initialize(new GdxMapAndroid(), cfg);
mPrefs = new MapPreferences(GdxActivity.class.getName(), this);
} }
class GdxMapAndroid extends GdxMap { class GdxMapAndroid extends GdxMap {
@@ -64,7 +68,16 @@ public class GdxMapActivity extends AndroidApplication {
TileSource ts = OSciMap4TileSource.builder() TileSource ts = OSciMap4TileSource.builder()
.httpFactory(new OkHttpEngine.OkHttpFactory()) .httpFactory(new OkHttpEngine.OkHttpFactory())
.build(); .build();
initDefaultLayers(ts, true, true, true, getResources().getDisplayMetrics().density); initDefaultLayers(ts, false, true, true);
mPrefs.load(getMap());
}
@Override
public void pause() {
mPrefs.save(getMap());
super.pause();
} }
} }
} }

View File

@@ -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();
}
}

View File

@@ -1,6 +1,6 @@
/* /*
* Copyright 2014 Hannes Janetzek * Copyright 2014 Hannes Janetzek
* Copyright 2016-2017 devemux86 * Copyright 2016-2018 devemux86
* *
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org). * This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
* *
@@ -25,6 +25,7 @@ import android.widget.ToggleButton;
import org.jeo.map.Style; import org.jeo.map.Style;
import org.jeo.vector.VectorDataset; import org.jeo.vector.VectorDataset;
import org.oscim.backend.CanvasAdapter;
import org.oscim.backend.canvas.Color; import org.oscim.backend.canvas.Color;
import org.oscim.layers.OSMIndoorLayer; import org.oscim.layers.OSMIndoorLayer;
import org.oscim.layers.tile.buildings.BuildingLayer; import org.oscim.layers.tile.buildings.BuildingLayer;
@@ -42,15 +43,15 @@ import java.net.URL;
import java.net.URLConnection; import java.net.URLConnection;
import java.util.Arrays; import java.util.Arrays;
public class JeoIndoorMapActivity extends BaseMapActivity { public class JeoIndoorActivity extends BaseMapActivity {
public static final Logger log = LoggerFactory.getLogger(JeoIndoorMapActivity.class); public static final Logger log = LoggerFactory.getLogger(JeoIndoorActivity.class);
// from http://overpass-turbo.eu/s/2vp // from http://overpass-turbo.eu/s/2vp
String PATH = "https://gist.githubusercontent.com/anonymous/09062103a66844a96048f25626078c8d/raw/1d3af6a5a55e9ea4adc9551fa633a051a44a5a9c/overpass.geojson"; String PATH = "https://gist.githubusercontent.com/anonymous/09062103a66844a96048f25626078c8d/raw/1d3af6a5a55e9ea4adc9551fa633a051a44a5a9c/overpass.geojson";
private OSMIndoorLayer mIndoorLayer; private OSMIndoorLayer mIndoorLayer;
public JeoIndoorMapActivity() { public JeoIndoorActivity() {
super(R.layout.jeo_indoor_map); super(R.layout.jeo_indoor_map);
} }
@@ -96,11 +97,10 @@ public class JeoIndoorMapActivity extends BaseMapActivity {
VectorDataset data = JeoTest.readGeoJson(is); VectorDataset data = JeoTest.readGeoJson(is);
Style style = JeoTest.getStyle(); Style style = JeoTest.getStyle();
float scale = getResources().getDisplayMetrics().density;
TextStyle textStyle = TextStyle.builder() TextStyle textStyle = TextStyle.builder()
.isCaption(true) .isCaption(true)
.fontSize(16 * scale).color(Color.BLACK) .fontSize(16 * CanvasAdapter.getScale()).color(Color.BLACK)
.strokeWidth(2.2f * scale).strokeColor(Color.WHITE) .strokeWidth(2.2f * CanvasAdapter.getScale()).strokeColor(Color.WHITE)
.build(); .build();
mIndoorLayer = new OSMIndoorLayer(mMap, data, style, textStyle); mIndoorLayer = new OSMIndoorLayer(mMap, data, style, textStyle);
mMap.layers().add(mIndoorLayer); mMap.layers().add(mIndoorLayer);

View File

@@ -1,6 +1,6 @@
/* /*
* Copyright 2013 Hannes Janetzek * Copyright 2013 Hannes Janetzek
* Copyright 2016-2017 devemux86 * Copyright 2016-2018 devemux86
* Copyright 2016 Andrey Novikov * Copyright 2016 Andrey Novikov
* *
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org). * This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
@@ -20,6 +20,7 @@ package org.oscim.android.test;
import android.os.Bundle; import android.os.Bundle;
import org.oscim.backend.CanvasAdapter;
import org.oscim.layers.tile.buildings.BuildingLayer; import org.oscim.layers.tile.buildings.BuildingLayer;
import org.oscim.layers.tile.vector.labeling.LabelLayer; import org.oscim.layers.tile.vector.labeling.LabelLayer;
import org.oscim.map.Layers; import org.oscim.map.Layers;
@@ -61,7 +62,7 @@ public class LayerGroupActivity extends BaseMapActivity {
MapScaleBarLayer mapScaleBarLayer = new MapScaleBarLayer(mMap, mapScaleBar); MapScaleBarLayer mapScaleBarLayer = new MapScaleBarLayer(mMap, mapScaleBar);
BitmapRenderer renderer = mapScaleBarLayer.getRenderer(); BitmapRenderer renderer = mapScaleBarLayer.getRenderer();
renderer.setPosition(GLViewport.Position.BOTTOM_LEFT); renderer.setPosition(GLViewport.Position.BOTTOM_LEFT);
renderer.setOffset(5 * getResources().getDisplayMetrics().density, 0); renderer.setOffset(5 * CanvasAdapter.getScale(), 0);
layers.addGroup(GROUP_OVERLAYS); layers.addGroup(GROUP_OVERLAYS);
layers.add(mapScaleBarLayer, GROUP_OVERLAYS); layers.add(mapScaleBarLayer, GROUP_OVERLAYS);

View File

@@ -1,6 +1,6 @@
/* /*
* Copyright 2014 Hannes Janetzek * Copyright 2014 Hannes Janetzek
* Copyright 2016-2017 devemux86 * Copyright 2016-2018 devemux86
* *
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org). * This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
* *
@@ -36,7 +36,7 @@ import java.util.List;
* This is a very INEFFICIENT and somewhat less useful example for how to use * This is a very INEFFICIENT and somewhat less useful example for how to use
* PathLayers! * PathLayers!
*/ */
public class LineTexActivity extends SimpleMapActivity { public class LineTexActivity extends BitmapTileActivity {
private static final boolean ANIMATION = false; private static final boolean ANIMATION = false;

View File

@@ -1,5 +1,5 @@
/* /*
* Copyright 2016-2017 devemux86 * Copyright 2016-2018 devemux86
* *
* This program is free software: you can redistribute it and/or modify it under the * 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 * terms of the GNU Lesser General Public License as published by the Free Software
@@ -22,9 +22,8 @@ import android.os.Bundle;
import org.oscim.core.MapPosition; import org.oscim.core.MapPosition;
import org.oscim.layers.LocationLayer; import org.oscim.layers.LocationLayer;
import org.oscim.renderer.LocationRenderer;
public class LocationActivity extends SimpleMapActivity implements LocationListener { public class LocationActivity extends BitmapTileActivity implements LocationListener {
private LocationLayer locationLayer; private LocationLayer locationLayer;
private LocationManager locationManager; private LocationManager locationManager;
private final MapPosition mapPosition = new MapPosition(); private final MapPosition mapPosition = new MapPosition();

View File

@@ -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);
}
}
}
}

View File

@@ -16,9 +16,9 @@ package org.oscim.android.test;
import org.oscim.utils.Parameters; import org.oscim.utils.Parameters;
public class NewGesturesActivity extends MarkerOverlayActivity { public class MapEventLayer2Activity extends MarkerOverlayActivity {
public NewGesturesActivity() { public MapEventLayer2Activity() {
super(); super();
Parameters.MAP_EVENT_LAYER2 = true; Parameters.MAP_EVENT_LAYER2 = true;
} }
@@ -27,7 +27,6 @@ public class NewGesturesActivity extends MarkerOverlayActivity {
protected void onDestroy() { protected void onDestroy() {
super.onDestroy(); super.onDestroy();
// Revert gestures for other activities
Parameters.MAP_EVENT_LAYER2 = false; Parameters.MAP_EVENT_LAYER2 = false;
} }
} }

View File

@@ -1,7 +1,8 @@
/* /*
* Copyright 2014 Hannes Janetzek * Copyright 2014 Hannes Janetzek
* Copyright 2016-2017 devemux86 * Copyright 2016-2018 devemux86
* Copyright 2017 Longri * Copyright 2017 Longri
* Copyright 2018 Gustl22
* *
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org). * This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
* *
@@ -27,6 +28,7 @@ import org.oscim.android.filepicker.FilePicker;
import org.oscim.android.filepicker.FilterByFileExtension; import org.oscim.android.filepicker.FilterByFileExtension;
import org.oscim.android.filepicker.ValidMapFile; import org.oscim.android.filepicker.ValidMapFile;
import org.oscim.android.filepicker.ValidRenderTheme; import org.oscim.android.filepicker.ValidRenderTheme;
import org.oscim.backend.CanvasAdapter;
import org.oscim.core.MapElement; import org.oscim.core.MapElement;
import org.oscim.core.MapPosition; import org.oscim.core.MapPosition;
import org.oscim.core.Tag; import org.oscim.core.Tag;
@@ -34,6 +36,7 @@ import org.oscim.core.Tile;
import org.oscim.layers.TileGridLayer; import org.oscim.layers.TileGridLayer;
import org.oscim.layers.tile.MapTile; import org.oscim.layers.tile.MapTile;
import org.oscim.layers.tile.buildings.BuildingLayer; 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.VectorTileLayer;
import org.oscim.layers.tile.vector.labeling.LabelLayer; import org.oscim.layers.tile.vector.labeling.LabelLayer;
import org.oscim.renderer.BitmapRenderer; import org.oscim.renderer.BitmapRenderer;
@@ -52,7 +55,7 @@ import org.oscim.theme.styles.RenderStyle;
import org.oscim.tiling.source.mapfile.MapFileTileSource; import org.oscim.tiling.source.mapfile.MapFileTileSource;
import org.oscim.tiling.source.mapfile.MapInfo; import org.oscim.tiling.source.mapfile.MapInfo;
public class MapsforgeMapActivity extends MapActivity { public class MapsforgeActivity extends MapActivity {
static final int SELECT_MAP_FILE = 0; static final int SELECT_MAP_FILE = 0;
static final int SELECT_THEME_FILE = SELECT_MAP_FILE + 1; static final int SELECT_THEME_FILE = SELECT_MAP_FILE + 1;
@@ -64,9 +67,19 @@ public class MapsforgeMapActivity extends MapActivity {
private TileGridLayer mGridLayer; private TileGridLayer mGridLayer;
private DefaultMapScaleBar mMapScaleBar; private DefaultMapScaleBar mMapScaleBar;
private Menu mMenu; private Menu mMenu;
private boolean mS3db;
private VectorTileLayer mTileLayer; private VectorTileLayer mTileLayer;
MapFileTileSource mTileSource; MapFileTileSource mTileSource;
public MapsforgeActivity() {
this(false);
}
public MapsforgeActivity(boolean s3db) {
super();
mS3db = s3db;
}
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
@@ -145,7 +158,7 @@ public class MapsforgeMapActivity extends MapActivity {
} else { } else {
item.setChecked(true); item.setChecked(true);
if (mGridLayer == null) if (mGridLayer == null)
mGridLayer = new TileGridLayer(mMap, getResources().getDisplayMetrics().density); mGridLayer = new TileGridLayer(mMap);
mMap.layers().add(mGridLayer); mMap.layers().add(mGridLayer);
} }
@@ -173,7 +186,10 @@ public class MapsforgeMapActivity extends MapActivity {
mTileLayer = mMap.setBaseMap(mTileSource); mTileLayer = mMap.setBaseMap(mTileSource);
loadTheme(null); loadTheme(null);
mMap.layers().add(new BuildingLayer(mMap, mTileLayer)); if (mS3db)
mMap.layers().add(new S3DBLayer(mMap, mTileLayer));
else
mMap.layers().add(new BuildingLayer(mMap, mTileLayer));
mMap.layers().add(new LabelLayer(mMap, mTileLayer)); mMap.layers().add(new LabelLayer(mMap, mTileLayer));
mMapScaleBar = new DefaultMapScaleBar(mMap); mMapScaleBar = new DefaultMapScaleBar(mMap);
@@ -185,15 +201,16 @@ public class MapsforgeMapActivity extends MapActivity {
MapScaleBarLayer mapScaleBarLayer = new MapScaleBarLayer(mMap, mMapScaleBar); MapScaleBarLayer mapScaleBarLayer = new MapScaleBarLayer(mMap, mMapScaleBar);
BitmapRenderer renderer = mapScaleBarLayer.getRenderer(); BitmapRenderer renderer = mapScaleBarLayer.getRenderer();
renderer.setPosition(GLViewport.Position.BOTTOM_LEFT); renderer.setPosition(GLViewport.Position.BOTTOM_LEFT);
renderer.setOffset(5 * getResources().getDisplayMetrics().density, 0); renderer.setOffset(5 * CanvasAdapter.getScale(), 0);
mMap.layers().add(mapScaleBarLayer); mMap.layers().add(mapScaleBarLayer);
MapInfo info = mTileSource.getMapInfo(); MapInfo info = mTileSource.getMapInfo();
MapPosition pos = new MapPosition(); if (!info.boundingBox.contains(mMap.getMapPosition().getGeoPoint())) {
pos.setByBoundingBox(info.boundingBox, Tile.SIZE * 4, Tile.SIZE * 4); MapPosition pos = new MapPosition();
mMap.setMapPosition(pos); pos.setByBoundingBox(info.boundingBox, Tile.SIZE * 4, Tile.SIZE * 4);
mMap.setMapPosition(pos);
mPrefs.clear(); mPrefs.clear();
}
} }
} else if (requestCode == SELECT_THEME_FILE) { } else if (requestCode == SELECT_THEME_FILE) {
if (resultCode != RESULT_OK || intent == null || intent.getStringExtra(FilePicker.SELECTED_FILE) == null) { if (resultCode != RESULT_OK || intent == null || intent.getStringExtra(FilePicker.SELECTED_FILE) == null) {

View File

@@ -1,5 +1,5 @@
/* /*
* Copyright 2017 devemux86 * Copyright 2017-2018 devemux86
* *
* This program is free software: you can redistribute it and/or modify it under the * 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 * terms of the GNU Lesser General Public License as published by the Free Software
@@ -18,7 +18,7 @@ import android.os.Bundle;
import org.oscim.utils.Parameters; import org.oscim.utils.Parameters;
public class MapsforgePolyLabelActivity extends MapsforgeMapActivity { public class MapsforgePolyLabelActivity extends MapsforgeActivity {
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
@@ -26,4 +26,11 @@ public class MapsforgePolyLabelActivity extends MapsforgeMapActivity {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
} }
@Override
protected void onDestroy() {
super.onDestroy();
Parameters.POLY_LABEL = false;
}
} }

View File

@@ -1,5 +1,5 @@
/* /*
* Copyright 2017 devemux86 * Copyright 2018 devemux86
* *
* This program is free software: you can redistribute it and/or modify it under the * 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 * terms of the GNU Lesser General Public License as published by the Free Software
@@ -12,11 +12,11 @@
* You should have received a copy of the GNU Lesser General Public License along with * 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/>. * this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
package org.oscim.gdx; package org.oscim.android.test;
public class GdxMapImpl extends GdxMap { public class MapsforgeS3DBActivity extends MapsforgeActivity {
@Override
public void dispose() { public MapsforgeS3DBActivity() {
System.exit(0); super(true);
} }
} }

View File

@@ -28,7 +28,7 @@ import java.util.Set;
/** /**
* Load render theme from Android assets folder and show a configuration menu based on stylemenu. * Load render theme from Android assets folder and show a configuration menu based on stylemenu.
*/ */
public class MapsforgeStyleActivity extends MapsforgeMapActivity { public class MapsforgeStyleActivity extends MapsforgeActivity {
@Override @Override
public boolean onCreateOptionsMenu(Menu menu) { public boolean onCreateOptionsMenu(Menu menu) {

View File

@@ -1,5 +1,5 @@
/* /*
* Copyright 2017 devemux86 * Copyright 2017-2018 devemux86
* *
* This program is free software: you can redistribute it and/or modify it under the * 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 * terms of the GNU Lesser General Public License as published by the Free Software
@@ -26,7 +26,7 @@ import org.oscim.tiling.source.OkHttpEngine;
import org.oscim.tiling.source.UrlTileSource; import org.oscim.tiling.source.UrlTileSource;
import org.oscim.tiling.source.geojson.MapzenGeojsonTileSource; import org.oscim.tiling.source.geojson.MapzenGeojsonTileSource;
public class MapzenGeojsonMapActivity extends MapActivity { public class MapzenGeojsonActivity extends MapActivity {
private static final boolean USE_CACHE = false; private static final boolean USE_CACHE = false;
@@ -37,7 +37,7 @@ public class MapzenGeojsonMapActivity extends MapActivity {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
UrlTileSource tileSource = MapzenGeojsonTileSource.builder() UrlTileSource tileSource = MapzenGeojsonTileSource.builder()
.apiKey("mapzen-xxxxxxx") // Put a proper API key .apiKey("xxxxxxx") // Put a proper API key
.httpFactory(new OkHttpEngine.OkHttpFactory()) .httpFactory(new OkHttpEngine.OkHttpFactory())
//.locale("en") //.locale("en")
.build(); .build();
@@ -55,7 +55,7 @@ public class MapzenGeojsonMapActivity extends MapActivity {
mMap.layers().add(new BuildingLayer(mMap, l)); mMap.layers().add(new BuildingLayer(mMap, l));
mMap.layers().add(new LabelLayer(mMap, l)); mMap.layers().add(new LabelLayer(mMap, l));
mMap.layers().add(new TileGridLayer(mMap, getResources().getDisplayMetrics().density)); mMap.layers().add(new TileGridLayer(mMap));
} }
@Override @Override

View File

@@ -1,5 +1,5 @@
/* /*
* Copyright 2016-2017 devemux86 * Copyright 2016-2018 devemux86
* Copyright 2017 Mathieu De Brito * Copyright 2017 Mathieu De Brito
* *
* This program is free software: you can redistribute it and/or modify it under the * This program is free software: you can redistribute it and/or modify it under the
@@ -27,7 +27,7 @@ import org.oscim.tiling.source.OkHttpEngine;
import org.oscim.tiling.source.UrlTileSource; import org.oscim.tiling.source.UrlTileSource;
import org.oscim.tiling.source.mvt.MapzenMvtTileSource; import org.oscim.tiling.source.mvt.MapzenMvtTileSource;
public class MapzenMvtMapActivity extends MapActivity { public class MapzenMvtActivity extends MapActivity {
private static final boolean USE_CACHE = false; private static final boolean USE_CACHE = false;
@@ -38,7 +38,7 @@ public class MapzenMvtMapActivity extends MapActivity {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
UrlTileSource tileSource = MapzenMvtTileSource.builder() UrlTileSource tileSource = MapzenMvtTileSource.builder()
.apiKey("mapzen-xxxxxxx") // Put a proper API key .apiKey("xxxxxxx") // Put a proper API key
.httpFactory(new OkHttpEngine.OkHttpFactory()) .httpFactory(new OkHttpEngine.OkHttpFactory())
//.locale("en") //.locale("en")
.build(); .build();
@@ -56,7 +56,7 @@ public class MapzenMvtMapActivity extends MapActivity {
mMap.layers().add(new BuildingLayer(mMap, l)); mMap.layers().add(new BuildingLayer(mMap, l));
mMap.layers().add(new LabelLayer(mMap, l)); mMap.layers().add(new LabelLayer(mMap, l));
mMap.layers().add(new TileGridLayer(mMap, getResources().getDisplayMetrics().density)); mMap.layers().add(new TileGridLayer(mMap));
} }
@Override @Override

View File

@@ -1,6 +1,6 @@
/* /*
* Copyright 2014 Hannes Janetzek * Copyright 2014 Hannes Janetzek
* Copyright 2016-2017 devemux86 * Copyright 2016-2018 devemux86
* *
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org). * This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
* *
@@ -17,6 +17,7 @@
*/ */
package org.oscim.android.test; package org.oscim.android.test;
import android.os.Bundle;
import android.widget.Toast; import android.widget.Toast;
import org.oscim.backend.canvas.Bitmap; import org.oscim.backend.canvas.Bitmap;
@@ -29,21 +30,18 @@ import org.oscim.layers.marker.ItemizedLayer;
import org.oscim.layers.marker.MarkerItem; import org.oscim.layers.marker.MarkerItem;
import org.oscim.layers.marker.MarkerSymbol; import org.oscim.layers.marker.MarkerSymbol;
import org.oscim.layers.marker.MarkerSymbol.HotspotPlace; import org.oscim.layers.marker.MarkerSymbol.HotspotPlace;
import org.oscim.layers.tile.buildings.BuildingLayer; import org.oscim.layers.tile.bitmap.BitmapTileLayer;
import org.oscim.layers.tile.vector.VectorTileLayer;
import org.oscim.layers.tile.vector.labeling.LabelLayer;
import org.oscim.map.Map; import org.oscim.map.Map;
import org.oscim.theme.VtmThemes;
import org.oscim.tiling.TileSource; import org.oscim.tiling.TileSource;
import org.oscim.tiling.source.OkHttpEngine; import org.oscim.tiling.source.OkHttpEngine;
import org.oscim.tiling.source.oscimap4.OSciMap4TileSource; import org.oscim.tiling.source.bitmap.DefaultSources;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import static org.oscim.android.canvas.AndroidGraphics.drawableToBitmap; import static org.oscim.android.canvas.AndroidGraphics.drawableToBitmap;
public class MarkerOverlayActivity extends SimpleMapActivity public class MarkerOverlayActivity extends MapActivity
implements ItemizedLayer.OnItemGestureListener<MarkerItem> { implements ItemizedLayer.OnItemGestureListener<MarkerItem> {
static final boolean BILLBOARDS = true; static final boolean BILLBOARDS = true;
@@ -51,17 +49,20 @@ public class MarkerOverlayActivity extends SimpleMapActivity
ItemizedLayer<MarkerItem> mMarkerLayer; ItemizedLayer<MarkerItem> mMarkerLayer;
@Override @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
createLayers();
}
void createLayers() { void createLayers() {
// Map events receiver // Map events receiver
mMap.layers().add(new MapEventsReceiver(mMap)); mMap.layers().add(new MapEventsReceiver(mMap));
TileSource tileSource = OSciMap4TileSource.builder() TileSource tileSource = DefaultSources.OPENSTREETMAP
.httpFactory(new OkHttpEngine.OkHttpFactory()) .httpFactory(new OkHttpEngine.OkHttpFactory())
.build(); .build();
VectorTileLayer l = mMap.setBaseMap(tileSource); mMap.layers().add(new BitmapTileLayer(mMap, tileSource));
mMap.layers().add(new BuildingLayer(mMap, l));
mMap.layers().add(new LabelLayer(mMap, l));
mMap.setTheme(VtmThemes.DEFAULT);
Bitmap bitmapPoi = drawableToBitmap(getResources().getDrawable(R.drawable.marker_poi)); Bitmap bitmapPoi = drawableToBitmap(getResources().getDrawable(R.drawable.marker_poi));
MarkerSymbol symbol; MarkerSymbol symbol;
@@ -137,6 +138,11 @@ public class MarkerOverlayActivity extends SimpleMapActivity
Toast.makeText(MarkerOverlayActivity.this, "Map long press\n" + p, Toast.LENGTH_SHORT).show(); Toast.makeText(MarkerOverlayActivity.this, "Map long press\n" + p, Toast.LENGTH_SHORT).show();
return true; 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; return false;
} }
} }

View File

@@ -31,7 +31,7 @@ import org.oscim.tiling.TileSource;
import org.oscim.tiling.source.OkHttpEngine; import org.oscim.tiling.source.OkHttpEngine;
import org.oscim.tiling.source.oscimap4.OSciMap4TileSource; import org.oscim.tiling.source.oscimap4.OSciMap4TileSource;
public class MultiMapActivity extends Activity { public class MultiMapViewActivity extends Activity {
private MapView mMapView1, mMapView2; private MapView mMapView1, mMapView2;
private MapPreferences mPrefs1, mPrefs2; private MapPreferences mPrefs1, mPrefs2;
@@ -44,7 +44,7 @@ public class MultiMapActivity extends Activity {
// 1st map view // 1st map view
mMapView1 = (MapView) findViewById(R.id.mapView1); mMapView1 = (MapView) findViewById(R.id.mapView1);
Map map1 = mMapView1.map(); Map map1 = mMapView1.map();
mPrefs1 = new MapPreferences(MultiMapActivity.class.getName() + "1", this); mPrefs1 = new MapPreferences(MultiMapViewActivity.class.getName() + "1", this);
TileSource tileSource1 = OSciMap4TileSource.builder() TileSource tileSource1 = OSciMap4TileSource.builder()
.httpFactory(new OkHttpEngine.OkHttpFactory()) .httpFactory(new OkHttpEngine.OkHttpFactory())
.build(); .build();
@@ -56,7 +56,7 @@ public class MultiMapActivity extends Activity {
// 2nd map view // 2nd map view
mMapView2 = (MapView) findViewById(R.id.mapView2); mMapView2 = (MapView) findViewById(R.id.mapView2);
Map map2 = mMapView2.map(); Map map2 = mMapView2.map();
mPrefs2 = new MapPreferences(MultiMapActivity.class.getName() + "2", this); mPrefs2 = new MapPreferences(MultiMapViewActivity.class.getName() + "2", this);
TileSource tileSource2 = OSciMap4TileSource.builder() TileSource tileSource2 = OSciMap4TileSource.builder()
.httpFactory(new OkHttpEngine.OkHttpFactory()) .httpFactory(new OkHttpEngine.OkHttpFactory())
.build(); .build();

View File

@@ -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();
}
}

View File

@@ -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();
}
}

View File

@@ -27,7 +27,7 @@ import org.oscim.tiling.TileSource;
import org.oscim.tiling.source.OkHttpEngine; import org.oscim.tiling.source.OkHttpEngine;
import org.oscim.tiling.source.oscimap4.OSciMap4TileSource; import org.oscim.tiling.source.oscimap4.OSciMap4TileSource;
public class OSciMapS3DBMapActivity extends BaseMapActivity { public class OSciMapS3DBActivity extends BaseMapActivity {
TileCache mS3dbCache; TileCache mS3dbCache;

View File

@@ -1,5 +1,5 @@
/* /*
* Copyright 2017 devemux86 * Copyright 2016-2018 devemux86
* *
* This program is free software: you can redistribute it and/or modify it under the * 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 * terms of the GNU Lesser General Public License as published by the Free Software
@@ -24,9 +24,9 @@ import org.oscim.layers.tile.vector.labeling.LabelLayer;
import org.oscim.theme.VtmThemes; import org.oscim.theme.VtmThemes;
import org.oscim.tiling.source.OkHttpEngine; import org.oscim.tiling.source.OkHttpEngine;
import org.oscim.tiling.source.UrlTileSource; import org.oscim.tiling.source.UrlTileSource;
import org.oscim.tiling.source.geojson.OpenMapTilesGeojsonTileSource; import org.oscim.tiling.source.mvt.OpenMapTilesMvtTileSource;
public class OpenMapTilesGeojsonMapActivity extends MapActivity { public class OpenMapTilesMvtActivity extends MapActivity {
private static final boolean USE_CACHE = false; private static final boolean USE_CACHE = false;
@@ -36,7 +36,7 @@ public class OpenMapTilesGeojsonMapActivity extends MapActivity {
public void onCreate(Bundle savedInstanceState) { public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
UrlTileSource tileSource = OpenMapTilesGeojsonTileSource.builder() UrlTileSource tileSource = OpenMapTilesMvtTileSource.builder()
.apiKey("xxxxxxx") // Put a proper API key .apiKey("xxxxxxx") // Put a proper API key
.httpFactory(new OkHttpEngine.OkHttpFactory()) .httpFactory(new OkHttpEngine.OkHttpFactory())
//.locale("en") //.locale("en")
@@ -55,7 +55,7 @@ public class OpenMapTilesGeojsonMapActivity extends MapActivity {
mMap.layers().add(new BuildingLayer(mMap, l)); mMap.layers().add(new BuildingLayer(mMap, l));
mMap.layers().add(new LabelLayer(mMap, l)); mMap.layers().add(new LabelLayer(mMap, l));
mMap.layers().add(new TileGridLayer(mMap, getResources().getDisplayMetrics().density)); mMap.layers().add(new TileGridLayer(mMap));
} }
@Override @Override

View File

@@ -1,5 +1,5 @@
/* /*
* Copyright 2017 devemux86 * Copyright 2017-2018 devemux86
* *
* This program is free software: you can redistribute it and/or modify it under the * 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 * terms of the GNU Lesser General Public License as published by the Free Software
@@ -26,4 +26,11 @@ public class POTTextureActivity extends SimpleMapActivity {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
} }
@Override
protected void onDestroy() {
super.onDestroy();
Parameters.POT_TEXTURES = false;
}
} }

View File

@@ -1,6 +1,6 @@
/* /*
* Copyright 2014 Hannes Janetzek * Copyright 2014 Hannes Janetzek
* Copyright 2016-2017 devemux86 * Copyright 2016-2018 devemux86
* *
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org). * This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
* *
@@ -36,7 +36,7 @@ import java.util.List;
* This is a very INEFFICIENT and somewhat less useful example for how to use * This is a very INEFFICIENT and somewhat less useful example for how to use
* PathLayers! * PathLayers!
*/ */
public class PathOverlayActivity extends SimpleMapActivity { public class PathOverlayActivity extends BitmapTileActivity {
private static final boolean ANIMATION = true; private static final boolean ANIMATION = true;

View File

@@ -1,5 +1,5 @@
/* /*
* Copyright 2017 devemux86 * Copyright 2017-2018 devemux86
* *
* This program is free software: you can redistribute it and/or modify it under the * 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 * terms of the GNU Lesser General Public License as published by the Free Software
@@ -54,15 +54,15 @@ import static org.oscim.android.canvas.AndroidGraphics.drawableToBitmap;
* Long press on map to search inside visible bounding box.<br/> * Long press on map to search inside visible bounding box.<br/>
* Tap on POIs to show their name (in default locale). * Tap on POIs to show their name (in default locale).
*/ */
public class PoiSearchActivity extends MapsforgeMapActivity implements ItemizedLayer.OnItemGestureListener<MarkerItem> { public class PoiSearchActivity extends MapsforgeActivity implements ItemizedLayer.OnItemGestureListener<MarkerItem> {
private static final Logger log = LoggerFactory.getLogger(PoiSearchActivity.class); private static final Logger log = LoggerFactory.getLogger(PoiSearchActivity.class);
private static String POI_FILE;
private static final String POI_CATEGORY = "Restaurants"; private static final String POI_CATEGORY = "Restaurants";
private static final int SELECT_POI_FILE = MapsforgeMapActivity.SELECT_THEME_FILE + 1; private static final int SELECT_POI_FILE = MapsforgeActivity.SELECT_THEME_FILE + 1;
private ItemizedLayer<MarkerItem> mMarkerLayer; private ItemizedLayer<MarkerItem> mMarkerLayer;
private PoiPersistenceManager mPersistenceManager;
public static class PoiFilePicker extends FilePicker { public static class PoiFilePicker extends FilePicker {
public PoiFilePicker() { public PoiFilePicker() {
@@ -78,6 +78,14 @@ public class PoiSearchActivity extends MapsforgeMapActivity implements ItemizedL
mMap.layers().add(new PoiSearchActivity.MapEventsReceiver(mMap)); mMap.layers().add(new PoiSearchActivity.MapEventsReceiver(mMap));
} }
@Override
protected void onDestroy() {
if (mPersistenceManager != null)
mPersistenceManager.close();
super.onDestroy();
}
@Override @Override
public boolean onCreateOptionsMenu(Menu menu) { public boolean onCreateOptionsMenu(Menu menu) {
return false; return false;
@@ -99,7 +107,8 @@ public class PoiSearchActivity extends MapsforgeMapActivity implements ItemizedL
return; return;
} }
POI_FILE = intent.getStringExtra(FilePicker.SELECTED_FILE); String file = intent.getStringExtra(FilePicker.SELECTED_FILE);
mPersistenceManager = AndroidPoiPersistenceManagerFactory.getPoiPersistenceManager(file);
Bitmap bitmap = drawableToBitmap(getResources().getDrawable(R.drawable.marker_green)); Bitmap bitmap = drawableToBitmap(getResources().getDrawable(R.drawable.marker_green));
MarkerSymbol symbol = new MarkerSymbol(bitmap, MarkerSymbol.HotspotPlace.BOTTOM_CENTER); MarkerSymbol symbol = new MarkerSymbol(bitmap, MarkerSymbol.HotspotPlace.BOTTOM_CENTER);
@@ -151,22 +160,16 @@ public class PoiSearchActivity extends MapsforgeMapActivity implements ItemizedL
@Override @Override
protected Collection<PointOfInterest> doInBackground(BoundingBox... params) { protected Collection<PointOfInterest> doInBackground(BoundingBox... params) {
// Search POI // Search POI
PoiPersistenceManager persistenceManager = null;
try { try {
persistenceManager = AndroidPoiPersistenceManagerFactory.getPoiPersistenceManager(POI_FILE); PoiCategoryManager categoryManager = mPersistenceManager.getCategoryManager();
PoiCategoryManager categoryManager = persistenceManager.getCategoryManager();
PoiCategoryFilter categoryFilter = new ExactMatchPoiCategoryFilter(); PoiCategoryFilter categoryFilter = new ExactMatchPoiCategoryFilter();
categoryFilter.addCategory(categoryManager.getPoiCategoryByTitle(category)); categoryFilter.addCategory(categoryManager.getPoiCategoryByTitle(category));
org.mapsforge.core.model.BoundingBox bb = new org.mapsforge.core.model.BoundingBox( org.mapsforge.core.model.BoundingBox bb = new org.mapsforge.core.model.BoundingBox(
params[0].getMinLatitude(), params[0].getMinLongitude(), params[0].getMinLatitude(), params[0].getMinLongitude(),
params[0].getMaxLatitude(), params[0].getMaxLongitude()); params[0].getMaxLatitude(), params[0].getMaxLongitude());
return persistenceManager.findInRect(bb, categoryFilter, null, Integer.MAX_VALUE); return mPersistenceManager.findInRect(bb, categoryFilter, null, Integer.MAX_VALUE);
} catch (Throwable t) { } catch (Throwable t) {
log.error(t.getMessage(), t); log.error(t.getMessage(), t);
} finally {
if (persistenceManager != null) {
persistenceManager.close();
}
} }
return null; return null;
} }

View File

@@ -1,5 +1,5 @@
/* /*
* Copyright 2017 devemux86 * Copyright 2017-2018 devemux86
* *
* This program is free software: you can redistribute it and/or modify it under the * 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 * terms of the GNU Lesser General Public License as published by the Free Software
@@ -46,7 +46,7 @@ import java.util.List;
* - POI in specified radius.<br/> * - POI in specified radius.<br/>
* - Ways containing touch point. * - Ways containing touch point.
*/ */
public class ReverseGeocodeActivity extends MapsforgeMapActivity { public class ReverseGeocodeActivity extends MapsforgeActivity {
private static final int TOUCH_RADIUS = 32 / 2; private static final int TOUCH_RADIUS = 32 / 2;
@@ -69,7 +69,7 @@ public class ReverseGeocodeActivity extends MapsforgeMapActivity {
if (requestCode == SELECT_MAP_FILE) { if (requestCode == SELECT_MAP_FILE) {
// For debug // For debug
TileGridLayer gridLayer = new TileGridLayer(mMap, getResources().getDisplayMetrics().density); TileGridLayer gridLayer = new TileGridLayer(mMap);
mMap.layers().add(gridLayer); mMap.layers().add(gridLayer);
} }
} }

View File

@@ -1,8 +1,8 @@
/* /*
* Copyright 2010, 2011, 2012, 2013 mapsforge.org * Copyright 2010, 2011, 2012, 2013 mapsforge.org
* Copyright 2013 Hannes Janetzek * Copyright 2013 Hannes Janetzek
* Copyright 2016-2017 devemux86 * Copyright 2016-2018 devemux86
* Copyright 2017 Longri * Copyright 2017-2018 Longri
* Copyright 2017 nebular * Copyright 2017 nebular
* *
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org). * This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
@@ -79,12 +79,16 @@ public class Samples extends Activity {
setContentView(R.layout.activity_samples); setContentView(R.layout.activity_samples);
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(SimpleMapActivity.class));
linearLayout.addView(createButton(MapsforgeMapActivity.class)); linearLayout.addView(createButton(MapsforgeActivity.class));
linearLayout.addView(createButton(MapzenMvtMapActivity.class)); /*linearLayout.addView(createButton(MapzenMvtActivity.class));
linearLayout.addView(createButton(MapzenGeojsonMapActivity.class)); linearLayout.addView(createButton(MapzenGeojsonActivity.class));*/
linearLayout.addView(createButton(OpenMapTilesGeojsonMapActivity.class)); linearLayout.addView(createButton(NextzenMvtActivity.class));
linearLayout.addView(createButton(GdxMapActivity.class)); linearLayout.addView(createButton(NextzenGeojsonActivity.class));
linearLayout.addView(createButton(OpenMapTilesMvtActivity.class));
linearLayout.addView(createButton(GdxActivity.class));
linearLayout.addView(createLabel("Features")); linearLayout.addView(createLabel("Features"));
linearLayout.addView(createButton(null, "GraphHopper Routing", new View.OnClickListener() { linearLayout.addView(createButton(null, "GraphHopper Routing", new View.OnClickListener() {
@@ -93,16 +97,19 @@ public class Samples extends Activity {
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://github.com/graphhopper/graphhopper/tree/master/android"))); 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(createButton(PoiSearchActivity.class));
linearLayout.addView(createLabel("Vector Features")); linearLayout.addView(createLabel("Vector Features"));
linearLayout.addView(createButton(MapsforgeStyleActivity.class)); linearLayout.addView(createButton(MapsforgeStyleActivity.class));
linearLayout.addView(createButton(MapsforgePolyLabelActivity.class)); linearLayout.addView(createButton(MapsforgePolyLabelActivity.class));
linearLayout.addView(createButton(MapsforgeS3DBActivity.class));
linearLayout.addView(createButton(AtlasThemeActivity.class)); linearLayout.addView(createButton(AtlasThemeActivity.class));
linearLayout.addView(createButton(POTTextureActivity.class)); linearLayout.addView(createButton(POTTextureActivity.class));
linearLayout.addView(createLabel("Raster Maps")); linearLayout.addView(createLabel("Raster Maps"));
linearLayout.addView(createButton(BitmapTileMapActivity.class)); linearLayout.addView(createButton(BitmapTileActivity.class));
linearLayout.addView(createLabel("Overlays")); linearLayout.addView(createLabel("Overlays"));
linearLayout.addView(createButton(MarkerOverlayActivity.class)); linearLayout.addView(createButton(MarkerOverlayActivity.class));
@@ -112,20 +119,20 @@ public class Samples extends Activity {
linearLayout.addView(createButton(ClusterMarkerOverlayActivity.class)); linearLayout.addView(createButton(ClusterMarkerOverlayActivity.class));
linearLayout.addView(createButton(PathOverlayActivity.class)); linearLayout.addView(createButton(PathOverlayActivity.class));
linearLayout.addView(createButton(LineTexActivity.class)); linearLayout.addView(createButton(LineTexActivity.class));
linearLayout.addView(createButton(VectorLayerMapActivity.class)); linearLayout.addView(createButton(VectorLayerActivity.class));
linearLayout.addView(createButton(LocationActivity.class));
linearLayout.addView(createLabel("User Interaction")); linearLayout.addView(createLabel("User Interaction"));
linearLayout.addView(createButton(NewGesturesActivity.class)); linearLayout.addView(createButton(Animator2Activity.class));
linearLayout.addView(createButton(MapEventLayer2Activity.class));
linearLayout.addView(createButton(LayerGroupActivity.class)); linearLayout.addView(createButton(LayerGroupActivity.class));
linearLayout.addView(createLabel("Dual Map Views")); linearLayout.addView(createLabel("Dual Map Views"));
linearLayout.addView(createButton(MultiMapActivity.class)); linearLayout.addView(createButton(MultiMapViewActivity.class));
linearLayout.addView(createLabel("Experiments")); linearLayout.addView(createLabel("Experiments"));
linearLayout.addView(createButton(ReverseGeocodeActivity.class)); linearLayout.addView(createButton(ReverseGeocodeActivity.class));
linearLayout.addView(createButton(OSciMapS3DBMapActivity.class)); linearLayout.addView(createButton(OSciMapS3DBActivity.class));
linearLayout.addView(createButton(ThemeStylerActivity.class)); linearLayout.addView(createButton(ThemeStylerActivity.class));
linearLayout.addView(createButton(JeoIndoorMapActivity.class)); linearLayout.addView(createButton(JeoIndoorActivity.class));
} }
} }

View File

@@ -1,6 +1,6 @@
/* /*
* Copyright 2013 Hannes Janetzek * Copyright 2013 Hannes Janetzek
* Copyright 2016-2017 devemux86 * Copyright 2016-2018 devemux86
* *
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org). * This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
* *
@@ -19,6 +19,7 @@ package org.oscim.android.test;
import android.os.Bundle; import android.os.Bundle;
import org.oscim.backend.CanvasAdapter;
import org.oscim.core.MapPosition; import org.oscim.core.MapPosition;
import org.oscim.core.MercatorProjection; import org.oscim.core.MercatorProjection;
import org.oscim.layers.GroupLayer; import org.oscim.layers.GroupLayer;
@@ -60,7 +61,7 @@ public class SimpleMapActivity extends BaseMapActivity {
MapScaleBarLayer mapScaleBarLayer = new MapScaleBarLayer(mMap, mapScaleBar); MapScaleBarLayer mapScaleBarLayer = new MapScaleBarLayer(mMap, mapScaleBar);
BitmapRenderer renderer = mapScaleBarLayer.getRenderer(); BitmapRenderer renderer = mapScaleBarLayer.getRenderer();
renderer.setPosition(GLViewport.Position.BOTTOM_LEFT); renderer.setPosition(GLViewport.Position.BOTTOM_LEFT);
renderer.setOffset(5 * getResources().getDisplayMetrics().density, 0); renderer.setOffset(5 * CanvasAdapter.getScale(), 0);
mMap.layers().add(mapScaleBarLayer); mMap.layers().add(mapScaleBarLayer);
mMap.setTheme(VtmThemes.DEFAULT); mMap.setTheme(VtmThemes.DEFAULT);
@@ -108,6 +109,7 @@ public class SimpleMapActivity extends BaseMapActivity {
p.setTilt((float) (Math.random() * 60)); p.setTilt((float) (Math.random() * 60));
p.setBearing((float) (Math.random() * 360)); p.setBearing((float) (Math.random() * 360));
p.setRoll((float) (Math.random() * 360));
//mMapView.map().setMapPosition(p); //mMapView.map().setMapPosition(p);
mMapView.map().animator().animateTo(time, p); mMapView.map().animator().animateTo(time, p);

View File

@@ -1,6 +1,6 @@
/* /*
* Copyright 2013 Hannes Janetzek * Copyright 2013 Hannes Janetzek
* Copyright 2016-2017 devemux86 * Copyright 2016-2018 devemux86
* *
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org). * This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
* *
@@ -25,7 +25,7 @@ import org.oscim.layers.vector.geometries.PointDrawable;
import org.oscim.layers.vector.geometries.Style; import org.oscim.layers.vector.geometries.Style;
import org.oscim.utils.ColorUtil; import org.oscim.utils.ColorUtil;
public class VectorLayerMapActivity extends SimpleMapActivity { public class VectorLayerActivity extends BitmapTileActivity {
@Override @Override
public void onCreate(Bundle savedInstanceState) { public void onCreate(Bundle savedInstanceState) {

View File

@@ -41,6 +41,9 @@ android.libraryVariants.all { variant ->
def jar = project.tasks.create "jar${name.capitalize()}", Jar def jar = project.tasks.create "jar${name.capitalize()}", Jar
jar.dependsOn variant.javaCompiler jar.dependsOn variant.javaCompiler
jar.exclude '**/BuildConfig.class'
jar.exclude '**/R.class'
jar.exclude '**/R$*.class'
jar.from variant.javaCompiler.destinationDir jar.from variant.javaCompiler.destinationDir
artifacts.add('archives', jar) artifacts.add('archives', jar)

View File

@@ -3,7 +3,7 @@ apply plugin: 'com.github.dcendents.android-maven'
dependencies { dependencies {
api project(':vtm') api project(':vtm')
api 'com.caverock:androidsvg:1.2.2-beta-1' api 'com.caverock:androidsvg:1.3'
} }
android { android {
@@ -42,6 +42,9 @@ android.libraryVariants.all { variant ->
def jar = project.tasks.create "jar${name.capitalize()}", Jar def jar = project.tasks.create "jar${name.capitalize()}", Jar
jar.dependsOn variant.javaCompiler jar.dependsOn variant.javaCompiler
jar.exclude '**/BuildConfig.class'
jar.exclude '**/R.class'
jar.exclude '**/R$*.class'
jar.from variant.javaCompiler.destinationDir jar.from variant.javaCompiler.destinationDir
artifacts.add('archives', jar) artifacts.add('archives', jar)

View File

@@ -1,6 +1,7 @@
/* /*
* Copyright 2012 Hannes Janetzek * Copyright 2012 Hannes Janetzek
* Copyright 2016-2017 devemux86 * Copyright 2016-2018 devemux86
* Copyright 2018 Gustl22
* *
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org). * This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
* *
@@ -19,10 +20,14 @@ package org.oscim.android;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.content.Context; import android.content.Context;
import android.graphics.Point;
import android.opengl.GLSurfaceView; import android.opengl.GLSurfaceView;
import android.os.Build;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.util.DisplayMetrics; import android.util.DisplayMetrics;
import android.view.Display;
import android.view.GestureDetector; import android.view.GestureDetector;
import android.view.WindowManager;
import org.oscim.android.canvas.AndroidGraphics; import org.oscim.android.canvas.AndroidGraphics;
import org.oscim.android.gl.AndroidGL; import org.oscim.android.gl.AndroidGL;
@@ -33,6 +38,7 @@ import org.oscim.backend.CanvasAdapter;
import org.oscim.backend.GLAdapter; import org.oscim.backend.GLAdapter;
import org.oscim.core.Tile; import org.oscim.core.Tile;
import org.oscim.map.Map; import org.oscim.map.Map;
import org.oscim.renderer.MapRenderer;
import org.oscim.utils.Parameters; import org.oscim.utils.Parameters;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@@ -45,7 +51,7 @@ import javax.microedition.khronos.opengles.GL10;
* <p/> * <p/>
* add it your App, have a map! * add it your App, have a map!
* <p/> * <p/>
* Dont forget to call onPause / onResume! * Don't forget to call onPause / onResume!
*/ */
public class MapView extends GLSurfaceView { public class MapView extends GLSurfaceView {
@@ -59,6 +65,8 @@ public class MapView extends GLSurfaceView {
protected GestureDetector mGestureDetector; protected GestureDetector mGestureDetector;
protected AndroidMotionEvent mMotionEvent; protected AndroidMotionEvent mMotionEvent;
private final Point mScreenSize = new Point();
public MapView(Context context) { public MapView(Context context) {
this(context, null); this(context, null);
} }
@@ -87,6 +95,20 @@ public class MapView extends GLSurfaceView {
if (!Parameters.CUSTOM_TILE_SIZE) if (!Parameters.CUSTOM_TILE_SIZE)
Tile.SIZE = Tile.calculateTileSize(); Tile.SIZE = Tile.calculateTileSize();
WindowManager windowManager = (WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE);
Display display = windowManager.getDefaultDisplay();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2)
display.getSize(mScreenSize);
else {
mScreenSize.x = display.getWidth();
mScreenSize.y = display.getHeight();
}
if (!Parameters.CUSTOM_COORD_SCALE) {
if (Math.min(mScreenSize.x, mScreenSize.y) > 1080)
MapRenderer.COORD_SCALE = 4.0f;
}
/* Initialize the Map */ /* Initialize the Map */
mMap = new AndroidMap(this); mMap = new AndroidMap(this);
@@ -149,7 +171,7 @@ public class MapView extends GLSurfaceView {
if (!isInEditMode()) { if (!isInEditMode()) {
if (width > 0 && height > 0) if (width > 0 && height > 0)
mMap.viewport().setScreenSize(width, height); mMap.viewport().setViewSize(width, height);
} }
} }
@@ -160,6 +182,7 @@ public class MapView extends GLSurfaceView {
static class AndroidMap extends Map { static class AndroidMap extends Map {
private final MapView mMapView; private final MapView mMapView;
private final WindowManager mWindowManager;
private boolean mRenderRequest; private boolean mRenderRequest;
private boolean mRenderWait; private boolean mRenderWait;
@@ -168,6 +191,7 @@ public class MapView extends GLSurfaceView {
public AndroidMap(MapView mapView) { public AndroidMap(MapView mapView) {
super(); super();
mMapView = mapView; mMapView = mapView;
mWindowManager = (WindowManager) mMapView.getContext().getSystemService(Context.WINDOW_SERVICE);
} }
@Override @Override
@@ -180,6 +204,16 @@ public class MapView extends GLSurfaceView {
return mMapView.getHeight(); return mMapView.getHeight();
} }
@Override
public int getScreenWidth() {
return mMapView.mScreenSize.x;
}
@Override
public int getScreenHeight() {
return mMapView.mScreenSize.y;
}
private final Runnable mRedrawCb = new Runnable() { private final Runnable mRedrawCb = new Runnable() {
@Override @Override
public void run() { public void run() {
@@ -208,7 +242,7 @@ public class MapView extends GLSurfaceView {
if (mPausing) if (mPausing)
return; return;
/** TODO should not need to call prepareFrame in mRedrawCb */ /* TODO should not need to call prepareFrame in mRedrawCb */
updateMap(false); updateMap(false);
} }

View File

@@ -2,6 +2,7 @@
* Copyright 2010, 2011, 2012 mapsforge.org * Copyright 2010, 2011, 2012 mapsforge.org
* Copyright 2016-2017 devemux86 * Copyright 2016-2017 devemux86
* Copyright 2017 nebular * Copyright 2017 nebular
* Copyright 2018 Gustl22
* *
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org). * This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
* *
@@ -26,33 +27,45 @@ import org.oscim.backend.canvas.Paint;
class AndroidPaint implements Paint { class AndroidPaint implements Paint {
private static int getStyle(org.oscim.backend.canvas.Paint.FontStyle fontStyle) { private static Typeface getTypeface(org.oscim.backend.canvas.Paint.FontFamily fontFamily,
org.oscim.backend.canvas.Paint.FontStyle fontStyle) {
final int style;
switch (fontStyle) { switch (fontStyle) {
case BOLD: case BOLD:
return Typeface.BOLD; style = Typeface.BOLD;
break;
case BOLD_ITALIC: case BOLD_ITALIC:
return Typeface.BOLD_ITALIC; style = Typeface.BOLD_ITALIC;
break;
case ITALIC: case ITALIC:
return Typeface.ITALIC; style = Typeface.ITALIC;
case NORMAL: break;
return Typeface.NORMAL; default:
style = Typeface.NORMAL;
break;
} }
throw new IllegalArgumentException("unknown font style: " + fontStyle);
}
private static Typeface getTypeface(org.oscim.backend.canvas.Paint.FontFamily fontFamily) {
switch (fontFamily) { switch (fontFamily) {
case DEFAULT: case DEFAULT:
return Typeface.DEFAULT; return Typeface.create(Typeface.DEFAULT, style);
case DEFAULT_BOLD: case DEFAULT_BOLD:
return Typeface.DEFAULT_BOLD; return Typeface.create(Typeface.DEFAULT_BOLD, style);
case MONOSPACE: case MONOSPACE:
return Typeface.MONOSPACE; return Typeface.create(Typeface.MONOSPACE, style);
case SANS_SERIF: case SANS_SERIF:
return Typeface.SANS_SERIF; return Typeface.create(Typeface.SANS_SERIF, style);
case SERIF: case SERIF:
return Typeface.SERIF; return Typeface.create(Typeface.SERIF, style);
case THIN:
return Typeface.create("sans-serif-thin", style);
case LIGHT:
return Typeface.create("sans-serif-light", style);
case MEDIUM:
return Typeface.create("sans-serif-medium", style);
case BLACK:
return Typeface.create("sans-serif-black", style);
case CONDENSED:
return Typeface.create("sans-serif-condensed", style);
} }
throw new IllegalArgumentException("unknown font family: " + fontFamily); throw new IllegalArgumentException("unknown font family: " + fontFamily);
@@ -111,9 +124,7 @@ class AndroidPaint implements Paint {
@Override @Override
public void setTypeface(FontFamily fontFamily, FontStyle fontStyle) { public void setTypeface(FontFamily fontFamily, FontStyle fontStyle) {
Typeface typeface = Typeface.create(getTypeface(fontFamily), mPaint.setTypeface(getTypeface(fontFamily, fontStyle));
getStyle(fontStyle));
mPaint.setTypeface(typeface);
} }
@Override @Override

View File

@@ -5,19 +5,18 @@
android:versionCode="1" android:versionCode="1"
android:versionName="1.0"> android:versionName="1.0">
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<application <application
android:name=".App" android:name=".App"
android:allowBackup="true" android:allowBackup="true"
android:icon="@drawable/globe2" android:icon="@mipmap/ic_launcher"
android:label="@string/application_name"> android:label="@string/application_name"
android:usesCleartextTraffic="true">
<!-- android:theme="@style/Theme.TileMap" --> <!-- android:theme="@style/Theme.TileMap" -->
<activity <activity

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

View File

@@ -1,5 +1,6 @@
/* /*
* Copyright 2016 devemux86 * Copyright 2013 Hannes Janetzek
* Copyright 2016-2018 devemux86
* *
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org). * This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
* *
@@ -154,7 +155,7 @@ public class MapLayers {
if (enable) { if (enable) {
if (mGridOverlay == null) if (mGridOverlay == null)
mGridOverlay = new TileGridLayer(App.map, context.getResources().getDisplayMetrics().density); mGridOverlay = new TileGridLayer(App.map);
App.map.layers().add(mGridOverlay); App.map.layers().add(mGridOverlay);
} else { } else {

View File

@@ -32,6 +32,7 @@ import org.oscim.event.Event;
import org.oscim.layers.Layer; import org.oscim.layers.Layer;
import org.oscim.map.Map; import org.oscim.map.Map;
import org.oscim.renderer.LocationRenderer; import org.oscim.renderer.LocationRenderer;
import org.oscim.utils.FastMath;
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")
public class Compass extends Layer implements SensorEventListener, Map.UpdateListener, public class Compass extends Layer implements SensorEventListener, Map.UpdateListener,
@@ -230,20 +231,13 @@ public class Compass extends Layer implements SensorEventListener, Map.UpdateLis
// float rotation = (float) Math.toDegrees(mAzimuthRadians); // float rotation = (float) Math.toDegrees(mAzimuthRadians);
float change = rotation - mCurRotation; float change = rotation - mCurRotation;
if (change > 180) change = (float) FastMath.clampDegree(change);
change -= 360;
else if (change < -180)
change += 360;
// low-pass // low-pass
change *= 0.05; change *= 0.05;
rotation = mCurRotation + change; rotation = mCurRotation + change;
rotation = (float) FastMath.clampDegree(rotation);
if (rotation > 180)
rotation -= 360;
else if (rotation < -180)
rotation += 360;
// float tilt = (float) Math.toDegrees(mRotationV[1]); // float tilt = (float) Math.toDegrees(mRotationV[1]);
// float tilt = (float) Math.toDegrees(mPitchAxisRadians); // float tilt = (float) Math.toDegrees(mPitchAxisRadians);

View File

@@ -179,7 +179,7 @@ public class ItemizedOverlayWithBubble<Item extends MarkerItem> extends
} }
@Override @Override
public boolean removeItem(final Item item) { public synchronized boolean removeItem(final Item item) {
boolean result = super.removeItem(item); boolean result = super.removeItem(item);
if (mItemWithBubble == item) { if (mItemWithBubble == item) {
hideBubble(); hideBubble();
@@ -188,7 +188,7 @@ public class ItemizedOverlayWithBubble<Item extends MarkerItem> extends
} }
@Override @Override
public void removeAllItems() { public synchronized void removeAllItems() {
super.removeAllItems(); super.removeAllItems();
hideBubble(); hideBubble();
} }

View File

@@ -4,7 +4,7 @@ apply plugin: 'maven'
dependencies { dependencies {
api project(':vtm-gdx') api project(':vtm-gdx')
api "com.badlogicgames.gdx:gdx-backend-lwjgl:$gdxVersion" api "com.badlogicgames.gdx:gdx-backend-lwjgl:$gdxVersion"
api 'com.metsci.ext.com.kitfox.svg:svg-salamander:0.1.19' api 'com.github.blackears:svgSalamander:v1.1.1'
} }
sourceSets { sourceSets {

View File

@@ -3,6 +3,7 @@
* Copyright 2013 Hannes Janetzek * Copyright 2013 Hannes Janetzek
* Copyright 2016-2017 devemux86 * Copyright 2016-2017 devemux86
* Copyright 2017 nebular * Copyright 2017 nebular
* Copyright 2018 Gustl22
* *
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org). * This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
* *
@@ -48,20 +49,37 @@ public class AwtPaint implements Paint {
throw new IllegalArgumentException("unknown cap: " + cap); throw new IllegalArgumentException("unknown cap: " + cap);
} }
private static String getFontName(FontFamily fontFamily) { private static Font getFont(FontFamily fontFamily, FontStyle fontStyle, int textSize) {
final Map<Attribute, Object> attributes;
String name = null;
switch (fontFamily) { switch (fontFamily) {
case MONOSPACE: case MONOSPACE:
return Font.MONOSPACED; attributes = TEXT_ATTRIBUTES;
case DEFAULT: name = Font.MONOSPACED;
case DEFAULT_BOLD: break;
return null;
case SANS_SERIF: case SANS_SERIF:
return Font.SANS_SERIF; attributes = TEXT_ATTRIBUTES;
name = Font.SANS_SERIF;
break;
case SERIF: case SERIF:
return Font.SERIF; attributes = TEXT_ATTRIBUTES;
name = Font.SERIF;
break;
case MEDIUM: // Java deriveFont does not differ this weight
case BLACK:
attributes = new HashMap<>(TEXT_ATTRIBUTES);
attributes.put(TextAttribute.WEIGHT, TextAttribute.WEIGHT_BOLD);
break;
case CONDENSED:
attributes = new HashMap<>(TEXT_ATTRIBUTES);
attributes.put(TextAttribute.WIDTH, TextAttribute.WIDTH_CONDENSED);
break;
default:
// THIN and LIGHT aren't differed from DEFAULT in Java deriveFont
attributes = TEXT_ATTRIBUTES;
break;
} }
return new Font(name, getFontStyle(fontStyle), textSize).deriveFont(attributes);
throw new IllegalArgumentException("unknown fontFamily: " + fontFamily);
} }
private static int getFontStyle(FontStyle fontStyle) { private static int getFontStyle(FontStyle fontStyle) {
@@ -108,8 +126,6 @@ public class AwtPaint implements Paint {
Stroke stroke; Stroke stroke;
Style style = Style.FILL; Style style = Style.FILL;
private int cap = getCap(Cap.BUTT); private int cap = getCap(Cap.BUTT);
private String fontName = DEFAULT_FONT.getFontName();
private int fontStyle = DEFAULT_FONT.getStyle();
private int join = getJoin(Join.MITER); private int join = getJoin(Join.MITER);
private float strokeWidth; private float strokeWidth;
private float textSize = DEFAULT_FONT.getSize(); private float textSize = DEFAULT_FONT.getSize();
@@ -169,9 +185,7 @@ public class AwtPaint implements Paint {
@Override @Override
public void setTypeface(FontFamily fontFamily, FontStyle fontStyle) { public void setTypeface(FontFamily fontFamily, FontStyle fontStyle) {
this.fontName = getFontName(fontFamily); this.font = getFont(fontFamily, fontStyle, (int) this.textSize);
this.fontStyle = getFontStyle(fontStyle);
this.font = new Font(this.fontName, this.fontStyle, (int) this.textSize).deriveFont(this.TEXT_ATTRIBUTES);
} }
@Override @Override

View File

@@ -1,5 +1,5 @@
/* /*
* Copyright 2015-2017 devemux86 * Copyright 2015-2018 devemux86
* *
* This program is free software: you can redistribute it and/or modify it under the * 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 * terms of the GNU Lesser General Public License as published by the Free Software
@@ -65,8 +65,8 @@ public class AwtSvgBitmap extends AwtBitmap {
SVGIcon icon = new SVGIcon(); SVGIcon icon = new SVGIcon();
icon.setAntiAlias(true); icon.setAntiAlias(true);
icon.setAutosize(SVGIcon.AUTOSIZE_STRETCH);
icon.setPreferredSize(new Dimension((int) bitmapWidth, (int) bitmapHeight)); icon.setPreferredSize(new Dimension((int) bitmapWidth, (int) bitmapHeight));
icon.setScaleToFit(true);
icon.setSvgURI(uri); icon.setSvgURI(uri);
BufferedImage bufferedImage = new BufferedImage(icon.getIconWidth(), icon.getIconHeight(), BufferedImage.TYPE_INT_ARGB); BufferedImage bufferedImage = new BufferedImage(icon.getIconWidth(), icon.getIconHeight(), BufferedImage.TYPE_INT_ARGB);
icon.paintIcon(null, bufferedImage.createGraphics(), 0, 0); icon.paintIcon(null, bufferedImage.createGraphics(), 0, 0);

View File

@@ -1,6 +1,7 @@
/* /*
* Copyright 2013 Hannes Janetzek * Copyright 2013 Hannes Janetzek
* Copyright 2016-2017 devemux86 * Copyright 2016-2018 devemux86
* Copyright 2018 Gustl22
* *
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org). * This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
* *
@@ -17,6 +18,7 @@
*/ */
package org.oscim.gdx; package org.oscim.gdx;
import com.badlogic.gdx.Files;
import com.badlogic.gdx.backends.lwjgl.LwjglApplication; import com.badlogic.gdx.backends.lwjgl.LwjglApplication;
import com.badlogic.gdx.backends.lwjgl.LwjglApplicationConfiguration; import com.badlogic.gdx.backends.lwjgl.LwjglApplicationConfiguration;
import com.badlogic.gdx.utils.SharedLibraryLoader; import com.badlogic.gdx.utils.SharedLibraryLoader;
@@ -62,10 +64,17 @@ public class GdxMapApp extends GdxMap {
LwjglApplicationConfiguration.disableAudio = true; LwjglApplicationConfiguration.disableAudio = true;
LwjglApplicationConfiguration cfg = new LwjglApplicationConfiguration(); LwjglApplicationConfiguration cfg = new LwjglApplicationConfiguration();
cfg.title = title != null ? title : "vtm-gdx"; cfg.title = title != null ? title : "vtm-gdx";
int[] sizes = new int[]{128, 64, 32, 16};
for (int size : sizes) {
String path = "res/ic_vtm_" + size + ".png";
cfg.addIcon(path, Files.FileType.Internal);
}
cfg.width = 800; cfg.width = 800;
cfg.height = 600; cfg.height = 600;
cfg.stencil = 8; cfg.stencil = 8;
cfg.samples = 2; //cfg.samples = 2;
cfg.foregroundFPS = 30; cfg.foregroundFPS = 30;
cfg.backgroundFPS = 10; cfg.backgroundFPS = 10;
cfg.forceExit = false; cfg.forceExit = false;

View File

@@ -4,9 +4,8 @@ apply plugin: 'maven'
dependencies { dependencies {
api project(':vtm') api project(':vtm')
api 'com.fasterxml.jackson.core:jackson-core:2.8.4' api 'com.fasterxml.jackson.core:jackson-core:2.8.4'
api 'com.google.protobuf:protobuf-java:2.6.1' api 'org.locationtech.jts:jts-core:1.15.0'
api 'com.vividsolutions:jts:1.13' api 'org.openstreetmap.osmosis:osmosis-osm-binary:0.46'
api 'org.openstreetmap.osmosis:osmosis-osm-binary:0.45'
} }
sourceSets { sourceSets {

View File

@@ -16,8 +16,7 @@
*/ */
package org.oscim.core.osm; package org.oscim.core.osm;
import com.vividsolutions.jts.geom.Geometry; import org.locationtech.jts.geom.Geometry;
import org.oscim.core.TagSet; import org.oscim.core.TagSet;
public abstract class OsmElement { public abstract class OsmElement {

View File

@@ -16,8 +16,7 @@
*/ */
package org.oscim.core.osm; package org.oscim.core.osm;
import com.vividsolutions.jts.geom.Geometry; import org.locationtech.jts.geom.Geometry;
import org.oscim.core.TagSet; import org.oscim.core.TagSet;
public class OsmNode extends OsmElement { public class OsmNode extends OsmElement {

View File

@@ -16,8 +16,7 @@
*/ */
package org.oscim.core.osm; package org.oscim.core.osm;
import com.vividsolutions.jts.geom.Geometry; import org.locationtech.jts.geom.Geometry;
import org.oscim.core.TagSet; import org.oscim.core.TagSet;
import java.util.ArrayList; import java.util.ArrayList;

View File

@@ -16,11 +16,10 @@
*/ */
package org.oscim.core.osm; package org.oscim.core.osm;
import com.vividsolutions.jts.geom.CoordinateSequence; import org.locationtech.jts.geom.CoordinateSequence;
import com.vividsolutions.jts.geom.Geometry; import org.locationtech.jts.geom.Geometry;
import com.vividsolutions.jts.geom.LineString; import org.locationtech.jts.geom.LineString;
import com.vividsolutions.jts.geom.impl.PackedCoordinateSequenceFactory; import org.locationtech.jts.geom.impl.PackedCoordinateSequenceFactory;
import org.oscim.core.TagSet; import org.oscim.core.TagSet;
import java.util.List; import java.util.List;

View File

@@ -296,7 +296,7 @@
--> -->
</m> </m>
<m zoom-min="17"> <m zoom-min="17">
<caption fill="#4040ff" font-size="10" font-style="bold" k="name" stroke="#ffffff" <caption fill="#2d51bc" font-size="10" font-style="bold" k="name" stroke="#ffffff"
stroke-width="2.0" /> stroke-width="2.0" />
<caption fill="#606060" font-size="10" font-style="bold" k="addr:housenumber" <caption fill="#606060" font-size="10" font-style="bold" k="addr:housenumber"
stroke="#ffffff" stroke-width="2.0" /> stroke="#ffffff" stroke-width="2.0" />
@@ -629,9 +629,9 @@
--> -->
<!-- historic --> <!-- historic -->
<!-- <!--
<m k="historic"> <circle r="3" fill="#4040ff" stroke="#606060" <m k="historic"> <circle r="3" fill="#2d51bc" stroke="#606060"
width="1.5" /> <m zoom-min="17"> <caption width="1.5" /> <m zoom-min="17"> <caption
k="name" dy="10" font-style="bold" font-size="10" fill="#4040ff" stroke="#ffffff" k="name" dy="10" font-style="bold" font-size="10" fill="#2d51bc" stroke="#ffffff"
width="2.0" /> </m> </m> width="2.0" /> </m> </m>
--> -->
<!-- house numbers --> <!-- house numbers -->
@@ -672,16 +672,16 @@
<!-- railway --> <!-- railway -->
<m k="railway"> <m k="railway">
<m v="station" zoom-min="14"> <m v="station" zoom-min="14">
<circle fill="#ec2d2d" r="6" stroke="#606060" stroke-width="1.5" /> <circle fill="#af3a3a" r="6" stroke="#606060" stroke-width="1.5" />
<!-- <!--
<caption k="name" dy="15" font-style="bold" font-size="13" fill="#ec2d2d" <caption k="name" dy="15" font-style="bold" font-size="13" fill="#af3a3a"
stroke="#ffffff" stroke-width="2.0" /> stroke="#ffffff" stroke-width="2.0" />
--> -->
</m> </m>
<m v="halt|tram_stop" zoom-min="17"> <m v="halt|tram_stop" zoom-min="17">
<circle fill="#ec2d2d" r="4" stroke="#606060" stroke-width="1.5" /> <circle fill="#af3a3a" r="4" stroke="#606060" stroke-width="1.5" />
<!-- <!--
<caption k="name" dy="10" font-style="bold" font-size="11" fill="#ec2d2d" <caption k="name" dy="10" font-style="bold" font-size="11" fill="#af3a3a"
stroke="#ffffff" stroke-width="2.0" /> stroke="#ffffff" stroke-width="2.0" />
--> -->
</m> </m>
@@ -697,7 +697,7 @@
</m> </m>
<m k="building_label" zoom-min="14"> <m k="building_label" zoom-min="14">
<caption fill="#1d2e6f" font-size="14" style="italic" k="name" priority="20" <caption style="italic" fill="#1d2e6f" font-size="14" k="name" priority="20"
stroke="#9daeef" stroke-width="0.8" /> stroke="#9daeef" stroke-width="0.8" />
</m> </m>

View File

@@ -1,6 +1,7 @@
/* /*
* Copyright 2013 Hannes Janetzek * Copyright 2013 Hannes Janetzek
* Copyright 2016-2017 devemux86 * Copyright 2016-2018 devemux86
* Copyright 2018 Gustl22
* *
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org). * This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
* *
@@ -48,11 +49,6 @@ public abstract class GdxMap implements ApplicationListener {
protected void initDefaultLayers(TileSource tileSource, boolean tileGrid, boolean labels, protected void initDefaultLayers(TileSource tileSource, boolean tileGrid, boolean labels,
boolean buildings) { boolean buildings) {
initDefaultLayers(tileSource, tileGrid, labels, buildings, 1);
}
protected void initDefaultLayers(TileSource tileSource, boolean tileGrid, boolean labels,
boolean buildings, float scale) {
Layers layers = mMap.layers(); Layers layers = mMap.layers();
if (tileSource != null) { if (tileSource != null) {
@@ -67,11 +63,16 @@ public abstract class GdxMap implements ApplicationListener {
} }
if (tileGrid) if (tileGrid)
layers.add(new TileGridLayer(mMap, scale)); layers.add(new TileGridLayer(mMap));
} }
@Override @Override
public void create() { public void create() {
if (!Parameters.CUSTOM_COORD_SCALE) {
if (Math.min(Gdx.graphics.getDisplayMode().width, Gdx.graphics.getDisplayMode().height) > 1080)
MapRenderer.COORD_SCALE = 4.0f;
}
mMap = new MapAdapter(); mMap = new MapAdapter();
mMapRenderer = new MapRenderer(mMap); mMapRenderer = new MapRenderer(mMap);
@@ -81,7 +82,7 @@ public abstract class GdxMap implements ApplicationListener {
int w = Gdx.graphics.getWidth(); int w = Gdx.graphics.getWidth();
int h = Gdx.graphics.getHeight(); int h = Gdx.graphics.getHeight();
mMap.viewport().setScreenSize(w, h); mMap.viewport().setViewSize(w, h);
mMapRenderer.onSurfaceCreated(); mMapRenderer.onSurfaceCreated();
mMapRenderer.onSurfaceChanged(w, h); mMapRenderer.onSurfaceChanged(w, h);
@@ -112,15 +113,16 @@ public abstract class GdxMap implements ApplicationListener {
@Override @Override
public void render() { public void render() {
if (!mRenderRequest) // Workaround for flickering
return; /*if (!mRenderRequest)
return;*/
mMapRenderer.onDrawFrame(); mMapRenderer.onDrawFrame();
} }
@Override @Override
public void resize(int w, int h) { public void resize(int w, int h) {
mMap.viewport().setScreenSize(w, h); mMap.viewport().setViewSize(w, h);
mMapRenderer.onSurfaceChanged(w, h); mMapRenderer.onSurfaceChanged(w, h);
mMap.render(); mMap.render();
} }
@@ -153,6 +155,16 @@ public abstract class GdxMap implements ApplicationListener {
return Gdx.graphics.getHeight(); return Gdx.graphics.getHeight();
} }
@Override
public int getScreenWidth() {
return Gdx.graphics.getDisplayMode().width;
}
@Override
public int getScreenHeight() {
return Gdx.graphics.getDisplayMode().height;
}
private final Runnable mRedrawCb = new Runnable() { private final Runnable mRedrawCb = new Runnable() {
@Override @Override
public void run() { public void run() {

View File

@@ -21,7 +21,9 @@ import com.badlogic.gdx.input.GestureDetector.GestureListener;
import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.math.Vector2;
import org.oscim.core.Tile; import org.oscim.core.Tile;
import org.oscim.map.Animator2;
import org.oscim.map.Map; import org.oscim.map.Map;
import org.oscim.utils.Parameters;
public class GestureHandler implements GestureListener { public class GestureHandler implements GestureListener {
private boolean mayFling = true; private boolean mayFling = true;
@@ -84,7 +86,10 @@ public class GestureHandler implements GestureListener {
//log.debug("fling " + button + " " + velocityX + "/" + velocityY); //log.debug("fling " + button + " " + velocityX + "/" + velocityY);
if (mayFling && button == Buttons.LEFT) { if (mayFling && button == Buttons.LEFT) {
int m = Tile.SIZE * 4; int m = Tile.SIZE * 4;
mMap.animator().animateFling((int) velocityX, (int) velocityY, -m, m, -m, m); if (Parameters.ANIMATOR2)
((Animator2) mMap.animator()).animateFlingScroll(velocityX, velocityY, -m, m, -m, m);
else
mMap.animator().animateFling(velocityX, velocityY, -m, m, -m, m);
return true; return true;
} }
return false; return false;

View File

@@ -39,6 +39,7 @@ public class GestureHandlerImpl extends GestureDetector.GestureAdapter {
@Override @Override
public boolean tap(float x, float y, int count, int button) { public boolean tap(float x, float y, int count, int button) {
// Handle double tap zoom // Handle double tap zoom
// Not needed on desktop with MapEventLayer2
if (button == Input.Buttons.LEFT) { if (button == Input.Buttons.LEFT) {
if (count == 2) { if (count == 2) {
float pivotX = x - map.getWidth() / 2; float pivotX = x - map.getWidth() / 2;

View File

@@ -31,7 +31,7 @@ import org.oscim.layers.tile.buildings.BuildingLayer;
import org.oscim.map.Map; import org.oscim.map.Map;
import org.oscim.map.ViewController; import org.oscim.map.ViewController;
import org.oscim.theme.VtmThemes; import org.oscim.theme.VtmThemes;
import org.oscim.utils.Easing; import org.oscim.utils.animation.Easing;
import java.util.List; import java.util.List;

View File

@@ -1,7 +1,6 @@
buildscript { buildscript {
repositories { repositories {
jcenter() jcenter()
maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
} }
dependencies { dependencies {
classpath 'com.mobidevelop.robovm:robovm-gradle-plugin:2.3.3' classpath 'com.mobidevelop.robovm:robovm-gradle-plugin:2.3.3'

View File

@@ -1,7 +1,6 @@
buildscript { buildscript {
repositories { repositories {
jcenter() jcenter()
maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
} }
dependencies { dependencies {
classpath 'com.mobidevelop.robovm:robovm-gradle-plugin:2.3.3' classpath 'com.mobidevelop.robovm:robovm-gradle-plugin:2.3.3'

View File

@@ -49,4 +49,4 @@
/*! \brief Because views and buttons are dynamically instantiated from Storyboards and Nibs, code for their classes might not link in from a static library. Thus this method to make sure the class gets called at least once from code. /*! \brief Because views and buttons are dynamically instantiated from Storyboards and Nibs, code for their classes might not link in from a static library. Thus this method to make sure the class gets called at least once from code.
*/ */
void MakeSureSVGghLinks(void); void MakeSureSVGghLinks();

Some files were not shown because too many files have changed in this diff Show More