Content Layers

Trimble Maps JS SDK has several content layers such as traffic, weather, and 3D buildings. The visibility for each layer can be set, retrieved, or toggled.

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <link rel="stylesheet" href="https://maps-sdk.trimblemaps.com/v2/trimblemaps-2.1.1.css" />
        <script src="https://maps-sdk.trimblemaps.com/v2/trimblemaps-2.1.1.js"></script>
        <style>
            body { margin: 0; padding: 0; }

            #map {
                position: absolute;
                top: 0;
                bottom: 0;
                width: 100%;
            }

            #menu {
                position: absolute;
                background: #fff;
                padding: 10px;
                font-family: 'Open Sans', sans-serif;
            }
        </style>
    </head>
    <body>
    <div id="map"></div>
        <div id="menu">
            <input id="traffic" type="checkbox" name="traffic" />
            <label for="traffic">Traffic</label>
            <input id="radar" type="checkbox" name="radar" />
            <label for="radar">Weather Radar</label>
            <input id="surface" type="checkbox" name="surface" />
            <label for="surface">Road Surface</label>
            <input id="places" type="checkbox" name="places" />
            <label for="places">Places</label>
            <input id="buildings" type="checkbox" name="buildings" />
            <label for="buildings">3D Buildings</label>
    </div>

        <script>
            TrimbleMaps.APIKey = 'YOUR_API_KEY_HERE';
            const map = new TrimbleMaps.Map({
                container: 'map', // container id
                style: TrimbleMaps.Common.Style.TRANSPORTATION, //hosted style id
                center: [-75, 40], // starting position
                zoom: 9 // starting zoom
            });

            const layerList = document.getElementById('menu');
            const inputs = layerList.getElementsByTagName('input');

            for (let i = 0; i < inputs.length; i++) {
              inputs[i].onchange = (function(e) {
                  switch (e.target.id) {
                      case 'traffic':
                          map.setTrafficVisibility(e.target.checked);
                          break;
                      case 'radar':
                          map.setWeatherRadarVisibility(e.target.checked);
                          break;
                      case 'surface':
                          map.setRoadSurfaceVisibility(e.target.checked);
                          break;
                      case 'places':
                          map.setPOIVisibility(e.target.checked);
                          break;
                      case 'buildings':
                          map.set3dBuildingVisibility(e.target.checked);
                          break;
                      default:
                          break;
                  }
              });
            }
        </script>
    </body>
</html>