Change a layer's color with buttons
Use setPaintProperty to change a layer’s fill color.<!doctype html> <html lang="en"> <head> <meta charset="utf-8" /> <title>Change a layer's color with buttons</title> <meta name="viewport" content="width=device-width, initial-scale=1" /> <link rel="stylesheet" href="https://maps-sdk.trimblemaps.com/v4/trimblemaps-4.2.3.css" /> <script src="https://maps-sdk.trimblemaps.com/v4/trimblemaps-4.2.3.js"></script> <style> body { margin: 0; padding: 0; } html, body, #map { height: 100%; } .map-overlay { font: 12px/20px 'Helvetica Neue', Arial, Helvetica, sans-serif; position: absolute; width: 200px; top: 0; left: 0; padding: 10px; } .map-overlay .map-overlay-inner { background-color: #fff; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1); border-radius: 3px; padding: 10px; margin-bottom: 10px; } .map-overlay-inner fieldset { border: none; padding: 0; margin: 0 0 10px; } .map-overlay-inner fieldset:last-child { margin: 0; } .map-overlay-inner select { width: 100%; } .map-overlay-inner label { display: block; font-weight: bold; margin: 0 0 5px; } .map-overlay-inner button { display: inline-block; width: 36px; height: 20px; border: none; cursor: pointer; } .map-overlay-inner button:focus { outline: none; } .map-overlay-inner button:hover { box-shadow: inset 0 0 0 3px rgba(0, 0, 0, 0.1); } </style> </head> <body> <div id="map"></div> <div class="map-overlay top"> <div class="map-overlay-inner"> <fieldset> <label for="layer">Select layer</label> <select id="layer" name="layer"> <option value="water">Water</option> <option value="building_3d">Buildings</option> </select> </fieldset> <fieldset> <label>Choose a color</label> <div id="swatches"></div> </fieldset> </div> </div> <script> TrimbleMaps.setAPIKey('YOUR_API_KEY_HERE'); const map = new TrimbleMaps.Map({ container: 'map', style: TrimbleMaps.Common.Style.TRANSPORTATION, center: [12.338, 45.4385], zoom: 17.4, }); const swatches = document.getElementById('swatches'); const layer = document.getElementById('layer'); const colors = [ '#ffffcc', '#a1dab4', '#41b6c4', '#2c7fb8', '#253494', '#fed976', '#feb24c', '#fd8d3c', '#f03b20', '#bd0026', ]; colors.forEach((color) => { const swatch = document.createElement('button'); swatch.style.backgroundColor = color; swatch.addEventListener('click', () => { map.setPaintProperty( layer.value, layer.value === 'water' ? 'fill-color' : 'fill-extrusion-color', color ); map.setLayoutProperty( 'building_3d', 'visibility', 'visible' ); }); swatches.appendChild(swatch); }); </script> </body> </html>
Change a layer's color with buttons
<!doctype html> <html lang="en"> <head> <meta charset="utf-8" /> <title>Change a layer's color with buttons</title> <meta name="viewport" content="width=device-width, initial-scale=1" /> <link rel="stylesheet" href="https://maps-sdk.trimblemaps.com/v4/trimblemaps-4.2.3.css" /> <script src="https://maps-sdk.trimblemaps.com/v4/trimblemaps-4.2.3.js"></script> <style> body { margin: 0; padding: 0; } html, body, #map { height: 100%; } .map-overlay { font: 12px/20px 'Helvetica Neue', Arial, Helvetica, sans-serif; position: absolute; width: 200px; top: 0; left: 0; padding: 10px; } .map-overlay .map-overlay-inner { background-color: #fff; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1); border-radius: 3px; padding: 10px; margin-bottom: 10px; } .map-overlay-inner fieldset { border: none; padding: 0; margin: 0 0 10px; } .map-overlay-inner fieldset:last-child { margin: 0; } .map-overlay-inner select { width: 100%; } .map-overlay-inner label { display: block; font-weight: bold; margin: 0 0 5px; } .map-overlay-inner button { display: inline-block; width: 36px; height: 20px; border: none; cursor: pointer; } .map-overlay-inner button:focus { outline: none; } .map-overlay-inner button:hover { box-shadow: inset 0 0 0 3px rgba(0, 0, 0, 0.1); } </style> </head> <body> <div id="map"></div> <div class="map-overlay top"> <div class="map-overlay-inner"> <fieldset> <label for="layer">Select layer</label> <select id="layer" name="layer"> <option value="water">Water</option> <option value="building_3d">Buildings</option> </select> </fieldset> <fieldset> <label>Choose a color</label> <div id="swatches"></div> </fieldset> </div> </div> <script> TrimbleMaps.setAPIKey('YOUR_API_KEY_HERE'); const map = new TrimbleMaps.Map({ container: 'map', style: TrimbleMaps.Common.Style.TRANSPORTATION, center: [12.338, 45.4385], zoom: 17.4, }); const swatches = document.getElementById('swatches'); const layer = document.getElementById('layer'); const colors = [ '#ffffcc', '#a1dab4', '#41b6c4', '#2c7fb8', '#253494', '#fed976', '#feb24c', '#fd8d3c', '#f03b20', '#bd0026', ]; colors.forEach((color) => { const swatch = document.createElement('button'); swatch.style.backgroundColor = color; swatch.addEventListener('click', () => { map.setPaintProperty( layer.value, layer.value === 'water' ? 'fill-color' : 'fill-extrusion-color', color ); map.setLayoutProperty( 'building_3d', 'visibility', 'visible' ); }); swatches.appendChild(swatch); }); </script> </body> </html>