[guadec-web: 5/10] added proper javascript coding and custom styles
- From: Oliver Gutiérrez <ogutierrez src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [guadec-web: 5/10] added proper javascript coding and custom styles
- Date: Wed, 27 Jun 2018 10:58:32 +0000 (UTC)
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]