[guadec-web: 5/10] added proper javascript coding and custom styles



commit d2e2d4023431ae54d782ab7483cfdac503f43d85
Author: Jorge Sanz <xurxosanz gmail com>
Date:   Tue Jun 26 13:06:32 2018 +0200

    added proper javascript coding and custom styles

 Gruntfile.js                                       |   12 +-
 content/pages/map.md                               |  351 +-
 src/js/guadec_map/.gitignore                       |    2 +
 src/js/guadec_map/guadec-map-style.json            | 5893 ++++++++++++++++++++
 src/js/guadec_map/guadec-map.js                    |  337 ++
 src/js/guadec_map/maki-guadec-svg/airport-45.svg   |   49 +
 src/js/guadec_map/maki-guadec-svg/bar-45.svg       |   52 +
 src/js/guadec_map/maki-guadec-svg/bus-45.svg       |   48 +
 src/js/guadec_map/maki-guadec-svg/cafe-45.svg      |   51 +
 src/js/guadec_map/maki-guadec-svg/circle-11.svg    |    7 +
 src/js/guadec_map/maki-guadec-svg/circle-45.svg    |   51 +
 .../maki-guadec-svg/gnome-guadec-blue.svg          |   72 +
 .../maki-guadec-svg/gnome-guadec-red.svg           |   72 +
 .../maki-guadec-svg/gnome-guadec-yellow.svg        |   72 +
 src/js/guadec_map/maki-guadec-svg/home-45.svg      |   51 +
 src/js/guadec_map/maki-guadec-svg/hospital-45.svg  |   51 +
 src/js/guadec_map/maki-guadec-svg/music-45.svg     |   51 +
 src/js/guadec_map/maki-guadec-svg/park-45.svg      |   51 +
 src/js/guadec_map/maki-guadec-svg/parking-45.svg   |   51 +
 src/js/guadec_map/maki-guadec-svg/rail-45.svg      |   51 +
 .../guadec_map/maki-guadec-svg/restaurant-45.svg   |   51 +
 src/js/guadec_map/maki-guadec-svg/rocket-45.svg    |   51 +
 src/js/guadec_map/maki-guadec-svg/star-11.svg      |   10 +
 src/js/guadec_map/maki-guadec-svg/star-45.svg      |   52 +
 src/js/guadec_map/maki-guadec-svg/theatre-45.svg   |   51 +
 src/js/guadec_map/maki-guadec-svg/town-hall-45.svg |   51 +
 src/js/guadec_map/sprite.json                      |  149 +
 src/js/guadec_map/sprite.png                       |  Bin 0 -> 13977 bytes
 src/js/guadec_map/sprite 2x json                   |  149 +
 src/js/guadec_map/sprite 2x png                    |  Bin 0 -> 31098 bytes
 30 files changed, 7622 insertions(+), 317 deletions(-)
---
diff --git a/Gruntfile.js b/Gruntfile.js
index c8a039b..a41d788 100644
--- a/Gruntfile.js
+++ b/Gruntfile.js
@@ -113,6 +113,16 @@ module.exports = function (grunt) {
                         dest: 'themes/<%= pkg.name %>/static/fonts/'
                     }
                 ]
+            },
+            guadec_map: {
+                files: [
+                    {
+                        expand: true,
+                        cwd: 'src/js/guadec_map/',
+                        src: ['guadec-map.js','guadec-map-style.json','sprite*'],
+                        dest: 'themes/<%= pkg.name %>/static/js/guadec-map/'
+                    }
+                ]
             }
         },
 
