Raster base map with vector layers
by Nikolay Petrov
HTML
<link rel="stylesheet" href="https://api.tiles.mapbox.com/mapbox-gl-js/v0.53.1/mapbox-gl.css">
<script src="https://api.tiles.mapbox.com/mapbox-gl-js/v0.54.0-beta.1/mapbox-gl.js"></script>
<style>
body {
margin: 0;
padding: 0;
}
#map {
position: absolute;
top: 0;
bottom: 0;
width: 100%;
}
</style>
<div id="map"></div>
JavaScript
mapboxgl.accessToken = 'pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA';
const style = {
version: 8,
center: [139.774, 35.683],
zoom: 17,
sources: {
'raster-tiles': {
type: 'raster',
tiles: [`https://api.mapbox.com/v4/yahoojapan.cjw2r3d4j0bda1co4r5fy4x6d/{z}/{x}/{y}@2x.jpg90?access_token=${mapboxgl.accessToken}`],
tileSize: 256
},
composite: {
url: 'mapbox://mapbox.mapbox-streets-v8',
type: 'vector'
}
},
sprite: 'mapbox://sprites/yahoojapan/cjw2r3d4j0bda1co4r5fy4x6d?version=2019-07-21',
glyphs: 'mapbox://fonts/yahoojapan/{fontstack}/{range}.pbf',
layers: [{
id: 'raster-underlay',
type: "raster",
source: "raster-tiles",
minzoom: 0,
maxzoom: 22
}, {
id: 'building-number-label',
type: 'symbol',
source: 'composite',
'source-layer': 'housenum_label',
layout: {
'icon-image': 'fill-green',
'icon-text-fit': 'both',
'text-field': ['get', 'house_num']
},
paint: {
'text-color': 'white'
}
}]
};
new mapboxgl.Map({
container: 'map',
style
});