How to take a screenshot of the current map view (screenshot helper)
This example shows how to capture the current map view as a blob (PNG image). The screenshot helper is the most convenient way to save map snapshots.
The returned blob of a PNG image file can be very handy if the goal is to programmatically further manipulate the screenshot, such as sending it to some feedback endpoint with a POST request.
In this example we are going to use the takeScreenshot helper to replace the drawn map image (in the lower left corner of the map) with an image of the current map view.
Click on the Take screenshot button to replace the drawing map image for the current map view image
NPM module setup
npm install --save @maptiler/sdk
import { Map, MapStyle, config, helpers } from '@maptiler/sdk';
import '@maptiler/sdk/dist/maptiler-sdk.css';
config.apiKey = 'YOUR_MAPTILER_API_KEY_HERE';
const map = new Map({
container: 'map',
zoom: 17.5,
center: [16.373344, 48.208479],
style: MapStyle.HYBRID
});
map.on('ready', () => {
document.getElementById('screenshot').addEventListener('click', function () {
takePicture();
});
});
async function takePicture() {
const imageSnapshot = document.getElementById('snapshot');
imageSnapshot.classList.add('hidden');
const mapBlob = await helpers.takeScreenshot(map);
const objectURL = URL.createObjectURL(mapBlob);
imageSnapshot.src = objectURL;
imageSnapshot.classList.remove('hidden');
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="robots" content="noindex">
<title>How to take a screenshot of the current map view (screenshot helper) | NPM example</title>
<link rel="stylesheet" href="./style.css">
</head>
<body>
<div id="map"></div>
<button id="screenshot">Take screenshot</button>
<div class="screenshot"><img id="snapshot" src="https://docs.maptiler.com/assets/img/map-vector.png" alt="MapTiler map screenshot"></div>
<script type="module" src="./main.js"></script>
</body>
</html>
body {margin: 0; padding: 0;}
#map {position: absolute; top: 0; bottom: 0; width: 100%;}
#screenshot {
display: block;
position: relative;
margin: 0px auto;
width: 50%;
height: 40px;
padding: 10px;
border: none;
border-radius: 3px;
font-size: 12px;
text-align: center;
color: #fff;
background:#ee8a65;
cursor: pointer;
}
.screenshot {
display: block;
position: absolute;
width: 290px;
height: 133px;
bottom: 0px;
background-color: #fff;
border: 1px solid #000;
border-radius: 4px;
box-shadow: 0 0 6px 2px rgb(0 0 0 / 8%);
}
#snapshot {
width: 100%;
height: 100%;
object-fit: cover;
}
.hidden{
display: none;
}
Related examples
Download a map screenshot (screenshot helper)
ExamplesDownload map screenshot as PNG file using helper.
Point layer scaled radius by property (point helper)
ExamplesScale point layer radius and color by property.