@@ -123,7 +133,7 @@ module.exports = function (grunt) {
             },
             scripts: {
                 files: ['src/js/**/*.js'],
-                tasks: ['jslint', 'concat'],
+                tasks: ['jslint', 'concat','uglify','copy'],
             },
             images: {
                 files: ['src/img/**/*'],
diff --git a/content/pages/map.md b/content/pages/map.md
index 7123a32..23fb8d5 100644
--- a/content/pages/map.md
+++ b/content/pages/map.md
@@ -1,6 +1,7 @@
 Title: Map
 Date: 20180615
 
+<!-- mapbox and osmtogeojson scritps and css -->
 <link rel='stylesheet' href='https://api.tiles.mapbox.com/mapbox-gl-js/v0.44.1/mapbox-gl.css' />
 <script src='https://api.tiles.mapbox.com/mapbox-gl-js/v0.44.1/mapbox-gl.js'></script>
 <script src="https://tyrasd.github.io/osmtogeojson/osmtogeojson.js";></script>
@@ -69,353 +70,71 @@ Date: 20180615
 </div>
 </div>
 
-<script>
+<script type="module">
     /* parameters */
-    var /* List of ways to include in the map */
-        osm_ways = [
-            { osm_id: 27152910, name: 'railway station'}, // almeria railway
+    var options = {/* List of ways to include in the map */
+        osm_ways : [
+            { osm_id: 27152910, name: 'railway station', icon: 'rail-45'}, // almeria railway
             27152911, // Estación intermodal
-            29220363, // almeria university
+            { osm_id: 29220363, icon: 'gnome-guadec-red'}, // almeria university
             435775764, // Civitas
             37923960, // airport
             { osm_id: 36406179, name: 'UAL Parking'}, // UAL parking
             { osm_id: 509640566, name: 'Patio de los naranjos'}, // Patio de los naranjos
             187403583, // terraza del mar
             { osm_id: 27155530, name: 'Alcazaba meeting point'},
-            { osm_id: 27018547, name: 'Alcazaba de Almería'},
+            { osm_id: 27018547, name: 'Alcazaba de Almería', icon: 'gnome-guadec-yellow'},
         ],
         /* List of nodes to include in the map */
-        osm_nodes = [
+        osm_nodes : [
             4414057566, // la mala
-            { osm_id: 2870058034, name: 'Intermodal bus stop'}, // 292
-            974730957, // 144
-            469474242, // 71
-            469474241,  //56
-            { osm_id: 1304074112, name: 'Airport bus stop'}, // 188
+            { osm_id: 2870058034, name: 'Intermodal bus stop',icon: 'bus-15'}, // 292
+            { osm_id: 974730957, icon: 'bus-45'}, // 144
+            { osm_id: 469474242, icon: 'bus-45'}, // 71
+            { osm_id: 469474241, icon: 'bus-45'},  //56
+            { osm_id: 1304074112, name: 'Airport bus stop',icon: 'airport-45'}, // 188
+        ],
+        /* list of routes to render */
+        routes : [
+            {
+                from: 2870058034,
+                to: 469474241,
+                title: 'Sample route',
+                color: '#f00'
+            }
         ],
         /* Basemap Styles
         OpenMapTiles https://openmaptiles.github.io/positron-gl-style/style-cdn.json
         CARTO https://basemaps.cartocdn.com/gl/voyager-gl-style/style.json
         */
-        basemap_style = 'https://basemaps.cartocdn.com/gl/voyager-gl-style/style.json',
+        basemap_style : '/theme/js/guadec-map/guadec-map-style.json',
         /* initial center and zoom level, you can use bboxfinder.com to find proper values */
-        center = [-2.421,36.823],
-        zoom   = 12,
+        center : [-2.421,36.823],
+        zoom   : 12,
         /* Main color to use anywhere */
-        main_color = '#4a86cf',
+        main_color : '#4a86cf',
         /* Icon for the points ont the map */
-        icon = '/theme/img/Gnomelogo-footprint.png',
+        icon : 'gnome-guadec-blue',
         /* White list of properties to allow to
         be displayed in the popup, order matters! */
-        popup_properties = [
+        popup_properties : [
             'description',
             'shop','amenity','wheelchair',
             'highway', 'network', 'bench', 'shelter', 'ref',
             'adr:street',
             'website','wikidata','wikipedia'
         ]
-        ;
-</script>
-
-<script>
-    /* Functions and helpers */
-    var overpass_url = 'https://overpass-api.de/api/interpreter',
-        /* from https://www.npmjs.com/package/geojson-polygon-center */
-        polygon_center = function (polygon) {
-            var minx = miny = 1000,
-                maxx = maxy = -1000
-            polygon = polygon[0]
-            for (var i = 0; i < polygon.length; i++) {
-                var point = polygon[i]
-                var x = point[0]
-                var y = point[1]
-
-                if (x < minx) minx = x
-                else if (x > maxx) maxx = x
-                if (y < miny) miny = y
-                else if (y > maxy) maxy = y
-            }
-
-            return {
-                type: 'Point',
-                coordinates: [
-                minx + ((maxx - minx) / 2),
-                miny + ((maxy - miny) / 2)
-                ]
-            }
-        },
-        /* helper to get the list of ids */
-        get_ids = function(el){
-            return typeof el == "number" ? el : el['osm_id'];
-        },
-        /* takes a feature, and augment it with any custom properties 
-           passed on thi list of nodes and ways */
-        get_props = function(feature){
-            var /* filter checker */
-                filter_node = function(node){
-                    return typeof node != "number" && node['osm_id'] == feat_id;
-                },
-                properties = feature['properties'],
-                /* feature id */
-                feat_id = properties['id'],
-                /* candidates */
-                candidate = osm_nodes.filter(filter_node)
-                                .concat(osm_ways.filter(filter_node));
-
-            if (candidate.length == 1){
-                properties = Object.assign(properties,candidate[0]);
-            };
-
-            return feature;
-        },
-        /* Generate a valid OSM Overpass API request */
-        get_osm_query = function(){
-            var ways = osm_ways.map(get_ids).join(',');
-            var nodes = osm_nodes.map(get_ids).join(',');
-
-            return `[out:xml][timeout:300];
-                    (
-                        way(id:${ways});
-                        node(id:${nodes});
-                    )->.a;
-                    (.a; .a >;);out qt;`
-        }
-        /* moves tags up to the main properties function */
-        tags_to_props = function(feature){
-            properties = feature['properties']
-            tags = properties['tags'];
-            Object.assign(properties, tags);
-            delete properties['tags'];
-
-            if (properties['id'] == undefined){
-                properties['id'] = String(feature['id'])
-            } else {
-                properties['id'] = String(properties['id'])
-            };
-
-            // Override the name in Engish, if it exists
-            if (properties['name:en'] != undefined){
-                properties['name'] = properties['name:en']
-            };
-
-            return feature
-        },
-        /* transforms OSM data into geojson and adds that as
-           points and labels to the map */
-        load_osm_data = function(data){
-            console.log('loading data...');
-            var  // Convert to GeoJSON
-                geojson_data = osmtogeojson(data),
-                // Filter ways
-                polys_geojson = geojson_data.features.filter(function(feature){
-                    return feature.properties.type == "way"
-                }),
-                // Filter points
-                points_geojson = geojson_data.features.filter(function(feature){
-                    return feature.properties.type == "node"
-                }),
-                // Generate centroids for points
-                polys_geojson_points = polys_geojson.map(function(poly){
-                    copy = JSON.parse(JSON.stringify(poly));
-                    copy['geometry'] = polygon_center(copy.geometry.coordinates);
-                    return copy
-                }),
-                // Get together both set of points
-                all_features = points_geojson.concat(polys_geojson_points),
-                // Get all properties out from the tags
-                points_geojson_props = all_features.map(tags_to_props),
-                // Override any custom properties
-                final_points = points_geojson_props.map(get_props);
-
-            // Build final geojson collection
-            return {
-                        'type': 'FeatureCollection',
-                        'features': final_points
-            };           
-        },
-        /* Loads the data retrieved into a mapboxgl map */
-        add_layers = function(map, data){
-            map.loadImage(icon, function(error, image) {
-                if (error) throw error;
-                map.addImage('gnome', image);
+    };
 
-                /* Icon layer */
-                map.addLayer({
-                    'id': 'guadec_icon',
-                    'type': 'symbol',
-                    'source': {
-                        'type': 'geojson',
-                        'data': geojson_data
-                    },
-                    'layout': {
-                        "symbol-placement": "point",
-                        "text-field": '{name}' ,
-                        "icon-image": "gnome",
-                        "text-font": ["Open Sans Regular"],
-                        "icon-allow-overlap": true,
-                        "text-offset": [.3,.3],
-                        "text-anchor": "top-left",
-                        "text-max-width": 5,
-                        "text-justify": "left",
-                        "text-allow-overlap": false,
-                        "text-optional": true,
-                        "icon-size": {
-                            "stops": [
-                                [0, 0.10],
-                                [12, 0.12],
-                                [14, 0.15],
-                                [18, 0.25]
-                            ]
-                        },
-                        "text-size": {
-                            "stops": [
-                                [0, 0],
-                                [9,0],
-                                [12, 15],
-                                [16, 20]
-                            ]
-                        }
-                    },
-                    'paint': {
-                        "text-color": main_color,
-                        "icon-opacity": 1,
-                        "text-opacity": {
-                            "stops": [
-                                [0, 0],
-                                [9,0],
-                                [12, 1]
-                            ]
-                        },
-                        "text-halo-color": "white",
-                        "text-halo-width": 1.5,
-                        "text-halo-blur": 1
-                    }
-                },'place_hamlet');
-            }); 
-        };
-</script>
+    /* Import the module and initialize the map with the passed options */
+    import { GuadecMap } from '/theme/js/guadec-map/guadec-map.js';
+    var guadec_map = new GuadecMap(options);
+    var map = guadec_map.init_map();
 
-<script>
-    /* SCRIPT */
-    var geojson_data = {},
-        map = new mapboxgl.Map({
-            container: 'map',
-            style: basemap_style,
-            center: center,
-            zoom: zoom,
-            attributionControl: true
-        });
-    
     /*Once map is loaded, get data from OSM to add as a new layer */
     map.on('load', function() {
-        console.log('fetching osm data...')
-        fetch(overpass_url,{
-            method: "POST",
-            body:  get_osm_query()})
-            .then(response => response.text())
-            .then(str => (new window.DOMParser()).parseFromString(str, "text/xml"))
-            .then(function(data){
-                // Get the geojson to work
-                geojson_data = load_osm_data(data);
-                console.log(geojson_data);
-                // Add it as a layer
-                add_layers(map,geojson_data);
-            })
-            .catch(error => console.log("Error:", error));
+        guadec_map.load_pois();
+        //guadec_map.load_routes();
     });
 
-    /* Navigation control */
-    map.addControl(new mapboxgl.NavigationControl());
-
-    /* Popup up singleton */
-    var tooltip = new mapboxgl.Popup({   
-        closeButton: false,
-        closeOnClick: true,
-        anchor: "top",
-        offset: [0, 8]
-        });
-    
-    // helper to render the properties
-    var get_properties_list = function(properties){
-        return popup_properties.filter(function(key){
-                return (Object.keys(properties).findIndex(x => x == key) > -1)
-            })
-            .map(function(key){
-                if (key == 'website'){
-                    return `<li><a href="${properties[key]}">${key}</a></li>`
-                } else if (key == 'wikidata'){
-                    return `<li><a href="https://www.wikidata.org/wiki/${properties[key]}";>${key}</a></li>`
-                } else if (key == 'wikipedia'){
-                    return `<li><a href="https://en.wikipedia.org/wiki/${properties[key]}";>${key}</a></li>`
-                } else {
-                    return `<li><strong>${key}</strong>: ${properties[key]}</li>`
-                }
-            }).join('')
-    };
-
-    var interactivity_handler = function(location,is_tooltip){
-        var features = map.queryRenderedFeatures(location.point, {
-            layers: ['guadec_icon']
-        });
-        tooltip.remove();
-
-        if (features != ''){
-            popup = null;
-            var feature = features[0];
-
-            if (is_tooltip){
-                tooltip.setHTML(`<span>${feature.properties.name}</span>`)
-                        .setLngLat(location.lngLat) 
-                        .addTo(map);
-            } else {
-                popup = new mapboxgl.Popup({anchor:'bottom'})
-                        .setHTML(`
-                            <h3>${feature.properties.name}</h3>
-                            <ul>
-                            ${get_properties_list(feature.properties)}
-                            </ul>
-                            <p class="osm-source"><a 
href="https://www.openstreetmap.org/${feature.properties.type}/${feature.properties.id}";>Source</a></p>
-                            `
-                        )
-                        .setLngLat(location.lngLat) 
-                        .addTo(map);
-            }                
-        }
-    }
-
-    /* Popup interactivity */
-    map.on('click',function(location){
-        interactivity_handler(location,false);
-    });
-
-    /* Popup interactivity */
-    map.on('mousemove',function(location){
-        interactivity_handler(location,true);
-    });
-
-    /* Filter control */
-    document
-        .getElementById('filter-input')
-        .addEventListener('keyup', function(e) {
-            function normalize(string) {
-                return string.trim().toLowerCase();
-            };
-
-            // Get the value of the input
-            var value = normalize(e.target.value);
-            
-            if (value == ""){
-                // If it's empty remove the filter
-                map.setFilter('guadec_icon', null);
-
-            } else {
-                // Filter the geojson features and get their ids
-                ids = geojson_data.features
-                    .filter( x =>  normalize( x['properties']['name']).match(new RegExp(value,"g")) != null)
-                    .map(x => x['properties']['id'])
-
-                // Set the filter of the layer to match those ids
-                map.setFilter('guadec_icon', ['match', ['get', 'id'], ids, true, false]);
-            }
-        });
 </script>
\ No newline at end of file
diff --git a/src/js/guadec_map/.gitignore b/src/js/guadec_map/.gitignore
new file mode 100644
index 0000000..f36aabb
--- /dev/null
+++ b/src/js/guadec_map/.gitignore
@@ -0,0 +1,2 @@
+processing
+maki-svg
diff --git a/src/js/guadec_map/guadec-map-style.json b/src/js/guadec_map/guadec-map-style.json
new file mode 100644
index 0000000..589e5d8
--- /dev/null
+++ b/src/js/guadec_map/guadec-map-style.json
@@ -0,0 +1,5893 @@
+{
+    "version": 8,
+    "name": "voyager",
+    "metadata": {},
+    "sources": {
+        "carto": {
+            "type": "vector",
+            "url": "https://tiles.basemaps.cartocdn.com/vector/carto.streets/v1/tiles.json";
+        }
+    },
+    "sprite": "http://localhost:8000/theme/js/guadec-map/sprite";,
+    "glyphs": "https://tiles.basemaps.cartocdn.com/fonts/{fontstack}/{range}.pbf";,
+    "layers": [
+        {
+            "id": "background",
+            "type": "background",
+            "layout": {
+                "visibility": "visible"
+            },
+            "paint": {
+                "background-color": "#fbf8f3",
+                "background-opacity": 1
+            }
+        },
+        {
+            "id": "landcover",
+            "type": "fill",
+            "source": "carto",
+            "source-layer": "landcover",
+            "filter": [
+                "any",
+                [
+                    "==",
+                    "class",
+                    "wood"
+                ],
+                [
+                    "==",
+                    "class",
+                    "grass"
+                ],
+                [
+                    "==",
+                    "subclass",
+                    "recreation_ground"
+                ]
+            ],
+            "paint": {
+                "fill-color": {
+                    "stops": [
+                        [
+                            8,
+                            "rgba(197, 225, 178, 0.2)"
+                        ],
+                        [
+                            9,
+                            "rgba(197, 225, 178, 0.25)"
+                        ],
+                        [
+                            11,
+                            "rgba(197, 225, 178, 0.35)"
+                        ],
+                        [
+                            13,
+                            "rgba(197, 225, 178, 0.4)"
+                        ],
+                        [
+                            15,
+                            "#e0ecd3"
+                        ]
+                    ]
+                },
+                "fill-opacity": 1
+            }
+        },
+        {
+            "id": "park_national_park",
+            "type": "fill",
+            "source": "carto",
+            "source-layer": "park",
+            "minzoom": 9,
+            "filter": [
+                "all",
+                [
+                    "==",
+                    "class",
+                    "national_park"
+                ]
+            ],
+            "layout": {
+                "visibility": "visible"
+            },
+            "paint": {
+                "fill-color": {
+                    "stops": [
+                        [
+                            8,
+                            "rgba(197, 225, 178, 0.2)"
+                        ],
+                        [
+                            9,
+                            "rgba(197, 225, 178, 0.25)"
+                        ],
+                        [
+                            11,
+                            "rgba(197, 225, 178, 0.35)"
+                        ],
+                        [
+                            13,
+                            "rgba(197, 225, 178, 0.4)"
+                        ],
+                        [
+                            15,
+                            "#e0ecd3"
+                        ]
+                    ]
+                },
+                "fill-opacity": 1,
+                "fill-translate-anchor": "map"
+            }
+        },
+        {
+            "id": "park_nature_reserve",
+            "type": "fill",
+            "source": "carto",
+            "source-layer": "park",
+            "minzoom": 0,
+            "filter": [
+                "all",
+                [
+                    "==",
+                    "class",
+                    "nature_reserve"
+                ]
+            ],
+            "layout": {
+                "visibility": "visible"
+            },
+            "paint": {
+                "fill-color": {
+                    "stops": [
+                        [
+                            8,
+                            "rgba(197, 225, 178, 0.2)"
+                        ],
+                        [
+                            9,
+                            "rgba(197, 225, 178, 0.25)"
+                        ],
+                        [
+                            11,
+                            "rgba(197, 225, 178, 0.35)"
+                        ],
+                        [
+                            13,
+                            "rgba(197, 225, 178, 0.4)"
+                        ],
+                        [
+                            15,
+                            "#e0ecd3"
+                        ]
+                    ]
+                },
+                "fill-antialias": true,
+                "fill-opacity": {
+                    "stops": [
+                        [
+                            6,
+                            0.7
+                        ],
+                        [
+                            9,
+                            0.9
+                        ]
+                    ]
+                }
+            }
+        },
+        {
+            "id": "landuse_residential",
+            "type": "fill",
+            "source": "carto",
+            "source-layer": "landuse",
+            "minzoom": 6,
+            "filter": [
+                "any",
+                [
+                    "==",
+                    "class",
+                    "residential"
+                ]
+            ],
+            "paint": {
+                "fill-color": {
+                    "stops": [
+                        [
+                            5,
+                            "rgba(243, 234, 220, 0.5)"
+                        ],
+                        [
+                            8,
+                            "rgba(243, 234, 220, 0.45)"
+                        ],
+                        [
+                            9,
+                            "rgba(243, 234, 220, 0.4)"
+                        ],
+                        [
+                            11,
+                            "rgba(243, 234, 220, 0.35)"
+                        ],
+                        [
+                            13,
+                            "rgba(243, 234, 220, 0.3)"
+                        ],
+                        [
+                            15,
+                            "rgba(243, 234, 220, 0.25)"
+                        ],
+                        [
+                            16,
+                            "rgba(243, 234, 220, 0.15)"
+                        ]
+                    ]
+                },
+                "fill-opacity": {
+                    "stops": [
+                        [
+                            6,
+                            0.6
+                        ],
+                        [
+                            9,
+                            1
+                        ]
+                    ]
+                }
+            }
+        },
+        {
+            "id": "landuse",
+            "type": "fill",
+            "source": "carto",
+            "source-layer": "landuse",
+            "filter": [
+                "any",
+                [
+                    "==",
+                    "class",
+                    "cemetery"
+                ],
+                [
+                    "==",
+                    "class",
+                    "stadium"
+                ]
+            ],
+            "paint": {
+                "fill-color": {
+                    "stops": [
+                        [
+                            8,
+                            "rgba(197, 225, 178, 0.2)"
+                        ],
+                        [
+                            9,
+                            "rgba(197, 225, 178, 0.25)"
+                        ],
+                        [
+                            11,
+                            "rgba(197, 225, 178, 0.35)"
+                        ],
+                        [
+                            13,
+                            "rgba(197, 225, 178, 0.4)"
+                        ],
+                        [
+                            15,
+                            "#e0ecd3"
+                        ]
+                    ]
+                }
+            }
+        },
+        {
+            "id": "waterway",
+            "type": "line",
+            "source": "carto",
+            "source-layer": "waterway",
+            "paint": {
+                "line-color": "#cce7ea",
+                "line-width": {
+                    "stops": [
+                        [
+                            8,
+                            0.5
+                        ],
+                        [
+                            9,
+                            1
+                        ],
+                        [
+                            15,
+                            2
+                        ],
+                        [
+                            16,
+                            3
+                        ]
+                    ]
+                }
+            }
+        },
+        {
+            "id": "boundary_county",
+            "type": "line",
+            "source": "carto",
+            "source-layer": "boundary",
+            "minzoom": 9,
+            "maxzoom": 24,
+            "filter": [
+                "all",
+                [
+                    "==",
+                    "admin_level",
+                    6
+                ],
+                [
+                    "==",
+                    "maritime",
+                    0
+                ]
+            ],
+            "paint": {
+                "line-color": {
+                    "stops": [
+                        [
+                            4,
+                            "#d4d5d6"
+                        ],
+                        [
+                            5,
+                            "#d4d5d6"
+                        ],
+                        [
+                            6,
+                            "#e1c5c7"
+                        ]
+                    ]
+                },
+                "line-width": {
+                    "stops": [
+                        [
+                            4,
+                            0.5
+                        ],
+                        [
+                            7,
+                            1
+                        ]
+                    ]
+                },
+                "line-dasharray": {
+                    "stops": [
+                        [
+                            6,
+                            [
+                                1
+                            ]
+                        ],
+                        [
+                            7,
+                            [
+                                2,
+                                2
+                            ]
+                        ]
+                    ]
+                }
+            }
+        },
+        {
+            "id": "boundary_state",
+            "type": "line",
+            "source": "carto",
+            "source-layer": "boundary",
+            "minzoom": 4,
+            "filter": [
+                "all",
+                [
+                    "==",
+                    "admin_level",
+                    4
+                ],
+                [
+                    "==",
+                    "maritime",
+                    0
+                ]
+            ],
+            "paint": {
+                "line-color": {
+                    "stops": [
+                        [
+                            4,
+                            "#d4d5d6"
+                        ],
+                        [
+                            5,
+                            "#d4d5d6"
+                        ],
+                        [
+                            6,
+                            "#e1c5c7"
+                        ]
+                    ]
+                },
+                "line-width": {
+                    "stops": [
+                        [
+                            4,
+                            0.5
+                        ],
+                        [
+                            7,
+                            1
+                        ],
+                        [
+                            8,
+                            1
+                        ],
+                        [
+                            9,
+                            1.2
+                        ]
+                    ]
+                },
+                "line-dasharray": {
+                    "stops": [
+                        [
+                            6,
+                            [
+                                1
+                            ]
+                        ],
+                        [
+                            7,
+                            [
+                                2,
+                                2
+                            ]
+                        ]
+                    ]
+                }
+            }
+        },
+        {
+            "id": "water",
+            "type": "fill",
+            "source": "carto",
+            "source-layer": "water",
+            "minzoom": 0,
+            "maxzoom": 24,
+            "filter": [
+                "all",
+                [
+                    "==",
+                    "$type",
+                    "Polygon"
+                ]
+            ],
+            "layout": {
+                "visibility": "visible"
+            },
+            "paint": {
+                "fill-color": "#b0d0d6",
+                "fill-antialias": true,
+                "fill-translate-anchor": "map",
+                "fill-opacity": 1
+            }
+        },
+        {
+            "id": "water_shadow",
+            "type": "fill",
+            "source": "carto",
+            "source-layer": "water",
+            "minzoom": 0,
+            "filter": [
+                "all",
+                [
+                    "==",
+                    "$type",
+                    "Polygon"
+                ]
+            ],
+            "layout": {
+                "visibility": "visible"
+            },
+            "paint": {
+                "fill-color": "rgba(203, 225, 228, 1)",
+                "fill-antialias": true,
+                "fill-translate-anchor": "map",
+                "fill-opacity": 1,
+                "fill-translate": {
+                    "stops": [
+                        [
+                            0,
+                            [
+                                0,
+                                2
+                            ]
+                        ],
+                        [
+                            6,
+                            [
+                                0,
+                                1
+                            ]
+                        ],
+                        [
+                            14,
+                            [
+                                0,
+                                1
+                            ]
+                        ],
+                        [
+                            17,
+                            [
+                                0,
+                                2
+                            ]
+                        ]
+                    ]
+                }
+            }
+        },
+        {
+            "id": "aeroway-runway",
+            "type": "line",
+            "source": "carto",
+            "source-layer": "aeroway",
+            "minzoom": 12,
+            "filter": [
+                "all",
+                [
+                    "==",
+                    "class",
+                    "runway"
+                ]
+            ],
+            "layout": {
+                "line-cap": "square"
+            },
+            "paint": {
+                "line-width": {
+                    "stops": [
+                        [
+                            11,
+                            1
+                        ],
+                        [
+                            13,
+                            4
+                        ],
+                        [
+                            14,
+                            6
+                        ],
+                        [
+                            15,
+                            8
+                        ],
+                        [
+                            16,
+                            10
+                        ]
+                    ]
+                },
+                "line-color": "#e8e8e8"
+            }
+        },
+        {
+            "id": "aeroway-taxiway",
+            "type": "line",
+            "source": "carto",
+            "source-layer": "aeroway",
+            "minzoom": 13,
+            "filter": [
+                "all",
+                [
+                    "==",
+                    "class",
+                    "taxiway"
+                ]
+            ],
+            "paint": {
+                "line-color": "#e8e8e8",
+                "line-width": {
+                    "stops": [
+                        [
+                            13,
+                            0.5
+                        ],
+                        [
+                            14,
+                            1
+                        ],
+                        [
+                            15,
+                            2
+                        ],
+                        [
+                            16,
+                            4
+                        ]
+                    ]
+                }
+            }
+        },
+        {
+            "id": "waterway_label",
+            "type": "symbol",
+            "source": "carto",
+            "source-layer": "waterway",
+            "filter": [
+                "all",
+                [
+                    "has",
+                    "name"
+                ],
+                [
+                    "==",
+                    "class",
+                    "river"
+                ]
+            ],
+            "layout": {
+                "text-field": "{name_en}",
+                "text-font": [
+                    "Montserrat Regular Italic",
+                    "Open Sans Italic",
+                    "Noto Sans Regular",
+                    "HanWangHeiLight Regular",
+                    "NanumBarunGothic Regular"
+                ],
+                "symbol-placement": "line",
+                "symbol-spacing": 300,
+                "symbol-avoid-edges": false,
+                "text-size": {
+                    "stops": [
+                        [
+                            9,
+                            8
+                        ],
+                        [
+                            10,
+                            9
+                        ]
+                    ]
+                },
+                "text-padding": 2,
+                "text-pitch-alignment": "auto",
+                "text-rotation-alignment": "auto",
+                "text-offset": {
+                    "stops": [
+                        [
+                            6,
+                            [
+                                0,
+                                -0.2
+                            ]
+                        ],
+                        [
+                            11,
+                            [
+                                0,
+                                -0.4
+                            ]
+                        ],
+                        [
+                            12,
+                            [
+                                0,
+                                -0.6
+                            ]
+                        ]
+                    ]
+                },
+                "text-letter-spacing": 0,
+                "text-keep-upright": true
+            },
+            "paint": {
+                "text-color": "#51909c",
+                "text-halo-color": "#e2eef0",
+                "text-halo-width": 1
+            }
+        },
+        {
+            "id": "tunnel_service_case",
+            "type": "line",
+            "source": "carto",
+            "source-layer": "transportation",
+            "minzoom": 15,
+            "maxzoom": 24,
+            "filter": [
+                "all",
+                [
+                    "==",
+                    "class",
+                    "service"
+                ],
+                [
+                    "==",
+                    "brunnel",
+                    "tunnel"
+                ]
+            ],
+            "layout": {
+                "line-cap": "round",
+                "line-join": "round"
+            },
+            "paint": {
+                "line-width": {
+                    "stops": [
+                        [
+                            15,
+                            1
+                        ],
+                        [
+                            16,
+                            3
+                        ],
+                        [
+                            17,
+                            6
+                        ],
+                        [
+                            18,
+                            8
+                        ]
+                    ]
+                },
+                "line-opacity": 1,
+                "line-color": "#e6dfcb"
+            }
+        },
+        {
+            "id": "tunnel_minor_case",
+            "type": "line",
+            "source": "carto",
+            "source-layer": "transportation",
+            "minzoom": 13,
+            "maxzoom": 24,
+            "filter": [
+                "all",
+                [
+                    "==",
+                    "class",
+                    "minor"
+                ],
+                [
+                    "==",
+                    "brunnel",
+                    "tunnel"
+                ]
+            ],
+            "layout": {
+                "line-cap": "butt",
+                "line-join": "miter"
+            },
+            "paint": {
+                "line-width": {
+                    "stops": [
+                        [
+                            11,
+                            0.5
+                        ],
+                        [
+                            12,
+                            0.5
+                        ],
+                        [
+                            14,
+                            2
+                        ],
+                        [
+                            15,
+                            4
+                        ],
+                        [
+                            16,
+                            6
+                        ],
+                        [
+                            17,
+                            10
+                        ],
+                        [
+                            18,
+                            14
+                        ]
+                    ]
+                },
+                "line-opacity": 1,
+                "line-color": "#e6dfcb"
+            }
+        },
+        {
+            "id": "tunnel_sec_case",
+            "type": "line",
+            "source": "carto",
+            "source-layer": "transportation",
+            "minzoom": 11,
+            "maxzoom": 24,
+            "filter": [
+                "all",
+                [
+                    "in",
+                    "class",
+                    "secondary",
+                    "tertiary"
+                ],
+                [
+                    "==",
+                    "brunnel",
+                    "tunnel"
+                ]
+            ],
+            "layout": {
+                "line-cap": "round",
+                "line-join": "round"
+            },
+            "paint": {
+                "line-width": {
+                    "stops": [
+                        [
+                            11,
+                            0.5
+                        ],
+                        [
+                            12,
+                            1
+                        ],
+                        [
+                            13,
+                            2
+                        ],
+                        [
+                            14,
+                            5
+                        ],
+                        [
+                            15,
+                            6
+                        ],
+                        [
+                            16,
+                            8
+                        ],
+                        [
+                            17,
+                            12
+                        ],
+                        [
+                            18,
+                            16
+                        ]
+                    ]
+                },
+                "line-opacity": 1,
+                "line-color": "#e6dfcb"
+            }
+        },
+        {
+            "id": "tunnel_pri_case",
+            "type": "line",
+            "source": "carto",
+            "source-layer": "transportation",
+            "minzoom": 8,
+            "maxzoom": 24,
+            "filter": [
+                "all",
+                [
+                    "==",
+                    "class",
+                    "primary"
+                ],
+                [
+                    "!=",
+                    "ramp",
+                    1
+                ],
+                [
+                    "==",
+                    "brunnel",
+                    "tunnel"
+                ]
+            ],
+            "layout": {
+                "line-cap": "butt",
+                "line-join": "round"
+            },
+            "paint": {
+                "line-width": {
+                    "stops": [
+                        [
+                            6,
+                            0.5
+                        ],
+                        [
+                            7,
+                            0.8
+                        ],
+                        [
+                            8,
+                            1
+                        ],
+                        [
+                            11,
+                            3
+                        ],
+                        [
+                            13,
+                            4
+                        ],
+                        [
+                            14,
+                            6
+                        ],
+                        [
+                            15,
+                            8
+                        ],
+                        [
+                            16,
+                            10
+                        ],
+                        [
+                            17,
+                            14
+                        ],
+                        [
+                            18,
+                            18
+                        ]
+                    ]
+                },
+                "line-opacity": {
+                    "stops": [
+                        [
+                            5,
+                            0.5
+                        ],
+                        [
+                            7,
+                            1
+                        ]
+                    ]
+                },
+                "line-color": "#e6dfcb"
+            }
+        },
+        {
+            "id": "tunnel_trunk_case",
+            "type": "line",
+            "source": "carto",
+            "source-layer": "transportation",
+            "minzoom": 5,
+            "maxzoom": 24,
+            "filter": [
+                "all",
+                [
+                    "==",
+                    "class",
+                    "trunk"
+                ],
+                [
+                    "!=",
+                    "ramp",
+                    1
+                ],
+                [
+                    "==",
+                    "brunnel",
+                    "tunnel"
+                ]
+            ],
+            "layout": {
+                "line-cap": "butt",
+                "line-join": "round",
+                "visibility": "visible"
+            },
+            "paint": {
+                "line-width": {
+                    "stops": [
+                        [
+                            6,
+                            0.5
+                        ],
+                        [
+                            7,
+                            0.8
+                        ],
+                        [
+                            8,
+                            1
+                        ],
+                        [
+                            11,
+                            3
+                        ],
+                        [
+                            13,
+                            4
+                        ],
+                        [
+                            14,
+                            6
+                        ],
+                        [
+                            15,
+                            8
+                        ],
+                        [
+                            16,
+                            10
+                        ],
+                        [
+                            17,
+                            14
+                        ],
+                        [
+                            18,
+                            18
+                        ]
+                    ]
+                },
+                "line-opacity": {
+                    "stops": [
+                        [
+                            5,
+                            0.5
+                        ],
+                        [
+                            7,
+                            1
+                        ]
+                    ]
+                },
+                "line-color": "#fbdb98"
+            }
+        },
+        {
+            "id": "tunnel_mot_case",
+            "type": "line",
+            "source": "carto",
+            "source-layer": "transportation",
+            "minzoom": 5,
+            "maxzoom": 24,
+            "filter": [
+                "all",
+                [
+                    "==",
+                    "class",
+                    "motorway"
+                ],
+                [
+                    "!=",
+                    "ramp",
+                    1
+                ],
+                [
+                    "==",
+                    "brunnel",
+                    "tunnel"
+                ]
+            ],
+            "layout": {
+                "line-cap": "butt",
+                "line-join": "round"
+            },
+            "paint": {
+                "line-width": {
+                    "stops": [
+                        [
+                            6,
+                            0.5
+                        ],
+                        [
+                            7,
+                            0.8
+                        ],
+                        [
+                            8,
+                            1
+                        ],
+                        [
+                            11,
+                            3
+                        ],
+                        [
+                            12,
+                            4
+                        ],
+                        [
+                            13,
+                            5
+                        ],
+                        [
+                            14,
+                            7
+                        ],
+                        [
+                            15,
+                            9
+                        ],
+                        [
+                            16,
+                            11
+                        ],
+                        [
+                            17,
+                            13
+                        ],
+                        [
+                            18,
+                            22
+                        ]
+                    ]
+                },
+                "line-opacity": {
+                    "stops": [
+                        [
+                            6,
+                            0.5
+                        ],
+                        [
+                            7,
+                            1
+                        ]
+                    ]
+                },
+                "line-color": "#fbdb98"
+            }
+        },
+        {
+            "id": "tunnel_path",
+            "type": "line",
+            "source": "carto",
+            "source-layer": "transportation",
+            "minzoom": 15,
+            "maxzoom": 24,
+            "filter": [
+                "all",
+                [
+                    "==",
+                    "class",
+                    "path"
+                ],
+                [
+                    "==",
+                    "brunnel",
+                    "tunnel"
+                ]
+            ],
+            "layout": {
+                "line-cap": "round",
+                "line-join": "round"
+            },
+            "paint": {
+                "line-width": {
+                    "stops": [
+                        [
+                            15,
+                            0.5
+                        ],
+                        [
+                            16,
+                            1
+                        ],
+                        [
+                            18,
+                            3
+                        ]
+                    ]
+                },
+                "line-opacity": 1,
+                "line-color": "#d7d7d7",
+                "line-dasharray": {
+                    "stops": [
+                        [
+                            15,
+                            [
+                                2,
+                                2
+                            ]
+                        ],
+                        [
+                            18,
+                            [
+                                3,
+                                3
+                            ]
+                        ]
+                    ]
+                }
+            }
+        },
+        {
+            "id": "tunnel_service_fill",
+            "type": "line",
+            "source": "carto",
+            "source-layer": "transportation",
+            "minzoom": 15,
+            "maxzoom": 24,
+            "filter": [
+                "all",
+                [
+                    "==",
+                    "class",
+                    "service"
+                ],
+                [
+                    "==",
+                    "brunnel",
+                    "tunnel"
+                ]
+            ],
+            "layout": {
+                "line-cap": "round",
+                "line-join": "round"
+            },
+            "paint": {
+                "line-width": {
+                    "stops": [
+                        [
+                            15,
+                            2
+                        ],
+                        [
+                            16,
+                            2
+                        ],
+                        [
+                            17,
+                            4
+                        ],
+                        [
+                            18,
+                            6
+                        ]
+                    ]
+                },
+                "line-opacity": 1,
+                "line-color": "#f0eee7"
+            }
+        },
+        {
+            "id": "tunnel_minor_fill",
+            "type": "line",
+            "source": "carto",
+            "source-layer": "transportation",
+            "minzoom": 15,
+            "maxzoom": 24,
+            "filter": [
+                "all",
+                [
+                    "==",
+                    "class",
+                    "minor"
+                ],
+                [
+                    "==",
+                    "brunnel",
+                    "tunnel"
+                ]
+            ],
+            "layout": {
+                "line-cap": "butt",
+                "line-join": "round"
+            },
+            "paint": {
+                "line-width": {
+                    "stops": [
+                        [
+                            15,
+                            3
+                        ],
+                        [
+                            16,
+                            4
+                        ],
+                        [
+                            17,
+                            8
+                        ],
+                        [
+                            18,
+                            12
+                        ]
+                    ]
+                },
+                "line-opacity": 1,
+                "line-color": "rgba(238, 238, 238, 1)"
+            }
+        },
+        {
+            "id": "tunnel_sec_fill",
+            "type": "line",
+            "source": "carto",
+            "source-layer": "transportation",
+            "minzoom": 13,
+            "maxzoom": 24,
+            "filter": [
+                "all",
+                [
+                    "in",
+                    "class",
+                    "secondary",
+                    "tertiary"
+                ],
+                [
+                    "==",
+                    "brunnel",
+                    "tunnel"
+                ]
+            ],
+            "layout": {
+                "line-cap": "round",
+                "line-join": "round"
+            },
+            "paint": {
+                "line-width": {
+                    "stops": [
+                        [
+                            11,
+                            2
+                        ],
+                        [
+                            13,
+                            2
+                        ],
+                        [
+                            14,
+                            3
+                        ],
+                        [
+                            15,
+                            4
+                        ],
+                        [
+                            16,
+                            6
+                        ],
+                        [
+                            17,
+                            10
+                        ],
+                        [
+                            18,
+                            14
+                        ]
+                    ]
+                },
+                "line-opacity": 1,
+                "line-color": "#f0eee7"
+            }
+        },
+        {
+            "id": "tunnel_pri_fill",
+            "type": "line",
+            "source": "carto",
+            "source-layer": "transportation",
+            "minzoom": 11,
+            "maxzoom": 24,
+            "filter": [
+                "all",
+                [
+                    "==",
+                    "class",
+                    "primary"
+                ],
+                [
+                    "!=",
+                    "ramp",
+                    1
+                ],
+                [
+                    "==",
+                    "brunnel",
+                    "tunnel"
+                ]
+            ],
+            "layout": {
+                "line-cap": "butt",
+                "line-join": "round"
+            },
+            "paint": {
+                "line-width": {
+                    "stops": [
+                        [
+                            11,
+                            1
+                        ],
+                        [
+                            13,
+                            2
+                        ],
+                        [
+                            14,
+                            4
+                        ],
+                        [
+                            15,
+                            6
+                        ],
+                        [
+                            16,
+                            8
+                        ],
+                        [
+                            17,
+                            12
+                        ],
+                        [
+                            18,
+                            16
+                        ]
+                    ]
+                },
+                "line-opacity": 1,
+                "line-color": "#f0eee7"
+            }
+        },
+        {
+            "id": "tunnel_trunk_fill",
+            "type": "line",
+            "source": "carto",
+            "source-layer": "transportation",
+            "minzoom": 11,
+            "maxzoom": 24,
+            "filter": [
+                "all",
+                [
+                    "==",
+                    "class",
+                    "trunk"
+                ],
+                [
+                    "!=",
+                    "ramp",
+                    1
+                ],
+                [
+                    "==",
+                    "brunnel",
+                    "tunnel"
+                ]
+            ],
+            "layout": {
+                "line-cap": "round",
+                "line-join": "round",
+                "visibility": "visible"
+            },
+            "paint": {
+                "line-width": {
+                    "stops": [
+                        [
+                            11,
+                            1
+                        ],
+                        [
+                            13,
+                            2
+                        ],
+                        [
+                            14,
+                            4
+                        ],
+                        [
+                            15,
+                            6
+                        ],
+                        [
+                            16,
+                            8
+                        ],
+                        [
+                            17,
+                            12
+                        ],
+                        [
+                            18,
+                            16
+                        ]
+                    ]
+                },
+                "line-opacity": 1,
+                "line-color": "#f0eee7"
+            }
+        },
+        {
+            "id": "tunnel_mot_fill",
+            "type": "line",
+            "source": "carto",
+            "source-layer": "transportation",
+            "minzoom": 10,
+            "maxzoom": 24,
+            "filter": [
+                "all",
+                [
+                    "==",
+                    "class",
+                    "motorway"
+                ],
+                [
+                    "!=",
+                    "ramp",
+                    1
+                ],
+                [
+                    "==",
+                    "brunnel",
+                    "tunnel"
+                ]
+            ],
+            "layout": {
+                "line-cap": "butt",
+                "line-join": "round"
+            },
+            "paint": {
+                "line-width": {
+                    "stops": [
+                        [
+                            10,
+                            1
+                        ],
+                        [
+                            12,
+                            2
+                        ],
+                        [
+                            13,
+                            3
+                        ],
+                        [
+                            14,
+                            5
+                        ],
+                        [
+                            15,
+                            7
+                        ],
+                        [
+                            16,
+                            9
+                        ],
+                        [
+                            17,
+                            11
+                        ],
+                        [
+                            18,
+                            20
+                        ]
+                    ]
+                },
+                "line-opacity": 1,
+                "line-color": "#f0eee7"
+            }
+        },
+        {
+            "id": "tunnel_rail",
+            "type": "line",
+            "source": "carto",
+            "source-layer": "transportation",
+            "minzoom": 13,
+            "filter": [
+                "all",
+                [
+                    "==",
+                    "class",
+                    "rail"
+                ],
+                [
+                    "==",
+                    "brunnel",
+                    "tunnel"
+                ]
+            ],
+            "layout": {
+                "visibility": "visible",
+                "line-join": "round"
+            },
+            "paint": {
+                "line-color": "#dddddd",
+                "line-width": {
+                    "base": 1.3,
+                    "stops": [
+                        [
+                            13,
+                            0.5
+                        ],
+                        [
+                            14,
+                            1
+                        ],
+                        [
+                            15,
+                            1
+                        ],
+                        [
+                            16,
+                            3
+                        ],
+                        [
+                            21,
+                            7
+                        ]
+                    ]
+                },
+                "line-opacity": 0.5
+            }
+        },
+        {
+            "id": "tunnel_rail_dash",
+            "type": "line",
+            "source": "carto",
+            "source-layer": "transportation",
+            "minzoom": 15,
+            "filter": [
+                "all",
+                [
+                    "==",
+                    "class",
+                    "rail"
+                ],
+                [
+                    "==",
+                    "brunnel",
+                    "tunnel"
+                ]
+            ],
+            "layout": {
+                "visibility": "visible",
+                "line-join": "round"
+            },
+            "paint": {
+                "line-color": "#ffffff",
+                "line-width": {
+                    "base": 1.3,
+                    "stops": [
+                        [
+                            15,
+                            0.5
+                        ],
+                        [
+                            16,
+                            1
+                        ],
+                        [
+                            20,
+                            5
+                        ]
+                    ]
+                },
+                "line-dasharray": {
+                    "stops": [
+                        [
+                            15,
+                            [
+                                5,
+                                5
+                            ]
+                        ],
+                        [
+                            16,
+                            [
+                                6,
+                                6
+                            ]
+                        ]
+                    ]
+                },
+                "line-opacity": 0.5
+            }
+        },
+        {
+            "id": "road_service_case",
+            "type": "line",
+            "source": "carto",
+            "source-layer": "transportation",
+            "minzoom": 15,
+            "maxzoom": 24,
+            "filter": [
+                "all",
+                [
+                    "==",
+                    "class",
+                    "service"
+                ],
+                [
+                    "!has",
+                    "brunnel"
+                ]
+            ],
+            "layout": {
+                "line-cap": "round",
+                "line-join": "round"
+            },
+            "paint": {
+                "line-width": {
+                    "stops": [
+                        [
+                            15,
+                            1
+                        ],
+                        [
+                            16,
+                            3
+                        ],
+                        [
+                            17,
+                            6
+                        ],
+                        [
+                            18,
+                            8
+                        ]
+                    ]
+                },
+                "line-opacity": 1,
+                "line-color": "#fdebce"
+            }
+        },
+        {
+            "id": "road_minor_case",
+            "type": "line",
+            "source": "carto",
+            "source-layer": "transportation",
+            "minzoom": 13,
+            "maxzoom": 24,
+            "filter": [
+                "all",
+                [
+                    "==",
+                    "class",
+                    "minor"
+                ],
+                [
+                    "!has",
+                    "brunnel"
+                ]
+            ],
+            "layout": {
+                "line-cap": "round",
+                "line-join": "round"
+            },
+            "paint": {
+                "line-width": {
+                    "stops": [
+                        [
+                            11,
+                            0.5
+                        ],
+                        [
+                            12,
+                            0.5
+                        ],
+                        [
+                            14,
+                            2
+                        ],
+                        [
+                            15,
+                            3
+                        ],
+                        [
+                            16,
+                            4.3
+                        ],
+                        [
+                            17,
+                            10
+                        ],
+                        [
+                            18,
+                            14
+                        ]
+                    ]
+                },
+                "line-opacity": 1,
+                "line-color": {
+                    "stops": [
+                        [
+                            13,
+                            "#ffffff"
+                        ],
+                        [
+                            15.7,
+                            "#ffffff"
+                        ],
+                        [
+                            16,
+                            "#fdebce"
+                        ]
+                    ]
+                }
+            }
+        },
+        {
+            "id": "road_pri_case_ramp",
+            "type": "line",
+            "source": "carto",
+            "source-layer": "transportation",
+            "minzoom": 12,
+            "maxzoom": 24,
+            "filter": [
+                "all",
+                [
+                    "==",
+                    "class",
+                    "primary"
+                ],
+                [
+                    "==",
+                    "ramp",
+                    1
+                ]
+            ],
+            "layout": {
+                "line-cap": "round",
+                "line-join": "round"
+            },
+            "paint": {
+                "line-width": {
+                    "stops": [
+                        [
+                            12,
+                            2
+                        ],
+                        [
+                            13,
+                            3
+                        ],
+                        [
+                            14,
+                            4
+                        ],
+                        [
+                            15,
+                            5
+                        ],
+                        [
+                            16,
+                            8
+                        ],
+                        [
+                            17,
+                            10
+                        ]
+                    ]
+                },
+                "line-opacity": {
+                    "stops": [
+                        [
+                            5,
+                            0.5
+                        ],
+                        [
+                            7,
+                            1
+                        ]
+                    ]
+                },
+                "line-color": "#ffeabb"
+            }
+        },
+        {
+            "id": "road_trunk_case_ramp",
+            "type": "line",
+            "source": "carto",
+            "source-layer": "transportation",
+            "minzoom": 12,
+            "maxzoom": 24,
+            "filter": [
+                "all",
+                [
+                    "==",
+                    "class",
+                    "trunk"
+                ],
+                [
+                    "==",
+                    "ramp",
+                    1
+                ]
+            ],
+            "layout": {
+                "line-cap": "round",
+                "line-join": "round"
+            },
+            "paint": {
+                "line-width": {
+                    "stops": [
+                        [
+                            12,
+                            2
+                        ],
+                        [
+                            13,
+                            3
+                        ],
+                        [
+                            14,
+                            4
+                        ],
+                        [
+                            15,
+                            5
+                        ],
+                        [
+                            16,
+                            8
+                        ],
+                        [
+                            17,
+                            10
+                        ]
+                    ]
+                },
+                "line-opacity": 1,
+                "line-color": {
+                    "stops": [
+                        [
+                            12,
+                            "#fbdb98"
+                        ],
+                        [
+                            14,
+                            "#fbdb98"
+                        ]
+                    ]
+                }
+            }
+        },
+        {
+            "id": "road_mot_case_ramp",
+            "type": "line",
+            "source": "carto",
+            "source-layer": "transportation",
+            "minzoom": 12,
+            "maxzoom": 24,
+            "filter": [
+                "all",
+                [
+                    "==",
+                    "class",
+                    "motorway"
+                ],
+                [
+                    "==",
+                    "ramp",
+                    1
+                ]
+            ],
+            "layout": {
+                "line-cap": "round",
+                "line-join": "round"
+            },
+            "paint": {
+                "line-width": {
+                    "stops": [
+                        [
+                            12,
+                            2
+                        ],
+                        [
+                            13,
+                            3
+                        ],
+                        [
+                            14,
+                            4
+                        ],
+                        [
+                            15,
+                            5
+                        ],
+                        [
+                            16,
+                            8
+                        ],
+                        [
+                            17,
+                            10
+                        ]
+                    ]
+                },
+                "line-opacity": 1,
+                "line-color": {
+                    "stops": [
+                        [
+                            12,
+                            "#fbdb98"
+                        ],
+                        [
+                            14,
+                            "#fbdb98"
+                        ]
+                    ]
+                }
+            }
+        },
+        {
+            "id": "road_sec_case_noramp",
+            "type": "line",
+            "source": "carto",
+            "source-layer": "transportation",
+            "minzoom": 11,
+            "maxzoom": 24,
+            "filter": [
+                "all",
+                [
+                    "in",
+                    "class",
+                    "secondary",
+                    "tertiary"
+                ],
+                [
+                    "!has",
+                    "brunnel"
+                ]
+            ],
+            "layout": {
+                "line-cap": "round",
+                "line-join": "round"
+            },
+            "paint": {
+                "line-width": {
+                    "stops": [
+                        [
+                            11,
+                            0.5
+                        ],
+                        [
+                            12,
+                            1.5
+                        ],
+                        [
+                            13,
+                            3
+                        ],
+                        [
+                            14,
+                            5
+                        ],
+                        [
+                            15,
+                            6
+                        ],
+                        [
+                            16,
+                            8
+                        ],
+                        [
+                            17,
+                            12
+                        ],
+                        [
+                            18,
+                            16
+                        ]
+                    ]
+                },
+                "line-opacity": 1,
+                "line-color": {
+                    "stops": [
+                        [
+                            11,
+                            "#fffef9"
+                        ],
+                        [
+                            12.99,
+                            "#fffef9"
+                        ],
+                        [
+                            13,
+                            "#ffedc0"
+                        ]
+                    ]
+                }
+            }
+        },
+        {
+            "id": "road_pri_case_noramp",
+            "type": "line",
+            "source": "carto",
+            "source-layer": "transportation",
+            "minzoom": 7,
+            "maxzoom": 24,
+            "filter": [
+                "all",
+                [
+                    "==",
+                    "class",
+                    "primary"
+                ],
+                [
+                    "!=",
+                    "ramp",
+                    1
+                ],
+                [
+                    "!has",
+                    "brunnel"
+                ]
+            ],
+            "layout": {
+                "line-cap": "round",
+                "line-join": "round"
+            },
+            "paint": {
+                "line-width": {
+                    "stops": [
+                        [
+                            6,
+                            0.5
+                        ],
+                        [
+                            7,
+                            0.8
+                        ],
+                        [
+                            8,
+                            1
+                        ],
+                        [
+                            11,
+                            3
+                        ],
+                        [
+                            13,
+                            4
+                        ],
+                        [
+                            14,
+                            6
+                        ],
+                        [
+                            15,
+                            8
+                        ],
+                        [
+                            16,
+                            10
+                        ],
+                        [
+                            17,
+                            14
+                        ],
+                        [
+                            18,
+                            18
+                        ]
+                    ]
+                },
+                "line-opacity": {
+                    "stops": [
+                        [
+                            5,
+                            0.5
+                        ],
+                        [
+                            7,
+                            1
+                        ]
+                    ]
+                },
+                "line-color": {
+                    "stops": [
+                        [
+                            7,
+                            "#ffe7b7"
+                        ],
+                        [
+                            12,
+                            "#ffeabb"
+                        ]
+                    ]
+                }
+            }
+        },
+        {
+            "id": "road_trunk_case_noramp",
+            "type": "line",
+            "source": "carto",
+            "source-layer": "transportation",
+            "minzoom": 5,
+            "maxzoom": 24,
+            "filter": [
+                "all",
+                [
+                    "==",
+                    "class",
+                    "trunk"
+                ],
+                [
+                    "!=",
+                    "ramp",
+                    1
+                ],
+                [
+                    "!has",
+                    "brunnel"
+                ]
+            ],
+            "layout": {
+                "line-cap": "round",
+                "line-join": "round"
+            },
+            "paint": {
+                "line-width": {
+                    "stops": [
+                        [
+                            6,
+                            0.5
+                        ],
+                        [
+                            7,
+                            0.8
+                        ],
+                        [
+                            8,
+                            1
+                        ],
+                        [
+                            11,
+                            3
+                        ],
+                        [
+                            13,
+                            4
+                        ],
+                        [
+                            14,
+                            6
+                        ],
+                        [
+                            15,
+                            8
+                        ],
+                        [
+                            16,
+                            10
+                        ],
+                        [
+                            17,
+                            14
+                        ],
+                        [
+                            18,
+                            18
+                        ]
+                    ]
+                },
+                "line-opacity": {
+                    "stops": [
+                        [
+                            5,
+                            0.5
+                        ],
+                        [
+                            7,
+                            1
+                        ]
+                    ]
+                },
+                "line-color": {
+                    "stops": [
+                        [
+                            5,
+                            "#ffe7b7"
+                        ],
+                        [
+                            12,
+                            "#fbdb98"
+                        ]
+                    ]
+                }
+            }
+        },
+        {
+            "id": "road_mot_case_noramp",
+            "type": "line",
+            "source": "carto",
+            "source-layer": "transportation",
+            "minzoom": 5,
+            "maxzoom": 24,
+            "filter": [
+                "all",
+                [
+                    "==",
+                    "class",
+                    "motorway"
+                ],
+                [
+                    "!=",
+                    "ramp",
+                    1
+                ],
+                [
+                    "!has",
+                    "brunnel"
+                ]
+            ],
+            "layout": {
+                "line-cap": "round",
+                "line-join": "round"
+            },
+            "paint": {
+                "line-width": {
+                    "stops": [
+                        [
+                            6,
+                            0.5
+                        ],
+                        [
+                            7,
+                            0.7
+                        ],
+                        [
+                            8,
+                            0.8
+                        ],
+                        [
+                            11,
+                            3
+                        ],
+                        [
+                            12,
+                            4
+                        ],
+                        [
+                            13,
+                            5
+                        ],
+                        [
+                            14,
+                            7
+                        ],
+                        [
+                            15,
+                            9
+                        ],
+                        [
+                            16,
+                            11
+                        ],
+                        [
+                            17,
+                            13
+                        ],
+                        [
+                            18,
+                            22
+                        ]
+                    ]
+                },
+                "line-opacity": {
+                    "stops": [
+                        [
+                            6,
+                            0.5
+                        ],
+                        [
+                            7,
+                            1
+                        ]
+                    ]
+                },
+                "line-color": {
+                    "stops": [
+                        [
+                            5,
+                            "#fbdb98"
+                        ],
+                        [
+                            12,
+                            "#fbdb98"
+                        ]
+                    ]
+                }
+            }
+        },
+        {
+            "id": "road_path",
+            "type": "line",
+            "source": "carto",
+            "source-layer": "transportation",
+            "minzoom": 15,
+            "maxzoom": 24,
+            "filter": [
+                "all",
+                [
+                    "in",
+                    "class",
+                    "path",
+                    "track"
+                ],
+                [
+                    "!has",
+                    "brunnel"
+                ]
+            ],
+            "layout": {
+                "line-cap": "round",
+                "line-join": "round"
+            },
+            "paint": {
+                "line-width": {
+                    "stops": [
+                        [
+                            15,
+                            0.5
+                        ],
+                        [
+                            16,
+                            1
+                        ],
+                        [
+                            18,
+                            3
+                        ]
+                    ]
+                },
+                "line-opacity": 1,
+                "line-color": "#d7d7d7",
+                "line-dasharray": {
+                    "stops": [
+                        [
+                            15,
+                            [
+                                2,
+                                2
+                            ]
+                        ],
+                        [
+                            18,
+                            [
+                                3,
+                                3
+                            ]
+                        ]
+                    ]
+                }
+            }
+        },
+        {
+            "id": "road_service_fill",
+            "type": "line",
+            "source": "carto",
+            "source-layer": "transportation",
+            "minzoom": 15,
+            "maxzoom": 24,
+            "filter": [
+                "all",
+                [
+                    "==",
+                    "class",
+                    "service"
+                ],
+                [
+                    "!has",
+                    "brunnel"
+                ]
+            ],
+            "layout": {
+                "line-cap": "round",
+                "line-join": "round"
+            },
+            "paint": {
+                "line-width": {
+                    "stops": [
+                        [
+                            15,
+                            2
+                        ],
+                        [
+                            16,
+                            2
+                        ],
+                        [
+                            17,
+                            4
+                        ],
+                        [
+                            18,
+                            6
+                        ]
+                    ]
+                },
+                "line-opacity": 1,
+                "line-color": "#ffffff"
+            }
+        },
+        {
+            "id": "road_minor_fill",
+            "type": "line",
+            "source": "carto",
+            "source-layer": "transportation",
+            "minzoom": 15,
+            "maxzoom": 24,
+            "filter": [
+                "all",
+                [
+                    "==",
+                    "class",
+                    "minor"
+                ],
+                [
+                    "!has",
+                    "brunnel"
+                ]
+            ],
+            "layout": {
+                "line-cap": "round",
+                "line-join": "round"
+            },
+            "paint": {
+                "line-width": {
+                    "stops": [
+                        [
+                            15,
+                            3
+                        ],
+                        [
+                            16,
+                            4
+                        ],
+                        [
+                            17,
+                            8
+                        ],
+                        [
+                            18,
+                            12
+                        ]
+                    ]
+                },
+                "line-opacity": 1,
+                "line-color": "#ffffff"
+            }
+        },
+        {
+            "id": "road_pri_fill_ramp",
+            "type": "line",
+            "source": "carto",
+            "source-layer": "transportation",
+            "minzoom": 12,
+            "maxzoom": 24,
+            "filter": [
+                "all",
+                [
+                    "==",
+                    "class",
+                    "primary"
+                ],
+                [
+                    "==",
+                    "ramp",
+                    1
+                ]
+            ],
+            "layout": {
+                "line-cap": "round",
+                "line-join": "round"
+            },
+            "paint": {
+                "line-width": {
+                    "stops": [
+                        [
+                            12,
+                            1
+                        ],
+                        [
+                            13,
+                            1.5
+                        ],
+                        [
+                            14,
+                            2
+                        ],
+                        [
+                            15,
+                            3
+                        ],
+                        [
+                            16,
+                            6
+                        ],
+                        [
+                            17,
+                            8
+                        ]
+                    ]
+                },
+                "line-opacity": 1,
+                "line-color": "#fefdd7"
+            }
+        },
+        {
+            "id": "road_trunk_fill_ramp",
+            "type": "line",
+            "source": "carto",
+            "source-layer": "transportation",
+            "minzoom": 12,
+            "maxzoom": 24,
+            "filter": [
+                "all",
+                [
+                    "==",
+                    "class",
+                    "trunk"
+                ],
+                [
+                    "==",
+                    "ramp",
+                    1
+                ]
+            ],
+            "layout": {
+                "line-cap": "square",
+                "line-join": "round"
+            },
+            "paint": {
+                "line-width": {
+                    "stops": [
+                        [
+                            12,
+                            1
+                        ],
+                        [
+                            13,
+                            1.5
+                        ],
+                        [
+                            14,
+                            2
+                        ],
+                        [
+                            15,
+                            3
+                        ],
+                        [
+                            16,
+                            6
+                        ],
+                        [
+                            17,
+                            8
+                        ]
+                    ]
+                },
+                "line-opacity": 1,
+                "line-color": "#FFE9A5"
+            }
+        },
+        {
+            "id": "road_mot_fill_ramp",
+            "type": "line",
+            "source": "carto",
+            "source-layer": "transportation",
+            "minzoom": 12,
+            "maxzoom": 24,
+            "filter": [
+                "all",
+                [
+                    "==",
+                    "class",
+                    "motorway"
+                ],
+                [
+                    "==",
+                    "ramp",
+                    1
+                ]
+            ],
+            "layout": {
+                "line-cap": "round",
+                "line-join": "round"
+            },
+            "paint": {
+                "line-width": {
+                    "stops": [
+                        [
+                            12,
+                            1
+                        ],
+                        [
+                            13,
+                            1.5
+                        ],
+                        [
+                            14,
+                            2
+                        ],
+                        [
+                            15,
+                            3
+                        ],
+                        [
+                            16,
+                            6
+                        ],
+                        [
+                            17,
+                            8
+                        ]
+                    ]
+                },
+                "line-opacity": 1,
+                "line-color": "#FFE9A5"
+            }
+        },
+        {
+            "id": "road_sec_fill_noramp",
+            "type": "line",
+            "source": "carto",
+            "source-layer": "transportation",
+            "minzoom": 13,
+            "maxzoom": 24,
+            "filter": [
+                "all",
+                [
+                    "in",
+                    "class",
+                    "secondary",
+                    "tertiary"
+                ],
+                [
+                    "!has",
+                    "brunnel"
+                ]
+            ],
+            "layout": {
+                "line-cap": "round",
+                "line-join": "round"
+            },
+            "paint": {
+                "line-width": {
+                    "stops": [
+                        [
+                            11,
+                            2
+                        ],
+                        [
+                            13,
+                            2
+                        ],
+                        [
+                            14,
+                            3
+                        ],
+                        [
+                            15,
+                            4
+                        ],
+                        [
+                            16,
+                            6
+                        ],
+                        [
+                            17,
+                            10
+                        ],
+                        [
+                            18,
+                            14
+                        ]
+                    ]
+                },
+                "line-opacity": 1,
+                "line-color": "#fefdd7"
+            }
+        },
+        {
+            "id": "road_pri_fill_noramp",
+            "type": "line",
+            "source": "carto",
+            "source-layer": "transportation",
+            "minzoom": 10,
+            "maxzoom": 24,
+            "filter": [
+                "all",
+                [
+                    "==",
+                    "class",
+                    "primary"
+                ],
+                [
+                    "!=",
+                    "ramp",
+                    1
+                ],
+                [
+                    "!has",
+                    "brunnel"
+                ]
+            ],
+            "layout": {
+                "line-cap": "round",
+                "line-join": "round"
+            },
+            "paint": {
+                "line-width": {
+                    "stops": [
+                        [
+                            10,
+                            0.3
+                        ],
+                        [
+                            13,
+                            2
+                        ],
+                        [
+                            14,
+                            4
+                        ],
+                        [
+                            15,
+                            6
+                        ],
+                        [
+                            16,
+                            8
+                        ],
+                        [
+                            17,
+                            12
+                        ],
+                        [
+                            18,
+                            16
+                        ]
+                    ]
+                },
+                "line-opacity": 1,
+                "line-color": "#fefdd7"
+            }
+        },
+        {
+            "id": "road_trunk_fill_noramp",
+            "type": "line",
+            "source": "carto",
+            "source-layer": "transportation",
+            "minzoom": 10,
+            "maxzoom": 24,
+            "filter": [
+                "all",
+                [
+                    "==",
+                    "class",
+                    "trunk"
+                ],
+                [
+                    "!=",
+                    "ramp",
+                    1
+                ],
+                [
+                    "!has",
+                    "brunnel"
+                ]
+            ],
+            "layout": {
+                "line-cap": "round",
+                "line-join": "round"
+            },
+            "paint": {
+                "line-width": {
+                    "stops": [
+                        [
+                            11,
+                            1
+                        ],
+                        [
+                            13,
+                            2
+                        ],
+                        [
+                            14,
+                            4
+                        ],
+                        [
+                            15,
+                            6
+                        ],
+                        [
+                            16,
+                            8
+                        ],
+                        [
+                            17,
+                            12
+                        ],
+                        [
+                            18,
+                            16
+                        ]
+                    ]
+                },
+                "line-opacity": 1,
+                "line-color": "#FFE9A5"
+            }
+        },
+        {
+            "id": "road_mot_fill_noramp",
+            "type": "line",
+            "source": "carto",
+            "source-layer": "transportation",
+            "minzoom": 10,
+            "maxzoom": 24,
+            "filter": [
+                "all",
+                [
+                    "==",
+                    "class",
+                    "motorway"
+                ],
+                [
+                    "!=",
+                    "ramp",
+                    1
+                ],
+                [
+                    "!has",
+                    "brunnel"
+                ]
+            ],
+            "layout": {
+                "line-cap": "round",
+                "line-join": "round"
+            },
+            "paint": {
+                "line-width": {
+                    "stops": [
+                        [
+                            10,
+                            1
+                        ],
+                        [
+                            12,
+                            2
+                        ],
+                        [
+                            13,
+                            3
+                        ],
+                        [
+                            14,
+                            5
+                        ],
+                        [
+                            15,
+                            7
+                        ],
+                        [
+                            16,
+                            9
+                        ],
+                        [
+                            17,
+                            11
+                        ],
+                        [
+                            18,
+                            20
+                        ]
+                    ]
+                },
+                "line-opacity": 1,
+                "line-color": "#FFE9A5"
+            }
+        },
+        {
+            "id": "rail",
+            "type": "line",
+            "source": "carto",
+            "source-layer": "transportation",
+            "minzoom": 13,
+            "filter": [
+                "all",
+                [
+                    "==",
+                    "class",
+                    "rail"
+                ],
+                [
+                    "!=",
+                    "brunnel",
+                    "tunnel"
+                ]
+            ],
+            "layout": {
+                "visibility": "visible",
+                "line-join": "round"
+            },
+            "paint": {
+                "line-color": "#dddddd",
+                "line-width": {
+                    "base": 1.3,
+                    "stops": [
+                        [
+                            13,
+                            0.5
+                        ],
+                        [
+                            14,
+                            1
+                        ],
+                        [
+                            15,
+                            1
+                        ],
+                        [
+                            16,
+                            3
+                        ],
+                        [
+                            21,
+                            7
+                        ]
+                    ]
+                }
+            }
+        },
+        {
+            "id": "rail_dash",
+            "type": "line",
+            "source": "carto",
+            "source-layer": "transportation",
+            "minzoom": 15,
+            "filter": [
+                "all",
+                [
+                    "==",
+                    "class",
+                    "rail"
+                ],
+                [
+                    "!=",
+                    "brunnel",
+                    "tunnel"
+                ]
+            ],
+            "layout": {
+                "visibility": "visible",
+                "line-join": "round"
+            },
+            "paint": {
+                "line-color": "#ffffff",
+                "line-width": {
+                    "base": 1.3,
+                    "stops": [
+                        [
+                            15,
+                            0.5
+                        ],
+                        [
+                            16,
+                            1
+                        ],
+                        [
+                            20,
+                            5
+                        ]
+                    ]
+                },
+                "line-dasharray": {
+                    "stops": [
+                        [
+                            15,
+                            [
+                                5,
+                                5
+                            ]
+                        ],
+                        [
+                            16,
+                            [
+                                6,
+                                6
+                            ]
+                        ]
+                    ]
+                }
+            }
+        },
+        {
+            "id": "bridge_service_case",
+            "type": "line",
+            "source": "carto",
+            "source-layer": "transportation",
+            "minzoom": 15,
+            "maxzoom": 24,
+            "filter": [
+                "all",
+                [
+                    "==",
+                    "class",
+                    "service"
+                ],
+                [
+                    "==",
+                    "brunnel",
+                    "bridge"
+                ]
+            ],
+            "layout": {
+                "line-cap": "butt",
+                "line-join": "round"
+            },
+            "paint": {
+                "line-width": {
+                    "stops": [
+                        [
+                            15,
+                            1
+                        ],
+                        [
+                            16,
+                            3
+                        ],
+                        [
+                            17,
+                            6
+                        ],
+                        [
+                            18,
+                            8
+                        ]
+                    ]
+                },
+                "line-opacity": 1,
+                "line-color": "#fdebce"
+            }
+        },
+        {
+            "id": "bridge_minor_case",
+            "type": "line",
+            "source": "carto",
+            "source-layer": "transportation",
+            "minzoom": 13,
+            "maxzoom": 24,
+            "filter": [
+                "all",
+                [
+                    "==",
+                    "class",
+                    "minor"
+                ],
+                [
+                    "==",
+                    "brunnel",
+                    "bridge"
+                ]
+            ],
+            "layout": {
+                "line-cap": "butt",
+                "line-join": "miter"
+            },
+            "paint": {
+                "line-width": {
+                    "stops": [
+                        [
+                            11,
+                            0.5
+                        ],
+                        [
+                            12,
+                            0.5
+                        ],
+                        [
+                            14,
+                            2
+                        ],
+                        [
+                            15,
+                            3
+                        ],
+                        [
+                            16,
+                            4.3
+                        ],
+                        [
+                            17,
+                            10
+                        ],
+                        [
+                            18,
+                            14
+                        ]
+                    ]
+                },
+                "line-opacity": 1,
+                "line-color": {
+                    "stops": [
+                        [
+                            13,
+                            "#ffffff"
+                        ],
+                        [
+                            15.7,
+                            "#ffffff"
+                        ],
+                        [
+                            16,
+                            "#fdebce"
+                        ]
+                    ]
+                }
+            }
+        },
+        {
+            "id": "bridge_sec_case",
+            "type": "line",
+            "source": "carto",
+            "source-layer": "transportation",
+            "minzoom": 11,
+            "maxzoom": 24,
+            "filter": [
+                "all",
+                [
+                    "in",
+                    "class",
+                    "secondary",
+                    "tertiary"
+                ],
+                [
+                    "==",
+                    "brunnel",
+                    "bridge"
+                ]
+            ],
+            "layout": {
+                "line-cap": "butt",
+                "line-join": "miter"
+            },
+            "paint": {
+                "line-width": {
+                    "stops": [
+                        [
+                            11,
+                            0.5
+                        ],
+                        [
+                            12,
+                            1.5
+                        ],
+                        [
+                            13,
+                            3
+                        ],
+                        [
+                            14,
+                            5
+                        ],
+                        [
+                            15,
+                            6
+                        ],
+                        [
+                            16,
+                            8
+                        ],
+                        [
+                            17,
+                            12
+                        ],
+                        [
+                            18,
+                            16
+                        ]
+                    ]
+                },
+                "line-opacity": 1,
+                "line-color": {
+                    "stops": [
+                        [
+                            11,
+                            "#fffef9"
+                        ],
+                        [
+                            12.99,
+                            "#fffef9"
+                        ],
+                        [
+                            13,
+                            "#ffedc0"
+                        ]
+                    ]
+                }
+            }
+        },
+        {
+            "id": "bridge_pri_case",
+            "type": "line",
+            "source": "carto",
+            "source-layer": "transportation",
+            "minzoom": 8,
+            "maxzoom": 24,
+            "filter": [
+                "all",
+                [
+                    "==",
+                    "class",
+                    "primary"
+                ],
+                [
+                    "!=",
+                    "ramp",
+                    1
+                ],
+                [
+                    "==",
+                    "brunnel",
+                    "bridge"
+                ]
+            ],
+            "layout": {
+                "line-cap": "butt",
+                "line-join": "round"
+            },
+            "paint": {
+                "line-width": {
+                    "stops": [
+                        [
+                            6,
+                            0.5
+                        ],
+                        [
+                            7,
+                            0.8
+                        ],
+                        [
+                            8,
+                            1
+                        ],
+                        [
+                            11,
+                            3
+                        ],
+                        [
+                            13,
+                            4
+                        ],
+                        [
+                            14,
+                            6
+                        ],
+                        [
+                            15,
+                            8
+                        ],
+                        [
+                            16,
+                            10
+                        ],
+                        [
+                            17,
+                            14
+                        ],
+                        [
+                            18,
+                            18
+                        ]
+                    ]
+                },
+                "line-opacity": {
+                    "stops": [
+                        [
+                            5,
+                            0.5
+                        ],
+                        [
+                            7,
+                            1
+                        ]
+                    ]
+                },
+                "line-color": {
+                    "stops": [
+                        [
+                            8,
+                            "#ffe7b7"
+                        ],
+                        [
+                            12,
+                            "#ffeabb"
+                        ]
+                    ]
+                }
+            }
+        },
+        {
+            "id": "bridge_trunk_case",
+            "type": "line",
+            "source": "carto",
+            "source-layer": "transportation",
+            "minzoom": 5,
+            "maxzoom": 24,
+            "filter": [
+                "all",
+                [
+                    "==",
+                    "class",
+                    "trunk"
+                ],
+                [
+                    "!=",
+                    "ramp",
+                    1
+                ],
+                [
+                    "==",
+                    "brunnel",
+                    "bridge"
+                ]
+            ],
+            "layout": {
+                "line-cap": "butt",
+                "line-join": "round",
+                "visibility": "visible"
+            },
+            "paint": {
+                "line-width": {
+                    "stops": [
+                        [
+                            6,
+                            0.5
+                        ],
+                        [
+                            7,
+                            0.8
+                        ],
+                        [
+                            8,
+                            1
+                        ],
+                        [
+                            11,
+                            3
+                        ],
+                        [
+                            13,
+                            4
+                        ],
+                        [
+                            14,
+                            6
+                        ],
+                        [
+                            15,
+                            8
+                        ],
+                        [
+                            16,
+                            10
+                        ],
+                        [
+                            17,
+                            14
+                        ],
+                        [
+                            18,
+                            18
+                        ]
+                    ]
+                },
+                "line-opacity": {
+                    "stops": [
+                        [
+                            5,
+                            0.5
+                        ],
+                        [
+                            7,
+                            1
+                        ]
+                    ]
+                },
+                "line-color": {
+                    "stops": [
+                        [
+                            5,
+                            "#fbdb98"
+                        ],
+                        [
+                            12,
+                            "#fbdb98"
+                        ]
+                    ]
+                }
+            }
+        },
+        {
+            "id": "bridge_mot_case",
+            "type": "line",
+            "source": "carto",
+            "source-layer": "transportation",
+            "minzoom": 5,
+            "maxzoom": 24,
+            "filter": [
+                "all",
+                [
+                    "==",
+                    "class",
+                    "motorway"
+                ],
+                [
+                    "!=",
+                    "ramp",
+                    1
+                ],
+                [
+                    "==",
+                    "brunnel",
+                    "bridge"
+                ]
+            ],
+            "layout": {
+                "line-cap": "butt",
+                "line-join": "round"
+            },
+            "paint": {
+                "line-width": {
+                    "stops": [
+                        [
+                            6,
+                            0.5
+                        ],
+                        [
+                            7,
+                            0.8
+                        ],
+                        [
+                            8,
+                            1
+                        ],
+                        [
+                            11,
+                            3
+                        ],
+                        [
+                            12,
+                            4
+                        ],
+                        [
+                            13,
+                            5
+                        ],
+                        [
+                            14,
+                            7
+                        ],
+                        [
+                            15,
+                            9
+                        ],
+                        [
+                            16,
+                            11
+                        ],
+                        [
+                            17,
+                            13
+                        ],
+                        [
+                            18,
+                            22
+                        ]
+                    ]
+                },
+                "line-opacity": {
+                    "stops": [
+                        [
+                            6,
+                            0.5
+                        ],
+                        [
+                            7,
+                            1
+                        ]
+                    ]
+                },
+                "line-color": {
+                    "stops": [
+                        [
+                            5,
+                            "#fbdb98"
+                        ],
+                        [
+                            10,
+                            "#fbdb98"
+                        ]
+                    ]
+                }
+            }
+        },
+        {
+            "id": "bridge_path",
+            "type": "line",
+            "source": "carto",
+            "source-layer": "transportation",
+            "minzoom": 15,
+            "maxzoom": 24,
+            "filter": [
+                "all",
+                [
+                    "==",
+                    "class",
+                    "path"
+                ],
+                [
+                    "==",
+                    "brunnel",
+                    "bridge"
+                ]
+            ],
+            "layout": {
+                "line-cap": "round",
+                "line-join": "round"
+            },
+            "paint": {
+                "line-width": {
+                    "stops": [
+                        [
+                            15,
+                            0.5
+                        ],
+                        [
+                            16,
+                            1
+                        ],
+                        [
+                            18,
+                            3
+                        ]
+                    ]
+                },
+                "line-opacity": 1,
+                "line-color": "#d7d7d7",
+                "line-dasharray": {
+                    "stops": [
+                        [
+                            15,
+                            [
+                                2,
+                                2
+                            ]
+                        ],
+                        [
+                            18,
+                            [
+                                3,
+                                3
+                            ]
+                        ]
+                    ]
+                }
+            }
+        },
+        {
+            "id": "bridge_service_fill",
+            "type": "line",
+            "source": "carto",
+            "source-layer": "transportation",
+            "minzoom": 15,
+            "maxzoom": 24,
+            "filter": [
+                "all",
+                [
+                    "==",
+                    "class",
+                    "service"
+                ],
+                [
+                    "==",
+                    "brunnel",
+                    "bridge"
+                ]
+            ],
+            "layout": {
+                "line-cap": "round",
+                "line-join": "round"
+            },
+            "paint": {
+                "line-width": {
+                    "stops": [
+                        [
+                            15,
+                            2
+                        ],
+                        [
+                            16,
+                            2
+                        ],
+                        [
+                            17,
+                            4
+                        ],
+                        [
+                            18,
+                            6
+                        ]
+                    ]
+                },
+                "line-opacity": 1,
+                "line-color": "#ffffff"
+            }
+        },
+        {
+            "id": "bridge_minor_fill",
+            "type": "line",
+            "source": "carto",
+            "source-layer": "transportation",
+            "minzoom": 15,
+            "maxzoom": 24,
+            "filter": [
+                "all",
+                [
+                    "==",
+                    "class",
+                    "minor"
+                ],
+                [
+                    "==",
+                    "brunnel",
+                    "bridge"
+                ]
+            ],
+            "layout": {
+                "line-cap": "butt",
+                "line-join": "round"
+            },
+            "paint": {
+                "line-width": {
+                    "stops": [
+                        [
+                            15,
+                            3
+                        ],
+                        [
+                            16,
+                            4
+                        ],
+                        [
+                            17,
+                            8
+                        ],
+                        [
+                            18,
+                            12
+                        ]
+                    ]
+                },
+                "line-opacity": 1,
+                "line-color": "#ffffff"
+            }
+        },
+        {
+            "id": "bridge_sec_fill",
+            "type": "line",
+            "source": "carto",
+            "source-layer": "transportation",
+            "minzoom": 13,
+            "maxzoom": 24,
+            "filter": [
+                "all",
+                [
+                    "in",
+                    "class",
+                    "secondary",
+                    "tertiary"
+                ],
+                [
+                    "==",
+                    "brunnel",
+                    "bridge"
+                ]
+            ],
+            "layout": {
+                "line-cap": "round",
+                "line-join": "round"
+            },
+            "paint": {
+                "line-width": {
+                    "stops": [
+                        [
+                            11,
+                            2
+                        ],
+                        [
+                            13,
+                            2
+                        ],
+                        [
+                            14,
+                            3
+                        ],
+                        [
+                            15,
+                            4
+                        ],
+                        [
+                            16,
+                            6
+                        ],
+                        [
+                            17,
+                            10
+                        ],
+                        [
+                            18,
+                            14
+                        ]
+                    ]
+                },
+                "line-opacity": 1,
+                "line-color": "#fefdd7"
+            }
+        },
+        {
+            "id": "bridge_pri_fill",
+            "type": "line",
+            "source": "carto",
+            "source-layer": "transportation",
+            "minzoom": 11,
+            "maxzoom": 24,
+            "filter": [
+                "all",
+                [
+                    "==",
+                    "class",
+                    "primary"
+                ],
+                [
+                    "!=",
+                    "ramp",
+                    1
+                ],
+                [
+                    "==",
+                    "brunnel",
+                    "bridge"
+                ]
+            ],
+            "layout": {
+                "line-cap": "butt",
+                "line-join": "round"
+            },
+            "paint": {
+                "line-width": {
+                    "stops": [
+                        [
+                            11,
+                            1
+                        ],
+                        [
+                            13,
+                            2
+                        ],
+                        [
+                            14,
+                            4
+                        ],
+                        [
+                            15,
+                            6
+                        ],
+                        [
+                            16,
+                            8
+                        ],
+                        [
+                            17,
+                            12
+                        ],
+                        [
+                            18,
+                            16
+                        ]
+                    ]
+                },
+                "line-opacity": 1,
+                "line-color": "#fefdd7"
+            }
+        },
+        {
+            "id": "bridge_trunk_fill",
+            "type": "line",
+            "source": "carto",
+            "source-layer": "transportation",
+            "minzoom": 11,
+            "maxzoom": 24,
+            "filter": [
+                "all",
+                [
+                    "==",
+                    "class",
+                    "trunk"
+                ],
+                [
+                    "!=",
+                    "ramp",
+                    1
+                ],
+                [
+                    "==",
+                    "brunnel",
+                    "bridge"
+                ]
+            ],
+            "layout": {
+                "line-cap": "butt",
+                "line-join": "round",
+                "visibility": "visible"
+            },
+            "paint": {
+                "line-width": {
+                    "stops": [
+                        [
+                            11,
+                            1
+                        ],
+                        [
+                            13,
+                            2
+                        ],
+                        [
+                            14,
+                            4
+                        ],
+                        [
+                            15,
+                            6
+                        ],
+                        [
+                            16,
+                            8
+                        ],
+                        [
+                            17,
+                            12
+                        ],
+                        [
+                            18,
+                            16
+                        ]
+                    ]
+                },
+                "line-opacity": 1,
+                "line-color": "#FFE9A5"
+            }
+        },
+        {
+            "id": "bridge_mot_fill",
+            "type": "line",
+            "source": "carto",
+            "source-layer": "transportation",
+            "minzoom": 10,
+            "maxzoom": 24,
+            "filter": [
+                "all",
+                [
+                    "==",
+                    "class",
+                    "motorway"
+                ],
+                [
+                    "!=",
+                    "ramp",
+                    1
+                ],
+                [
+                    "==",
+                    "brunnel",
+                    "bridge"
+                ]
+            ],
+            "layout": {
+                "line-cap": "butt",
+                "line-join": "round"
+            },
+            "paint": {
+                "line-width": {
+                    "stops": [
+                        [
+                            10,
+                            1
+                        ],
+                        [
+                            12,
+                            2
+                        ],
+                        [
+                            13,
+                            3
+                        ],
+                        [
+                            14,
+                            5
+                        ],
+                        [
+                            15,
+                            7
+                        ],
+                        [
+                            16,
+                            9
+                        ],
+                        [
+                            17,
+                            11
+                        ],
+                        [
+                            18,
+                            20
+                        ]
+                    ]
+                },
+                "line-opacity": 1,
+                "line-color": "#FFE9A5"
+            }
+        },
+        {
+            "id": "building",
+            "type": "fill",
+            "source": "carto",
+            "source-layer": "building",
+            "layout": {
+                "visibility": "visible"
+            },
+            "paint": {
+                "fill-color": {
+                    "base": 1,
+                    "stops": [
+                        [
+                            15.5,
+                            "#e4dcd0"
+                        ],
+                        [
+                            16,
+                            "#e4dcd0"
+                        ]
+                    ]
+                },
+                "fill-antialias": true
+            }
+        },
+        {
+            "id": "building-top",
+            "type": "fill",
+            "source": "carto",
+            "source-layer": "building",
+            "layout": {
+                "visibility": "visible"
+            },
+            "paint": {
+                "fill-translate": {
+                    "base": 1,
+                    "stops": [
+                        [
+                            14,
+                            [
+                                0,
+                                0
+                            ]
+                        ],
+                        [
+                            16,
+                            [
+                                -2,
+                                -2
+                            ]
+                        ]
+                    ]
+                },
+                "fill-outline-color": "#e9d8be",
+                "fill-color": "#f3eadc",
+                "fill-opacity": {
+                    "base": 1,
+                    "stops": [
+                        [
+                            13,
+                            0
+                        ],
+                        [
+                            16,
+                            1
+                        ]
+                    ]
+                }
+            }
+        },
+        {
+            "id": "boundary_country_outline",
+            "type": "line",
+            "source": "carto",
+            "source-layer": "boundary",
+            "minzoom": 6,
+            "maxzoom": 24,
+            "filter": [
+                "all",
+                [
+                    "==",
+                    "admin_level",
+                    2
+                ],
+                [
+                    "==",
+                    "maritime",
+                    0
+                ]
+            ],
+            "layout": {
+                "line-cap": "round",
+                "line-join": "round"
+            },
+            "paint": {
+                "line-color": "#f3efed",
+                "line-opacity": 0.5,
+                "line-width": 8,
+                "line-offset": 0
+            }
+        },
+        {
+            "id": "boundary_country_inner",
+            "type": "line",
+            "source": "carto",
+            "source-layer": "boundary",
+            "minzoom": 0,
+            "filter": [
+                "all",
+                [
+                    "==",
+                    "admin_level",
+                    2
+                ],
+                [
+                    "==",
+                    "maritime",
+                    0
+                ]
+            ],
+            "layout": {
+                "line-cap": "round",
+                "line-join": "round"
+            },
+            "paint": {
+                "line-color": {
+                    "stops": [
+                        [
+                            4,
+                            "#ead5d7"
+                        ],
+                        [
+                            5,
+                            "#ebd6d8"
+                        ],
+                        [
+                            6,
+                            "#ebd6d8"
+                        ]
+                    ]
+                },
+                "line-opacity": 1,
+                "line-width": {
+                    "stops": [
+                        [
+                            3,
+                            1
+                        ],
+                        [
+                            6,
+                            1.5
+                        ]
+                    ]
+                },
+                "line-offset": 0
+            }
+        },
+        {
+            "id": "watername_ocean",
+            "type": "symbol",
+            "source": "carto",
+            "source-layer": "water_name",
+            "minzoom": 0,
+            "maxzoom": 5,
+            "filter": [
+                "all",
+                [
+                    "has",
+                    "name"
+                ],
+                [
+                    "==",
+                    "$type",
+                    "Point"
+                ],
+                [
+                    "==",
+                    "class",
+                    "ocean"
+                ]
+            ],
+            "layout": {
+                "text-field": "{name}",
+                "symbol-placement": "point",
+                "text-size": {
+                    "stops": [
+                        [
+                            0,
+                            13
+                        ],
+                        [
+                            2,
+                            14
+                        ],
+                        [
+                            4,
+                            18
+                        ]
+                    ]
+                },
+                "text-font": [
+                    "Montserrat Medium Italic",
+                    "Open Sans Italic",
+                    "Noto Sans Regular",
+                    "HanWangHeiLight Regular",
+                    "NanumBarunGothic Regular"
+                ],
+                "text-line-height": 1.2,
+                "text-padding": 2,
+                "text-allow-overlap": false,
+                "text-ignore-placement": false,
+                "text-pitch-alignment": "auto",
+                "text-rotation-alignment": "auto",
+                "text-max-width": 6,
+                "text-letter-spacing": 0.1
+            },
+            "paint": {
+                "text-color": "#ffffff",
+                "text-halo-color": "#98c2ca",
+                "text-halo-width": 1,
+                "text-halo-blur": 0
+            }
+        },
+        {
+            "id": "watername_sea",
+            "type": "symbol",
+            "source": "carto",
+            "source-layer": "water_name",
+            "minzoom": 5,
+            "filter": [
+                "all",
+                [
+                    "has",
+                    "name"
+                ],
+                [
+                    "==",
+                    "$type",
+                    "Point"
+                ],
+                [
+                    "==",
+                    "class",
+                    "sea"
+                ]
+            ],
+            "layout": {
+                "text-field": "{name}",
+                "symbol-placement": "point",
+                "text-size": 12,
+                "text-font": [
+                    "Montserrat Medium Italic",
+                    "Open Sans Italic",
+                    "Noto Sans Regular",
+                    "HanWangHeiLight Regular",
+                    "NanumBarunGothic Regular"
+                ],
+                "text-line-height": 1.2,
+                "text-padding": 2,
+                "text-allow-overlap": false,
+                "text-ignore-placement": false,
+                "text-pitch-alignment": "auto",
+                "text-rotation-alignment": "auto",
+                "text-max-width": 6,
+                "text-letter-spacing": 0.1
+            },
+            "paint": {
+                "text-color": "#ffffff",
+                "text-halo-color": "#98c2ca",
+                "text-halo-width": 1,
+                "text-halo-blur": 0
+            }
+        },
+        {
+            "id": "watername_lake",
+            "type": "symbol",
+            "source": "carto",
+            "source-layer": "water_name",
+            "minzoom": 4,
+            "filter": [
+                "all",
+                [
+                    "has",
+                    "name"
+                ],
+                [
+                    "==",
+                    "$type",
+                    "Point"
+                ],
+                [
+                    "==",
+                    "class",
+                    "lake"
+                ]
+            ],
+            "layout": {
+                "text-field": {
+                    "stops": [
+                        [
+                            8,
+                            "{name_en}"
+                        ],
+                        [
+                            13,
+                            "{name}"
+                        ]
+                    ]
+                },
+                "symbol-placement": "point",
+                "text-size": {
+                    "stops": [
+                        [
+                            13,
+                            9
+                        ],
+                        [
+                            14,
+                            10
+                        ],
+                        [
+                            15,
+                            11
+                        ],
+                        [
+                            16,
+                            12
+                        ],
+                        [
+                            17,
+                            13
+                        ]
+                    ]
+                },
+                "text-font": [
+                    "Montserrat Regular Italic",
+                    "Open Sans Italic",
+                    "Noto Sans Regular",
+                    "HanWangHeiLight Regular",
+                    "NanumBarunGothic Regular"
+                ],
+                "text-line-height": 1.2,
+                "text-padding": 2,
+                "text-allow-overlap": false,
+                "text-ignore-placement": false,
+                "text-pitch-alignment": "auto",
+                "text-rotation-alignment": "auto"
+            },
+            "paint": {
+                "text-color": "#51909c",
+                "text-halo-color": "#e2eef0",
+                "text-halo-width": 1,
+                "text-halo-blur": 1
+            }
+        },
+        {
+            "id": "watername_lake_line",
+            "type": "symbol",
+            "source": "carto",
+            "source-layer": "water_name",
+            "filter": [
+                "all",
+                [
+                    "has",
+                    "name"
+                ],
+                [
+                    "==",
+                    "$type",
+                    "LineString"
+                ]
+            ],
+            "layout": {
+                "text-field": {
+                    "stops": [
+                        [
+                            8,
+                            "{name_en}"
+                        ],
+                        [
+                            13,
+                            "{name}"
+                        ]
+                    ]
+                },
+                "symbol-placement": "line",
+                "text-size": {
+                    "stops": [
+                        [
+                            13,
+                            9
+                        ],
+                        [
+                            14,
+                            10
+                        ],
+                        [
+                            15,
+                            11
+                        ],
+                        [
+                            16,
+                            12
+                        ],
+                        [
+                            17,
+                            13
+                        ]
+                    ]
+                },
+                "text-font": [
+                    "Montserrat Regular Italic",
+                    "Open Sans Italic",
+                    "Noto Sans Regular",
+                    "HanWangHeiLight Regular",
+                    "NanumBarunGothic Regular"
+                ],
+                "symbol-spacing": 350,
+                "text-pitch-alignment": "auto",
+                "text-rotation-alignment": "auto",
+                "text-line-height": 1.2
+            },
+            "paint": {
+                "text-color": "#51909c",
+                "text-halo-color": "#e2eef0",
+                "text-halo-width": 1,
+                "text-halo-blur": 1
+            }
+        },
+        {
+            "id": "place_hamlet",
+            "type": "symbol",
+            "source": "carto",
+            "source-layer": "place",
+            "minzoom": 12,
+            "maxzoom": 16,
+            "filter": [
+                "any",
+                [
+                    "==",
+                    "class",
+                    "neighbourhood"
+                ],
+                [
+                    "==",
+                    "class",
+                    "hamlet"
+                ]
+            ],
+            "layout": {
+                "text-field": {
+                    "stops": [
+                        [
+                            8,
+                            "{name_en}"
+                        ],
+                        [
+                            14,
+                            "{name}"
+                        ]
+                    ]
+                },
+                "text-font": [
+                    "Montserrat Regular",
+                    "Open Sans Regular",
+                    "Noto Sans Regular",
+                    "HanWangHeiLight Regular",
+                    "NanumBarunGothic Regular"
+                ],
+                "text-size": {
+                    "stops": [
+                        [
+                            13,
+                            8
+                        ],
+                        [
+                            14,
+                            10
+                        ],
+                        [
+                            16,
+                            11
+                        ]
+                    ]
+                },
+                "icon-image": "",
+                "icon-offset": [
+                    16,
+                    0
+                ],
+                "text-anchor": "center",
+                "icon-size": 1,
+                "text-max-width": 10,
+                "text-keep-upright": true,
+                "text-offset": [
+                    0.2,
+                    0.2
+                ],
+                "text-transform": {
+                    "stops": [
+                        [
+                            12,
+                            "none"
+                        ],
+                        [
+                            14,
+                            "uppercase"
+                        ]
+                    ]
+                }
+            },
+            "paint": {
+                "text-color": "#405c78",
+                "icon-color": "#405c78",
+                "icon-translate-anchor": "map",
+                "text-halo-color": "#f2f5f8",
+                "text-halo-width": 1
+            }
+        },
+        {
+            "id": "place_suburbs",
+            "type": "symbol",
+            "source": "carto",
+            "source-layer": "place",
+            "minzoom": 12,
+            "maxzoom": 16,
+            "filter": [
+                "all",
+                [
+                    "==",
+                    "class",
+                    "suburb"
+                ]
+            ],
+            "layout": {
+                "text-field": {
+                    "stops": [
+                        [
+                            8,
+                            "{name_en}"
+                        ],
+                        [
+                            13,
+                            "{name}"
+                        ]
+                    ]
+                },
+                "text-font": [
+                    "Montserrat Regular",
+                    "Open Sans Regular",
+                    "Noto Sans Regular",
+                    "HanWangHeiLight Regular",
+                    "NanumBarunGothic Regular"
+                ],
+                "text-size": {
+                    "stops": [
+                        [
+                            12,
+                            9
+                        ],
+                        [
+                            13,
+                            10
+                        ],
+                        [
+                            14,
+                            11
+                        ],
+                        [
+                            15,
+                            12
+                        ],
+                        [
+                            16,
+                            13
+                        ]
+                    ]
+                },
+                "icon-image": "",
+                "icon-offset": [
+                    16,
+                    0
+                ],
+                "text-anchor": "center",
+                "icon-size": 1,
+                "text-max-width": 10,
+                "text-keep-upright": true,
+                "text-offset": [
+                    0.2,
+                    0.2
+                ],
+                "text-transform": {
+                    "stops": [
+                        [
+                            8,
+                            "none"
+                        ],
+                        [
+                            12,
+                            "uppercase"
+                        ]
+                    ]
+                }
+            },
+            "paint": {
+                "text-color": "#405c78",
+                "icon-color": "#405c78",
+                "icon-translate-anchor": "map",
+                "text-halo-color": "#f2f5f8",
+                "text-halo-width": 1
+            }
+        },
+        {
+            "id": "place_villages",
+            "type": "symbol",
+            "source": "carto",
+            "source-layer": "place",
+            "minzoom": 10,
+            "maxzoom": 16,
+            "filter": [
+                "all",
+                [
+                    "==",
+                    "class",
+                    "village"
+                ]
+            ],
+            "layout": {
+                "text-field": {
+                    "stops": [
+                        [
+                            8,
+                            "{name_en}"
+                        ],
+                        [
+                            13,
+                            "{name}"
+                        ]
+                    ]
+                },
+                "text-font": [
+                    "Montserrat Medium",
+                    "Open Sans Bold",
+                    "Noto Sans Regular",
+                    "HanWangHeiLight Regular",
+                    "NanumBarunGothic Regular"
+                ],
+                "text-size": {
+                    "stops": [
+                        [
+                            10,
+                            9
+                        ],
+                        [
+                            12,
+                            10
+                        ],
+                        [
+                            13,
+                            11
+                        ],
+                        [
+                            14,
+                            12
+                        ],
+                        [
+                            16,
+                            13
+                        ]
+                    ]
+                },
+                "icon-image": "",
+                "icon-offset": [
+                    16,
+                    0
+                ],
+                "text-anchor": "center",
+                "icon-size": 1,
+                "text-max-width": 10,
+                "text-keep-upright": true,
+                "text-offset": [
+                    0.2,
+                    0.2
+                ],
+                "text-transform": "none"
+            },
+            "paint": {
+                "text-color": "#405c78",
+                "icon-color": "#405c78",
+                "icon-translate-anchor": "map",
+                "text-halo-color": "#f2f5f8",
+                "text-halo-width": 1
+            }
+        },
+        {
+            "id": "place_town",
+            "type": "symbol",
+            "source": "carto",
+            "source-layer": "place",
+            "minzoom": 8,
+            "maxzoom": 14,
+            "filter": [
+                "all",
+                [
+                    "==",
+                    "class",
+                    "town"
+                ]
+            ],
+            "layout": {
+                "text-field": {
+                    "stops": [
+                        [
+                            8,
+                            "{name_en}"
+                        ],
+                        [
+                            13,
+                            "{name}"
+                        ]
+                    ]
+                },
+                "text-font": [
+                    "Montserrat Medium",
+                    "Open Sans Bold",
+                    "Noto Sans Regular",
+                    "HanWangHeiLight Regular",
+                    "NanumBarunGothic Regular"
+                ],
+                "text-size": {
+                    "stops": [
+                        [
+                            8,
+                            10
+                        ],
+                        [
+                            9,
+                            10
+                        ],
+                        [
+                            10,
+                            11
+                        ],
+                        [
+                            13,
+                            14
+                        ],
+                        [
+                            14,
+                            15
+                        ]
+                    ]
+                },
+                "icon-image": "",
+                "icon-offset": [
+                    16,
+                    0
+                ],
+                "text-anchor": "center",
+                "icon-size": 1,
+                "text-max-width": 10,
+                "text-keep-upright": true,
+                "text-offset": [
+                    0.2,
+                    0.2
+                ],
+                "text-transform": "none"
+            },
+            "paint": {
+                "text-color": "#405c78",
+                "icon-color": "#405c78",
+                "icon-translate-anchor": "map",
+                "text-halo-color": "#f2f5f8",
+                "text-halo-width": 1
+            }
+        },
+        {
+            "id": "place_country_2",
+            "type": "symbol",
+            "source": "carto",
+            "source-layer": "place",
+            "minzoom": 3,
+            "maxzoom": 10,
+            "filter": [
+                "all",
+                [
+                    "==",
+                    "class",
+                    "country"
+                ],
+                [
+                    ">=",
+                    "rank",
+                    3
+                ],
+                [
+                    "has",
+                    "iso_a2"
+                ]
+            ],
+            "layout": {
+                "text-field": "{name_en}",
+                "text-font": [
+                    "Montserrat Medium",
+                    "Open Sans Bold",
+                    "Noto Sans Regular",
+                    "HanWangHeiLight Regular",
+                    "NanumBarunGothic Regular"
+                ],
+                "text-size": {
+                    "stops": [
+                        [
+                            3,
+                            10
+                        ],
+                        [
+                            5,
+                            11
+                        ],
+                        [
+                            6,
+                            12
+                        ],
+                        [
+                            7,
+                            13
+                        ],
+                        [
+                            8,
+                            14
+                        ]
+                    ]
+                },
+                "text-transform": "uppercase"
+            },
+            "paint": {
+                "text-color": {
+                    "stops": [
+                        [
+                            3,
+                            "#6b7d91"
+                        ],
+                        [
+                            5,
+                            "#8894a3"
+                        ],
+                        [
+                            6,
+                            "#a3abb5"
+                        ]
+                    ]
+                },
+                "text-halo-color": "#fbf8f3",
+                "text-halo-width": 1
+            }
+        },
+        {
+            "id": "place_country_1",
+            "type": "symbol",
+            "source": "carto",
+            "source-layer": "place",
+            "minzoom": 2,
+            "maxzoom": 7,
+            "filter": [
+                "all",
+                [
+                    "==",
+                    "class",
+                    "country"
+                ],
+                [
+                    "<=",
+                    "rank",
+                    2
+                ]
+            ],
+            "layout": {
+                "text-field": "{name_en}",
+                "text-font": [
+                    "Montserrat Medium",
+                    "Open Sans Bold",
+                    "Noto Sans Regular",
+                    "HanWangHeiLight Regular",
+                    "NanumBarunGothic Regular"
+                ],
+                "text-size": {
+                    "stops": [
+                        [
+                            3,
+                            11
+                        ],
+                        [
+                            4,
+                            12
+                        ],
+                        [
+                            5,
+                            13
+                        ],
+                        [
+                            6,
+                            14
+                        ]
+                    ]
+                },
+                "text-transform": "uppercase",
+                "text-max-width": {
+                    "stops": [
+                        [
+                            2,
+                            6
+                        ],
+                        [
+                            3,
+                            6
+                        ],
+                        [
+                            4,
+                            9
+                        ],
+                        [
+                            5,
+                            12
+                        ]
+                    ]
+                }
+            },
+            "paint": {
+                "text-color": {
+                    "stops": [
+                        [
+                            3,
+                            "#6b7d91"
+                        ],
+                        [
+                            5,
+                            "#8894a3"
+                        ],
+                        [
+                            6,
+                            "#a3abb5"
+                        ]
+                    ]
+                },
+                "text-halo-color": "#fbf8f3",
+                "text-halo-width": 1
+            }
+        },
+        {
+            "id": "place_state",
+            "type": "symbol",
+            "source": "carto",
+            "source-layer": "place",
+            "minzoom": 5,
+            "maxzoom": 10,
+            "filter": [
+                "all",
+                [
+                    "==",
+                    "class",
+                    "state"
+                ],
+                [
+                    "<=",
+                    "rank",
+                    4
+                ]
+            ],
+            "layout": {
+                "text-field": "{name_en}",
+                "text-font": [
+                    "Montserrat Medium",
+                    "Open Sans Bold",
+                    "Noto Sans Regular",
+                    "HanWangHeiLight Regular",
+                    "NanumBarunGothic Regular"
+                ],
+                "text-size": {
+                    "stops": [
+                        [
+                            5,
+                            12
+                        ],
+                        [
+                            7,
+                            14
+                        ]
+                    ]
+                },
+                "text-transform": "uppercase",
+                "text-max-width": 9
+            },
+            "paint": {
+                "text-color": "#7c8a9b",
+                "text-halo-color": "#fbf8f3",
+                "text-halo-width": 0
+            }
+        },
+        {
+            "id": "place_continent",
+            "type": "symbol",
+            "source": "carto",
+            "source-layer": "place",
+            "minzoom": 0,
+            "maxzoom": 2,
+            "filter": [
+                "all",
+                [
+                    "==",
+                    "class",
+                    "continent"
+                ]
+            ],
+            "layout": {
+                "text-field": "{name_en}",
+                "text-font": [
+                    "Montserrat Medium",
+                    "Open Sans Bold",
+                    "Noto Sans Regular",
+                    "HanWangHeiLight Regular",
+                    "NanumBarunGothic Regular"
+                ],
+                "text-transform": "uppercase",
+                "text-size": 14,
+                "text-letter-spacing": 0.1,
+                "text-max-width": 9,
+                "text-justify": "center",
+                "text-keep-upright": false
+            },
+            "paint": {
+                "text-color": "#405c78",
+                "text-halo-color": "#fbf8f3",
+                "text-halo-width": 1
+            }
+        },
+        {
+            "id": "place_city_r6",
+            "type": "symbol",
+            "source": "carto",
+            "source-layer": "place",
+            "minzoom": 8,
+            "maxzoom": 15,
+            "filter": [
+                "all",
+                [
+                    "==",
+                    "class",
+                    "city"
+                ],
+                [
+                    ">=",
+                    "rank",
+                    6
+                ]
+            ],
+            "layout": {
+                "text-field": {
+                    "stops": [
+                        [
+                            8,
+                            "{name_en}"
+                        ],
+                        [
+                            13,
+                            "{name}"
+                        ]
+                    ]
+                },
+                "text-font": [
+                    "Montserrat Medium",
+                    "Open Sans Bold",
+                    "Noto Sans Regular",
+                    "HanWangHeiLight Regular",
+                    "NanumBarunGothic Regular"
+                ],
+                "text-size": {
+                    "stops": [
+                        [
+                            8,
+                            12
+                        ],
+                        [
+                            9,
+                            13
+                        ],
+                        [
+                            10,
+                            14
+                        ],
+                        [
+                            13,
+                            17
+                        ],
+                        [
+                            14,
+                            20
+                        ]
+                    ]
+                },
+                "icon-image": "",
+                "icon-offset": [
+                    16,
+                    0
+                ],
+                "text-anchor": "center",
+                "icon-size": 1,
+                "text-max-width": 10,
+                "text-keep-upright": true,
+                "text-offset": [
+                    0.2,
+                    0.2
+                ],
+                "text-transform": "uppercase"
+            },
+            "paint": {
+                "text-color": "#405c78",
+                "icon-color": "#405c78",
+                "icon-translate-anchor": "map",
+                "text-halo-color": "#f2f5f8",
+                "text-halo-width": 1
+            }
+        },
+        {
+            "id": "place_city_r5",
+            "type": "symbol",
+            "source": "carto",
+            "source-layer": "place",
+            "minzoom": 8,
+            "maxzoom": 15,
+            "filter": [
+                "all",
+                [
+                    "==",
+                    "class",
+                    "city"
+                ],
+                [
+                    ">=",
+                    "rank",
+                    0
+                ],
+                [
+                    "<=",
+                    "rank",
+                    5
+                ]
+            ],
+            "layout": {
+                "text-field": {
+                    "stops": [
+                        [
+                            8,
+                            "{name_en}"
+                        ],
+                        [
+                            13,
+                            "{name}"
+                        ]
+                    ]
+                },
+                "text-font": [
+                    "Montserrat Medium",
+                    "Open Sans Bold",
+                    "Noto Sans Regular",
+                    "HanWangHeiLight Regular",
+                    "NanumBarunGothic Regular"
+                ],
+                "text-size": {
+                    "stops": [
+                        [
+                            8,
+                            14
+                        ],
+                        [
+                            10,
+                            16
+                        ],
+                        [
+                            13,
+                            19
+                        ],
+                        [
+                            14,
+                            22
+                        ]
+                    ]
+                },
+                "icon-image": "",
+                "icon-offset": [
+                    16,
+                    0
+                ],
+                "text-anchor": "center",
+                "icon-size": 1,
+                "text-max-width": 10,
+                "text-keep-upright": true,
+                "text-offset": [
+                    0.2,
+                    0.2
+                ],
+                "text-transform": "uppercase"
+            },
+            "paint": {
+                "text-color": "#405c78",
+                "icon-color": "#405c78",
+                "icon-translate-anchor": "map",
+                "text-halo-color": "#f2f5f8",
+                "text-halo-width": 1
+            }
+        },
+        {
+            "id": "place_city_dot_r7",
+            "type": "symbol",
+            "source": "carto",
+            "source-layer": "place",
+            "minzoom": 6,
+            "maxzoom": 7,
+            "filter": [
+                "all",
+                [
+                    "==",
+                    "class",
+                    "city"
+                ],
+                [
+                    "<=",
+                    "rank",
+                    7
+                ]
+            ],
+            "layout": {
+                "text-field": "{name_en}",
+                "text-font": [
+                    "Montserrat Medium",
+                    "Open Sans Bold",
+                    "Noto Sans Regular",
+                    "HanWangHeiLight Regular",
+                    "NanumBarunGothic Regular"
+                ],
+                "text-size": 12,
+                "icon-image": "circle-11",
+                "icon-offset": [
+                    16,
+                    5
+                ],
+                "text-anchor": "right",
+                "icon-size": 0.4,
+                "text-max-width": 8,
+                "text-keep-upright": true,
+                "text-offset": [
+                    0.2,
+                    0.2
+                ]
+            },
+            "paint": {
+                "text-color": "#405c78",
+                "icon-color": "#405c78",
+                "icon-translate-anchor": "map",
+                "text-halo-color": "#f2f5f8",
+                "text-halo-width": 1
+            }
+        },
+        {
+            "id": "place_city_dot_r4",
+            "type": "symbol",
+            "source": "carto",
+            "source-layer": "place",
+            "minzoom": 5,
+            "maxzoom": 7,
+            "filter": [
+                "all",
+                [
+                    "==",
+                    "class",
+                    "city"
+                ],
+                [
+                    "<=",
+                    "rank",
+                    4
+                ]
+            ],
+            "layout": {
+                "text-field": "{name_en}",
+                "text-font": [
+                    "Montserrat Medium",
+                    "Open Sans Bold",
+                    "Noto Sans Regular",
+                    "HanWangHeiLight Regular",
+                    "NanumBarunGothic Regular"
+                ],
+                "text-size": 12,
+                "icon-image": "circle-11",
+                "icon-offset": [
+                    16,
+                    5
+                ],
+                "text-anchor": "right",
+                "icon-size": 0.4,
+                "text-max-width": 8,
+                "text-keep-upright": true,
+                "text-offset": [
+                    0.2,
+                    0.2
+                ]
+            },
+            "paint": {
+                "text-color": "#405c78",
+                "icon-color": "#405c78",
+                "icon-translate-anchor": "map",
+                "text-halo-color": "#f2f5f8",
+                "text-halo-width": 1
+            }
+        },
+        {
+            "id": "place_city_dot_r2",
+            "type": "symbol",
+            "source": "carto",
+            "source-layer": "place",
+            "minzoom": 4,
+            "maxzoom": 7,
+            "filter": [
+                "all",
+                [
+                    "==",
+                    "class",
+                    "city"
+                ],
+                [
+                    "<=",
+                    "rank",
+                    2
+                ]
+            ],
+            "layout": {
+                "text-field": "{name_en}",
+                "text-font": [
+                    "Montserrat Medium",
+                    "Open Sans Bold",
+                    "Noto Sans Regular",
+                    "HanWangHeiLight Regular",
+                    "NanumBarunGothic Regular"
+                ],
+                "text-size": 12,
+                "icon-image": "circle-11",
+                "icon-offset": [
+                    16,
+                    5
+                ],
+                "text-anchor": "right",
+                "icon-size": 0.4,
+                "text-max-width": 8,
+                "text-keep-upright": true,
+                "text-offset": [
+                    0.2,
+                    0.2
+                ]
+            },
+            "paint": {
+                "text-color": "#405c78",
+                "icon-color": "#405c78",
+                "icon-translate-anchor": "map",
+                "text-halo-color": "#f2f5f8",
+                "text-halo-width": 1
+            }
+        },
+        {
+            "id": "place_city_dot_z7",
+            "type": "symbol",
+            "source": "carto",
+            "source-layer": "place",
+            "minzoom": 7,
+            "maxzoom": 8,
+            "filter": [
+                "all",
+                [
+                    "!has",
+                    "capital"
+                ],
+                [
+                    "!in",
+                    "class",
+                    "country",
+                    "state"
+                ]
+            ],
+            "layout": {
+                "text-field": "{name_en}",
+                "text-font": [
+                    "Montserrat Medium",
+                    "Open Sans Bold",
+                    "Noto Sans Regular",
+                    "HanWangHeiLight Regular",
+                    "NanumBarunGothic Regular"
+                ],
+                "text-size": 12,
+                "icon-image": "circle-11",
+                "icon-offset": [
+                    16,
+                    5
+                ],
+                "text-anchor": "right",
+                "icon-size": 0.4,
+                "text-max-width": 8,
+                "text-keep-upright": true,
+                "text-offset": [
+                    0.2,
+                    0.2
+                ]
+            },
+            "paint": {
+                "text-color": "#405c78",
+                "icon-color": "#405c78",
+                "icon-translate-anchor": "map",
+                "text-halo-color": "#f2f5f8",
+                "text-halo-width": 1
+            }
+        },
+        {
+            "id": "place_capital_dot_z7",
+            "type": "symbol",
+            "source": "carto",
+            "source-layer": "place",
+            "minzoom": 7,
+            "maxzoom": 8,
+            "filter": [
+                "all",
+                [
+                    ">",
+                    "capital",
+                    0
+                ]
+            ],
+            "layout": {
+                "text-field": "{name_en}",
+                "text-font": [
+                    "Montserrat Medium",
+                    "Open Sans Bold",
+                    "Noto Sans Regular",
+                    "HanWangHeiLight Regular",
+                    "NanumBarunGothic Regular"
+                ],
+                "text-size": 12,
+                "icon-image": "circle-11",
+                "icon-offset": [
+                    16,
+                    5
+                ],
+                "text-anchor": "right",
+                "icon-size": 0.4,
+                "text-max-width": 8,
+                "text-keep-upright": true,
+                "text-offset": [
+                    0.2,
+                    0.2
+                ],
+                "text-transform": "uppercase"
+            },
+            "paint": {
+                "text-color": "#405c78",
+                "icon-color": "#405c78",
+                "icon-translate-anchor": "map",
+                "text-halo-color": "#f2f5f8",
+                "text-halo-width": 1
+            }
+        },
+        {
+            "id": "poi_stadium",
+            "type": "symbol",
+            "source": "carto",
+            "source-layer": "poi",
+            "minzoom": 15,
+            "filter": [
+                "all",
+                [
+                    "in",
+                    "class",
+                    "stadium",
+                    "cemetery",
+                    "attraction"
+                ],
+                [
+                    "<=",
+                    "rank",
+                    3
+                ]
+            ],
+            "layout": {
+                "text-field": "{name}",
+                "text-font": [
+                    "Montserrat Medium",
+                    "Open Sans Bold",
+                    "Noto Sans Regular",
+                    "HanWangHeiLight Regular",
+                    "NanumBarunGothic Regular"
+                ],
+                "text-size": {
+                    "stops": [
+                        [
+                            15,
+                            8
+                        ],
+                        [
+                            17,
+                            9
+                        ],
+                        [
+                            18,
+                            10
+                        ]
+                    ]
+                },
+                "text-transform": "uppercase"
+            },
+            "paint": {
+                "text-color": "#666666",
+                "text-halo-color": "rgba(255,255,255,0.15)",
+                "text-halo-width": 1
+            }
+        },
+        {
+            "id": "poi_park",
+            "type": "symbol",
+            "source": "carto",
+            "source-layer": "poi",
+            "minzoom": 15,
+            "filter": [
+                "all",
+                [
+                    "==",
+                    "class",
+                    "park"
+                ]
+            ],
+            "layout": {
+                "text-field": "{name}",
+                "text-font": [
+                    "Montserrat Medium",
+                    "Open Sans Bold",
+                    "Noto Sans Regular",
+                    "HanWangHeiLight Regular",
+                    "NanumBarunGothic Regular"
+                ],
+                "text-size": {
+                    "stops": [
+                        [
+                            15,
+                            8
+                        ],
+                        [
+                            17,
+                            9
+                        ],
+                        [
+                            18,
+                            10
+                        ]
+                    ]
+                },
+                "text-transform": "uppercase"
+            },
+            "paint": {
+                "text-color": "#666666",
+                "text-halo-color": "rgba(255,255,255,0.15)",
+                "text-halo-width": 1
+            }
+        },
+        {
+            "id": "roadname_minor",
+            "type": "symbol",
+            "source": "carto",
+            "source-layer": "transportation_name",
+            "minzoom": 16,
+            "filter": [
+                "all",
+                [
+                    "in",
+                    "class",
+                    "minor",
+                    "service"
+                ]
+            ],
+            "layout": {
+                "symbol-placement": "line",
+                "text-font": [
+                    "Montserrat Regular",
+                    "Open Sans Regular",
+                    "Noto Sans Regular",
+                    "HanWangHeiLight Regular",
+                    "NanumBarunGothic Regular"
+                ],
+                "text-size": 9,
+                "text-field": "{name}",
+                "symbol-avoid-edges": false,
+                "symbol-spacing": 200,
+                "text-pitch-alignment": "auto",
+                "text-rotation-alignment": "auto",
+                "text-justify": "center"
+            },
+            "paint": {
+                "text-color": "#87919e",
+                "text-halo-color": "#fbf8f3",
+                "text-halo-width": 1
+            }
+        },
+        {
+            "id": "roadname_sec",
+            "type": "symbol",
+            "source": "carto",
+            "source-layer": "transportation_name",
+            "minzoom": 15,
+            "filter": [
+                "all",
+                [
+                    "in",
+                    "class",
+                    "secondary",
+                    "tertiary"
+                ]
+            ],
+            "layout": {
+                "symbol-placement": "line",
+                "text-font": [
+                    "Montserrat Regular",
+                    "Open Sans Regular",
+                    "Noto Sans Regular",
+                    "HanWangHeiLight Regular",
+                    "NanumBarunGothic Regular"
+                ],
+                "text-size": {
+                    "stops": [
+                        [
+                            15,
+                            9
+                        ],
+                        [
+                            16,
+                            11
+                        ],
+                        [
+                            18,
+                            12
+                        ]
+                    ]
+                },
+                "text-field": "{name}",
+                "symbol-avoid-edges": false,
+                "symbol-spacing": 200,
+                "text-pitch-alignment": "auto",
+                "text-rotation-alignment": "auto",
+                "text-justify": "center"
+            },
+            "paint": {
+                "text-color": "#87919e",
+                "text-halo-color": "#fbf8f3",
+                "text-halo-width": 1
+            }
+        },
+        {
+            "id": "roadname_pri",
+            "type": "symbol",
+            "source": "carto",
+            "source-layer": "transportation_name",
+            "minzoom": 14,
+            "filter": [
+                "all",
+                [
+                    "in",
+                    "class",
+                    "primary"
+                ]
+            ],
+            "layout": {
+                "symbol-placement": "line",
+                "text-font": [
+                    "Montserrat Regular",
+                    "Open Sans Regular",
+                    "Noto Sans Regular",
+                    "HanWangHeiLight Regular",
+                    "NanumBarunGothic Regular"
+                ],
+                "text-size": {
+                    "stops": [
+                        [
+                            14,
+                            10
+                        ],
+                        [
+                            15,
+                            10
+                        ],
+                        [
+                            16,
+                            11
+                        ],
+                        [
+                            18,
+                            12
+                        ]
+                    ]
+                },
+                "text-field": "{name}",
+                "symbol-avoid-edges": false,
+                "symbol-spacing": {
+                    "stops": [
+                        [
+                            6,
+                            200
+                        ],
+                        [
+                            16,
+                            250
+                        ]
+                    ]
+                },
+                "text-pitch-alignment": "auto",
+                "text-rotation-alignment": "auto",
+                "text-justify": "center",
+                "text-letter-spacing": {
+                    "stops": [
+                        [
+                            14,
+                            0
+                        ],
+                        [
+                            16,
+                            0.2
+                        ]
+                    ]
+                }
+            },
+            "paint": {
+                "text-color": "#798493",
+                "text-halo-color": "#fefde1",
+                "text-halo-width": 1
+            }
+        },
+        {
+            "id": "roadname_major",
+            "type": "symbol",
+            "source": "carto",
+            "source-layer": "transportation_name",
+            "minzoom": 13,
+            "filter": [
+                "all",
+                [
+                    "in",
+                    "class",
+                    "trunk",
+                    "motorway"
+                ]
+            ],
+            "layout": {
+                "symbol-placement": "line",
+                "text-font": [
+                    "Montserrat Regular",
+                    "Open Sans Regular",
+                    "Noto Sans Regular",
+                    "HanWangHeiLight Regular",
+                    "NanumBarunGothic Regular"
+                ],
+                "text-size": {
+                    "stops": [
+                        [
+                            14,
+                            10
+                        ],
+                        [
+                            15,
+                            10
+                        ],
+                        [
+                            16,
+                            11
+                        ],
+                        [
+                            18,
+                            12
+                        ]
+                    ]
+                },
+                "text-field": "{name}",
+                "symbol-avoid-edges": false,
+                "symbol-spacing": {
+                    "stops": [
+                        [
+                            6,
+                            200
+                        ],
+                        [
+                            16,
+                            250
+                        ]
+                    ]
+                },
+                "text-pitch-alignment": "auto",
+                "text-rotation-alignment": "auto",
+                "text-justify": "center",
+                "text-letter-spacing": {
+                    "stops": [
+                        [
+                            13,
+                            0
+                        ],
+                        [
+                            16,
+                            0.2
+                        ]
+                    ]
+                }
+            },
+            "paint": {
+                "text-color": "#798493",
+                "text-halo-color": "#fff0c4",
+                "text-halo-width": 1
+            }
+        },
+        {
+            "id": "housenumber",
+            "type": "symbol",
+            "source": "carto",
+            "source-layer": "housenumber",
+            "minzoom": 17,
+            "maxzoom": 24,
+            "layout": {
+                "text-field": "{housenumber}",
+                "text-size": {
+                    "stops": [
+                        [
+                            17,
+                            9
+                        ],
+                        [
+                            18,
+                            11
+                        ]
+                    ]
+                },
+                "text-font": [
+                    "Montserrat Regular",
+                    "Open Sans Regular",
+                    "Noto Sans Regular",
+                    "HanWangHeiLight Regular",
+                    "NanumBarunGothic Regular"
+                ]
+            },
+            "paint": {
+                "text-halo-color": "rgba(255,255,255,0.15)",
+                "text-color": "#d2b17d",
+                "text-halo-width": 0.75
+            }
+        }
+    ],
+    "id": "voyager",
+    "owner": "Carto"
+}
\ No newline at end of file
diff --git a/src/js/guadec_map/guadec-map.js b/src/js/guadec_map/guadec-map.js
new file mode 100644
index 0000000..ecc9111
--- /dev/null
+++ b/src/js/guadec_map/guadec-map.js
@@ -0,0 +1,337 @@
+class GuadecMap {
+    constructor(options){
+        this.overpass_url = 'https://overpass-api.de/api/interpreter';
+        this.options = options;
+    }
+
+    /* Functions and helpers */
+    /* from https://www.npmjs.com/package/geojson-polygon-center */
+    static polygon_center(polygon) {
+        var minx = 1000,
+            miny = 1000,
+            maxx = -1000,
+            maxy = -1000,
+            polygon = polygon[0];
+        for (var i = 0; i < polygon.length; i++) {
+            var point = polygon[i]
+            var x = point[0]
+            var y = point[1]
+
+            if (x < minx) minx = x
+            else if (x > maxx) maxx = x
+            if (y < miny) miny = y
+            else if (y > maxy) maxy = y
+        }
+
+        return {
+            type: 'Point',
+            coordinates: [
+            minx + ((maxx - minx) / 2),
+            miny + ((maxy - miny) / 2)
+            ]
+        }
+    }
+    
+    /* helper to get the list of ids */
+    static get_ids(el){
+        return typeof el == "number" ? el : el['osm_id'];
+    }
+
+    /* takes a feature, and augment it with any custom properties 
+        passed on thi list of nodes and ways */
+    static get_props(options,feature){
+        var /* filter checker */
+            filter_node = function(node){
+                return typeof node != "number" && node['osm_id'] == feat_id;
+            },
+            properties = feature['properties'],
+            /* feature id */
+            feat_id = properties['id'],
+            /* candidates */
+            candidate = options.osm_nodes.filter(filter_node)
+                            .concat(options.osm_ways.filter(filter_node));
+
+        if (candidate.length == 1){
+            properties = Object.assign(properties,candidate[0]);
+        };
+
+        return feature;
+    }
+
+    /* Generate a valid OSM Overpass API request */
+    get_osm_query(options){
+        var ways = options.osm_ways.map(GuadecMap.get_ids).join(',');
+        var nodes = options.osm_nodes.map(GuadecMap.get_ids).join(',');
+
+        return `[out:xml][timeout:300];
+                (
+                    way(id:${ways});
+                    node(id:${nodes});
+                )->.a;
+                (.a; .a >;);out qt;`
+    }
+
+    /* moves tags up to the main properties function */
+    static tags_to_props(feature){
+        var properties = feature['properties'],
+            tags = properties['tags'];
+        Object.assign(properties, tags);
+        delete properties['tags'];
+
+        if (properties['id'] == undefined){
+            properties['id'] = String(feature['id'])
+        } else {
+            properties['id'] = String(properties['id'])
+        };
+
+        // Override the name in Engish, if it exists
+        if (properties['name:en'] != undefined){
+            properties['name'] = properties['name:en']
+        };
+
+        return feature
+    }
+
+    /* transforms OSM data into geojson and adds that as
+        points and labels to the map */
+    static load_osm_data(context,data){
+        console.log('loading data...');
+        var  
+            // Convert to GeoJSON
+            geojson_data = osmtogeojson(data),
+            // Filter ways
+            polys_geojson = geojson_data.features.filter(function(feature){
+                return feature.properties.type == "way"
+            }),
+            // Filter points
+            points_geojson = geojson_data.features.filter(function(feature){
+                return feature.properties.type == "node"
+            }),
+            // Generate centroids for points
+            polys_geojson_points = polys_geojson.map(function(poly){
+                var copy = JSON.parse(JSON.stringify(poly));
+                copy['geometry'] = GuadecMap.polygon_center(copy.geometry.coordinates);
+                return copy
+            }),
+            // Get together both set of points
+            all_features = points_geojson.concat(polys_geojson_points),
+            // Get all properties out from the tags
+            points_geojson_props = all_features.map(GuadecMap.tags_to_props),
+            get_props_amp = function(feature){
+                return GuadecMap.get_props(context.options,feature)
+            },
+            final_points = points_geojson_props.map(get_props_amp);
+
+        // Build final geojson collection
+        return {
+                    'type': 'FeatureCollection',
+                    'features': final_points
+        };           
+    }
+
+    init_map(){
+        /*
+            TODO move this to a class instantiation so we can put the options on a constructor and then have 
methods to render the pois and the routes
+        */
+        var options = this.options;
+        var map = new mapboxgl.Map({
+                container: 'map',
+                style: options.basemap_style,
+                center: options.center,
+                zoom: options.zoom,
+                attributionControl: true
+            });
+
+        /* Navigation control */
+        map.addControl(new mapboxgl.NavigationControl());
+
+        /* Popup up singleton */
+        var tooltip = new mapboxgl.Popup({   
+            closeButton: false,
+            closeOnClick: true,
+            anchor: "top",
+            offset: [0, 8]
+            });
+        
+        // helper to render the properties
+        var get_properties_list = function(properties){
+            return options.popup_properties
+            .filter(function(key){
+                return (Object.keys(properties).findIndex(x => x == key) > -1)
+            })
+            .map(function(key){
+                if (key == 'website'){
+                    return `<li><a href="${properties[key]}">${key}</a></li>`
+                } else if (key == 'wikidata'){
+                    return `<li><a href="https://www.wikidata.org/wiki/${properties[key]}";>${key}</a></li>`
+                } else if (key == 'wikipedia'){
+                    return `<li><a href="https://en.wikipedia.org/wiki/${properties[key]}";>${key}</a></li>`
+                } else {
+                    return `<li><strong>${key}</strong>: ${properties[key]}</li>`
+                }
+            }).join('')
+        };
+
+        var interactivity_handler = function(location,is_tooltip){
+            if (! map.getLayer('guadec_icon')) return;
+
+            var features = map.queryRenderedFeatures(location.point, {
+                layers: ['guadec_icon']
+            });
+            tooltip.remove();
+
+            if (features != ''){
+                var popup = null;
+                var feature = features[0];
+
+                if (is_tooltip){
+                    tooltip.setHTML(`<span>${feature.properties.name}</span>`)
+                            .setLngLat(location.lngLat) 
+                            .addTo(map);
+                } else {
+                    popup = new mapboxgl.Popup({
+                        anchor:'bottom',
+                        className:'guadec-popup'
+                    })
+                    .setHTML(`
+                        <h3>${feature.properties.name}</h3>
+                        <ul>
+                        ${get_properties_list(feature.properties)}
+                        </ul>
+                        <p class="osm-source"><a 
href="https://www.openstreetmap.org/${feature.properties.type}/${feature.properties.id}";>Source</a></p>
+                        `
+                    )
+                    .setLngLat(location.lngLat) 
+                    .addTo(map);
+                }                
+            }
+        }
+
+        /* Popup interactivity */
+        map.on('click',function(location){
+            interactivity_handler(location,false);
+        });
+        
+
+        /* Popup interactivity */
+        map.on('mousemove',function(location){
+            interactivity_handler(location,true);
+        });
+
+
+
+        this.map = map;
+        return map;
+    }
+
+    load_pois(){
+        var context = this;
+        console.log('fetching osm data...')
+        fetch(this.overpass_url,{
+            method: "POST",
+            body:  this.get_osm_query(this.options)})
+            .then(response => response.text())
+            .then(str => (new window.DOMParser()).parseFromString(str, "text/xml"))
+            .then(function(data){
+                // Get the geojson to work
+                var options = context.options;
+                var map = context.map;
+
+                context.geojson_data = GuadecMap.load_osm_data(context,data);
+                console.log(context.geojson_data);
+
+                /* Icon layer */
+                map.addLayer({
+                    'id': 'guadec_icon',
+                    'type': 'symbol',
+                    'source': {
+                        'type': 'geojson',
+                        'data': context.geojson_data
+                    },
+                    'layout': {
+                        "symbol-placement": "point",
+                        "text-field": '{name}' ,
+                        "icon-image": [
+                            "case",
+                            ["has", 'icon'], ["get", "icon"],
+                            options.icon,
+                        ],
+                        "text-font": ["Open Sans Regular"],
+                        "icon-allow-overlap": true,
+                        "text-offset": [.3,.3],
+                        "text-anchor": "top-left",
+                        "text-max-width": 5,
+                        "text-justify": "left",
+                        "text-allow-overlap": false,
+                        "text-optional": true,
+                        "icon-size": {
+                            "stops": [
+                                [0, 0.3],
+                                [12, 0.6],
+                                [14, 1],
+                                [18, 1.5],
+                            ]
+                        },
+                        "text-size": {
+                            "stops": [
+                                [0, 0],
+                                [9,0],
+                                [12, 15],
+                                [16, 20]
+                            ]
+                        }
+                    },
+                    'paint': {
+                        "text-color": options.main_color,
+                        "icon-opacity": 1,
+                        "text-opacity": {
+                            "stops": [
+                                [0, 0],
+                                [9,0],
+                                [12, 1]
+                            ]
+                        },
+                        "text-halo-color": "white",
+                        "text-halo-width": 1.5,
+                        "text-halo-blur": 1
+                    }
+                },'place_hamlet');
+
+
+
+                /* Filter control */
+                document
+                .getElementById('filter-input')
+                .addEventListener('keyup', function(e) {
+                    function normalize(string) {
+                        return string.trim().toLowerCase();
+                    };
+
+                    // Get the value of the input
+                    var value = normalize(e.target.value);
+                    
+                    if (value == ""){
+                        // If it's empty remove the filter
+                        map.setFilter('guadec_icon', null);
+
+                    } else {
+                        // Filter the geojson features and get their ids
+                        var ids = context.geojson_data.features
+                            .filter( x =>  normalize( x['properties']['name']).match(new RegExp(value,"g")) 
!= null)
+                            .map(x => x['properties']['id'])
+
+                        // Set the filter of the layer to match those ids
+                        map.setFilter('guadec_icon', ['match', ['get', 'id'], ids, true, false]);
+                    }
+                });
+            })
+            .catch(error => console.log("Error:", error));
+    }
+
+    load_routes(){
+        throw "not implemented"
+    }
+
+}
+
+export { GuadecMap };
\ No newline at end of file
diff --git a/src/js/guadec_map/maki-guadec-svg/airport-45.svg 
b/src/js/guadec_map/maki-guadec-svg/airport-45.svg
new file mode 100644
index 0000000..023938f
--- /dev/null
+++ b/src/js/guadec_map/maki-guadec-svg/airport-45.svg
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 19.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   version="1.1"
+   id="svg4619"
+   inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
+   sodipodi:docname="airport-45.svg"
+   x="0px"
+   y="0px"
+   width="45"
+   height="45"
+   viewBox="0 0 45 45"
+   xml:space="preserve"><metadata
+     id="metadata8"><rdf:RDF><cc:Work
+         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; 
/><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
+     id="defs6" /><sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1231"
+     inkscape:window-height="575"
+     id="namedview4"
+     showgrid="false"
+     inkscape:zoom="5.6686394"
+     inkscape:cx="0.11556944"
+     inkscape:cy="14.663949"
+     inkscape:window-x="189"
+     inkscape:window-y="383"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg4619" /><path
+     id="path7712-0"
+     inkscape:connector-curvature="0"
+     sodipodi:nodetypes="cccccccccccccccsccc"
+     d="m 43.054279,20.631479 v 4.609092 L 25.240572,22.5 l -0.87205,13.079921 7.723476,4.733788 v 2.74057 l 
-9.591997,-1.868521 -9.591997,1.868521 v -2.74057 L 20.63148,35.579921 19.75943,22.5 1.9457214,25.240571 V 
20.631479 L 19.75943,14.278289 V 6.0565769 c 0,0 0,-4.1108558 2.740571,-4.1108558 2.740571,0 
2.740571,4.1108558 2.740571,4.1108558 v 7.7234751 z"
+     style="fill:#4a86cf;fill-opacity:1;stroke-width:2.74057055" /></svg>
\ No newline at end of file
diff --git a/src/js/guadec_map/maki-guadec-svg/bar-45.svg b/src/js/guadec_map/maki-guadec-svg/bar-45.svg
new file mode 100644
index 0000000..afca105
--- /dev/null
+++ b/src/js/guadec_map/maki-guadec-svg/bar-45.svg
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   version="1.0"
+   width="45"
+   height="45"
+   viewBox="0 0 45 45"
+   id="svg1360"
+   xml:space="preserve"
+   sodipodi:version="0.32"
+   inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
+   sodipodi:docname="bar-45.svg"><metadata
+     id="metadata19"><rdf:RDF><cc:Work
+         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; 
/><dc:title></dc:title></cc:Work></rdf:RDF></metadata><sodipodi:namedview
+     inkscape:window-height="861"
+     inkscape:window-width="1165"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     inkscape:zoom="7.6744655"
+     inkscape:cx="34.273567"
+     inkscape:cy="10.940374"
+     inkscape:window-x="125"
+     inkscape:window-y="233"
+     inkscape:current-layer="svg1360"
+     showgrid="false"
+     inkscape:window-maximized="0"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0" /><defs
+     id="defs1391" /><path
+     id="path4"
+     inkscape:connector-curvature="0"
+     sodipodi:nodetypes="sccsccsccszccccz"
+     d="m 22.607438,2.5365832 c -6.167321,0 -21.5856223,0.7709151 -20.0437922,2.3127453 L 
21.065608,24.122206 v 12.33464 c 0,3.083661 -9.250981,1.541831 -9.250981,6.167321 h 21.585621 c 0,-4.62549 
-9.25098,-3.08366 -9.25098,-6.167321 V 24.122206 L 42.651229,4.8493285 C 44.19306,3.3074983 
28.774758,2.5365832 22.607438,2.5365832 Z m 0,3.0836603 c 7.70915,0 14.647386,0.7709151 14.647386,0.7709151 L 
34.942079,8.7039039 H 10.272797 L 7.9600514,6.3911586 c 0,0 6.9382356,-0.7709151 14.6473866,-0.7709151 z"
+     style="stroke-width:3.08366036;fill:#4a86cf;fill-opacity:1" /></svg>
\ No newline at end of file
diff --git a/src/js/guadec_map/maki-guadec-svg/bus-45.svg b/src/js/guadec_map/maki-guadec-svg/bus-45.svg
new file mode 100644
index 0000000..3946555
--- /dev/null
+++ b/src/js/guadec_map/maki-guadec-svg/bus-45.svg
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 19.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   version="1.1"
+   id="svg4619"
+   inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
+   sodipodi:docname="bus-45.svg"
+   x="0px"
+   y="0px"
+   width="45"
+   height="45"
+   viewBox="0 0 45 45"
+   xml:space="preserve"><metadata
+     id="metadata8"><rdf:RDF><cc:Work
+         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; 
/><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
+     id="defs6" /><sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1231"
+     inkscape:window-height="575"
+     id="namedview4"
+     showgrid="false"
+     inkscape:zoom="5.6686394"
+     inkscape:cx="0.11556944"
+     inkscape:cy="14.663949"
+     inkscape:window-x="180"
+     inkscape:window-y="386"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg4619" /><path
+     id="path8043"
+     d="m 12.167085,0.35803825 c -4.0257037,0 -8.8567845,2.19441595 -8.8567845,8.10720555 V 24.564223 
35.785178 c 0,0 0,2.952261 2.9522613,2.952261 V 41.6897 c 0,0 0,2.952262 2.9522619,2.952262 2.9522613,0 
2.9522613,-2.952262 2.9522613,-2.952262 V 38.737439 H 32.832916 V 41.6897 c 0,0 0,2.952262 2.952261,2.952262 
2.952261,0 2.952261,-2.952262 2.952261,-2.952262 v -2.952261 c 0,0 2.952262,0 2.952262,-2.952261 V 8.4652438 
c 0,-6.038851 -3.648995,-8.10720555 -7.674698,-8.10720555 z M 12.90515,4.7864301 h 19.189701 c 0.408887,0 
0.738065,0.3291771 0.738065,0.7380659 0,0.408888 -0.329178,0.7380652 -0.738065,0.7380652 H 12.90515 c 
-0.408888,0 -0.738065,-0.3291772 -0.738065,-0.7380652 0,-0.4088888 0.329177,-0.7380659 0.738065,-0.7380659 z 
M 9.2148237,9.2148233 H 35.785177 c 2.952261,0 2.952261,2.8542467 2.952261,2.8542467 v 8.954799 c 0,0 
0,2.952263 -2.952261,2.952263 H 9.2148237 c -2.9522619,0 -2.9522619,-2.952263 -2.9522619,-2.952263 v 
-8.856784 c 0,0 0,-2.9522617 2.9522619,-2.952
 2617 z m
  0,20.6658317 c 1.6305343,0 2.9522613,1.321727 2.9522613,2.952261 0,1.630534 -1.321727,2.952262 
-2.9522613,2.952262 -1.6305346,0 -2.9522619,-1.321728 -2.9522619,-2.952262 0,-1.630534 1.3217273,-2.952261 
2.9522619,-2.952261 z m 26.5703533,0 c 1.630534,0 2.952261,1.321727 2.952261,2.952261 0,1.630534 
-1.321727,2.952262 -2.952261,2.952262 -1.630534,0 -2.952261,-1.321728 -2.952261,-2.952262 0,-1.630534 
1.321727,-2.952261 2.952261,-2.952261 z"
+     style="fill:#4a86cf;fill-opacity:1;stroke-width:2.95226145"
+     inkscape:connector-curvature="0" /></svg>
\ No newline at end of file
diff --git a/src/js/guadec_map/maki-guadec-svg/cafe-45.svg b/src/js/guadec_map/maki-guadec-svg/cafe-45.svg
new file mode 100644
index 0000000..7c9f9d1
--- /dev/null
+++ b/src/js/guadec_map/maki-guadec-svg/cafe-45.svg
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   version="1.0"
+   width="45"
+   height="45"
+   viewBox="0 0 45 45"
+   id="svg1360"
+   xml:space="preserve"
+   sodipodi:version="0.32"
+   inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
+   sodipodi:docname="cafe-45.svg"><metadata
+     id="metadata19"><rdf:RDF><cc:Work
+         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; 
/><dc:title></dc:title></cc:Work></rdf:RDF></metadata><sodipodi:namedview
+     inkscape:window-height="765"
+     inkscape:window-width="1255"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     inkscape:zoom="7.6744655"
+     inkscape:cx="12.122187"
+     inkscape:cy="10.940374"
+     inkscape:window-x="171"
+     inkscape:window-y="101"
+     inkscape:current-layer="svg1360"
+     showgrid="false"
+     inkscape:window-maximized="0"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0" /><defs
+     id="defs1391" /><path
+     inkscape:connector-curvature="0"
+     d="M 36.663575,11.877319 H 29.581787 V 4.7955319 H 1.2546384 V 18.959106 c 0.047094,7.822188 
6.4263677,14.124979 14.2485566,14.077885 4.99443,-0.0301 9.603611,-2.688247 12.131101,-6.996098 h 9.029279 c 
3.911271,0 7.081787,-3.170516 7.081787,-7.081787 0,-3.911271 -3.170516,-7.081787 -7.081787,-7.081787 z m 
0,10.622681 h -7.577513 c 0.314077,-1.154686 0.480853,-2.344426 0.495725,-3.540894 v -3.540893 h 7.081788 c 
1.955635,0 3.540893,1.585258 3.540893,3.540893 0,1.955636 -1.585258,3.540894 -3.540893,3.540894 z m 
-7.081788,15.934021 c 0,0.977641 -0.792806,1.770447 -1.770447,1.770447 H 3.0250852 c -0.9776407,0 
-1.7704468,-0.792806 -1.7704468,-1.770447 0,-0.977641 0.7928061,-1.770447 1.7704468,-1.770447 H 27.81134 c 
0.977641,0 1.770447,0.792806 1.770447,1.770447 z"
+     id="path2"
+     style="fill:#4a86cf;fill-opacity:1;stroke-width:3.54089355" /></svg>
\ No newline at end of file
diff --git a/src/js/guadec_map/maki-guadec-svg/circle-11.svg b/src/js/guadec_map/maki-guadec-svg/circle-11.svg
new file mode 100644
index 0000000..8b47638
--- /dev/null
+++ b/src/js/guadec_map/maki-guadec-svg/circle-11.svg
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 19.2.1, 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="Layer_1" xmlns="http://www.w3.org/2000/svg"; 
xmlns:xlink="http://www.w3.org/1999/xlink"; x="0px" y="0px"
+        width="11px" height="11px" viewBox="0 0 11 11" style="enable-background:new 0 0 11 11;" 
xml:space="preserve">
+<path d="M10,5.5C10,7.9853,7.9853,10,5.5,10S1,7.9853,1,5.5S3.0147,1,5.5,1S10,3.0147,10,5.5z"/>
+</svg>
diff --git a/src/js/guadec_map/maki-guadec-svg/circle-45.svg b/src/js/guadec_map/maki-guadec-svg/circle-45.svg
new file mode 100644
index 0000000..6128608
--- /dev/null
+++ b/src/js/guadec_map/maki-guadec-svg/circle-45.svg
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   version="1.0"
+   width="45"
+   height="45"
+   viewBox="0 0 45 45"
+   id="svg1360"
+   xml:space="preserve"
+   sodipodi:version="0.32"
+   inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
+   sodipodi:docname="circle-45.svg"><metadata
+     id="metadata19"><rdf:RDF><cc:Work
+         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; 
/><dc:title></dc:title></cc:Work></rdf:RDF></metadata><sodipodi:namedview
+     inkscape:window-height="765"
+     inkscape:window-width="1255"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     inkscape:zoom="7.6744655"
+     inkscape:cx="12.122187"
+     inkscape:cy="10.940374"
+     inkscape:window-x="368"
+     inkscape:window-y="32"
+     inkscape:current-layer="svg1360"
+     showgrid="false"
+     inkscape:window-maximized="0"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0" /><defs
+     id="defs1391" /><path
+     inkscape:connector-curvature="0"
+     d="m 44.004441,22.500001 c 0,11.876664 -9.627777,21.504441 -21.504441,21.504441 -11.876664,0 
-21.50444145,-9.627777 -21.50444145,-21.504441 0,-11.876665 9.62777745,-21.5044425 21.50444145,-21.5044425 
11.876664,0 21.504441,9.6277775 21.504441,21.5044425 z"
+     id="path2"
+     style="stroke-width:4.77876472;fill:#4a86cf;fill-opacity:1" /></svg>
\ No newline at end of file
diff --git a/src/js/guadec_map/maki-guadec-svg/gnome-guadec-blue.svg 
b/src/js/guadec_map/maki-guadec-svg/gnome-guadec-blue.svg
new file mode 100644
index 0000000..7801a9f
--- /dev/null
+++ b/src/js/guadec_map/maki-guadec-svg/gnome-guadec-blue.svg
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   version="1.0"
+   width="45"
+   height="45"
+   viewBox="0 0 45 45"
+   id="svg1360"
+   xml:space="preserve"
+   sodipodi:version="0.32"
+   inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
+   sodipodi:docname="gnome-guadec-blue.svg"><metadata
+     id="metadata19"><rdf:RDF><cc:Work
+         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; 
/><dc:title></dc:title></cc:Work></rdf:RDF></metadata><sodipodi:namedview
+     inkscape:window-height="761"
+     inkscape:window-width="1554"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     inkscape:zoom="7.6744655"
+     inkscape:cx="56.424947"
+     inkscape:cy="10.940374"
+     inkscape:window-x="229"
+     inkscape:window-y="277"
+     inkscape:current-layer="svg1360"
+     showgrid="false"
+     inkscape:window-maximized="0"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0" /><defs
+     id="defs1391" /><g
+     style="fill:#4a86cf;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-miterlimit:4"
+     id="g1365"
+     transform="matrix(0.36909777,0,0,0.36909777,4.7445693,0.67524886)"><g
+       id="g1367"
+       style="fill:#4a86cf;fill-opacity:1"><path
+         d="M 86.068,0 C 61.466,0 56.851,35.041 70.691,35.041 84.529,35.041 110.671,0 86.068,0 Z"
+         id="path1369"
+         style="fill:#4a86cf;fill-opacity:1"
+         inkscape:connector-curvature="0" /><path
+         d="M 45.217,30.699 C 52.586,31.149 60.671,2.577 46.821,4.374 32.976,6.171 37.845,30.249 
45.217,30.699 Z"
+         id="path1371"
+         style="fill:#4a86cf;fill-opacity:1"
+         inkscape:connector-curvature="0" /><path
+         d="M 11.445,48.453 C 16.686,46.146 12.12,23.581 3.208,29.735 -5.7,35.89 6.204,50.759 11.445,48.453 
Z"
+         id="path1373"
+         style="fill:#4a86cf;fill-opacity:1"
+         inkscape:connector-curvature="0" /><path
+         d="M 26.212,36.642 C 32.451,35.37 32.793,9.778 21.667,14.369 10.539,18.961 19.978,37.916 
26.212,36.642 Z"
+         id="path1375"
+         style="fill:#4a86cf;fill-opacity:1"
+         inkscape:connector-curvature="0" /><path
+         d="m 58.791,93.913 c 1.107,8.454 -6.202,12.629 -13.36,7.179 C 22.644,83.743 83.16,75.088 
79.171,51.386 75.86,31.712 15.495,37.769 8.621,68.553 3.968,89.374 27.774,118.26 52.614,118.26 c 12.22,0 
26.315,-11.034 28.952,-25.012 C 83.58,82.589 57.867,86.86 58.791,93.913 Z"
+         id="newshape"
+         style="fill:#4a86cf;fill-opacity:1"
+         inkscape:connector-curvature="0" /></g></g></svg>
\ No newline at end of file
diff --git a/src/js/guadec_map/maki-guadec-svg/gnome-guadec-red.svg 
b/src/js/guadec_map/maki-guadec-svg/gnome-guadec-red.svg
new file mode 100644
index 0000000..b147cf2
--- /dev/null
+++ b/src/js/guadec_map/maki-guadec-svg/gnome-guadec-red.svg
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   version="1.0"
+   width="45"
+   height="45"
+   viewBox="0 0 45 45"
+   id="svg1360"
+   xml:space="preserve"
+   sodipodi:version="0.32"
+   inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
+   sodipodi:docname="gnome-guadec-red.svg"><metadata
+     id="metadata19"><rdf:RDF><cc:Work
+         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; 
/><dc:title></dc:title></cc:Work></rdf:RDF></metadata><sodipodi:namedview
+     inkscape:window-height="761"
+     inkscape:window-width="1554"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     inkscape:zoom="7.6744655"
+     inkscape:cx="56.424947"
+     inkscape:cy="10.940374"
+     inkscape:window-x="328"
+     inkscape:window-y="388"
+     inkscape:current-layer="svg1360"
+     showgrid="false"
+     inkscape:window-maximized="0"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0" /><defs
+     id="defs1391" /><g
+     style="fill:#cf5e4a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-miterlimit:4"
+     id="g1365"
+     transform="matrix(0.36909777,0,0,0.36909777,4.7445693,0.67524886)"><g
+       id="g1367"
+       style="fill:#cf5e4a;fill-opacity:1"><path
+         d="M 86.068,0 C 61.466,0 56.851,35.041 70.691,35.041 84.529,35.041 110.671,0 86.068,0 Z"
+         id="path1369"
+         style="fill:#cf5e4a;fill-opacity:1"
+         inkscape:connector-curvature="0" /><path
+         d="M 45.217,30.699 C 52.586,31.149 60.671,2.577 46.821,4.374 32.976,6.171 37.845,30.249 
45.217,30.699 Z"
+         id="path1371"
+         style="fill:#cf5e4a;fill-opacity:1"
+         inkscape:connector-curvature="0" /><path
+         d="M 11.445,48.453 C 16.686,46.146 12.12,23.581 3.208,29.735 -5.7,35.89 6.204,50.759 11.445,48.453 
Z"
+         id="path1373"
+         style="fill:#cf5e4a;fill-opacity:1"
+         inkscape:connector-curvature="0" /><path
+         d="M 26.212,36.642 C 32.451,35.37 32.793,9.778 21.667,14.369 10.539,18.961 19.978,37.916 
26.212,36.642 Z"
+         id="path1375"
+         style="fill:#cf5e4a;fill-opacity:1"
+         inkscape:connector-curvature="0" /><path
+         d="m 58.791,93.913 c 1.107,8.454 -6.202,12.629 -13.36,7.179 C 22.644,83.743 83.16,75.088 
79.171,51.386 75.86,31.712 15.495,37.769 8.621,68.553 3.968,89.374 27.774,118.26 52.614,118.26 c 12.22,0 
26.315,-11.034 28.952,-25.012 C 83.58,82.589 57.867,86.86 58.791,93.913 Z"
+         id="newshape"
+         style="fill:#cf5e4a;fill-opacity:1"
+         inkscape:connector-curvature="0" /></g></g></svg>
\ No newline at end of file
diff --git a/src/js/guadec_map/maki-guadec-svg/gnome-guadec-yellow.svg 
b/src/js/guadec_map/maki-guadec-svg/gnome-guadec-yellow.svg
new file mode 100644
index 0000000..424042a
--- /dev/null
+++ b/src/js/guadec_map/maki-guadec-svg/gnome-guadec-yellow.svg
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   version="1.0"
+   width="45"
+   height="45"
+   viewBox="0 0 45 45"
+   id="svg1360"
+   xml:space="preserve"
+   sodipodi:version="0.32"
+   inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
+   sodipodi:docname="gnome-guadec-yellow.svg"><metadata
+     id="metadata19"><rdf:RDF><cc:Work
+         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; 
/><dc:title></dc:title></cc:Work></rdf:RDF></metadata><sodipodi:namedview
+     inkscape:window-height="761"
+     inkscape:window-width="1554"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     inkscape:zoom="7.6744655"
+     inkscape:cx="56.424947"
+     inkscape:cy="10.940374"
+     inkscape:window-x="328"
+     inkscape:window-y="388"
+     inkscape:current-layer="svg1360"
+     showgrid="false"
+     inkscape:window-maximized="0"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0" /><defs
+     id="defs1391" /><g
+     style="fill:#cfc84a;fill-opacity:0.96862745;fill-rule:nonzero;stroke:none;stroke-miterlimit:4"
+     id="g1365"
+     transform="matrix(0.36909777,0,0,0.36909777,4.7445693,0.67524886)"><g
+       id="g1367"
+       style="fill:#cfc84a;fill-opacity:0.96862745"><path
+         d="M 86.068,0 C 61.466,0 56.851,35.041 70.691,35.041 84.529,35.041 110.671,0 86.068,0 Z"
+         id="path1369"
+         style="fill:#cfc84a;fill-opacity:0.96862745"
+         inkscape:connector-curvature="0" /><path
+         d="M 45.217,30.699 C 52.586,31.149 60.671,2.577 46.821,4.374 32.976,6.171 37.845,30.249 
45.217,30.699 Z"
+         id="path1371"
+         style="fill:#cfc84a;fill-opacity:0.96862745"
+         inkscape:connector-curvature="0" /><path
+         d="M 11.445,48.453 C 16.686,46.146 12.12,23.581 3.208,29.735 -5.7,35.89 6.204,50.759 11.445,48.453 
Z"
+         id="path1373"
+         style="fill:#cfc84a;fill-opacity:0.96862745"
+         inkscape:connector-curvature="0" /><path
+         d="M 26.212,36.642 C 32.451,35.37 32.793,9.778 21.667,14.369 10.539,18.961 19.978,37.916 
26.212,36.642 Z"
+         id="path1375"
+         style="fill:#cfc84a;fill-opacity:0.96862745"
+         inkscape:connector-curvature="0" /><path
+         d="m 58.791,93.913 c 1.107,8.454 -6.202,12.629 -13.36,7.179 C 22.644,83.743 83.16,75.088 
79.171,51.386 75.86,31.712 15.495,37.769 8.621,68.553 3.968,89.374 27.774,118.26 52.614,118.26 c 12.22,0 
26.315,-11.034 28.952,-25.012 C 83.58,82.589 57.867,86.86 58.791,93.913 Z"
+         id="newshape"
+         style="fill:#cfc84a;fill-opacity:0.96862745"
+         inkscape:connector-curvature="0" /></g></g></svg>
\ No newline at end of file
diff --git a/src/js/guadec_map/maki-guadec-svg/home-45.svg b/src/js/guadec_map/maki-guadec-svg/home-45.svg
new file mode 100644
index 0000000..2bb26e8
--- /dev/null
+++ b/src/js/guadec_map/maki-guadec-svg/home-45.svg
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   version="1.0"
+   width="45"
+   height="45"
+   viewBox="0 0 45 45"
+   id="svg1360"
+   xml:space="preserve"
+   sodipodi:version="0.32"
+   inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
+   sodipodi:docname="home-45.svg"><metadata
+     id="metadata19"><rdf:RDF><cc:Work
+         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; 
/><dc:title></dc:title></cc:Work></rdf:RDF></metadata><sodipodi:namedview
+     inkscape:window-height="765"
+     inkscape:window-width="1255"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     inkscape:zoom="7.6744655"
+     inkscape:cx="12.122187"
+     inkscape:cy="10.940374"
+     inkscape:window-x="368"
+     inkscape:window-y="32"
+     inkscape:current-layer="svg1360"
+     showgrid="false"
+     inkscape:window-maximized="0"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0" /><defs
+     id="defs1391" /><path
+     inkscape:connector-curvature="0"
+     d="m 4.486945,42.969736 c 0,0.45228 0.3666529,0.818933 0.8189336,0.818933 H 17.586606 v -9.827203 h 
9.827203 v 9.827203 h 12.280729 c 0.452281,0 0.818934,-0.366653 0.818934,-0.818933 V 24.137213 H 4.486945 c 
0,0 0,18.832523 0,18.832523 z M 43.566456,19.482722 40.513799,16.800223 V 4.4870649 c 0,-1.8091225 
-1.466579,-3.2757343 -3.275734,-3.2757343 -1.809155,0 -3.275734,1.4666118 -3.275734,3.2757343 V 11.038534 L 
23.095736,1.5061467 C 22.786179,1.1775905 22.269137,1.1614739 21.93973,1.4701136 L 21.903697,1.5061467 
1.4333055,19.401484 c -0.3092294,0.330063 -0.2923266,0.848317 0.037736,1.157546 0.1489149,0.139514 
0.3445745,0.218393 0.54862,0.22121 l 5.7430174,0.08189 H 42.966342 c 0.45228,0.0015 0.820145,-0.363934 
0.821652,-0.816215 6.88e-4,-0.209025 -0.07855,-0.410384 -0.221538,-0.562869 z"
+     id="path2"
+     style="stroke-width:3.27573442;fill:#4a86cf;fill-opacity:1" /></svg>
\ No newline at end of file
diff --git a/src/js/guadec_map/maki-guadec-svg/hospital-45.svg 
b/src/js/guadec_map/maki-guadec-svg/hospital-45.svg
new file mode 100644
index 0000000..329817c
--- /dev/null
+++ b/src/js/guadec_map/maki-guadec-svg/hospital-45.svg
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   version="1.0"
+   width="45"
+   height="45"
+   viewBox="0 0 45 45"
+   id="svg1360"
+   xml:space="preserve"
+   sodipodi:version="0.32"
+   inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
+   sodipodi:docname="hospital-45.svg"><metadata
+     id="metadata19"><rdf:RDF><cc:Work
+         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; 
/><dc:title></dc:title></cc:Work></rdf:RDF></metadata><sodipodi:namedview
+     inkscape:window-height="765"
+     inkscape:window-width="1255"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     inkscape:zoom="7.6744655"
+     inkscape:cx="12.122187"
+     inkscape:cy="10.940374"
+     inkscape:window-x="368"
+     inkscape:window-y="32"
+     inkscape:current-layer="svg1360"
+     showgrid="false"
+     inkscape:window-maximized="0"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0" /><defs
+     id="defs1391" /><path
+     id="rect4194"
+     inkscape:connector-curvature="0"
+     style="fill:#4a86cf;fill-opacity:1;stroke-width:3.23518443"
+     d="m 20.882408,1.4713012 c -1.94111,0 -3.235184,1.2940738 -3.235184,3.2351845 V 17.647224 H 4.7064856 c 
-1.9411107,0 -3.2351845,1.294074 -3.2351845,3.235184 v 3.235185 c 0,1.941111 1.2940738,3.235184 
3.2351845,3.235184 H 17.647224 v 12.940737 c 0,1.941111 1.294074,3.235185 3.235184,3.235185 h 3.235185 c 
1.94111,0 3.235184,-1.294074 3.235184,-3.235185 V 27.352777 h 12.940738 c 1.94111,0 3.235184,-1.294073 
3.235184,-3.235184 v -3.235185 c 0,-1.94111 -1.294074,-3.235184 -3.235184,-3.235184 H 27.352777 V 4.7064857 c 
0,-1.9411107 -1.294074,-3.2351845 -3.235184,-3.2351845 z" /></svg>
\ No newline at end of file
diff --git a/src/js/guadec_map/maki-guadec-svg/music-45.svg b/src/js/guadec_map/maki-guadec-svg/music-45.svg
new file mode 100644
index 0000000..486ee78
--- /dev/null
+++ b/src/js/guadec_map/maki-guadec-svg/music-45.svg
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   version="1.0"
+   width="45"
+   height="45"
+   viewBox="0 0 45 45"
+   id="svg1360"
+   xml:space="preserve"
+   sodipodi:version="0.32"
+   inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
+   sodipodi:docname="music-45.svg"><metadata
+     id="metadata19"><rdf:RDF><cc:Work
+         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; 
/><dc:title></dc:title></cc:Work></rdf:RDF></metadata><sodipodi:namedview
+     inkscape:window-height="765"
+     inkscape:window-width="1255"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     inkscape:zoom="7.6744655"
+     inkscape:cx="12.122187"
+     inkscape:cy="10.940374"
+     inkscape:window-x="368"
+     inkscape:window-y="32"
+     inkscape:current-layer="svg1360"
+     showgrid="false"
+     inkscape:window-maximized="0"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0" /><defs
+     id="defs1391" /><path
+     inkscape:connector-curvature="0"
+     d="m 41.790828,1.6016021 c -0.258497,0.00257 -0.512493,0.068804 -0.739482,0.1929083 L 
12.854586,9.639447 c -0.8877,0 -1.607569,0.71987 -1.607569,1.607569 v 20.191069 c -0.973866,-0.578082 
-2.0827665,-0.888343 -3.2151381,-0.900239 -3.5514414,0 -6.4302759,2.878835 -6.4302759,6.430276 0,3.551442 
2.8788345,6.430276 6.4302759,6.430276 3.5514411,0 6.4302761,-2.878834 6.4302761,-6.430276 V 22.049881 l 
25.721104,-7.137607 v 11.703103 c -0.973866,-0.578082 -2.082767,-0.888343 -3.215138,-0.900239 -3.551442,0 
-6.430276,2.878835 -6.430276,6.430277 0,3.551442 2.878834,6.430276 6.430276,6.430276 3.551441,0 
6.430276,-2.878834 6.430276,-6.430276 V 3.2091711 c 0,-0.8876996 -0.71987,-1.607569 -1.607569,-1.607569 z M 
40.183259,11.697136 14.462155,18.834743 V 12.404466 L 40.183259,5.2668594 c 0,0 0,6.4302766 0,6.4302766 z"
+     id="path2"
+     style="fill:#4a86cf;fill-opacity:1;stroke-width:3.21513796" /></svg>
\ No newline at end of file
diff --git a/src/js/guadec_map/maki-guadec-svg/park-45.svg b/src/js/guadec_map/maki-guadec-svg/park-45.svg
new file mode 100644
index 0000000..c27e65f
--- /dev/null
+++ b/src/js/guadec_map/maki-guadec-svg/park-45.svg
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   version="1.0"
+   width="45"
+   height="45"
+   viewBox="0 0 45 45"
+   id="svg1360"
+   xml:space="preserve"
+   sodipodi:version="0.32"
+   inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
+   sodipodi:docname="park-45.svg"><metadata
+     id="metadata19"><rdf:RDF><cc:Work
+         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; 
/><dc:title></dc:title></cc:Work></rdf:RDF></metadata><sodipodi:namedview
+     inkscape:window-height="765"
+     inkscape:window-width="1255"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     inkscape:zoom="7.6744655"
+     inkscape:cx="12.122187"
+     inkscape:cy="10.940374"
+     inkscape:window-x="368"
+     inkscape:window-y="32"
+     inkscape:current-layer="svg1360"
+     showgrid="false"
+     inkscape:window-maximized="0"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0" /><defs
+     id="defs1391" /><path
+     inkscape:connector-curvature="0"
+     d="m 41.727638,16.833971 c 0.03628,-2.20317 -1.21924,-4.224322 -3.210216,-5.168447 C 
38.348886,9.5808101 36.595787,7.9821229 34.504653,8.0058785 34.187484,8.0312392 33.874809,8.0960855 
33.573691,8.1984914 33.378831,6.0797494 31.503423,4.5202268 29.385002,4.7150869 28.55452,4.79149 
27.771548,5.135304 27.153261,5.6945235 v 0 c 0,-2.2163326 -1.796437,-4.012769 -4.012769,-4.012769 -2.216333,0 
-4.012769,1.7964364 -4.012769,4.012769 0,0 0.128408,0.064204 0.128408,0.1605108 C 17.614427,4.4467129 
15.141919,4.6361156 13.733598,6.2781407 13.258165,6.8325448 12.947095,7.5086162 12.835701,8.2305936 
12.327524,8.0684777 11.795912,7.9927166 11.262695,8.0058785 8.6033527,7.983728 6.4293949,10.12141 
6.4072444,12.780753 c -0.00546,0.641401 0.1174939,1.277024 0.3611492,1.870272 -2.5440955,0.711063 
-4.0301042,3.35018 -3.3190415,5.894276 0.4500722,1.610566 1.7084766,2.868969 3.3190415,3.319041 
0.8131476,2.513278 3.5100494,3.891744 6.0233274,3.078597 1.718428,-0.55601 2.977153,-2.032388 3.25
 4195,-3.
 816946 0.587469,0.510745 1.313941,0.834977 2.08664,0.930962 V 40.10803 l -5.296855,3.210215 H 28.886777 L 
23.750433,40.10803 v -6.420429 c 2.369459,-2.861907 5.430079,-5.071818 8.892295,-6.42043 2.572025,0.6032 
5.145975,-0.992598 5.749175,-3.564303 0.09117,-0.388756 0.133545,-0.787465 0.125519,-1.186816 
0.0093,-0.171105 0.0093,-0.34253 0,-0.513635 1.990976,-0.944123 3.246491,-2.965274 3.210216,-5.168446 z m 
-17.977205,14.47807 v -11.04314 c 0.867721,1.543151 2.499152,2.499795 4.269586,2.503968 h 0.89886 c 
0.05008,1.409606 0.71973,2.725473 1.829822,3.595441 -2.618572,1.200621 -4.991563,2.876995 -6.998268,4.943731 
z"
+     id="path2"
+     style="stroke-width:3.21021533;fill:#4a86cf;fill-opacity:1" /></svg>
\ No newline at end of file
diff --git a/src/js/guadec_map/maki-guadec-svg/parking-45.svg 
b/src/js/guadec_map/maki-guadec-svg/parking-45.svg
new file mode 100644
index 0000000..8982332
--- /dev/null
+++ b/src/js/guadec_map/maki-guadec-svg/parking-45.svg
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   version="1.0"
+   width="45"
+   height="45"
+   viewBox="0 0 45 45"
+   id="svg1360"
+   xml:space="preserve"
+   sodipodi:version="0.32"
+   inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
+   sodipodi:docname="parking-45.svg"><metadata
+     id="metadata19"><rdf:RDF><cc:Work
+         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; 
/><dc:title></dc:title></cc:Work></rdf:RDF></metadata><sodipodi:namedview
+     inkscape:window-height="765"
+     inkscape:window-width="1255"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     inkscape:zoom="7.6744655"
+     inkscape:cx="12.122187"
+     inkscape:cy="10.940374"
+     inkscape:window-x="368"
+     inkscape:window-y="32"
+     inkscape:current-layer="svg1360"
+     showgrid="false"
+     inkscape:window-maximized="0"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0" /><defs
+     id="defs1391" /><path
+     inkscape:connector-curvature="0"
+     d="m 33.915216,25.096856 c -2.834411,2.107075 -6.315575,3.158828 -9.842532,2.973575 h -8.17733 v 
13.76765 H 7.5990814 V 3.1816093 H 24.607928 c 3.361626,-0.1799013 6.672701,0.8777992 9.307288,2.9735758 
2.474312,2.4225713 3.729755,5.8285039 3.419611,9.2775529 0.377941,3.572452 -0.878691,7.124387 
-3.419611,9.664118 z M 27.670709,11.210262 C 26.40813,10.286075 24.861276,9.8334969 23.299555,9.9316249 H 
15.895354 V 21.29068 h 7.404201 c 1.580455,0.09694 3.140094,-0.40173 4.371154,-1.39758 1.128472,-1.17367 
1.692856,-2.779103 1.546259,-4.400891 0.160573,-1.587889 -0.408272,-3.162991 -1.546259,-4.281947 z"
+     id="path2-3"
+     style="fill:#4a86cf;fill-opacity:1;stroke-width:2.97357464" /></svg>
\ No newline at end of file
diff --git a/src/js/guadec_map/maki-guadec-svg/rail-45.svg b/src/js/guadec_map/maki-guadec-svg/rail-45.svg
new file mode 100644
index 0000000..4481800
--- /dev/null
+++ b/src/js/guadec_map/maki-guadec-svg/rail-45.svg
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   version="1.0"
+   width="45"
+   height="45"
+   viewBox="0 0 45 45"
+   id="svg1360"
+   xml:space="preserve"
+   sodipodi:version="0.32"
+   inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
+   sodipodi:docname="rail-45.svg"><metadata
+     id="metadata19"><rdf:RDF><cc:Work
+         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; 
/><dc:title></dc:title></cc:Work></rdf:RDF></metadata><sodipodi:namedview
+     inkscape:window-height="702"
+     inkscape:window-width="1444"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     inkscape:zoom="7.6744655"
+     inkscape:cx="-10.029193"
+     inkscape:cy="10.940374"
+     inkscape:window-x="171"
+     inkscape:window-y="339"
+     inkscape:current-layer="svg1360"
+     showgrid="false"
+     inkscape:window-maximized="0"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0" /><defs
+     id="defs1391" /><path
+     inkscape:connector-curvature="0"
+     d="m 8.7438885,1.1016028 c -1.6883335,0 -3.0569138,1.3685803 -3.0569138,3.0569138 V 28.613828 c 
0,1.688333 1.3685803,3.056914 3.0569138,3.056914 H 36.256111 c 1.688334,0 3.056914,-1.368581 
3.056914,-3.056914 V 4.1585166 c 0,-1.6883335 -1.36858,-3.0569138 -3.056914,-3.0569138 z M 17.1504,2.6300597 
h 0.02996 10.699198 c 0.42216,0 0.764229,0.3420687 0.764229,0.7642284 0,0.4221598 -0.342069,0.7642285 
-0.764229,0.7642285 H 17.150492 c -0.42216,0 -0.764229,-0.3420687 -0.764229,-0.7642285 0,-0.4221597 
0.342069,-0.7642284 0.764229,-0.7642284 z M 10.272344,7.2154304 H 20.971542 V 19.443085 H 10.272344 c 
-0.8440125,0 -1.5284555,-0.684443 -1.5284555,-1.528456 V 8.7438873 c 0,-0.8440139 0.684443,-1.5284569 
1.5284555,-1.5284569 z m 13.756112,0 h 10.699198 c 0.844014,0 1.528457,0.684443 1.528457,1.5284569 v 
9.1707417 c 0,0.844013 -0.684443,1.528456 -1.528457,1.528456 H 24.028456 Z M 14.857715,22.499999 c 1.688333,0 
3.056914,1.368581 3.056914,3.056914 0,1.688334 -1.368581,3.056915 -3.
 056914,3
 .056915 -1.688333,0 -3.056914,-1.368581 -3.056914,-3.056915 0,-1.688333 1.368581,-3.056914 
3.056914,-3.056914 z m 15.284569,0 c 1.688333,0 3.056913,1.368581 3.056913,3.056914 0,1.688334 
-1.36858,3.056915 -3.056913,3.056915 -1.688334,0 -3.056914,-1.368581 -3.056914,-3.056915 0,-1.688333 
1.36858,-3.056914 3.056914,-3.056914 z m 1.36128,12.209746 c -0.197813,0.01681 -0.39841,0.07471 
-0.585111,0.173143 -0.682609,0.359494 -0.989444,1.171229 -0.716465,1.892661 l 0.519437,1.00902 H 14.278574 l 
0.394054,-0.823933 c 0.29866,-0.789601 -0.100022,-1.671618 -0.889608,-1.970276 -0.721431,-0.272676 
-1.533167,0.03415 -1.89266,0.716462 l -3.0569134,6.113827 c -0.064807,0.176078 -0.093838,0.361902 
-0.089558,0.549291 0,0.844014 0.684443,1.528457 1.5284564,1.528457 0.550855,-0.0031 1.054904,-0.307422 
1.313519,-0.794083 v -0.15523 h 0.214931 l 0.949315,-2.107601 h 19.499766 l 0.949315,2.107598 v 0.15523 c 
0.258615,0.486661 0.762664,0.791026 1.313519,0.794083 0.844011,0 1.528457,-0.684443 1.52845
 7,-1.528
 457 0.06083,-0.240885 0.06083,-0.49349 0,-0.734375 L 32.984253,35.521735 C 32.6892,34.961632 
32.097055,34.659202 31.503564,34.709745 Z"
+     id="path3"
+     style="fill:#4a86cf;fill-opacity:1;stroke-width:3.05691385" /></svg>
\ No newline at end of file
diff --git a/src/js/guadec_map/maki-guadec-svg/restaurant-45.svg 
b/src/js/guadec_map/maki-guadec-svg/restaurant-45.svg
new file mode 100644
index 0000000..c8b5daa
--- /dev/null
+++ b/src/js/guadec_map/maki-guadec-svg/restaurant-45.svg
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   version="1.0"
+   width="45"
+   height="45"
+   viewBox="0 0 45 45"
+   id="svg1360"
+   xml:space="preserve"
+   sodipodi:version="0.32"
+   inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
+   sodipodi:docname="restaurant-45.svg"><metadata
+     id="metadata19"><rdf:RDF><cc:Work
+         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; 
/><dc:title></dc:title></cc:Work></rdf:RDF></metadata><sodipodi:namedview
+     inkscape:window-height="702"
+     inkscape:window-width="1444"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     inkscape:zoom="7.6744655"
+     inkscape:cx="-10.029193"
+     inkscape:cy="10.940374"
+     inkscape:window-x="171"
+     inkscape:window-y="339"
+     inkscape:current-layer="svg1360"
+     showgrid="false"
+     inkscape:window-maximized="0"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0" /><defs
+     id="defs1391" /><path
+     inkscape:connector-curvature="0"
+     id="path11774"
+     d="M 12.473538,2.4258347 9.7969828,17.146889 c -0.3918477,2.154628 4.7682832,3.161012 4.6839722,5.35311 
L 13.811816,39.89761 c -0.10278,2.674682 2.676556,2.676555 2.676556,2.676555 0,0 2.779335,-0.0019 
2.676555,-2.676555 L 18.495788,22.499999 c -0.08404,-2.18835 4.639542,-3.160475 4.683972,-5.35311 L 
20.503205,2.4258347 H 19.164927 L 19.834066,13.132056 17.826649,14.470334 17.157511,2.4258347 H 15.819233 L 
15.150094,14.470334 13.142677,13.132056 13.811816,2.4258347 Z m 22.750722,0 c -1.971016,0 -5.25729,1.7528762 
-6.571211,4.3807183 -1.094979,1.9710155 -1.458455,6.374217 -1.458455,9.002059 v 6.691387 c 0,2.189958 
2.919854,2.676556 4.014833,2.676556 L 29.871149,39.89761 c -0.242228,2.665581 2.676555,2.676555 
2.676555,2.676555 0,0 2.676556,0 2.676556,-2.676555 z"
+     style="fill:#4a86cf;fill-opacity:1;stroke-width:2.6765554" /></svg>
\ No newline at end of file
diff --git a/src/js/guadec_map/maki-guadec-svg/rocket-45.svg b/src/js/guadec_map/maki-guadec-svg/rocket-45.svg
new file mode 100644
index 0000000..b18fc28
--- /dev/null
+++ b/src/js/guadec_map/maki-guadec-svg/rocket-45.svg
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   version="1.0"
+   width="45"
+   height="45"
+   viewBox="0 0 45 45"
+   id="svg1360"
+   xml:space="preserve"
+   sodipodi:version="0.32"
+   inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
+   sodipodi:docname="rocket-45.svg"><metadata
+     id="metadata19"><rdf:RDF><cc:Work
+         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; 
/><dc:title></dc:title></cc:Work></rdf:RDF></metadata><sodipodi:namedview
+     inkscape:window-height="702"
+     inkscape:window-width="1444"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     inkscape:zoom="7.6744655"
+     inkscape:cx="-10.029193"
+     inkscape:cy="10.940374"
+     inkscape:window-x="171"
+     inkscape:window-y="339"
+     inkscape:current-layer="svg1360"
+     showgrid="false"
+     inkscape:window-maximized="0"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0" /><defs
+     id="defs1391" /><path
+     id="path7143"
+     inkscape:connector-curvature="0"
+     d="m 38.162868,3.1437063 c -6.717829,0 -15.731955,4.4183056 -21.785236,12.0144277 h -5.018083 c 
-3.6260162,0 -5.704247,2.594515 -7.135165,5.33831 l -1.9156195,3.672509 h 4.5224157 4.5283688 l 
4.699753,4.505412 4.699753,4.505411 v 4.341113 4.335405 l 3.830925,-1.836105 c 2.86215,-1.372048 
5.56858,-3.36434 5.56858,-6.840413 V 28.369198 C 38.082345,22.566228 42.691235,13.924853 42.691235,7.4848191 
V 3.1437063 Z M 30.15856,12.154527 c 1.730451,0 3.133169,1.344715 3.133169,3.003607 v 0 c 0,1.658892 
-1.402718,3.003606 -3.133169,3.003606 v 0 c -1.730449,0 -3.133167,-1.344714 -3.133167,-3.003606 v 0 c 
0,-1.658892 1.402718,-3.003607 3.133167,-3.003607 z M 9.7929645,30.176168 8.2263803,31.67797 c 
-2.2627744,2.169208 -3.1331688,7.509018 -3.1331688,7.509018 0,0 5.3201205,-0.594715 7.8329215,-3.003607 l 
1.566585,-1.501803 z"
+     style="stroke-width:3.06770396;fill:#4a86cf;fill-opacity:1" /></svg>
\ No newline at end of file
diff --git a/src/js/guadec_map/maki-guadec-svg/star-11.svg b/src/js/guadec_map/maki-guadec-svg/star-11.svg
new file mode 100644
index 0000000..858111b
--- /dev/null
+++ b/src/js/guadec_map/maki-guadec-svg/star-11.svg
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 19.2.1, 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="svg4764" inkscape:version="0.91 r13725" sodipodi:docname="star-11.svg" 
xmlns:cc="http://creativecommons.org/ns#"; xmlns:dc="http://purl.org/dc/elements/1.1/"; 
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"; 
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"; 
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"; xmlns:svg="http://www.w3.org/2000/svg";
+        xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; x="0px" y="0px" 
width="11px" height="11px"
+        viewBox="0 0 11 11" style="enable-background:new 0 0 11 11;" xml:space="preserve">
+<path id="path4749-2-8-2" inkscape:connector-curvature="0" sodipodi:nodetypes="ccccccccccc" 
d="M5.4,0L4,3.5H0l3,3L1.5,11l3.9-2.6
+       L9.5,11L8,6.5l3-3H7L5.4,0z"/>
+</svg>
diff --git a/src/js/guadec_map/maki-guadec-svg/star-45.svg b/src/js/guadec_map/maki-guadec-svg/star-45.svg
new file mode 100644
index 0000000..47765e5
--- /dev/null
+++ b/src/js/guadec_map/maki-guadec-svg/star-45.svg
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   version="1.0"
+   width="45"
+   height="45"
+   viewBox="0 0 45 45"
+   id="svg1360"
+   xml:space="preserve"
+   sodipodi:version="0.32"
+   inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
+   sodipodi:docname="star-45.svg"><metadata
+     id="metadata19"><rdf:RDF><cc:Work
+         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; 
/><dc:title></dc:title></cc:Work></rdf:RDF></metadata><sodipodi:namedview
+     inkscape:window-height="702"
+     inkscape:window-width="1444"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     inkscape:zoom="7.6744655"
+     inkscape:cx="-10.029193"
+     inkscape:cy="10.940374"
+     inkscape:window-x="171"
+     inkscape:window-y="339"
+     inkscape:current-layer="svg1360"
+     showgrid="false"
+     inkscape:window-maximized="0"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0" /><defs
+     id="defs1391" /><path
+     id="path4749-2-8-2"
+     inkscape:connector-curvature="0"
+     sodipodi:nodetypes="ccccccccccc"
+     d="M 22.122811,1.7546386 16.842174,14.956232 H 1.7546386 L 13.07029,26.271884 7.4124645,43.245361 
22.122811,33.438463 37.587535,43.245361 31.929709,26.271884 43.245361,14.956232 H 28.157826 Z"
+     style="stroke-width:3.77188396;fill:#4a86cf;fill-opacity:1" /></svg>
\ No newline at end of file
diff --git a/src/js/guadec_map/maki-guadec-svg/theatre-45.svg 
b/src/js/guadec_map/maki-guadec-svg/theatre-45.svg
new file mode 100644
index 0000000..b6ce2b8
--- /dev/null
+++ b/src/js/guadec_map/maki-guadec-svg/theatre-45.svg
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   version="1.0"
+   width="45"
+   height="45"
+   viewBox="0 0 45 45"
+   id="svg1360"
+   xml:space="preserve"
+   sodipodi:version="0.32"
+   inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
+   sodipodi:docname="theatre-45.svg"><metadata
+     id="metadata19"><rdf:RDF><cc:Work
+         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; 
/><dc:title></dc:title></cc:Work></rdf:RDF></metadata><sodipodi:namedview
+     inkscape:window-height="702"
+     inkscape:window-width="1444"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     inkscape:zoom="7.6744655"
+     inkscape:cx="-10.029193"
+     inkscape:cy="10.940374"
+     inkscape:window-x="171"
+     inkscape:window-y="339"
+     inkscape:current-layer="svg1360"
+     showgrid="false"
+     inkscape:window-maximized="0"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0" /><defs
+     id="defs1391" /><path
+     inkscape:connector-curvature="0"
+     id="path6342-3"
+     d="m 4.651358,1.4061495 c 0,0 -3.2452078,0 -3.2452078,3.2452078 V 21.390788 c 0,5.615183 
1.1488036,12.467439 11.3582278,12.467439 h 1.622603 v -9.735623 l -8.1130191,3.245207 c 0,0 0,-8.113019 
8.1130191,-8.113019 V 14.38698 c 0,-2.296958 0.281684,-4.286595 1.622604,-5.7615413 1.238047,-1.3616892 
3.260136,-4.0798752 8.619921,-1.5275193 l 2.738307,1.78097 V 4.6513573 c 0,0 0,-3.2452078 
-3.245208,-3.2452078 -2.296958,0 -6.417723,3.2452078 -9.735624,3.2452078 -3.3179,0 -7.1832671,-3.2452078 
-9.735623,-3.2452078 z m 3.2452078,6.4904156 c 1.7923282,0 3.2452082,1.4528795 3.2452082,3.2452069 0,1.792329 
-1.45288,3.245208 -3.2452082,3.245208 -1.7923283,0 -3.2452078,-1.452879 -3.2452078,-3.245208 0,-1.7923274 
1.4528795,-3.2452069 3.2452078,-3.2452069 z M 20.877397,11.141772 c 0,0 -3.245208,0 -3.245208,3.245208 v 
16.226039 c 0,6.490415 3.245208,12.980831 12.98083,12.980831 9.735624,0 12.980831,-6.490416 
12.980831,-12.980831 V 14.38698 c 0,-3.245208 -3.245207,-3.245208 -3.245207,-3.
 245208 -
 2.296958,0 -6.417723,3.245208 -9.735624,3.245208 -3.317899,0 -7.183266,-3.245208 -9.735622,-3.245208 z m 
3.245208,6.490416 c 1.792328,0 3.245208,1.45288 3.245208,3.245208 0,1.792328 -1.45288,3.245208 
-3.245208,3.245208 -1.792329,0 -3.245208,-1.45288 -3.245208,-3.245208 0,-1.792328 1.452879,-3.245208 
3.245208,-3.245208 z m 12.98083,0 c 1.792328,0 3.245208,1.45288 3.245208,3.245208 0,1.792328 
-1.45288,3.245208 -3.245208,3.245208 -1.792328,0 -3.245208,-1.45288 -3.245208,-3.245208 0,-1.792328 
1.45288,-3.245208 3.245208,-3.245208 z M 22.500001,30.613019 h 8.113018 8.11302 c 0,0 0,8.113019 
-8.11302,8.113019 -8.113018,0 -8.113018,-8.113019 -8.113018,-8.113019 z"
+     style="fill:#4a86cf;fill-opacity:1;stroke-width:3.24520779" /></svg>
\ No newline at end of file
diff --git a/src/js/guadec_map/maki-guadec-svg/town-hall-45.svg 
b/src/js/guadec_map/maki-guadec-svg/town-hall-45.svg
new file mode 100644
index 0000000..f5df5ba
--- /dev/null
+++ b/src/js/guadec_map/maki-guadec-svg/town-hall-45.svg
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   version="1.0"
+   width="45"
+   height="45"
+   viewBox="0 0 45 45"
+   id="svg1360"
+   xml:space="preserve"
+   sodipodi:version="0.32"
+   inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
+   sodipodi:docname="town-hall-45.svg"><metadata
+     id="metadata19"><rdf:RDF><cc:Work
+         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; 
/><dc:title></dc:title></cc:Work></rdf:RDF></metadata><sodipodi:namedview
+     inkscape:window-height="702"
+     inkscape:window-width="1444"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     inkscape:zoom="7.6744655"
+     inkscape:cx="-10.029193"
+     inkscape:cy="10.940374"
+     inkscape:window-x="171"
+     inkscape:window-y="339"
+     inkscape:current-layer="svg1360"
+     showgrid="false"
+     inkscape:window-maximized="0"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0" /><defs
+     id="defs1391" /><path
+     inkscape:connector-curvature="0"
+     id="path7509"
+     d="M 22.500001,1.5364508 1.5364522,12.648099 v 1.788997 H 43.463548 V 12.648099 Z M 4.7616135,17.662257 
v 16.125808 l -3.2251613,5.014158 v 4.661326 H 43.463548 V 38.802223 L 40.238387,33.788065 V 17.662257 Z m 
6.4503225,3.225161 h 3.225162 v 17.738389 h -3.225162 z m 9.675484,0 h 3.225162 V 38.625807 H 20.88742 Z m 
9.675483,0 h 3.225161 v 17.738389 h -3.225161 z"
+     style="stroke-width:3.22516131;fill:#4a86cf;fill-opacity:1" /></svg>
\ No newline at end of file
diff --git a/src/js/guadec_map/sprite.json b/src/js/guadec_map/sprite.json
new file mode 100644
index 0000000..ea3e765
--- /dev/null
+++ b/src/js/guadec_map/sprite.json
@@ -0,0 +1,149 @@
+{
+  "airport-45": {
+    "height": 45,
+    "pixelRatio": 1,
+    "width": 45,
+    "x": 0,
+    "y": 0
+  },
+  "bar-45": {
+    "height": 45,
+    "pixelRatio": 1,
+    "width": 45,
+    "x": 45,
+    "y": 0
+  },
+  "bus-45": {
+    "height": 45,
+    "pixelRatio": 1,
+    "width": 45,
+    "x": 0,
+    "y": 45
+  },
+  "cafe-45": {
+    "height": 45,
+    "pixelRatio": 1,
+    "width": 45,
+    "x": 45,
+    "y": 45
+  },
+  "circle-11": {
+    "height": 11,
+    "pixelRatio": 1,
+    "width": 11,
+    "x": 315,
+    "y": 0
+  },
+  "circle-45": {
+    "height": 45,
+    "pixelRatio": 1,
+    "width": 45,
+    "x": 90,
+    "y": 0
+  },
+  "gnome-guadec-blue": {
+    "height": 45,
+    "pixelRatio": 1,
+    "width": 45,
+    "x": 135,
+    "y": 0
+  },
+  "gnome-guadec-red": {
+    "height": 45,
+    "pixelRatio": 1,
+    "width": 45,
+    "x": 90,
+    "y": 45
+  },
+  "gnome-guadec-yellow": {
+    "height": 45,
+    "pixelRatio": 1,
+    "width": 45,
+    "x": 135,
+    "y": 45
+  },
+  "home-45": {
+    "height": 45,
+    "pixelRatio": 1,
+    "width": 45,
+    "x": 0,
+    "y": 90
+  },
+  "hospital-45": {
+    "height": 45,
+    "pixelRatio": 1,
+    "width": 45,
+    "x": 45,
+    "y": 90
+  },
+  "music-45": {
+    "height": 45,
+    "pixelRatio": 1,
+    "width": 45,
+    "x": 90,
+    "y": 90
+  },
+  "park-45": {
+    "height": 45,
+    "pixelRatio": 1,
+    "width": 45,
+    "x": 135,
+    "y": 90
+  },
+  "parking-45": {
+    "height": 45,
+    "pixelRatio": 1,
+    "width": 45,
+    "x": 0,
+    "y": 135
+  },
+  "rail-45": {
+    "height": 45,
+    "pixelRatio": 1,
+    "width": 45,
+    "x": 45,
+    "y": 135
+  },
+  "restaurant-45": {
+    "height": 45,
+    "pixelRatio": 1,
+    "width": 45,
+    "x": 90,
+    "y": 135
+  },
+  "rocket-45": {
+    "height": 45,
+    "pixelRatio": 1,
+    "width": 45,
+    "x": 135,
+    "y": 135
+  },
+  "star-11": {
+    "height": 11,
+    "pixelRatio": 1,
+    "width": 11,
+    "x": 326,
+    "y": 0
+  },
+  "star-45": {
+    "height": 45,
+    "pixelRatio": 1,
+    "width": 45,
+    "x": 180,
+    "y": 0
+  },
+  "theatre-45": {
+    "height": 45,
+    "pixelRatio": 1,
+    "width": 45,
+    "x": 225,
+    "y": 0
+  },
+  "town-hall-45": {
+    "height": 45,
+    "pixelRatio": 1,
+    "width": 45,
+    "x": 270,
+    "y": 0
+  }
+}
\ No newline at end of file
diff --git a/src/js/guadec_map/sprite.png b/src/js/guadec_map/sprite.png
new file mode 100644
index 0000000..f6ad956
Binary files /dev/null and b/src/js/guadec_map/sprite.png differ
diff --git a/src/js/guadec_map/sprite 2x json b/src/js/guadec_map/sprite 2x json
new file mode 100644
index 0000000..5509a0b
--- /dev/null
+++ b/src/js/guadec_map/sprite 2x json
@@ -0,0 +1,149 @@
+{
+  "airport-45": {
+    "height": 90,
+    "pixelRatio": 2,
+    "width": 90,
+    "x": 0,
+    "y": 0
+  },
+  "bar-45": {
+    "height": 90,
+    "pixelRatio": 2,
+    "width": 90,
+    "x": 90,
+    "y": 0
+  },
+  "bus-45": {
+    "height": 90,
+    "pixelRatio": 2,
+    "width": 90,
+    "x": 0,
+    "y": 90
+  },
+  "cafe-45": {
+    "height": 90,
+    "pixelRatio": 2,
+    "width": 90,
+    "x": 90,
+    "y": 90
+  },
+  "circle-11": {
+    "height": 22,
+    "pixelRatio": 2,
+    "width": 22,
+    "x": 630,
+    "y": 0
+  },
+  "circle-45": {
+    "height": 90,
+    "pixelRatio": 2,
+    "width": 90,
+    "x": 180,
+    "y": 0
+  },
+  "gnome-guadec-blue": {
+    "height": 90,
+    "pixelRatio": 2,
+    "width": 90,
+    "x": 270,
+    "y": 0
+  },
+  "gnome-guadec-red": {
+    "height": 90,
+    "pixelRatio": 2,
+    "width": 90,
+    "x": 180,
+    "y": 90
+  },
+  "gnome-guadec-yellow": {
+    "height": 90,
+    "pixelRatio": 2,
+    "width": 90,
+    "x": 270,
+    "y": 90
+  },
+  "home-45": {
+    "height": 90,
+    "pixelRatio": 2,
+    "width": 90,
+    "x": 0,
+    "y": 180
+  },
+  "hospital-45": {
+    "height": 90,
+    "pixelRatio": 2,
+    "width": 90,
+    "x": 90,
+    "y": 180
+  },
+  "music-45": {
+    "height": 90,
+    "pixelRatio": 2,
+    "width": 90,
+    "x": 180,
+    "y": 180
+  },
+  "park-45": {
+    "height": 90,
+    "pixelRatio": 2,
+    "width": 90,
+    "x": 270,
+    "y": 180
+  },
+  "parking-45": {
+    "height": 90,
+    "pixelRatio": 2,
+    "width": 90,
+    "x": 0,
+    "y": 270
+  },
+  "rail-45": {
+    "height": 90,
+    "pixelRatio": 2,
+    "width": 90,
+    "x": 90,
+    "y": 270
+  },
+  "restaurant-45": {
+    "height": 90,
+    "pixelRatio": 2,
+    "width": 90,
+    "x": 180,
+    "y": 270
+  },
+  "rocket-45": {
+    "height": 90,
+    "pixelRatio": 2,
+    "width": 90,
+    "x": 270,
+    "y": 270
+  },
+  "star-11": {
+    "height": 22,
+    "pixelRatio": 2,
+    "width": 22,
+    "x": 652,
+    "y": 0
+  },
+  "star-45": {
+    "height": 90,
+    "pixelRatio": 2,
+    "width": 90,
+    "x": 360,
+    "y": 0
+  },
+  "theatre-45": {
+    "height": 90,
+    "pixelRatio": 2,
+    "width": 90,
+    "x": 450,
+    "y": 0
+  },
+  "town-hall-45": {
+    "height": 90,
+    "pixelRatio": 2,
+    "width": 90,
+    "x": 540,
+    "y": 0
+  }
+}
\ No newline at end of file
diff --git a/src/js/guadec_map/sprite 2x png b/src/js/guadec_map/sprite 2x png
new file mode 100644
index 0000000..53ab608
Binary files /dev/null and b/src/js/guadec_map/sprite 2x png differ


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]