From 91447c4e3dc63296b1b6f0880c1017dfb1ff9a4e Mon Sep 17 00:00:00 2001 From: Chris Loer Date: Thu, 29 Jun 2017 14:40:30 -0700 Subject: [PATCH 1/5] Add 'localIdeographFontFamily' option to side-step expensive glyph loading for CJK Ideographs and precomposed Hangul Syllables by generating glyphs locally using TinySDF. --- package.json | 3 +- src/style/style.js | 2 +- src/symbol/glyph_source.js | 79 +++++++++++++++++++++++++++++++------- src/ui/map.js | 17 +++++--- yarn.lock | 4 ++ 5 files changed, 84 insertions(+), 21 deletions(-) diff --git a/package.json b/package.json index fa0db4d17a5..681c1b16f7c 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,8 @@ "unflowify": "^1.0.0", "vector-tile": "^1.3.0", "vt-pbf": "^2.0.2", - "webworkify": "^1.4.0" + "webworkify": "^1.4.0", + "@mapbox/tiny-sdf": "^1.1.0" }, "devDependencies": { "@mapbox/mapbox-gl-rtl-text": "^0.1.1", diff --git a/src/style/style.js b/src/style/style.js index 1d481a98663..4c500e455f0 100644 --- a/src/style/style.js +++ b/src/style/style.js @@ -106,7 +106,7 @@ class Style extends Evented { this.sprite = new ImageSprite(stylesheet.sprite, this); } - this.glyphSource = new GlyphSource(stylesheet.glyphs); + this.glyphSource = new GlyphSource(stylesheet.glyphs, options.localIdeographFontFamily); this._resolve(); this.fire('data', {dataType: 'style'}); this.fire('style.load'); diff --git a/src/symbol/glyph_source.js b/src/symbol/glyph_source.js index 4a33ab24a89..780aea1da7c 100644 --- a/src/symbol/glyph_source.js +++ b/src/symbol/glyph_source.js @@ -5,6 +5,8 @@ const verticalizePunctuation = require('../util/verticalize_punctuation'); const Glyphs = require('../util/glyphs'); const GlyphAtlas = require('../symbol/glyph_atlas'); const Protobuf = require('pbf'); +const TinySDF = require('@mapbox/tiny-sdf'); +const isChar = require('../util/is_char_in_unicode_block'); // A simplified representation of the glyph containing only the properties needed for shaping. class SimpleGlyph { @@ -28,16 +30,18 @@ class GlyphSource { /** * @param {string} url glyph template url */ - constructor(url) { + constructor(url, localIdeographFontFamily) { this.url = url && normalizeURL(url); this.atlases = {}; this.stacks = {}; this.loading = {}; + this.localIdeographFontFamily = localIdeographFontFamily; + this.tinySDFs = {}; } getSimpleGlyphs(fontstack, glyphIDs, uid, callback) { if (this.stacks[fontstack] === undefined) { - this.stacks[fontstack] = {}; + this.stacks[fontstack] = { ranges: {}, cjkGlyphs: {} }; } if (this.atlases[fontstack] === undefined) { this.atlases[fontstack] = new GlyphAtlas(); @@ -50,23 +54,37 @@ class GlyphSource { // the number of pixels the sdf bitmaps are padded by const buffer = 3; - const missing = {}; + const missingRanges = {}; let remaining = 0; const getGlyph = (glyphID) => { const range = Math.floor(glyphID / 256); + if (this.localIdeographFontFamily && + // eslint-disable-next-line new-cap + (isChar['CJK Unified Ideographs'](glyphID) || + // eslint-disable-next-line new-cap + isChar['Hangul Syllables'](glyphID))) { + if (!stack.cjkGlyphs[glyphID]) { + stack.cjkGlyphs[glyphID] = this.loadCJKGlyph(fontstack, glyphID); + } - if (stack[range]) { - const glyph = stack[range].glyphs[glyphID]; + const glyph = stack.cjkGlyphs[glyphID]; const rect = atlas.addGlyph(uid, fontstack, glyph, buffer); if (glyph) glyphs[glyphID] = new SimpleGlyph(glyph, rect, buffer); } else { - if (missing[range] === undefined) { - missing[range] = []; - remaining++; + if (stack.ranges[range]) { + const glyph = stack.ranges[range].glyphs[glyphID]; + const rect = atlas.addGlyph(uid, fontstack, glyph, buffer); + if (glyph) glyphs[glyphID] = new SimpleGlyph(glyph, rect, buffer); + } else { + if (missingRanges[range] === undefined) { + missingRanges[range] = []; + remaining++; + } + missingRanges[range].push(glyphID); } - missing[range].push(glyphID); } + /* eslint-enable new-cap */ }; for (let i = 0; i < glyphIDs.length; i++) { @@ -82,9 +100,9 @@ class GlyphSource { const onRangeLoaded = (err, range, data) => { if (!err) { - const stack = this.stacks[fontstack][range] = data.stacks[0]; - for (let i = 0; i < missing[range].length; i++) { - const glyphID = missing[range][i]; + const stack = this.stacks[fontstack].ranges[range] = data.stacks[0]; + for (let i = 0; i < missingRanges[range].length; i++) { + const glyphID = missingRanges[range][i]; const glyph = stack.glyphs[glyphID]; const rect = atlas.addGlyph(uid, fontstack, glyph, buffer); if (glyph) glyphs[glyphID] = new SimpleGlyph(glyph, rect, buffer); @@ -94,11 +112,44 @@ class GlyphSource { if (!remaining) callback(undefined, glyphs, fontstack); }; - for (const r in missing) { + for (const r in missingRanges) { this.loadRange(fontstack, r, onRangeLoaded); } } + createTinySDF(fontFamily, fontWeight) { + return new TinySDF(24, 3, 8, .25, fontFamily, fontWeight); + } + + loadCJKGlyph(fontstack, glyphID) { + let tinySDF = this.tinySDFs[fontstack]; + if (!tinySDF) { + let fontWeight = '400'; + if (/bold/i.test(fontstack)) { + fontWeight = '900'; + } else if (/medium/i.test(fontstack)) { + fontWeight = '500'; + } else if (/light/i.test(fontstack)) { + fontWeight = '200'; + } + tinySDF = this.tinySDFs[fontstack] = this.createTinySDF(this.localIdeographFontFamily, fontWeight); + } + + return { + id: glyphID, + bitmap: tinySDF.draw(String.fromCharCode(glyphID)), + width: 24, + height: 24, + left: 0, + top: -8, + advance: 24 + }; + } + + loadPBF(url, callback) { + ajax.getArrayBuffer(url, callback); + } + loadRange(fontstack, range, callback) { if (range * 256 > 65535) return callback('glyphs > 65535 not supported'); @@ -115,7 +166,7 @@ class GlyphSource { const rangeName = `${range * 256}-${range * 256 + 255}`; const url = glyphUrl(fontstack, rangeName, this.url); - ajax.getArrayBuffer(url, (err, response) => { + this.loadPBF(url, (err, response) => { const glyphs = !err && new Glyphs(new Protobuf(response.data)); for (let i = 0; i < loading[range].length; i++) { loading[range][i](err, range, glyphs); diff --git a/src/ui/map.js b/src/ui/map.js index db7912dbceb..bc22b9da07b 100755 --- a/src/ui/map.js +++ b/src/ui/map.js @@ -191,7 +191,11 @@ const defaultOptions = { * @param {number} [options.bearing=0] The initial bearing (rotation) of the map, measured in degrees counter-clockwise from north. If `bearing` is not specified in the constructor options, Mapbox GL JS will look for it in the map's style object. If it is not specified in the style, either, it will default to `0`. * @param {number} [options.pitch=0] The initial pitch (tilt) of the map, measured in degrees away from the plane of the screen (0-60). If `pitch` is not specified in the constructor options, Mapbox GL JS will look for it in the map's style object. If it is not specified in the style, either, it will default to `0`. * @param {boolean} [options.renderWorldCopies=true] If `true`, multiple copies of the world will be rendered, when zoomed out. - * @param {number} [options.maxTileCacheSize=null] The maxiumum number of tiles stored in the tile cache for a given source. If omitted, the cache will be dynamically sized based on the current viewport. + * @param {number} [options.maxTileCacheSize=null] The maxiumum number of tiles stored in the tile cache for a given source. If omitted, the cache will be dynamically sized based on the current viewport. + * @param {string} [options.localIdeographFontFamily=null] If specified, defines a css font-family + * for locally overriding generation of glyphs in the 'CJK Unified Ideographs' and 'Hangul Syllables' ranges. + * In these ranges, font settings from the map's style will be mostly ignored, except for font-weight keywords (light/regular/medium/bold). + * The purpose of this option is to avoid bandwidth-intensive glyph server requests. * @example * var map = new mapboxgl.Map({ * container: 'map', @@ -293,7 +297,7 @@ class Map extends Camera { this.resize(); if (options.classes) this.setClasses(options.classes); - if (options.style) this.setStyle(options.style); + if (options.style) this.setStyle(options.style, { localIdeographFontFamily: options.localIdeographFontFamily }); if (options.attributionControl) this.addControl(new AttributionControl()); this.addControl(new LogoControl(), options.logoPosition); @@ -928,11 +932,14 @@ class Map extends Camera { * @param {Object} [options] * @param {boolean} [options.diff=true] If false, force a 'full' update, removing the current style * and adding building the given one instead of attempting a diff-based update. + * @param {string} [options.localIdeographFontFamily=null] If non-null, defines a css font-family + * for locally overriding generation of glyphs in the 'CJK Unified Ideographs' and 'Hangul Syllables' + * ranges. Forces a full update. * @returns {Map} `this` * @see [Change a map's style](https://www.mapbox.com/mapbox-gl-js/example/setstyle/) */ - setStyle(style: any, options?: {diff: boolean}) { - const shouldTryDiff = (!options || options.diff !== false) && this.style && style && + setStyle(style: any, options?: {diff?: boolean, localIdeographFontFamily?: string}) { + const shouldTryDiff = (!options || (options.diff !== false && !options.localIdeographFontFamily)) && this.style && style && !(style instanceof Style) && typeof style !== 'string'; if (shouldTryDiff) { try { @@ -959,7 +966,7 @@ class Map extends Camera { } else if (style instanceof Style) { this.style = style; } else { - this.style = new Style(style, this); + this.style = new Style(style, this, options); } this.style.setEventedParent(this, {style: this.style}); diff --git a/yarn.lock b/yarn.lock index 31078b36e3b..3adf2c05bfb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -36,6 +36,10 @@ version "3.0.0" resolved "https://registry.yarnpkg.com/@mapbox/shelf-pack/-/shelf-pack-3.0.0.tgz#44e284c8336eeda1e9dbbb1d61954c70e26e5766" +"@mapbox/tiny-sdf@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@mapbox/tiny-sdf/-/tiny-sdf-1.1.0.tgz#b0b8f5c22005e6ddb838f421ffd257c1f74f9a20" + "@mapbox/unitbezier@^0.0.0": version "0.0.0" resolved "https://registry.yarnpkg.com/@mapbox/unitbezier/-/unitbezier-0.0.0.tgz#15651bd553a67b8581fb398810c98ad86a34524e" From e923805364fc47d628dce762df9e145a212ebec4 Mon Sep 17 00:00:00 2001 From: Chris Loer Date: Thu, 29 Jun 2017 14:40:30 -0700 Subject: [PATCH 2/5] Basic GlyphSource unit test. Distinguishes glyphs generated locally from glyphs requested from server. --- test/fixtures/0-255.pbf | Bin 0 -> 74745 bytes test/unit/symbol/glyph_source.test.js | 59 ++++++++++++++++++++++++++ 2 files changed, 59 insertions(+) create mode 100644 test/fixtures/0-255.pbf create mode 100644 test/unit/symbol/glyph_source.test.js diff --git a/test/fixtures/0-255.pbf b/test/fixtures/0-255.pbf new file mode 100644 index 0000000000000000000000000000000000000000..5a0f7c2cc395c78411a4d5c94c4bd2cbfb1c14b3 GIT binary patch literal 74745 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�CEhj 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 T4}h=f$B^+ehKy~ja=PI^>2^{L literal 0 HcmV?d00001 diff --git a/test/unit/symbol/glyph_source.test.js b/test/unit/symbol/glyph_source.test.js new file mode 100644 index 00000000000..bed1485dfc0 --- /dev/null +++ b/test/unit/symbol/glyph_source.test.js @@ -0,0 +1,59 @@ +'use strict'; + +const test = require('mapbox-gl-js-test').test; +const GlyphSource = require('../../../src/symbol/glyph_source'); +const fs = require('fs'); + +const mockTinySDF = { + // Return empty 30x30 bitmap (24 fontsize + 3 * 2 buffer) + draw: function () { return new Uint8ClampedArray(900); } +}; + +function createSource(t, localIdeographFontFamily) { + const aPBF = fs.readFileSync('./test/fixtures/0-255.pbf'); + const source = new GlyphSource("https://localhost/fonts/v1{fontstack}/{range}.pbf", localIdeographFontFamily); + t.stub(source, 'createTinySDF').returns(mockTinySDF); + // It would be better to mock with FakeXMLHttpRequest, but the binary encoding + // doesn't survive the mocking + source.loadPBF = function(url, callback) { + callback(null, { data: aPBF }); + }; + + return source; +} + + +test('GlyphSource', (t) => { + t.test('requests 0-255 PBF', (t) => { + const source = createSource(t); + source.getSimpleGlyphs("Arial Unicode MS", [55], 0, (err, glyphs, fontName) => { + t.notOk(err); + t.equal(fontName, "Arial Unicode MS"); + t.equal(glyphs['55'].advance, 12); + t.end(); + }); + }); + + t.test('requests remote CJK PBF', (t) => { + const source = createSource(t); + source.getSimpleGlyphs("Arial Unicode MS", [0x5e73], 0, (err, glyphs, fontName) => { + t.notOk(err); + t.equal(fontName, "Arial Unicode MS"); + t.notOk(Object.keys(glyphs).length); // The fixture returns a PBF without the glyph we requested + t.end(); + }); + + }); + + t.test('locally generates CJK PBF', (t) => { + const source = createSource(t, 'sans-serif'); + source.getSimpleGlyphs("Arial Unicode MS", [0x5e73], 0, (err, glyphs, fontName) => { + t.notOk(err); + t.equal(fontName, "Arial Unicode MS"); + t.equal(glyphs['24179'].advance, 24); + t.end(); + }); + }); + + t.end(); +}); From 9e76666c388a1ebbf77a57815b45d01af789a4e8 Mon Sep 17 00:00:00 2001 From: Chris Loer Date: Thu, 29 Jun 2017 14:40:30 -0700 Subject: [PATCH 3/5] Chinese-language debugging view for TinySDF glyph generation. --- debug/streets-zh-global-v1.json | 3847 +++++++++++++++++++++++++++++++ debug/tinysdf.html | 79 + 2 files changed, 3926 insertions(+) create mode 100644 debug/streets-zh-global-v1.json create mode 100644 debug/tinysdf.html diff --git a/debug/streets-zh-global-v1.json b/debug/streets-zh-global-v1.json new file mode 100644 index 00000000000..1cbc39ce426 --- /dev/null +++ b/debug/streets-zh-global-v1.json @@ -0,0 +1,3847 @@ +{ + "version": 8, + "name": "Mapbox Streets Chinese", + "metadata": { + "mapbox:autostreets-cn": true, + "mapbox:groups": { + "1444934828655.3389": { "name": "Aeroways", "collapsed": true }, + "1444933322393.2852": { "name": "POI labels (scalerank 1)", "collapsed": true }, + "1444855786460.0557": { "name": "Roads", "collapsed": true }, + "1444933575858.6992": { "name": "Highway shields", "collapsed": true }, + "1444934295202.7542": { "name": "Admin boundaries", "collapsed": true }, + "1444856151690.9143": { "name": "State labels", "collapsed": true }, + "1444933721429.3076": { "name": "Road labels", "collapsed": true }, + "1444933358918.2366": { "name": "POI labels (scalerank 2)", "collapsed": true }, + "1444933808272.805": { "name": "Water labels", "collapsed": true }, + "1444933372896.5967": { "name": "POI labels (scalerank 3)", "collapsed": true }, + "1444855799204.86": { "name": "Bridges", "collapsed": true }, + "1444856087950.3635": { "name": "Marine labels", "collapsed": true }, + "1444862510685.128": { "name": "City labels", "collapsed": true }, + "1444855769305.6016": { "name": "Tunnels", "collapsed": true }, + "1456970288113.8113": { "name": "Landcover", "collapsed": true }, + "1444856144497.7825": { "name": "Country labels", "collapsed": true }, + "1444933456003.5437": { "name": "POI labels (scalerank 4)", "collapsed": true } + } + }, + "sources": { "streets-cn": { "url": "mapbox://mapbox.mapbox-streets-v7", "type": "vector" } }, + "sprite": "mapbox://sprites/mapbox/streets-zh-v1", + "glyphs": "mapbox://fonts/mapbox/{fontstack}/{range}.pbf", + "layers": [ + { + "id": "background", + "type": "background", + "layout": {}, + "paint": { + "background-color": { "base": 1, "stops": [ [ 11, "hsl(35, 32%, 91%)" ], [ 13, "hsl(35, 12%, 89%)" ] ] } + } + }, + { + "id": "national_park", + "type": "fill", + "source": "streets-cn", + "source-layer": "landuse_overlay", + "filter": [ "==", "class", "national_park" ], + "layout": {}, + "paint": { + "fill-color": "hsl(100, 58%, 76%)", + "fill-opacity": { "base": 1, "stops": [ [ 5, 0 ], [ 6, 0.5 ] ] } + } + }, + { + "id": "hospital", + "type": "fill", + "source": "streets-cn", + "source-layer": "landuse", + "filter": [ "==", "class", "hospital" ], + "layout": {}, + "paint": { + "fill-color": { "base": 1, "stops": [ [ 15.5, "hsl(340, 37%, 87%)" ], [ 16, "hsl(340, 63%, 89%)" ] ] } + } + }, + { + "id": "school", + "type": "fill", + "source": "streets-cn", + "source-layer": "landuse", + "filter": [ "==", "class", "school" ], + "layout": {}, + "paint": { + "fill-color": { "base": 1, "stops": [ [ 15.5, "hsl(50, 47%, 81%)" ], [ 16, "hsl(50, 63%, 84%)" ] ] } + } + }, + { + "id": "park", + "type": "fill", + "source": "streets-cn", + "source-layer": "landuse", + "filter": [ "==", "class", "park" ], + "layout": {}, + "paint": { + "fill-color": "hsl(100, 58%, 76%)", + "fill-opacity": { "base": 1, "stops": [ [ 5, 0 ], [ 6, 1 ] ] } + } + }, + { + "id": "pitch", + "type": "fill", + "source": "streets-cn", + "source-layer": "landuse", + "filter": [ "==", "class", "pitch" ], + "layout": {}, + "paint": { "fill-color": "hsl(100, 57%, 72%)" } + }, + { + "id": "pitch-line", + "type": "line", + "source": "streets-cn", + "source-layer": "landuse", + "minzoom": 15, + "filter": [ "==", "class", "pitch" ], + "layout": { "line-join": "miter" }, + "paint": { "line-color": "hsl(75, 57%, 84%)" } + }, + { + "id": "cemetery", + "type": "fill", + "source": "streets-cn", + "source-layer": "landuse", + "filter": [ "==", "class", "cemetery" ], + "layout": {}, + "paint": { "fill-color": "hsl(75, 37%, 81%)" } + }, + { + "id": "industrial", + "type": "fill", + "source": "streets-cn", + "source-layer": "landuse", + "filter": [ "==", "class", "industrial" ], + "layout": {}, + "paint": { + "fill-color": { "base": 1, "stops": [ [ 15.5, "hsl(230, 15%, 86%)" ], [ 16, "hsl(230, 29%, 89%)" ] ] } + } + }, + { + "id": "sand", + "type": "fill", + "source": "streets-cn", + "source-layer": "landuse", + "filter": [ "==", "class", "sand" ], + "layout": {}, + "paint": { "fill-color": "hsl(60, 46%, 87%)" } + }, + { + "id": "waterway-river-canal", + "type": "line", + "source": "streets-cn", + "source-layer": "waterway", + "minzoom": 8, + "filter": [ "in", "class", "canal", "river" ], + "layout": { + "line-cap": { "base": 1, "stops": [ [ 0, "butt" ], [ 11, "round" ] ] }, + "line-join": "round" + }, + "paint": { + "line-color": "hsl(205, 87%, 76%)", + "line-width": { "base": 1.3, "stops": [ [ 8.5, 0.1 ], [ 20, 8 ] ] }, + "line-opacity": { "base": 1, "stops": [ [ 8, 0 ], [ 8.5, 1 ] ] } + } + }, + { + "id": "waterway-small", + "type": "line", + "source": "streets-cn", + "source-layer": "waterway", + "minzoom": 13, + "filter": [ "!in", "class", "canal", "river" ], + "layout": { "line-join": "round", "line-cap": "round" }, + "paint": { + "line-color": "hsl(205, 87%, 76%)", + "line-width": { "base": 1.35, "stops": [ [ 13.5, 0.1 ], [ 20, 3 ] ] }, + "line-opacity": { "base": 1, "stops": [ [ 13, 0 ], [ 13.5, 1 ] ] } + } + }, + { + "id": "water-shadow", + "type": "fill", + "source": "streets-cn", + "source-layer": "water", + "layout": {}, + "paint": { + "fill-color": "hsl(215, 84%, 69%)", + "fill-translate": { "base": 1.2, "stops": [ [ 7, [ 0, 0 ] ], [ 16, [ -1, -1 ] ] ] }, + "fill-translate-anchor": "viewport", + "fill-opacity": 1 + } + }, + { "id": "water", "ref": "water-shadow", "paint": { "fill-color": "hsl(196, 80%, 70%)" } }, + { + "id": "barrier_line-land-polygon", + "type": "fill", + "source": "streets-cn", + "source-layer": "barrier_line", + "filter": [ "all", [ "==", "$type", "Polygon" ], [ "==", "class", "land" ] ], + "layout": {}, + "paint": { "fill-color": "hsl(35, 12%, 89%)" } + }, + { + "id": "barrier_line-land-line", + "type": "line", + "source": "streets-cn", + "source-layer": "barrier_line", + "filter": [ "all", [ "==", "$type", "LineString" ], [ "==", "class", "land" ] ], + "layout": { "line-cap": "round" }, + "paint": { + "line-width": { "base": 1.99, "stops": [ [ 14, 0.75 ], [ 20, 40 ] ] }, + "line-color": "hsl(35, 12%, 89%)" + } + }, + { + "id": "aeroway-polygon", + "type": "fill", + "metadata": { "mapbox:group": "1444934828655.3389" }, + "source": "streets-cn", + "source-layer": "aeroway", + "minzoom": 11, + "filter": [ "all", [ "!=", "type", "apron" ], [ "==", "$type", "Polygon" ] ], + "layout": {}, + "paint": { + "fill-color": { "base": 1, "stops": [ [ 15, "hsl(230, 23%, 82%)" ], [ 16, "hsl(230, 37%, 84%)" ] ] }, + "fill-opacity": { "base": 1, "stops": [ [ 11, 0 ], [ 11.5, 1 ] ] } + } + }, + { + "id": "aeroway-runway", + "type": "line", + "metadata": { "mapbox:group": "1444934828655.3389" }, + "source": "streets-cn", + "source-layer": "aeroway", + "minzoom": 9, + "filter": [ "all", [ "==", "$type", "LineString" ], [ "==", "type", "runway" ] ], + "layout": {}, + "paint": { + "line-color": { "base": 1, "stops": [ [ 15, "hsl(230, 23%, 82%)" ], [ 16, "hsl(230, 37%, 84%)" ] ] }, + "line-width": { "base": 1.5, "stops": [ [ 9, 1 ], [ 18, 80 ] ] } + } + }, + { + "id": "aeroway-taxiway", + "type": "line", + "metadata": { "mapbox:group": "1444934828655.3389" }, + "source": "streets-cn", + "source-layer": "aeroway", + "minzoom": 9, + "filter": [ "all", [ "==", "$type", "LineString" ], [ "==", "type", "taxiway" ] ], + "layout": {}, + "paint": { + "line-color": { "base": 1, "stops": [ [ 15, "hsl(230, 23%, 82%)" ], [ 16, "hsl(230, 37%, 84%)" ] ] }, + "line-width": { "base": 1.5, "stops": [ [ 10, 0.5 ], [ 18, 20 ] ] } + } + }, + { + "id": "building-line", + "type": "line", + "source": "streets-cn", + "source-layer": "building", + "minzoom": 15, + "filter": [ "all", [ "!=", "type", "building:part" ], [ "==", "underground", "false" ] ], + "layout": {}, + "paint": { + "line-color": "hsl(35, 6%, 79%)", + "line-width": { "base": 1.5, "stops": [ [ 15, 0.75 ], [ 20, 3 ] ] }, + "line-opacity": { "base": 1, "stops": [ [ 15.5, 0 ], [ 16, 1 ] ] } + } + }, + { + "id": "building", + "type": "fill", + "source": "streets-cn", + "source-layer": "building", + "minzoom": 15, + "filter": [ "all", [ "!=", "type", "building:part" ], [ "==", "underground", "false" ] ], + "layout": {}, + "paint": { + "fill-color": { "base": 1, "stops": [ [ 15, "hsl(35, 11%, 88%)" ], [ 16, "hsl(35, 8%, 85%)" ] ] }, + "fill-opacity": { "base": 1, "stops": [ [ 15.5, 0 ], [ 16, 1 ] ] }, + "fill-outline-color": "hsl(35, 6%, 79%)" + } + }, + { + "id": "tunnel-street-low", + "type": "line", + "metadata": { "mapbox:group": "1444855769305.6016" }, + "source": "streets-cn", + "source-layer": "road", + "minzoom": 11, + "filter": [ + "all", + [ "==", "$type", "LineString" ], + [ "all", [ "==", "class", "street" ], [ "==", "structure", "tunnel" ] ] + ], + "layout": { "line-cap": "round", "line-join": "round" }, + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 12.5, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, + "line-color": "hsl(0, 0%, 100%)", + "line-opacity": { "stops": [ [ 11.5, 0 ], [ 12, 1 ], [ 14, 1 ], [ 14.01, 0 ] ] } + } + }, + { + "id": "tunnel-street_limited-low", + "type": "line", + "metadata": { "mapbox:group": "1444855769305.6016" }, + "source": "streets-cn", + "source-layer": "road", + "minzoom": 11, + "filter": [ + "all", + [ "==", "$type", "LineString" ], + [ "all", [ "==", "class", "street_limited" ], [ "==", "structure", "tunnel" ] ] + ], + "layout": { "line-cap": "round", "line-join": "round" }, + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 12.5, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, + "line-color": "hsl(0, 0%, 100%)", + "line-opacity": { "stops": [ [ 11.5, 0 ], [ 12, 1 ], [ 14, 1 ], [ 14.01, 0 ] ] } + } + }, + { + "id": "tunnel-service-link-track-case", + "type": "line", + "metadata": { "mapbox:group": "1444855769305.6016" }, + "source": "streets-cn", + "source-layer": "road", + "minzoom": 14, + "filter": [ + "all", + [ "==", "$type", "LineString" ], + [ + "all", + [ "!=", "type", "trunk_link" ], + [ "==", "structure", "tunnel" ], + [ "in", "class", "link", "service", "track" ] + ] + ], + "layout": { "line-cap": "round", "line-join": "round" }, + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 12, 0.75 ], [ 20, 2 ] ] }, + "line-color": "hsl(230, 19%, 75%)", + "line-gap-width": { "base": 1.5, "stops": [ [ 14, 0.5 ], [ 18, 12 ] ] }, + "line-dasharray": [ 3, 3 ] + } + }, + { + "id": "tunnel-street_limited-case", + "metadata": { "mapbox:group": "1444855769305.6016" }, + "ref": "tunnel-street_limited-low", + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 12, 0.75 ], [ 20, 2 ] ] }, + "line-color": "hsl(230, 19%, 75%)", + "line-gap-width": { "base": 1.5, "stops": [ [ 13, 0 ], [ 14, 2 ], [ 18, 18 ] ] }, + "line-dasharray": [ 3, 3 ], + "line-opacity": { "base": 1, "stops": [ [ 13.99, 0 ], [ 14, 1 ] ] } + } + }, + { + "id": "tunnel-street-case", + "metadata": { "mapbox:group": "1444855769305.6016" }, + "ref": "tunnel-street-low", + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 12, 0.75 ], [ 20, 2 ] ] }, + "line-color": "hsl(230, 19%, 75%)", + "line-gap-width": { "base": 1.5, "stops": [ [ 13, 0 ], [ 14, 2 ], [ 18, 18 ] ] }, + "line-dasharray": [ 3, 3 ], + "line-opacity": { "base": 1, "stops": [ [ 13.99, 0 ], [ 14, 1 ] ] } + } + }, + { + "id": "tunnel-secondary-tertiary-case", + "type": "line", + "metadata": { "mapbox:group": "1444855769305.6016" }, + "source": "streets-cn", + "source-layer": "road", + "filter": [ + "all", + [ "==", "$type", "LineString" ], + [ "all", [ "==", "structure", "tunnel" ], [ "in", "class", "secondary", "tertiary" ] ] + ], + "layout": { "line-cap": "round", "line-join": "round" }, + "paint": { + "line-width": { "base": 1.2, "stops": [ [ 10, 0.75 ], [ 18, 2 ] ] }, + "line-dasharray": [ 3, 3 ], + "line-gap-width": { "base": 1.5, "stops": [ [ 8.5, 0.5 ], [ 10, 0.75 ], [ 18, 26 ] ] }, + "line-color": "hsl(230, 19%, 75%)" + } + }, + { + "id": "tunnel-primary-case", + "type": "line", + "metadata": { "mapbox:group": "1444855769305.6016" }, + "source": "streets-cn", + "source-layer": "road", + "filter": [ + "all", + [ "==", "$type", "LineString" ], + [ "all", [ "==", "class", "primary" ], [ "==", "structure", "tunnel" ] ] + ], + "layout": { "line-cap": "round", "line-join": "round" }, + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 10, 1 ], [ 16, 2 ] ] }, + "line-dasharray": [ 3, 3 ], + "line-gap-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] }, + "line-color": "hsl(230, 19%, 75%)" + } + }, + { + "id": "tunnel-trunk_link-case", + "type": "line", + "metadata": { "mapbox:group": "1444855769305.6016" }, + "source": "streets-cn", + "source-layer": "road", + "minzoom": 13, + "filter": [ + "all", + [ "==", "$type", "LineString" ], + [ "all", [ "==", "structure", "tunnel" ], [ "==", "type", "trunk_link" ] ] + ], + "layout": { "line-cap": "round", "line-join": "round" }, + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 12, 0.75 ], [ 20, 2 ] ] }, + "line-color": "hsl(0, 0%, 100%)", + "line-gap-width": { "base": 1.5, "stops": [ [ 12, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, + "line-dasharray": [ 3, 3 ] + } + }, + { + "id": "tunnel-motorway_link-case", + "type": "line", + "metadata": { "mapbox:group": "1444855769305.6016" }, + "source": "streets-cn", + "source-layer": "road", + "minzoom": 13, + "filter": [ + "all", + [ "==", "$type", "LineString" ], + [ "all", [ "==", "class", "motorway_link" ], [ "==", "structure", "tunnel" ] ] + ], + "layout": { "line-cap": "round", "line-join": "round" }, + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 12, 0.75 ], [ 20, 2 ] ] }, + "line-color": "hsl(0, 0%, 100%)", + "line-gap-width": { "base": 1.5, "stops": [ [ 12, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, + "line-dasharray": [ 3, 3 ] + } + }, + { + "id": "tunnel-trunk-case", + "type": "line", + "metadata": { "mapbox:group": "1444855769305.6016" }, + "source": "streets-cn", + "source-layer": "road", + "filter": [ + "all", + [ "==", "$type", "LineString" ], + [ "all", [ "==", "structure", "tunnel" ], [ "==", "type", "trunk" ] ] + ], + "layout": { "line-cap": "round", "line-join": "round" }, + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 10, 1 ], [ 16, 2 ] ] }, + "line-color": "hsl(0, 0%, 100%)", + "line-gap-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] }, + "line-opacity": 1, + "line-dasharray": [ 3, 3 ] + } + }, + { + "id": "tunnel-motorway-case", + "type": "line", + "metadata": { "mapbox:group": "1444855769305.6016" }, + "source": "streets-cn", + "source-layer": "road", + "filter": [ + "all", + [ "==", "$type", "LineString" ], + [ "all", [ "==", "class", "motorway" ], [ "==", "structure", "tunnel" ] ] + ], + "layout": { "line-cap": "round", "line-join": "round" }, + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 10, 1 ], [ 16, 2 ] ] }, + "line-color": "hsl(0, 0%, 100%)", + "line-gap-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] }, + "line-opacity": 1, + "line-dasharray": [ 3, 3 ] + } + }, + { + "id": "tunnel-construction", + "type": "line", + "metadata": { "mapbox:group": "1444855769305.6016" }, + "source": "streets-cn", + "source-layer": "road", + "minzoom": 14, + "filter": [ + "all", + [ "==", "$type", "LineString" ], + [ "all", [ "==", "class", "construction" ], [ "==", "structure", "tunnel" ] ] + ], + "layout": { "line-join": "miter" }, + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 12.5, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, + "line-color": "hsl(230, 24%, 87%)", + "line-opacity": { "base": 1, "stops": [ [ 13.99, 0 ], [ 14, 1 ] ] }, + "line-dasharray": { + "base": 1, + "stops": [ + [ 14, [ 0.4, 0.8 ] ], + [ 15, [ 0.3, 0.6 ] ], + [ 16, [ 0.2, 0.3 ] ], + [ 17, [ 0.2, 0.25 ] ], + [ 18, [ 0.15, 0.15 ] ] + ] + } + } + }, + { + "id": "tunnel-path", + "type": "line", + "metadata": { "mapbox:group": "1444855769305.6016" }, + "source": "streets-cn", + "source-layer": "road", + "filter": [ + "all", + [ "==", "$type", "LineString" ], + [ + "all", + [ "!=", "type", "steps" ], + [ "==", "class", "path" ], + [ "==", "structure", "tunnel" ] + ] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 15, 1 ], [ 18, 4 ] ] }, + "line-dasharray": { + "base": 1, + "stops": [ [ 14, [ 1, 0 ] ], [ 15, [ 1.75, 1 ] ], [ 16, [ 1, 0.75 ] ], [ 17, [ 1, 0.5 ] ] ] + }, + "line-color": "hsl(35, 26%, 95%)", + "line-opacity": { "base": 1, "stops": [ [ 14, 0 ], [ 14.25, 1 ] ] } + } + }, + { + "id": "tunnel-steps", + "type": "line", + "metadata": { "mapbox:group": "1444855769305.6016" }, + "source": "streets-cn", + "source-layer": "road", + "filter": [ + "all", + [ "==", "$type", "LineString" ], + [ "all", [ "==", "structure", "tunnel" ], [ "==", "type", "steps" ] ] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 15, 1 ], [ 16, 1.6 ], [ 18, 6 ] ] }, + "line-color": "hsl(35, 26%, 95%)", + "line-dasharray": { + "base": 1, + "stops": [ [ 14, [ 1, 0 ] ], [ 15, [ 1.75, 1 ] ], [ 16, [ 1, 0.75 ] ], [ 17, [ 0.3, 0.3 ] ] ] + }, + "line-opacity": { "base": 1, "stops": [ [ 14, 0 ], [ 14.25, 1 ] ] } + } + }, + { + "id": "tunnel-trunk_link", + "metadata": { "mapbox:group": "1444855769305.6016" }, + "ref": "tunnel-trunk_link-case", + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 12, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, + "line-color": "hsl(46, 77%, 78%)", + "line-opacity": 1, + "line-dasharray": [ 1, 0 ] + } + }, + { + "id": "tunnel-motorway_link", + "metadata": { "mapbox:group": "1444855769305.6016" }, + "ref": "tunnel-motorway_link-case", + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 12, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, + "line-color": "hsl(26, 100%, 78%)", + "line-opacity": 1, + "line-dasharray": [ 1, 0 ] + } + }, + { + "id": "tunnel-pedestrian", + "type": "line", + "metadata": { "mapbox:group": "1444855769305.6016" }, + "source": "streets-cn", + "source-layer": "road", + "minzoom": 13, + "filter": [ + "all", + [ "==", "$type", "LineString" ], + [ "all", [ "==", "class", "pedestrian" ], [ "==", "structure", "tunnel" ] ] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 14, 0.5 ], [ 18, 12 ] ] }, + "line-color": "hsl(0, 0%, 100%)", + "line-opacity": 1, + "line-dasharray": { "base": 1, "stops": [ [ 14, [ 1, 0 ] ], [ 15, [ 1.5, 0.4 ] ], [ 16, [ 1, 0.2 ] ] ] } + } + }, + { + "id": "tunnel-service-link-track", + "metadata": { "mapbox:group": "1444855769305.6016" }, + "ref": "tunnel-service-link-track-case", + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 14, 0.5 ], [ 18, 12 ] ] }, + "line-color": "hsl(0, 0%, 100%)", + "line-dasharray": [ 1, 0 ] + } + }, + { + "id": "tunnel-street_limited", + "metadata": { "mapbox:group": "1444855769305.6016" }, + "ref": "tunnel-street_limited-low", + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 12.5, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, + "line-color": "hsl(35, 14%, 93%)", + "line-opacity": { "base": 1, "stops": [ [ 13.99, 0 ], [ 14, 1 ] ] } + } + }, + { + "id": "tunnel-street", + "metadata": { "mapbox:group": "1444855769305.6016" }, + "ref": "tunnel-street-low", + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 12.5, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, + "line-color": "hsl(0, 0%, 100%)", + "line-opacity": { "base": 1, "stops": [ [ 13.99, 0 ], [ 14, 1 ] ] } + } + }, + { + "id": "tunnel-secondary-tertiary", + "metadata": { "mapbox:group": "1444855769305.6016" }, + "ref": "tunnel-secondary-tertiary-case", + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 8.5, 0.5 ], [ 10, 0.75 ], [ 18, 26 ] ] }, + "line-color": "hsl(0, 0%, 100%)", + "line-opacity": 1, + "line-dasharray": [ 1, 0 ], + "line-blur": 0 + } + }, + { + "id": "tunnel-primary", + "metadata": { "mapbox:group": "1444855769305.6016" }, + "ref": "tunnel-primary-case", + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] }, + "line-color": "hsl(0, 0%, 100%)", + "line-opacity": 1, + "line-dasharray": [ 1, 0 ], + "line-blur": 0 + } + }, + { + "id": "tunnel-oneway-arrows-blue-minor", + "type": "symbol", + "metadata": { "mapbox:group": "1444855769305.6016" }, + "source": "streets-cn", + "source-layer": "road", + "minzoom": 16, + "filter": [ + "all", + [ "==", "$type", "LineString" ], + [ + "all", + [ "!=", "type", "trunk_link" ], + [ "==", "oneway", "true" ], + [ "==", "structure", "tunnel" ], + [ "in", "class", "link", "path", "pedestrian", "service", "track" ] + ] + ], + "layout": { + "symbol-placement": "line", + "icon-image": { "base": 1, "stops": [ [ 17, "oneway-small" ], [ 18, "oneway-large" ] ] }, + "symbol-spacing": 200, + "icon-padding": 2 + }, + "paint": {} + }, + { + "id": "tunnel-oneway-arrows-blue-major", + "type": "symbol", + "metadata": { "mapbox:group": "1444855769305.6016" }, + "source": "streets-cn", + "source-layer": "road", + "minzoom": 15, + "filter": [ + "all", + [ "==", "$type", "LineString" ], + [ + "all", + [ "!=", "type", "trunk_link" ], + [ "==", "oneway", "true" ], + [ "==", "structure", "tunnel" ], + [ "in", "class", "primary", "secondary", "street", "street_limited", "tertiary" ] + ] + ], + "layout": { + "symbol-placement": "line", + "icon-image": { "base": 1, "stops": [ [ 16, "oneway-small" ], [ 17, "oneway-large" ] ] }, + "symbol-spacing": 200, + "icon-padding": 2 + }, + "paint": {} + }, + { + "id": "tunnel-trunk", + "type": "line", + "metadata": { "mapbox:group": "1444855769305.6016" }, + "source": "streets-cn", + "source-layer": "road", + "filter": [ + "all", + [ "==", "$type", "LineString" ], + [ "all", [ "==", "class", "trunk" ], [ "==", "structure", "tunnel" ] ] + ], + "layout": { "line-cap": "round", "line-join": "round" }, + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] }, + "line-color": "hsl(46, 77%, 78%)" + } + }, + { + "id": "tunnel-motorway", + "metadata": { "mapbox:group": "1444855769305.6016" }, + "ref": "tunnel-motorway-case", + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] }, + "line-dasharray": [ 1, 0 ], + "line-opacity": 1, + "line-color": "hsl(26, 100%, 78%)", + "line-blur": 0 + } + }, + { + "id": "tunnel-oneway-arrows-white", + "type": "symbol", + "metadata": { "mapbox:group": "1444855769305.6016" }, + "source": "streets-cn", + "source-layer": "road", + "minzoom": 16, + "filter": [ + "all", + [ "==", "$type", "LineString" ], + [ + "all", + [ "!in", "type", "primary_link", "secondary_link", "tertiary_link" ], + [ "==", "oneway", "true" ], + [ "==", "structure", "tunnel" ], + [ "in", "class", "link", "motorway", "motorway_link", "trunk" ] + ] + ], + "layout": { + "symbol-placement": "line", + "icon-image": { "base": 1, "stops": [ [ 16, "oneway-white-small" ], [ 17, "oneway-white-large" ] ] }, + "symbol-spacing": 200, + "icon-padding": 2 + }, + "paint": {} + }, + { + "id": "ferry", + "type": "line", + "source": "streets-cn", + "source-layer": "road", + "filter": [ "all", [ "==", "$type", "LineString" ], [ "==", "type", "ferry" ] ], + "layout": { "line-join": "round" }, + "paint": { + "line-color": { "base": 1, "stops": [ [ 15, "hsl(205, 73%, 63%)" ], [ 17, "hsl(230, 73%, 63%)" ] ] }, + "line-opacity": 1, + "line-width": { "base": 1.5, "stops": [ [ 14, 0.5 ], [ 20, 1 ] ] }, + "line-dasharray": { "base": 1, "stops": [ [ 12, [ 1, 0 ] ], [ 13, [ 12, 4 ] ] ] } + } + }, + { + "id": "ferry_auto", + "type": "line", + "source": "streets-cn", + "source-layer": "road", + "filter": [ "all", [ "==", "$type", "LineString" ], [ "==", "type", "ferry_auto" ] ], + "layout": { "line-join": "round" }, + "paint": { + "line-color": { "base": 1, "stops": [ [ 15, "hsl(205, 73%, 63%)" ], [ 17, "hsl(230, 73%, 63%)" ] ] }, + "line-opacity": 1, + "line-width": { "base": 1.5, "stops": [ [ 14, 0.5 ], [ 20, 1 ] ] } + } + }, + { + "id": "road-path-bg", + "type": "line", + "metadata": { "mapbox:group": "1444855786460.0557" }, + "source": "streets-cn", + "source-layer": "road", + "filter": [ + "all", + [ "==", "$type", "LineString" ], + [ + "all", + [ "!in", "structure", "bridge", "tunnel" ], + [ "!in", "type", "crossing", "sidewalk", "steps" ], + [ "==", "class", "path" ] + ] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 15, 2 ], [ 18, 7 ] ] }, + "line-dasharray": [ 1, 0 ], + "line-color": "hsl(230, 17%, 82%)", + "line-blur": 0, + "line-opacity": { "base": 1, "stops": [ [ 14, 0 ], [ 14.25, 0.75 ] ] } + } + }, + { + "id": "road-steps-bg", + "type": "line", + "metadata": { "mapbox:group": "1444855786460.0557" }, + "source": "streets-cn", + "source-layer": "road", + "filter": [ + "all", + [ "==", "$type", "LineString" ], + [ "all", [ "!in", "structure", "bridge", "tunnel" ], [ "==", "type", "steps" ] ] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 15, 2 ], [ 17, 4.6 ], [ 18, 7 ] ] }, + "line-color": "hsl(230, 17%, 82%)", + "line-dasharray": [ 1, 0 ], + "line-opacity": { "base": 1, "stops": [ [ 14, 0 ], [ 14.25, 0.75 ] ] } + } + }, + { + "id": "road-sidewalk-bg", + "type": "line", + "metadata": { "mapbox:group": "1444855786460.0557" }, + "source": "streets-cn", + "source-layer": "road", + "minzoom": 16, + "filter": [ + "all", + [ "==", "$type", "LineString" ], + [ + "all", + [ "!in", "structure", "bridge", "tunnel" ], + [ "in", "type", "crossing", "sidewalk" ] + ] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 15, 2 ], [ 18, 7 ] ] }, + "line-dasharray": [ 1, 0 ], + "line-color": "hsl(230, 17%, 82%)", + "line-blur": 0, + "line-opacity": { "base": 1, "stops": [ [ 16, 0 ], [ 16.25, 0.75 ] ] } + } + }, + { + "id": "turning-features-outline", + "type": "symbol", + "metadata": { "mapbox:group": "1444855786460.0557" }, + "source": "streets-cn", + "source-layer": "road", + "minzoom": 15, + "filter": [ "all", [ "==", "$type", "Point" ], [ "in", "class", "turning_circle", "turning_loop" ] ], + "layout": { + "icon-image": "turning-circle-outline", + "icon-size": { "base": 1.5, "stops": [ [ 14, 0.122 ], [ 18, 0.969 ], [ 20, 1 ] ] }, + "icon-allow-overlap": true, + "icon-ignore-placement": true, + "icon-padding": 0, + "icon-rotation-alignment": "map" + }, + "paint": {} + }, + { + "id": "road-pedestrian-case", + "type": "line", + "metadata": { "mapbox:group": "1444855786460.0557" }, + "source": "streets-cn", + "source-layer": "road", + "minzoom": 12, + "filter": [ + "all", + [ "==", "$type", "LineString" ], + [ "all", [ "==", "class", "pedestrian" ], [ "==", "structure", "none" ] ] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 14, 2 ], [ 18, 14.5 ] ] }, + "line-color": "hsl(230, 24%, 87%)", + "line-gap-width": 0, + "line-opacity": { "base": 1, "stops": [ [ 13.99, 0 ], [ 14, 1 ] ] } + } + }, + { + "id": "road-street-low", + "type": "line", + "metadata": { "mapbox:group": "1444855786460.0557" }, + "source": "streets-cn", + "source-layer": "road", + "minzoom": 11, + "filter": [ + "all", + [ "==", "$type", "LineString" ], + [ "all", [ "==", "class", "street" ], [ "==", "structure", "none" ] ] + ], + "layout": { "line-cap": "round", "line-join": "round" }, + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 12.5, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, + "line-color": "hsl(0, 0%, 100%)", + "line-opacity": { "stops": [ [ 11, 0 ], [ 11.25, 1 ], [ 14, 1 ], [ 14.01, 0 ] ] } + } + }, + { + "id": "road-street_limited-low", + "type": "line", + "metadata": { "mapbox:group": "1444855786460.0557" }, + "source": "streets-cn", + "source-layer": "road", + "minzoom": 11, + "filter": [ + "all", + [ "==", "$type", "LineString" ], + [ "all", [ "==", "class", "street_limited" ], [ "==", "structure", "none" ] ] + ], + "layout": { "line-cap": "round", "line-join": "round" }, + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 12.5, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, + "line-color": "hsl(0, 0%, 100%)", + "line-opacity": { "stops": [ [ 11, 0 ], [ 11.25, 1 ], [ 14, 1 ], [ 14.01, 0 ] ] } + } + }, + { + "id": "road-service-link-track-case", + "type": "line", + "metadata": { "mapbox:group": "1444855786460.0557" }, + "source": "streets-cn", + "source-layer": "road", + "minzoom": 14, + "filter": [ + "all", + [ "==", "$type", "LineString" ], + [ + "all", + [ "!=", "type", "trunk_link" ], + [ "!in", "structure", "bridge", "tunnel" ], + [ "in", "class", "link", "service", "track" ] + ] + ], + "layout": { "line-cap": "round", "line-join": "round" }, + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 12, 0.75 ], [ 20, 2 ] ] }, + "line-color": "hsl(230, 24%, 87%)", + "line-gap-width": { "base": 1.5, "stops": [ [ 14, 0.5 ], [ 18, 12 ] ] } + } + }, + { + "id": "road-street_limited-case", + "metadata": { "mapbox:group": "1444855786460.0557" }, + "ref": "road-street_limited-low", + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 12, 0.75 ], [ 20, 2 ] ] }, + "line-color": "hsl(230, 24%, 87%)", + "line-gap-width": { "base": 1.5, "stops": [ [ 13, 0 ], [ 14, 2 ], [ 18, 18 ] ] }, + "line-opacity": { "base": 1, "stops": [ [ 13.99, 0 ], [ 14, 1 ] ] } + } + }, + { + "id": "road-street-case", + "metadata": { "mapbox:group": "1444855786460.0557" }, + "ref": "road-street-low", + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 12, 0.75 ], [ 20, 2 ] ] }, + "line-color": "hsl(230, 24%, 87%)", + "line-gap-width": { "base": 1.5, "stops": [ [ 13, 0 ], [ 14, 2 ], [ 18, 18 ] ] }, + "line-opacity": { "base": 1, "stops": [ [ 13.99, 0 ], [ 14, 1 ] ] } + } + }, + { + "id": "road-secondary-tertiary-case", + "type": "line", + "metadata": { "mapbox:group": "1444855786460.0557" }, + "source": "streets-cn", + "source-layer": "road", + "filter": [ + "all", + [ "==", "$type", "LineString" ], + [ + "all", + [ "!in", "structure", "bridge", "tunnel" ], + [ "in", "class", "secondary", "tertiary" ] + ] + ], + "layout": { "line-cap": "round", "line-join": "round" }, + "paint": { + "line-width": { "base": 1.2, "stops": [ [ 10, 0.75 ], [ 18, 2 ] ] }, + "line-color": "hsl(230, 24%, 87%)", + "line-gap-width": { "base": 1.5, "stops": [ [ 8.5, 0.5 ], [ 10, 0.75 ], [ 18, 26 ] ] }, + "line-opacity": { "base": 1, "stops": [ [ 9.99, 0 ], [ 10, 1 ] ] } + } + }, + { + "id": "road-primary-case", + "type": "line", + "metadata": { "mapbox:group": "1444855786460.0557" }, + "source": "streets-cn", + "source-layer": "road", + "filter": [ + "all", + [ "==", "$type", "LineString" ], + [ "all", [ "!in", "structure", "bridge", "tunnel" ], [ "==", "class", "primary" ] ] + ], + "layout": { "line-cap": "round", "line-join": "round" }, + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 10, 1 ], [ 16, 2 ] ] }, + "line-color": "hsl(230, 24%, 87%)", + "line-gap-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] }, + "line-opacity": { "base": 1, "stops": [ [ 9.99, 0 ], [ 10, 1 ] ] } + } + }, + { + "id": "road-motorway_link-case", + "type": "line", + "metadata": { "mapbox:group": "1444855786460.0557" }, + "source": "streets-cn", + "source-layer": "road", + "minzoom": 10, + "filter": [ + "all", + [ "==", "$type", "LineString" ], + [ "all", [ "!in", "structure", "bridge", "tunnel" ], [ "==", "class", "motorway_link" ] ] + ], + "layout": { "line-cap": "round", "line-join": "round" }, + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 12, 0.75 ], [ 20, 2 ] ] }, + "line-color": "hsl(0, 0%, 100%)", + "line-gap-width": { "base": 1.5, "stops": [ [ 12, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, + "line-opacity": { "base": 1, "stops": [ [ 10.99, 0 ], [ 11, 1 ] ] } + } + }, + { + "id": "road-trunk_link-case", + "type": "line", + "metadata": { "mapbox:group": "1444855786460.0557" }, + "source": "streets-cn", + "source-layer": "road", + "minzoom": 11, + "filter": [ + "all", + [ "==", "$type", "LineString" ], + [ "all", [ "!in", "structure", "bridge", "tunnel" ], [ "==", "type", "trunk_link" ] ] + ], + "layout": { "line-cap": "round", "line-join": "round" }, + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 12, 0.75 ], [ 20, 2 ] ] }, + "line-color": "hsl(0, 0%, 100%)", + "line-gap-width": { "base": 1.5, "stops": [ [ 12, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, + "line-opacity": { "base": 1, "stops": [ [ 10.99, 0 ], [ 11, 1 ] ] } + } + }, + { + "id": "road-trunk-case", + "type": "line", + "metadata": { "mapbox:group": "1444855786460.0557" }, + "source": "streets-cn", + "source-layer": "road", + "filter": [ + "all", + [ "==", "$type", "LineString" ], + [ "all", [ "!in", "structure", "bridge", "tunnel" ], [ "==", "class", "trunk" ] ] + ], + "layout": { "line-cap": "round", "line-join": "round" }, + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 10, 1 ], [ 16, 2 ] ] }, + "line-color": "hsl(0, 0%, 100%)", + "line-gap-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] }, + "line-opacity": { "base": 1, "stops": [ [ 6, 0 ], [ 6.1, 1 ] ] } + } + }, + { + "id": "road-motorway-case", + "type": "line", + "metadata": { "mapbox:group": "1444855786460.0557" }, + "source": "streets-cn", + "source-layer": "road", + "filter": [ + "all", + [ "==", "$type", "LineString" ], + [ "all", [ "!in", "structure", "bridge", "tunnel" ], [ "==", "class", "motorway" ] ] + ], + "layout": { "line-cap": "round", "line-join": "round" }, + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 10, 1 ], [ 16, 2 ] ] }, + "line-color": "hsl(0, 0%, 100%)", + "line-gap-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] } + } + }, + { + "id": "road-construction", + "type": "line", + "metadata": { "mapbox:group": "1444855786460.0557" }, + "source": "streets-cn", + "source-layer": "road", + "minzoom": 14, + "filter": [ + "all", + [ "==", "$type", "LineString" ], + [ "all", [ "==", "class", "construction" ], [ "==", "structure", "none" ] ] + ], + "layout": { "line-join": "miter" }, + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 12.5, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, + "line-color": "hsl(230, 24%, 87%)", + "line-opacity": { "base": 1, "stops": [ [ 13.99, 0 ], [ 14, 1 ] ] }, + "line-dasharray": { + "base": 1, + "stops": [ + [ 14, [ 0.4, 0.8 ] ], + [ 15, [ 0.3, 0.6 ] ], + [ 16, [ 0.2, 0.3 ] ], + [ 17, [ 0.2, 0.25 ] ], + [ 18, [ 0.15, 0.15 ] ] + ] + } + } + }, + { + "id": "road-sidewalks", + "metadata": { "mapbox:group": "1444855786460.0557" }, + "ref": "road-sidewalk-bg", + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 15, 1 ], [ 18, 4 ] ] }, + "line-color": "hsl(0, 0%, 100%)", + "line-dasharray": { + "base": 1, + "stops": [ [ 14, [ 1, 0 ] ], [ 15, [ 1.75, 1 ] ], [ 16, [ 1, 0.75 ] ], [ 17, [ 1, 0.5 ] ] ] + }, + "line-opacity": { "base": 1, "stops": [ [ 16, 0 ], [ 16.25, 1 ] ] } + } + }, + { + "id": "road-path", + "metadata": { "mapbox:group": "1444855786460.0557" }, + "ref": "road-path-bg", + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 15, 1 ], [ 18, 4 ] ] }, + "line-color": "hsl(0, 0%, 100%)", + "line-dasharray": { + "base": 1, + "stops": [ [ 14, [ 1, 0 ] ], [ 15, [ 1.75, 1 ] ], [ 16, [ 1, 0.75 ] ], [ 17, [ 1, 0.5 ] ] ] + }, + "line-opacity": { "base": 1, "stops": [ [ 14, 0 ], [ 14.25, 1 ] ] } + } + }, + { + "id": "road-steps", + "metadata": { "mapbox:group": "1444855786460.0557" }, + "ref": "road-steps-bg", + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 15, 1 ], [ 16, 1.6 ], [ 18, 6 ] ] }, + "line-color": "hsl(0, 0%, 100%)", + "line-dasharray": { + "base": 1, + "stops": [ [ 14, [ 1, 0 ] ], [ 15, [ 1.75, 1 ] ], [ 16, [ 1, 0.75 ] ], [ 17, [ 0.3, 0.3 ] ] ] + }, + "line-opacity": { "base": 1, "stops": [ [ 14, 0 ], [ 14.25, 1 ] ] } + } + }, + { + "id": "road-trunk_link", + "metadata": { "mapbox:group": "1444855786460.0557" }, + "ref": "road-trunk_link-case", + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 12, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, + "line-color": "hsl(46, 85%, 67%)", + "line-opacity": 1 + } + }, + { + "id": "road-motorway_link", + "metadata": { "mapbox:group": "1444855786460.0557" }, + "ref": "road-motorway_link-case", + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 12, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, + "line-color": "hsl(26, 100%, 68%)", + "line-opacity": 1 + } + }, + { + "id": "road-pedestrian", + "metadata": { "mapbox:group": "1444855786460.0557" }, + "ref": "road-pedestrian-case", + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 14, 0.5 ], [ 18, 12 ] ] }, + "line-color": "hsl(0, 0%, 100%)", + "line-opacity": 1, + "line-dasharray": { "base": 1, "stops": [ [ 14, [ 1, 0 ] ], [ 15, [ 1.5, 0.4 ] ], [ 16, [ 1, 0.2 ] ] ] } + } + }, + { + "id": "road-pedestrian-polygon-fill", + "type": "fill", + "metadata": { "mapbox:group": "1444855786460.0557" }, + "source": "streets-cn", + "source-layer": "road", + "minzoom": 12, + "filter": [ + "all", + [ "==", "$type", "Polygon" ], + [ "all", [ "==", "structure", "none" ], [ "in", "class", "path", "pedestrian" ] ] + ], + "layout": {}, + "paint": { + "fill-color": { "base": 1, "stops": [ [ 16, "hsl(230, 16%, 94%)" ], [ 16.25, "hsl(230, 50%, 98%)" ] ] }, + "fill-outline-color": "hsl(230, 26%, 88%)", + "fill-opacity": 1 + } + }, + { + "id": "road-pedestrian-polygon-pattern", + "metadata": { "mapbox:group": "1444855786460.0557" }, + "ref": "road-pedestrian-polygon-fill", + "paint": { + "fill-color": "hsl(0, 0%, 100%)", + "fill-outline-color": "hsl(35, 10%, 83%)", + "fill-pattern": "pedestrian-polygon", + "fill-opacity": { "base": 1, "stops": [ [ 16, 0 ], [ 16.25, 1 ] ] } + } + }, + { + "id": "road-polygon", + "type": "fill", + "metadata": { "mapbox:group": "1444855786460.0557" }, + "source": "streets-cn", + "source-layer": "road", + "minzoom": 12, + "filter": [ + "all", + [ "==", "$type", "Polygon" ], + [ + "all", + [ "!in", "class", "motorway", "path", "pedestrian", "trunk" ], + [ "!in", "structure", "bridge", "tunnel" ] + ] + ], + "layout": {}, + "paint": { "fill-color": "hsl(0, 0%, 100%)", "fill-outline-color": "#d6d9e6" } + }, + { + "id": "road-service-link-track", + "metadata": { "mapbox:group": "1444855786460.0557" }, + "ref": "road-service-link-track-case", + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 14, 0.5 ], [ 18, 12 ] ] }, + "line-color": "hsl(0, 0%, 100%)" + } + }, + { + "id": "road-street_limited", + "metadata": { "mapbox:group": "1444855786460.0557" }, + "ref": "road-street_limited-low", + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 12.5, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, + "line-color": "hsl(35, 14%, 93%)", + "line-opacity": { "base": 1, "stops": [ [ 13.99, 0 ], [ 14, 1 ] ] } + } + }, + { + "id": "road-street", + "metadata": { "mapbox:group": "1444855786460.0557" }, + "ref": "road-street-low", + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 12.5, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, + "line-color": "hsl(0, 0%, 100%)", + "line-opacity": { "base": 1, "stops": [ [ 13.99, 0 ], [ 14, 1 ] ] } + } + }, + { + "id": "road-secondary-tertiary", + "metadata": { "mapbox:group": "1444855786460.0557" }, + "ref": "road-secondary-tertiary-case", + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 8.5, 0.5 ], [ 10, 0.75 ], [ 18, 26 ] ] }, + "line-color": { "base": 1, "stops": [ [ 5, "hsl(35, 32%, 91%)" ], [ 8, "hsl(0, 0%, 100%)" ] ] }, + "line-opacity": { "base": 1.2, "stops": [ [ 5, 0 ], [ 5.5, 1 ] ] } + } + }, + { + "id": "road-primary", + "metadata": { "mapbox:group": "1444855786460.0557" }, + "ref": "road-primary-case", + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] }, + "line-color": { "base": 1, "stops": [ [ 5, "hsl(35, 32%, 91%)" ], [ 7, "hsl(0, 0%, 100%)" ] ] }, + "line-opacity": 1 + } + }, + { + "id": "road-oneway-arrows-blue-minor", + "type": "symbol", + "metadata": { "mapbox:group": "1444855786460.0557" }, + "source": "streets-cn", + "source-layer": "road", + "minzoom": 16, + "filter": [ + "all", + [ "==", "$type", "LineString" ], + [ + "all", + [ "!=", "type", "trunk_link" ], + [ "!in", "structure", "bridge", "tunnel" ], + [ "==", "oneway", "true" ], + [ "in", "class", "link", "path", "pedestrian", "service", "track" ] + ] + ], + "layout": { + "symbol-placement": "line", + "icon-image": { "base": 1, "stops": [ [ 17, "oneway-small" ], [ 18, "oneway-large" ] ] }, + "icon-rotation-alignment": "map", + "icon-padding": 2, + "symbol-spacing": 200 + }, + "paint": {} + }, + { + "id": "road-oneway-arrows-blue-major", + "type": "symbol", + "metadata": { "mapbox:group": "1444855786460.0557" }, + "source": "streets-cn", + "source-layer": "road", + "minzoom": 15, + "filter": [ + "all", + [ "==", "$type", "LineString" ], + [ + "all", + [ "!=", "type", "trunk_link" ], + [ "!in", "structure", "bridge", "tunnel" ], + [ "==", "oneway", "true" ], + [ "in", "class", "primary", "secondary", "street", "street_limited", "tertiary" ] + ] + ], + "layout": { + "symbol-placement": "line", + "icon-image": { "base": 1, "stops": [ [ 16, "oneway-small" ], [ 17, "oneway-large" ] ] }, + "icon-rotation-alignment": "map", + "icon-padding": 2, + "symbol-spacing": 200 + }, + "paint": {} + }, + { + "id": "road-trunk", + "metadata": { "mapbox:group": "1444855786460.0557" }, + "ref": "road-trunk-case", + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] }, + "line-color": { + "base": 1, + "stops": [ [ 6, "hsl(0, 0%, 100%)" ], [ 6.1, "hsl(46, 80%, 60%)" ], [ 9, "hsl(46, 85%, 67%)" ] ] + } + } + }, + { + "id": "road-motorway", + "metadata": { "mapbox:group": "1444855786460.0557" }, + "ref": "road-motorway-case", + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] }, + "line-color": { "base": 1, "stops": [ [ 8, "hsl(26, 87%, 62%)" ], [ 9, "hsl(26, 100%, 68%)" ] ] } + } + }, + { + "id": "road-rail", + "type": "line", + "metadata": { "mapbox:group": "1444855786460.0557" }, + "source": "streets-cn", + "source-layer": "road", + "minzoom": 13, + "filter": [ + "all", + [ "==", "$type", "LineString" ], + [ + "all", + [ "!in", "structure", "bridge", "tunnel" ], + [ "in", "class", "major_rail", "minor_rail" ] + ] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-color": { "stops": [ [ 13, "hsl(50, 17%, 82%)" ], [ 16, "hsl(230, 10%, 74%)" ] ] }, + "line-width": { "base": 1.5, "stops": [ [ 14, 0.5 ], [ 20, 1 ] ] } + } + }, + { + "id": "road-rail-tracks", + "metadata": { "mapbox:group": "1444855786460.0557" }, + "ref": "road-rail", + "paint": { + "line-color": { "stops": [ [ 13, "hsl(50, 17%, 82%)" ], [ 16, "hsl(230, 10%, 74%)" ] ] }, + "line-width": { "base": 1.5, "stops": [ [ 14, 4 ], [ 20, 8 ] ] }, + "line-dasharray": [ 0.1, 15 ], + "line-opacity": { "base": 1, "stops": [ [ 13.75, 0 ], [ 14, 1 ] ] } + } + }, + { + "id": "level-crossings", + "type": "symbol", + "metadata": { "mapbox:group": "1444855786460.0557" }, + "source": "streets-cn", + "source-layer": "road", + "minzoom": 16, + "filter": [ "all", [ "==", "$type", "Point" ], [ "==", "class", "level_crossing" ] ], + "layout": { "icon-size": 1, "icon-image": "level-crossing", "icon-allow-overlap": true }, + "paint": {} + }, + { + "id": "road-oneway-arrows-white", + "type": "symbol", + "metadata": { "mapbox:group": "1444855786460.0557" }, + "source": "streets-cn", + "source-layer": "road", + "minzoom": 16, + "filter": [ + "all", + [ "==", "$type", "LineString" ], + [ + "all", + [ "!in", "structure", "bridge", "tunnel" ], + [ "!in", "type", "primary_link", "secondary_link", "tertiary_link" ], + [ "==", "oneway", "true" ], + [ "in", "class", "link", "motorway", "motorway_link", "trunk" ] + ] + ], + "layout": { + "symbol-placement": "line", + "icon-image": { "base": 1, "stops": [ [ 16, "oneway-white-small" ], [ 17, "oneway-white-large" ] ] }, + "icon-padding": 2, + "symbol-spacing": 200 + }, + "paint": {} + }, + { + "id": "turning-features", + "type": "symbol", + "metadata": { "mapbox:group": "1444855786460.0557" }, + "source": "streets-cn", + "source-layer": "road", + "minzoom": 15, + "filter": [ "all", [ "==", "$type", "Point" ], [ "in", "class", "turning_circle", "turning_loop" ] ], + "layout": { + "icon-image": "turning-circle", + "icon-size": { "base": 1.5, "stops": [ [ 14, 0.095 ], [ 18, 1 ] ] }, + "icon-allow-overlap": true, + "icon-ignore-placement": true, + "icon-padding": 0, + "icon-rotation-alignment": "map" + }, + "paint": {} + }, + { + "id": "bridge-path-bg", + "type": "line", + "metadata": { "mapbox:group": "1444855799204.86" }, + "source": "streets-cn", + "source-layer": "road", + "filter": [ + "all", + [ "==", "$type", "LineString" ], + [ + "all", + [ "!=", "type", "steps" ], + [ "==", "class", "path" ], + [ "==", "structure", "bridge" ] + ] + ], + "layout": { "line-cap": "round", "line-join": "round" }, + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 15, 2 ], [ 18, 7 ] ] }, + "line-dasharray": [ 1, 0 ], + "line-color": "hsl(230, 17%, 82%)", + "line-blur": 0, + "line-opacity": { "base": 1, "stops": [ [ 15, 0 ], [ 15.25, 1 ] ] } + } + }, + { + "id": "bridge-steps-bg", + "type": "line", + "metadata": { "mapbox:group": "1444855799204.86" }, + "source": "streets-cn", + "source-layer": "road", + "filter": [ + "all", + [ "==", "$type", "LineString" ], + [ "all", [ "==", "structure", "bridge" ], [ "==", "type", "steps" ] ] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 15, 2 ], [ 17, 4.6 ], [ 18, 7 ] ] }, + "line-color": "hsl(230, 17%, 82%)", + "line-dasharray": [ 1, 0 ], + "line-opacity": { "base": 1, "stops": [ [ 14, 0 ], [ 14.25, 0.75 ] ] } + } + }, + { + "id": "bridge-pedestrian-case", + "type": "line", + "metadata": { "mapbox:group": "1444855799204.86" }, + "source": "streets-cn", + "source-layer": "road", + "minzoom": 13, + "filter": [ + "all", + [ "==", "$type", "LineString" ], + [ "all", [ "==", "class", "pedestrian" ], [ "==", "structure", "bridge" ] ] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 14, 2 ], [ 18, 14.5 ] ] }, + "line-color": "hsl(230, 24%, 87%)", + "line-gap-width": 0, + "line-opacity": { "base": 1, "stops": [ [ 13.99, 0 ], [ 14, 1 ] ] } + } + }, + { + "id": "bridge-street-low", + "type": "line", + "metadata": { "mapbox:group": "1444855799204.86" }, + "source": "streets-cn", + "source-layer": "road", + "minzoom": 11, + "filter": [ + "all", + [ "==", "$type", "LineString" ], + [ "all", [ "==", "class", "street" ], [ "==", "structure", "bridge" ] ] + ], + "layout": { "line-cap": "round", "line-join": "round" }, + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 12.5, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, + "line-color": "hsl(0, 0%, 100%)", + "line-opacity": { "stops": [ [ 11.5, 0 ], [ 12, 1 ], [ 14, 1 ], [ 14.01, 0 ] ] } + } + }, + { + "id": "bridge-street_limited-low", + "type": "line", + "metadata": { "mapbox:group": "1444855799204.86" }, + "source": "streets-cn", + "source-layer": "road", + "minzoom": 11, + "filter": [ + "all", + [ "==", "$type", "LineString" ], + [ "all", [ "==", "class", "street_limited" ], [ "==", "structure", "bridge" ] ] + ], + "layout": { "line-cap": "round", "line-join": "round" }, + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 12.5, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, + "line-color": "hsl(0, 0%, 100%)", + "line-opacity": { "stops": [ [ 11.5, 0 ], [ 12, 1 ], [ 14, 1 ], [ 14.01, 0 ] ] } + } + }, + { + "id": "bridge-service-link-track-case", + "type": "line", + "metadata": { "mapbox:group": "1444855799204.86" }, + "source": "streets-cn", + "source-layer": "road", + "minzoom": 14, + "filter": [ + "all", + [ "==", "$type", "LineString" ], + [ + "all", + [ "!=", "type", "trunk_link" ], + [ "==", "structure", "bridge" ], + [ "in", "class", "link", "service", "track" ] + ] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 12, 0.75 ], [ 20, 2 ] ] }, + "line-color": "hsl(230, 24%, 87%)", + "line-gap-width": { "base": 1.5, "stops": [ [ 14, 0.5 ], [ 18, 12 ] ] } + } + }, + { + "id": "bridge-street_limited-case", + "type": "line", + "metadata": { "mapbox:group": "1444855799204.86" }, + "source": "streets-cn", + "source-layer": "road", + "minzoom": 11, + "filter": [ + "all", + [ "==", "$type", "LineString" ], + [ "all", [ "==", "class", "street_limited" ], [ "==", "structure", "bridge" ] ] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 12, 0.75 ], [ 20, 2 ] ] }, + "line-color": "hsl(230, 24%, 87%)", + "line-gap-width": { "base": 1.5, "stops": [ [ 13, 0 ], [ 14, 2 ], [ 18, 18 ] ] } + } + }, + { + "id": "bridge-street-case", + "type": "line", + "metadata": { "mapbox:group": "1444855799204.86" }, + "source": "streets-cn", + "source-layer": "road", + "minzoom": 11, + "filter": [ + "all", + [ "==", "$type", "LineString" ], + [ "all", [ "==", "class", "street" ], [ "==", "structure", "bridge" ] ] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 12, 0.75 ], [ 20, 2 ] ] }, + "line-color": "hsl(230, 24%, 87%)", + "line-opacity": { "base": 1, "stops": [ [ 13.99, 0 ], [ 14, 1 ] ] }, + "line-gap-width": { "base": 1.5, "stops": [ [ 13, 0 ], [ 14, 2 ], [ 18, 18 ] ] } + } + }, + { + "id": "bridge-secondary-tertiary-case", + "type": "line", + "metadata": { "mapbox:group": "1444855799204.86" }, + "source": "streets-cn", + "source-layer": "road", + "filter": [ + "all", + [ "==", "$type", "LineString" ], + [ "all", [ "==", "structure", "bridge" ], [ "in", "class", "secondary", "tertiary" ] ] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-width": { "base": 1.2, "stops": [ [ 10, 0.75 ], [ 18, 2 ] ] }, + "line-color": "hsl(230, 24%, 87%)", + "line-gap-width": { "base": 1.5, "stops": [ [ 8.5, 0.5 ], [ 10, 0.75 ], [ 18, 26 ] ] }, + "line-translate": [ 0, 0 ] + } + }, + { + "id": "bridge-primary-case", + "type": "line", + "metadata": { "mapbox:group": "1444855799204.86" }, + "source": "streets-cn", + "source-layer": "road", + "filter": [ + "all", + [ "==", "$type", "LineString" ], + [ "all", [ "==", "class", "primary" ], [ "==", "structure", "bridge" ] ] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 10, 1 ], [ 16, 2 ] ] }, + "line-color": "hsl(230, 24%, 87%)", + "line-gap-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] }, + "line-translate": [ 0, 0 ] + } + }, + { + "id": "bridge-trunk_link-case", + "type": "line", + "metadata": { "mapbox:group": "1444855799204.86" }, + "source": "streets-cn", + "source-layer": "road", + "minzoom": 13, + "filter": [ + "all", + [ "==", "$type", "LineString" ], + [ + "all", + [ "!in", "layer", 2, 3, 4, 5 ], + [ "==", "structure", "bridge" ], + [ "==", "type", "trunk_link" ] + ] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 12, 0.75 ], [ 20, 2 ] ] }, + "line-color": "hsl(0, 0%, 100%)", + "line-gap-width": { "base": 1.5, "stops": [ [ 12, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, + "line-opacity": { "base": 1, "stops": [ [ 10.99, 0 ], [ 11, 1 ] ] } + } + }, + { + "id": "bridge-motorway_link-case", + "type": "line", + "metadata": { "mapbox:group": "1444855799204.86" }, + "source": "streets-cn", + "source-layer": "road", + "minzoom": 13, + "filter": [ + "all", + [ "==", "$type", "LineString" ], + [ + "all", + [ "!in", "layer", 2, 3, 4, 5 ], + [ "==", "class", "motorway_link" ], + [ "==", "structure", "bridge" ] + ] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 12, 0.75 ], [ 20, 2 ] ] }, + "line-color": "hsl(0, 0%, 100%)", + "line-gap-width": { "base": 1.5, "stops": [ [ 12, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, + "line-opacity": 1 + } + }, + { + "id": "bridge-trunk-case", + "type": "line", + "metadata": { "mapbox:group": "1444855799204.86" }, + "source": "streets-cn", + "source-layer": "road", + "filter": [ + "all", + [ "==", "$type", "LineString" ], + [ + "all", + [ "!in", "layer", 2, 3, 4, 5 ], + [ "==", "class", "trunk" ], + [ "==", "structure", "bridge" ] + ] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 10, 1 ], [ 16, 2 ] ] }, + "line-color": "hsl(0, 0%, 100%)", + "line-gap-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] } + } + }, + { + "id": "bridge-motorway-case", + "type": "line", + "metadata": { "mapbox:group": "1444855799204.86" }, + "source": "streets-cn", + "source-layer": "road", + "filter": [ + "all", + [ "==", "$type", "LineString" ], + [ + "all", + [ "!in", "layer", 2, 3, 4, 5 ], + [ "==", "class", "motorway" ], + [ "==", "structure", "bridge" ] + ] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 10, 1 ], [ 16, 2 ] ] }, + "line-color": "hsl(0, 0%, 100%)", + "line-gap-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] } + } + }, + { + "id": "bridge-construction", + "type": "line", + "metadata": { "mapbox:group": "1444855799204.86" }, + "source": "streets-cn", + "source-layer": "road", + "minzoom": 14, + "filter": [ + "all", + [ "==", "$type", "LineString" ], + [ "all", [ "==", "class", "construction" ], [ "==", "structure", "bridge" ] ] + ], + "layout": { "line-join": "miter" }, + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 12.5, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, + "line-color": "hsl(230, 24%, 87%)", + "line-opacity": { "base": 1, "stops": [ [ 13.99, 0 ], [ 14, 1 ] ] }, + "line-dasharray": { + "base": 1, + "stops": [ + [ 14, [ 0.4, 0.8 ] ], + [ 15, [ 0.3, 0.6 ] ], + [ 16, [ 0.2, 0.3 ] ], + [ 17, [ 0.2, 0.25 ] ], + [ 18, [ 0.15, 0.15 ] ] + ] + } + } + }, + { + "id": "bridge-path", + "type": "line", + "metadata": { "mapbox:group": "1444855799204.86" }, + "source": "streets-cn", + "source-layer": "road", + "filter": [ + "all", + [ "==", "$type", "LineString" ], + [ + "all", + [ "!=", "type", "steps" ], + [ "==", "class", "path" ], + [ "==", "structure", "bridge" ] + ] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 15, 1 ], [ 18, 4 ] ] }, + "line-color": "hsl(0, 0%, 100%)", + "line-dasharray": { + "base": 1, + "stops": [ [ 14, [ 1, 0 ] ], [ 15, [ 1.75, 1 ] ], [ 16, [ 1, 0.75 ] ], [ 17, [ 1, 0.5 ] ] ] + }, + "line-opacity": { "base": 1, "stops": [ [ 14, 0 ], [ 14.25, 1 ] ] } + } + }, + { + "id": "bridge-steps", + "metadata": { "mapbox:group": "1444855799204.86" }, + "ref": "bridge-steps-bg", + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 15, 1 ], [ 16, 1.6 ], [ 18, 6 ] ] }, + "line-color": "hsl(0, 0%, 100%)", + "line-dasharray": { + "base": 1, + "stops": [ [ 14, [ 1, 0 ] ], [ 15, [ 1.75, 1 ] ], [ 16, [ 1, 0.75 ] ], [ 17, [ 0.3, 0.3 ] ] ] + }, + "line-opacity": { "base": 1, "stops": [ [ 14, 0 ], [ 14.25, 1 ] ] } + } + }, + { + "id": "bridge-trunk_link", + "type": "line", + "metadata": { "mapbox:group": "1444855799204.86" }, + "source": "streets-cn", + "source-layer": "road", + "minzoom": 13, + "filter": [ + "all", + [ "==", "$type", "LineString" ], + [ + "all", + [ "!in", "layer", 2, 3, 4, 5 ], + [ "==", "structure", "bridge" ], + [ "==", "type", "trunk_link" ] + ] + ], + "layout": { "line-cap": "round", "line-join": "round" }, + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 12, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, + "line-color": "hsl(46, 85%, 67%)" + } + }, + { + "id": "bridge-motorway_link", + "type": "line", + "metadata": { "mapbox:group": "1444855799204.86" }, + "source": "streets-cn", + "source-layer": "road", + "minzoom": 13, + "filter": [ + "all", + [ "==", "$type", "LineString" ], + [ + "all", + [ "!in", "layer", 2, 3, 4, 5 ], + [ "==", "class", "motorway_link" ], + [ "==", "structure", "bridge" ] + ] + ], + "layout": { "line-cap": "round", "line-join": "round" }, + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 12, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, + "line-color": "hsl(26, 100%, 68%)" + } + }, + { + "id": "bridge-pedestrian", + "metadata": { "mapbox:group": "1444855799204.86" }, + "ref": "bridge-pedestrian-case", + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 14, 0.5 ], [ 18, 12 ] ] }, + "line-color": "hsl(0, 0%, 100%)", + "line-opacity": 1, + "line-dasharray": { "base": 1, "stops": [ [ 14, [ 1, 0 ] ], [ 15, [ 1.5, 0.4 ] ], [ 16, [ 1, 0.2 ] ] ] } + } + }, + { + "id": "bridge-service-link-track", + "type": "line", + "metadata": { "mapbox:group": "1444855799204.86" }, + "source": "streets-cn", + "source-layer": "road", + "minzoom": 14, + "filter": [ + "all", + [ "==", "$type", "LineString" ], + [ + "all", + [ "!=", "type", "trunk_link" ], + [ "==", "structure", "bridge" ], + [ "in", "class", "link", "service", "track" ] + ] + ], + "layout": { "line-cap": "round", "line-join": "round" }, + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 14, 0.5 ], [ 18, 12 ] ] }, + "line-color": "hsl(0, 0%, 100%)" + } + }, + { + "id": "bridge-street_limited", + "metadata": { "mapbox:group": "1444855799204.86" }, + "ref": "bridge-street_limited-low", + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 12.5, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, + "line-color": "hsl(35, 14%, 93%)", + "line-opacity": { "base": 1, "stops": [ [ 13.99, 0 ], [ 14, 1 ] ] } + } + }, + { + "id": "bridge-street", + "metadata": { "mapbox:group": "1444855799204.86" }, + "ref": "bridge-street-low", + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 12.5, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, + "line-color": "hsl(0, 0%, 100%)", + "line-opacity": { "base": 1, "stops": [ [ 13.99, 0 ], [ 14, 1 ] ] } + } + }, + { + "id": "bridge-secondary-tertiary", + "type": "line", + "metadata": { "mapbox:group": "1444855799204.86" }, + "source": "streets-cn", + "source-layer": "road", + "filter": [ + "all", + [ "==", "$type", "LineString" ], + [ "all", [ "==", "structure", "bridge" ], [ "in", "type", "secondary", "tertiary" ] ] + ], + "layout": { "line-cap": "round", "line-join": "round" }, + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 8.5, 0.5 ], [ 10, 0.75 ], [ 18, 26 ] ] }, + "line-color": "hsl(0, 0%, 100%)", + "line-opacity": { "base": 1.2, "stops": [ [ 5, 0 ], [ 5.5, 1 ] ] } + } + }, + { + "id": "bridge-primary", + "type": "line", + "metadata": { "mapbox:group": "1444855799204.86" }, + "source": "streets-cn", + "source-layer": "road", + "filter": [ + "all", + [ "==", "$type", "LineString" ], + [ "all", [ "==", "structure", "bridge" ], [ "==", "type", "primary" ] ] + ], + "layout": { "line-cap": "round", "line-join": "round" }, + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] }, + "line-color": "hsl(0, 0%, 100%)", + "line-opacity": 1 + } + }, + { + "id": "bridge-oneway-arrows-blue-minor", + "type": "symbol", + "metadata": { "mapbox:group": "1444855799204.86" }, + "source": "streets-cn", + "source-layer": "road", + "minzoom": 16, + "filter": [ + "all", + [ "==", "$type", "LineString" ], + [ + "all", + [ "==", "oneway", "true" ], + [ "==", "structure", "bridge" ], + [ "in", "class", "link", "path", "pedestrian", "service", "track" ] + ] + ], + "layout": { + "symbol-placement": "line", + "icon-image": { "base": 1, "stops": [ [ 17, "oneway-small" ], [ 18, "oneway-large" ] ] }, + "symbol-spacing": 200, + "icon-rotation-alignment": "map", + "icon-padding": 2 + }, + "paint": {} + }, + { + "id": "bridge-oneway-arrows-blue-major", + "type": "symbol", + "metadata": { "mapbox:group": "1444855799204.86" }, + "source": "streets-cn", + "source-layer": "road", + "minzoom": 15, + "filter": [ + "all", + [ "==", "$type", "LineString" ], + [ + "all", + [ "==", "oneway", "true" ], + [ "==", "structure", "bridge" ], + [ "in", "class", "primary", "secondary", "street", "street_limited", "tertiary" ] + ] + ], + "layout": { + "symbol-placement": "line", + "icon-image": { "base": 1, "stops": [ [ 16, "oneway-small" ], [ 17, "oneway-large" ] ] }, + "symbol-spacing": 200, + "icon-rotation-alignment": "map", + "icon-padding": 2 + }, + "paint": {} + }, + { + "id": "bridge-trunk", + "type": "line", + "metadata": { "mapbox:group": "1444855799204.86" }, + "source": "streets-cn", + "source-layer": "road", + "filter": [ + "all", + [ "==", "$type", "LineString" ], + [ + "all", + [ "!in", "layer", 2, 3, 4, 5 ], + [ "==", "class", "trunk" ], + [ "==", "structure", "bridge" ] + ] + ], + "layout": { "line-cap": "round", "line-join": "round" }, + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] }, + "line-color": "hsl(46, 85%, 67%)" + } + }, + { + "id": "bridge-motorway", + "type": "line", + "metadata": { "mapbox:group": "1444855799204.86" }, + "source": "streets-cn", + "source-layer": "road", + "filter": [ + "all", + [ "==", "$type", "LineString" ], + [ + "all", + [ "!in", "layer", 2, 3, 4, 5 ], + [ "==", "class", "motorway" ], + [ "==", "structure", "bridge" ] + ] + ], + "layout": { "line-cap": "round", "line-join": "round" }, + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] }, + "line-color": "hsl(26, 100%, 68%)" + } + }, + { + "id": "bridge-rail", + "type": "line", + "metadata": { "mapbox:group": "1444855799204.86" }, + "source": "streets-cn", + "source-layer": "road", + "minzoom": 13, + "filter": [ + "all", + [ "==", "$type", "LineString" ], + [ "all", [ "==", "structure", "bridge" ], [ "in", "class", "major_rail", "minor_rail" ] ] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-color": { "stops": [ [ 13, "hsl(50, 17%, 82%)" ], [ 16, "hsl(230, 10%, 74%)" ] ] }, + "line-width": { "base": 1.5, "stops": [ [ 14, 0.5 ], [ 20, 1 ] ] } + } + }, + { + "id": "bridge-rail-tracks", + "metadata": { "mapbox:group": "1444855799204.86" }, + "ref": "bridge-rail", + "paint": { + "line-color": { "stops": [ [ 13, "hsl(50, 17%, 82%)" ], [ 16, "hsl(230, 10%, 74%)" ] ] }, + "line-width": { "base": 1.5, "stops": [ [ 14, 4 ], [ 20, 8 ] ] }, + "line-dasharray": [ 0.1, 15 ], + "line-opacity": { "base": 1, "stops": [ [ 13.75, 0 ], [ 20, 1 ] ] } + } + }, + { + "id": "bridge-trunk_link-2-case", + "type": "line", + "metadata": { "mapbox:group": "1444855799204.86" }, + "source": "streets-cn", + "source-layer": "road", + "minzoom": 13, + "filter": [ + "all", + [ "==", "$type", "LineString" ], + [ + "all", + [ "==", "structure", "bridge" ], + [ "==", "type", "trunk_link" ], + [ ">=", "layer", 2 ] + ] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 12, 0.75 ], [ 20, 2 ] ] }, + "line-color": "hsl(0, 0%, 100%)", + "line-gap-width": { "base": 1.5, "stops": [ [ 12, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, + "line-opacity": { "base": 1, "stops": [ [ 10.99, 0 ], [ 11, 1 ] ] } + } + }, + { + "id": "bridge-motorway_link-2-case", + "type": "line", + "metadata": { "mapbox:group": "1444855799204.86" }, + "source": "streets-cn", + "source-layer": "road", + "minzoom": 13, + "filter": [ + "all", + [ "==", "$type", "LineString" ], + [ + "all", + [ "==", "class", "motorway_link" ], + [ "==", "structure", "bridge" ], + [ ">=", "layer", 2 ] + ] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 12, 0.75 ], [ 20, 2 ] ] }, + "line-color": "hsl(0, 0%, 100%)", + "line-gap-width": { "base": 1.5, "stops": [ [ 12, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, + "line-opacity": 1 + } + }, + { + "id": "bridge-trunk-2-case", + "type": "line", + "metadata": { "mapbox:group": "1444855799204.86" }, + "source": "streets-cn", + "source-layer": "road", + "filter": [ + "all", + [ "==", "$type", "LineString" ], + [ + "all", + [ "==", "class", "trunk" ], + [ "==", "structure", "bridge" ], + [ ">=", "layer", 2 ] + ] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 10, 1 ], [ 16, 2 ] ] }, + "line-color": "hsl(0, 0%, 100%)", + "line-gap-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] } + } + }, + { + "id": "bridge-motorway-2-case", + "type": "line", + "metadata": { "mapbox:group": "1444855799204.86" }, + "source": "streets-cn", + "source-layer": "road", + "filter": [ + "all", + [ "==", "$type", "LineString" ], + [ + "all", + [ "==", "class", "motorway" ], + [ "==", "structure", "bridge" ], + [ ">=", "layer", 2 ] + ] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 10, 1 ], [ 16, 2 ] ] }, + "line-color": "hsl(0, 0%, 100%)", + "line-gap-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] } + } + }, + { + "id": "bridge-trunk_link-2", + "type": "line", + "metadata": { "mapbox:group": "1444855799204.86" }, + "source": "streets-cn", + "source-layer": "road", + "minzoom": 13, + "filter": [ + "all", + [ "==", "$type", "LineString" ], + [ + "all", + [ "==", "structure", "bridge" ], + [ "==", "type", "trunk_link" ], + [ ">=", "layer", 2 ] + ] + ], + "layout": { "line-cap": "round", "line-join": "round" }, + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 12, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, + "line-color": "hsl(46, 85%, 67%)" + } + }, + { + "id": "bridge-motorway_link-2", + "type": "line", + "metadata": { "mapbox:group": "1444855799204.86" }, + "source": "streets-cn", + "source-layer": "road", + "minzoom": 13, + "filter": [ + "all", + [ "==", "$type", "LineString" ], + [ + "all", + [ "==", "class", "motorway_link" ], + [ "==", "structure", "bridge" ], + [ ">=", "layer", 2 ] + ] + ], + "layout": { "line-cap": "round", "line-join": "round" }, + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 12, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, + "line-color": "hsl(26, 100%, 68%)" + } + }, + { + "id": "bridge-trunk-2", + "type": "line", + "metadata": { "mapbox:group": "1444855799204.86" }, + "source": "streets-cn", + "source-layer": "road", + "filter": [ + "all", + [ "==", "$type", "LineString" ], + [ + "all", + [ "==", "class", "trunk" ], + [ "==", "structure", "bridge" ], + [ ">=", "layer", 2 ] + ] + ], + "layout": { "line-cap": "round", "line-join": "round" }, + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] }, + "line-color": "hsl(46, 85%, 67%)" + } + }, + { + "id": "bridge-motorway-2", + "type": "line", + "metadata": { "mapbox:group": "1444855799204.86" }, + "source": "streets-cn", + "source-layer": "road", + "filter": [ + "all", + [ "==", "$type", "LineString" ], + [ + "all", + [ "==", "class", "motorway" ], + [ "==", "structure", "bridge" ], + [ ">=", "layer", 2 ] + ] + ], + "layout": { "line-cap": "round", "line-join": "round" }, + "paint": { + "line-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] }, + "line-color": "hsl(26, 100%, 68%)" + } + }, + { + "id": "bridge-oneway-arrows-white", + "type": "symbol", + "metadata": { "mapbox:group": "1444855799204.86" }, + "source": "streets-cn", + "source-layer": "road", + "minzoom": 16, + "filter": [ + "all", + [ "==", "$type", "LineString" ], + [ + "all", + [ "!in", "type", "primary_link", "secondary_link", "tertiary_link" ], + [ "==", "oneway", "true" ], + [ "==", "structure", "bridge" ], + [ "in", "class", "link", "motorway", "motorway_link", "trunk" ] + ] + ], + "layout": { + "symbol-placement": "line", + "icon-image": { "base": 1, "stops": [ [ 16, "oneway-white-small" ], [ 17, "oneway-white-large" ] ] }, + "symbol-spacing": 200, + "icon-padding": 2 + }, + "paint": {} + }, + { + "id": "aerialway", + "type": "line", + "source": "streets-cn", + "source-layer": "road", + "minzoom": 13, + "filter": [ "all", [ "==", "$type", "LineString" ], [ "==", "class", "aerialway" ] ], + "layout": { "line-join": "round" }, + "paint": { + "line-color": "hsl(230, 10%, 74%)", + "line-width": { "base": 1.5, "stops": [ [ 14, 0.5 ], [ 20, 1 ] ] } + } + }, + { + "id": "admin-3-4-boundaries-bg", + "type": "line", + "metadata": { "mapbox:group": "1444934295202.7542" }, + "source": "streets-cn", + "source-layer": "admin", + "filter": [ "all", [ "==", "maritime", 0 ], [ ">=", "admin_level", 3 ] ], + "layout": { "line-join": "bevel" }, + "paint": { + "line-color": { "base": 1, "stops": [ [ 8, "hsl(35, 12%, 89%)" ], [ 16, "hsl(230, 49%, 90%)" ] ] }, + "line-width": { "base": 1, "stops": [ [ 7, 3.75 ], [ 12, 5.5 ] ] }, + "line-opacity": { "base": 1, "stops": [ [ 7, 0 ], [ 8, 0.75 ] ] }, + "line-dasharray": [ 1, 0 ], + "line-translate": [ 0, 0 ], + "line-blur": { "base": 1, "stops": [ [ 3, 0 ], [ 8, 3 ] ] } + } + }, + { + "id": "admin-2-boundaries-bg", + "type": "line", + "metadata": { "mapbox:group": "1444934295202.7542" }, + "source": "streets-cn", + "source-layer": "admin", + "minzoom": 1, + "filter": [ "all", [ "==", "admin_level", 2 ], [ "==", "maritime", 0 ] ], + "layout": { "line-join": "miter" }, + "paint": { + "line-width": { "base": 1, "stops": [ [ 3, 3.5 ], [ 10, 8 ] ] }, + "line-color": { "base": 1, "stops": [ [ 6, "hsl(35, 12%, 89%)" ], [ 8, "hsl(230, 49%, 90%)" ] ] }, + "line-opacity": { "base": 1, "stops": [ [ 3, 0 ], [ 4, 0.5 ] ] }, + "line-translate": [ 0, 0 ], + "line-blur": { "base": 1, "stops": [ [ 3, 0 ], [ 10, 2 ] ] } + } + }, + { + "id": "admin-3-4-boundaries", + "type": "line", + "metadata": { "mapbox:group": "1444934295202.7542" }, + "source": "streets-cn", + "source-layer": "admin", + "filter": [ "all", [ "==", "maritime", 0 ], [ ">=", "admin_level", 3 ] ], + "layout": { "line-join": "round", "line-cap": "round" }, + "paint": { + "line-dasharray": { "base": 1, "stops": [ [ 6, [ 2, 0 ] ], [ 7, [ 2, 2, 6, 2 ] ] ] }, + "line-width": { "base": 1, "stops": [ [ 7, 0.75 ], [ 12, 1.5 ] ] }, + "line-opacity": { "base": 1, "stops": [ [ 2, 0 ], [ 3, 1 ] ] }, + "line-color": { "base": 1, "stops": [ [ 3, "hsl(230, 14%, 77%)" ], [ 7, "hsl(230, 8%, 62%)" ] ] } + } + }, + { + "id": "admin-2-boundaries", + "type": "line", + "metadata": { "mapbox:group": "1444934295202.7542" }, + "source": "streets-cn", + "source-layer": "admin", + "minzoom": 1, + "filter": [ "all", [ "==", "admin_level", 2 ], [ "==", "disputed", 0 ], [ "==", "maritime", 0 ] ], + "layout": { "line-join": "round", "line-cap": "round" }, + "paint": { + "line-color": "hsl(230, 8%, 51%)", + "line-width": { "base": 1, "stops": [ [ 3, 0.5 ], [ 10, 2 ] ] } + } + }, + { + "id": "admin-2-boundaries-dispute", + "type": "line", + "metadata": { "mapbox:group": "1444934295202.7542" }, + "source": "streets-cn", + "source-layer": "admin", + "minzoom": 1, + "filter": [ "all", [ "==", "admin_level", 2 ], [ "==", "disputed", 1 ], [ "==", "maritime", 0 ] ], + "layout": { "line-join": "round" }, + "paint": { + "line-dasharray": [ 1.5, 1.5 ], + "line-color": "hsl(230, 8%, 51%)", + "line-width": { "base": 1, "stops": [ [ 3, 0.5 ], [ 10, 2 ] ] } + } + }, + { + "id": "housenum-label", + "type": "symbol", + "source": "streets-cn", + "source-layer": "housenum_label", + "minzoom": 17, + "layout": { + "text-field": "{house_num}", + "text-font": [ "DIN Offc Pro Italic", "Noto Sans CJK SC DemiLight", "Arial Unicode MS Regular" ], + "text-padding": 4, + "text-max-width": 7, + "text-size": 9.5 + }, + "paint": { + "text-color": "hsl(35, 2%, 69%)", + "text-halo-color": "hsl(35, 8%, 85%)", + "text-halo-width": 0.5, + "text-halo-blur": 0 + } + }, + { + "id": "waterway-label", + "type": "symbol", + "source": "streets-cn", + "source-layer": "waterway_label", + "minzoom": 12, + "filter": [ "in", "class", "canal", "river" ], + "layout": { + "text-field": "{name_zh}", + "text-font": [ "DIN Offc Pro Italic", "Noto Sans CJK SC DemiLight", "Arial Unicode MS Regular" ], + "symbol-placement": "line", + "text-max-angle": 30, + "text-size": { "base": 1, "stops": [ [ 13, 12 ], [ 18, 16 ] ] } + }, + "paint": { + "text-halo-width": 0.5, + "text-halo-color": "hsl(196, 80%, 70%)", + "text-color": "hsl(230, 48%, 44%)", + "text-halo-blur": 0.5 + } + }, + { + "id": "poi-scalerank4-l15", + "type": "symbol", + "metadata": { "mapbox:group": "1444933456003.5437" }, + "source": "streets-cn", + "source-layer": "poi_label", + "minzoom": 17, + "filter": [ + "all", + [ + "!in", + "maki", + "campsite", + "cemetery", + "dog-park", + "garden", + "golf", + "park", + "picnic-site", + "playground", + "zoo" + ], + [ "==", "scalerank", 4 ], + [ ">=", "localrank", 15 ] + ], + "layout": { + "text-line-height": 1.1, + "text-size": { "base": 1, "stops": [ [ 16, 11 ], [ 20, 13 ] ] }, + "icon-image": "{maki}-11", + "text-max-angle": 38, + "symbol-spacing": 250, + "text-font": [ "DIN Offc Pro Medium", "Noto Sans CJK SC Medium", "Arial Unicode MS Regular" ], + "text-padding": 2, + "text-offset": [ 0, 0.65 ], + "text-rotation-alignment": "viewport", + "text-anchor": "top", + "text-field": "{name_zh}", + "text-max-width": 8 + }, + "paint": { + "text-color": "hsl(26, 25%, 32%)", + "text-halo-color": "hsl(0, 0%, 100%)", + "text-halo-width": 0.5, + "text-halo-blur": 0.5 + } + }, + { + "id": "poi-scalerank4-l1", + "type": "symbol", + "metadata": { "mapbox:group": "1444933456003.5437" }, + "source": "streets-cn", + "source-layer": "poi_label", + "minzoom": 15, + "filter": [ + "all", + [ + "!in", + "maki", + "campsite", + "cemetery", + "dog-park", + "garden", + "golf", + "park", + "picnic-site", + "playground", + "zoo" + ], + [ "<=", "localrank", 14 ], + [ "==", "scalerank", 4 ] + ], + "layout": { + "text-line-height": 1.1, + "text-size": { "base": 1, "stops": [ [ 16, 11 ], [ 20, 13 ] ] }, + "icon-image": "{maki}-11", + "text-max-angle": 38, + "symbol-spacing": 250, + "text-font": [ "DIN Offc Pro Medium", "Noto Sans CJK SC Medium", "Arial Unicode MS Regular" ], + "text-padding": 1, + "text-offset": [ 0, 0.65 ], + "text-rotation-alignment": "viewport", + "text-anchor": "top", + "text-field": "{name_zh}", + "text-max-width": 8 + }, + "paint": { + "text-color": "hsl(26, 25%, 32%)", + "text-halo-color": "hsl(0, 0%, 100%)", + "text-halo-width": 0.5, + "text-halo-blur": 0.5 + } + }, + { + "id": "poi-parks_scalerank4", + "type": "symbol", + "metadata": { "mapbox:group": "1444933456003.5437" }, + "source": "streets-cn", + "source-layer": "poi_label", + "minzoom": 15, + "filter": [ + "all", + [ "==", "scalerank", 4 ], + [ + "in", + "maki", + "campsite", + "cemetery", + "dog-park", + "garden", + "golf", + "park", + "picnic-site", + "playground", + "zoo" + ] + ], + "layout": { + "text-line-height": 1.1, + "text-size": { "base": 1, "stops": [ [ 16, 11 ], [ 20, 13 ] ] }, + "icon-image": "{maki}-11", + "text-max-angle": 38, + "symbol-spacing": 250, + "text-font": [ "DIN Offc Pro Medium", "Noto Sans CJK SC Medium", "Arial Unicode MS Regular" ], + "text-padding": 1, + "text-offset": [ 0, 0.65 ], + "text-rotation-alignment": "viewport", + "text-anchor": "top", + "text-field": "{name_zh}", + "text-max-width": 8 + }, + "paint": { + "text-color": "hsl(100, 100%, 20%)", + "text-halo-color": "hsl(0, 0%, 100%)", + "text-halo-width": 0.5, + "text-halo-blur": 0.5 + } + }, + { + "id": "poi-scalerank3", + "type": "symbol", + "metadata": { "mapbox:group": "1444933372896.5967" }, + "source": "streets-cn", + "source-layer": "poi_label", + "filter": [ + "all", + [ + "!in", + "maki", + "campsite", + "cemetery", + "dog-park", + "garden", + "golf", + "park", + "picnic-site", + "playground", + "zoo" + ], + [ "==", "scalerank", 3 ] + ], + "layout": { + "text-line-height": 1.1, + "text-size": { "base": 1, "stops": [ [ 16, 11 ], [ 20, 13 ] ] }, + "icon-image": "{maki}-11", + "text-max-angle": 38, + "symbol-spacing": 250, + "text-font": [ "DIN Offc Pro Medium", "Noto Sans CJK SC Medium", "Arial Unicode MS Regular" ], + "text-padding": 1, + "text-offset": [ 0, 0.65 ], + "text-rotation-alignment": "viewport", + "text-anchor": "top", + "text-field": "{name_zh}", + "text-max-width": 8 + }, + "paint": { + "text-color": "hsl(26, 25%, 32%)", + "text-halo-color": "hsl(0, 0%, 100%)", + "text-halo-width": 0.5, + "text-halo-blur": 0.5 + } + }, + { + "id": "poi-parks-scalerank3", + "type": "symbol", + "metadata": { "mapbox:group": "1444933372896.5967" }, + "source": "streets-cn", + "source-layer": "poi_label", + "filter": [ + "all", + [ "==", "scalerank", 3 ], + [ + "in", + "maki", + "campsite", + "cemetery", + "dog-park", + "garden", + "golf", + "park", + "picnic-site", + "playground", + "zoo" + ] + ], + "layout": { + "text-line-height": 1.1, + "text-size": { "base": 1, "stops": [ [ 16, 11 ], [ 20, 13 ] ] }, + "icon-image": "{maki}-11", + "text-max-angle": 38, + "symbol-spacing": 250, + "text-font": [ "DIN Offc Pro Medium", "Noto Sans CJK SC Medium", "Arial Unicode MS Regular" ], + "text-padding": 2, + "text-offset": [ 0, 0.65 ], + "text-rotation-alignment": "viewport", + "text-anchor": "top", + "text-field": "{name_zh}", + "text-max-width": 8 + }, + "paint": { + "text-color": "hsl(100, 100%, 20%)", + "text-halo-color": "hsl(0, 0%, 100%)", + "text-halo-width": 0.5, + "text-halo-blur": 0.5 + } + }, + { + "id": "road-label-small", + "type": "symbol", + "metadata": { "mapbox:group": "1444933721429.3076" }, + "source": "streets-cn", + "source-layer": "road_label", + "minzoom": 15, + "filter": [ + "all", + [ + "!in", + "class", + "link", + "motorway", + "pedestrian", + "primary", + "secondary", + "street", + "street_limited", + "tertiary", + "trunk" + ], + [ "==", "$type", "LineString" ] + ], + "layout": { + "text-size": { "base": 1, "stops": [ [ 15, 10 ], [ 20, 13 ] ] }, + "text-max-angle": 30, + "symbol-spacing": 250, + "text-font": [ "DIN Offc Pro Regular", "Noto Sans CJK SC DemiLight", "Arial Unicode MS Regular" ], + "symbol-placement": "line", + "text-padding": 1, + "text-rotation-alignment": "map", + "text-field": "{name_zh}" + }, + "paint": { + "text-color": "hsl(0, 0%, 0%)", + "text-halo-color": "hsl(0, 0%, 100%)", + "text-halo-width": 1.25, + "text-halo-blur": 1 + } + }, + { + "id": "road-label-medium", + "type": "symbol", + "metadata": { "mapbox:group": "1444933721429.3076" }, + "source": "streets-cn", + "source-layer": "road_label", + "minzoom": 11, + "filter": [ + "all", + [ "==", "$type", "LineString" ], + [ "in", "class", "link", "pedestrian", "street", "street_limited" ] + ], + "layout": { + "text-size": { "base": 1, "stops": [ [ 11, 10 ], [ 20, 14 ] ] }, + "text-max-angle": 30, + "symbol-spacing": 250, + "text-font": [ "DIN Offc Pro Regular", "Noto Sans CJK SC DemiLight", "Arial Unicode MS Regular" ], + "symbol-placement": "line", + "text-padding": 1, + "text-rotation-alignment": "map", + "text-field": "{name_zh}" + }, + "paint": { + "text-color": "hsl(0, 0%, 0%)", + "text-halo-color": "hsl(0, 0%, 100%)", + "text-halo-width": 1 + } + }, + { + "id": "road-label-large", + "type": "symbol", + "metadata": { "mapbox:group": "1444933721429.3076" }, + "source": "streets-cn", + "source-layer": "road_label", + "filter": [ "in", "class", "motorway", "primary", "secondary", "tertiary", "trunk" ], + "layout": { + "text-size": { "base": 1, "stops": [ [ 9, 10 ], [ 20, 16 ] ] }, + "text-max-angle": 30, + "symbol-spacing": 250, + "text-font": [ "DIN Offc Pro Regular", "Noto Sans CJK SC DemiLight", "Arial Unicode MS Regular" ], + "symbol-placement": "line", + "text-padding": 1, + "text-rotation-alignment": "map", + "text-field": "{name_zh}" + }, + "paint": { + "text-color": "hsl(0, 0%, 0%)", + "text-halo-color": "hsla(0, 0%, 100%, 0.75)", + "text-halo-width": 1, + "text-halo-blur": 1 + } + }, + { + "id": "road-shields-black", + "type": "symbol", + "metadata": { "mapbox:group": "1444933575858.6992" }, + "source": "streets-cn", + "source-layer": "road_label", + "filter": [ + "all", + [ + "!in", + "shield", + "at-expressway", + "at-motorway", + "at-state-b", + "bg-motorway", + "bg-national", + "ch-main", + "ch-motorway", + "cz-motorway", + "cz-road", + "de-motorway", + "e-road", + "fi-main", + "gr-motorway", + "gr-national", + "hr-motorway", + "hr-state", + "hu-main", + "hu-motorway", + "nz-state", + "pl-expressway", + "pl-motorway", + "pl-national", + "ro-county", + "ro-motorway", + "ro-national", + "rs-motorway", + "rs-state-1b", + "se-main", + "si-expressway", + "si-motorway", + "sk-highway", + "sk-road", + "us-interstate", + "us-interstate-business", + "us-interstate-duplex", + "us-interstate-truck", + "za-metropolitan", + "za-national", + "za-provincial", + "za-regional" + ], + [ "<=", "reflen", 6 ] + ], + "layout": { + "text-size": 9, + "icon-image": "{shield}-{reflen}", + "icon-rotation-alignment": "viewport", + "text-max-angle": 38, + "symbol-spacing": { "base": 1, "stops": [ [ 11, 150 ], [ 14, 200 ] ] }, + "text-font": [ "DIN Offc Pro Bold", "Noto Sans CJK SC Medium", "Arial Unicode MS Bold" ], + "symbol-placement": { "base": 1, "stops": [ [ 10, "point" ], [ 11, "line" ] ] }, + "text-padding": 2, + "text-rotation-alignment": "viewport", + "text-field": "{ref}", + "text-letter-spacing": 0.05, + "icon-padding": 2 + }, + "paint": { + "text-color": "hsl(0, 0%, 7%)", + "icon-halo-color": "rgba(0, 0, 0, 1)", + "icon-halo-width": 1, + "text-opacity": 1, + "icon-color": "white", + "text-halo-color": "hsl(0, 0%, 100%)", + "text-halo-width": 0 + } + }, + { + "id": "road-shields-white", + "type": "symbol", + "metadata": { "mapbox:group": "1444933575858.6992" }, + "source": "streets-cn", + "source-layer": "road_label", + "filter": [ + "all", + [ "<=", "reflen", 6 ], + [ + "in", + "shield", + "at-expressway", + "at-motorway", + "at-state-b", + "bg-motorway", + "bg-national", + "ch-main", + "ch-motorway", + "cz-motorway", + "cz-road", + "de-motorway", + "e-road", + "fi-main", + "gr-motorway", + "gr-national", + "hr-motorway", + "hr-state", + "hu-main", + "hu-motorway", + "nz-state", + "pl-expressway", + "pl-motorway", + "pl-national", + "ro-county", + "ro-motorway", + "ro-national", + "rs-motorway", + "rs-state-1b", + "se-main", + "si-expressway", + "si-motorway", + "sk-highway", + "sk-road", + "us-interstate", + "us-interstate-business", + "us-interstate-duplex", + "us-interstate-truck", + "za-metropolitan", + "za-national", + "za-provincial", + "za-regional" + ] + ], + "layout": { + "text-size": 9, + "icon-image": "{shield}-{reflen}", + "icon-rotation-alignment": "viewport", + "text-max-angle": 38, + "symbol-spacing": { "base": 1, "stops": [ [ 11, 150 ], [ 14, 200 ] ] }, + "text-font": [ "DIN Offc Pro Bold", "Noto Sans CJK SC Medium", "Arial Unicode MS Bold" ], + "symbol-placement": { "base": 1, "stops": [ [ 10, "point" ], [ 11, "line" ] ] }, + "text-padding": 2, + "text-rotation-alignment": "viewport", + "text-field": "{ref}", + "text-letter-spacing": 0.05, + "icon-padding": 2 + }, + "paint": { + "text-color": "hsl(0, 0%, 100%)", + "icon-halo-color": "rgba(0, 0, 0, 1)", + "icon-halo-width": 1, + "text-opacity": 1, + "icon-color": "white", + "text-halo-color": "hsl(0, 0%, 100%)", + "text-halo-width": 0 + } + }, + { + "id": "motorway-junction", + "type": "symbol", + "metadata": { "mapbox:group": "1444933575858.6992" }, + "source": "streets-cn", + "source-layer": "motorway_junction", + "minzoom": 14, + "filter": [ ">", "reflen", 0 ], + "layout": { + "text-field": "{ref}", + "text-size": 9, + "icon-image": "motorway-exit-{reflen}", + "text-font": [ "DIN Offc Pro Bold", "Noto Sans CJK SC Medium", "Arial Unicode MS Bold" ] + }, + "paint": { "text-color": "hsl(0, 0%, 100%)", "text-translate": [ 0, 0 ] } + }, + { + "id": "poi-scalerank2", + "type": "symbol", + "metadata": { "mapbox:group": "1444933358918.2366" }, + "source": "streets-cn", + "source-layer": "poi_label", + "filter": [ + "all", + [ + "!in", + "maki", + "campsite", + "cemetery", + "dog-park", + "garden", + "golf", + "park", + "picnic-site", + "playground", + "zoo" + ], + [ "==", "scalerank", 2 ] + ], + "layout": { + "text-line-height": 1.1, + "text-size": { "base": 1, "stops": [ [ 14, 11 ], [ 20, 14 ] ] }, + "icon-image": { "stops": [ [ 14, "{maki}-11" ], [ 15, "{maki}-15" ] ] }, + "text-max-angle": 38, + "symbol-spacing": 250, + "text-font": [ "DIN Offc Pro Medium", "Noto Sans CJK SC Medium", "Arial Unicode MS Regular" ], + "text-padding": 2, + "text-offset": [ 0, 0.65 ], + "text-rotation-alignment": "viewport", + "text-anchor": "top", + "text-field": "{name_zh}", + "text-max-width": 8 + }, + "paint": { + "text-color": "hsl(26, 25%, 32%)", + "text-halo-color": "hsl(0, 0%, 100%)", + "text-halo-width": 0.5, + "text-halo-blur": 0.5 + } + }, + { + "id": "poi-parks-scalerank2", + "type": "symbol", + "metadata": { "mapbox:group": "1444933358918.2366" }, + "source": "streets-cn", + "source-layer": "poi_label", + "filter": [ + "all", + [ "==", "scalerank", 2 ], + [ + "in", + "maki", + "campsite", + "cemetery", + "dog-park", + "garden", + "golf", + "park", + "picnic-site", + "playground", + "zoo" + ] + ], + "layout": { + "text-line-height": 1.1, + "text-size": { "base": 1, "stops": [ [ 14, 11 ], [ 20, 14 ] ] }, + "icon-image": { "stops": [ [ 14, "{maki}-11" ], [ 15, "{maki}-15" ] ] }, + "text-max-angle": 38, + "symbol-spacing": 250, + "text-font": [ "DIN Offc Pro Medium", "Noto Sans CJK SC Medium", "Arial Unicode MS Regular" ], + "text-padding": 2, + "text-offset": [ 0, 0.65 ], + "text-rotation-alignment": "viewport", + "text-anchor": "top", + "text-field": "{name_zh}", + "text-max-width": 8 + }, + "paint": { + "text-color": "hsl(100, 100%, 20%)", + "text-halo-color": "hsl(0, 0%, 100%)", + "text-halo-width": 0.5, + "text-halo-blur": 0.5 + } + }, + { + "id": "rail-label", + "type": "symbol", + "source": "streets-cn", + "source-layer": "rail_station_label", + "minzoom": 12, + "filter": [ "!=", "maki", "entrance" ], + "layout": { + "text-line-height": 1.1, + "text-size": { "base": 1, "stops": [ [ 16, 11 ], [ 20, 13 ] ] }, + "icon-image": "{network}", + "symbol-spacing": 250, + "text-font": [ "DIN Offc Pro Medium", "Noto Sans CJK SC Medium", "Arial Unicode MS Regular" ], + "text-offset": [ 0, 0.85 ], + "text-rotation-alignment": "viewport", + "text-anchor": "top", + "text-field": { "base": 1, "stops": [ [ 0, "" ], [ 13, "{name_zh}" ] ] }, + "icon-padding": 0, + "text-max-width": 7 + }, + "paint": { + "text-color": "hsl(230, 48%, 44%)", + "text-halo-color": "hsl(0, 0%, 100%)", + "text-halo-width": 0.5, + "icon-halo-width": 4, + "icon-halo-color": "#fff", + "text-opacity": { "base": 1, "stops": [ [ 13.99, 0 ], [ 14, 1 ] ] }, + "text-halo-blur": 0.5 + } + }, + { + "id": "water-label-sm", + "type": "symbol", + "metadata": { "mapbox:group": "1444933808272.805" }, + "source": "streets-cn", + "source-layer": "water_label", + "minzoom": 15, + "filter": [ "<=", "area", 10000 ], + "layout": { + "text-field": "{name_zh}", + "text-font": [ "DIN Offc Pro Italic", "Noto Sans CJK SC DemiLight", "Arial Unicode MS Regular" ], + "text-max-width": 7, + "text-size": { "base": 1, "stops": [ [ 16, 13 ], [ 20, 16 ] ] } + }, + "paint": { "text-color": "hsl(230, 48%, 44%)" } + }, + { + "id": "water-label", + "type": "symbol", + "metadata": { "mapbox:group": "1444933808272.805" }, + "source": "streets-cn", + "source-layer": "water_label", + "minzoom": 5, + "filter": [ ">", "area", 10000 ], + "layout": { + "text-field": "{name_zh}", + "text-font": [ "DIN Offc Pro Italic", "Noto Sans CJK SC DemiLight", "Arial Unicode MS Regular" ], + "text-max-width": 7, + "text-size": { "base": 1, "stops": [ [ 13, 13 ], [ 18, 18 ] ] } + }, + "paint": { "text-color": "hsl(230, 48%, 44%)" } + }, + { + "id": "place-residential", + "type": "symbol", + "source": "streets-cn", + "source-layer": "place_label", + "maxzoom": 18, + "filter": [ + "all", + [ "all", [ "<=", "localrank", 10 ], [ "==", "type", "residential" ] ], + [ "in", "$type", "LineString", "Point", "Polygon" ] + ], + "layout": { + "text-line-height": 1.2, + "text-size": { "base": 1, "stops": [ [ 10, 11 ], [ 18, 14 ] ] }, + "text-max-angle": 38, + "symbol-spacing": 250, + "text-font": [ "DIN Offc Pro Regular", "Noto Sans CJK SC DemiLight", "Arial Unicode MS Regular" ], + "text-padding": 2, + "text-offset": [ 0, 0 ], + "text-rotation-alignment": "viewport", + "text-field": "{name_zh}", + "text-max-width": 7 + }, + "paint": { + "text-color": "hsl(26, 25%, 32%)", + "text-halo-color": "hsl(0, 0%, 100%)", + "text-halo-width": 1, + "text-halo-blur": 0.5 + } + }, + { + "id": "poi-parks-scalerank1", + "type": "symbol", + "metadata": { "mapbox:group": "1444933322393.2852" }, + "source": "streets-cn", + "source-layer": "poi_label", + "filter": [ + "all", + [ "<=", "scalerank", 1 ], + [ + "in", + "maki", + "campsite", + "cemetery", + "dog-park", + "garden", + "golf", + "park", + "picnic-site", + "playground", + "zoo" + ] + ], + "layout": { + "text-line-height": 1.1, + "text-size": { "base": 1, "stops": [ [ 10, 11 ], [ 18, 14 ] ] }, + "icon-image": { "stops": [ [ 13, "{maki}-11" ], [ 14, "{maki}-15" ] ] }, + "text-max-angle": 38, + "symbol-spacing": 250, + "text-font": [ "DIN Offc Pro Medium", "Noto Sans CJK SC Medium", "Arial Unicode MS Regular" ], + "text-padding": 2, + "text-offset": [ 0, 0.65 ], + "text-rotation-alignment": "viewport", + "text-anchor": "top", + "text-field": "{name_zh}", + "text-max-width": 8 + }, + "paint": { + "text-color": "hsl(100, 100%, 20%)", + "text-halo-color": "hsl(0, 0%, 100%)", + "text-halo-width": 0.5, + "text-halo-blur": 0.5 + } + }, + { + "id": "poi-scalerank1", + "type": "symbol", + "metadata": { "mapbox:group": "1444933322393.2852" }, + "source": "streets-cn", + "source-layer": "poi_label", + "filter": [ + "all", + [ + "!in", + "maki", + "campsite", + "cemetery", + "dog-park", + "garden", + "golf", + "park", + "picnic-site", + "playground", + "zoo" + ], + [ "<=", "scalerank", 1 ] + ], + "layout": { + "text-line-height": 1.1, + "text-size": { "base": 1, "stops": [ [ 10, 11 ], [ 18, 14 ] ] }, + "icon-image": { "stops": [ [ 13, "{maki}-11" ], [ 14, "{maki}-15" ] ] }, + "text-max-angle": 38, + "symbol-spacing": 250, + "text-font": [ "DIN Offc Pro Medium", "Noto Sans CJK SC Medium", "Arial Unicode MS Regular" ], + "text-padding": 2, + "text-offset": [ 0, 0.65 ], + "text-rotation-alignment": "viewport", + "text-anchor": "top", + "text-field": "{name_zh}", + "text-max-width": 8 + }, + "paint": { + "text-color": "hsl(26, 25%, 32%)", + "text-halo-color": "hsl(0, 0%, 100%)", + "text-halo-width": 0.5, + "text-halo-blur": 0.5 + } + }, + { + "id": "airport-label", + "type": "symbol", + "source": "streets-cn", + "source-layer": "airport_label", + "minzoom": 9, + "filter": [ "<=", "scalerank", 2 ], + "layout": { + "text-line-height": 1.1, + "text-size": { "base": 1, "stops": [ [ 10, 12 ], [ 18, 18 ] ] }, + "icon-image": { "stops": [ [ 12, "{maki}-11" ], [ 13, "{maki}-15" ] ] }, + "symbol-spacing": 250, + "text-font": [ "DIN Offc Pro Medium", "Noto Sans CJK SC Medium", "Arial Unicode MS Regular" ], + "text-padding": 2, + "text-offset": [ 0, 0.75 ], + "text-rotation-alignment": "viewport", + "text-anchor": "top", + "text-field": { "stops": [ [ 11, "{ref}" ], [ 12, "{name_zh}" ] ] }, + "text-max-width": 9 + }, + "paint": { + "text-color": "hsl(230, 48%, 44%)", + "text-halo-color": "hsl(0, 0%, 100%)", + "text-halo-width": 0.5, + "text-halo-blur": 0.5 + } + }, + { + "id": "place-islet-archipelago-aboriginal", + "type": "symbol", + "source": "streets-cn", + "source-layer": "place_label", + "maxzoom": 16, + "filter": [ "in", "type", "aboriginal_lands", "archipelago", "islet" ], + "layout": { + "text-line-height": 1.2, + "text-size": { "base": 1, "stops": [ [ 10, 11 ], [ 18, 16 ] ] }, + "text-max-angle": 38, + "symbol-spacing": 250, + "text-font": [ "DIN Offc Pro Regular", "Noto Sans CJK SC DemiLight", "Arial Unicode MS Regular" ], + "text-padding": 2, + "text-offset": [ 0, 0 ], + "text-rotation-alignment": "viewport", + "text-field": "{name_zh}", + "text-max-width": 8 + }, + "paint": { + "text-color": "hsl(230, 29%, 35%)", + "text-halo-color": "hsl(0, 0%, 100%)", + "text-halo-width": 1 + } + }, + { + "id": "place-neighbourhood", + "type": "symbol", + "source": "streets-cn", + "source-layer": "place_label", + "minzoom": 10, + "maxzoom": 16, + "filter": [ "==", "type", "neighbourhood" ], + "layout": { + "text-field": "{name_zh}", + "text-transform": "uppercase", + "text-size": { "base": 1, "stops": [ [ 12, 11 ], [ 16, 16 ] ] }, + "text-max-width": 7, + "text-font": [ "DIN Offc Pro Regular", "Noto Sans CJK SC DemiLight", "Arial Unicode MS Regular" ], + "text-padding": 3 + }, + "paint": { + "text-halo-color": "hsl(0, 0%, 100%)", + "text-halo-width": 1, + "text-color": "hsl(230, 29%, 35%)", + "text-halo-blur": 0.5 + } + }, + { + "id": "place-suburb", + "type": "symbol", + "source": "streets-cn", + "source-layer": "place_label", + "minzoom": 10, + "maxzoom": 16, + "filter": [ "==", "type", "suburb" ], + "layout": { + "text-field": "{name_zh}", + "text-transform": "uppercase", + "text-font": [ "DIN Offc Pro Regular", "Noto Sans CJK SC DemiLight", "Arial Unicode MS Regular" ], + "text-size": { "base": 1, "stops": [ [ 11, 11 ], [ 15, 18 ] ] }, + "text-max-width": 7, + "text-padding": 3 + }, + "paint": { + "text-halo-color": "hsl(0, 0%, 100%)", + "text-halo-width": 1, + "text-color": "hsl(230, 29%, 35%)", + "text-halo-blur": 0.5 + } + }, + { + "id": "place-hamlet", + "type": "symbol", + "source": "streets-cn", + "source-layer": "place_label", + "minzoom": 10, + "maxzoom": 16, + "filter": [ "==", "type", "hamlet" ], + "layout": { + "text-field": "{name_zh}", + "text-font": [ "DIN Offc Pro Regular", "Noto Sans CJK SC DemiLight", "Arial Unicode MS Regular" ], + "text-size": { "base": 1, "stops": [ [ 12, 11.5 ], [ 15, 16 ] ] } + }, + "paint": { + "text-halo-color": "hsl(0, 0%, 100%)", + "text-halo-width": 1.25, + "text-color": "hsl(0, 0%, 0%)" + } + }, + { + "id": "place-village", + "type": "symbol", + "source": "streets-cn", + "source-layer": "place_label", + "minzoom": 8, + "maxzoom": 15, + "filter": [ "==", "type", "village" ], + "layout": { + "text-field": "{name_zh}", + "text-font": [ "DIN Offc Pro Regular", "Noto Sans CJK SC DemiLight", "Arial Unicode MS Regular" ], + "text-max-width": 7, + "text-size": { "base": 1, "stops": [ [ 10, 11.5 ], [ 16, 18 ] ] } + }, + "paint": { + "text-halo-color": "hsl(0, 0%, 100%)", + "text-halo-width": 1.25, + "text-color": "hsl(0, 0%, 0%)" + } + }, + { + "id": "place-town", + "type": "symbol", + "source": "streets-cn", + "source-layer": "place_label", + "minzoom": 6, + "maxzoom": 15, + "filter": [ "==", "type", "town" ], + "layout": { + "icon-image": "dot-9", + "text-font": { + "base": 1, + "stops": [ + [ + 11, + [ "DIN Offc Pro Regular", "Noto Sans CJK SC DemiLight", "Arial Unicode MS Regular" ] + ], + [ + 12, + [ "DIN Offc Pro Medium", "Noto Sans CJK SC Medium", "Arial Unicode MS Regular" ] + ] + ] + }, + "text-offset": { "base": 1, "stops": [ [ 7, [ 0, -0.25 ] ], [ 8, [ 0, 0 ] ] ] }, + "text-anchor": { "base": 1, "stops": [ [ 7, "bottom" ], [ 8, "center" ] ] }, + "text-field": "{name_zh}", + "text-max-width": 7, + "text-size": { "base": 1, "stops": [ [ 7, 11.5 ], [ 15, 20 ] ] } + }, + "paint": { + "text-color": "hsl(0, 0%, 0%)", + "text-halo-color": "hsl(0, 0%, 100%)", + "text-halo-width": 1.25, + "icon-opacity": { "base": 1, "stops": [ [ 7.99, 1 ], [ 8, 0 ] ] } + } + }, + { + "id": "place-island", + "type": "symbol", + "source": "streets-cn", + "source-layer": "place_label", + "maxzoom": 16, + "filter": [ "==", "type", "island" ], + "layout": { + "text-line-height": 1.2, + "text-size": { "base": 1, "stops": [ [ 10, 11 ], [ 18, 16 ] ] }, + "text-max-angle": 38, + "symbol-spacing": 250, + "text-font": [ "DIN Offc Pro Regular", "Noto Sans CJK SC DemiLight", "Arial Unicode MS Regular" ], + "text-padding": 2, + "text-offset": [ 0, 0 ], + "text-rotation-alignment": "viewport", + "text-field": "{name_zh}", + "text-max-width": 7 + }, + "paint": { + "text-color": "hsl(230, 29%, 35%)", + "text-halo-color": "hsl(0, 0%, 100%)", + "text-halo-width": 1 + } + }, + { + "id": "place-city-sm", + "type": "symbol", + "metadata": { "mapbox:group": "1444862510685.128" }, + "source": "streets-cn", + "source-layer": "place_label", + "maxzoom": 14, + "filter": [ "all", [ "!in", "scalerank", 0, 1, 2, 3, 4, 5 ], [ "==", "type", "city" ] ], + "layout": { + "text-size": { "base": 1, "stops": [ [ 6, 12 ], [ 14, 22 ] ] }, + "icon-image": "dot-9", + "text-font": { + "base": 1, + "stops": [ + [ + 7, + [ "DIN Offc Pro Regular", "Noto Sans CJK SC DemiLight", "Arial Unicode MS Regular" ] + ], + [ + 8, + [ "DIN Offc Pro Medium", "Noto Sans CJK SC Medium", "Arial Unicode MS Regular" ] + ] + ] + }, + "text-offset": { "base": 1, "stops": [ [ 7.99, [ 0, -0.3 ] ], [ 8, [ 0, 0 ] ] ] }, + "text-anchor": { "base": 1, "stops": [ [ 7, "bottom" ], [ 8, "center" ] ] }, + "text-field": "{name_zh}", + "text-max-width": 7 + }, + "paint": { + "text-color": "hsl(0, 0%, 0%)", + "text-halo-color": "hsl(0, 0%, 100%)", + "text-halo-width": 1.25, + "icon-opacity": { "base": 1, "stops": [ [ 7.99, 1 ], [ 8, 0 ] ] } + } + }, + { + "id": "place-city-md-s", + "type": "symbol", + "metadata": { "mapbox:group": "1444862510685.128" }, + "source": "streets-cn", + "source-layer": "place_label", + "maxzoom": 14, + "filter": [ + "all", + [ "==", "type", "city" ], + [ "in", "ldir", "E", "S", "SE", "SW" ], + [ "in", "scalerank", 3, 4, 5 ] + ], + "layout": { + "text-field": "{name_zh}", + "icon-image": "dot-10", + "text-anchor": { "base": 1, "stops": [ [ 7, "top" ], [ 8, "center" ] ] }, + "text-offset": { "base": 1, "stops": [ [ 7.99, [ 0, 0.1 ] ], [ 8, [ 0, 0 ] ] ] }, + "text-font": { + "base": 1, + "stops": [ + [ + 7, + [ "DIN Offc Pro Regular", "Noto Sans CJK SC DemiLight", "Arial Unicode MS Regular" ] + ], + [ + 8, + [ "DIN Offc Pro Medium", "Noto Sans CJK SC Medium", "Arial Unicode MS Regular" ] + ] + ] + }, + "text-size": { "base": 0.9, "stops": [ [ 5, 12 ], [ 12, 22 ] ] } + }, + "paint": { + "text-halo-width": 1, + "text-halo-color": "hsl(0, 0%, 100%)", + "text-color": "hsl(0, 0%, 0%)", + "text-halo-blur": 1, + "icon-opacity": { "base": 1, "stops": [ [ 7.99, 1 ], [ 8, 0 ] ] } + } + }, + { + "id": "place-city-md-n", + "type": "symbol", + "metadata": { "mapbox:group": "1444862510685.128" }, + "source": "streets-cn", + "source-layer": "place_label", + "maxzoom": 14, + "filter": [ + "all", + [ "==", "type", "city" ], + [ "in", "ldir", "N", "NE", "NW", "W" ], + [ "in", "scalerank", 3, 4, 5 ] + ], + "layout": { + "icon-image": "dot-10", + "text-font": { + "base": 1, + "stops": [ + [ + 7, + [ "DIN Offc Pro Regular", "Noto Sans CJK SC DemiLight", "Arial Unicode MS Regular" ] + ], + [ + 8, + [ "DIN Offc Pro Medium", "Noto Sans CJK SC Medium", "Arial Unicode MS Regular" ] + ] + ] + }, + "text-offset": { "base": 1, "stops": [ [ 7.99, [ 0, -0.35 ] ], [ 8, [ 0, 0 ] ] ] }, + "text-anchor": { "base": 1, "stops": [ [ 7, "bottom" ], [ 8, "center" ] ] }, + "text-field": "{name_zh}", + "text-max-width": 7, + "text-size": { "base": 0.9, "stops": [ [ 5, 12 ], [ 12, 22 ] ] } + }, + "paint": { + "text-color": "hsl(0, 0%, 0%)", + "text-halo-color": "hsl(0, 0%, 100%)", + "text-halo-width": 1, + "icon-opacity": { "base": 1, "stops": [ [ 7.99, 1 ], [ 8, 0 ] ] }, + "text-halo-blur": 1 + } + }, + { + "id": "place-city-lg-s", + "type": "symbol", + "metadata": { "mapbox:group": "1444862510685.128" }, + "source": "streets-cn", + "source-layer": "place_label", + "minzoom": 1, + "maxzoom": 14, + "filter": [ + "all", + [ "<=", "scalerank", 2 ], + [ "==", "type", "city" ], + [ "in", "ldir", "E", "S", "SE", "SW" ] + ], + "layout": { + "icon-image": "dot-11", + "text-font": { + "base": 1, + "stops": [ + [ + 7, + [ "DIN Offc Pro Regular", "Noto Sans CJK SC DemiLight", "Arial Unicode MS Regular" ] + ], + [ + 8, + [ "DIN Offc Pro Medium", "Noto Sans CJK SC Medium", "Arial Unicode MS Regular" ] + ] + ] + }, + "text-offset": { "base": 1, "stops": [ [ 7.99, [ 0, 0.15 ] ], [ 8, [ 0, 0 ] ] ] }, + "text-anchor": { "base": 1, "stops": [ [ 7, "top" ], [ 8, "center" ] ] }, + "text-field": "{name_zh}", + "text-max-width": 7, + "text-size": { "base": 0.9, "stops": [ [ 4, 12 ], [ 10, 22 ] ] } + }, + "paint": { + "text-color": "hsl(0, 0%, 0%)", + "text-halo-color": "hsl(0, 0%, 100%)", + "text-halo-width": 1, + "icon-opacity": { "base": 1, "stops": [ [ 7.99, 1 ], [ 8, 0 ] ] }, + "text-halo-blur": 1 + } + }, + { + "id": "place-city-lg-n", + "type": "symbol", + "metadata": { "mapbox:group": "1444862510685.128" }, + "source": "streets-cn", + "source-layer": "place_label", + "minzoom": 1, + "maxzoom": 14, + "filter": [ + "all", + [ "<=", "scalerank", 2 ], + [ "==", "type", "city" ], + [ "in", "ldir", "N", "NE", "NW", "W" ] + ], + "layout": { + "icon-image": "dot-11", + "text-font": { + "base": 1, + "stops": [ + [ + 7, + [ "DIN Offc Pro Regular", "Noto Sans CJK SC DemiLight", "Arial Unicode MS Regular" ] + ], + [ + 8, + [ "DIN Offc Pro Medium", "Noto Sans CJK SC Medium", "Arial Unicode MS Regular" ] + ] + ] + }, + "text-offset": { "base": 1, "stops": [ [ 7.99, [ 0, -0.35 ] ], [ 8, [ 0, 0 ] ] ] }, + "text-anchor": { "base": 1, "stops": [ [ 7, "bottom" ], [ 8, "center" ] ] }, + "text-field": "{name_zh}", + "text-max-width": 7, + "text-size": { "base": 0.9, "stops": [ [ 4, 12 ], [ 10, 22 ] ] } + }, + "paint": { + "text-color": "hsl(0, 0%, 0%)", + "text-opacity": 1, + "text-halo-color": "hsl(0, 0%, 100%)", + "text-halo-width": 1, + "icon-opacity": { "base": 1, "stops": [ [ 7.99, 1 ], [ 8, 0 ] ] }, + "text-halo-blur": 1 + } + }, + { + "id": "marine-label-sm-ln", + "type": "symbol", + "metadata": { "mapbox:group": "1444856087950.3635" }, + "source": "streets-cn", + "source-layer": "marine_label", + "minzoom": 3, + "maxzoom": 10, + "filter": [ "all", [ "==", "$type", "LineString" ], [ ">=", "labelrank", 4 ] ], + "layout": { + "text-line-height": 1.1, + "text-size": { "base": 1, "stops": [ [ 3, 12 ], [ 6, 16 ] ] }, + "symbol-spacing": { "base": 1, "stops": [ [ 4, 100 ], [ 6, 400 ] ] }, + "text-font": [ "DIN Offc Pro Italic", "Noto Sans CJK SC DemiLight", "Arial Unicode MS Regular" ], + "symbol-placement": "line", + "text-field": "{name_zh}", + "text-letter-spacing": 0.1, + "text-max-width": 5 + }, + "paint": { "text-color": "hsl(205, 83%, 88%)" } + }, + { + "id": "marine-label-sm-pt", + "type": "symbol", + "metadata": { "mapbox:group": "1444856087950.3635" }, + "source": "streets-cn", + "source-layer": "marine_label", + "minzoom": 3, + "maxzoom": 10, + "filter": [ "all", [ "==", "$type", "Point" ], [ ">=", "labelrank", 4 ] ], + "layout": { + "text-field": "{name_zh}", + "text-max-width": 5, + "text-letter-spacing": 0.1, + "text-line-height": 1.5, + "text-font": [ "DIN Offc Pro Italic", "Noto Sans CJK SC DemiLight", "Arial Unicode MS Regular" ], + "text-size": { "base": 1, "stops": [ [ 3, 12 ], [ 6, 16 ] ] } + }, + "paint": { "text-color": "hsl(205, 83%, 88%)" } + }, + { + "id": "marine-label-md-ln", + "type": "symbol", + "metadata": { "mapbox:group": "1444856087950.3635" }, + "source": "streets-cn", + "source-layer": "marine_label", + "minzoom": 2, + "maxzoom": 8, + "filter": [ "all", [ "==", "$type", "LineString" ], [ "in", "labelrank", 2, 3 ] ], + "layout": { + "text-line-height": 1.1, + "text-size": { "base": 1.1, "stops": [ [ 2, 12 ], [ 5, 20 ] ] }, + "symbol-spacing": 250, + "text-font": [ "DIN Offc Pro Italic", "Noto Sans CJK SC DemiLight", "Arial Unicode MS Regular" ], + "symbol-placement": "line", + "text-field": "{name_zh}", + "text-letter-spacing": 0.15, + "text-max-width": 5 + }, + "paint": { "text-color": "hsl(205, 83%, 88%)" } + }, + { + "id": "marine-label-md-pt", + "type": "symbol", + "metadata": { "mapbox:group": "1444856087950.3635" }, + "source": "streets-cn", + "source-layer": "marine_label", + "minzoom": 2, + "maxzoom": 8, + "filter": [ "all", [ "==", "$type", "Point" ], [ "in", "labelrank", 2, 3 ] ], + "layout": { + "text-field": "{name_zh}", + "text-max-width": 5, + "text-letter-spacing": 0.15, + "text-line-height": 1.5, + "text-font": [ "DIN Offc Pro Italic", "Noto Sans CJK SC DemiLight", "Arial Unicode MS Regular" ], + "text-size": { "base": 1.1, "stops": [ [ 2, 14 ], [ 5, 20 ] ] } + }, + "paint": { "text-color": "hsl(205, 83%, 88%)" } + }, + { + "id": "marine-label-lg-ln", + "type": "symbol", + "metadata": { "mapbox:group": "1444856087950.3635" }, + "source": "streets-cn", + "source-layer": "marine_label", + "minzoom": 1, + "maxzoom": 4, + "filter": [ "all", [ "==", "$type", "LineString" ], [ "==", "labelrank", 1 ] ], + "layout": { + "text-field": "{name_zh}", + "text-max-width": 4, + "text-letter-spacing": 0.25, + "text-line-height": 1.1, + "symbol-placement": "line", + "text-font": [ "DIN Offc Pro Italic", "Noto Sans CJK SC DemiLight", "Arial Unicode MS Regular" ], + "text-size": { "base": 1, "stops": [ [ 1, 14 ], [ 4, 30 ] ] } + }, + "paint": { "text-color": "hsl(205, 83%, 88%)" } + }, + { + "id": "marine-label-lg-pt", + "type": "symbol", + "metadata": { "mapbox:group": "1444856087950.3635" }, + "source": "streets-cn", + "source-layer": "marine_label", + "minzoom": 1, + "maxzoom": 4, + "filter": [ "all", [ "==", "$type", "Point" ], [ "==", "labelrank", 1 ] ], + "layout": { + "text-field": "{name_zh}", + "text-max-width": 4, + "text-letter-spacing": 0.25, + "text-line-height": 1.5, + "text-font": [ "DIN Offc Pro Italic", "Noto Sans CJK SC DemiLight", "Arial Unicode MS Regular" ], + "text-size": { "base": 1, "stops": [ [ 1, 14 ], [ 4, 30 ] ] } + }, + "paint": { "text-color": "hsl(205, 83%, 88%)" } + }, + { + "id": "state-label-sm", + "type": "symbol", + "metadata": { "mapbox:group": "1444856151690.9143" }, + "source": "streets-cn", + "source-layer": "state_label", + "minzoom": 5, + "maxzoom": 9, + "filter": [ "<", "area", 20000 ], + "layout": { + "text-size": { "base": 1, "stops": [ [ 6, 10 ], [ 9, 14 ] ] }, + "text-max-width": 5, + "text-font": [ "DIN Offc Pro Regular", "Noto Sans CJK SC DemiLight", "Arial Unicode MS Regular" ], + "text-field": "{name_zh}", + "text-letter-spacing": 0.1, + "text-line-height": 1.4 + }, + "paint": { + "text-opacity": 1, + "text-color": "hsl(230, 29%, 35%)", + "text-halo-color": "hsl(0, 0%, 100%)", + "text-halo-width": 1 + } + }, + { + "id": "state-label-md", + "type": "symbol", + "metadata": { "mapbox:group": "1444856151690.9143" }, + "source": "streets-cn", + "source-layer": "state_label", + "minzoom": 4, + "maxzoom": 8, + "filter": [ "all", [ "<", "area", 80000 ], [ ">=", "area", 20000 ] ], + "layout": { + "text-size": { "base": 1, "stops": [ [ 5, 10 ], [ 8, 16 ] ] }, + "text-max-width": 6, + "text-font": [ "DIN Offc Pro Regular", "Noto Sans CJK SC DemiLight", "Arial Unicode MS Regular" ], + "text-field": "{name_zh}", + "text-letter-spacing": 0.1, + "text-line-height": 1.4 + }, + "paint": { + "text-opacity": 1, + "text-color": "hsl(230, 29%, 35%)", + "text-halo-color": "hsl(0, 0%, 100%)", + "text-halo-width": 1 + } + }, + { + "id": "state-label-lg", + "type": "symbol", + "metadata": { "mapbox:group": "1444856151690.9143" }, + "source": "streets-cn", + "source-layer": "state_label", + "minzoom": 4, + "maxzoom": 7, + "filter": [ ">=", "area", 80000 ], + "layout": { + "text-size": { "base": 1, "stops": [ [ 4, 10 ], [ 7, 18 ] ] }, + "text-max-width": 6, + "text-font": [ "DIN Offc Pro Regular", "Noto Sans CJK SC DemiLight", "Arial Unicode MS Regular" ], + "text-padding": 1, + "text-field": "{name_zh}", + "text-letter-spacing": 0.1, + "text-line-height": 1.4 + }, + "paint": { + "text-opacity": 1, + "text-color": "hsl(230, 29%, 35%)", + "text-halo-color": "hsl(0, 0%, 100%)", + "text-halo-width": 1 + } + }, + { + "id": "country-label-sm", + "type": "symbol", + "metadata": { "mapbox:group": "1444856144497.7825" }, + "source": "streets-cn", + "source-layer": "country_label", + "minzoom": 1, + "maxzoom": 10, + "filter": [ ">=", "scalerank", 5 ], + "layout": { + "text-field": "{name_zh}", + "text-max-width": 6, + "text-font": [ "DIN Offc Pro Medium", "Noto Sans CJK SC Medium", "Arial Unicode MS Regular" ], + "text-size": { "base": 0.9, "stops": [ [ 5, 14 ], [ 9, 22 ] ] } + }, + "paint": { + "text-color": "hsl(0, 0%, 0%)", + "text-halo-color": { "base": 1, "stops": [ [ 2, "rgba(255,255,255,0.75)" ], [ 3, "hsl(0, 0%, 100%)" ] ] }, + "text-halo-width": 1.25 + } + }, + { + "id": "country-label-md", + "type": "symbol", + "metadata": { "mapbox:group": "1444856144497.7825" }, + "source": "streets-cn", + "source-layer": "country_label", + "minzoom": 1, + "maxzoom": 8, + "filter": [ "in", "scalerank", 3, 4 ], + "layout": { + "text-field": { "base": 1, "stops": [ [ 0, "{code}" ], [ 2, "{name_zh}" ] ] }, + "text-max-width": 6, + "text-font": [ "DIN Offc Pro Medium", "Noto Sans CJK SC Medium", "Arial Unicode MS Regular" ], + "text-size": { "base": 1, "stops": [ [ 3, 10 ], [ 8, 24 ] ] } + }, + "paint": { + "text-color": "hsl(0, 0%, 0%)", + "text-halo-color": { "base": 1, "stops": [ [ 2, "rgba(255,255,255,0.75)" ], [ 3, "hsl(0, 0%, 100%)" ] ] }, + "text-halo-width": 1.25 + } + }, + { + "id": "country-label-lg", + "type": "symbol", + "metadata": { "mapbox:group": "1444856144497.7825" }, + "source": "streets-cn", + "source-layer": "country_label", + "minzoom": 1, + "maxzoom": 7, + "filter": [ "in", "scalerank", 1, 2 ], + "layout": { + "text-field": "{name_zh}", + "text-max-width": { "base": 1, "stops": [ [ 0, 5 ], [ 3, 6 ] ] }, + "text-font": [ "DIN Offc Pro Medium", "Noto Sans CJK SC Medium", "Arial Unicode MS Regular" ], + "text-size": { "base": 1, "stops": [ [ 1, 10 ], [ 6, 24 ] ] } + }, + "paint": { + "text-color": "hsl(0, 0%, 0%)", + "text-halo-color": { "base": 1, "stops": [ [ 2, "rgba(255,255,255,0.75)" ], [ 3, "hsl(0, 0%, 100%)" ] ] }, + "text-halo-width": 1.25 + } + } + ], + "visibility": "public" +} \ No newline at end of file diff --git a/debug/tinysdf.html b/debug/tinysdf.html new file mode 100644 index 00000000000..33221c26df2 --- /dev/null +++ b/debug/tinysdf.html @@ -0,0 +1,79 @@ + + + + Mapbox GL JS debug page + + + + + + + + +
+
+ + +
+
+
+ + + + + + From c419caec9d17f6438372aaf06029309c90cf0f43 Mon Sep 17 00:00:00 2001 From: Chris Loer Date: Mon, 3 Jul 2017 13:59:06 -0700 Subject: [PATCH 4/5] Add a 'localIdeographFontFamily' example. --- .../examples/3400-02-01-local-ideographs.html | 21 +++++++++++++++++++ src/ui/map.js | 6 +++--- 2 files changed, 24 insertions(+), 3 deletions(-) create mode 100644 docs/_posts/examples/3400-02-01-local-ideographs.html diff --git a/docs/_posts/examples/3400-02-01-local-ideographs.html b/docs/_posts/examples/3400-02-01-local-ideographs.html new file mode 100644 index 00000000000..65e60a1883d --- /dev/null +++ b/docs/_posts/examples/3400-02-01-local-ideographs.html @@ -0,0 +1,21 @@ +--- +layout: example +category: example +title: Use locally generated ideographs +description: Rendering Chinese/Japanese/Korean (CJK) ideographs and precomposed Hangul Syllables requires downloading large amounts of font data, which can significantly slow map load times. Use the 'localIdeographFontFamily' setting to speed up map load times by using locally available fonts instead of font data fetched from the server. This setting defines a CSS 'font-family' for locally overriding generation of glyphs in the 'CJK Unified Ideographs' and 'Hangul Syllables' Unicode ranges. In these ranges, font settings from the map's style will be ignored in favor of the locally available font. Keywords in the fontstack defined in the map's style (light/regular/medium/bold) will be translated into a CSS 'font-weight'. When using this setting, keep in mind that the fonts you select may not be available on all users' devices. It is best to specify at least one broadly available fallback font class such as 'sans-serif'. +tags: + - internationalization +--- +
+ + diff --git a/src/ui/map.js b/src/ui/map.js index bc22b9da07b..70c449ca952 100755 --- a/src/ui/map.js +++ b/src/ui/map.js @@ -192,10 +192,10 @@ const defaultOptions = { * @param {number} [options.pitch=0] The initial pitch (tilt) of the map, measured in degrees away from the plane of the screen (0-60). If `pitch` is not specified in the constructor options, Mapbox GL JS will look for it in the map's style object. If it is not specified in the style, either, it will default to `0`. * @param {boolean} [options.renderWorldCopies=true] If `true`, multiple copies of the world will be rendered, when zoomed out. * @param {number} [options.maxTileCacheSize=null] The maxiumum number of tiles stored in the tile cache for a given source. If omitted, the cache will be dynamically sized based on the current viewport. - * @param {string} [options.localIdeographFontFamily=null] If specified, defines a css font-family + * @param {string} [options.localIdeographFontFamily=null] If specified, defines a CSS font-family * for locally overriding generation of glyphs in the 'CJK Unified Ideographs' and 'Hangul Syllables' ranges. - * In these ranges, font settings from the map's style will be mostly ignored, except for font-weight keywords (light/regular/medium/bold). - * The purpose of this option is to avoid bandwidth-intensive glyph server requests. + * In these ranges, font settings from the map's style will be ignored, except for font-weight keywords (light/regular/medium/bold). + * The purpose of this option is to avoid bandwidth-intensive glyph server requests. (see [Use locally generated ideographs](https://www.mapbox.com/mapbox-gl-js/example/local-ideographs)) * @example * var map = new mapboxgl.Map({ * container: 'map', From 15fec87ed69a2ae6d961ebe859085c55cf2eaa36 Mon Sep 17 00:00:00 2001 From: Chris Loer Date: Tue, 4 Jul 2017 10:18:05 -0700 Subject: [PATCH 5/5] Replace local Chinese Streets style with a public streets style overridden to display local names. --- debug/streets-zh-global-v1.json | 3847 ------------------------------- debug/tinysdf.html | 23 +- 2 files changed, 20 insertions(+), 3850 deletions(-) delete mode 100644 debug/streets-zh-global-v1.json diff --git a/debug/streets-zh-global-v1.json b/debug/streets-zh-global-v1.json deleted file mode 100644 index 1cbc39ce426..00000000000 --- a/debug/streets-zh-global-v1.json +++ /dev/null @@ -1,3847 +0,0 @@ -{ - "version": 8, - "name": "Mapbox Streets Chinese", - "metadata": { - "mapbox:autostreets-cn": true, - "mapbox:groups": { - "1444934828655.3389": { "name": "Aeroways", "collapsed": true }, - "1444933322393.2852": { "name": "POI labels (scalerank 1)", "collapsed": true }, - "1444855786460.0557": { "name": "Roads", "collapsed": true }, - "1444933575858.6992": { "name": "Highway shields", "collapsed": true }, - "1444934295202.7542": { "name": "Admin boundaries", "collapsed": true }, - "1444856151690.9143": { "name": "State labels", "collapsed": true }, - "1444933721429.3076": { "name": "Road labels", "collapsed": true }, - "1444933358918.2366": { "name": "POI labels (scalerank 2)", "collapsed": true }, - "1444933808272.805": { "name": "Water labels", "collapsed": true }, - "1444933372896.5967": { "name": "POI labels (scalerank 3)", "collapsed": true }, - "1444855799204.86": { "name": "Bridges", "collapsed": true }, - "1444856087950.3635": { "name": "Marine labels", "collapsed": true }, - "1444862510685.128": { "name": "City labels", "collapsed": true }, - "1444855769305.6016": { "name": "Tunnels", "collapsed": true }, - "1456970288113.8113": { "name": "Landcover", "collapsed": true }, - "1444856144497.7825": { "name": "Country labels", "collapsed": true }, - "1444933456003.5437": { "name": "POI labels (scalerank 4)", "collapsed": true } - } - }, - "sources": { "streets-cn": { "url": "mapbox://mapbox.mapbox-streets-v7", "type": "vector" } }, - "sprite": "mapbox://sprites/mapbox/streets-zh-v1", - "glyphs": "mapbox://fonts/mapbox/{fontstack}/{range}.pbf", - "layers": [ - { - "id": "background", - "type": "background", - "layout": {}, - "paint": { - "background-color": { "base": 1, "stops": [ [ 11, "hsl(35, 32%, 91%)" ], [ 13, "hsl(35, 12%, 89%)" ] ] } - } - }, - { - "id": "national_park", - "type": "fill", - "source": "streets-cn", - "source-layer": "landuse_overlay", - "filter": [ "==", "class", "national_park" ], - "layout": {}, - "paint": { - "fill-color": "hsl(100, 58%, 76%)", - "fill-opacity": { "base": 1, "stops": [ [ 5, 0 ], [ 6, 0.5 ] ] } - } - }, - { - "id": "hospital", - "type": "fill", - "source": "streets-cn", - "source-layer": "landuse", - "filter": [ "==", "class", "hospital" ], - "layout": {}, - "paint": { - "fill-color": { "base": 1, "stops": [ [ 15.5, "hsl(340, 37%, 87%)" ], [ 16, "hsl(340, 63%, 89%)" ] ] } - } - }, - { - "id": "school", - "type": "fill", - "source": "streets-cn", - "source-layer": "landuse", - "filter": [ "==", "class", "school" ], - "layout": {}, - "paint": { - "fill-color": { "base": 1, "stops": [ [ 15.5, "hsl(50, 47%, 81%)" ], [ 16, "hsl(50, 63%, 84%)" ] ] } - } - }, - { - "id": "park", - "type": "fill", - "source": "streets-cn", - "source-layer": "landuse", - "filter": [ "==", "class", "park" ], - "layout": {}, - "paint": { - "fill-color": "hsl(100, 58%, 76%)", - "fill-opacity": { "base": 1, "stops": [ [ 5, 0 ], [ 6, 1 ] ] } - } - }, - { - "id": "pitch", - "type": "fill", - "source": "streets-cn", - "source-layer": "landuse", - "filter": [ "==", "class", "pitch" ], - "layout": {}, - "paint": { "fill-color": "hsl(100, 57%, 72%)" } - }, - { - "id": "pitch-line", - "type": "line", - "source": "streets-cn", - "source-layer": "landuse", - "minzoom": 15, - "filter": [ "==", "class", "pitch" ], - "layout": { "line-join": "miter" }, - "paint": { "line-color": "hsl(75, 57%, 84%)" } - }, - { - "id": "cemetery", - "type": "fill", - "source": "streets-cn", - "source-layer": "landuse", - "filter": [ "==", "class", "cemetery" ], - "layout": {}, - "paint": { "fill-color": "hsl(75, 37%, 81%)" } - }, - { - "id": "industrial", - "type": "fill", - "source": "streets-cn", - "source-layer": "landuse", - "filter": [ "==", "class", "industrial" ], - "layout": {}, - "paint": { - "fill-color": { "base": 1, "stops": [ [ 15.5, "hsl(230, 15%, 86%)" ], [ 16, "hsl(230, 29%, 89%)" ] ] } - } - }, - { - "id": "sand", - "type": "fill", - "source": "streets-cn", - "source-layer": "landuse", - "filter": [ "==", "class", "sand" ], - "layout": {}, - "paint": { "fill-color": "hsl(60, 46%, 87%)" } - }, - { - "id": "waterway-river-canal", - "type": "line", - "source": "streets-cn", - "source-layer": "waterway", - "minzoom": 8, - "filter": [ "in", "class", "canal", "river" ], - "layout": { - "line-cap": { "base": 1, "stops": [ [ 0, "butt" ], [ 11, "round" ] ] }, - "line-join": "round" - }, - "paint": { - "line-color": "hsl(205, 87%, 76%)", - "line-width": { "base": 1.3, "stops": [ [ 8.5, 0.1 ], [ 20, 8 ] ] }, - "line-opacity": { "base": 1, "stops": [ [ 8, 0 ], [ 8.5, 1 ] ] } - } - }, - { - "id": "waterway-small", - "type": "line", - "source": "streets-cn", - "source-layer": "waterway", - "minzoom": 13, - "filter": [ "!in", "class", "canal", "river" ], - "layout": { "line-join": "round", "line-cap": "round" }, - "paint": { - "line-color": "hsl(205, 87%, 76%)", - "line-width": { "base": 1.35, "stops": [ [ 13.5, 0.1 ], [ 20, 3 ] ] }, - "line-opacity": { "base": 1, "stops": [ [ 13, 0 ], [ 13.5, 1 ] ] } - } - }, - { - "id": "water-shadow", - "type": "fill", - "source": "streets-cn", - "source-layer": "water", - "layout": {}, - "paint": { - "fill-color": "hsl(215, 84%, 69%)", - "fill-translate": { "base": 1.2, "stops": [ [ 7, [ 0, 0 ] ], [ 16, [ -1, -1 ] ] ] }, - "fill-translate-anchor": "viewport", - "fill-opacity": 1 - } - }, - { "id": "water", "ref": "water-shadow", "paint": { "fill-color": "hsl(196, 80%, 70%)" } }, - { - "id": "barrier_line-land-polygon", - "type": "fill", - "source": "streets-cn", - "source-layer": "barrier_line", - "filter": [ "all", [ "==", "$type", "Polygon" ], [ "==", "class", "land" ] ], - "layout": {}, - "paint": { "fill-color": "hsl(35, 12%, 89%)" } - }, - { - "id": "barrier_line-land-line", - "type": "line", - "source": "streets-cn", - "source-layer": "barrier_line", - "filter": [ "all", [ "==", "$type", "LineString" ], [ "==", "class", "land" ] ], - "layout": { "line-cap": "round" }, - "paint": { - "line-width": { "base": 1.99, "stops": [ [ 14, 0.75 ], [ 20, 40 ] ] }, - "line-color": "hsl(35, 12%, 89%)" - } - }, - { - "id": "aeroway-polygon", - "type": "fill", - "metadata": { "mapbox:group": "1444934828655.3389" }, - "source": "streets-cn", - "source-layer": "aeroway", - "minzoom": 11, - "filter": [ "all", [ "!=", "type", "apron" ], [ "==", "$type", "Polygon" ] ], - "layout": {}, - "paint": { - "fill-color": { "base": 1, "stops": [ [ 15, "hsl(230, 23%, 82%)" ], [ 16, "hsl(230, 37%, 84%)" ] ] }, - "fill-opacity": { "base": 1, "stops": [ [ 11, 0 ], [ 11.5, 1 ] ] } - } - }, - { - "id": "aeroway-runway", - "type": "line", - "metadata": { "mapbox:group": "1444934828655.3389" }, - "source": "streets-cn", - "source-layer": "aeroway", - "minzoom": 9, - "filter": [ "all", [ "==", "$type", "LineString" ], [ "==", "type", "runway" ] ], - "layout": {}, - "paint": { - "line-color": { "base": 1, "stops": [ [ 15, "hsl(230, 23%, 82%)" ], [ 16, "hsl(230, 37%, 84%)" ] ] }, - "line-width": { "base": 1.5, "stops": [ [ 9, 1 ], [ 18, 80 ] ] } - } - }, - { - "id": "aeroway-taxiway", - "type": "line", - "metadata": { "mapbox:group": "1444934828655.3389" }, - "source": "streets-cn", - "source-layer": "aeroway", - "minzoom": 9, - "filter": [ "all", [ "==", "$type", "LineString" ], [ "==", "type", "taxiway" ] ], - "layout": {}, - "paint": { - "line-color": { "base": 1, "stops": [ [ 15, "hsl(230, 23%, 82%)" ], [ 16, "hsl(230, 37%, 84%)" ] ] }, - "line-width": { "base": 1.5, "stops": [ [ 10, 0.5 ], [ 18, 20 ] ] } - } - }, - { - "id": "building-line", - "type": "line", - "source": "streets-cn", - "source-layer": "building", - "minzoom": 15, - "filter": [ "all", [ "!=", "type", "building:part" ], [ "==", "underground", "false" ] ], - "layout": {}, - "paint": { - "line-color": "hsl(35, 6%, 79%)", - "line-width": { "base": 1.5, "stops": [ [ 15, 0.75 ], [ 20, 3 ] ] }, - "line-opacity": { "base": 1, "stops": [ [ 15.5, 0 ], [ 16, 1 ] ] } - } - }, - { - "id": "building", - "type": "fill", - "source": "streets-cn", - "source-layer": "building", - "minzoom": 15, - "filter": [ "all", [ "!=", "type", "building:part" ], [ "==", "underground", "false" ] ], - "layout": {}, - "paint": { - "fill-color": { "base": 1, "stops": [ [ 15, "hsl(35, 11%, 88%)" ], [ 16, "hsl(35, 8%, 85%)" ] ] }, - "fill-opacity": { "base": 1, "stops": [ [ 15.5, 0 ], [ 16, 1 ] ] }, - "fill-outline-color": "hsl(35, 6%, 79%)" - } - }, - { - "id": "tunnel-street-low", - "type": "line", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "source": "streets-cn", - "source-layer": "road", - "minzoom": 11, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "class", "street" ], [ "==", "structure", "tunnel" ] ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12.5, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-opacity": { "stops": [ [ 11.5, 0 ], [ 12, 1 ], [ 14, 1 ], [ 14.01, 0 ] ] } - } - }, - { - "id": "tunnel-street_limited-low", - "type": "line", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "source": "streets-cn", - "source-layer": "road", - "minzoom": 11, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "class", "street_limited" ], [ "==", "structure", "tunnel" ] ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12.5, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-opacity": { "stops": [ [ 11.5, 0 ], [ 12, 1 ], [ 14, 1 ], [ 14.01, 0 ] ] } - } - }, - { - "id": "tunnel-service-link-track-case", - "type": "line", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "source": "streets-cn", - "source-layer": "road", - "minzoom": 14, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "!=", "type", "trunk_link" ], - [ "==", "structure", "tunnel" ], - [ "in", "class", "link", "service", "track" ] - ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12, 0.75 ], [ 20, 2 ] ] }, - "line-color": "hsl(230, 19%, 75%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 14, 0.5 ], [ 18, 12 ] ] }, - "line-dasharray": [ 3, 3 ] - } - }, - { - "id": "tunnel-street_limited-case", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "ref": "tunnel-street_limited-low", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12, 0.75 ], [ 20, 2 ] ] }, - "line-color": "hsl(230, 19%, 75%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 13, 0 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-dasharray": [ 3, 3 ], - "line-opacity": { "base": 1, "stops": [ [ 13.99, 0 ], [ 14, 1 ] ] } - } - }, - { - "id": "tunnel-street-case", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "ref": "tunnel-street-low", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12, 0.75 ], [ 20, 2 ] ] }, - "line-color": "hsl(230, 19%, 75%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 13, 0 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-dasharray": [ 3, 3 ], - "line-opacity": { "base": 1, "stops": [ [ 13.99, 0 ], [ 14, 1 ] ] } - } - }, - { - "id": "tunnel-secondary-tertiary-case", - "type": "line", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "source": "streets-cn", - "source-layer": "road", - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "structure", "tunnel" ], [ "in", "class", "secondary", "tertiary" ] ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.2, "stops": [ [ 10, 0.75 ], [ 18, 2 ] ] }, - "line-dasharray": [ 3, 3 ], - "line-gap-width": { "base": 1.5, "stops": [ [ 8.5, 0.5 ], [ 10, 0.75 ], [ 18, 26 ] ] }, - "line-color": "hsl(230, 19%, 75%)" - } - }, - { - "id": "tunnel-primary-case", - "type": "line", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "source": "streets-cn", - "source-layer": "road", - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "class", "primary" ], [ "==", "structure", "tunnel" ] ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 10, 1 ], [ 16, 2 ] ] }, - "line-dasharray": [ 3, 3 ], - "line-gap-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] }, - "line-color": "hsl(230, 19%, 75%)" - } - }, - { - "id": "tunnel-trunk_link-case", - "type": "line", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "source": "streets-cn", - "source-layer": "road", - "minzoom": 13, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "structure", "tunnel" ], [ "==", "type", "trunk_link" ] ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12, 0.75 ], [ 20, 2 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 12, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-dasharray": [ 3, 3 ] - } - }, - { - "id": "tunnel-motorway_link-case", - "type": "line", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "source": "streets-cn", - "source-layer": "road", - "minzoom": 13, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "class", "motorway_link" ], [ "==", "structure", "tunnel" ] ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12, 0.75 ], [ 20, 2 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 12, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-dasharray": [ 3, 3 ] - } - }, - { - "id": "tunnel-trunk-case", - "type": "line", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "source": "streets-cn", - "source-layer": "road", - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "structure", "tunnel" ], [ "==", "type", "trunk" ] ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 10, 1 ], [ 16, 2 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] }, - "line-opacity": 1, - "line-dasharray": [ 3, 3 ] - } - }, - { - "id": "tunnel-motorway-case", - "type": "line", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "source": "streets-cn", - "source-layer": "road", - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "class", "motorway" ], [ "==", "structure", "tunnel" ] ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 10, 1 ], [ 16, 2 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] }, - "line-opacity": 1, - "line-dasharray": [ 3, 3 ] - } - }, - { - "id": "tunnel-construction", - "type": "line", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "source": "streets-cn", - "source-layer": "road", - "minzoom": 14, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "class", "construction" ], [ "==", "structure", "tunnel" ] ] - ], - "layout": { "line-join": "miter" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12.5, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-color": "hsl(230, 24%, 87%)", - "line-opacity": { "base": 1, "stops": [ [ 13.99, 0 ], [ 14, 1 ] ] }, - "line-dasharray": { - "base": 1, - "stops": [ - [ 14, [ 0.4, 0.8 ] ], - [ 15, [ 0.3, 0.6 ] ], - [ 16, [ 0.2, 0.3 ] ], - [ 17, [ 0.2, 0.25 ] ], - [ 18, [ 0.15, 0.15 ] ] - ] - } - } - }, - { - "id": "tunnel-path", - "type": "line", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "source": "streets-cn", - "source-layer": "road", - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "!=", "type", "steps" ], - [ "==", "class", "path" ], - [ "==", "structure", "tunnel" ] - ] - ], - "layout": { "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 15, 1 ], [ 18, 4 ] ] }, - "line-dasharray": { - "base": 1, - "stops": [ [ 14, [ 1, 0 ] ], [ 15, [ 1.75, 1 ] ], [ 16, [ 1, 0.75 ] ], [ 17, [ 1, 0.5 ] ] ] - }, - "line-color": "hsl(35, 26%, 95%)", - "line-opacity": { "base": 1, "stops": [ [ 14, 0 ], [ 14.25, 1 ] ] } - } - }, - { - "id": "tunnel-steps", - "type": "line", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "source": "streets-cn", - "source-layer": "road", - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "structure", "tunnel" ], [ "==", "type", "steps" ] ] - ], - "layout": { "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 15, 1 ], [ 16, 1.6 ], [ 18, 6 ] ] }, - "line-color": "hsl(35, 26%, 95%)", - "line-dasharray": { - "base": 1, - "stops": [ [ 14, [ 1, 0 ] ], [ 15, [ 1.75, 1 ] ], [ 16, [ 1, 0.75 ] ], [ 17, [ 0.3, 0.3 ] ] ] - }, - "line-opacity": { "base": 1, "stops": [ [ 14, 0 ], [ 14.25, 1 ] ] } - } - }, - { - "id": "tunnel-trunk_link", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "ref": "tunnel-trunk_link-case", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-color": "hsl(46, 77%, 78%)", - "line-opacity": 1, - "line-dasharray": [ 1, 0 ] - } - }, - { - "id": "tunnel-motorway_link", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "ref": "tunnel-motorway_link-case", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-color": "hsl(26, 100%, 78%)", - "line-opacity": 1, - "line-dasharray": [ 1, 0 ] - } - }, - { - "id": "tunnel-pedestrian", - "type": "line", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "source": "streets-cn", - "source-layer": "road", - "minzoom": 13, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "class", "pedestrian" ], [ "==", "structure", "tunnel" ] ] - ], - "layout": { "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 14, 0.5 ], [ 18, 12 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-opacity": 1, - "line-dasharray": { "base": 1, "stops": [ [ 14, [ 1, 0 ] ], [ 15, [ 1.5, 0.4 ] ], [ 16, [ 1, 0.2 ] ] ] } - } - }, - { - "id": "tunnel-service-link-track", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "ref": "tunnel-service-link-track-case", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 14, 0.5 ], [ 18, 12 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-dasharray": [ 1, 0 ] - } - }, - { - "id": "tunnel-street_limited", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "ref": "tunnel-street_limited-low", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12.5, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-color": "hsl(35, 14%, 93%)", - "line-opacity": { "base": 1, "stops": [ [ 13.99, 0 ], [ 14, 1 ] ] } - } - }, - { - "id": "tunnel-street", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "ref": "tunnel-street-low", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12.5, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-opacity": { "base": 1, "stops": [ [ 13.99, 0 ], [ 14, 1 ] ] } - } - }, - { - "id": "tunnel-secondary-tertiary", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "ref": "tunnel-secondary-tertiary-case", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 8.5, 0.5 ], [ 10, 0.75 ], [ 18, 26 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-opacity": 1, - "line-dasharray": [ 1, 0 ], - "line-blur": 0 - } - }, - { - "id": "tunnel-primary", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "ref": "tunnel-primary-case", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-opacity": 1, - "line-dasharray": [ 1, 0 ], - "line-blur": 0 - } - }, - { - "id": "tunnel-oneway-arrows-blue-minor", - "type": "symbol", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "source": "streets-cn", - "source-layer": "road", - "minzoom": 16, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "!=", "type", "trunk_link" ], - [ "==", "oneway", "true" ], - [ "==", "structure", "tunnel" ], - [ "in", "class", "link", "path", "pedestrian", "service", "track" ] - ] - ], - "layout": { - "symbol-placement": "line", - "icon-image": { "base": 1, "stops": [ [ 17, "oneway-small" ], [ 18, "oneway-large" ] ] }, - "symbol-spacing": 200, - "icon-padding": 2 - }, - "paint": {} - }, - { - "id": "tunnel-oneway-arrows-blue-major", - "type": "symbol", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "source": "streets-cn", - "source-layer": "road", - "minzoom": 15, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "!=", "type", "trunk_link" ], - [ "==", "oneway", "true" ], - [ "==", "structure", "tunnel" ], - [ "in", "class", "primary", "secondary", "street", "street_limited", "tertiary" ] - ] - ], - "layout": { - "symbol-placement": "line", - "icon-image": { "base": 1, "stops": [ [ 16, "oneway-small" ], [ 17, "oneway-large" ] ] }, - "symbol-spacing": 200, - "icon-padding": 2 - }, - "paint": {} - }, - { - "id": "tunnel-trunk", - "type": "line", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "source": "streets-cn", - "source-layer": "road", - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "class", "trunk" ], [ "==", "structure", "tunnel" ] ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] }, - "line-color": "hsl(46, 77%, 78%)" - } - }, - { - "id": "tunnel-motorway", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "ref": "tunnel-motorway-case", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] }, - "line-dasharray": [ 1, 0 ], - "line-opacity": 1, - "line-color": "hsl(26, 100%, 78%)", - "line-blur": 0 - } - }, - { - "id": "tunnel-oneway-arrows-white", - "type": "symbol", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "source": "streets-cn", - "source-layer": "road", - "minzoom": 16, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "!in", "type", "primary_link", "secondary_link", "tertiary_link" ], - [ "==", "oneway", "true" ], - [ "==", "structure", "tunnel" ], - [ "in", "class", "link", "motorway", "motorway_link", "trunk" ] - ] - ], - "layout": { - "symbol-placement": "line", - "icon-image": { "base": 1, "stops": [ [ 16, "oneway-white-small" ], [ 17, "oneway-white-large" ] ] }, - "symbol-spacing": 200, - "icon-padding": 2 - }, - "paint": {} - }, - { - "id": "ferry", - "type": "line", - "source": "streets-cn", - "source-layer": "road", - "filter": [ "all", [ "==", "$type", "LineString" ], [ "==", "type", "ferry" ] ], - "layout": { "line-join": "round" }, - "paint": { - "line-color": { "base": 1, "stops": [ [ 15, "hsl(205, 73%, 63%)" ], [ 17, "hsl(230, 73%, 63%)" ] ] }, - "line-opacity": 1, - "line-width": { "base": 1.5, "stops": [ [ 14, 0.5 ], [ 20, 1 ] ] }, - "line-dasharray": { "base": 1, "stops": [ [ 12, [ 1, 0 ] ], [ 13, [ 12, 4 ] ] ] } - } - }, - { - "id": "ferry_auto", - "type": "line", - "source": "streets-cn", - "source-layer": "road", - "filter": [ "all", [ "==", "$type", "LineString" ], [ "==", "type", "ferry_auto" ] ], - "layout": { "line-join": "round" }, - "paint": { - "line-color": { "base": 1, "stops": [ [ 15, "hsl(205, 73%, 63%)" ], [ 17, "hsl(230, 73%, 63%)" ] ] }, - "line-opacity": 1, - "line-width": { "base": 1.5, "stops": [ [ 14, 0.5 ], [ 20, 1 ] ] } - } - }, - { - "id": "road-path-bg", - "type": "line", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "source": "streets-cn", - "source-layer": "road", - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "!in", "structure", "bridge", "tunnel" ], - [ "!in", "type", "crossing", "sidewalk", "steps" ], - [ "==", "class", "path" ] - ] - ], - "layout": { "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 15, 2 ], [ 18, 7 ] ] }, - "line-dasharray": [ 1, 0 ], - "line-color": "hsl(230, 17%, 82%)", - "line-blur": 0, - "line-opacity": { "base": 1, "stops": [ [ 14, 0 ], [ 14.25, 0.75 ] ] } - } - }, - { - "id": "road-steps-bg", - "type": "line", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "source": "streets-cn", - "source-layer": "road", - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "!in", "structure", "bridge", "tunnel" ], [ "==", "type", "steps" ] ] - ], - "layout": { "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 15, 2 ], [ 17, 4.6 ], [ 18, 7 ] ] }, - "line-color": "hsl(230, 17%, 82%)", - "line-dasharray": [ 1, 0 ], - "line-opacity": { "base": 1, "stops": [ [ 14, 0 ], [ 14.25, 0.75 ] ] } - } - }, - { - "id": "road-sidewalk-bg", - "type": "line", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "source": "streets-cn", - "source-layer": "road", - "minzoom": 16, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "!in", "structure", "bridge", "tunnel" ], - [ "in", "type", "crossing", "sidewalk" ] - ] - ], - "layout": { "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 15, 2 ], [ 18, 7 ] ] }, - "line-dasharray": [ 1, 0 ], - "line-color": "hsl(230, 17%, 82%)", - "line-blur": 0, - "line-opacity": { "base": 1, "stops": [ [ 16, 0 ], [ 16.25, 0.75 ] ] } - } - }, - { - "id": "turning-features-outline", - "type": "symbol", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "source": "streets-cn", - "source-layer": "road", - "minzoom": 15, - "filter": [ "all", [ "==", "$type", "Point" ], [ "in", "class", "turning_circle", "turning_loop" ] ], - "layout": { - "icon-image": "turning-circle-outline", - "icon-size": { "base": 1.5, "stops": [ [ 14, 0.122 ], [ 18, 0.969 ], [ 20, 1 ] ] }, - "icon-allow-overlap": true, - "icon-ignore-placement": true, - "icon-padding": 0, - "icon-rotation-alignment": "map" - }, - "paint": {} - }, - { - "id": "road-pedestrian-case", - "type": "line", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "source": "streets-cn", - "source-layer": "road", - "minzoom": 12, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "class", "pedestrian" ], [ "==", "structure", "none" ] ] - ], - "layout": { "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 14, 2 ], [ 18, 14.5 ] ] }, - "line-color": "hsl(230, 24%, 87%)", - "line-gap-width": 0, - "line-opacity": { "base": 1, "stops": [ [ 13.99, 0 ], [ 14, 1 ] ] } - } - }, - { - "id": "road-street-low", - "type": "line", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "source": "streets-cn", - "source-layer": "road", - "minzoom": 11, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "class", "street" ], [ "==", "structure", "none" ] ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12.5, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-opacity": { "stops": [ [ 11, 0 ], [ 11.25, 1 ], [ 14, 1 ], [ 14.01, 0 ] ] } - } - }, - { - "id": "road-street_limited-low", - "type": "line", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "source": "streets-cn", - "source-layer": "road", - "minzoom": 11, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "class", "street_limited" ], [ "==", "structure", "none" ] ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12.5, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-opacity": { "stops": [ [ 11, 0 ], [ 11.25, 1 ], [ 14, 1 ], [ 14.01, 0 ] ] } - } - }, - { - "id": "road-service-link-track-case", - "type": "line", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "source": "streets-cn", - "source-layer": "road", - "minzoom": 14, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "!=", "type", "trunk_link" ], - [ "!in", "structure", "bridge", "tunnel" ], - [ "in", "class", "link", "service", "track" ] - ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12, 0.75 ], [ 20, 2 ] ] }, - "line-color": "hsl(230, 24%, 87%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 14, 0.5 ], [ 18, 12 ] ] } - } - }, - { - "id": "road-street_limited-case", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "ref": "road-street_limited-low", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12, 0.75 ], [ 20, 2 ] ] }, - "line-color": "hsl(230, 24%, 87%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 13, 0 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-opacity": { "base": 1, "stops": [ [ 13.99, 0 ], [ 14, 1 ] ] } - } - }, - { - "id": "road-street-case", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "ref": "road-street-low", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12, 0.75 ], [ 20, 2 ] ] }, - "line-color": "hsl(230, 24%, 87%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 13, 0 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-opacity": { "base": 1, "stops": [ [ 13.99, 0 ], [ 14, 1 ] ] } - } - }, - { - "id": "road-secondary-tertiary-case", - "type": "line", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "source": "streets-cn", - "source-layer": "road", - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "!in", "structure", "bridge", "tunnel" ], - [ "in", "class", "secondary", "tertiary" ] - ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.2, "stops": [ [ 10, 0.75 ], [ 18, 2 ] ] }, - "line-color": "hsl(230, 24%, 87%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 8.5, 0.5 ], [ 10, 0.75 ], [ 18, 26 ] ] }, - "line-opacity": { "base": 1, "stops": [ [ 9.99, 0 ], [ 10, 1 ] ] } - } - }, - { - "id": "road-primary-case", - "type": "line", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "source": "streets-cn", - "source-layer": "road", - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "!in", "structure", "bridge", "tunnel" ], [ "==", "class", "primary" ] ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 10, 1 ], [ 16, 2 ] ] }, - "line-color": "hsl(230, 24%, 87%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] }, - "line-opacity": { "base": 1, "stops": [ [ 9.99, 0 ], [ 10, 1 ] ] } - } - }, - { - "id": "road-motorway_link-case", - "type": "line", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "source": "streets-cn", - "source-layer": "road", - "minzoom": 10, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "!in", "structure", "bridge", "tunnel" ], [ "==", "class", "motorway_link" ] ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12, 0.75 ], [ 20, 2 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 12, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-opacity": { "base": 1, "stops": [ [ 10.99, 0 ], [ 11, 1 ] ] } - } - }, - { - "id": "road-trunk_link-case", - "type": "line", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "source": "streets-cn", - "source-layer": "road", - "minzoom": 11, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "!in", "structure", "bridge", "tunnel" ], [ "==", "type", "trunk_link" ] ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12, 0.75 ], [ 20, 2 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 12, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-opacity": { "base": 1, "stops": [ [ 10.99, 0 ], [ 11, 1 ] ] } - } - }, - { - "id": "road-trunk-case", - "type": "line", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "source": "streets-cn", - "source-layer": "road", - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "!in", "structure", "bridge", "tunnel" ], [ "==", "class", "trunk" ] ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 10, 1 ], [ 16, 2 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] }, - "line-opacity": { "base": 1, "stops": [ [ 6, 0 ], [ 6.1, 1 ] ] } - } - }, - { - "id": "road-motorway-case", - "type": "line", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "source": "streets-cn", - "source-layer": "road", - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "!in", "structure", "bridge", "tunnel" ], [ "==", "class", "motorway" ] ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 10, 1 ], [ 16, 2 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] } - } - }, - { - "id": "road-construction", - "type": "line", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "source": "streets-cn", - "source-layer": "road", - "minzoom": 14, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "class", "construction" ], [ "==", "structure", "none" ] ] - ], - "layout": { "line-join": "miter" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12.5, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-color": "hsl(230, 24%, 87%)", - "line-opacity": { "base": 1, "stops": [ [ 13.99, 0 ], [ 14, 1 ] ] }, - "line-dasharray": { - "base": 1, - "stops": [ - [ 14, [ 0.4, 0.8 ] ], - [ 15, [ 0.3, 0.6 ] ], - [ 16, [ 0.2, 0.3 ] ], - [ 17, [ 0.2, 0.25 ] ], - [ 18, [ 0.15, 0.15 ] ] - ] - } - } - }, - { - "id": "road-sidewalks", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "ref": "road-sidewalk-bg", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 15, 1 ], [ 18, 4 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-dasharray": { - "base": 1, - "stops": [ [ 14, [ 1, 0 ] ], [ 15, [ 1.75, 1 ] ], [ 16, [ 1, 0.75 ] ], [ 17, [ 1, 0.5 ] ] ] - }, - "line-opacity": { "base": 1, "stops": [ [ 16, 0 ], [ 16.25, 1 ] ] } - } - }, - { - "id": "road-path", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "ref": "road-path-bg", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 15, 1 ], [ 18, 4 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-dasharray": { - "base": 1, - "stops": [ [ 14, [ 1, 0 ] ], [ 15, [ 1.75, 1 ] ], [ 16, [ 1, 0.75 ] ], [ 17, [ 1, 0.5 ] ] ] - }, - "line-opacity": { "base": 1, "stops": [ [ 14, 0 ], [ 14.25, 1 ] ] } - } - }, - { - "id": "road-steps", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "ref": "road-steps-bg", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 15, 1 ], [ 16, 1.6 ], [ 18, 6 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-dasharray": { - "base": 1, - "stops": [ [ 14, [ 1, 0 ] ], [ 15, [ 1.75, 1 ] ], [ 16, [ 1, 0.75 ] ], [ 17, [ 0.3, 0.3 ] ] ] - }, - "line-opacity": { "base": 1, "stops": [ [ 14, 0 ], [ 14.25, 1 ] ] } - } - }, - { - "id": "road-trunk_link", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "ref": "road-trunk_link-case", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-color": "hsl(46, 85%, 67%)", - "line-opacity": 1 - } - }, - { - "id": "road-motorway_link", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "ref": "road-motorway_link-case", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-color": "hsl(26, 100%, 68%)", - "line-opacity": 1 - } - }, - { - "id": "road-pedestrian", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "ref": "road-pedestrian-case", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 14, 0.5 ], [ 18, 12 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-opacity": 1, - "line-dasharray": { "base": 1, "stops": [ [ 14, [ 1, 0 ] ], [ 15, [ 1.5, 0.4 ] ], [ 16, [ 1, 0.2 ] ] ] } - } - }, - { - "id": "road-pedestrian-polygon-fill", - "type": "fill", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "source": "streets-cn", - "source-layer": "road", - "minzoom": 12, - "filter": [ - "all", - [ "==", "$type", "Polygon" ], - [ "all", [ "==", "structure", "none" ], [ "in", "class", "path", "pedestrian" ] ] - ], - "layout": {}, - "paint": { - "fill-color": { "base": 1, "stops": [ [ 16, "hsl(230, 16%, 94%)" ], [ 16.25, "hsl(230, 50%, 98%)" ] ] }, - "fill-outline-color": "hsl(230, 26%, 88%)", - "fill-opacity": 1 - } - }, - { - "id": "road-pedestrian-polygon-pattern", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "ref": "road-pedestrian-polygon-fill", - "paint": { - "fill-color": "hsl(0, 0%, 100%)", - "fill-outline-color": "hsl(35, 10%, 83%)", - "fill-pattern": "pedestrian-polygon", - "fill-opacity": { "base": 1, "stops": [ [ 16, 0 ], [ 16.25, 1 ] ] } - } - }, - { - "id": "road-polygon", - "type": "fill", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "source": "streets-cn", - "source-layer": "road", - "minzoom": 12, - "filter": [ - "all", - [ "==", "$type", "Polygon" ], - [ - "all", - [ "!in", "class", "motorway", "path", "pedestrian", "trunk" ], - [ "!in", "structure", "bridge", "tunnel" ] - ] - ], - "layout": {}, - "paint": { "fill-color": "hsl(0, 0%, 100%)", "fill-outline-color": "#d6d9e6" } - }, - { - "id": "road-service-link-track", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "ref": "road-service-link-track-case", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 14, 0.5 ], [ 18, 12 ] ] }, - "line-color": "hsl(0, 0%, 100%)" - } - }, - { - "id": "road-street_limited", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "ref": "road-street_limited-low", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12.5, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-color": "hsl(35, 14%, 93%)", - "line-opacity": { "base": 1, "stops": [ [ 13.99, 0 ], [ 14, 1 ] ] } - } - }, - { - "id": "road-street", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "ref": "road-street-low", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12.5, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-opacity": { "base": 1, "stops": [ [ 13.99, 0 ], [ 14, 1 ] ] } - } - }, - { - "id": "road-secondary-tertiary", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "ref": "road-secondary-tertiary-case", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 8.5, 0.5 ], [ 10, 0.75 ], [ 18, 26 ] ] }, - "line-color": { "base": 1, "stops": [ [ 5, "hsl(35, 32%, 91%)" ], [ 8, "hsl(0, 0%, 100%)" ] ] }, - "line-opacity": { "base": 1.2, "stops": [ [ 5, 0 ], [ 5.5, 1 ] ] } - } - }, - { - "id": "road-primary", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "ref": "road-primary-case", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] }, - "line-color": { "base": 1, "stops": [ [ 5, "hsl(35, 32%, 91%)" ], [ 7, "hsl(0, 0%, 100%)" ] ] }, - "line-opacity": 1 - } - }, - { - "id": "road-oneway-arrows-blue-minor", - "type": "symbol", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "source": "streets-cn", - "source-layer": "road", - "minzoom": 16, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "!=", "type", "trunk_link" ], - [ "!in", "structure", "bridge", "tunnel" ], - [ "==", "oneway", "true" ], - [ "in", "class", "link", "path", "pedestrian", "service", "track" ] - ] - ], - "layout": { - "symbol-placement": "line", - "icon-image": { "base": 1, "stops": [ [ 17, "oneway-small" ], [ 18, "oneway-large" ] ] }, - "icon-rotation-alignment": "map", - "icon-padding": 2, - "symbol-spacing": 200 - }, - "paint": {} - }, - { - "id": "road-oneway-arrows-blue-major", - "type": "symbol", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "source": "streets-cn", - "source-layer": "road", - "minzoom": 15, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "!=", "type", "trunk_link" ], - [ "!in", "structure", "bridge", "tunnel" ], - [ "==", "oneway", "true" ], - [ "in", "class", "primary", "secondary", "street", "street_limited", "tertiary" ] - ] - ], - "layout": { - "symbol-placement": "line", - "icon-image": { "base": 1, "stops": [ [ 16, "oneway-small" ], [ 17, "oneway-large" ] ] }, - "icon-rotation-alignment": "map", - "icon-padding": 2, - "symbol-spacing": 200 - }, - "paint": {} - }, - { - "id": "road-trunk", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "ref": "road-trunk-case", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] }, - "line-color": { - "base": 1, - "stops": [ [ 6, "hsl(0, 0%, 100%)" ], [ 6.1, "hsl(46, 80%, 60%)" ], [ 9, "hsl(46, 85%, 67%)" ] ] - } - } - }, - { - "id": "road-motorway", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "ref": "road-motorway-case", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] }, - "line-color": { "base": 1, "stops": [ [ 8, "hsl(26, 87%, 62%)" ], [ 9, "hsl(26, 100%, 68%)" ] ] } - } - }, - { - "id": "road-rail", - "type": "line", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "source": "streets-cn", - "source-layer": "road", - "minzoom": 13, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "!in", "structure", "bridge", "tunnel" ], - [ "in", "class", "major_rail", "minor_rail" ] - ] - ], - "layout": { "line-join": "round" }, - "paint": { - "line-color": { "stops": [ [ 13, "hsl(50, 17%, 82%)" ], [ 16, "hsl(230, 10%, 74%)" ] ] }, - "line-width": { "base": 1.5, "stops": [ [ 14, 0.5 ], [ 20, 1 ] ] } - } - }, - { - "id": "road-rail-tracks", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "ref": "road-rail", - "paint": { - "line-color": { "stops": [ [ 13, "hsl(50, 17%, 82%)" ], [ 16, "hsl(230, 10%, 74%)" ] ] }, - "line-width": { "base": 1.5, "stops": [ [ 14, 4 ], [ 20, 8 ] ] }, - "line-dasharray": [ 0.1, 15 ], - "line-opacity": { "base": 1, "stops": [ [ 13.75, 0 ], [ 14, 1 ] ] } - } - }, - { - "id": "level-crossings", - "type": "symbol", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "source": "streets-cn", - "source-layer": "road", - "minzoom": 16, - "filter": [ "all", [ "==", "$type", "Point" ], [ "==", "class", "level_crossing" ] ], - "layout": { "icon-size": 1, "icon-image": "level-crossing", "icon-allow-overlap": true }, - "paint": {} - }, - { - "id": "road-oneway-arrows-white", - "type": "symbol", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "source": "streets-cn", - "source-layer": "road", - "minzoom": 16, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "!in", "structure", "bridge", "tunnel" ], - [ "!in", "type", "primary_link", "secondary_link", "tertiary_link" ], - [ "==", "oneway", "true" ], - [ "in", "class", "link", "motorway", "motorway_link", "trunk" ] - ] - ], - "layout": { - "symbol-placement": "line", - "icon-image": { "base": 1, "stops": [ [ 16, "oneway-white-small" ], [ 17, "oneway-white-large" ] ] }, - "icon-padding": 2, - "symbol-spacing": 200 - }, - "paint": {} - }, - { - "id": "turning-features", - "type": "symbol", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "source": "streets-cn", - "source-layer": "road", - "minzoom": 15, - "filter": [ "all", [ "==", "$type", "Point" ], [ "in", "class", "turning_circle", "turning_loop" ] ], - "layout": { - "icon-image": "turning-circle", - "icon-size": { "base": 1.5, "stops": [ [ 14, 0.095 ], [ 18, 1 ] ] }, - "icon-allow-overlap": true, - "icon-ignore-placement": true, - "icon-padding": 0, - "icon-rotation-alignment": "map" - }, - "paint": {} - }, - { - "id": "bridge-path-bg", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "streets-cn", - "source-layer": "road", - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "!=", "type", "steps" ], - [ "==", "class", "path" ], - [ "==", "structure", "bridge" ] - ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 15, 2 ], [ 18, 7 ] ] }, - "line-dasharray": [ 1, 0 ], - "line-color": "hsl(230, 17%, 82%)", - "line-blur": 0, - "line-opacity": { "base": 1, "stops": [ [ 15, 0 ], [ 15.25, 1 ] ] } - } - }, - { - "id": "bridge-steps-bg", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "streets-cn", - "source-layer": "road", - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "structure", "bridge" ], [ "==", "type", "steps" ] ] - ], - "layout": { "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 15, 2 ], [ 17, 4.6 ], [ 18, 7 ] ] }, - "line-color": "hsl(230, 17%, 82%)", - "line-dasharray": [ 1, 0 ], - "line-opacity": { "base": 1, "stops": [ [ 14, 0 ], [ 14.25, 0.75 ] ] } - } - }, - { - "id": "bridge-pedestrian-case", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "streets-cn", - "source-layer": "road", - "minzoom": 13, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "class", "pedestrian" ], [ "==", "structure", "bridge" ] ] - ], - "layout": { "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 14, 2 ], [ 18, 14.5 ] ] }, - "line-color": "hsl(230, 24%, 87%)", - "line-gap-width": 0, - "line-opacity": { "base": 1, "stops": [ [ 13.99, 0 ], [ 14, 1 ] ] } - } - }, - { - "id": "bridge-street-low", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "streets-cn", - "source-layer": "road", - "minzoom": 11, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "class", "street" ], [ "==", "structure", "bridge" ] ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12.5, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-opacity": { "stops": [ [ 11.5, 0 ], [ 12, 1 ], [ 14, 1 ], [ 14.01, 0 ] ] } - } - }, - { - "id": "bridge-street_limited-low", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "streets-cn", - "source-layer": "road", - "minzoom": 11, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "class", "street_limited" ], [ "==", "structure", "bridge" ] ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12.5, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-opacity": { "stops": [ [ 11.5, 0 ], [ 12, 1 ], [ 14, 1 ], [ 14.01, 0 ] ] } - } - }, - { - "id": "bridge-service-link-track-case", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "streets-cn", - "source-layer": "road", - "minzoom": 14, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "!=", "type", "trunk_link" ], - [ "==", "structure", "bridge" ], - [ "in", "class", "link", "service", "track" ] - ] - ], - "layout": { "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12, 0.75 ], [ 20, 2 ] ] }, - "line-color": "hsl(230, 24%, 87%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 14, 0.5 ], [ 18, 12 ] ] } - } - }, - { - "id": "bridge-street_limited-case", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "streets-cn", - "source-layer": "road", - "minzoom": 11, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "class", "street_limited" ], [ "==", "structure", "bridge" ] ] - ], - "layout": { "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12, 0.75 ], [ 20, 2 ] ] }, - "line-color": "hsl(230, 24%, 87%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 13, 0 ], [ 14, 2 ], [ 18, 18 ] ] } - } - }, - { - "id": "bridge-street-case", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "streets-cn", - "source-layer": "road", - "minzoom": 11, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "class", "street" ], [ "==", "structure", "bridge" ] ] - ], - "layout": { "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12, 0.75 ], [ 20, 2 ] ] }, - "line-color": "hsl(230, 24%, 87%)", - "line-opacity": { "base": 1, "stops": [ [ 13.99, 0 ], [ 14, 1 ] ] }, - "line-gap-width": { "base": 1.5, "stops": [ [ 13, 0 ], [ 14, 2 ], [ 18, 18 ] ] } - } - }, - { - "id": "bridge-secondary-tertiary-case", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "streets-cn", - "source-layer": "road", - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "structure", "bridge" ], [ "in", "class", "secondary", "tertiary" ] ] - ], - "layout": { "line-join": "round" }, - "paint": { - "line-width": { "base": 1.2, "stops": [ [ 10, 0.75 ], [ 18, 2 ] ] }, - "line-color": "hsl(230, 24%, 87%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 8.5, 0.5 ], [ 10, 0.75 ], [ 18, 26 ] ] }, - "line-translate": [ 0, 0 ] - } - }, - { - "id": "bridge-primary-case", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "streets-cn", - "source-layer": "road", - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "class", "primary" ], [ "==", "structure", "bridge" ] ] - ], - "layout": { "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 10, 1 ], [ 16, 2 ] ] }, - "line-color": "hsl(230, 24%, 87%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] }, - "line-translate": [ 0, 0 ] - } - }, - { - "id": "bridge-trunk_link-case", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "streets-cn", - "source-layer": "road", - "minzoom": 13, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "!in", "layer", 2, 3, 4, 5 ], - [ "==", "structure", "bridge" ], - [ "==", "type", "trunk_link" ] - ] - ], - "layout": { "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12, 0.75 ], [ 20, 2 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 12, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-opacity": { "base": 1, "stops": [ [ 10.99, 0 ], [ 11, 1 ] ] } - } - }, - { - "id": "bridge-motorway_link-case", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "streets-cn", - "source-layer": "road", - "minzoom": 13, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "!in", "layer", 2, 3, 4, 5 ], - [ "==", "class", "motorway_link" ], - [ "==", "structure", "bridge" ] - ] - ], - "layout": { "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12, 0.75 ], [ 20, 2 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 12, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-opacity": 1 - } - }, - { - "id": "bridge-trunk-case", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "streets-cn", - "source-layer": "road", - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "!in", "layer", 2, 3, 4, 5 ], - [ "==", "class", "trunk" ], - [ "==", "structure", "bridge" ] - ] - ], - "layout": { "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 10, 1 ], [ 16, 2 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] } - } - }, - { - "id": "bridge-motorway-case", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "streets-cn", - "source-layer": "road", - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "!in", "layer", 2, 3, 4, 5 ], - [ "==", "class", "motorway" ], - [ "==", "structure", "bridge" ] - ] - ], - "layout": { "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 10, 1 ], [ 16, 2 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] } - } - }, - { - "id": "bridge-construction", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "streets-cn", - "source-layer": "road", - "minzoom": 14, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "class", "construction" ], [ "==", "structure", "bridge" ] ] - ], - "layout": { "line-join": "miter" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12.5, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-color": "hsl(230, 24%, 87%)", - "line-opacity": { "base": 1, "stops": [ [ 13.99, 0 ], [ 14, 1 ] ] }, - "line-dasharray": { - "base": 1, - "stops": [ - [ 14, [ 0.4, 0.8 ] ], - [ 15, [ 0.3, 0.6 ] ], - [ 16, [ 0.2, 0.3 ] ], - [ 17, [ 0.2, 0.25 ] ], - [ 18, [ 0.15, 0.15 ] ] - ] - } - } - }, - { - "id": "bridge-path", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "streets-cn", - "source-layer": "road", - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "!=", "type", "steps" ], - [ "==", "class", "path" ], - [ "==", "structure", "bridge" ] - ] - ], - "layout": { "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 15, 1 ], [ 18, 4 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-dasharray": { - "base": 1, - "stops": [ [ 14, [ 1, 0 ] ], [ 15, [ 1.75, 1 ] ], [ 16, [ 1, 0.75 ] ], [ 17, [ 1, 0.5 ] ] ] - }, - "line-opacity": { "base": 1, "stops": [ [ 14, 0 ], [ 14.25, 1 ] ] } - } - }, - { - "id": "bridge-steps", - "metadata": { "mapbox:group": "1444855799204.86" }, - "ref": "bridge-steps-bg", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 15, 1 ], [ 16, 1.6 ], [ 18, 6 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-dasharray": { - "base": 1, - "stops": [ [ 14, [ 1, 0 ] ], [ 15, [ 1.75, 1 ] ], [ 16, [ 1, 0.75 ] ], [ 17, [ 0.3, 0.3 ] ] ] - }, - "line-opacity": { "base": 1, "stops": [ [ 14, 0 ], [ 14.25, 1 ] ] } - } - }, - { - "id": "bridge-trunk_link", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "streets-cn", - "source-layer": "road", - "minzoom": 13, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "!in", "layer", 2, 3, 4, 5 ], - [ "==", "structure", "bridge" ], - [ "==", "type", "trunk_link" ] - ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-color": "hsl(46, 85%, 67%)" - } - }, - { - "id": "bridge-motorway_link", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "streets-cn", - "source-layer": "road", - "minzoom": 13, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "!in", "layer", 2, 3, 4, 5 ], - [ "==", "class", "motorway_link" ], - [ "==", "structure", "bridge" ] - ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-color": "hsl(26, 100%, 68%)" - } - }, - { - "id": "bridge-pedestrian", - "metadata": { "mapbox:group": "1444855799204.86" }, - "ref": "bridge-pedestrian-case", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 14, 0.5 ], [ 18, 12 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-opacity": 1, - "line-dasharray": { "base": 1, "stops": [ [ 14, [ 1, 0 ] ], [ 15, [ 1.5, 0.4 ] ], [ 16, [ 1, 0.2 ] ] ] } - } - }, - { - "id": "bridge-service-link-track", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "streets-cn", - "source-layer": "road", - "minzoom": 14, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "!=", "type", "trunk_link" ], - [ "==", "structure", "bridge" ], - [ "in", "class", "link", "service", "track" ] - ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 14, 0.5 ], [ 18, 12 ] ] }, - "line-color": "hsl(0, 0%, 100%)" - } - }, - { - "id": "bridge-street_limited", - "metadata": { "mapbox:group": "1444855799204.86" }, - "ref": "bridge-street_limited-low", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12.5, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-color": "hsl(35, 14%, 93%)", - "line-opacity": { "base": 1, "stops": [ [ 13.99, 0 ], [ 14, 1 ] ] } - } - }, - { - "id": "bridge-street", - "metadata": { "mapbox:group": "1444855799204.86" }, - "ref": "bridge-street-low", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12.5, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-opacity": { "base": 1, "stops": [ [ 13.99, 0 ], [ 14, 1 ] ] } - } - }, - { - "id": "bridge-secondary-tertiary", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "streets-cn", - "source-layer": "road", - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "structure", "bridge" ], [ "in", "type", "secondary", "tertiary" ] ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 8.5, 0.5 ], [ 10, 0.75 ], [ 18, 26 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-opacity": { "base": 1.2, "stops": [ [ 5, 0 ], [ 5.5, 1 ] ] } - } - }, - { - "id": "bridge-primary", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "streets-cn", - "source-layer": "road", - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "structure", "bridge" ], [ "==", "type", "primary" ] ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-opacity": 1 - } - }, - { - "id": "bridge-oneway-arrows-blue-minor", - "type": "symbol", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "streets-cn", - "source-layer": "road", - "minzoom": 16, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "==", "oneway", "true" ], - [ "==", "structure", "bridge" ], - [ "in", "class", "link", "path", "pedestrian", "service", "track" ] - ] - ], - "layout": { - "symbol-placement": "line", - "icon-image": { "base": 1, "stops": [ [ 17, "oneway-small" ], [ 18, "oneway-large" ] ] }, - "symbol-spacing": 200, - "icon-rotation-alignment": "map", - "icon-padding": 2 - }, - "paint": {} - }, - { - "id": "bridge-oneway-arrows-blue-major", - "type": "symbol", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "streets-cn", - "source-layer": "road", - "minzoom": 15, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "==", "oneway", "true" ], - [ "==", "structure", "bridge" ], - [ "in", "class", "primary", "secondary", "street", "street_limited", "tertiary" ] - ] - ], - "layout": { - "symbol-placement": "line", - "icon-image": { "base": 1, "stops": [ [ 16, "oneway-small" ], [ 17, "oneway-large" ] ] }, - "symbol-spacing": 200, - "icon-rotation-alignment": "map", - "icon-padding": 2 - }, - "paint": {} - }, - { - "id": "bridge-trunk", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "streets-cn", - "source-layer": "road", - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "!in", "layer", 2, 3, 4, 5 ], - [ "==", "class", "trunk" ], - [ "==", "structure", "bridge" ] - ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] }, - "line-color": "hsl(46, 85%, 67%)" - } - }, - { - "id": "bridge-motorway", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "streets-cn", - "source-layer": "road", - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "!in", "layer", 2, 3, 4, 5 ], - [ "==", "class", "motorway" ], - [ "==", "structure", "bridge" ] - ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] }, - "line-color": "hsl(26, 100%, 68%)" - } - }, - { - "id": "bridge-rail", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "streets-cn", - "source-layer": "road", - "minzoom": 13, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "structure", "bridge" ], [ "in", "class", "major_rail", "minor_rail" ] ] - ], - "layout": { "line-join": "round" }, - "paint": { - "line-color": { "stops": [ [ 13, "hsl(50, 17%, 82%)" ], [ 16, "hsl(230, 10%, 74%)" ] ] }, - "line-width": { "base": 1.5, "stops": [ [ 14, 0.5 ], [ 20, 1 ] ] } - } - }, - { - "id": "bridge-rail-tracks", - "metadata": { "mapbox:group": "1444855799204.86" }, - "ref": "bridge-rail", - "paint": { - "line-color": { "stops": [ [ 13, "hsl(50, 17%, 82%)" ], [ 16, "hsl(230, 10%, 74%)" ] ] }, - "line-width": { "base": 1.5, "stops": [ [ 14, 4 ], [ 20, 8 ] ] }, - "line-dasharray": [ 0.1, 15 ], - "line-opacity": { "base": 1, "stops": [ [ 13.75, 0 ], [ 20, 1 ] ] } - } - }, - { - "id": "bridge-trunk_link-2-case", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "streets-cn", - "source-layer": "road", - "minzoom": 13, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "==", "structure", "bridge" ], - [ "==", "type", "trunk_link" ], - [ ">=", "layer", 2 ] - ] - ], - "layout": { "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12, 0.75 ], [ 20, 2 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 12, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-opacity": { "base": 1, "stops": [ [ 10.99, 0 ], [ 11, 1 ] ] } - } - }, - { - "id": "bridge-motorway_link-2-case", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "streets-cn", - "source-layer": "road", - "minzoom": 13, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "==", "class", "motorway_link" ], - [ "==", "structure", "bridge" ], - [ ">=", "layer", 2 ] - ] - ], - "layout": { "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12, 0.75 ], [ 20, 2 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 12, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-opacity": 1 - } - }, - { - "id": "bridge-trunk-2-case", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "streets-cn", - "source-layer": "road", - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "==", "class", "trunk" ], - [ "==", "structure", "bridge" ], - [ ">=", "layer", 2 ] - ] - ], - "layout": { "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 10, 1 ], [ 16, 2 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] } - } - }, - { - "id": "bridge-motorway-2-case", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "streets-cn", - "source-layer": "road", - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "==", "class", "motorway" ], - [ "==", "structure", "bridge" ], - [ ">=", "layer", 2 ] - ] - ], - "layout": { "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 10, 1 ], [ 16, 2 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] } - } - }, - { - "id": "bridge-trunk_link-2", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "streets-cn", - "source-layer": "road", - "minzoom": 13, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "==", "structure", "bridge" ], - [ "==", "type", "trunk_link" ], - [ ">=", "layer", 2 ] - ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-color": "hsl(46, 85%, 67%)" - } - }, - { - "id": "bridge-motorway_link-2", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "streets-cn", - "source-layer": "road", - "minzoom": 13, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "==", "class", "motorway_link" ], - [ "==", "structure", "bridge" ], - [ ">=", "layer", 2 ] - ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-color": "hsl(26, 100%, 68%)" - } - }, - { - "id": "bridge-trunk-2", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "streets-cn", - "source-layer": "road", - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "==", "class", "trunk" ], - [ "==", "structure", "bridge" ], - [ ">=", "layer", 2 ] - ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] }, - "line-color": "hsl(46, 85%, 67%)" - } - }, - { - "id": "bridge-motorway-2", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "streets-cn", - "source-layer": "road", - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "==", "class", "motorway" ], - [ "==", "structure", "bridge" ], - [ ">=", "layer", 2 ] - ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] }, - "line-color": "hsl(26, 100%, 68%)" - } - }, - { - "id": "bridge-oneway-arrows-white", - "type": "symbol", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "streets-cn", - "source-layer": "road", - "minzoom": 16, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "!in", "type", "primary_link", "secondary_link", "tertiary_link" ], - [ "==", "oneway", "true" ], - [ "==", "structure", "bridge" ], - [ "in", "class", "link", "motorway", "motorway_link", "trunk" ] - ] - ], - "layout": { - "symbol-placement": "line", - "icon-image": { "base": 1, "stops": [ [ 16, "oneway-white-small" ], [ 17, "oneway-white-large" ] ] }, - "symbol-spacing": 200, - "icon-padding": 2 - }, - "paint": {} - }, - { - "id": "aerialway", - "type": "line", - "source": "streets-cn", - "source-layer": "road", - "minzoom": 13, - "filter": [ "all", [ "==", "$type", "LineString" ], [ "==", "class", "aerialway" ] ], - "layout": { "line-join": "round" }, - "paint": { - "line-color": "hsl(230, 10%, 74%)", - "line-width": { "base": 1.5, "stops": [ [ 14, 0.5 ], [ 20, 1 ] ] } - } - }, - { - "id": "admin-3-4-boundaries-bg", - "type": "line", - "metadata": { "mapbox:group": "1444934295202.7542" }, - "source": "streets-cn", - "source-layer": "admin", - "filter": [ "all", [ "==", "maritime", 0 ], [ ">=", "admin_level", 3 ] ], - "layout": { "line-join": "bevel" }, - "paint": { - "line-color": { "base": 1, "stops": [ [ 8, "hsl(35, 12%, 89%)" ], [ 16, "hsl(230, 49%, 90%)" ] ] }, - "line-width": { "base": 1, "stops": [ [ 7, 3.75 ], [ 12, 5.5 ] ] }, - "line-opacity": { "base": 1, "stops": [ [ 7, 0 ], [ 8, 0.75 ] ] }, - "line-dasharray": [ 1, 0 ], - "line-translate": [ 0, 0 ], - "line-blur": { "base": 1, "stops": [ [ 3, 0 ], [ 8, 3 ] ] } - } - }, - { - "id": "admin-2-boundaries-bg", - "type": "line", - "metadata": { "mapbox:group": "1444934295202.7542" }, - "source": "streets-cn", - "source-layer": "admin", - "minzoom": 1, - "filter": [ "all", [ "==", "admin_level", 2 ], [ "==", "maritime", 0 ] ], - "layout": { "line-join": "miter" }, - "paint": { - "line-width": { "base": 1, "stops": [ [ 3, 3.5 ], [ 10, 8 ] ] }, - "line-color": { "base": 1, "stops": [ [ 6, "hsl(35, 12%, 89%)" ], [ 8, "hsl(230, 49%, 90%)" ] ] }, - "line-opacity": { "base": 1, "stops": [ [ 3, 0 ], [ 4, 0.5 ] ] }, - "line-translate": [ 0, 0 ], - "line-blur": { "base": 1, "stops": [ [ 3, 0 ], [ 10, 2 ] ] } - } - }, - { - "id": "admin-3-4-boundaries", - "type": "line", - "metadata": { "mapbox:group": "1444934295202.7542" }, - "source": "streets-cn", - "source-layer": "admin", - "filter": [ "all", [ "==", "maritime", 0 ], [ ">=", "admin_level", 3 ] ], - "layout": { "line-join": "round", "line-cap": "round" }, - "paint": { - "line-dasharray": { "base": 1, "stops": [ [ 6, [ 2, 0 ] ], [ 7, [ 2, 2, 6, 2 ] ] ] }, - "line-width": { "base": 1, "stops": [ [ 7, 0.75 ], [ 12, 1.5 ] ] }, - "line-opacity": { "base": 1, "stops": [ [ 2, 0 ], [ 3, 1 ] ] }, - "line-color": { "base": 1, "stops": [ [ 3, "hsl(230, 14%, 77%)" ], [ 7, "hsl(230, 8%, 62%)" ] ] } - } - }, - { - "id": "admin-2-boundaries", - "type": "line", - "metadata": { "mapbox:group": "1444934295202.7542" }, - "source": "streets-cn", - "source-layer": "admin", - "minzoom": 1, - "filter": [ "all", [ "==", "admin_level", 2 ], [ "==", "disputed", 0 ], [ "==", "maritime", 0 ] ], - "layout": { "line-join": "round", "line-cap": "round" }, - "paint": { - "line-color": "hsl(230, 8%, 51%)", - "line-width": { "base": 1, "stops": [ [ 3, 0.5 ], [ 10, 2 ] ] } - } - }, - { - "id": "admin-2-boundaries-dispute", - "type": "line", - "metadata": { "mapbox:group": "1444934295202.7542" }, - "source": "streets-cn", - "source-layer": "admin", - "minzoom": 1, - "filter": [ "all", [ "==", "admin_level", 2 ], [ "==", "disputed", 1 ], [ "==", "maritime", 0 ] ], - "layout": { "line-join": "round" }, - "paint": { - "line-dasharray": [ 1.5, 1.5 ], - "line-color": "hsl(230, 8%, 51%)", - "line-width": { "base": 1, "stops": [ [ 3, 0.5 ], [ 10, 2 ] ] } - } - }, - { - "id": "housenum-label", - "type": "symbol", - "source": "streets-cn", - "source-layer": "housenum_label", - "minzoom": 17, - "layout": { - "text-field": "{house_num}", - "text-font": [ "DIN Offc Pro Italic", "Noto Sans CJK SC DemiLight", "Arial Unicode MS Regular" ], - "text-padding": 4, - "text-max-width": 7, - "text-size": 9.5 - }, - "paint": { - "text-color": "hsl(35, 2%, 69%)", - "text-halo-color": "hsl(35, 8%, 85%)", - "text-halo-width": 0.5, - "text-halo-blur": 0 - } - }, - { - "id": "waterway-label", - "type": "symbol", - "source": "streets-cn", - "source-layer": "waterway_label", - "minzoom": 12, - "filter": [ "in", "class", "canal", "river" ], - "layout": { - "text-field": "{name_zh}", - "text-font": [ "DIN Offc Pro Italic", "Noto Sans CJK SC DemiLight", "Arial Unicode MS Regular" ], - "symbol-placement": "line", - "text-max-angle": 30, - "text-size": { "base": 1, "stops": [ [ 13, 12 ], [ 18, 16 ] ] } - }, - "paint": { - "text-halo-width": 0.5, - "text-halo-color": "hsl(196, 80%, 70%)", - "text-color": "hsl(230, 48%, 44%)", - "text-halo-blur": 0.5 - } - }, - { - "id": "poi-scalerank4-l15", - "type": "symbol", - "metadata": { "mapbox:group": "1444933456003.5437" }, - "source": "streets-cn", - "source-layer": "poi_label", - "minzoom": 17, - "filter": [ - "all", - [ - "!in", - "maki", - "campsite", - "cemetery", - "dog-park", - "garden", - "golf", - "park", - "picnic-site", - "playground", - "zoo" - ], - [ "==", "scalerank", 4 ], - [ ">=", "localrank", 15 ] - ], - "layout": { - "text-line-height": 1.1, - "text-size": { "base": 1, "stops": [ [ 16, 11 ], [ 20, 13 ] ] }, - "icon-image": "{maki}-11", - "text-max-angle": 38, - "symbol-spacing": 250, - "text-font": [ "DIN Offc Pro Medium", "Noto Sans CJK SC Medium", "Arial Unicode MS Regular" ], - "text-padding": 2, - "text-offset": [ 0, 0.65 ], - "text-rotation-alignment": "viewport", - "text-anchor": "top", - "text-field": "{name_zh}", - "text-max-width": 8 - }, - "paint": { - "text-color": "hsl(26, 25%, 32%)", - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 0.5, - "text-halo-blur": 0.5 - } - }, - { - "id": "poi-scalerank4-l1", - "type": "symbol", - "metadata": { "mapbox:group": "1444933456003.5437" }, - "source": "streets-cn", - "source-layer": "poi_label", - "minzoom": 15, - "filter": [ - "all", - [ - "!in", - "maki", - "campsite", - "cemetery", - "dog-park", - "garden", - "golf", - "park", - "picnic-site", - "playground", - "zoo" - ], - [ "<=", "localrank", 14 ], - [ "==", "scalerank", 4 ] - ], - "layout": { - "text-line-height": 1.1, - "text-size": { "base": 1, "stops": [ [ 16, 11 ], [ 20, 13 ] ] }, - "icon-image": "{maki}-11", - "text-max-angle": 38, - "symbol-spacing": 250, - "text-font": [ "DIN Offc Pro Medium", "Noto Sans CJK SC Medium", "Arial Unicode MS Regular" ], - "text-padding": 1, - "text-offset": [ 0, 0.65 ], - "text-rotation-alignment": "viewport", - "text-anchor": "top", - "text-field": "{name_zh}", - "text-max-width": 8 - }, - "paint": { - "text-color": "hsl(26, 25%, 32%)", - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 0.5, - "text-halo-blur": 0.5 - } - }, - { - "id": "poi-parks_scalerank4", - "type": "symbol", - "metadata": { "mapbox:group": "1444933456003.5437" }, - "source": "streets-cn", - "source-layer": "poi_label", - "minzoom": 15, - "filter": [ - "all", - [ "==", "scalerank", 4 ], - [ - "in", - "maki", - "campsite", - "cemetery", - "dog-park", - "garden", - "golf", - "park", - "picnic-site", - "playground", - "zoo" - ] - ], - "layout": { - "text-line-height": 1.1, - "text-size": { "base": 1, "stops": [ [ 16, 11 ], [ 20, 13 ] ] }, - "icon-image": "{maki}-11", - "text-max-angle": 38, - "symbol-spacing": 250, - "text-font": [ "DIN Offc Pro Medium", "Noto Sans CJK SC Medium", "Arial Unicode MS Regular" ], - "text-padding": 1, - "text-offset": [ 0, 0.65 ], - "text-rotation-alignment": "viewport", - "text-anchor": "top", - "text-field": "{name_zh}", - "text-max-width": 8 - }, - "paint": { - "text-color": "hsl(100, 100%, 20%)", - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 0.5, - "text-halo-blur": 0.5 - } - }, - { - "id": "poi-scalerank3", - "type": "symbol", - "metadata": { "mapbox:group": "1444933372896.5967" }, - "source": "streets-cn", - "source-layer": "poi_label", - "filter": [ - "all", - [ - "!in", - "maki", - "campsite", - "cemetery", - "dog-park", - "garden", - "golf", - "park", - "picnic-site", - "playground", - "zoo" - ], - [ "==", "scalerank", 3 ] - ], - "layout": { - "text-line-height": 1.1, - "text-size": { "base": 1, "stops": [ [ 16, 11 ], [ 20, 13 ] ] }, - "icon-image": "{maki}-11", - "text-max-angle": 38, - "symbol-spacing": 250, - "text-font": [ "DIN Offc Pro Medium", "Noto Sans CJK SC Medium", "Arial Unicode MS Regular" ], - "text-padding": 1, - "text-offset": [ 0, 0.65 ], - "text-rotation-alignment": "viewport", - "text-anchor": "top", - "text-field": "{name_zh}", - "text-max-width": 8 - }, - "paint": { - "text-color": "hsl(26, 25%, 32%)", - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 0.5, - "text-halo-blur": 0.5 - } - }, - { - "id": "poi-parks-scalerank3", - "type": "symbol", - "metadata": { "mapbox:group": "1444933372896.5967" }, - "source": "streets-cn", - "source-layer": "poi_label", - "filter": [ - "all", - [ "==", "scalerank", 3 ], - [ - "in", - "maki", - "campsite", - "cemetery", - "dog-park", - "garden", - "golf", - "park", - "picnic-site", - "playground", - "zoo" - ] - ], - "layout": { - "text-line-height": 1.1, - "text-size": { "base": 1, "stops": [ [ 16, 11 ], [ 20, 13 ] ] }, - "icon-image": "{maki}-11", - "text-max-angle": 38, - "symbol-spacing": 250, - "text-font": [ "DIN Offc Pro Medium", "Noto Sans CJK SC Medium", "Arial Unicode MS Regular" ], - "text-padding": 2, - "text-offset": [ 0, 0.65 ], - "text-rotation-alignment": "viewport", - "text-anchor": "top", - "text-field": "{name_zh}", - "text-max-width": 8 - }, - "paint": { - "text-color": "hsl(100, 100%, 20%)", - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 0.5, - "text-halo-blur": 0.5 - } - }, - { - "id": "road-label-small", - "type": "symbol", - "metadata": { "mapbox:group": "1444933721429.3076" }, - "source": "streets-cn", - "source-layer": "road_label", - "minzoom": 15, - "filter": [ - "all", - [ - "!in", - "class", - "link", - "motorway", - "pedestrian", - "primary", - "secondary", - "street", - "street_limited", - "tertiary", - "trunk" - ], - [ "==", "$type", "LineString" ] - ], - "layout": { - "text-size": { "base": 1, "stops": [ [ 15, 10 ], [ 20, 13 ] ] }, - "text-max-angle": 30, - "symbol-spacing": 250, - "text-font": [ "DIN Offc Pro Regular", "Noto Sans CJK SC DemiLight", "Arial Unicode MS Regular" ], - "symbol-placement": "line", - "text-padding": 1, - "text-rotation-alignment": "map", - "text-field": "{name_zh}" - }, - "paint": { - "text-color": "hsl(0, 0%, 0%)", - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 1.25, - "text-halo-blur": 1 - } - }, - { - "id": "road-label-medium", - "type": "symbol", - "metadata": { "mapbox:group": "1444933721429.3076" }, - "source": "streets-cn", - "source-layer": "road_label", - "minzoom": 11, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "in", "class", "link", "pedestrian", "street", "street_limited" ] - ], - "layout": { - "text-size": { "base": 1, "stops": [ [ 11, 10 ], [ 20, 14 ] ] }, - "text-max-angle": 30, - "symbol-spacing": 250, - "text-font": [ "DIN Offc Pro Regular", "Noto Sans CJK SC DemiLight", "Arial Unicode MS Regular" ], - "symbol-placement": "line", - "text-padding": 1, - "text-rotation-alignment": "map", - "text-field": "{name_zh}" - }, - "paint": { - "text-color": "hsl(0, 0%, 0%)", - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 1 - } - }, - { - "id": "road-label-large", - "type": "symbol", - "metadata": { "mapbox:group": "1444933721429.3076" }, - "source": "streets-cn", - "source-layer": "road_label", - "filter": [ "in", "class", "motorway", "primary", "secondary", "tertiary", "trunk" ], - "layout": { - "text-size": { "base": 1, "stops": [ [ 9, 10 ], [ 20, 16 ] ] }, - "text-max-angle": 30, - "symbol-spacing": 250, - "text-font": [ "DIN Offc Pro Regular", "Noto Sans CJK SC DemiLight", "Arial Unicode MS Regular" ], - "symbol-placement": "line", - "text-padding": 1, - "text-rotation-alignment": "map", - "text-field": "{name_zh}" - }, - "paint": { - "text-color": "hsl(0, 0%, 0%)", - "text-halo-color": "hsla(0, 0%, 100%, 0.75)", - "text-halo-width": 1, - "text-halo-blur": 1 - } - }, - { - "id": "road-shields-black", - "type": "symbol", - "metadata": { "mapbox:group": "1444933575858.6992" }, - "source": "streets-cn", - "source-layer": "road_label", - "filter": [ - "all", - [ - "!in", - "shield", - "at-expressway", - "at-motorway", - "at-state-b", - "bg-motorway", - "bg-national", - "ch-main", - "ch-motorway", - "cz-motorway", - "cz-road", - "de-motorway", - "e-road", - "fi-main", - "gr-motorway", - "gr-national", - "hr-motorway", - "hr-state", - "hu-main", - "hu-motorway", - "nz-state", - "pl-expressway", - "pl-motorway", - "pl-national", - "ro-county", - "ro-motorway", - "ro-national", - "rs-motorway", - "rs-state-1b", - "se-main", - "si-expressway", - "si-motorway", - "sk-highway", - "sk-road", - "us-interstate", - "us-interstate-business", - "us-interstate-duplex", - "us-interstate-truck", - "za-metropolitan", - "za-national", - "za-provincial", - "za-regional" - ], - [ "<=", "reflen", 6 ] - ], - "layout": { - "text-size": 9, - "icon-image": "{shield}-{reflen}", - "icon-rotation-alignment": "viewport", - "text-max-angle": 38, - "symbol-spacing": { "base": 1, "stops": [ [ 11, 150 ], [ 14, 200 ] ] }, - "text-font": [ "DIN Offc Pro Bold", "Noto Sans CJK SC Medium", "Arial Unicode MS Bold" ], - "symbol-placement": { "base": 1, "stops": [ [ 10, "point" ], [ 11, "line" ] ] }, - "text-padding": 2, - "text-rotation-alignment": "viewport", - "text-field": "{ref}", - "text-letter-spacing": 0.05, - "icon-padding": 2 - }, - "paint": { - "text-color": "hsl(0, 0%, 7%)", - "icon-halo-color": "rgba(0, 0, 0, 1)", - "icon-halo-width": 1, - "text-opacity": 1, - "icon-color": "white", - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 0 - } - }, - { - "id": "road-shields-white", - "type": "symbol", - "metadata": { "mapbox:group": "1444933575858.6992" }, - "source": "streets-cn", - "source-layer": "road_label", - "filter": [ - "all", - [ "<=", "reflen", 6 ], - [ - "in", - "shield", - "at-expressway", - "at-motorway", - "at-state-b", - "bg-motorway", - "bg-national", - "ch-main", - "ch-motorway", - "cz-motorway", - "cz-road", - "de-motorway", - "e-road", - "fi-main", - "gr-motorway", - "gr-national", - "hr-motorway", - "hr-state", - "hu-main", - "hu-motorway", - "nz-state", - "pl-expressway", - "pl-motorway", - "pl-national", - "ro-county", - "ro-motorway", - "ro-national", - "rs-motorway", - "rs-state-1b", - "se-main", - "si-expressway", - "si-motorway", - "sk-highway", - "sk-road", - "us-interstate", - "us-interstate-business", - "us-interstate-duplex", - "us-interstate-truck", - "za-metropolitan", - "za-national", - "za-provincial", - "za-regional" - ] - ], - "layout": { - "text-size": 9, - "icon-image": "{shield}-{reflen}", - "icon-rotation-alignment": "viewport", - "text-max-angle": 38, - "symbol-spacing": { "base": 1, "stops": [ [ 11, 150 ], [ 14, 200 ] ] }, - "text-font": [ "DIN Offc Pro Bold", "Noto Sans CJK SC Medium", "Arial Unicode MS Bold" ], - "symbol-placement": { "base": 1, "stops": [ [ 10, "point" ], [ 11, "line" ] ] }, - "text-padding": 2, - "text-rotation-alignment": "viewport", - "text-field": "{ref}", - "text-letter-spacing": 0.05, - "icon-padding": 2 - }, - "paint": { - "text-color": "hsl(0, 0%, 100%)", - "icon-halo-color": "rgba(0, 0, 0, 1)", - "icon-halo-width": 1, - "text-opacity": 1, - "icon-color": "white", - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 0 - } - }, - { - "id": "motorway-junction", - "type": "symbol", - "metadata": { "mapbox:group": "1444933575858.6992" }, - "source": "streets-cn", - "source-layer": "motorway_junction", - "minzoom": 14, - "filter": [ ">", "reflen", 0 ], - "layout": { - "text-field": "{ref}", - "text-size": 9, - "icon-image": "motorway-exit-{reflen}", - "text-font": [ "DIN Offc Pro Bold", "Noto Sans CJK SC Medium", "Arial Unicode MS Bold" ] - }, - "paint": { "text-color": "hsl(0, 0%, 100%)", "text-translate": [ 0, 0 ] } - }, - { - "id": "poi-scalerank2", - "type": "symbol", - "metadata": { "mapbox:group": "1444933358918.2366" }, - "source": "streets-cn", - "source-layer": "poi_label", - "filter": [ - "all", - [ - "!in", - "maki", - "campsite", - "cemetery", - "dog-park", - "garden", - "golf", - "park", - "picnic-site", - "playground", - "zoo" - ], - [ "==", "scalerank", 2 ] - ], - "layout": { - "text-line-height": 1.1, - "text-size": { "base": 1, "stops": [ [ 14, 11 ], [ 20, 14 ] ] }, - "icon-image": { "stops": [ [ 14, "{maki}-11" ], [ 15, "{maki}-15" ] ] }, - "text-max-angle": 38, - "symbol-spacing": 250, - "text-font": [ "DIN Offc Pro Medium", "Noto Sans CJK SC Medium", "Arial Unicode MS Regular" ], - "text-padding": 2, - "text-offset": [ 0, 0.65 ], - "text-rotation-alignment": "viewport", - "text-anchor": "top", - "text-field": "{name_zh}", - "text-max-width": 8 - }, - "paint": { - "text-color": "hsl(26, 25%, 32%)", - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 0.5, - "text-halo-blur": 0.5 - } - }, - { - "id": "poi-parks-scalerank2", - "type": "symbol", - "metadata": { "mapbox:group": "1444933358918.2366" }, - "source": "streets-cn", - "source-layer": "poi_label", - "filter": [ - "all", - [ "==", "scalerank", 2 ], - [ - "in", - "maki", - "campsite", - "cemetery", - "dog-park", - "garden", - "golf", - "park", - "picnic-site", - "playground", - "zoo" - ] - ], - "layout": { - "text-line-height": 1.1, - "text-size": { "base": 1, "stops": [ [ 14, 11 ], [ 20, 14 ] ] }, - "icon-image": { "stops": [ [ 14, "{maki}-11" ], [ 15, "{maki}-15" ] ] }, - "text-max-angle": 38, - "symbol-spacing": 250, - "text-font": [ "DIN Offc Pro Medium", "Noto Sans CJK SC Medium", "Arial Unicode MS Regular" ], - "text-padding": 2, - "text-offset": [ 0, 0.65 ], - "text-rotation-alignment": "viewport", - "text-anchor": "top", - "text-field": "{name_zh}", - "text-max-width": 8 - }, - "paint": { - "text-color": "hsl(100, 100%, 20%)", - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 0.5, - "text-halo-blur": 0.5 - } - }, - { - "id": "rail-label", - "type": "symbol", - "source": "streets-cn", - "source-layer": "rail_station_label", - "minzoom": 12, - "filter": [ "!=", "maki", "entrance" ], - "layout": { - "text-line-height": 1.1, - "text-size": { "base": 1, "stops": [ [ 16, 11 ], [ 20, 13 ] ] }, - "icon-image": "{network}", - "symbol-spacing": 250, - "text-font": [ "DIN Offc Pro Medium", "Noto Sans CJK SC Medium", "Arial Unicode MS Regular" ], - "text-offset": [ 0, 0.85 ], - "text-rotation-alignment": "viewport", - "text-anchor": "top", - "text-field": { "base": 1, "stops": [ [ 0, "" ], [ 13, "{name_zh}" ] ] }, - "icon-padding": 0, - "text-max-width": 7 - }, - "paint": { - "text-color": "hsl(230, 48%, 44%)", - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 0.5, - "icon-halo-width": 4, - "icon-halo-color": "#fff", - "text-opacity": { "base": 1, "stops": [ [ 13.99, 0 ], [ 14, 1 ] ] }, - "text-halo-blur": 0.5 - } - }, - { - "id": "water-label-sm", - "type": "symbol", - "metadata": { "mapbox:group": "1444933808272.805" }, - "source": "streets-cn", - "source-layer": "water_label", - "minzoom": 15, - "filter": [ "<=", "area", 10000 ], - "layout": { - "text-field": "{name_zh}", - "text-font": [ "DIN Offc Pro Italic", "Noto Sans CJK SC DemiLight", "Arial Unicode MS Regular" ], - "text-max-width": 7, - "text-size": { "base": 1, "stops": [ [ 16, 13 ], [ 20, 16 ] ] } - }, - "paint": { "text-color": "hsl(230, 48%, 44%)" } - }, - { - "id": "water-label", - "type": "symbol", - "metadata": { "mapbox:group": "1444933808272.805" }, - "source": "streets-cn", - "source-layer": "water_label", - "minzoom": 5, - "filter": [ ">", "area", 10000 ], - "layout": { - "text-field": "{name_zh}", - "text-font": [ "DIN Offc Pro Italic", "Noto Sans CJK SC DemiLight", "Arial Unicode MS Regular" ], - "text-max-width": 7, - "text-size": { "base": 1, "stops": [ [ 13, 13 ], [ 18, 18 ] ] } - }, - "paint": { "text-color": "hsl(230, 48%, 44%)" } - }, - { - "id": "place-residential", - "type": "symbol", - "source": "streets-cn", - "source-layer": "place_label", - "maxzoom": 18, - "filter": [ - "all", - [ "all", [ "<=", "localrank", 10 ], [ "==", "type", "residential" ] ], - [ "in", "$type", "LineString", "Point", "Polygon" ] - ], - "layout": { - "text-line-height": 1.2, - "text-size": { "base": 1, "stops": [ [ 10, 11 ], [ 18, 14 ] ] }, - "text-max-angle": 38, - "symbol-spacing": 250, - "text-font": [ "DIN Offc Pro Regular", "Noto Sans CJK SC DemiLight", "Arial Unicode MS Regular" ], - "text-padding": 2, - "text-offset": [ 0, 0 ], - "text-rotation-alignment": "viewport", - "text-field": "{name_zh}", - "text-max-width": 7 - }, - "paint": { - "text-color": "hsl(26, 25%, 32%)", - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 1, - "text-halo-blur": 0.5 - } - }, - { - "id": "poi-parks-scalerank1", - "type": "symbol", - "metadata": { "mapbox:group": "1444933322393.2852" }, - "source": "streets-cn", - "source-layer": "poi_label", - "filter": [ - "all", - [ "<=", "scalerank", 1 ], - [ - "in", - "maki", - "campsite", - "cemetery", - "dog-park", - "garden", - "golf", - "park", - "picnic-site", - "playground", - "zoo" - ] - ], - "layout": { - "text-line-height": 1.1, - "text-size": { "base": 1, "stops": [ [ 10, 11 ], [ 18, 14 ] ] }, - "icon-image": { "stops": [ [ 13, "{maki}-11" ], [ 14, "{maki}-15" ] ] }, - "text-max-angle": 38, - "symbol-spacing": 250, - "text-font": [ "DIN Offc Pro Medium", "Noto Sans CJK SC Medium", "Arial Unicode MS Regular" ], - "text-padding": 2, - "text-offset": [ 0, 0.65 ], - "text-rotation-alignment": "viewport", - "text-anchor": "top", - "text-field": "{name_zh}", - "text-max-width": 8 - }, - "paint": { - "text-color": "hsl(100, 100%, 20%)", - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 0.5, - "text-halo-blur": 0.5 - } - }, - { - "id": "poi-scalerank1", - "type": "symbol", - "metadata": { "mapbox:group": "1444933322393.2852" }, - "source": "streets-cn", - "source-layer": "poi_label", - "filter": [ - "all", - [ - "!in", - "maki", - "campsite", - "cemetery", - "dog-park", - "garden", - "golf", - "park", - "picnic-site", - "playground", - "zoo" - ], - [ "<=", "scalerank", 1 ] - ], - "layout": { - "text-line-height": 1.1, - "text-size": { "base": 1, "stops": [ [ 10, 11 ], [ 18, 14 ] ] }, - "icon-image": { "stops": [ [ 13, "{maki}-11" ], [ 14, "{maki}-15" ] ] }, - "text-max-angle": 38, - "symbol-spacing": 250, - "text-font": [ "DIN Offc Pro Medium", "Noto Sans CJK SC Medium", "Arial Unicode MS Regular" ], - "text-padding": 2, - "text-offset": [ 0, 0.65 ], - "text-rotation-alignment": "viewport", - "text-anchor": "top", - "text-field": "{name_zh}", - "text-max-width": 8 - }, - "paint": { - "text-color": "hsl(26, 25%, 32%)", - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 0.5, - "text-halo-blur": 0.5 - } - }, - { - "id": "airport-label", - "type": "symbol", - "source": "streets-cn", - "source-layer": "airport_label", - "minzoom": 9, - "filter": [ "<=", "scalerank", 2 ], - "layout": { - "text-line-height": 1.1, - "text-size": { "base": 1, "stops": [ [ 10, 12 ], [ 18, 18 ] ] }, - "icon-image": { "stops": [ [ 12, "{maki}-11" ], [ 13, "{maki}-15" ] ] }, - "symbol-spacing": 250, - "text-font": [ "DIN Offc Pro Medium", "Noto Sans CJK SC Medium", "Arial Unicode MS Regular" ], - "text-padding": 2, - "text-offset": [ 0, 0.75 ], - "text-rotation-alignment": "viewport", - "text-anchor": "top", - "text-field": { "stops": [ [ 11, "{ref}" ], [ 12, "{name_zh}" ] ] }, - "text-max-width": 9 - }, - "paint": { - "text-color": "hsl(230, 48%, 44%)", - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 0.5, - "text-halo-blur": 0.5 - } - }, - { - "id": "place-islet-archipelago-aboriginal", - "type": "symbol", - "source": "streets-cn", - "source-layer": "place_label", - "maxzoom": 16, - "filter": [ "in", "type", "aboriginal_lands", "archipelago", "islet" ], - "layout": { - "text-line-height": 1.2, - "text-size": { "base": 1, "stops": [ [ 10, 11 ], [ 18, 16 ] ] }, - "text-max-angle": 38, - "symbol-spacing": 250, - "text-font": [ "DIN Offc Pro Regular", "Noto Sans CJK SC DemiLight", "Arial Unicode MS Regular" ], - "text-padding": 2, - "text-offset": [ 0, 0 ], - "text-rotation-alignment": "viewport", - "text-field": "{name_zh}", - "text-max-width": 8 - }, - "paint": { - "text-color": "hsl(230, 29%, 35%)", - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 1 - } - }, - { - "id": "place-neighbourhood", - "type": "symbol", - "source": "streets-cn", - "source-layer": "place_label", - "minzoom": 10, - "maxzoom": 16, - "filter": [ "==", "type", "neighbourhood" ], - "layout": { - "text-field": "{name_zh}", - "text-transform": "uppercase", - "text-size": { "base": 1, "stops": [ [ 12, 11 ], [ 16, 16 ] ] }, - "text-max-width": 7, - "text-font": [ "DIN Offc Pro Regular", "Noto Sans CJK SC DemiLight", "Arial Unicode MS Regular" ], - "text-padding": 3 - }, - "paint": { - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 1, - "text-color": "hsl(230, 29%, 35%)", - "text-halo-blur": 0.5 - } - }, - { - "id": "place-suburb", - "type": "symbol", - "source": "streets-cn", - "source-layer": "place_label", - "minzoom": 10, - "maxzoom": 16, - "filter": [ "==", "type", "suburb" ], - "layout": { - "text-field": "{name_zh}", - "text-transform": "uppercase", - "text-font": [ "DIN Offc Pro Regular", "Noto Sans CJK SC DemiLight", "Arial Unicode MS Regular" ], - "text-size": { "base": 1, "stops": [ [ 11, 11 ], [ 15, 18 ] ] }, - "text-max-width": 7, - "text-padding": 3 - }, - "paint": { - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 1, - "text-color": "hsl(230, 29%, 35%)", - "text-halo-blur": 0.5 - } - }, - { - "id": "place-hamlet", - "type": "symbol", - "source": "streets-cn", - "source-layer": "place_label", - "minzoom": 10, - "maxzoom": 16, - "filter": [ "==", "type", "hamlet" ], - "layout": { - "text-field": "{name_zh}", - "text-font": [ "DIN Offc Pro Regular", "Noto Sans CJK SC DemiLight", "Arial Unicode MS Regular" ], - "text-size": { "base": 1, "stops": [ [ 12, 11.5 ], [ 15, 16 ] ] } - }, - "paint": { - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 1.25, - "text-color": "hsl(0, 0%, 0%)" - } - }, - { - "id": "place-village", - "type": "symbol", - "source": "streets-cn", - "source-layer": "place_label", - "minzoom": 8, - "maxzoom": 15, - "filter": [ "==", "type", "village" ], - "layout": { - "text-field": "{name_zh}", - "text-font": [ "DIN Offc Pro Regular", "Noto Sans CJK SC DemiLight", "Arial Unicode MS Regular" ], - "text-max-width": 7, - "text-size": { "base": 1, "stops": [ [ 10, 11.5 ], [ 16, 18 ] ] } - }, - "paint": { - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 1.25, - "text-color": "hsl(0, 0%, 0%)" - } - }, - { - "id": "place-town", - "type": "symbol", - "source": "streets-cn", - "source-layer": "place_label", - "minzoom": 6, - "maxzoom": 15, - "filter": [ "==", "type", "town" ], - "layout": { - "icon-image": "dot-9", - "text-font": { - "base": 1, - "stops": [ - [ - 11, - [ "DIN Offc Pro Regular", "Noto Sans CJK SC DemiLight", "Arial Unicode MS Regular" ] - ], - [ - 12, - [ "DIN Offc Pro Medium", "Noto Sans CJK SC Medium", "Arial Unicode MS Regular" ] - ] - ] - }, - "text-offset": { "base": 1, "stops": [ [ 7, [ 0, -0.25 ] ], [ 8, [ 0, 0 ] ] ] }, - "text-anchor": { "base": 1, "stops": [ [ 7, "bottom" ], [ 8, "center" ] ] }, - "text-field": "{name_zh}", - "text-max-width": 7, - "text-size": { "base": 1, "stops": [ [ 7, 11.5 ], [ 15, 20 ] ] } - }, - "paint": { - "text-color": "hsl(0, 0%, 0%)", - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 1.25, - "icon-opacity": { "base": 1, "stops": [ [ 7.99, 1 ], [ 8, 0 ] ] } - } - }, - { - "id": "place-island", - "type": "symbol", - "source": "streets-cn", - "source-layer": "place_label", - "maxzoom": 16, - "filter": [ "==", "type", "island" ], - "layout": { - "text-line-height": 1.2, - "text-size": { "base": 1, "stops": [ [ 10, 11 ], [ 18, 16 ] ] }, - "text-max-angle": 38, - "symbol-spacing": 250, - "text-font": [ "DIN Offc Pro Regular", "Noto Sans CJK SC DemiLight", "Arial Unicode MS Regular" ], - "text-padding": 2, - "text-offset": [ 0, 0 ], - "text-rotation-alignment": "viewport", - "text-field": "{name_zh}", - "text-max-width": 7 - }, - "paint": { - "text-color": "hsl(230, 29%, 35%)", - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 1 - } - }, - { - "id": "place-city-sm", - "type": "symbol", - "metadata": { "mapbox:group": "1444862510685.128" }, - "source": "streets-cn", - "source-layer": "place_label", - "maxzoom": 14, - "filter": [ "all", [ "!in", "scalerank", 0, 1, 2, 3, 4, 5 ], [ "==", "type", "city" ] ], - "layout": { - "text-size": { "base": 1, "stops": [ [ 6, 12 ], [ 14, 22 ] ] }, - "icon-image": "dot-9", - "text-font": { - "base": 1, - "stops": [ - [ - 7, - [ "DIN Offc Pro Regular", "Noto Sans CJK SC DemiLight", "Arial Unicode MS Regular" ] - ], - [ - 8, - [ "DIN Offc Pro Medium", "Noto Sans CJK SC Medium", "Arial Unicode MS Regular" ] - ] - ] - }, - "text-offset": { "base": 1, "stops": [ [ 7.99, [ 0, -0.3 ] ], [ 8, [ 0, 0 ] ] ] }, - "text-anchor": { "base": 1, "stops": [ [ 7, "bottom" ], [ 8, "center" ] ] }, - "text-field": "{name_zh}", - "text-max-width": 7 - }, - "paint": { - "text-color": "hsl(0, 0%, 0%)", - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 1.25, - "icon-opacity": { "base": 1, "stops": [ [ 7.99, 1 ], [ 8, 0 ] ] } - } - }, - { - "id": "place-city-md-s", - "type": "symbol", - "metadata": { "mapbox:group": "1444862510685.128" }, - "source": "streets-cn", - "source-layer": "place_label", - "maxzoom": 14, - "filter": [ - "all", - [ "==", "type", "city" ], - [ "in", "ldir", "E", "S", "SE", "SW" ], - [ "in", "scalerank", 3, 4, 5 ] - ], - "layout": { - "text-field": "{name_zh}", - "icon-image": "dot-10", - "text-anchor": { "base": 1, "stops": [ [ 7, "top" ], [ 8, "center" ] ] }, - "text-offset": { "base": 1, "stops": [ [ 7.99, [ 0, 0.1 ] ], [ 8, [ 0, 0 ] ] ] }, - "text-font": { - "base": 1, - "stops": [ - [ - 7, - [ "DIN Offc Pro Regular", "Noto Sans CJK SC DemiLight", "Arial Unicode MS Regular" ] - ], - [ - 8, - [ "DIN Offc Pro Medium", "Noto Sans CJK SC Medium", "Arial Unicode MS Regular" ] - ] - ] - }, - "text-size": { "base": 0.9, "stops": [ [ 5, 12 ], [ 12, 22 ] ] } - }, - "paint": { - "text-halo-width": 1, - "text-halo-color": "hsl(0, 0%, 100%)", - "text-color": "hsl(0, 0%, 0%)", - "text-halo-blur": 1, - "icon-opacity": { "base": 1, "stops": [ [ 7.99, 1 ], [ 8, 0 ] ] } - } - }, - { - "id": "place-city-md-n", - "type": "symbol", - "metadata": { "mapbox:group": "1444862510685.128" }, - "source": "streets-cn", - "source-layer": "place_label", - "maxzoom": 14, - "filter": [ - "all", - [ "==", "type", "city" ], - [ "in", "ldir", "N", "NE", "NW", "W" ], - [ "in", "scalerank", 3, 4, 5 ] - ], - "layout": { - "icon-image": "dot-10", - "text-font": { - "base": 1, - "stops": [ - [ - 7, - [ "DIN Offc Pro Regular", "Noto Sans CJK SC DemiLight", "Arial Unicode MS Regular" ] - ], - [ - 8, - [ "DIN Offc Pro Medium", "Noto Sans CJK SC Medium", "Arial Unicode MS Regular" ] - ] - ] - }, - "text-offset": { "base": 1, "stops": [ [ 7.99, [ 0, -0.35 ] ], [ 8, [ 0, 0 ] ] ] }, - "text-anchor": { "base": 1, "stops": [ [ 7, "bottom" ], [ 8, "center" ] ] }, - "text-field": "{name_zh}", - "text-max-width": 7, - "text-size": { "base": 0.9, "stops": [ [ 5, 12 ], [ 12, 22 ] ] } - }, - "paint": { - "text-color": "hsl(0, 0%, 0%)", - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 1, - "icon-opacity": { "base": 1, "stops": [ [ 7.99, 1 ], [ 8, 0 ] ] }, - "text-halo-blur": 1 - } - }, - { - "id": "place-city-lg-s", - "type": "symbol", - "metadata": { "mapbox:group": "1444862510685.128" }, - "source": "streets-cn", - "source-layer": "place_label", - "minzoom": 1, - "maxzoom": 14, - "filter": [ - "all", - [ "<=", "scalerank", 2 ], - [ "==", "type", "city" ], - [ "in", "ldir", "E", "S", "SE", "SW" ] - ], - "layout": { - "icon-image": "dot-11", - "text-font": { - "base": 1, - "stops": [ - [ - 7, - [ "DIN Offc Pro Regular", "Noto Sans CJK SC DemiLight", "Arial Unicode MS Regular" ] - ], - [ - 8, - [ "DIN Offc Pro Medium", "Noto Sans CJK SC Medium", "Arial Unicode MS Regular" ] - ] - ] - }, - "text-offset": { "base": 1, "stops": [ [ 7.99, [ 0, 0.15 ] ], [ 8, [ 0, 0 ] ] ] }, - "text-anchor": { "base": 1, "stops": [ [ 7, "top" ], [ 8, "center" ] ] }, - "text-field": "{name_zh}", - "text-max-width": 7, - "text-size": { "base": 0.9, "stops": [ [ 4, 12 ], [ 10, 22 ] ] } - }, - "paint": { - "text-color": "hsl(0, 0%, 0%)", - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 1, - "icon-opacity": { "base": 1, "stops": [ [ 7.99, 1 ], [ 8, 0 ] ] }, - "text-halo-blur": 1 - } - }, - { - "id": "place-city-lg-n", - "type": "symbol", - "metadata": { "mapbox:group": "1444862510685.128" }, - "source": "streets-cn", - "source-layer": "place_label", - "minzoom": 1, - "maxzoom": 14, - "filter": [ - "all", - [ "<=", "scalerank", 2 ], - [ "==", "type", "city" ], - [ "in", "ldir", "N", "NE", "NW", "W" ] - ], - "layout": { - "icon-image": "dot-11", - "text-font": { - "base": 1, - "stops": [ - [ - 7, - [ "DIN Offc Pro Regular", "Noto Sans CJK SC DemiLight", "Arial Unicode MS Regular" ] - ], - [ - 8, - [ "DIN Offc Pro Medium", "Noto Sans CJK SC Medium", "Arial Unicode MS Regular" ] - ] - ] - }, - "text-offset": { "base": 1, "stops": [ [ 7.99, [ 0, -0.35 ] ], [ 8, [ 0, 0 ] ] ] }, - "text-anchor": { "base": 1, "stops": [ [ 7, "bottom" ], [ 8, "center" ] ] }, - "text-field": "{name_zh}", - "text-max-width": 7, - "text-size": { "base": 0.9, "stops": [ [ 4, 12 ], [ 10, 22 ] ] } - }, - "paint": { - "text-color": "hsl(0, 0%, 0%)", - "text-opacity": 1, - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 1, - "icon-opacity": { "base": 1, "stops": [ [ 7.99, 1 ], [ 8, 0 ] ] }, - "text-halo-blur": 1 - } - }, - { - "id": "marine-label-sm-ln", - "type": "symbol", - "metadata": { "mapbox:group": "1444856087950.3635" }, - "source": "streets-cn", - "source-layer": "marine_label", - "minzoom": 3, - "maxzoom": 10, - "filter": [ "all", [ "==", "$type", "LineString" ], [ ">=", "labelrank", 4 ] ], - "layout": { - "text-line-height": 1.1, - "text-size": { "base": 1, "stops": [ [ 3, 12 ], [ 6, 16 ] ] }, - "symbol-spacing": { "base": 1, "stops": [ [ 4, 100 ], [ 6, 400 ] ] }, - "text-font": [ "DIN Offc Pro Italic", "Noto Sans CJK SC DemiLight", "Arial Unicode MS Regular" ], - "symbol-placement": "line", - "text-field": "{name_zh}", - "text-letter-spacing": 0.1, - "text-max-width": 5 - }, - "paint": { "text-color": "hsl(205, 83%, 88%)" } - }, - { - "id": "marine-label-sm-pt", - "type": "symbol", - "metadata": { "mapbox:group": "1444856087950.3635" }, - "source": "streets-cn", - "source-layer": "marine_label", - "minzoom": 3, - "maxzoom": 10, - "filter": [ "all", [ "==", "$type", "Point" ], [ ">=", "labelrank", 4 ] ], - "layout": { - "text-field": "{name_zh}", - "text-max-width": 5, - "text-letter-spacing": 0.1, - "text-line-height": 1.5, - "text-font": [ "DIN Offc Pro Italic", "Noto Sans CJK SC DemiLight", "Arial Unicode MS Regular" ], - "text-size": { "base": 1, "stops": [ [ 3, 12 ], [ 6, 16 ] ] } - }, - "paint": { "text-color": "hsl(205, 83%, 88%)" } - }, - { - "id": "marine-label-md-ln", - "type": "symbol", - "metadata": { "mapbox:group": "1444856087950.3635" }, - "source": "streets-cn", - "source-layer": "marine_label", - "minzoom": 2, - "maxzoom": 8, - "filter": [ "all", [ "==", "$type", "LineString" ], [ "in", "labelrank", 2, 3 ] ], - "layout": { - "text-line-height": 1.1, - "text-size": { "base": 1.1, "stops": [ [ 2, 12 ], [ 5, 20 ] ] }, - "symbol-spacing": 250, - "text-font": [ "DIN Offc Pro Italic", "Noto Sans CJK SC DemiLight", "Arial Unicode MS Regular" ], - "symbol-placement": "line", - "text-field": "{name_zh}", - "text-letter-spacing": 0.15, - "text-max-width": 5 - }, - "paint": { "text-color": "hsl(205, 83%, 88%)" } - }, - { - "id": "marine-label-md-pt", - "type": "symbol", - "metadata": { "mapbox:group": "1444856087950.3635" }, - "source": "streets-cn", - "source-layer": "marine_label", - "minzoom": 2, - "maxzoom": 8, - "filter": [ "all", [ "==", "$type", "Point" ], [ "in", "labelrank", 2, 3 ] ], - "layout": { - "text-field": "{name_zh}", - "text-max-width": 5, - "text-letter-spacing": 0.15, - "text-line-height": 1.5, - "text-font": [ "DIN Offc Pro Italic", "Noto Sans CJK SC DemiLight", "Arial Unicode MS Regular" ], - "text-size": { "base": 1.1, "stops": [ [ 2, 14 ], [ 5, 20 ] ] } - }, - "paint": { "text-color": "hsl(205, 83%, 88%)" } - }, - { - "id": "marine-label-lg-ln", - "type": "symbol", - "metadata": { "mapbox:group": "1444856087950.3635" }, - "source": "streets-cn", - "source-layer": "marine_label", - "minzoom": 1, - "maxzoom": 4, - "filter": [ "all", [ "==", "$type", "LineString" ], [ "==", "labelrank", 1 ] ], - "layout": { - "text-field": "{name_zh}", - "text-max-width": 4, - "text-letter-spacing": 0.25, - "text-line-height": 1.1, - "symbol-placement": "line", - "text-font": [ "DIN Offc Pro Italic", "Noto Sans CJK SC DemiLight", "Arial Unicode MS Regular" ], - "text-size": { "base": 1, "stops": [ [ 1, 14 ], [ 4, 30 ] ] } - }, - "paint": { "text-color": "hsl(205, 83%, 88%)" } - }, - { - "id": "marine-label-lg-pt", - "type": "symbol", - "metadata": { "mapbox:group": "1444856087950.3635" }, - "source": "streets-cn", - "source-layer": "marine_label", - "minzoom": 1, - "maxzoom": 4, - "filter": [ "all", [ "==", "$type", "Point" ], [ "==", "labelrank", 1 ] ], - "layout": { - "text-field": "{name_zh}", - "text-max-width": 4, - "text-letter-spacing": 0.25, - "text-line-height": 1.5, - "text-font": [ "DIN Offc Pro Italic", "Noto Sans CJK SC DemiLight", "Arial Unicode MS Regular" ], - "text-size": { "base": 1, "stops": [ [ 1, 14 ], [ 4, 30 ] ] } - }, - "paint": { "text-color": "hsl(205, 83%, 88%)" } - }, - { - "id": "state-label-sm", - "type": "symbol", - "metadata": { "mapbox:group": "1444856151690.9143" }, - "source": "streets-cn", - "source-layer": "state_label", - "minzoom": 5, - "maxzoom": 9, - "filter": [ "<", "area", 20000 ], - "layout": { - "text-size": { "base": 1, "stops": [ [ 6, 10 ], [ 9, 14 ] ] }, - "text-max-width": 5, - "text-font": [ "DIN Offc Pro Regular", "Noto Sans CJK SC DemiLight", "Arial Unicode MS Regular" ], - "text-field": "{name_zh}", - "text-letter-spacing": 0.1, - "text-line-height": 1.4 - }, - "paint": { - "text-opacity": 1, - "text-color": "hsl(230, 29%, 35%)", - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 1 - } - }, - { - "id": "state-label-md", - "type": "symbol", - "metadata": { "mapbox:group": "1444856151690.9143" }, - "source": "streets-cn", - "source-layer": "state_label", - "minzoom": 4, - "maxzoom": 8, - "filter": [ "all", [ "<", "area", 80000 ], [ ">=", "area", 20000 ] ], - "layout": { - "text-size": { "base": 1, "stops": [ [ 5, 10 ], [ 8, 16 ] ] }, - "text-max-width": 6, - "text-font": [ "DIN Offc Pro Regular", "Noto Sans CJK SC DemiLight", "Arial Unicode MS Regular" ], - "text-field": "{name_zh}", - "text-letter-spacing": 0.1, - "text-line-height": 1.4 - }, - "paint": { - "text-opacity": 1, - "text-color": "hsl(230, 29%, 35%)", - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 1 - } - }, - { - "id": "state-label-lg", - "type": "symbol", - "metadata": { "mapbox:group": "1444856151690.9143" }, - "source": "streets-cn", - "source-layer": "state_label", - "minzoom": 4, - "maxzoom": 7, - "filter": [ ">=", "area", 80000 ], - "layout": { - "text-size": { "base": 1, "stops": [ [ 4, 10 ], [ 7, 18 ] ] }, - "text-max-width": 6, - "text-font": [ "DIN Offc Pro Regular", "Noto Sans CJK SC DemiLight", "Arial Unicode MS Regular" ], - "text-padding": 1, - "text-field": "{name_zh}", - "text-letter-spacing": 0.1, - "text-line-height": 1.4 - }, - "paint": { - "text-opacity": 1, - "text-color": "hsl(230, 29%, 35%)", - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 1 - } - }, - { - "id": "country-label-sm", - "type": "symbol", - "metadata": { "mapbox:group": "1444856144497.7825" }, - "source": "streets-cn", - "source-layer": "country_label", - "minzoom": 1, - "maxzoom": 10, - "filter": [ ">=", "scalerank", 5 ], - "layout": { - "text-field": "{name_zh}", - "text-max-width": 6, - "text-font": [ "DIN Offc Pro Medium", "Noto Sans CJK SC Medium", "Arial Unicode MS Regular" ], - "text-size": { "base": 0.9, "stops": [ [ 5, 14 ], [ 9, 22 ] ] } - }, - "paint": { - "text-color": "hsl(0, 0%, 0%)", - "text-halo-color": { "base": 1, "stops": [ [ 2, "rgba(255,255,255,0.75)" ], [ 3, "hsl(0, 0%, 100%)" ] ] }, - "text-halo-width": 1.25 - } - }, - { - "id": "country-label-md", - "type": "symbol", - "metadata": { "mapbox:group": "1444856144497.7825" }, - "source": "streets-cn", - "source-layer": "country_label", - "minzoom": 1, - "maxzoom": 8, - "filter": [ "in", "scalerank", 3, 4 ], - "layout": { - "text-field": { "base": 1, "stops": [ [ 0, "{code}" ], [ 2, "{name_zh}" ] ] }, - "text-max-width": 6, - "text-font": [ "DIN Offc Pro Medium", "Noto Sans CJK SC Medium", "Arial Unicode MS Regular" ], - "text-size": { "base": 1, "stops": [ [ 3, 10 ], [ 8, 24 ] ] } - }, - "paint": { - "text-color": "hsl(0, 0%, 0%)", - "text-halo-color": { "base": 1, "stops": [ [ 2, "rgba(255,255,255,0.75)" ], [ 3, "hsl(0, 0%, 100%)" ] ] }, - "text-halo-width": 1.25 - } - }, - { - "id": "country-label-lg", - "type": "symbol", - "metadata": { "mapbox:group": "1444856144497.7825" }, - "source": "streets-cn", - "source-layer": "country_label", - "minzoom": 1, - "maxzoom": 7, - "filter": [ "in", "scalerank", 1, 2 ], - "layout": { - "text-field": "{name_zh}", - "text-max-width": { "base": 1, "stops": [ [ 0, 5 ], [ 3, 6 ] ] }, - "text-font": [ "DIN Offc Pro Medium", "Noto Sans CJK SC Medium", "Arial Unicode MS Regular" ], - "text-size": { "base": 1, "stops": [ [ 1, 10 ], [ 6, 24 ] ] } - }, - "paint": { - "text-color": "hsl(0, 0%, 0%)", - "text-halo-color": { "base": 1, "stops": [ [ 2, "rgba(255,255,255,0.75)" ], [ 3, "hsl(0, 0%, 100%)" ] ] }, - "text-halo-width": 1.25 - } - } - ], - "visibility": "public" -} \ No newline at end of file diff --git a/debug/tinysdf.html b/debug/tinysdf.html index 33221c26df2..5faa2b6d019 100644 --- a/debug/tinysdf.html +++ b/debug/tinysdf.html @@ -29,7 +29,7 @@ #checkboxes { position: absolute; background: #fff; - bottom:0; + bottom:35px; left:0; padding:10px; } @@ -51,23 +51,40 @@