Skip to content

Change a map's language

Use setLayoutProperty to switch languages dynamically.

<!DOCTYPE html>
<html lang="en">
    <title>Change a map's language</title>
    <meta property="og:description" content="Use setLayoutProperty to switch languages dynamically." />
    <meta charset='utf-8'>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel='stylesheet' href='' />
    <script src=''></script>
        body { margin: 0; padding: 0; }
        html, body, #map { height: 100%; }
    #buttons {
        display: flex;
        justify-content: space-between;
        position: absolute;
        top: 20px;
        width: 90%;
    .button {
        display: inline-block;
        cursor: pointer;
        width: 20%;
        padding: 8px;
        border-radius: 3px;
        margin-top: 10px;
        font-size: 12px;
        text-align: center;
        color: #fff;
        background: #ee8a65;
        font-family: sans-serif;
        font-weight: bold;
<div id="map"></div>
<ul id="buttons">
    <li id="button-fr" class="button">French</li>
    <li id="button-ru" class="button">Russian</li>
    <li id="button-de" class="button">German</li>
    <li id="button-es" class="button">Spanish</li>
    const map = new maplibregl.Map({
        container: 'map',
        center: [16.05, 48],
        zoom: 2.9

        .addEventListener('click', (event) => {
            const language ='button-'.length);
            // Use setLayoutProperty to set the value of a layout property in a style layer.
            // The three arguments are the id of the layer, the name of the layout property,
            // and the new property value.
            map.setLayoutProperty('label_country', 'text-field', [