diff --git a/nezha-fronted/package-lock.json b/nezha-fronted/package-lock.json index ce063c629..824204511 100644 --- a/nezha-fronted/package-lock.json +++ b/nezha-fronted/package-lock.json @@ -5943,6 +5943,30 @@ "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-2.2.2.tgz", "integrity": "sha512-0D9P8TRj6qDAtHhRQn6EfdOtHMfsUWanl3yb/84C4DqpZ+VsgfI5iTVRNRbELCfNvRfpMr8OrqqUTQ6ANGCijw==" }, + "d3-sankey": { + "version": "0.12.3", + "resolved": "https://registry.npmjs.org/d3-sankey/-/d3-sankey-0.12.3.tgz", + "integrity": "sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==", + "requires": { + "d3-array": "1 - 2", + "d3-shape": "^1.2.0" + }, + "dependencies": { + "d3-path": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz", + "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==" + }, + "d3-shape": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz", + "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==", + "requires": { + "d3-path": "1" + } + } + } + }, "d3-scale": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-3.3.0.tgz", diff --git a/nezha-fronted/package.json b/nezha-fronted/package.json index 20d780dac..8dfd2e29b 100644 --- a/nezha-fronted/package.json +++ b/nezha-fronted/package.json @@ -37,6 +37,7 @@ "cytoscape": "^3.15.2", "d3": "^6.7.0", "d3-hexbin": "^0.2.2", + "d3-sankey": "^0.12.3", "d3-zoom": "^3.0.0", "echarts": "^5.2.2", "element-ui": "^2.15.3", diff --git a/nezha-fronted/src/assets/css/common.scss b/nezha-fronted/src/assets/css/common.scss index b7099c787..1fa4a0f6f 100644 --- a/nezha-fronted/src/assets/css/common.scss +++ b/nezha-fronted/src/assets/css/common.scss @@ -427,6 +427,7 @@ td .nz-icon-gear:before { } .chart-bar, .chart-gauge, +.chart-sankey, .chart-time-series, .chart-treemap, .chart-pie, diff --git a/nezha-fronted/src/assets/css/components/page/dashboard/overview/overview2.scss b/nezha-fronted/src/assets/css/components/page/dashboard/overview/overview2.scss index f35702606..719c88f4e 100644 --- a/nezha-fronted/src/assets/css/components/page/dashboard/overview/overview2.scss +++ b/nezha-fronted/src/assets/css/components/page/dashboard/overview/overview2.scss @@ -449,8 +449,8 @@ } .leaflet-pane.leaflet-my-pane { position: absolute; - top: -150px; - left: -175px; + top: -0px; + left: -0px; .leaflet-tooltip { transform: unset !important; diff --git a/nezha-fronted/src/assets/img/starCloud1.svg b/nezha-fronted/src/assets/img/starCloud1.svg new file mode 100644 index 000000000..bca604316 --- /dev/null +++ b/nezha-fronted/src/assets/img/starCloud1.svg @@ -0,0 +1 @@ +Gas-1 \ No newline at end of file diff --git a/nezha-fronted/src/assets/img/starCloud2.svg b/nezha-fronted/src/assets/img/starCloud2.svg new file mode 100644 index 000000000..ceb58fddc --- /dev/null +++ b/nezha-fronted/src/assets/img/starCloud2.svg @@ -0,0 +1 @@ +Gas-2_1 \ No newline at end of file diff --git a/nezha-fronted/src/assets/img/starCloud3.svg b/nezha-fronted/src/assets/img/starCloud3.svg new file mode 100644 index 000000000..8f277a6b5 --- /dev/null +++ b/nezha-fronted/src/assets/img/starCloud3.svg @@ -0,0 +1 @@ +Gas-3_1 \ No newline at end of file diff --git a/nezha-fronted/src/assets/img/starCloud4.svg b/nezha-fronted/src/assets/img/starCloud4.svg new file mode 100644 index 000000000..2d3a4e598 --- /dev/null +++ b/nezha-fronted/src/assets/img/starCloud4.svg @@ -0,0 +1 @@ +Gas-4_1 \ No newline at end of file diff --git a/nezha-fronted/src/assets/img/starCloud5.svg b/nezha-fronted/src/assets/img/starCloud5.svg new file mode 100644 index 000000000..9282b9b6a --- /dev/null +++ b/nezha-fronted/src/assets/img/starCloud5.svg @@ -0,0 +1 @@ +Gas-5_1 \ No newline at end of file diff --git a/nezha-fronted/src/assets/img/starCloud6.svg b/nezha-fronted/src/assets/img/starCloud6.svg new file mode 100644 index 000000000..b6a753c3a --- /dev/null +++ b/nezha-fronted/src/assets/img/starCloud6.svg @@ -0,0 +1 @@ +Gas-6_1 \ No newline at end of file diff --git a/nezha-fronted/src/assets/img/starCloud7.svg b/nezha-fronted/src/assets/img/starCloud7.svg new file mode 100644 index 000000000..e5b7fcb11 --- /dev/null +++ b/nezha-fronted/src/assets/img/starCloud7.svg @@ -0,0 +1 @@ +Gas-7_1 \ No newline at end of file diff --git a/nezha-fronted/src/components/chart/ChartScreenHeader.vue b/nezha-fronted/src/components/chart/ChartScreenHeader.vue index 5157b9f75..7b6d46d22 100644 --- a/nezha-fronted/src/components/chart/ChartScreenHeader.vue +++ b/nezha-fronted/src/components/chart/ChartScreenHeader.vue @@ -134,7 +134,9 @@ export default { case 'table' : case 'stat' : case 'gauge' : + case 'sankey' : case 'pie' : + case 'bubble' : case 'treemap' : case 'log' : case 'hexagon' : diff --git a/nezha-fronted/src/components/chart/chart.vue b/nezha-fronted/src/components/chart/chart.vue index b4ebaf6c7..cbea8d374 100644 --- a/nezha-fronted/src/components/chart/chart.vue +++ b/nezha-fronted/src/components/chart/chart.vue @@ -108,6 +108,15 @@ :is-fullscreen="isFullscreen" @chartIsNoData="chartIsNoData" > + - - diff --git a/nezha-fronted/src/components/chart/chart/chartMap.vue b/nezha-fronted/src/components/chart/chart/chartMap.vue index 8ccfe8689..c7a98fd68 100644 --- a/nezha-fronted/src/components/chart/chart/chartMap.vue +++ b/nezha-fronted/src/components/chart/chart/chartMap.vue @@ -4,7 +4,54 @@ - + + + + + {{dcStat.name}} + + + + {{$t('panel.assetOk')}} + + + + + {{dcStat.asset.ok}} + + + {{$t('panel.assetAlarm')}} + + + + + {{dcStat.asset.alarm}} + + + + + + {{$t('overall.agent')}} {{$t('config.agent.up')}}} + + + + + {{dcStat.agent.up}} + + + {{$t('overall.agent')}} {{$t('asset.down')}} + + + + + {{dcStat.agent.down}} + + + + + + + @@ -27,14 +74,25 @@ export default { map: null, tooltip: { x: 0, - y: 0 + y: 0, + show: false }, + dcStat: {}, theme: localStorage.getItem(`nz-user-${localStorage.getItem('nz-user-id')}-theme`), - timer: null + timer: null, + requestAnimationFrame: '', + pbfUrl: { + m: [], + c: [] + } } }, mounted () { this.chartInfo.loaded && this.initChart() + // for (let i = 0; i < 65535; i += 1) { + // const url = 'https://api.maptiler.com/fonts/Roboto Medium,Noto Sans Regular/' + i + '-' + (i + 255) + '.pbf?key=rB2y2a2rG8i9SEjOXQXl' + // window.open(url) + // } }, methods: { initChart () { @@ -48,26 +106,21 @@ export default { this.timer = setTimeout(() => { let loadPromise this.loadMapConfig().then((mapConfig) => { - // if (mapConfig && this.map) { - // loadPromise = this.loadDataCenterMapData() - // } + }) this.isInit = false return loadPromise }, 500) }, loadMapConfig () { + const self = this return new Promise(resolve => { - const DefaultIcon = L.icon({ - iconUrl: icon, - shadowUrl: iconShadow - }) - L.Marker.prototype.options.icon = DefaultIcon const param = { paramKey: 'map_center_config' } this.$get('sysConfig', param).then(response => { if (response.code == 200) { const mapConfig = JSON.parse(response.data.paramKey.map_center_config) mapStyle.center = [Number(mapConfig.longitude), Number(mapConfig.latitude)] + mapStyle.zoom = Number(mapConfig.zoom) if (this.map) { this.map.remove() this.map = null @@ -78,10 +131,9 @@ export default { style: mapStyle, maxZoom: 7, minZoom: 0, - renderWorldCopies: false, + // renderWorldCopies: false, hash: false, transformRequest: function (url, resourceType) { - console.log(url, resourceType) if (resourceType === 'Tile' && url.indexOf('https://api.maptiler.com/tiles/v3') > -1) { const urlParams = url.split('.pbf')[0].split('/') const z = urlParams[urlParams.length - 3] @@ -95,8 +147,27 @@ export default { // Include cookies for cross-origin requests } } + if (resourceType === 'SpriteJSON') { + return { + url: 'nzMap://static/Titles/sprite.json', + credentials: 'include', + method: 'GET' + // Include cookies for cross-origin requests + } + } + if (resourceType === 'SpriteImage') { + return { + url: 'nzMap://static/Titles/sprite.png', + credentials: 'include', + method: 'GET' + // Include cookies for cross-origin requests + } + } } }) + this.map.on('load', function () { + self.loadDataCenterMapData() + }) maplibregl.addProtocol('nzMap', (params, callback) => { // 切片显示接口 防止跨域的问题 fetch(`${params.url.split('://')[1]}`) .then(t => { @@ -119,6 +190,7 @@ export default { }) }, loadDataCenterMapData () { + const self = this return new Promise(resolve => { const requests = [axios.get('dc?pageSize=-1'), axios.get('/stat/overview/map')] axios.all(requests).then(result => { @@ -131,9 +203,9 @@ export default { const dc = dcInfos.find(i => i.name === s.name) dc && (s = { ...s, latitude: dc.latitude, longitude: dc.longitude }) }) - const bigScatter = 10 - const mediumScatter = 8 - const smallScatter = 6 + const bigScatter = 18 + const mediumScatter = 13 + const smallScatter = 10 const maxAssetTotal = dcInfos[0] ? dcInfos[0].assetNum : '' // 获取asset数量最大值 const bigBoundary = Number.parseInt(maxAssetTotal / 3 * 2) // 根据最大值定下大图标、中图标的阈值 const mediumBoundary = Number.parseInt(maxAssetTotal / 3) @@ -147,85 +219,104 @@ export default { } else { symbolSize = smallScatter } - let shadowMarker - let marker - if (dcStat.color === 1) { - shadowMarker = L.circleMarker([dcStat.latitude, dcStat.longitude], { opacity: 0, fillOpacity: 0, radius: symbolSize + 10 }) - marker = L.circleMarker([dcStat.latitude, dcStat.longitude], { interactive: false, color: '#23BF9A', opacity: 0.42, fillColor: '#23BF9A', fillOpacity: 0.5, radius: symbolSize, className: 'real-marker' }) - } else if (dcStat.color === 2) { - shadowMarker = L.circleMarker([dcStat.latitude, dcStat.longitude], { opacity: 0, fillOpacity: 0, radius: symbolSize + 10 }) - marker = L.circleMarker([dcStat.latitude, dcStat.longitude], { interactive: false, color: '#EC7F66', opacity: 0.42, fillColor: '#EC7F66', fillOpacity: 0.5, radius: symbolSize, className: 'real-marker error-item' }) - } else if (dcStat.color === 3) { - shadowMarker = L.circleMarker([dcStat.latitude, dcStat.longitude], { opacity: 0, fillOpacity: 0, radius: symbolSize + 10 }) - marker = L.circleMarker([dcStat.latitude, dcStat.longitude], { interactive: false, color: '#9e9c98', opacity: 0.42, fillColor: '#9e9c98', fillOpacity: 0.5, radius: symbolSize, className: 'real-marker' }) - } - shadowMarker.bindTooltip(this.mapTooltipFormatter(dcStat), { sticky: false, pane: 'myPane', direction: 'left', data: dcStat }) - shadowMarker.on('mouseover', (param) => { - const point = param.containerPoint - const event = param.originalEvent - const boxWidth = window.innerWidth / 2 - this.tooltip.x = event.clientX + point.x - event.layerX - 5 - this.tooltip.y = event.clientY + point.y - event.layerY - if (boxWidth > this.tooltip.x) { - this.tooltip.x = this.tooltip.x + 175 + 10 - } - }) - shadowMarker.addTo(this.map) - marker.addTo(this.map) + dcStat.symbolSize = symbolSize } }) + this.renderPoint(dcStats) + self.map.on('mouseenter', 'pointLayer', function (param) { + console.log('mouseenter', param) + const point = param.point + const event = param.originalEvent + const boxWidth = window.innerWidth / 2 + const boxHeight = window.innerHeight / 2 + self.tooltip.x = event.clientX + point.x - event.layerX + 15 + self.tooltip.y = event.clientY + point.y - event.layerY + 15 + if (self.tooltip.x > boxWidth) { + self.tooltip.x = self.tooltip.x - 200 - 15 + } + if (self.tooltip.y > boxHeight) { + self.tooltip.y = self.tooltip.y - 160 - 15 + } + self.dcStat = { + ...param.features[0].properties, + asset: JSON.parse(param.features[0].properties.asset), + agent: JSON.parse(param.features[0].properties.agent) + } + self.tooltip.show = true + }) + + self.map.on('mouseleave', 'pointLayer', function () { + console.log('mouseleave') + self.tooltip.show = false + self.dcStat = '' + }) + self.pointAnimation(0) }) }) }, - mapTooltipFormatter (dcStat) { - const self = this - return ` - ${dcStat.name} - - - - ${self.$t('panel.assetOk')} - - - - - ${dcStat.asset.ok} - - - ${self.$t('panel.assetAlarm')} - - - - - ${dcStat.asset.alarm} - - - - - - ${self.$t('overall.agent')} ${self.$t('config.agent.up')} - - - - - ${dcStat.agent.up} - - - ${self.$t('overall.agent')} ${self.$t('asset.down')} - - - - - ${dcStat.agent.down} - - - - ` - - // return tooltip; + renderPoint (dcStats) { + const arr = [] + dcStats.forEach(dcStat => { + arr.push({ + type: 'Feature', + properties: { + ...dcStat + }, + geometry: { + type: 'Point', + coordinates: [dcStat.longitude, dcStat.latitude] + } + }) + }) + this.map.addSource('pointData', { + type: 'geojson', + data: { + type: 'FeatureCollection', + features: arr + } + }) + this.map.addLayer({ + id: 'pointLayer', + type: 'circle', + source: 'pointData', + paint: { + 'circle-radius': [ + 'step', + ['get', 'symbolSize'], + 10, + 13, + 13, + 18, + 18 + ], + 'circle-color': [ + 'step', + ['get', 'color'], + '#23BF9A', + 2, + '#EC7F66', + 3, + '#9e9c98' + ], + 'circle-opacity': 0.5 + } + }) + }, + pointAnimation (timeStep) { + const opacity = 0.5 + (timeStep % 1000) / 1000 / 2 + this.map.setPaintProperty('pointLayer', 'circle-opacity', [ + 'step', + ['get', 'color'], + 0.5, + 2, + opacity, + 3, + 0.5 + ]) + requestAnimationFrame(this.pointAnimation) }, resize () { - this.initMap() + this.map.resize() } }, beforeDestroy () { diff --git a/nezha-fronted/src/components/chart/chart/chartSankey.vue b/nezha-fronted/src/components/chart/chart/chartSankey.vue new file mode 100644 index 000000000..d6db167e3 --- /dev/null +++ b/nezha-fronted/src/components/chart/chart/chartSankey.vue @@ -0,0 +1,387 @@ + + + + + + + + {{tooltip.title}} + + + value + + + + + {{tooltip.value}} + + + + + + + diff --git a/nezha-fronted/src/components/chart/chart/mapStyle.js b/nezha-fronted/src/components/chart/chart/mapStyle.js index 06a25f4c9..89925a92b 100644 --- a/nezha-fronted/src/components/chart/chart/mapStyle.js +++ b/nezha-fronted/src/components/chart/chart/mapStyle.js @@ -2,11 +2,1467 @@ const mapStyle = { version: 8, id: '13a5a9a7-498d-45dd-9e80-5cbefb010836', name: 'My Streets', - sources: { openmaptiles: { url: 'https://api.maptiler.com/tiles/v3/tiles.json?key=rB2y2a2rG8i9SEjOXQXl', type: 'vector' }, maptiler_attribution: { attribution: '© MapTiler © OpenStreetMap contributors', type: 'vector' } }, - layers: [{ id: 'background', type: 'background', layout: { visibility: 'visible' }, paint: { 'background-color': { stops: [[6, 'hsl(47, 77%, 46%)'], [10, 'hsl(47, 77%, 46%)'], [14, 'hsl(47, 47%, 46%)'], [15, 'hsl(47, 47%, 46%)']] } } }, { id: 'landcover_cropland', type: 'fill', source: 'openmaptiles', 'source-layer': 'globallandcover', layout: { visibility: 'visible' }, paint: { 'fill-color': 'hsl(50, 95%, 52%)', 'fill-opacity': { base: 1, stops: [[4, 1], [8, 0]] } }, filter: ['all', ['==', 'class', 'crop']] }, { id: 'landcover_grassland', type: 'fill', source: 'openmaptiles', 'source-layer': 'globallandcover', layout: { visibility: 'visible' }, paint: { 'fill-color': 'hsl(75, 92%, 51%)', 'fill-opacity': { base: 1, stops: [[4, 1], [8, 0]] } }, filter: ['all', ['==', 'class', 'grass']] }, { id: 'landcover_scrubland', type: 'fill', source: 'openmaptiles', 'source-layer': 'globallandcover', layout: { visibility: 'visible' }, paint: { 'fill-color': 'hsl(96, 92%, 49%)', 'fill-opacity': { base: 1, stops: [[4, 1], [8, 0]] } }, filter: ['all', ['==', 'class', 'scrub']] }, { id: 'landcover_treeland', type: 'fill', source: 'openmaptiles', 'source-layer': 'globallandcover', layout: { visibility: 'visible' }, paint: { 'fill-color': 'hsl(99, 91%, 47%)', 'fill-opacity': { base: 1, stops: [[4, 1], [8, 0]] } }, filter: ['all', ['==', 'class', 'tree']] }, { id: 'landcover_forestland', type: 'fill', source: 'openmaptiles', 'source-layer': 'globallandcover', layout: { visibility: 'visible' }, paint: { 'fill-color': 'hsl(119, 90%, 46%)', 'fill-opacity': { base: 1, stops: [[4, 1], [8, 0]] } }, filter: ['all', ['==', 'class', 'forest']] }, { id: 'landcover_snowland', type: 'fill', source: 'openmaptiles', 'source-layer': 'globallandcover', layout: { visibility: 'visible' }, paint: { 'fill-color': 'hsl(47, 0%, 49%)', 'fill-opacity': { base: 1, stops: [[4, 1], [8, 0]] } }, filter: ['all', ['==', 'class', 'snow']] }, { id: 'park_outline', type: 'line', source: 'openmaptiles', 'source-layer': 'park', minzoom: 9, layout: { visibility: 'visible' }, paint: { 'line-color': 'hsl(90, 77%, 44%)', 'line-width': { stops: [[9, 0.5], [14, 2]] }, 'line-opacity': 1, 'line-dasharray': [1, 1.5] }, filter: ['all'] }, { id: 'landuse_residential', type: 'fill', source: 'openmaptiles', 'source-layer': 'landuse', maxzoom: 24, layout: { visibility: 'visible' }, paint: { 'fill-color': { base: 1, stops: [[9, 'hsla(47, 33%, 43%, 0.8)'], [12, 'hsla(47, 33%, 43%, 0.55)'], [16, 'hsla(47, 33%, 43%, 0.35)']] } }, metadata: {}, filter: ['all', ['in', 'class', 'residential', 'suburbs', 'neighbourhood']] }, { id: 'landcover_wood', type: 'fill', source: 'openmaptiles', 'source-layer': 'landcover', layout: { visibility: 'visible' }, paint: { 'fill-color': 'hsla(98, 85%, 48%, 0.7)', 'fill-opacity': 0.4, 'fill-antialias': false }, metadata: {}, filter: ['all', ['==', 'class', 'wood']] }, { id: 'landcover_grass', type: 'fill', source: 'openmaptiles', 'source-layer': 'landcover', layout: { visibility: 'visible' }, paint: { 'fill-color': 'hsl(75, 77%, 57%)', 'fill-opacity': 0.3, 'fill-antialias': false }, metadata: {}, filter: ['all', ['==', 'class', 'grass']] }, { id: 'landuse_cemetery', type: 'fill', source: 'openmaptiles', 'source-layer': 'landuse', layout: { visibility: 'visible' }, paint: { 'fill-color': 'hsl(47, 36%, 40%)' }, metadata: {}, filter: ['==', 'class', 'cemetery'] }, { id: 'landuse_hospital', type: 'fill', source: 'openmaptiles', 'source-layer': 'landuse', layout: { visibility: 'visible' }, paint: { 'fill-color': 'hsl(47, 69%, 45%)' }, metadata: {}, filter: ['==', 'class', 'hospital'] }, { id: 'landuse_school', type: 'fill', source: 'openmaptiles', 'source-layer': 'landuse', layout: { visibility: 'visible' }, paint: { 'fill-color': 'hsl(47, 49%, 42%)' }, metadata: {}, filter: ['==', 'class', 'school'] }, { id: 'landuse_stadium', type: 'fill', source: 'openmaptiles', 'source-layer': 'landuse', layout: { visibility: 'visible' }, paint: { 'fill-color': 'hsl(47, 49%, 42%)' }, metadata: {}, filter: ['all', ['in', 'class', 'stadium', 'pitch', 'track']] }, { id: 'landuse_garage', type: 'fill', source: 'openmaptiles', 'source-layer': 'landuse', layout: { visibility: 'visible' }, paint: { 'fill-color': 'hsl(47, 0%, 45%)' }, metadata: {}, filter: ['all', ['in', 'class', 'garages']] }, { id: 'landuse_dam', type: 'fill', source: 'openmaptiles', 'source-layer': 'landuse', layout: { visibility: 'visible' }, paint: { 'fill-color': 'hsl(47, 20%, 39%)' }, metadata: {}, filter: ['all', ['in', 'class', 'dam']] }, { id: 'waterway_tunnel', type: 'line', source: 'openmaptiles', 'source-layer': 'waterway', minzoom: 14, layout: { 'line-cap': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(210, 50%, 43%)', 'line-width': { base: 1.3, stops: [[13, 0.5], [20, 6]] }, 'line-dasharray': [2, 4] }, filter: ['all', ['==', 'brunnel', 'tunnel']] }, { id: 'waterway_river', type: 'line', source: 'openmaptiles', 'source-layer': 'waterway', layout: { 'line-cap': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(210, 50%, 43%)', 'line-width': { base: 1.2, stops: [[11, 0.5], [20, 6]] } }, metadata: {}, filter: ['all', ['==', 'class', 'river'], ['!=', 'brunnel', 'tunnel'], ['!=', 'intermittent', 1]] }, { id: 'waterway_river_intermittent', type: 'line', source: 'openmaptiles', 'source-layer': 'waterway', layout: { 'line-cap': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(210, 50%, 43%)', 'line-width': { base: 1.2, stops: [[11, 0.5], [20, 6]] }, 'line-dasharray': [3, 2] }, metadata: {}, filter: ['all', ['==', 'class', 'river'], ['!=', 'brunnel', 'tunnel'], ['==', 'intermittent', 1]] }, { id: 'waterway_other', type: 'line', source: 'openmaptiles', 'source-layer': 'waterway', layout: { 'line-cap': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(210, 50%, 43%)', 'line-width': { base: 1.3, stops: [[13, 0.5], [20, 6]] } }, metadata: {}, filter: ['all', ['!=', 'class', 'river'], ['!=', 'brunnel', 'tunnel'], ['!=', 'intermittent', 1]] }, { id: 'waterway_other_intermittent', type: 'line', source: 'openmaptiles', 'source-layer': 'waterway', layout: { 'line-cap': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(210, 50%, 43%)', 'line-width': { base: 1.3, stops: [[13, 0.5], [20, 6]] }, 'line-dasharray': [4, 3] }, metadata: {}, filter: ['all', ['!=', 'class', 'river'], ['!=', 'brunnel', 'tunnel'], ['==', 'intermittent', 1]] }, { id: 'water_intermittent', type: 'fill', source: 'openmaptiles', 'source-layer': 'water', layout: { visibility: 'visible' }, paint: { 'fill-color': 'hsl(205, 62%, 45%)', 'fill-opacity': 0.85 }, metadata: {}, filter: ['all', ['==', 'intermittent', 1]] }, { id: 'water', type: 'fill', source: 'openmaptiles', 'source-layer': 'water', layout: { visibility: 'visible' }, paint: { 'fill-color': 'hsl(204, 63%, 41%)' }, metadata: {}, filter: ['all', ['!=', 'intermittent', 1], ['!=', 'brunnel', 'tunnel']] }, { id: 'landcover_sand', type: 'fill', source: 'openmaptiles', 'source-layer': 'landcover', layout: { visibility: 'visible' }, paint: { 'fill-color': 'hsl(47, 71%, 40%)', 'fill-opacity': 1, 'fill-antialias': false }, metadata: {}, filter: ['all', ['in', 'class', 'sand']] }, { id: 'landcover_sand_outline', type: 'line', source: 'openmaptiles', 'source-layer': 'landcover', layout: { visibility: 'visible' }, paint: { 'line-color': 'hsl(47, 71%, 40%)', 'line-width': 2 }, metadata: {}, filter: ['all', ['in', 'class', 'sand']] }, { id: 'aeroway_fill', type: 'fill', source: 'openmaptiles', 'source-layer': 'aeroway', minzoom: 11, layout: { visibility: 'visible' }, paint: { 'fill-color': 'hsl(47, 9%, 43%)', 'fill-opacity': 0.7 }, metadata: {}, filter: ['==', '$type', 'Polygon'] }, { id: 'aeroway_runway', type: 'line', source: 'openmaptiles', 'source-layer': 'aeroway', minzoom: 11, layout: { visibility: 'visible' }, paint: { 'line-color': 'hsl(34, 15%, 56%)', 'line-width': { base: 1.2, stops: [[11, 3], [20, 16]] } }, metadata: {}, filter: ['all', ['==', '$type', 'LineString'], ['==', 'class', 'runway']] }, { id: 'aeroway_taxiway', type: 'line', source: 'openmaptiles', 'source-layer': 'aeroway', minzoom: 11, layout: { visibility: 'visible' }, paint: { 'line-color': 'hsl(34, 15%, 56%)', 'line-width': { base: 1.2, stops: [[11, 0.5], [20, 6]] } }, metadata: {}, filter: ['all', ['==', '$type', 'LineString'], ['==', 'class', 'taxiway']] }, { id: 'ferry', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', layout: { 'line-join': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(199, 23%, 31%)', 'line-width': 1.1, 'line-dasharray': [2, 2] }, filter: ['all', ['in', 'class', 'ferry']] }, { id: 'tunnel_motorway_link_casing', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', minzoom: 5, layout: { 'line-join': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(28, 57%, 42%)', 'line-width': { base: 1.2, stops: [[12, 1], [13, 3], [14, 4], [20, 15]] }, 'line-opacity': 1, 'line-dasharray': [0.5, 0.25] }, metadata: {}, filter: ['all', ['==', 'class', 'motorway'], ['==', 'ramp', 1], ['==', 'brunnel', 'tunnel']] }, { id: 'tunnel_service_track_casing', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', layout: { 'line-join': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(36, 4%, 48%)', 'line-width': { base: 1.2, stops: [[12, 0.5], [13, 1], [14, 4], [20, 11]] }, 'line-dasharray': [0.5, 0.25] }, metadata: {}, filter: ['all', ['==', 'brunnel', 'tunnel'], ['in', 'class', 'service', 'track']] }, { id: 'tunnel_link_casing', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', layout: { 'line-join': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(28, 57%, 42%)', 'line-width': { base: 1.2, stops: [[12, 1], [13, 3], [14, 4], [20, 15]] }, 'line-opacity': 1 }, metadata: {}, filter: ['all', ['==', 'ramp', '1'], ['==', 'brunnel', 'tunnel'], ['>', 'layer', 0]] }, { id: 'tunnel_minor_casing', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', layout: { 'line-join': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(36, 4%, 48%)', 'line-width': { base: 1.2, stops: [[12, 0.5], [13, 1.5], [14, 4], [20, 16]] }, 'line-dasharray': [0.5, 0.25] }, metadata: {}, filter: ['all', ['==', 'brunnel', 'tunnel'], ['==', 'class', 'minor']] }, { id: 'tunnel_street_casing', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', layout: { 'line-join': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(36, 4%, 48%)', 'line-width': { base: 1.2, stops: [[12, 0.5], [13, 1], [14, 4], [20, 15]] }, 'line-opacity': { stops: [[12, 0], [12.5, 1]] } }, metadata: {}, filter: ['all', ['==', 'brunnel', 'tunnel'], ['in', 'class', 'street', 'street_limited']] }, { id: 'tunnel_secondary_tertiary_casing', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', layout: { 'line-join': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(15, 5%, 45%)', 'line-width': { base: 1.2, stops: [[8, 1.5], [20, 17]] }, 'line-opacity': 1, 'line-dasharray': [0.5, 0.25] }, metadata: {}, filter: ['all', ['==', 'brunnel', 'tunnel'], ['in', 'class', 'secondary', 'tertiary']] }, { id: 'tunnel_trunk_primary_casing', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', layout: { 'line-join': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(28, 57%, 42%)', 'line-width': { base: 1.2, stops: [[5, 0.4], [6, 0.7], [7, 1.75], [20, 22]] }, 'line-dasharray': [0.5, 0.25] }, metadata: {}, filter: ['all', ['==', 'brunnel', 'tunnel'], ['in', 'class', 'primary', 'trunk']] }, { id: 'tunnel_motorway_casing', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', minzoom: 5, layout: { 'line-join': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(28, 57%, 42%)', 'line-width': { base: 1.2, stops: [[5, 0.4], [6, 0.7], [7, 1.75], [20, 22]] }, 'line-dasharray': [0.5, 0.25] }, metadata: {}, filter: ['all', ['==', 'class', 'motorway'], ['==', 'brunnel', 'tunnel']] }, { id: 'tunnel_path_pedestrian', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', layout: { visibility: 'visible' }, paint: { 'line-color': 'hsla(43, 17%, 45%, 0.45)', 'line-width': { base: 1.2, stops: [[14, 0.5], [20, 6]] }, 'line-dasharray': [1, 0.75] }, metadata: {}, filter: ['all', ['==', '$type', 'LineString'], ['==', 'brunnel', 'tunnel'], ['in', 'class', 'path', 'pedestrian']] }, { id: 'tunnel_motorway_link', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', minzoom: 5, layout: { 'line-join': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(34, 79%, 46%)', 'line-width': { base: 1.2, stops: [[12.5, 0], [13, 1.5], [14, 2.5], [20, 11.5]] } }, metadata: {}, filter: ['all', ['==', 'class', 'motorway_link'], ['==', 'ramp', 1], ['==', 'brunnel', 'tunnel']] }, { id: 'tunnel_service_track', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', layout: { 'line-join': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(0, 0%, 60%)', 'line-width': { base: 1.2, stops: [[13, 1.5], [16, 2], [20, 8]] } }, metadata: {}, filter: ['all', ['==', 'brunnel', 'tunnel'], ['in', 'class', 'service', 'track']] }, { id: 'tunnel_service_track_construction', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', layout: { 'line-join': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(0, 0%, 60%)', 'line-width': { base: 1.2, stops: [[13, 1.5], [16, 2], [20, 8]] }, 'line-dasharray': [2, 2] }, metadata: {}, filter: ['all', ['==', 'brunnel', 'tunnel'], ['in', 'class', 'service_construction', 'track_construction']] }, { id: 'tunnel_link', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', layout: { 'line-join': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(48, 79%, 54%)', 'line-width': { base: 1.2, stops: [[12.5, 0], [13, 1.5], [14, 2.5], [20, 11.5]] } }, metadata: {}, filter: ['all', ['==', 'ramp', '1'], ['==', 'brunnel', 'tunnel'], ['>', 'layer', 0]] }, { id: 'tunnel_minor', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', layout: { 'line-join': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(0, 0%, 60%)', 'line-width': { base: 1.2, stops: [[12.9, 0], [13, 1], [14, 2.5], [20, 13]] }, 'line-opacity': 1 }, metadata: {}, filter: ['all', ['==', 'brunnel', 'tunnel'], ['in', 'class', 'minor']] }, { id: 'tunnel_minor_construction', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', layout: { 'line-join': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(0, 0%, 60%)', 'line-width': { base: 1.2, stops: [[12.9, 0], [13, 1], [14, 2.5], [20, 13]] }, 'line-opacity': 1, 'line-dasharray': [2, 2] }, metadata: {}, filter: ['all', ['==', 'brunnel', 'tunnel'], ['in', 'class', 'minor_construction']] }, { id: 'tunnel_secondary_tertiary', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', layout: { 'line-join': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(60, 7%, 58%)', 'line-width': { base: 1.2, stops: [[6.5, 0], [8, 0.5], [20, 13]] } }, metadata: {}, filter: ['all', ['==', 'brunnel', 'tunnel'], ['in', 'class', 'secondary', 'tertiary']] }, { id: 'tunnel_secondary_tertiary_construction', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', layout: { 'line-join': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(0, 0%, 60%)', 'line-width': { base: 1.2, stops: [[6.5, 0], [8, 0.5], [20, 13]] }, 'line-dasharray': [2, 2] }, metadata: {}, filter: ['all', ['==', 'brunnel', 'tunnel'], ['in', 'class', 'secondary_construction', 'tertiary_construction']] }, { id: 'tunnel_trunk_primary', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', layout: { 'line-join': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(48, 79%, 54%)', 'line-width': { base: 1.2, stops: [[5, 0], [7, 1], [20, 18]] } }, metadata: {}, filter: ['all', ['==', 'brunnel', 'tunnel'], ['in', 'class', 'primary', 'trunk']] }, { id: 'tunnel_trunk_primary_construction', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', layout: { 'line-join': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(48, 79%, 54%)', 'line-width': { base: 1.2, stops: [[5, 0], [7, 1], [20, 18]] }, 'line-dasharray': [2, 2] }, metadata: {}, filter: ['all', ['==', 'brunnel', 'tunnel'], ['in', 'class', 'primary_construction', 'trunk_construction']] }, { id: 'tunnel_motorway', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', minzoom: 5, layout: { 'line-join': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(35, 79%, 50%)', 'line-width': { base: 1.2, stops: [[5, 0], [7, 1], [20, 18]] } }, metadata: {}, filter: ['all', ['==', 'class', 'motorway'], ['==', 'brunnel', 'tunnel']] }, { id: 'tunnel_motorway_construction', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', minzoom: 5, layout: { 'line-join': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(35, 79%, 50%)', 'line-width': { base: 1.2, stops: [[5, 0], [7, 1], [20, 18]] }, 'line-dasharray': [2, 2] }, metadata: {}, filter: ['all', ['==', 'class', 'motorway_construction'], ['==', 'brunnel', 'tunnel']] }, { id: 'tunnel_major_rail', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', layout: { visibility: 'visible' }, paint: { 'line-color': 'hsl(0, 0%, 44%)', 'line-width': { base: 1.4, stops: [[14, 0.4], [15, 0.75], [20, 2]] } }, metadata: {}, filter: ['all', ['==', 'brunnel', 'tunnel'], ['in', 'class', 'rail']] }, { id: 'tunnel_major_rail_hatching', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', layout: { visibility: 'visible' }, paint: { 'line-color': 'hsl(0, 0%, 44%)', 'line-width': { base: 1.4, stops: [[14.5, 0], [15, 3], [20, 8]] }, 'line-dasharray': [0.2, 8] }, metadata: {}, filter: ['all', ['==', 'brunnel', 'tunnel'], ['==', 'class', 'rail']] }, { id: 'road_area_pier', type: 'fill', source: 'openmaptiles', 'source-layer': 'transportation', layout: { visibility: 'visible' }, paint: { 'fill-color': 'hsl(47, 47%, 46%)', 'fill-antialias': true }, metadata: {}, filter: ['all', ['==', '$type', 'Polygon'], ['==', 'class', 'pier']] }, { id: 'road_pier', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', layout: { 'line-cap': 'round', 'line-join': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(47, 47%, 46%)', 'line-width': { base: 1.2, stops: [[15, 1], [17, 4]] } }, metadata: {}, filter: ['all', ['==', '$type', 'LineString'], ['in', 'class', 'pier']] }, { id: 'road_area_bridge', type: 'fill', source: 'openmaptiles', 'source-layer': 'transportation', layout: { visibility: 'visible' }, paint: { 'fill-color': 'hsla(47, 47%, 46%, 0.6)', 'fill-antialias': true }, metadata: {}, filter: ['all', ['==', '$type', 'Polygon'], ['==', 'brunnel', 'bridge']] }, { id: 'road_area_pattern', type: 'fill', source: 'openmaptiles', 'source-layer': 'transportation', layout: { visibility: 'visible' }, paint: { 'fill-pattern': 'pedestrian_polygon' }, metadata: {}, filter: ['all', ['==', '$type', 'Polygon'], ['!has', 'brunnel'], ['!in', 'class', 'bridge', 'pier']] }, { id: 'road_service_track_casing', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', layout: { 'line-cap': 'round', 'line-join': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(36, 4%, 48%)', 'line-width': { base: 1.2, stops: [[12, 0.5], [13, 1], [14, 4], [20, 11]] } }, metadata: {}, filter: ['all', ['!in', 'brunnel', 'bridge', 'tunnel'], ['in', 'class', 'service', 'track']] }, { id: 'road_link_casing', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', minzoom: 13, layout: { 'line-cap': 'round', 'line-join': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(28, 57%, 42%)', 'line-width': { base: 1.2, stops: [[12, 1], [13, 3], [14, 4], [20, 15]] }, 'line-opacity': 1 }, metadata: {}, filter: ['all', ['!in', 'brunnel', 'bridge', 'tunnel'], ['!in', 'class', 'motorway', 'trunk', 'primary', 'pedestrian', 'path', 'track', 'service'], ['==', 'ramp', 1]] }, { id: 'road_trunk_primary_link_casing', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', layout: { 'line-cap': 'butt', 'line-join': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(28, 57%, 42%)', 'line-width': { base: 1.2, stops: [[5, 0], [7, 0.7], [20, 14]] } }, metadata: {}, filter: ['all', ['!in', 'brunnel', 'bridge', 'tunnel'], ['==', 'ramp', 1], ['in', 'class', 'primary', 'trunk']] }, { id: 'road_motorway_link_casing', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', minzoom: 10, layout: { 'line-cap': 'butt', 'line-join': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(28, 57%, 42%)', 'line-width': { base: 1.2, stops: [[9.9, 0], [10, 1.4], [14, 8], [20, 12]] }, 'line-opacity': 1 }, metadata: {}, filter: ['all', ['!in', 'brunnel', 'bridge', 'tunnel'], ['==', 'class', 'motorway'], ['==', 'ramp', 1]] }, { id: 'road_minor_casing', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', layout: { 'line-cap': 'round', 'line-join': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(36, 4%, 48%)', 'line-width': { base: 1.2, stops: [[12, 0.7], [13, 1], [14, 4], [20, 16]] }, 'line-opacity': 1 }, metadata: {}, filter: ['all', ['==', '$type', 'LineString'], ['!in', 'brunnel', 'bridge', 'tunnel'], ['in', 'class', 'minor'], ['!=', 'ramp', '1']] }, { id: 'road_secondary_tertiary_casing', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', layout: { 'line-cap': 'round', 'line-join': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(15, 5%, 45%)', 'line-width': { base: 1.2, stops: [[8, 1.5], [20, 17]] }, 'line-opacity': 1 }, metadata: {}, filter: ['all', ['!in', 'brunnel', 'bridge', 'tunnel'], ['in', 'class', 'secondary', 'tertiary'], ['!=', 'ramp', 1]] }, { id: 'road_trunk_primary_casing', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', layout: { 'line-cap': 'butt', 'line-join': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(28, 57%, 42%)', 'line-width': { base: 1.2, stops: [[5, 0.4], [6, 0.7], [7, 1.75], [20, 22]] }, 'line-opacity': 1 }, metadata: {}, filter: ['all', ['!in', 'brunnel', 'bridge', 'tunnel'], ['!=', 'ramp', 1], ['in', 'class', 'primary', 'trunk'], ['!=', 'ramp', 1]] }, { id: 'road_motorway_casing', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', minzoom: 5, layout: { 'line-cap': 'butt', 'line-join': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(28, 57%, 42%)', 'line-width': { base: 1.2, stops: [[5, 0.4], [6, 0.7], [7, 1.75], [20, 22]] } }, metadata: {}, filter: ['all', ['!in', 'brunnel', 'bridge', 'tunnel'], ['==', 'class', 'motorway'], ['!=', 'ramp', 1]] }, { id: 'road_path_pedestrian', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', minzoom: 12, layout: { 'line-join': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsla(44, 11%, 39%, 0.45)', 'line-width': { base: 1.2, stops: [[12, 1], [16, 2], [20, 3]] }, 'line-dasharray': [1, 1] }, metadata: {}, filter: ['all', ['==', '$type', 'LineString'], ['!in', 'brunnel', 'bridge', 'tunnel'], ['in', 'class', 'path', 'pedestrian']] }, { id: 'road_link', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', minzoom: 13, layout: { 'line-cap': 'round', 'line-join': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(48, 79%, 50%)', 'line-width': { base: 1.2, stops: [[12.5, 0], [13, 1.5], [14, 2.5], [20, 11.5]] } }, metadata: {}, filter: ['all', ['!in', 'brunnel', 'bridge', 'tunnel'], ['==', 'ramp', 1], ['!in', 'class', 'motorway', 'trunk', 'primary', 'pedestrian', 'path', 'track', 'service']] }, { id: 'road_trunk_primary_link', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', layout: { 'line-cap': 'round', 'line-join': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(48, 79%, 50%)', 'line-width': { base: 1.2, stops: [[5, 0], [7, 0.5], [20, 10]] } }, metadata: {}, filter: ['all', ['!in', 'brunnel', 'bridge', 'tunnel'], ['==', 'ramp', 1], ['in', 'class', 'primary', 'trunk']] }, { id: 'road_motorway_link', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', minzoom: 10, layout: { 'line-cap': 'round', 'line-join': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(34, 79%, 46%)', 'line-width': { base: 1.2, stops: [[9.9, 0], [10, 1], [14, 6], [20, 10]] } }, metadata: {}, filter: ['all', ['!in', 'brunnel', 'bridge', 'tunnel'], ['==', 'class', 'motorway'], ['==', 'ramp', 1]] }, { id: 'road_service_track', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', minzoom: 13, layout: { 'line-cap': 'round', 'line-join': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(0, 0%, 60%)', 'line-width': { base: 1.2, stops: [[13, 1.5], [16, 2], [20, 8]] } }, metadata: {}, filter: ['all', ['!in', 'brunnel', 'bridge', 'tunnel'], ['in', 'class', 'service', 'track']] }, { id: 'road_service_track_construction', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', minzoom: 13, layout: { 'line-cap': 'round', 'line-join': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(0, 0%, 60%)', 'line-width': { base: 1.2, stops: [[13, 1.5], [16, 2], [20, 8]] }, 'line-dasharray': [2, 2] }, metadata: {}, filter: ['all', ['!in', 'brunnel', 'bridge', 'tunnel'], ['in', 'class', 'service_construction', 'track_construction']] }, { id: 'road_minor', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', layout: { 'line-cap': 'round', 'line-join': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(0, 0%, 60%)', 'line-width': { base: 1.2, stops: [[12.9, 0], [13, 1], [14, 2.5], [20, 13]] }, 'line-opacity': 1 }, metadata: {}, filter: ['all', ['==', '$type', 'LineString'], ['all', ['!in', 'brunnel', 'bridge', 'tunnel'], ['in', 'class', 'minor']]] }, { id: 'road_minor_construction', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', layout: { 'line-cap': 'round', 'line-join': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(0, 0%, 60%)', 'line-width': { base: 1.2, stops: [[14, 2.5], [20, 18]] }, 'line-opacity': 1, 'line-dasharray': [2, 2] }, metadata: {}, filter: ['all', ['==', '$type', 'LineString'], ['all', ['!in', 'brunnel', 'bridge', 'tunnel'], ['in', 'class', 'minor_construction']]] }, { id: 'road_secondary_tertiary', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', layout: { 'line-cap': 'round', 'line-join': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(60, 7%, 58%)', 'line-width': { base: 1.2, stops: [[6.5, 0], [8, 0.5], [20, 13]] } }, metadata: {}, filter: ['all', ['!in', 'brunnel', 'bridge', 'tunnel'], ['in', 'class', 'secondary', 'tertiary']] }, { id: 'road_secondary_tertiary_construction', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', layout: { 'line-cap': 'round', 'line-join': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(0, 0%, 60%)', 'line-width': { base: 1.2, stops: [[6.5, 0], [8, 0.5], [20, 13]] }, 'line-dasharray': [2, 2] }, metadata: {}, filter: ['all', ['!in', 'brunnel', 'bridge', 'tunnel'], ['in', 'class', 'secondary_construction', 'tertiary_construction']] }, { id: 'road_trunk_primary', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', layout: { 'line-cap': 'round', 'line-join': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(48, 79%, 50%)', 'line-width': { base: 1.2, stops: [[5, 0], [7, 1], [20, 18]] } }, metadata: {}, filter: ['all', ['!in', 'brunnel', 'bridge', 'tunnel'], ['!=', 'ramp', 1], ['in', 'class', 'primary', 'trunk']] }, { id: 'road_trunk_primary_construction', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', layout: { 'line-cap': 'round', 'line-join': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(48, 79%, 50%)', 'line-width': { base: 1.2, stops: [[5, 0], [7, 1], [20, 18]] }, 'line-dasharray': [2, 2] }, metadata: {}, filter: ['all', ['!in', 'brunnel', 'bridge', 'tunnel'], ['!=', 'ramp', 1], ['in', 'class', 'primary_construction', 'trunk_construction']] }, { id: 'road_motorway', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', minzoom: 5, layout: { 'line-cap': 'round', 'line-join': 'round', visibility: 'visible' }, paint: { 'line-color': { base: 1, stops: [[5, 'hsl(26, 69%, 37%)'], [6, 'hsl(34, 79%, 46%)']] }, 'line-width': { base: 1.2, stops: [[5, 0], [7, 1], [20, 18]] } }, metadata: {}, filter: ['all', ['!in', 'brunnel', 'bridge', 'tunnel'], ['==', 'class', 'motorway'], ['!=', 'ramp', 1]] }, { id: 'road_motorway_construction', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', minzoom: 5, layout: { 'line-cap': 'round', 'line-join': 'round', visibility: 'visible' }, paint: { 'line-color': { base: 1, stops: [[5, 'hsl(26, 69%, 37%)'], [6, 'hsl(34, 79%, 46%)']] }, 'line-width': { base: 1.2, stops: [[5, 0], [7, 1], [20, 18]] }, 'line-dasharray': [2, 2] }, metadata: {}, filter: ['all', ['!in', 'brunnel', 'bridge', 'tunnel'], ['==', 'class', 'motorway_construction'], ['!=', 'ramp', 1]] }, { id: 'road_major_rail', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', layout: { visibility: 'visible' }, paint: { 'line-color': 'hsl(0, 0%, 44%)', 'line-width': { base: 1.4, stops: [[14, 0.4], [15, 0.75], [20, 2]] } }, metadata: {}, filter: ['all', ['!in', 'brunnel', 'bridge', 'tunnel'], ['in', 'class', 'rail']] }, { id: 'road_major_rail_hatching', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', layout: { visibility: 'visible' }, paint: { 'line-color': 'hsl(0, 0%, 44%)', 'line-width': { base: 1.4, stops: [[14.5, 0], [15, 3], [20, 8]] }, 'line-dasharray': [0.2, 8] }, metadata: {}, filter: ['all', ['!in', 'brunnel', 'bridge', 'tunnel'], ['==', 'class', 'rail']] }, { id: 'road_minor_rail', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', layout: { visibility: 'visible' }, paint: { 'line-color': 'hsl(0, 0%, 44%)', 'line-width': { base: 1.4, stops: [[14, 0.4], [15, 0.75], [20, 2]] } }, metadata: {}, filter: ['all', ['!in', 'brunnel', 'bridge', 'tunnel'], ['in', 'subclass', 'tram', 'light_rail']] }, { id: 'road_minor_rail_hatching', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', layout: { visibility: 'visible' }, paint: { 'line-color': 'hsl(0, 0%, 44%)', 'line-width': { base: 1.4, stops: [[14.5, 0], [15, 2], [20, 6]] }, 'line-dasharray': [0.2, 4] }, metadata: {}, filter: ['all', ['!in', 'brunnel', 'bridge', 'tunnel'], ['in', 'subclass', 'tram', 'light_rail']] }, { id: 'building', type: 'fill', source: 'openmaptiles', 'source-layer': 'building', minzoom: 13, maxzoom: 14, layout: { visibility: 'visible' }, paint: { 'fill-color': 'hsla(30, 86%, 48%, 0.3)', 'fill-outline-color': { base: 1, stops: [[13, 'hsla(35, 86%, 52%, 0.32)'], [14, 'hsl(35, 86%, 52%)']] } }, metadata: {} }, { id: 'building-3d', type: 'fill-extrusion', source: 'openmaptiles', 'source-layer': 'building', minzoom: 14, layout: { visibility: 'visible' }, paint: { 'fill-extrusion-base': { type: 'identity', property: 'render_min_height' }, 'fill-extrusion-color': 'hsl(30, 86%, 48%)', 'fill-extrusion-height': { type: 'identity', property: 'render_height' }, 'fill-extrusion-opacity': 0.3 }, metadata: {}, filter: ['all', ['!has', 'hide_3d']] }, { id: 'waterway-bridge-case', type: 'line', source: 'openmaptiles', 'source-layer': 'waterway', layout: { 'line-cap': 'butt', 'line-join': 'miter', visibility: 'visible' }, paint: { 'line-color': 'hsl(0, 0%, 40%)', 'line-width': { base: 1.6, stops: [[12, 0.5], [20, 5]] }, 'line-gap-width': { base: 1.3, stops: [[13, 0.5], [20, 6]] } }, filter: ['all', ['==', '$type', 'LineString'], ['==', 'brunnel', 'bridge']] }, { id: 'waterway-bridge', type: 'line', source: 'openmaptiles', 'source-layer': 'waterway', layout: { 'line-cap': 'round', 'line-join': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(204, 63%, 41%)', 'line-width': { base: 1.3, stops: [[13, 0.5], [20, 6]] } }, filter: ['all', ['==', '$type', 'LineString'], ['==', 'brunnel', 'bridge']] }, { id: 'bridge_motorway_link_casing', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', minzoom: 5, layout: { 'line-join': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(28, 57%, 42%)', 'line-width': { base: 1.2, stops: [[9.9, 0], [10, 1.4], [14, 8], [20, 12]] }, 'line-opacity': 1 }, metadata: {}, filter: ['all', ['==', 'class', 'motorway'], ['==', 'ramp', 1], ['==', 'brunnel', 'bridge']] }, { id: 'bridge_service_track_casing', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', layout: { 'line-join': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(36, 4%, 48%)', 'line-width': { base: 1.2, stops: [[13, 1.5], [20, 11]] } }, metadata: {}, filter: ['all', ['==', 'brunnel', 'bridge'], ['in', 'class', 'service', 'track']] }, { id: 'bridge_link_casing', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', layout: { 'line-join': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(28, 57%, 42%)', 'line-width': { base: 1.2, stops: [[12, 1], [13, 3], [14, 4], [20, 15]] }, 'line-opacity': 1 }, metadata: {}, filter: ['all', ['==', 'class', 'link'], ['==', 'brunnel', 'bridge']] }, { id: 'bridge_street_casing', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', layout: { 'line-join': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(36, 5%, 45%)', 'line-width': { base: 1.2, stops: [[12, 0.5], [13, 1], [14, 4], [20, 18]] }, 'line-opacity': { stops: [[12, 0], [12.5, 1]] } }, metadata: {}, filter: ['all', ['==', 'brunnel', 'bridge'], ['in', 'class', 'street', 'street_limited']] }, { id: 'bridge_path_pedestrian_casing', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', layout: { 'line-join': 'miter', visibility: 'visible' }, paint: { 'line-color': 'hsl(35, 5%, 48%)', 'line-width': { base: 1.2, stops: [[14, 1.5], [20, 18]] }, 'line-dasharray': [1, 0] }, metadata: {}, filter: ['all', ['==', '$type', 'LineString'], ['==', 'brunnel', 'bridge'], ['in', 'class', 'path', 'pedestrian']] }, { id: 'bridge_minor_casing', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', layout: { 'line-cap': 'butt', 'line-join': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(36, 4%, 48%)', 'line-width': { base: 1.2, stops: [[12, 0.7], [13, 1], [14, 4], [20, 16]] }, 'line-opacity': 1 }, metadata: {}, filter: ['all', ['==', '$type', 'LineString'], ['in', 'brunnel', 'bridge', 'tunnel'], ['in', 'class', 'minor'], ['!=', 'ramp', '1']] }, { id: 'bridge_secondary_tertiary_casing', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', layout: { 'line-join': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(15, 5%, 45%)', 'line-width': { base: 1.2, stops: [[8, 1.5], [20, 17]] }, 'line-opacity': 1 }, metadata: {}, filter: ['all', ['==', 'brunnel', 'bridge'], ['in', 'class', 'secondary', 'tertiary']] }, { id: 'bridge_trunk_primary_casing', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', layout: { 'line-join': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(28, 57%, 42%)', 'line-width': { base: 1.2, stops: [[5, 0.4], [6, 0.7], [7, 1.75], [20, 22]] } }, metadata: {}, filter: ['all', ['==', 'brunnel', 'bridge'], ['in', 'class', 'primary', 'trunk']] }, { id: 'bridge_motorway_casing', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', minzoom: 5, layout: { 'line-join': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(28, 57%, 42%)', 'line-width': { base: 1.2, stops: [[5, 0.4], [6, 0.7], [7, 1.75], [20, 22]] } }, metadata: {}, filter: ['all', ['==', 'class', 'motorway'], ['==', 'brunnel', 'bridge'], ['!=', 'ramp', 1]] }, { id: 'bridge_path_pedestrian', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', layout: { visibility: 'visible' }, paint: { 'line-color': 'hsl(0, 0%, 60%)', 'line-width': { base: 1.2, stops: [[14, 0.5], [20, 10]] }, 'line-dasharray': [1, 0.3] }, metadata: {}, filter: ['all', ['==', '$type', 'LineString'], ['==', 'brunnel', 'bridge'], ['in', 'class', 'path', 'pedestrian']] }, { id: 'bridge_motorway_link', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', minzoom: 5, layout: { 'line-join': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(34, 79%, 46%)', 'line-width': { base: 1.2, stops: [[9.9, 0], [10, 1], [14, 6], [20, 10]] } }, metadata: {}, filter: ['all', ['==', 'class', 'motorway'], ['==', 'ramp', 1], ['==', 'brunnel', 'bridge']] }, { id: 'bridge_service_track', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', layout: { 'line-join': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(0, 0%, 60%)', 'line-width': { base: 1.2, stops: [[13, 1.5], [16, 2], [20, 8]] } }, metadata: {}, filter: ['all', ['==', 'brunnel', 'bridge'], ['in', 'class', 'service', 'track']] }, { id: 'bridge_service_track_construction', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', layout: { 'line-join': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(0, 0%, 60%)', 'line-width': { base: 1.2, stops: [[13, 1.5], [16, 2], [20, 8]] }, 'line-dasharray': [2, 2] }, metadata: {}, filter: ['all', ['==', 'brunnel', 'bridge'], ['in', 'class', 'service_construction', 'track_construction']] }, { id: 'bridge_link', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', layout: { 'line-join': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(48, 79%, 50%)', 'line-width': { base: 1.2, stops: [[12.5, 0], [13, 1.5], [14, 2.5], [20, 11.5]] } }, metadata: {}, filter: ['all', ['==', 'class', 'link'], ['==', 'brunnel', 'bridge']] }, { id: 'bridge_street', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', layout: { 'line-join': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(0, 0%, 60%)', 'line-width': { base: 1.2, stops: [[13.5, 0], [14, 2.5], [20, 16]] }, 'line-opacity': 1 }, metadata: {}, filter: ['all', ['==', 'brunnel', 'bridge'], ['in', 'class', 'street', 'street_limited']] }, { id: 'bridge_minor', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', layout: { 'line-join': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(0, 0%, 60%)', 'line-width': { base: 1.2, stops: [[12.9, 0], [13, 1], [14, 2.5], [20, 13]] }, 'line-opacity': 1 }, metadata: {}, filter: ['all', ['==', 'brunnel', 'bridge'], ['in', 'class', 'minor']] }, { id: 'bridge_minor_construction', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', layout: { 'line-join': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(0, 0%, 60%)', 'line-width': { base: 1.2, stops: [[12.9, 0], [13, 1], [14, 2.5], [20, 13]] }, 'line-opacity': 1, 'line-dasharray': [2, 2] }, metadata: {}, filter: ['all', ['==', 'brunnel', 'bridge'], ['in', 'class', 'minor_construction']] }, { id: 'bridge_secondary_tertiary', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', layout: { 'line-join': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(60, 7%, 58%)', 'line-width': { base: 1.2, stops: [[6.5, 0], [8, 0.5], [20, 13]] } }, metadata: {}, filter: ['all', ['==', 'brunnel', 'bridge'], ['in', 'class', 'secondary', 'tertiary']] }, { id: 'bridge_secondary_tertiary_construction', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', layout: { 'line-join': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(0, 0%, 60%)', 'line-width': { base: 1.2, stops: [[6.5, 0], [8, 0.5], [20, 13]] }, 'line-dasharray': [2, 2] }, metadata: {}, filter: ['all', ['==', 'brunnel', 'bridge'], ['in', 'class', 'secondary_construction', 'tertiary_construction']] }, { id: 'bridge_trunk_primary', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', layout: { 'line-join': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(48, 79%, 50%)', 'line-width': { base: 1.2, stops: [[5, 0], [7, 1], [20, 18]] } }, metadata: {}, filter: ['all', ['==', 'brunnel', 'bridge'], ['in', 'class', 'primary', 'trunk']] }, { id: 'bridge_trunk_primary_construction', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', layout: { 'line-join': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(48, 79%, 50%)', 'line-width': { base: 1.2, stops: [[5, 0], [7, 1], [20, 18]] }, 'line-dasharray': [2, 2] }, metadata: {}, filter: ['all', ['==', 'brunnel', 'bridge'], ['in', 'class', 'primary_construction', 'trunk_construction']] }, { id: 'bridge_motorway', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', minzoom: 5, layout: { 'line-join': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(34, 79%, 46%)', 'line-width': { base: 1.2, stops: [[5, 0], [7, 1], [20, 18]] } }, metadata: {}, filter: ['all', ['==', 'class', 'motorway'], ['==', 'brunnel', 'bridge'], ['!=', 'ramp', 1]] }, { id: 'bridge_motorway_construction', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', minzoom: 5, layout: { 'line-join': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(34, 79%, 46%)', 'line-width': { base: 1.2, stops: [[5, 0], [7, 1], [20, 18]] }, 'line-dasharray': [2, 2] }, metadata: {}, filter: ['all', ['==', 'class', 'motorway_construction'], ['==', 'brunnel', 'bridge'], ['!=', 'ramp', 1]] }, { id: 'bridge_major_rail', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', layout: { visibility: 'visible' }, paint: { 'line-color': 'hsl(0, 0%, 44%)', 'line-width': { base: 1.4, stops: [[14, 0.4], [15, 0.75], [20, 2]] } }, metadata: {}, filter: ['all', ['==', 'class', 'rail'], ['==', 'brunnel', 'bridge']] }, { id: 'bridge_major_rail_hatching', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', layout: { visibility: 'visible' }, paint: { 'line-color': 'hsl(0, 0%, 44%)', 'line-width': { base: 1.4, stops: [[14.5, 0], [15, 3], [20, 8]] }, 'line-dasharray': [0.2, 8] }, metadata: {}, filter: ['all', ['==', 'class', 'rail'], ['==', 'brunnel', 'bridge']] }, { id: 'cablecar', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', minzoom: 13, layout: { 'line-cap': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(0, 0%, 42%)', 'line-width': { base: 1, stops: [[13, 1], [19, 2]] } }, filter: ['==', 'class', 'aerialway'] }, { id: 'cablecar-dash', type: 'line', source: 'openmaptiles', 'source-layer': 'transportation', minzoom: 13, layout: { 'line-cap': 'round', 'line-join': 'bevel', visibility: 'visible' }, paint: { 'line-color': 'hsl(0, 0%, 39%)', 'line-width': { base: 1, stops: [[13, 2], [19, 4]] }, 'line-dasharray': [2, 2] }, filter: ['==', 'class', 'aerialway'] }, { id: 'boundary_3', type: 'line', source: 'openmaptiles', 'source-layer': 'boundary', minzoom: 3, layout: { 'line-join': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(248, 54%, 49%)', 'line-width': { base: 1, stops: [[4, 0.4], [5, 0.7], [12, 1.6]] }, 'line-dasharray': [5, 3] }, metadata: {}, filter: ['all', ['in', 'admin_level', 3, 4], ['==', 'maritime', 0]] }, { id: 'boundary_2_z0-4', type: 'line', source: 'openmaptiles', 'source-layer': 'boundary', minzoom: 0, maxzoom: 5, layout: { 'line-cap': 'round', 'line-join': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(0, 50%, 42%)', 'line-width': { base: 1, stops: [[3, 1], [5, 1.2]] }, 'line-opacity': 1 }, metadata: {}, filter: ['all', ['==', 'admin_level', 2], ['==', 'maritime', 0], ['==', 'disputed', 0], ['!has', 'claimed_by']] }, { id: 'boundary_2_z0-4_maritime', type: 'line', source: 'openmaptiles', 'source-layer': 'boundary', minzoom: 0, maxzoom: 5, layout: { 'line-cap': 'round', 'line-join': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(200, 86%, 49%)', 'line-width': { base: 1, stops: [[3, 1], [5, 1.2]] }, 'line-opacity': 1 }, metadata: {}, filter: ['all', ['==', 'admin_level', 2], ['!has', 'claimed_by'], ['==', 'disputed', 0], ['==', 'maritime', 1]] }, { id: 'boundary_2_z0-4_disputed', type: 'line', source: 'openmaptiles', 'source-layer': 'boundary', minzoom: 0, maxzoom: 5, layout: { 'line-cap': 'round', 'line-join': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(0, 50%, 42%)', 'line-width': { base: 1, stops: [[3, 1], [5, 1.2]] }, 'line-opacity': 1, 'line-dasharray': [2, 2] }, metadata: {}, filter: ['all', ['==', 'admin_level', 2], ['==', 'maritime', 0], ['==', 'disputed', 1]] }, { id: 'boundary_2_z0-4_disputed_maritime', type: 'line', source: 'openmaptiles', 'source-layer': 'boundary', minzoom: 0, maxzoom: 5, layout: { 'line-cap': 'round', 'line-join': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(200, 86%, 49%)', 'line-width': { base: 1, stops: [[3, 1], [5, 1.2]] }, 'line-opacity': 1, 'line-dasharray': [2, 2] }, metadata: {}, filter: ['all', ['==', 'admin_level', 2], ['==', 'maritime', 1], ['==', 'disputed', 1]] }, { id: 'boundary_2_z5', type: 'line', source: 'openmaptiles', 'source-layer': 'boundary', minzoom: 5, layout: { 'line-cap': 'round', 'line-join': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(0, 50%, 42%)', 'line-width': { base: 1, stops: [[5, 1.2], [12, 3]] }, 'line-opacity': 1 }, metadata: {}, filter: ['all', ['==', 'admin_level', 2], ['==', 'disputed', 0], ['==', 'maritime', 0]] }, { id: 'boundary_2_z5_disputed', type: 'line', source: 'openmaptiles', 'source-layer': 'boundary', minzoom: 5, layout: { 'line-cap': 'round', 'line-join': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(0, 50%, 36%)', 'line-width': { base: 1, stops: [[5, 1.2], [12, 3]] }, 'line-opacity': 1, 'line-dasharray': [4, 3] }, metadata: {}, filter: ['all', ['==', 'admin_level', 2], ['==', 'disputed', 1], ['==', 'maritime', 0]] }, { id: 'boundary_2_z5_disputed_maritime', type: 'line', source: 'openmaptiles', 'source-layer': 'boundary', minzoom: 5, layout: { 'line-cap': 'round', 'line-join': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(200, 86%, 49%)', 'line-width': { base: 1, stops: [[5, 1.2], [12, 3]] }, 'line-opacity': 1, 'line-dasharray': [4, 3] }, metadata: {}, filter: ['all', ['==', 'admin_level', 2], ['==', 'disputed', 1], ['==', 'maritime', 1]] }, { id: 'boundary_2_z5_maritime', type: 'line', source: 'openmaptiles', 'source-layer': 'boundary', minzoom: 5, layout: { 'line-cap': 'round', 'line-join': 'round', visibility: 'visible' }, paint: { 'line-color': 'hsl(200, 86%, 49%)', 'line-width': { base: 1, stops: [[5, 1.2], [12, 3]] }, 'line-opacity': 1 }, metadata: {}, filter: ['all', ['==', 'admin_level', 2], ['==', 'disputed', 0], ['==', 'maritime', 1]] }, { id: 'water_name_line', type: 'symbol', source: 'openmaptiles', 'source-layer': 'water_name', minzoom: 0, layout: { 'text-font': ['Roboto Regular', 'Noto Sans Regular'], 'text-size': 12, 'text-field': ['concat', ['get', 'name:latin'], ' ', ['get', 'name:nonlatin']], visibility: 'visible', 'text-max-width': 5, 'symbol-placement': 'line' }, paint: { 'text-color': 'hsl(238, 29%, 30%)', 'text-halo-color': 'hsla(0, 0%, 55%, 0.7)', 'text-halo-width': 1 }, metadata: {}, filter: ['all', ['==', '$type', 'LineString']] }, { id: 'water_name_point', type: 'symbol', source: 'openmaptiles', 'source-layer': 'water_name', minzoom: 2, maxzoom: 24, layout: { 'text-font': ['Roboto Regular', 'Noto Sans Regular'], 'text-size': 12, 'text-field': ['concat', ['get', 'name:latin'], '\n', ['get', 'name:nonlatin']], visibility: 'visible', 'text-max-width': 5 }, paint: { 'text-color': 'hsl(210, 27%, 27%)', 'text-halo-color': 'hsla(0, 0%, 55%, 0)', 'text-halo-width': 1 }, metadata: {}, filter: ['all', ['==', '$type', 'Point'], ['!=', 'class', 'ocean']] }, { id: 'water_ocean_name_point', type: 'symbol', source: 'openmaptiles', 'source-layer': 'water_name', minzoom: 0, layout: { 'text-font': ['Roboto Regular', 'Noto Sans Regular'], 'text-size': 12, 'text-field': ['concat', ['get', 'name:latin'], '\n', ['get', 'name:nonlatin']], visibility: 'visible', 'text-max-width': 5 }, paint: { 'text-color': 'hsl(210, 27%, 27%)', 'text-halo-color': 'hsla(0, 0%, 55%, 0)', 'text-halo-width': 1 }, metadata: {}, filter: ['all', ['==', '$type', 'Point'], ['==', 'class', 'ocean']] }, { id: 'poi_z16_subclass', type: 'symbol', source: 'openmaptiles', 'source-layer': 'poi', minzoom: 16, layout: { 'text-font': ['Roboto Condensed Italic', 'Noto Sans Italic'], 'text-size': 12, 'icon-image': '{subclass}_11', 'text-field': ['concat', ['get', 'name:latin'], '\n', ['get', 'name:nonlatin']], visibility: 'visible', 'text-anchor': 'top', 'text-offset': [0, 0.6], 'text-padding': 2, 'text-max-width': 9 }, paint: { 'text-color': 'hsl(0, 82%, 60%)', 'text-halo-blur': 0.5, 'text-halo-color': 'hsl(0, 82%, 100%)', 'text-halo-width': 1 }, metadata: {}, filter: ['all', ['==', '$type', 'Point'], ['>=', 'rank', 20], ['any', ['all', ['in', 'class', 'pitch'], ['in', 'subclass', 'soccer', 'tennis', 'baseball', 'basketball', 'swimming', 'golf']]], ['any', ['!has', 'level'], ['==', 'level', 0]]] }, { id: 'poi_z16', type: 'symbol', source: 'openmaptiles', 'source-layer': 'poi', minzoom: 16, layout: { 'text-font': ['Roboto Condensed Italic', 'Noto Sans Italic'], 'text-size': 12, 'icon-image': '{class}_11', 'text-field': ['concat', ['get', 'name:latin'], '\n', ['get', 'name:nonlatin']], visibility: 'visible', 'text-anchor': 'top', 'text-offset': [0, 0.6], 'text-padding': 2, 'text-max-width': 9 }, paint: { 'text-color': 'hsl(0, 82%, 60%)', 'text-halo-blur': 0.5, 'text-halo-color': 'hsl(0, 82%, 100%)', 'text-halo-width': 1 }, metadata: {}, filter: ['all', ['==', '$type', 'Point'], ['!=', 'class', 'swimming_pool'], ['>=', 'rank', 20], ['none', ['all', ['in', 'class', 'pitch'], ['in', 'subclass', 'soccer', 'tennis', 'baseball', 'basketball', 'swimming', 'golf']]], ['any', ['!has', 'level'], ['==', 'level', 0]]] }, { id: 'poi_z15', type: 'symbol', source: 'openmaptiles', 'source-layer': 'poi', minzoom: 15, layout: { 'text-font': ['Roboto Condensed Italic', 'Noto Sans Italic'], 'text-size': 12, 'icon-image': '{class}_11', 'text-field': ['concat', ['get', 'name:latin'], '\n', ['get', 'name:nonlatin']], visibility: 'visible', 'text-anchor': 'top', 'text-offset': [0, 0.6], 'text-padding': 2, 'text-max-width': 9 }, paint: { 'text-color': 'hsl(0, 82%, 60%)', 'text-halo-blur': 0.5, 'text-halo-color': 'hsl(0, 82%, 100%)', 'text-halo-width': 1 }, metadata: {}, filter: ['all', ['==', '$type', 'Point'], ['!=', 'class', 'swimming_pool'], ['>=', 'rank', 7], ['<', 'rank', 20], ['any', ['!has', 'level'], ['==', 'level', 0]]] }, { id: 'poi_z14', type: 'symbol', source: 'openmaptiles', 'source-layer': 'poi', minzoom: 14.2, layout: { 'icon-size': 0.9, 'text-font': ['Roboto Condensed Italic', 'Noto Sans Italic'], 'text-size': 12, 'icon-image': '{class}_11', 'text-field': ['concat', ['get', 'name:latin'], '\n', ['get', 'name:nonlatin']], visibility: 'visible', 'text-anchor': 'top', 'text-offset': [0, 0.6], 'text-padding': 2, 'text-max-width': 9 }, paint: { 'text-color': 'hsl(0, 82%, 60%)', 'text-halo-blur': 0.5, 'text-halo-color': 'hsl(0, 82%, 100%)', 'text-halo-width': 1 }, metadata: {}, filter: ['all', ['==', '$type', 'Point'], ['!=', 'class', 'swimming_pool'], ['any', ['<', 'rank', 7]], ['any', ['!has', 'level'], ['==', 'level', 0]]] }, { id: 'poi_transit', type: 'symbol', source: 'openmaptiles', 'source-layer': 'poi', minzoom: 15, layout: { 'icon-size': 0.9, 'text-font': ['Roboto Condensed Italic', 'Noto Sans Italic'], 'text-size': 12, 'icon-image': '{class}_11', 'text-field': ['concat', ['get', 'name:latin'], '\n', ['get', 'name:nonlatin']], visibility: 'visible', 'text-anchor': 'left', 'text-offset': [0.9, 0], 'text-padding': 2, 'text-max-width': 9 }, paint: { 'text-color': 'hsl(0, 82%, 60%)', 'text-halo-blur': 0.5, 'text-halo-color': 'hsl(0, 82%, 100%)', 'text-halo-width': 1 }, metadata: {}, filter: ['all', ['in', 'class', 'bus', 'railway', 'airport'], ['==', 'subclass', 'station']] }, { id: 'road_oneway', type: 'symbol', source: 'openmaptiles', 'source-layer': 'transportation', minzoom: 15, layout: { 'icon-size': { stops: [[15, 0.5], [19, 1]] }, 'icon-image': 'oneway', visibility: 'visible', 'icon-rotate': 90, 'icon-padding': 2, 'symbol-spacing': 75, 'symbol-placement': 'line', 'icon-rotation-alignment': 'map' }, paint: { 'icon-opacity': 0.5 }, filter: ['all', ['==', 'oneway', 1], ['in', 'class', 'motorway', 'trunk', 'primary', 'secondary', 'tertiary', 'minor', 'service']] }, { id: 'road_oneway_opposite', type: 'symbol', source: 'openmaptiles', 'source-layer': 'transportation', minzoom: 15, layout: { 'icon-size': { stops: [[15, 0.5], [19, 1]] }, 'icon-image': 'oneway', 'icon-rotate': -90, 'icon-padding': 2, 'symbol-spacing': 75, 'symbol-placement': 'line', 'icon-rotation-alignment': 'map', visibility: 'visible' }, paint: { 'icon-opacity': 0.5 }, filter: ['all', ['==', 'oneway', -1], ['in', 'class', 'motorway', 'trunk', 'primary', 'secondary', 'tertiary', 'minor', 'service']] }, { id: 'road_gondola_label', type: 'symbol', source: 'openmaptiles', 'source-layer': 'transportation_name', minzoom: 13, layout: { 'text-font': ['Roboto Italic', 'Noto Sans Italic'], 'text-size': { base: 1, stops: [[13, 11], [15, 12]] }, 'text-field': ['concat', ['get', 'name:latin'], ' ', ['get', 'name:nonlatin']], 'text-anchor': 'center', 'text-offset': [0.8, 0.8], 'symbol-placement': 'line', visibility: 'visible' }, paint: { 'text-color': 'hsl(57, 82%, 61%)', 'text-halo-blur': 0.5, 'text-halo-color': 'hsl(30, 80%, 100%)', 'text-halo-width': 1 }, metadata: {}, filter: ['all', ['in', 'subclass', 'gondola', 'cable_car']] }, { id: 'road_ferry_label', type: 'symbol', source: 'openmaptiles', 'source-layer': 'transportation_name', minzoom: 12, layout: { 'text-font': ['Roboto Italic', 'Noto Sans Italic'], 'text-size': { base: 1, stops: [[13, 11], [15, 12]] }, 'text-field': ['concat', ['get', 'name:latin'], ' ', ['get', 'name:nonlatin']], 'text-anchor': 'center', 'text-offset': [0.8, 0.8], 'symbol-placement': 'line', visibility: 'visible' }, paint: { 'text-color': 'hsl(231, 91%, 62%)', 'text-halo-blur': 0.5, 'text-halo-width': 1 }, filter: ['all', ['==', 'subclass', 'ferry']] }, { id: 'road_label', type: 'symbol', source: 'openmaptiles', 'source-layer': 'transportation_name', layout: { 'text-font': ['Roboto Regular', 'Noto Sans Regular'], 'text-size': { base: 1, stops: [[13, 11], [14, 13]] }, 'text-field': ['concat', ['get', 'name:latin'], ' ', ['get', 'name:nonlatin']], 'text-anchor': 'center', 'text-offset': [0, 0.15], 'symbol-placement': 'line', visibility: 'visible' }, paint: { 'text-color': 'hsl(60, 83%, 60%)', 'text-halo-blur': 0.5, 'text-halo-width': 1 }, metadata: {}, filter: ['all', ['!in', 'subclass', 'ferry', 'gondola', 'cable_car']] }, { id: 'highway-junction', type: 'symbol', source: 'openmaptiles', 'source-layer': 'transportation_name', minzoom: 15.5, layout: { 'icon-size': 1, 'text-font': ['Noto Sans Regular'], 'text-size': 10, 'icon-image': 'circle_8', 'text-field': 'Exit {ref}', visibility: 'visible', 'text-anchor': 'bottom-left', 'text-offset': [0.55, -0.4], 'text-justify': 'center', 'icon-text-fit': 'none', 'symbol-spacing': 200, 'symbol-z-order': 'auto', 'symbol-placement': 'point', 'symbol-avoid-edges': true, 'text-pitch-alignment': 'auto', 'icon-rotation-alignment': 'viewport', 'text-rotation-alignment': 'viewport' }, paint: { 'text-color': 'hsl(30, 80%, 54%)', 'icon-opacity': 1 }, filter: ['all', ['==', '$type', 'Point'], ['==', 'subclass', 'junction'], ['>', 'ref_length', 0]] }, { id: 'highway-shield', type: 'symbol', source: 'openmaptiles', 'source-layer': 'transportation_name', minzoom: 8, layout: { 'icon-size': 1, 'text-font': ['Noto Sans Regular'], 'text-size': 10, 'icon-image': 'road_{ref_length}', 'text-field': '{ref}', 'symbol-spacing': 200, 'symbol-placement': { base: 1, stops: [[10, 'point'], [11, 'line']] }, 'symbol-avoid-edges': true, 'icon-rotation-alignment': 'viewport', 'text-rotation-alignment': 'viewport', visibility: 'visible' }, paint: { 'text-color': 'hsl(0, 82%, 43%)' }, filter: ['all', ['<=', 'ref_length', 6], ['==', '$type', 'LineString'], ['!in', 'network', 'us-interstate', 'us-highway', 'us-state']] }, { id: 'highway-shield-us-interstate', type: 'symbol', source: 'openmaptiles', 'source-layer': 'transportation_name', minzoom: 7, layout: { 'icon-size': 1, 'text-font': ['Noto Sans Regular'], 'text-size': 9, 'icon-image': '{network}_{ref_length}', 'text-field': '{ref}', 'symbol-spacing': 200, 'symbol-placement': { base: 1, stops: [[7, 'point'], [7, 'line'], [8, 'line']] }, 'symbol-avoid-edges': true, 'icon-rotation-alignment': 'viewport', 'text-rotation-alignment': 'viewport', visibility: 'visible' }, paint: { 'text-color': 'hsl(0, 82%, 100%)' }, filter: ['all', ['<=', 'ref_length', 6], ['==', '$type', 'LineString'], ['in', 'network', 'us-interstate']] }, { id: 'highway-shield-us-other', type: 'symbol', source: 'openmaptiles', 'source-layer': 'transportation_name', minzoom: 9, layout: { 'icon-size': 1, 'text-font': ['Noto Sans Regular'], 'text-size': 9, 'icon-image': '{network}_{ref_length}', 'text-field': '{ref}', 'symbol-spacing': 200, 'symbol-placement': { base: 1, stops: [[10, 'point'], [11, 'line']] }, 'symbol-avoid-edges': true, 'icon-rotation-alignment': 'viewport', 'text-rotation-alignment': 'viewport', visibility: 'visible' }, paint: { 'text-color': 'hsl(0, 82%, 43%)' }, filter: ['all', ['<=', 'ref_length', 6], ['==', '$type', 'LineString'], ['in', 'network', 'us-highway', 'us-state']] }, { id: 'airport_label', type: 'symbol', source: 'openmaptiles', 'source-layer': 'aerodrome_label', minzoom: 8.5, layout: { 'icon-size': 1, 'text-font': ['Noto Sans Regular'], 'text-size': { stops: [[8, 10], [14, 13]] }, 'icon-image': 'airport_11', 'text-field': ['concat', ['get', 'name:latin'], '\n', ['get', 'name:nonlatin']], visibility: 'visible', 'text-anchor': 'top', 'text-offset': [0, 0.6], 'text-padding': 2, 'text-optional': true, 'text-max-width': 9 }, paint: { 'text-color': 'hsl(30, 80%, 60%)', 'text-halo-blur': 0.5, 'text-halo-color': 'hsl(30, 80%, 100%)', 'text-halo-width': 1 }, filter: ['all', ['has', 'iata']] }, { id: 'airport_gate', type: 'symbol', source: 'openmaptiles', 'source-layer': 'aeroway', minzoom: 16.5, layout: { 'text-font': ['Roboto Medium', 'Noto Sans Regular'], 'text-size': { stops: [[17, 9], [19, 15]] }, 'text-field': '{ref}', visibility: 'visible' }, paint: { 'text-color': 'hsl(30, 80%, 69%)', 'text-halo-color': 'hsl(30, 80%, 100%)', 'text-halo-width': 1.5 }, filter: ['all', ['==', 'class', 'gate']] }, { id: 'place_park', type: 'symbol', source: 'openmaptiles', 'source-layer': 'park', minzoom: 12, layout: { 'text-font': ['Roboto Condensed Italic', 'Noto Sans Italic'], 'text-size': { base: 1.2, stops: [[12, 10], [15, 14]] }, 'text-field': ['concat', ['get', 'name:latin'], '\n', ['get', 'name:nonlatin']], visibility: 'visible', 'symbol-spacing': 1250, 'text-max-width': 9, 'text-transform': 'none', 'symbol-avoid-edges': false, 'text-letter-spacing': 0.1 }, paint: { 'text-color': 'hsl(124, 88%, 60%)', 'text-halo-blur': 0.5, 'text-halo-color': 'hsla(30, 80%, 100%, 0.8)', 'text-halo-width': 1.2 }, metadata: {}, filter: ['all', ['==', 'rank', 1]] }, { id: 'place_other', type: 'symbol', source: 'openmaptiles', 'source-layer': 'place', minzoom: 8, layout: { 'text-font': ['Roboto Condensed Italic', 'Noto Sans Italic'], 'text-size': { base: 1.2, stops: [[12, 10], [15, 14]] }, 'text-field': ['concat', ['get', 'name:latin'], '\n', ['get', 'name:nonlatin']], visibility: 'visible', 'text-max-width': 9, 'text-transform': 'uppercase', 'text-letter-spacing': 0.1 }, paint: { 'text-color': 'hsl(30, 81%, 50%)', 'text-halo-color': 'hsla(30, 80%, 100%, 0.8)', 'text-halo-width': 1.2 }, metadata: {}, filter: ['all', ['in', 'class', 'hamlet', 'island', 'islet', 'neighbourhood', 'suburb']] }, { id: 'place_village', type: 'symbol', source: 'openmaptiles', 'source-layer': 'place', minzoom: 8, layout: { 'text-font': ['Roboto Regular', 'Noto Sans Regular'], 'text-size': { base: 1.2, stops: [[10, 12], [15, 22]] }, 'text-field': ['concat', ['get', 'name:latin'], '\n', ['get', 'name:nonlatin']], 'text-max-width': 8, visibility: 'visible' }, paint: { 'text-color': 'hsl(30, 80%, 47%)', 'text-halo-color': 'hsla(30, 80%, 100%, 0.8)', 'text-halo-width': 1.2 }, metadata: {}, filter: ['all', ['==', 'class', 'village']] }, { id: 'place_town', type: 'symbol', source: 'openmaptiles', 'source-layer': 'place', minzoom: 6, layout: { 'text-font': ['Roboto Regular', 'Noto Sans Regular'], 'text-size': { base: 1.2, stops: [[7, 12], [11, 16]] }, 'icon-image': { base: 1, stops: [[0, 'circle-stroked_16'], [10, '']] }, 'text-field': ['concat', ['get', 'name:latin'], '\n', ['get', 'name:nonlatin']], 'text-anchor': 'bottom', 'text-offset': [0, 0], 'text-max-width': 8, visibility: 'visible' }, paint: { 'text-color': 'hsl(30, 80%, 47%)', 'text-halo-color': 'hsla(30, 80%, 100%, 0.8)', 'text-halo-width': 1.2 }, metadata: {}, filter: ['all', ['==', 'class', 'town']] }, { id: 'place_region', type: 'symbol', source: 'openmaptiles', 'source-layer': 'place', minzoom: 5, maxzoom: 7, layout: { 'text-font': ['Roboto Medium', 'Noto Sans Regular'], 'text-size': { stops: [[3, 9], [5, 10], [6, 11]] }, 'text-field': ['concat', ['get', 'name:latin'], '\n', ['get', 'name:nonlatin']], visibility: 'visible', 'text-padding': 2, 'text-transform': 'uppercase', 'text-letter-spacing': 0.1 }, paint: { 'text-color': 'hsl(78, 81%, 63%)', 'text-halo-color': 'hsla(30, 80%, 100%, 0.7)', 'text-halo-width': 0.8 }, metadata: {}, filter: ['all', ['==', 'class', 'state'], ['in', 'rank', 3, 4, 5]] }, { id: 'place_state', type: 'symbol', source: 'openmaptiles', 'source-layer': 'place', minzoom: 3, maxzoom: 6, layout: { 'text-font': ['Roboto Medium', 'Noto Sans Regular'], 'text-size': { stops: [[3, 9], [5, 11], [6, 12]] }, 'text-field': ['concat', ['get', 'name:latin'], '\n', ['get', 'name:nonlatin']], visibility: 'visible', 'text-padding': 2, 'text-transform': 'uppercase', 'text-letter-spacing': 0.1 }, paint: { 'text-color': 'hsl(78, 81%, 63%)', 'text-halo-color': 'hsla(30, 80%, 100%, 0.7)', 'text-halo-width': 0.8 }, metadata: {}, filter: ['all', ['==', 'class', 'state'], ['in', 'rank', 1, 2]] }, { id: 'place_city', type: 'symbol', source: 'openmaptiles', 'source-layer': 'place', minzoom: 5, layout: { 'text-font': ['Roboto Medium', 'Noto Sans Regular'], 'text-size': { base: 1.2, stops: [[7, 14], [11, 24]] }, 'icon-image': { base: 1, stops: [[0, 'circle-stroked_16'], [10, '']] }, 'text-field': ['concat', ['get', 'name:latin'], '\n', ['get', 'name:nonlatin']], 'text-anchor': 'bottom', 'text-offset': [0, 0], 'icon-optional': false, 'text-max-width': 8, 'icon-allow-overlap': true, visibility: 'visible' }, paint: { 'text-color': 'hsl(30, 80%, 47%)', 'text-halo-color': 'hsla(30, 80%, 100%, 0.8)', 'text-halo-width': 1.2 }, metadata: {}, filter: ['all', ['==', 'class', 'city']] }, { id: 'country_other', type: 'symbol', source: 'openmaptiles', 'source-layer': 'place', layout: { 'text-font': ['Roboto Condensed Italic', 'Noto Sans Italic'], 'text-size': { stops: [[3, 9], [7, 15]] }, 'text-field': ['case', ['has', 'name:en'], ['concat', ['get', 'name:en'], ['case', ['has', 'name:nonlatin'], ['concat', '\n', ['get', 'name:nonlatin']], '']], ['get', 'name']], 'text-max-width': 6.25, 'text-transform': 'none', visibility: 'visible' }, paint: { 'text-color': 'hsl(270, 83%, 49%)', 'text-halo-blur': 1, 'text-halo-color': 'hsla(30, 80%, 100%, 0.8)', 'text-halo-width': 0.8 }, metadata: {}, filter: ['all', ['==', 'class', 'country'], ['!has', 'iso_a2']] }, { id: 'country_3', type: 'symbol', source: 'openmaptiles', 'source-layer': 'place', layout: { 'text-font': ['Roboto Condensed Italic', 'Noto Sans Italic'], 'text-size': { stops: [[3, 11], [7, 17]] }, 'text-field': ['case', ['has', 'name:en'], ['concat', ['get', 'name:en'], ['case', ['has', 'name:nonlatin'], ['concat', '\n', ['get', 'name:nonlatin']], '']], ['get', 'name']], 'text-max-width': 6.25, 'text-transform': 'none', visibility: 'visible' }, paint: { 'text-color': 'hsl(270, 83%, 49%)', 'text-halo-blur': 1, 'text-halo-color': 'hsla(30, 80%, 100%, 0.8)', 'text-halo-width': 0.8 }, metadata: {}, filter: ['all', ['>=', 'rank', 3], ['==', 'class', 'country'], ['has', 'iso_a2']] }, { id: 'country_2', type: 'symbol', source: 'openmaptiles', 'source-layer': 'place', layout: { 'text-font': ['Roboto Condensed Italic', 'Noto Sans Italic'], 'text-size': { stops: [[2, 11], [5, 17]] }, 'text-field': ['case', ['has', 'name:en'], ['concat', ['get', 'name:en'], ['case', ['has', 'name:nonlatin'], ['concat', '\n', ['get', 'name:nonlatin']], '']], ['get', 'name']], 'text-max-width': 6.25, 'text-transform': 'none', visibility: 'visible' }, paint: { 'text-color': 'hsl(270, 83%, 49%)', 'text-halo-blur': 1, 'text-halo-color': 'hsla(30, 80%, 100%, 0.8)', 'text-halo-width': 0.8 }, metadata: {}, filter: ['all', ['==', 'rank', 2], ['==', 'class', 'country'], ['has', 'iso_a2']] }, { id: 'country_1', type: 'symbol', source: 'openmaptiles', 'source-layer': 'place', layout: { 'text-font': ['Roboto Condensed Italic', 'Noto Sans Italic'], 'text-size': { stops: [[1, 11], [4, 17], [6, 19]] }, 'text-field': ['case', ['has', 'name:en'], ['concat', ['get', 'name:en'], ['case', ['has', 'name:nonlatin'], ['concat', '\n', ['get', 'name:nonlatin']], '']], ['get', 'name']], 'text-max-width': 6.25, 'text-transform': 'none', visibility: 'visible' }, paint: { 'text-color': 'hsl(270, 83%, 49%)', 'text-halo-blur': 1, 'text-halo-color': 'hsla(30, 80%, 100%, 0.8)', 'text-halo-width': 0.8 }, metadata: {}, filter: ['all', ['==', 'rank', 1], ['==', 'class', 'country'], ['has', 'iso_a2']] }, { id: 'continent', type: 'symbol', source: 'openmaptiles', 'source-layer': 'place', maxzoom: 1, layout: { 'text-font': ['Roboto Condensed Italic', 'Noto Sans Italic'], 'text-size': 13, 'text-field': ['case', ['has', 'name:en'], ['concat', ['get', 'name:en'], ['case', ['has', 'name:nonlatin'], ['concat', '\n', ['get', 'name:nonlatin']], '']], ['get', 'name']], 'text-justify': 'center', 'text-transform': 'uppercase', visibility: 'visible' }, paint: { 'text-color': 'hsl(30, 87%, 54%)', 'text-halo-color': 'hsla(30, 80%, 100%, 0.7)', 'text-halo-width': 1 }, metadata: {}, filter: ['all', ['==', 'class', 'continent']] }, { id: 'housenumber', type: 'symbol', source: 'openmaptiles', 'source-layer': 'housenumber', minzoom: 17.5, layout: { 'text-font': ['Roboto Medium', 'Noto Sans Regular'], 'text-size': 10, 'text-field': '{housenumber}', visibility: 'visible' }, paint: { 'text-color': 'hsla(60, 83%, 60%, 0.69)' } }], + sources: { + openmaptiles: { + url: 'static/Titles/tiles.json', + type: 'vector' + }, + maptiler_attribution: { + attribution: '© MapTiler © OpenStreetMap contributors', + type: 'vector' + } + }, + layers: [ + { + id: + 'background', + type: 'background', + layout: { visibility: 'visible' }, + paint: { 'background-color': { stops: [[6, 'hsl(47, 77%, 46%)'], [10, 'hsl(47, 77%, 46%)'], [14, 'hsl(47, 47%, 46%)'], [15, 'hsl(47, 47%, 46%)']] } } + }, + { + id: + 'landcover_cropland', + type: 'fill', + source: 'openmaptiles', + 'source-layer': 'globallandcover', + layout: { visibility: 'visible' }, + paint: { 'fill-color': 'hsl(50, 95%, 52%)', 'fill-opacity': { base: 1, stops: [[4, 1], [8, 0]] } }, + filter: ['all', ['==', 'class', 'crop']] + }, + { + id: 'landcover_grassland', + type: 'fill', + source: 'openmaptiles', + 'source-layer': 'globallandcover', + layout: { visibility: 'visible' }, + paint: { 'fill-color': 'hsl(75, 92%, 51%)', 'fill-opacity': { base: 1, stops: [[4, 1], [8, 0]] } }, + filter: ['all', ['==', 'class', 'grass']] + }, + { + id: 'landcover_scrubland', + type: 'fill', + source: 'openmaptiles', + 'source-layer': 'globallandcover', + layout: { visibility: 'visible' }, + paint: { 'fill-color': 'hsl(96, 92%, 49%)', 'fill-opacity': { base: 1, stops: [[4, 1], [8, 0]] } }, + filter: ['all', ['==', 'class', 'scrub']] + }, { + id: + 'landcover_treeland', + type: 'fill', + source: 'openmaptiles', + 'source-layer': 'globallandcover', + layout: { visibility: 'visible' }, + paint: { 'fill-color': 'hsl(99, 91%, 47%)', 'fill-opacity': { base: 1, stops: [[4, 1], [8, 0]] } }, + filter: ['all', ['==', 'class', 'tree']] + }, { + id: 'landcover_forestland', + type: 'fill', + source: 'openmaptiles', + 'source-layer': 'globallandcover', + layout: { visibility: 'visible' }, + paint: { 'fill-color': 'hsl(119, 90%, 46%)', 'fill-opacity': { base: 1, stops: [[4, 1], [8, 0]] } }, + filter: ['all', ['==', 'class', 'forest']] + }, { + id: 'landcover_snowland', + type: 'fill', + source: 'openmaptiles', + 'source-layer': 'globallandcover', + layout: { visibility: 'visible' }, + paint: { 'fill-color': 'hsl(47, 0%, 49%)', 'fill-opacity': { base: 1, stops: [[4, 1], [8, 0]] } }, + filter: ['all', ['==', 'class', 'snow']] + }, { + id: 'park_outline', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'park', + minzoom: 9, + layout: { visibility: 'visible' }, + paint: { 'line-color': 'hsl(90, 77%, 44%)', 'line-width': { stops: [[9, 0.5], [14, 2]] }, 'line-opacity': 1, 'line-dasharray': [1, 1.5] }, + filter: ['all'] + }, { + id: 'landuse_residential', + type: 'fill', + source: 'openmaptiles', + 'source-layer': 'landuse', + maxzoom: 24, + layout: { visibility: 'visible' }, + paint: { 'fill-color': { base: 1, stops: [[9, 'hsla(47, 33%, 43%, 0.8)'], [12, 'hsla(47, 33%, 43%, 0.55)'], [16, 'hsla(47, 33%, 43%, 0.35)']] } }, + metadata: {}, + filter: ['all', ['in', 'class', 'residential', 'suburbs', 'neighbourhood']] + }, { + id: 'landcover_wood', + type: 'fill', + source: 'openmaptiles', + 'source-layer': 'landcover', + layout: { visibility: 'visible' }, + paint: { 'fill-color': 'hsla(98, 85%, 48%, 0.7)', 'fill-opacity': 0.4, 'fill-antialias': false }, + metadata: {}, + filter: ['all', ['==', 'class', 'wood']] + }, { + id: 'landcover_grass', + type: 'fill', + source: 'openmaptiles', + 'source-layer': 'landcover', + layout: { visibility: 'visible' }, + paint: { 'fill-color': 'hsl(75, 77%, 57%)', 'fill-opacity': 0.3, 'fill-antialias': false }, + metadata: {}, + filter: ['all', ['==', 'class', 'grass']] + }, { + id: 'landuse_cemetery', + type: 'fill', + source: 'openmaptiles', + 'source-layer': 'landuse', + layout: { visibility: 'visible' }, + paint: { 'fill-color': 'hsl(47, 36%, 40%)' }, + metadata: {}, + filter: ['==', 'class', 'cemetery'] + }, { + id: 'landuse_hospital', + type: 'fill', + source: 'openmaptiles', + 'source-layer': 'landuse', + layout: { visibility: 'visible' }, + paint: { 'fill-color': 'hsl(47, 69%, 45%)' }, + metadata: {}, + filter: ['==', 'class', 'hospital'] + }, { + id: 'landuse_school', + type: 'fill', + source: 'openmaptiles', + 'source-layer': 'landuse', + layout: { visibility: 'visible' }, + paint: { 'fill-color': 'hsl(47, 49%, 42%)' }, + metadata: {}, + filter: ['==', 'class', 'school'] + }, { + id: 'landuse_stadium', + type: 'fill', + source: 'openmaptiles', + 'source-layer': 'landuse', + layout: { visibility: 'visible' }, + paint: { 'fill-color': 'hsl(47, 49%, 42%)' }, + metadata: {}, + filter: ['all', ['in', 'class', 'stadium', 'pitch', 'track']] + }, { + id: 'landuse_garage', + type: 'fill', + source: 'openmaptiles', + 'source-layer': 'landuse', + layout: { visibility: 'visible' }, + paint: { 'fill-color': 'hsl(47, 0%, 45%)' }, + metadata: {}, + filter: ['all', ['in', 'class', 'garages']] + }, { + id: 'landuse_dam', + type: 'fill', + source: 'openmaptiles', + 'source-layer': 'landuse', + layout: { visibility: 'visible' }, + paint: { 'fill-color': 'hsl(47, 20%, 39%)' }, + metadata: {}, + filter: ['all', ['in', 'class', 'dam']] + }, { + id: 'waterway_tunnel', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'waterway', + minzoom: 14, + layout: { 'line-cap': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(210, 50%, 43%)', 'line-width': { base: 1.3, stops: [[13, 0.5], [20, 6]] }, 'line-dasharray': [2, 4] }, + filter: ['all', ['==', 'brunnel', 'tunnel']] + }, { + id: 'waterway_river', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'waterway', + layout: { 'line-cap': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(210, 50%, 43%)', 'line-width': { base: 1.2, stops: [[11, 0.5], [20, 6]] } }, + metadata: {}, + filter: ['all', ['==', 'class', 'river'], ['!=', 'brunnel', 'tunnel'], ['!=', 'intermittent', 1]] + }, { + id: 'waterway_river_intermittent', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'waterway', + layout: { 'line-cap': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(210, 50%, 43%)', 'line-width': { base: 1.2, stops: [[11, 0.5], [20, 6]] }, 'line-dasharray': [3, 2] }, + metadata: {}, + filter: ['all', ['==', 'class', 'river'], ['!=', 'brunnel', 'tunnel'], ['==', 'intermittent', 1]] + }, { + id: 'waterway_other', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'waterway', + layout: { 'line-cap': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(210, 50%, 43%)', 'line-width': { base: 1.3, stops: [[13, 0.5], [20, 6]] } }, + metadata: {}, + filter: ['all', ['!=', 'class', 'river'], ['!=', 'brunnel', 'tunnel'], ['!=', 'intermittent', 1]] + }, { + id: 'waterway_other_intermittent', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'waterway', + layout: { 'line-cap': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(210, 50%, 43%)', 'line-width': { base: 1.3, stops: [[13, 0.5], [20, 6]] }, 'line-dasharray': [4, 3] }, + metadata: {}, + filter: ['all', ['!=', 'class', 'river'], ['!=', 'brunnel', 'tunnel'], ['==', 'intermittent', 1]] + }, { + id: 'water_intermittent', + type: 'fill', + source: 'openmaptiles', + 'source-layer': 'water', + layout: { visibility: 'visible' }, + paint: { 'fill-color': 'hsl(205, 62%, 45%)', 'fill-opacity': 0.85 }, + metadata: {}, + filter: ['all', ['==', 'intermittent', 1]] + }, { + id: 'water', + type: 'fill', + source: 'openmaptiles', + 'source-layer': 'water', + layout: { visibility: 'visible' }, + paint: { 'fill-color': 'hsl(204, 63%, 41%)' }, + metadata: {}, + filter: ['all', ['!=', 'intermittent', 1], ['!=', 'brunnel', 'tunnel']] + }, { + id: 'landcover_sand', + type: 'fill', + source: 'openmaptiles', + 'source-layer': 'landcover', + layout: { visibility: 'visible' }, + paint: { 'fill-color': 'hsl(47, 71%, 40%)', 'fill-opacity': 1, 'fill-antialias': false }, + metadata: {}, + filter: ['all', ['in', 'class', 'sand']] + }, { + id: 'landcover_sand_outline', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'landcover', + layout: { visibility: 'visible' }, + paint: { 'line-color': 'hsl(47, 71%, 40%)', 'line-width': 2 }, + metadata: {}, + filter: ['all', ['in', 'class', 'sand']] + }, { + id: 'aeroway_fill', + type: 'fill', + source: 'openmaptiles', + 'source-layer': 'aeroway', + minzoom: 11, + layout: { visibility: 'visible' }, + paint: { 'fill-color': 'hsl(47, 9%, 43%)', 'fill-opacity': 0.7 }, + metadata: {}, + filter: ['==', '$type', 'Polygon'] + }, { + id: 'aeroway_runway', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'aeroway', + minzoom: 11, + layout: { visibility: 'visible' }, + paint: { 'line-color': 'hsl(34, 15%, 56%)', 'line-width': { base: 1.2, stops: [[11, 3], [20, 16]] } }, + metadata: {}, + filter: ['all', ['==', '$type', 'LineString'], ['==', 'class', 'runway']] + }, { + id: 'aeroway_taxiway', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'aeroway', + minzoom: 11, + layout: { visibility: 'visible' }, + paint: { 'line-color': 'hsl(34, 15%, 56%)', 'line-width': { base: 1.2, stops: [[11, 0.5], [20, 6]] } }, + metadata: {}, + filter: ['all', ['==', '$type', 'LineString'], ['==', 'class', 'taxiway']] + }, { + id: 'ferry', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + layout: { 'line-join': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(199, 23%, 31%)', 'line-width': 1.1, 'line-dasharray': [2, 2] }, + filter: ['all', ['in', 'class', 'ferry']] + }, { + id: 'tunnel_motorway_link_casing', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + minzoom: 5, + layout: { 'line-join': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(28, 57%, 42%)', 'line-width': { base: 1.2, stops: [[12, 1], [13, 3], [14, 4], [20, 15]] }, 'line-opacity': 1, 'line-dasharray': [0.5, 0.25] }, + metadata: {}, + filter: ['all', ['==', 'class', 'motorway'], ['==', 'ramp', 1], ['==', 'brunnel', 'tunnel']] + }, { + id: 'tunnel_service_track_casing', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + layout: { 'line-join': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(36, 4%, 48%)', 'line-width': { base: 1.2, stops: [[12, 0.5], [13, 1], [14, 4], [20, 11]] }, 'line-dasharray': [0.5, 0.25] }, + metadata: {}, + filter: ['all', ['==', 'brunnel', 'tunnel'], ['in', 'class', 'service', 'track']] + }, { + id: 'tunnel_link_casing', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + layout: { 'line-join': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(28, 57%, 42%)', 'line-width': { base: 1.2, stops: [[12, 1], [13, 3], [14, 4], [20, 15]] }, 'line-opacity': 1 }, + metadata: {}, + filter: ['all', ['==', 'ramp', '1'], ['==', 'brunnel', 'tunnel'], ['>', 'layer', 0]] + }, { + id: 'tunnel_minor_casing', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + layout: { 'line-join': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(36, 4%, 48%)', 'line-width': { base: 1.2, stops: [[12, 0.5], [13, 1.5], [14, 4], [20, 16]] }, 'line-dasharray': [0.5, 0.25] }, + metadata: {}, + filter: ['all', ['==', 'brunnel', 'tunnel'], ['==', 'class', 'minor']] + }, { + id: 'tunnel_street_casing', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + layout: { 'line-join': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(36, 4%, 48%)', 'line-width': { base: 1.2, stops: [[12, 0.5], [13, 1], [14, 4], [20, 15]] }, 'line-opacity': { stops: [[12, 0], [12.5, 1]] } }, + metadata: {}, + filter: ['all', ['==', 'brunnel', 'tunnel'], ['in', 'class', 'street', 'street_limited']] + }, { + id: 'tunnel_secondary_tertiary_casing', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + layout: { 'line-join': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(15, 5%, 45%)', 'line-width': { base: 1.2, stops: [[8, 1.5], [20, 17]] }, 'line-opacity': 1, 'line-dasharray': [0.5, 0.25] }, + metadata: {}, + filter: ['all', ['==', 'brunnel', 'tunnel'], ['in', 'class', 'secondary', 'tertiary']] + }, { + id: 'tunnel_trunk_primary_casing', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + layout: { 'line-join': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(28, 57%, 42%)', 'line-width': { base: 1.2, stops: [[5, 0.4], [6, 0.7], [7, 1.75], [20, 22]] }, 'line-dasharray': [0.5, 0.25] }, + metadata: {}, + filter: ['all', ['==', 'brunnel', 'tunnel'], ['in', 'class', 'primary', 'trunk']] + }, { + id: 'tunnel_motorway_casing', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + minzoom: 5, + layout: { 'line-join': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(28, 57%, 42%)', 'line-width': { base: 1.2, stops: [[5, 0.4], [6, 0.7], [7, 1.75], [20, 22]] }, 'line-dasharray': [0.5, 0.25] }, + metadata: {}, + filter: ['all', ['==', 'class', 'motorway'], ['==', 'brunnel', 'tunnel']] + }, { + id: 'tunnel_path_pedestrian', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + layout: { visibility: 'visible' }, + paint: { 'line-color': 'hsla(43, 17%, 45%, 0.45)', 'line-width': { base: 1.2, stops: [[14, 0.5], [20, 6]] }, 'line-dasharray': [1, 0.75] }, + metadata: {}, + filter: ['all', ['==', '$type', 'LineString'], ['==', 'brunnel', 'tunnel'], ['in', 'class', 'path', 'pedestrian']] + }, { + id: 'tunnel_motorway_link', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + minzoom: 5, + layout: { 'line-join': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(34, 79%, 46%)', 'line-width': { base: 1.2, stops: [[12.5, 0], [13, 1.5], [14, 2.5], [20, 11.5]] } }, + metadata: {}, + filter: ['all', ['==', 'class', 'motorway_link'], ['==', 'ramp', 1], ['==', 'brunnel', 'tunnel']] + }, { + id: 'tunnel_service_track', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + layout: { 'line-join': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(0, 0%, 60%)', 'line-width': { base: 1.2, stops: [[13, 1.5], [16, 2], [20, 8]] } }, + metadata: {}, + filter: ['all', ['==', 'brunnel', 'tunnel'], ['in', 'class', 'service', 'track']] + }, { + id: 'tunnel_service_track_construction', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + layout: { 'line-join': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(0, 0%, 60%)', 'line-width': { base: 1.2, stops: [[13, 1.5], [16, 2], [20, 8]] }, 'line-dasharray': [2, 2] }, + metadata: {}, + filter: ['all', ['==', 'brunnel', 'tunnel'], ['in', 'class', 'service_construction', 'track_construction']] + }, { + id: 'tunnel_link', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + layout: { 'line-join': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(48, 79%, 54%)', 'line-width': { base: 1.2, stops: [[12.5, 0], [13, 1.5], [14, 2.5], [20, 11.5]] } }, + metadata: {}, + filter: ['all', ['==', 'ramp', '1'], ['==', 'brunnel', 'tunnel'], ['>', 'layer', 0]] + }, { + id: 'tunnel_minor', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + layout: { 'line-join': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(0, 0%, 60%)', 'line-width': { base: 1.2, stops: [[12.9, 0], [13, 1], [14, 2.5], [20, 13]] }, 'line-opacity': 1 }, + metadata: {}, + filter: ['all', ['==', 'brunnel', 'tunnel'], ['in', 'class', 'minor']] + }, { + id: 'tunnel_minor_construction', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + layout: { 'line-join': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(0, 0%, 60%)', 'line-width': { base: 1.2, stops: [[12.9, 0], [13, 1], [14, 2.5], [20, 13]] }, 'line-opacity': 1, 'line-dasharray': [2, 2] }, + metadata: {}, + filter: ['all', ['==', 'brunnel', 'tunnel'], ['in', 'class', 'minor_construction']] + }, { + id: 'tunnel_secondary_tertiary', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + layout: { 'line-join': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(60, 7%, 58%)', 'line-width': { base: 1.2, stops: [[6.5, 0], [8, 0.5], [20, 13]] } }, + metadata: {}, + filter: ['all', ['==', 'brunnel', 'tunnel'], ['in', 'class', 'secondary', 'tertiary']] + }, { + id: 'tunnel_secondary_tertiary_construction', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + layout: { 'line-join': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(0, 0%, 60%)', 'line-width': { base: 1.2, stops: [[6.5, 0], [8, 0.5], [20, 13]] }, 'line-dasharray': [2, 2] }, + metadata: {}, + filter: ['all', ['==', 'brunnel', 'tunnel'], ['in', 'class', 'secondary_construction', 'tertiary_construction']] + }, { + id: 'tunnel_trunk_primary', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + layout: { 'line-join': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(48, 79%, 54%)', 'line-width': { base: 1.2, stops: [[5, 0], [7, 1], [20, 18]] } }, + metadata: {}, + filter: ['all', ['==', 'brunnel', 'tunnel'], ['in', 'class', 'primary', 'trunk']] + }, { + id: 'tunnel_trunk_primary_construction', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + layout: { 'line-join': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(48, 79%, 54%)', 'line-width': { base: 1.2, stops: [[5, 0], [7, 1], [20, 18]] }, 'line-dasharray': [2, 2] }, + metadata: {}, + filter: ['all', ['==', 'brunnel', 'tunnel'], ['in', 'class', 'primary_construction', 'trunk_construction']] + }, { + id: 'tunnel_motorway', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + minzoom: 5, + layout: { 'line-join': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(35, 79%, 50%)', 'line-width': { base: 1.2, stops: [[5, 0], [7, 1], [20, 18]] } }, + metadata: {}, + filter: ['all', ['==', 'class', 'motorway'], ['==', 'brunnel', 'tunnel']] + }, { + id: 'tunnel_motorway_construction', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + minzoom: 5, + layout: { 'line-join': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(35, 79%, 50%)', 'line-width': { base: 1.2, stops: [[5, 0], [7, 1], [20, 18]] }, 'line-dasharray': [2, 2] }, + metadata: {}, + filter: ['all', ['==', 'class', 'motorway_construction'], ['==', 'brunnel', 'tunnel']] + }, { + id: 'tunnel_major_rail', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + layout: { visibility: 'visible' }, + paint: { 'line-color': 'hsl(0, 0%, 44%)', 'line-width': { base: 1.4, stops: [[14, 0.4], [15, 0.75], [20, 2]] } }, + metadata: {}, + filter: ['all', ['==', 'brunnel', 'tunnel'], ['in', 'class', 'rail']] + }, { + id: 'tunnel_major_rail_hatching', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + layout: { visibility: 'visible' }, + paint: { 'line-color': 'hsl(0, 0%, 44%)', 'line-width': { base: 1.4, stops: [[14.5, 0], [15, 3], [20, 8]] }, 'line-dasharray': [0.2, 8] }, + metadata: {}, + filter: ['all', ['==', 'brunnel', 'tunnel'], ['==', 'class', 'rail']] + }, { + id: 'road_area_pier', + type: 'fill', + source: 'openmaptiles', + 'source-layer': 'transportation', + layout: { visibility: 'visible' }, + paint: { 'fill-color': 'hsl(47, 47%, 46%)', 'fill-antialias': true }, + metadata: {}, + filter: ['all', ['==', '$type', 'Polygon'], ['==', 'class', 'pier']] + }, { + id: 'road_pier', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + layout: { 'line-cap': 'round', 'line-join': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(47, 47%, 46%)', 'line-width': { base: 1.2, stops: [[15, 1], [17, 4]] } }, + metadata: {}, + filter: ['all', ['==', '$type', 'LineString'], ['in', 'class', 'pier']] + }, { + id: 'road_area_bridge', + type: 'fill', + source: 'openmaptiles', + 'source-layer': 'transportation', + layout: { visibility: 'visible' }, + paint: { 'fill-color': 'hsla(47, 47%, 46%, 0.6)', 'fill-antialias': true }, + metadata: {}, + filter: ['all', ['==', '$type', 'Polygon'], ['==', 'brunnel', 'bridge']] + }, { + id: 'road_area_pattern', + type: 'fill', + source: 'openmaptiles', + 'source-layer': 'transportation', + layout: { visibility: 'visible' }, + paint: { 'fill-pattern': 'pedestrian_polygon' }, + metadata: {}, + filter: ['all', ['==', '$type', 'Polygon'], ['!has', 'brunnel'], ['!in', 'class', 'bridge', 'pier']] + }, { + id: 'road_service_track_casing', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + layout: { 'line-cap': 'round', 'line-join': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(36, 4%, 48%)', 'line-width': { base: 1.2, stops: [[12, 0.5], [13, 1], [14, 4], [20, 11]] } }, + metadata: {}, + filter: ['all', ['!in', 'brunnel', 'bridge', 'tunnel'], ['in', 'class', 'service', 'track']] + }, { + id: 'road_link_casing', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + minzoom: 13, + layout: { 'line-cap': 'round', 'line-join': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(28, 57%, 42%)', 'line-width': { base: 1.2, stops: [[12, 1], [13, 3], [14, 4], [20, 15]] }, 'line-opacity': 1 }, + metadata: {}, + filter: ['all', ['!in', 'brunnel', 'bridge', 'tunnel'], ['!in', 'class', 'motorway', 'trunk', 'primary', 'pedestrian', 'path', 'track', 'service'], ['==', 'ramp', 1]] + }, { + id: 'road_trunk_primary_link_casing', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + layout: { 'line-cap': 'butt', 'line-join': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(28, 57%, 42%)', 'line-width': { base: 1.2, stops: [[5, 0], [7, 0.7], [20, 14]] } }, + metadata: {}, + filter: ['all', ['!in', 'brunnel', 'bridge', 'tunnel'], ['==', 'ramp', 1], ['in', 'class', 'primary', 'trunk']] + }, { + id: 'road_motorway_link_casing', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + minzoom: 10, + layout: { 'line-cap': 'butt', 'line-join': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(28, 57%, 42%)', 'line-width': { base: 1.2, stops: [[9.9, 0], [10, 1.4], [14, 8], [20, 12]] }, 'line-opacity': 1 }, + metadata: {}, + filter: ['all', ['!in', 'brunnel', 'bridge', 'tunnel'], ['==', 'class', 'motorway'], ['==', 'ramp', 1]] + }, { + id: 'road_minor_casing', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + layout: { 'line-cap': 'round', 'line-join': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(36, 4%, 48%)', 'line-width': { base: 1.2, stops: [[12, 0.7], [13, 1], [14, 4], [20, 16]] }, 'line-opacity': 1 }, + metadata: {}, + filter: ['all', ['==', '$type', 'LineString'], ['!in', 'brunnel', 'bridge', 'tunnel'], ['in', 'class', 'minor'], ['!=', 'ramp', '1']] + }, { + id: 'road_secondary_tertiary_casing', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + layout: { 'line-cap': 'round', 'line-join': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(15, 5%, 45%)', 'line-width': { base: 1.2, stops: [[8, 1.5], [20, 17]] }, 'line-opacity': 1 }, + metadata: {}, + filter: ['all', ['!in', 'brunnel', 'bridge', 'tunnel'], ['in', 'class', 'secondary', 'tertiary'], ['!=', 'ramp', 1]] + }, { + id: 'road_trunk_primary_casing', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + layout: { 'line-cap': 'butt', 'line-join': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(28, 57%, 42%)', 'line-width': { base: 1.2, stops: [[5, 0.4], [6, 0.7], [7, 1.75], [20, 22]] }, 'line-opacity': 1 }, + metadata: {}, + filter: ['all', ['!in', 'brunnel', 'bridge', 'tunnel'], ['!=', 'ramp', 1], ['in', 'class', 'primary', 'trunk'], ['!=', 'ramp', 1]] + }, { + id: 'road_motorway_casing', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + minzoom: 5, + layout: { 'line-cap': 'butt', 'line-join': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(28, 57%, 42%)', 'line-width': { base: 1.2, stops: [[5, 0.4], [6, 0.7], [7, 1.75], [20, 22]] } }, + metadata: {}, + filter: ['all', ['!in', 'brunnel', 'bridge', 'tunnel'], ['==', 'class', 'motorway'], ['!=', 'ramp', 1]] + }, { + id: 'road_path_pedestrian', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + minzoom: 12, + layout: { 'line-join': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsla(44, 11%, 39%, 0.45)', 'line-width': { base: 1.2, stops: [[12, 1], [16, 2], [20, 3]] }, 'line-dasharray': [1, 1] }, + metadata: {}, + filter: ['all', ['==', '$type', 'LineString'], ['!in', 'brunnel', 'bridge', 'tunnel'], ['in', 'class', 'path', 'pedestrian']] + }, { + id: 'road_link', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + minzoom: 13, + layout: { 'line-cap': 'round', 'line-join': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(48, 79%, 50%)', 'line-width': { base: 1.2, stops: [[12.5, 0], [13, 1.5], [14, 2.5], [20, 11.5]] } }, + metadata: {}, + filter: ['all', ['!in', 'brunnel', 'bridge', 'tunnel'], ['==', 'ramp', 1], ['!in', 'class', 'motorway', 'trunk', 'primary', 'pedestrian', 'path', 'track', 'service']] + }, { + id: 'road_trunk_primary_link', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + layout: { 'line-cap': 'round', 'line-join': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(48, 79%, 50%)', 'line-width': { base: 1.2, stops: [[5, 0], [7, 0.5], [20, 10]] } }, + metadata: {}, + filter: ['all', ['!in', 'brunnel', 'bridge', 'tunnel'], ['==', 'ramp', 1], ['in', 'class', 'primary', 'trunk']] + }, { + id: 'road_motorway_link', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + minzoom: 10, + layout: { 'line-cap': 'round', 'line-join': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(34, 79%, 46%)', 'line-width': { base: 1.2, stops: [[9.9, 0], [10, 1], [14, 6], [20, 10]] } }, + metadata: {}, + filter: ['all', ['!in', 'brunnel', 'bridge', 'tunnel'], ['==', 'class', 'motorway'], ['==', 'ramp', 1]] + }, { + id: 'road_service_track', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + minzoom: 13, + layout: { 'line-cap': 'round', 'line-join': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(0, 0%, 60%)', 'line-width': { base: 1.2, stops: [[13, 1.5], [16, 2], [20, 8]] } }, + metadata: {}, + filter: ['all', ['!in', 'brunnel', 'bridge', 'tunnel'], ['in', 'class', 'service', 'track']] + }, { + id: 'road_service_track_construction', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + minzoom: 13, + layout: { 'line-cap': 'round', 'line-join': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(0, 0%, 60%)', 'line-width': { base: 1.2, stops: [[13, 1.5], [16, 2], [20, 8]] }, 'line-dasharray': [2, 2] }, + metadata: {}, + filter: ['all', ['!in', 'brunnel', 'bridge', 'tunnel'], ['in', 'class', 'service_construction', 'track_construction']] + }, { + id: 'road_minor', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + layout: { 'line-cap': 'round', 'line-join': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(0, 0%, 60%)', 'line-width': { base: 1.2, stops: [[12.9, 0], [13, 1], [14, 2.5], [20, 13]] }, 'line-opacity': 1 }, + metadata: {}, + filter: ['all', ['==', '$type', 'LineString'], ['all', ['!in', 'brunnel', 'bridge', 'tunnel'], ['in', 'class', 'minor']]] + }, { + id: 'road_minor_construction', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + layout: { 'line-cap': 'round', 'line-join': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(0, 0%, 60%)', 'line-width': { base: 1.2, stops: [[14, 2.5], [20, 18]] }, 'line-opacity': 1, 'line-dasharray': [2, 2] }, + metadata: {}, + filter: ['all', ['==', '$type', 'LineString'], ['all', ['!in', 'brunnel', 'bridge', 'tunnel'], ['in', 'class', 'minor_construction']]] + }, { + id: 'road_secondary_tertiary', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + layout: { 'line-cap': 'round', 'line-join': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(60, 7%, 58%)', 'line-width': { base: 1.2, stops: [[6.5, 0], [8, 0.5], [20, 13]] } }, + metadata: {}, + filter: ['all', ['!in', 'brunnel', 'bridge', 'tunnel'], ['in', 'class', 'secondary', 'tertiary']] + }, { + id: 'road_secondary_tertiary_construction', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + layout: { 'line-cap': 'round', 'line-join': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(0, 0%, 60%)', 'line-width': { base: 1.2, stops: [[6.5, 0], [8, 0.5], [20, 13]] }, 'line-dasharray': [2, 2] }, + metadata: {}, + filter: ['all', ['!in', 'brunnel', 'bridge', 'tunnel'], ['in', 'class', 'secondary_construction', 'tertiary_construction']] + }, { + id: 'road_trunk_primary', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + layout: { 'line-cap': 'round', 'line-join': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(48, 79%, 50%)', 'line-width': { base: 1.2, stops: [[5, 0], [7, 1], [20, 18]] } }, + metadata: {}, + filter: ['all', ['!in', 'brunnel', 'bridge', 'tunnel'], ['!=', 'ramp', 1], ['in', 'class', 'primary', 'trunk']] + }, { + id: 'road_trunk_primary_construction', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + layout: { 'line-cap': 'round', 'line-join': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(48, 79%, 50%)', 'line-width': { base: 1.2, stops: [[5, 0], [7, 1], [20, 18]] }, 'line-dasharray': [2, 2] }, + metadata: {}, + filter: ['all', ['!in', 'brunnel', 'bridge', 'tunnel'], ['!=', 'ramp', 1], ['in', 'class', 'primary_construction', 'trunk_construction']] + }, { + id: 'road_motorway', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + minzoom: 5, + layout: { 'line-cap': 'round', 'line-join': 'round', visibility: 'visible' }, + paint: { 'line-color': { base: 1, stops: [[5, 'hsl(26, 69%, 37%)'], [6, 'hsl(34, 79%, 46%)']] }, 'line-width': { base: 1.2, stops: [[5, 0], [7, 1], [20, 18]] } }, + metadata: {}, + filter: ['all', ['!in', 'brunnel', 'bridge', 'tunnel'], ['==', 'class', 'motorway'], ['!=', 'ramp', 1]] + }, { + id: 'road_motorway_construction', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + minzoom: 5, + layout: { 'line-cap': 'round', 'line-join': 'round', visibility: 'visible' }, + paint: { 'line-color': { base: 1, stops: [[5, 'hsl(26, 69%, 37%)'], [6, 'hsl(34, 79%, 46%)']] }, 'line-width': { base: 1.2, stops: [[5, 0], [7, 1], [20, 18]] }, 'line-dasharray': [2, 2] }, + metadata: {}, + filter: ['all', ['!in', 'brunnel', 'bridge', 'tunnel'], ['==', 'class', 'motorway_construction'], ['!=', 'ramp', 1]] + }, { + id: 'road_major_rail', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + layout: { visibility: 'visible' }, + paint: { 'line-color': 'hsl(0, 0%, 44%)', 'line-width': { base: 1.4, stops: [[14, 0.4], [15, 0.75], [20, 2]] } }, + metadata: {}, + filter: ['all', ['!in', 'brunnel', 'bridge', 'tunnel'], ['in', 'class', 'rail']] + }, { + id: 'road_major_rail_hatching', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + layout: { visibility: 'visible' }, + paint: { 'line-color': 'hsl(0, 0%, 44%)', 'line-width': { base: 1.4, stops: [[14.5, 0], [15, 3], [20, 8]] }, 'line-dasharray': [0.2, 8] }, + metadata: {}, + filter: ['all', ['!in', 'brunnel', 'bridge', 'tunnel'], ['==', 'class', 'rail']] + }, { + id: 'road_minor_rail', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + layout: { visibility: 'visible' }, + paint: { 'line-color': 'hsl(0, 0%, 44%)', 'line-width': { base: 1.4, stops: [[14, 0.4], [15, 0.75], [20, 2]] } }, + metadata: {}, + filter: ['all', ['!in', 'brunnel', 'bridge', 'tunnel'], ['in', 'subclass', 'tram', 'light_rail']] + }, { + id: 'road_minor_rail_hatching', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + layout: { visibility: 'visible' }, + paint: { 'line-color': 'hsl(0, 0%, 44%)', 'line-width': { base: 1.4, stops: [[14.5, 0], [15, 2], [20, 6]] }, 'line-dasharray': [0.2, 4] }, + metadata: {}, + filter: ['all', ['!in', 'brunnel', 'bridge', 'tunnel'], ['in', 'subclass', 'tram', 'light_rail']] + }, { + id: 'building', + type: 'fill', + source: 'openmaptiles', + 'source-layer': 'building', + minzoom: 13, + maxzoom: 14, + layout: { visibility: 'visible' }, + paint: { 'fill-color': 'hsla(30, 86%, 48%, 0.3)', 'fill-outline-color': { base: 1, stops: [[13, 'hsla(35, 86%, 52%, 0.32)'], [14, 'hsl(35, 86%, 52%)']] } }, + metadata: {} + }, { + id: 'building-3d', + type: 'fill-extrusion', + source: 'openmaptiles', + 'source-layer': 'building', + minzoom: 14, + layout: { visibility: 'visible' }, + paint: { 'fill-extrusion-base': { type: 'identity', property: 'render_min_height' }, 'fill-extrusion-color': 'hsl(30, 86%, 48%)', 'fill-extrusion-height': { type: 'identity', property: 'render_height' }, 'fill-extrusion-opacity': 0.3 }, + metadata: {}, + filter: ['all', ['!has', 'hide_3d']] + }, { + id: 'waterway-bridge-case', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'waterway', + layout: { 'line-cap': 'butt', 'line-join': 'miter', visibility: 'visible' }, + paint: { 'line-color': 'hsl(0, 0%, 40%)', 'line-width': { base: 1.6, stops: [[12, 0.5], [20, 5]] }, 'line-gap-width': { base: 1.3, stops: [[13, 0.5], [20, 6]] } }, + filter: ['all', ['==', '$type', 'LineString'], ['==', 'brunnel', 'bridge']] + }, { + id: 'waterway-bridge', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'waterway', + layout: { 'line-cap': 'round', 'line-join': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(204, 63%, 41%)', 'line-width': { base: 1.3, stops: [[13, 0.5], [20, 6]] } }, + filter: ['all', ['==', '$type', 'LineString'], ['==', 'brunnel', 'bridge']] + }, { + id: 'bridge_motorway_link_casing', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + minzoom: 5, + layout: { 'line-join': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(28, 57%, 42%)', 'line-width': { base: 1.2, stops: [[9.9, 0], [10, 1.4], [14, 8], [20, 12]] }, 'line-opacity': 1 }, + metadata: {}, + filter: ['all', ['==', 'class', 'motorway'], ['==', 'ramp', 1], ['==', 'brunnel', 'bridge']] + }, { + id: 'bridge_service_track_casing', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + layout: { 'line-join': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(36, 4%, 48%)', 'line-width': { base: 1.2, stops: [[13, 1.5], [20, 11]] } }, + metadata: {}, + filter: ['all', ['==', 'brunnel', 'bridge'], ['in', 'class', 'service', 'track']] + }, { + id: 'bridge_link_casing', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + layout: { 'line-join': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(28, 57%, 42%)', 'line-width': { base: 1.2, stops: [[12, 1], [13, 3], [14, 4], [20, 15]] }, 'line-opacity': 1 }, + metadata: {}, + filter: ['all', ['==', 'class', 'link'], ['==', 'brunnel', 'bridge']] + }, { + id: 'bridge_street_casing', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + layout: { 'line-join': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(36, 5%, 45%)', 'line-width': { base: 1.2, stops: [[12, 0.5], [13, 1], [14, 4], [20, 18]] }, 'line-opacity': { stops: [[12, 0], [12.5, 1]] } }, + metadata: {}, + filter: ['all', ['==', 'brunnel', 'bridge'], ['in', 'class', 'street', 'street_limited']] + }, { + id: 'bridge_path_pedestrian_casing', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + layout: { 'line-join': 'miter', visibility: 'visible' }, + paint: { 'line-color': 'hsl(35, 5%, 48%)', 'line-width': { base: 1.2, stops: [[14, 1.5], [20, 18]] }, 'line-dasharray': [1, 0] }, + metadata: {}, + filter: ['all', ['==', '$type', 'LineString'], ['==', 'brunnel', 'bridge'], ['in', 'class', 'path', 'pedestrian']] + }, { + id: 'bridge_minor_casing', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + layout: { 'line-cap': 'butt', 'line-join': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(36, 4%, 48%)', 'line-width': { base: 1.2, stops: [[12, 0.7], [13, 1], [14, 4], [20, 16]] }, 'line-opacity': 1 }, + metadata: {}, + filter: ['all', ['==', '$type', 'LineString'], ['in', 'brunnel', 'bridge', 'tunnel'], ['in', 'class', 'minor'], ['!=', 'ramp', '1']] + }, { + id: 'bridge_secondary_tertiary_casing', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + layout: { 'line-join': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(15, 5%, 45%)', 'line-width': { base: 1.2, stops: [[8, 1.5], [20, 17]] }, 'line-opacity': 1 }, + metadata: {}, + filter: ['all', ['==', 'brunnel', 'bridge'], ['in', 'class', 'secondary', 'tertiary']] + }, { + id: 'bridge_trunk_primary_casing', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + layout: { 'line-join': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(28, 57%, 42%)', 'line-width': { base: 1.2, stops: [[5, 0.4], [6, 0.7], [7, 1.75], [20, 22]] } }, + metadata: {}, + filter: ['all', ['==', 'brunnel', 'bridge'], ['in', 'class', 'primary', 'trunk']] + }, { + id: 'bridge_motorway_casing', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + minzoom: 5, + layout: { 'line-join': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(28, 57%, 42%)', 'line-width': { base: 1.2, stops: [[5, 0.4], [6, 0.7], [7, 1.75], [20, 22]] } }, + metadata: {}, + filter: ['all', ['==', 'class', 'motorway'], ['==', 'brunnel', 'bridge'], ['!=', 'ramp', 1]] + }, { + id: 'bridge_path_pedestrian', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + layout: { visibility: 'visible' }, + paint: { 'line-color': 'hsl(0, 0%, 60%)', 'line-width': { base: 1.2, stops: [[14, 0.5], [20, 10]] }, 'line-dasharray': [1, 0.3] }, + metadata: {}, + filter: ['all', ['==', '$type', 'LineString'], ['==', 'brunnel', 'bridge'], ['in', 'class', 'path', 'pedestrian']] + }, { + id: 'bridge_motorway_link', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + minzoom: 5, + layout: { 'line-join': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(34, 79%, 46%)', 'line-width': { base: 1.2, stops: [[9.9, 0], [10, 1], [14, 6], [20, 10]] } }, + metadata: {}, + filter: ['all', ['==', 'class', 'motorway'], ['==', 'ramp', 1], ['==', 'brunnel', 'bridge']] + }, { + id: 'bridge_service_track', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + layout: { 'line-join': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(0, 0%, 60%)', 'line-width': { base: 1.2, stops: [[13, 1.5], [16, 2], [20, 8]] } }, + metadata: {}, + filter: ['all', ['==', 'brunnel', 'bridge'], ['in', 'class', 'service', 'track']] + }, { + id: 'bridge_service_track_construction', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + layout: { 'line-join': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(0, 0%, 60%)', 'line-width': { base: 1.2, stops: [[13, 1.5], [16, 2], [20, 8]] }, 'line-dasharray': [2, 2] }, + metadata: {}, + filter: ['all', ['==', 'brunnel', 'bridge'], ['in', 'class', 'service_construction', 'track_construction']] + }, { + id: 'bridge_link', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + layout: { 'line-join': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(48, 79%, 50%)', 'line-width': { base: 1.2, stops: [[12.5, 0], [13, 1.5], [14, 2.5], [20, 11.5]] } }, + metadata: {}, + filter: ['all', ['==', 'class', 'link'], ['==', 'brunnel', 'bridge']] + }, { + id: 'bridge_street', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + layout: { 'line-join': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(0, 0%, 60%)', 'line-width': { base: 1.2, stops: [[13.5, 0], [14, 2.5], [20, 16]] }, 'line-opacity': 1 }, + metadata: {}, + filter: ['all', ['==', 'brunnel', 'bridge'], ['in', 'class', 'street', 'street_limited']] + }, { + id: 'bridge_minor', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + layout: { 'line-join': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(0, 0%, 60%)', 'line-width': { base: 1.2, stops: [[12.9, 0], [13, 1], [14, 2.5], [20, 13]] }, 'line-opacity': 1 }, + metadata: {}, + filter: ['all', ['==', 'brunnel', 'bridge'], ['in', 'class', 'minor']] + }, { + id: 'bridge_minor_construction', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + layout: { 'line-join': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(0, 0%, 60%)', 'line-width': { base: 1.2, stops: [[12.9, 0], [13, 1], [14, 2.5], [20, 13]] }, 'line-opacity': 1, 'line-dasharray': [2, 2] }, + metadata: {}, + filter: ['all', ['==', 'brunnel', 'bridge'], ['in', 'class', 'minor_construction']] + }, { + id: 'bridge_secondary_tertiary', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + layout: { 'line-join': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(60, 7%, 58%)', 'line-width': { base: 1.2, stops: [[6.5, 0], [8, 0.5], [20, 13]] } }, + metadata: {}, + filter: ['all', ['==', 'brunnel', 'bridge'], ['in', 'class', 'secondary', 'tertiary']] + }, { + id: 'bridge_secondary_tertiary_construction', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + layout: { 'line-join': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(0, 0%, 60%)', 'line-width': { base: 1.2, stops: [[6.5, 0], [8, 0.5], [20, 13]] }, 'line-dasharray': [2, 2] }, + metadata: {}, + filter: ['all', ['==', 'brunnel', 'bridge'], ['in', 'class', 'secondary_construction', 'tertiary_construction']] + }, { + id: 'bridge_trunk_primary', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + layout: { 'line-join': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(48, 79%, 50%)', 'line-width': { base: 1.2, stops: [[5, 0], [7, 1], [20, 18]] } }, + metadata: {}, + filter: ['all', ['==', 'brunnel', 'bridge'], ['in', 'class', 'primary', 'trunk']] + }, { + id: 'bridge_trunk_primary_construction', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + layout: { 'line-join': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(48, 79%, 50%)', 'line-width': { base: 1.2, stops: [[5, 0], [7, 1], [20, 18]] }, 'line-dasharray': [2, 2] }, + metadata: {}, + filter: ['all', ['==', 'brunnel', 'bridge'], ['in', 'class', 'primary_construction', 'trunk_construction']] + }, { + id: 'bridge_motorway', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + minzoom: 5, + layout: { 'line-join': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(34, 79%, 46%)', 'line-width': { base: 1.2, stops: [[5, 0], [7, 1], [20, 18]] } }, + metadata: {}, + filter: ['all', ['==', 'class', 'motorway'], ['==', 'brunnel', 'bridge'], ['!=', 'ramp', 1]] + }, { + id: 'bridge_motorway_construction', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + minzoom: 5, + layout: { 'line-join': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(34, 79%, 46%)', 'line-width': { base: 1.2, stops: [[5, 0], [7, 1], [20, 18]] }, 'line-dasharray': [2, 2] }, + metadata: {}, + filter: ['all', ['==', 'class', 'motorway_construction'], ['==', 'brunnel', 'bridge'], ['!=', 'ramp', 1]] + }, { + id: 'bridge_major_rail', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + layout: { visibility: 'visible' }, + paint: { 'line-color': 'hsl(0, 0%, 44%)', 'line-width': { base: 1.4, stops: [[14, 0.4], [15, 0.75], [20, 2]] } }, + metadata: {}, + filter: ['all', ['==', 'class', 'rail'], ['==', 'brunnel', 'bridge']] + }, { + id: 'bridge_major_rail_hatching', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + layout: { visibility: 'visible' }, + paint: { 'line-color': 'hsl(0, 0%, 44%)', 'line-width': { base: 1.4, stops: [[14.5, 0], [15, 3], [20, 8]] }, 'line-dasharray': [0.2, 8] }, + metadata: {}, + filter: ['all', ['==', 'class', 'rail'], ['==', 'brunnel', 'bridge']] + }, { + id: 'cablecar', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + minzoom: 13, + layout: { 'line-cap': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(0, 0%, 42%)', 'line-width': { base: 1, stops: [[13, 1], [19, 2]] } }, + filter: ['==', 'class', 'aerialway'] + }, { + id: 'cablecar-dash', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'transportation', + minzoom: 13, + layout: { 'line-cap': 'round', 'line-join': 'bevel', visibility: 'visible' }, + paint: { 'line-color': 'hsl(0, 0%, 39%)', 'line-width': { base: 1, stops: [[13, 2], [19, 4]] }, 'line-dasharray': [2, 2] }, + filter: ['==', 'class', 'aerialway'] + }, { + id: 'boundary_3', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'boundary', + minzoom: 3, + layout: { 'line-join': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(248, 54%, 49%)', 'line-width': { base: 1, stops: [[4, 0.4], [5, 0.7], [12, 1.6]] }, 'line-dasharray': [5, 3] }, + metadata: {}, + filter: ['all', ['in', 'admin_level', 3, 4], ['==', 'maritime', 0]] + }, { + id: 'boundary_2_z0-4', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'boundary', + minzoom: 0, + maxzoom: 5, + layout: { 'line-cap': 'round', 'line-join': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(0, 50%, 42%)', 'line-width': { base: 1, stops: [[3, 1], [5, 1.2]] }, 'line-opacity': 1 }, + metadata: {}, + filter: ['all', ['==', 'admin_level', 2], ['==', 'maritime', 0], ['==', 'disputed', 0], ['!has', 'claimed_by']] + }, { + id: 'boundary_2_z0-4_maritime', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'boundary', + minzoom: 0, + maxzoom: 5, + layout: { 'line-cap': 'round', 'line-join': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(200, 86%, 49%)', 'line-width': { base: 1, stops: [[3, 1], [5, 1.2]] }, 'line-opacity': 1 }, + metadata: {}, + filter: ['all', ['==', 'admin_level', 2], ['!has', 'claimed_by'], ['==', 'disputed', 0], ['==', 'maritime', 1]] + }, { + id: 'boundary_2_z0-4_disputed', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'boundary', + minzoom: 0, + maxzoom: 5, + layout: { 'line-cap': 'round', 'line-join': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(0, 50%, 42%)', 'line-width': { base: 1, stops: [[3, 1], [5, 1.2]] }, 'line-opacity': 1, 'line-dasharray': [2, 2] }, + metadata: {}, + filter: ['all', ['==', 'admin_level', 2], ['==', 'maritime', 0], ['==', 'disputed', 1]] + }, { + id: 'boundary_2_z0-4_disputed_maritime', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'boundary', + minzoom: 0, + maxzoom: 5, + layout: { 'line-cap': 'round', 'line-join': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(200, 86%, 49%)', 'line-width': { base: 1, stops: [[3, 1], [5, 1.2]] }, 'line-opacity': 1, 'line-dasharray': [2, 2] }, + metadata: {}, + filter: ['all', ['==', 'admin_level', 2], ['==', 'maritime', 1], ['==', 'disputed', 1]] + }, { + id: 'boundary_2_z5', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'boundary', + minzoom: 5, + layout: { 'line-cap': 'round', 'line-join': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(0, 50%, 42%)', 'line-width': { base: 1, stops: [[5, 1.2], [12, 3]] }, 'line-opacity': 1 }, + metadata: {}, + filter: ['all', ['==', 'admin_level', 2], ['==', 'disputed', 0], ['==', 'maritime', 0]] + }, { + id: 'boundary_2_z5_disputed', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'boundary', + minzoom: 5, + layout: { 'line-cap': 'round', 'line-join': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(0, 50%, 36%)', 'line-width': { base: 1, stops: [[5, 1.2], [12, 3]] }, 'line-opacity': 1, 'line-dasharray': [4, 3] }, + metadata: {}, + filter: ['all', ['==', 'admin_level', 2], ['==', 'disputed', 1], ['==', 'maritime', 0]] + }, { + id: 'boundary_2_z5_disputed_maritime', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'boundary', + minzoom: 5, + layout: { 'line-cap': 'round', 'line-join': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(200, 86%, 49%)', 'line-width': { base: 1, stops: [[5, 1.2], [12, 3]] }, 'line-opacity': 1, 'line-dasharray': [4, 3] }, + metadata: {}, + filter: ['all', ['==', 'admin_level', 2], ['==', 'disputed', 1], ['==', 'maritime', 1]] + }, { + id: 'boundary_2_z5_maritime', + type: 'line', + source: 'openmaptiles', + 'source-layer': 'boundary', + minzoom: 5, + layout: { 'line-cap': 'round', 'line-join': 'round', visibility: 'visible' }, + paint: { 'line-color': 'hsl(200, 86%, 49%)', 'line-width': { base: 1, stops: [[5, 1.2], [12, 3]] }, 'line-opacity': 1 }, + metadata: {}, + filter: ['all', ['==', 'admin_level', 2], ['==', 'disputed', 0], ['==', 'maritime', 1]] + }, { + id: 'water_name_line', + type: 'symbol', + source: 'openmaptiles', + 'source-layer': 'water_name', + minzoom: 0, + layout: { 'text-font': ['Roboto Regular', 'Noto Sans Regular'], 'text-size': 12, 'text-field': ['concat', ['get', 'name:latin'], ' ', ['get', 'name:nonlatin']], visibility: 'visible', 'text-max-width': 5, 'symbol-placement': 'line' }, + paint: { 'text-color': 'hsl(238, 29%, 30%)', 'text-halo-color': 'hsla(0, 0%, 55%, 0.7)', 'text-halo-width': 1 }, + metadata: {}, + filter: ['all', ['==', '$type', 'LineString']] + }, { + id: 'water_name_point', + type: 'symbol', + source: 'openmaptiles', + 'source-layer': 'water_name', + minzoom: 2, + maxzoom: 24, + layout: { 'text-font': ['Roboto Regular', 'Noto Sans Regular'], 'text-size': 12, 'text-field': ['concat', ['get', 'name:latin'], '\n', ['get', 'name:nonlatin']], visibility: 'visible', 'text-max-width': 5 }, + paint: { 'text-color': 'hsl(210, 27%, 27%)', 'text-halo-color': 'hsla(0, 0%, 55%, 0)', 'text-halo-width': 1 }, + metadata: {}, + filter: ['all', ['==', '$type', 'Point'], ['!=', 'class', 'ocean']] + }, { + id: 'water_ocean_name_point', + type: 'symbol', + source: 'openmaptiles', + 'source-layer': 'water_name', + minzoom: 0, + layout: { 'text-font': ['Roboto Regular', 'Noto Sans Regular'], 'text-size': 12, 'text-field': ['concat', ['get', 'name:latin'], '\n', ['get', 'name:nonlatin']], visibility: 'visible', 'text-max-width': 5 }, + paint: { 'text-color': 'hsl(210, 27%, 27%)', 'text-halo-color': 'hsla(0, 0%, 55%, 0)', 'text-halo-width': 1 }, + metadata: {}, + filter: ['all', ['==', '$type', 'Point'], ['==', 'class', 'ocean']] + }, { + id: 'poi_z16_subclass', + type: 'symbol', + source: 'openmaptiles', + 'source-layer': 'poi', + minzoom: 16, + layout: { 'text-font': ['Roboto Condensed Italic', 'Noto Sans Italic'], 'text-size': 12, 'icon-image': '{subclass}_11', 'text-field': ['concat', ['get', 'name:latin'], '\n', ['get', 'name:nonlatin']], visibility: 'visible', 'text-anchor': 'top', 'text-offset': [0, 0.6], 'text-padding': 2, 'text-max-width': 9 }, + paint: { 'text-color': 'hsl(0, 82%, 60%)', 'text-halo-blur': 0.5, 'text-halo-color': 'hsl(0, 82%, 100%)', 'text-halo-width': 1 }, + metadata: {}, + filter: ['all', ['==', '$type', 'Point'], ['>=', 'rank', 20], ['any', ['all', ['in', 'class', 'pitch'], ['in', 'subclass', 'soccer', 'tennis', 'baseball', 'basketball', 'swimming', 'golf']]], ['any', ['!has', 'level'], ['==', 'level', 0]]] + }, { + id: 'poi_z16', + type: 'symbol', + source: 'openmaptiles', + 'source-layer': 'poi', + minzoom: 16, + layout: { 'text-font': ['Roboto Condensed Italic', 'Noto Sans Italic'], 'text-size': 12, 'icon-image': '{class}_11', 'text-field': ['concat', ['get', 'name:latin'], '\n', ['get', 'name:nonlatin']], visibility: 'visible', 'text-anchor': 'top', 'text-offset': [0, 0.6], 'text-padding': 2, 'text-max-width': 9 }, + paint: { 'text-color': 'hsl(0, 82%, 60%)', 'text-halo-blur': 0.5, 'text-halo-color': 'hsl(0, 82%, 100%)', 'text-halo-width': 1 }, + metadata: {}, + filter: ['all', ['==', '$type', 'Point'], ['!=', 'class', 'swimming_pool'], ['>=', 'rank', 20], ['none', ['all', ['in', 'class', 'pitch'], ['in', 'subclass', 'soccer', 'tennis', 'baseball', 'basketball', 'swimming', 'golf']]], ['any', ['!has', 'level'], ['==', 'level', 0]]] + }, { + id: 'poi_z15', + type: 'symbol', + source: 'openmaptiles', + 'source-layer': 'poi', + minzoom: 15, + layout: { 'text-font': ['Roboto Condensed Italic', 'Noto Sans Italic'], 'text-size': 12, 'icon-image': '{class}_11', 'text-field': ['concat', ['get', 'name:latin'], '\n', ['get', 'name:nonlatin']], visibility: 'visible', 'text-anchor': 'top', 'text-offset': [0, 0.6], 'text-padding': 2, 'text-max-width': 9 }, + paint: { 'text-color': 'hsl(0, 82%, 60%)', 'text-halo-blur': 0.5, 'text-halo-color': 'hsl(0, 82%, 100%)', 'text-halo-width': 1 }, + metadata: {}, + filter: ['all', ['==', '$type', 'Point'], ['!=', 'class', 'swimming_pool'], ['>=', 'rank', 7], ['<', 'rank', 20], ['any', ['!has', 'level'], ['==', 'level', 0]]] + }, { + id: 'poi_z14', + type: 'symbol', + source: 'openmaptiles', + 'source-layer': 'poi', + minzoom: 14.2, + layout: { 'icon-size': 0.9, 'text-font': ['Roboto Condensed Italic', 'Noto Sans Italic'], 'text-size': 12, 'icon-image': '{class}_11', 'text-field': ['concat', ['get', 'name:latin'], '\n', ['get', 'name:nonlatin']], visibility: 'visible', 'text-anchor': 'top', 'text-offset': [0, 0.6], 'text-padding': 2, 'text-max-width': 9 }, + paint: { 'text-color': 'hsl(0, 82%, 60%)', 'text-halo-blur': 0.5, 'text-halo-color': 'hsl(0, 82%, 100%)', 'text-halo-width': 1 }, + metadata: {}, + filter: ['all', ['==', '$type', 'Point'], ['!=', 'class', 'swimming_pool'], ['any', ['<', 'rank', 7]], ['any', ['!has', 'level'], ['==', 'level', 0]]] + }, { + id: 'poi_transit', + type: 'symbol', + source: 'openmaptiles', + 'source-layer': 'poi', + minzoom: 15, + layout: { 'icon-size': 0.9, 'text-font': ['Roboto Condensed Italic', 'Noto Sans Italic'], 'text-size': 12, 'icon-image': '{class}_11', 'text-field': ['concat', ['get', 'name:latin'], '\n', ['get', 'name:nonlatin']], visibility: 'visible', 'text-anchor': 'left', 'text-offset': [0.9, 0], 'text-padding': 2, 'text-max-width': 9 }, + paint: { 'text-color': 'hsl(0, 82%, 60%)', 'text-halo-blur': 0.5, 'text-halo-color': 'hsl(0, 82%, 100%)', 'text-halo-width': 1 }, + metadata: {}, + filter: ['all', ['in', 'class', 'bus', 'railway', 'airport'], ['==', 'subclass', 'station']] + }, { + id: 'road_oneway', + type: 'symbol', + source: 'openmaptiles', + 'source-layer': 'transportation', + minzoom: 15, + layout: { 'icon-size': { stops: [[15, 0.5], [19, 1]] }, 'icon-image': 'oneway', visibility: 'visible', 'icon-rotate': 90, 'icon-padding': 2, 'symbol-spacing': 75, 'symbol-placement': 'line', 'icon-rotation-alignment': 'map' }, + paint: { 'icon-opacity': 0.5 }, + filter: ['all', ['==', 'oneway', 1], ['in', 'class', 'motorway', 'trunk', 'primary', 'secondary', 'tertiary', 'minor', 'service']] + }, { + id: 'road_oneway_opposite', + type: 'symbol', + source: 'openmaptiles', + 'source-layer': 'transportation', + minzoom: 15, + layout: { 'icon-size': { stops: [[15, 0.5], [19, 1]] }, 'icon-image': 'oneway', 'icon-rotate': -90, 'icon-padding': 2, 'symbol-spacing': 75, 'symbol-placement': 'line', 'icon-rotation-alignment': 'map', visibility: 'visible' }, + paint: { 'icon-opacity': 0.5 }, + filter: ['all', ['==', 'oneway', -1], ['in', 'class', 'motorway', 'trunk', 'primary', 'secondary', 'tertiary', 'minor', 'service']] + }, { + id: 'road_gondola_label', + type: 'symbol', + source: 'openmaptiles', + 'source-layer': 'transportation_name', + minzoom: 13, + layout: { 'text-font': ['Roboto Italic', 'Noto Sans Italic'], 'text-size': { base: 1, stops: [[13, 11], [15, 12]] }, 'text-field': ['concat', ['get', 'name:latin'], ' ', ['get', 'name:nonlatin']], 'text-anchor': 'center', 'text-offset': [0.8, 0.8], 'symbol-placement': 'line', visibility: 'visible' }, + paint: { 'text-color': 'hsl(57, 82%, 61%)', 'text-halo-blur': 0.5, 'text-halo-color': 'hsl(30, 80%, 100%)', 'text-halo-width': 1 }, + metadata: {}, + filter: ['all', ['in', 'subclass', 'gondola', 'cable_car']] + }, { + id: 'road_ferry_label', + type: 'symbol', + source: 'openmaptiles', + 'source-layer': 'transportation_name', + minzoom: 12, + layout: { 'text-font': ['Roboto Italic', 'Noto Sans Italic'], 'text-size': { base: 1, stops: [[13, 11], [15, 12]] }, 'text-field': ['concat', ['get', 'name:latin'], ' ', ['get', 'name:nonlatin']], 'text-anchor': 'center', 'text-offset': [0.8, 0.8], 'symbol-placement': 'line', visibility: 'visible' }, + paint: { 'text-color': 'hsl(231, 91%, 62%)', 'text-halo-blur': 0.5, 'text-halo-width': 1 }, + filter: ['all', ['==', 'subclass', 'ferry']] + }, { + id: 'road_label', + type: 'symbol', + source: 'openmaptiles', + 'source-layer': 'transportation_name', + layout: { 'text-font': ['Roboto Regular', 'Noto Sans Regular'], 'text-size': { base: 1, stops: [[13, 11], [14, 13]] }, 'text-field': ['concat', ['get', 'name:latin'], ' ', ['get', 'name:nonlatin']], 'text-anchor': 'center', 'text-offset': [0, 0.15], 'symbol-placement': 'line', visibility: 'visible' }, + paint: { 'text-color': 'hsl(60, 83%, 60%)', 'text-halo-blur': 0.5, 'text-halo-width': 1 }, + metadata: {}, + filter: ['all', ['!in', 'subclass', 'ferry', 'gondola', 'cable_car']] + }, { + id: 'highway-junction', + type: 'symbol', + source: 'openmaptiles', + 'source-layer': 'transportation_name', + minzoom: 15.5, + layout: { 'icon-size': 1, 'text-font': ['Noto Sans Regular'], 'text-size': 10, 'icon-image': 'circle_8', 'text-field': 'Exit {ref}', visibility: 'visible', 'text-anchor': 'bottom-left', 'text-offset': [0.55, -0.4], 'text-justify': 'center', 'icon-text-fit': 'none', 'symbol-spacing': 200, 'symbol-z-order': 'auto', 'symbol-placement': 'point', 'symbol-avoid-edges': true, 'text-pitch-alignment': 'auto', 'icon-rotation-alignment': 'viewport', 'text-rotation-alignment': 'viewport' }, + paint: { 'text-color': 'hsl(30, 80%, 54%)', 'icon-opacity': 1 }, + filter: ['all', ['==', '$type', 'Point'], ['==', 'subclass', 'junction'], ['>', 'ref_length', 0]] + }, { + id: 'highway-shield', + type: 'symbol', + source: 'openmaptiles', + 'source-layer': 'transportation_name', + minzoom: 8, + layout: { 'icon-size': 1, 'text-font': ['Noto Sans Regular'], 'text-size': 10, 'icon-image': 'road_{ref_length}', 'text-field': '{ref}', 'symbol-spacing': 200, 'symbol-placement': { base: 1, stops: [[10, 'point'], [11, 'line']] }, 'symbol-avoid-edges': true, 'icon-rotation-alignment': 'viewport', 'text-rotation-alignment': 'viewport', visibility: 'visible' }, + paint: { 'text-color': 'hsl(0, 82%, 43%)' }, + filter: ['all', ['<=', 'ref_length', 6], ['==', '$type', 'LineString'], ['!in', 'network', 'us-interstate', 'us-highway', 'us-state']] + }, { + id: 'highway-shield-us-interstate', + type: 'symbol', + source: 'openmaptiles', + 'source-layer': 'transportation_name', + minzoom: 7, + layout: { 'icon-size': 1, 'text-font': ['Noto Sans Regular'], 'text-size': 9, 'icon-image': '{network}_{ref_length}', 'text-field': '{ref}', 'symbol-spacing': 200, 'symbol-placement': { base: 1, stops: [[7, 'point'], [7, 'line'], [8, 'line']] }, 'symbol-avoid-edges': true, 'icon-rotation-alignment': 'viewport', 'text-rotation-alignment': 'viewport', visibility: 'visible' }, + paint: { 'text-color': 'hsl(0, 82%, 100%)' }, + filter: ['all', ['<=', 'ref_length', 6], ['==', '$type', 'LineString'], ['in', 'network', 'us-interstate']] + }, { + id: 'highway-shield-us-other', + type: 'symbol', + source: 'openmaptiles', + 'source-layer': 'transportation_name', + minzoom: 9, + layout: { 'icon-size': 1, 'text-font': ['Noto Sans Regular'], 'text-size': 9, 'icon-image': '{network}_{ref_length}', 'text-field': '{ref}', 'symbol-spacing': 200, 'symbol-placement': { base: 1, stops: [[10, 'point'], [11, 'line']] }, 'symbol-avoid-edges': true, 'icon-rotation-alignment': 'viewport', 'text-rotation-alignment': 'viewport', visibility: 'visible' }, + paint: { 'text-color': 'hsl(0, 82%, 43%)' }, + filter: ['all', ['<=', 'ref_length', 6], ['==', '$type', 'LineString'], ['in', 'network', 'us-highway', 'us-state']] + }, { + id: 'airport_label', + type: 'symbol', + source: 'openmaptiles', + 'source-layer': 'aerodrome_label', + minzoom: 8.5, + layout: { 'icon-size': 1, 'text-font': ['Noto Sans Regular'], 'text-size': { stops: [[8, 10], [14, 13]] }, 'icon-image': 'airport_11', 'text-field': ['concat', ['get', 'name:latin'], '\n', ['get', 'name:nonlatin']], visibility: 'visible', 'text-anchor': 'top', 'text-offset': [0, 0.6], 'text-padding': 2, 'text-optional': true, 'text-max-width': 9 }, + paint: { 'text-color': 'hsl(30, 80%, 60%)', 'text-halo-blur': 0.5, 'text-halo-color': 'hsl(30, 80%, 100%)', 'text-halo-width': 1 }, + filter: ['all', ['has', 'iata']] + }, { + id: 'airport_gate', + type: 'symbol', + source: 'openmaptiles', + 'source-layer': 'aeroway', + minzoom: 16.5, + layout: { 'text-font': ['Roboto Medium', 'Noto Sans Regular'], 'text-size': { stops: [[17, 9], [19, 15]] }, 'text-field': '{ref}', visibility: 'visible' }, + paint: { 'text-color': 'hsl(30, 80%, 69%)', 'text-halo-color': 'hsl(30, 80%, 100%)', 'text-halo-width': 1.5 }, + filter: ['all', ['==', 'class', 'gate']] + }, { + id: 'place_park', + type: 'symbol', + source: 'openmaptiles', + 'source-layer': 'park', + minzoom: 12, + layout: { 'text-font': ['Roboto Condensed Italic', 'Noto Sans Italic'], 'text-size': { base: 1.2, stops: [[12, 10], [15, 14]] }, 'text-field': ['concat', ['get', 'name:latin'], '\n', ['get', 'name:nonlatin']], visibility: 'visible', 'symbol-spacing': 1250, 'text-max-width': 9, 'text-transform': 'none', 'symbol-avoid-edges': false, 'text-letter-spacing': 0.1 }, + paint: { 'text-color': 'hsl(124, 88%, 60%)', 'text-halo-blur': 0.5, 'text-halo-color': 'hsla(30, 80%, 100%, 0.8)', 'text-halo-width': 1.2 }, + metadata: {}, + filter: ['all', ['==', 'rank', 1]] + }, { + id: 'place_other', + type: 'symbol', + source: 'openmaptiles', + 'source-layer': 'place', + minzoom: 8, + layout: { 'text-font': ['Roboto Condensed Italic', 'Noto Sans Italic'], 'text-size': { base: 1.2, stops: [[12, 10], [15, 14]] }, 'text-field': ['concat', ['get', 'name:latin'], '\n', ['get', 'name:nonlatin']], visibility: 'visible', 'text-max-width': 9, 'text-transform': 'uppercase', 'text-letter-spacing': 0.1 }, + paint: { 'text-color': 'hsl(30, 81%, 50%)', 'text-halo-color': 'hsla(30, 80%, 100%, 0.8)', 'text-halo-width': 1.2 }, + metadata: {}, + filter: ['all', ['in', 'class', 'hamlet', 'island', 'islet', 'neighbourhood', 'suburb']] + }, { + id: 'place_village', + type: 'symbol', + source: 'openmaptiles', + 'source-layer': 'place', + minzoom: 8, + layout: { 'text-font': ['Roboto Regular', 'Noto Sans Regular'], 'text-size': { base: 1.2, stops: [[10, 12], [15, 22]] }, 'text-field': ['concat', ['get', 'name:latin'], '\n', ['get', 'name:nonlatin']], 'text-max-width': 8, visibility: 'visible' }, + paint: { 'text-color': 'hsl(30, 80%, 47%)', 'text-halo-color': 'hsla(30, 80%, 100%, 0.8)', 'text-halo-width': 1.2 }, + metadata: {}, + filter: ['all', ['==', 'class', 'village']] + }, { + id: 'place_town', + type: 'symbol', + source: 'openmaptiles', + 'source-layer': 'place', + minzoom: 6, + layout: { 'text-font': ['Roboto Regular', 'Noto Sans Regular'], 'text-size': { base: 1.2, stops: [[7, 12], [11, 16]] }, 'icon-image': { base: 1, stops: [[0, 'circle-stroked_16'], [10, '']] }, 'text-field': ['concat', ['get', 'name:latin'], '\n', ['get', 'name:nonlatin']], 'text-anchor': 'bottom', 'text-offset': [0, 0], 'text-max-width': 8, visibility: 'visible' }, + paint: { 'text-color': 'hsl(30, 80%, 47%)', 'text-halo-color': 'hsla(30, 80%, 100%, 0.8)', 'text-halo-width': 1.2 }, + metadata: {}, + filter: ['all', ['==', 'class', 'town']] + }, { + id: 'place_region', + type: 'symbol', + source: 'openmaptiles', + 'source-layer': 'place', + minzoom: 5, + maxzoom: 7, + layout: { 'text-font': ['Roboto Medium', 'Noto Sans Regular'], 'text-size': { stops: [[3, 9], [5, 10], [6, 11]] }, 'text-field': ['concat', ['get', 'name:latin'], '\n', ['get', 'name:nonlatin']], visibility: 'visible', 'text-padding': 2, 'text-transform': 'uppercase', 'text-letter-spacing': 0.1 }, + paint: { 'text-color': 'hsl(78, 81%, 63%)', 'text-halo-color': 'hsla(30, 80%, 100%, 0.7)', 'text-halo-width': 0.8 }, + metadata: {}, + filter: ['all', ['==', 'class', 'state'], ['in', 'rank', 3, 4, 5]] + }, { + id: 'place_state', + type: 'symbol', + source: 'openmaptiles', + 'source-layer': 'place', + minzoom: 3, + maxzoom: 6, + layout: { 'text-font': ['Roboto Medium', 'Noto Sans Regular'], 'text-size': { stops: [[3, 9], [5, 11], [6, 12]] }, 'text-field': ['concat', ['get', 'name:latin'], '\n', ['get', 'name:nonlatin']], visibility: 'visible', 'text-padding': 2, 'text-transform': 'uppercase', 'text-letter-spacing': 0.1 }, + paint: { 'text-color': 'hsl(78, 81%, 63%)', 'text-halo-color': 'hsla(30, 80%, 100%, 0.7)', 'text-halo-width': 0.8 }, + metadata: {}, + filter: ['all', ['==', 'class', 'state'], ['in', 'rank', 1, 2]] + }, { + id: 'place_city', + type: 'symbol', + source: 'openmaptiles', + 'source-layer': 'place', + minzoom: 5, + layout: { 'text-font': ['Roboto Medium', 'Noto Sans Regular'], 'text-size': { base: 1.2, stops: [[7, 14], [11, 24]] }, 'icon-image': { base: 1, stops: [[0, 'circle-stroked_16'], [10, '']] }, 'text-field': ['concat', ['get', 'name:latin'], '\n', ['get', 'name:nonlatin']], 'text-anchor': 'bottom', 'text-offset': [0, 0], 'icon-optional': false, 'text-max-width': 8, 'icon-allow-overlap': true, visibility: 'visible' }, + paint: { 'text-color': 'hsl(30, 80%, 47%)', 'text-halo-color': 'hsla(30, 80%, 100%, 0.8)', 'text-halo-width': 1.2 }, + metadata: {}, + filter: ['all', ['==', 'class', 'city']] + }, { + id: 'country_other', + type: 'symbol', + source: 'openmaptiles', + 'source-layer': 'place', + layout: { 'text-font': ['Roboto Condensed Italic', 'Noto Sans Italic'], 'text-size': { stops: [[3, 9], [7, 15]] }, 'text-field': ['case', ['has', 'name:en'], ['concat', ['get', 'name:en'], ['case', ['has', 'name:nonlatin'], ['concat', '\n', ['get', 'name:nonlatin']], '']], ['get', 'name']], 'text-max-width': 6.25, 'text-transform': 'none', visibility: 'visible' }, + paint: { 'text-color': 'hsl(270, 83%, 49%)', 'text-halo-blur': 1, 'text-halo-color': 'hsla(30, 80%, 100%, 0.8)', 'text-halo-width': 0.8 }, + metadata: {}, + filter: ['all', ['==', 'class', 'country'], ['!has', 'iso_a2']] + }, { + id: 'country_3', + type: 'symbol', + source: 'openmaptiles', + 'source-layer': 'place', + layout: { 'text-font': ['Roboto Condensed Italic', 'Noto Sans Italic'], 'text-size': { stops: [[3, 11], [7, 17]] }, 'text-field': ['case', ['has', 'name:en'], ['concat', ['get', 'name:en'], ['case', ['has', 'name:nonlatin'], ['concat', '\n', ['get', 'name:nonlatin']], '']], ['get', 'name']], 'text-max-width': 6.25, 'text-transform': 'none', visibility: 'visible' }, + paint: { 'text-color': 'hsl(270, 83%, 49%)', 'text-halo-blur': 1, 'text-halo-color': 'hsla(30, 80%, 100%, 0.8)', 'text-halo-width': 0.8 }, + metadata: {}, + filter: ['all', ['>=', 'rank', 3], ['==', 'class', 'country'], ['has', 'iso_a2']] + }, { + id: 'country_2', + type: 'symbol', + source: 'openmaptiles', + 'source-layer': 'place', + layout: { 'text-font': ['Roboto Condensed Italic', 'Noto Sans Italic'], 'text-size': { stops: [[2, 11], [5, 17]] }, 'text-field': ['case', ['has', 'name:en'], ['concat', ['get', 'name:en'], ['case', ['has', 'name:nonlatin'], ['concat', '\n', ['get', 'name:nonlatin']], '']], ['get', 'name']], 'text-max-width': 6.25, 'text-transform': 'none', visibility: 'visible' }, + paint: { 'text-color': 'hsl(270, 83%, 49%)', 'text-halo-blur': 1, 'text-halo-color': 'hsla(30, 80%, 100%, 0.8)', 'text-halo-width': 0.8 }, + metadata: {}, + filter: ['all', ['==', 'rank', 2], ['==', 'class', 'country'], ['has', 'iso_a2']] + }, { + id: 'country_1', + type: 'symbol', + source: 'openmaptiles', + 'source-layer': 'place', + layout: { 'text-font': ['Roboto Condensed Italic', 'Noto Sans Italic'], 'text-size': { stops: [[1, 11], [4, 17], [6, 19]] }, 'text-field': ['case', ['has', 'name:en'], ['concat', ['get', 'name:en'], ['case', ['has', 'name:nonlatin'], ['concat', '\n', ['get', 'name:nonlatin']], '']], ['get', 'name']], 'text-max-width': 6.25, 'text-transform': 'none', visibility: 'visible' }, + paint: { 'text-color': 'hsl(270, 83%, 49%)', 'text-halo-blur': 1, 'text-halo-color': 'hsla(30, 80%, 100%, 0.8)', 'text-halo-width': 0.8 }, + metadata: {}, + filter: ['all', ['==', 'rank', 1], ['==', 'class', 'country'], ['has', 'iso_a2']] + }, { + id: 'continent', + type: 'symbol', + source: 'openmaptiles', + 'source-layer': 'place', + maxzoom: 1, + layout: { 'text-font': ['Roboto Condensed Italic', 'Noto Sans Italic'], 'text-size': 13, 'text-field': ['case', ['has', 'name:en'], ['concat', ['get', 'name:en'], ['case', ['has', 'name:nonlatin'], ['concat', '\n', ['get', 'name:nonlatin']], '']], ['get', 'name']], 'text-justify': 'center', 'text-transform': 'uppercase', visibility: 'visible' }, + paint: { 'text-color': 'hsl(30, 87%, 54%)', 'text-halo-color': 'hsla(30, 80%, 100%, 0.7)', 'text-halo-width': 1 }, + metadata: {}, + filter: ['all', ['==', 'class', 'continent']] + }, { + id: 'housenumber', + type: 'symbol', + source: 'openmaptiles', + 'source-layer': 'housenumber', + minzoom: 17.5, + layout: { 'text-font': ['Roboto Medium', 'Noto Sans Regular'], 'text-size': 10, 'text-field': '{housenumber}', visibility: 'visible' }, + paint: { 'text-color': 'hsla(60, 83%, 60%, 0.69)' } + }], metadata: { 'maptiler:copyright': 'This style was generated on MapTiler Cloud. Usage outside of MapTiler Cloud or MapTiler Server requires valid MapTiler Data package: https://www.maptiler.com/data/ -- please contact us.' }, - glyphs: 'https://api.maptiler.com/fonts/{fontstack}/{range}.pbf?key=rB2y2a2rG8i9SEjOXQXl', - sprite: 'https://api.maptiler.com/maps/13a5a9a7-498d-45dd-9e80-5cbefb010836/sprite', + glyphs: 'static/Titles/fonts/{fontstack}/{range}.pbf?key=rB2y2a2rG8i9SEjOXQXl', + sprite: 'https://www.maptiler.com/static/Titles/sprite', bearing: 0, pitch: 0, center: [130, -20], diff --git a/nezha-fronted/src/components/chart/chart/tools.js b/nezha-fronted/src/components/chart/chart/tools.js index cd425d4a1..cbb1fbfa7 100644 --- a/nezha-fronted/src/components/chart/chart/tools.js +++ b/nezha-fronted/src/components/chart/chart/tools.js @@ -114,6 +114,9 @@ export function isTable (type) { export function isGauge (type) { return type === chartType.gauge } +export function isSankey (type) { + return type === chartType.sankey +} export function isClock (type) { return type === chartType.clock } diff --git a/nezha-fronted/src/components/common/ChartDiagram/diagram.vue b/nezha-fronted/src/components/common/ChartDiagram/diagram.vue index e0d23d004..4c2eb1d64 100644 --- a/nezha-fronted/src/components/common/ChartDiagram/diagram.vue +++ b/nezha-fronted/src/components/common/ChartDiagram/diagram.vue @@ -1165,7 +1165,6 @@ export default { /* topology 方法 */ /* topology 方法 */ onDrag (event, node) { - console.log(event, node) this.dragFlag = false const timer = setTimeout(() => { this.dragFlag = true @@ -1174,7 +1173,6 @@ export default { event.dataTransfer.setData('Text', JSON.stringify({ ...node.data, data: { imageId: node.data.imageId } })) }, dragFlagChange (node) { - console.log(node) getTopology(this.topologyIndex).addPen( { ...node.data, diff --git a/nezha-fronted/src/components/common/copy.vue b/nezha-fronted/src/components/common/copy.vue new file mode 100644 index 000000000..abc4de9ad --- /dev/null +++ b/nezha-fronted/src/components/common/copy.vue @@ -0,0 +1,32 @@ + + + + + + + + + + + + diff --git a/nezha-fronted/src/components/common/js/constants.js b/nezha-fronted/src/components/common/js/constants.js index a522aafd6..5077b18ab 100644 --- a/nezha-fronted/src/components/common/js/constants.js +++ b/nezha-fronted/src/components/common/js/constants.js @@ -408,6 +408,7 @@ export const chartType = { table: 'table', stat: 'stat', gauge: 'gauge', + sankey: 'sankey', pie: 'pie', bubble: 'bubble', treemap: 'treemap', diff --git a/nezha-fronted/src/components/common/latlngPicker.vue b/nezha-fronted/src/components/common/latlngPicker.vue index 33c6b269c..0f6c8d94f 100644 --- a/nezha-fronted/src/components/common/latlngPicker.vue +++ b/nezha-fronted/src/components/common/latlngPicker.vue @@ -14,7 +14,7 @@ - + @@ -22,9 +22,8 @@