Change a map's language
Use setLayoutProperty
to switch languages dynamically. For a more complete solution see the mapbox-gl-language plugin.
<!DOCTYPE html><html><head><meta charset="utf-8" /><title>Change a map's language</title><meta name="viewport" content="initial-scale=1,maximum-scale=1,user-scalable=no" /><script src="https://unpkg.com/trackasia-gl@1.0.5/dist/trackasia-gl.js"></script><link href="https://unpkg.com/trackasia-gl@1.0.5/dist/trackasia-gl.css" rel="stylesheet" /><style> body { margin: 0; padding: 0; } #map { position: absolute; top: 0; bottom: 0; width: 100%; }</style></head><body><style>#buttons {width: 90%;margin: 0 auto;}.button {display: inline-block;position: relative;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;}</style><div id="map"></div><ul id="buttons"><li id="button-en" class="button">English</li><li id="button-vi" class="button">Vietnam</li><li id="button-de" class="button">German</li><li id="button-es" class="button">Spanish</li></ul><script>var map = new trackasiagl.Map({container: 'map',style: 'https://maps.track-asia.com/styles/v1/streets.json?key=public_key',center: {"lat":10.762622,"lng":106.660172},zoom: 2.9}); document.getElementById('buttons').addEventListener('click', function (event) {var language = event.target.id.substr('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('country-label', 'text-field', ['get','name:' + language]);});</script> </body></html>