Shield size debug
by Tristen Brown
HTML
<script src="https://api.tiles.mapbox.com/mapbox-gl-js/v1.4.0/mapbox-gl.js"></script>
<link rel="stylesheet" href="https://api.tiles.mapbox.com/mapbox-gl-js/v1.4.0/mapbox-gl.css">
<div id="map"></div>
<div id="z">13</div>
CSS
body {
margin: 0;
padding: 0;
}
#map {
position: absolute;
top: 0;
bottom: 0;
width: 100%;
}
#z {
background: black;
font-family: 'Helvetica';
color: white;
position: absolute;
top: 10px;
left: 10px;
padding: 5px;
border-radius: 3px;
}
JavaScript
mapboxgl.accessToken = 'pk.eyJ1IjoidHJpc3RlbiIsImEiOiJjajZoOXU4Z2kwNnppMnlxd2d6bTFvZ2xtIn0.PP7AoUakMfeqdXFHdsY0oA';
const style = {
version: 8,
name: 'shield-debug',
center: [139.80666, 35.67313],
zoom: 13,
sources: {
composite: {
url: 'mapbox://mapbox.mapbox-streets-v8',
type: 'vector'
}
},
sprite: 'mapbox://sprites/mapbox/streets-v11',
glyphs: 'mapbox://fonts/mapbox/{fontstack}/{range}.pbf',
layers: [{
id: 'land',
type: 'background',
paint: {
'background-color': 'hsl(35, 12%, 89%)'
}
},
{
id: 'water',
type: 'fill',
source: 'composite',
'source-layer': 'water',
paint: {
'fill-color': 'hsl(196, 80%, 70%)'
}
},
{
id: 'shield',
type: 'symbol',
source: 'composite',
'source-layer': 'road',
minzoom: 6,
filter: [
'all',
['has', 'reflen'],
['<=', ['get', 'reflen'], 6],
],
layout: {
'text-size': [
'step',
['zoom'],
8.5,
14,
10
],
'icon-image': [
'concat',
['get', 'shield'],
'-',
['to-string', ['get', 'reflen']]
],
'icon-size': [
'interpolate',
['exponential', 1.5],
['zoom'],
8,
['match', ['get', 'iso_3166_1'],
['JP'], 0.25, 1
],
14,
1
],
'text-field': ['get', 'ref']
},
paint: {
'text-color': 'black'
}
}
]
}
const map = new mapboxgl.Map({
container: 'map',
style
});
map.on('load', () => {
const z = document.getElementById('z');
map.on('move', () => {
z.textContent = map.getZoom().toFixed(2);
});
});