Skip to main content

Add live realtime data

Use realtime GeoJSON data streams to move a symbol on your map.


<!doctype html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <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%;
            }
        </style>
    </head>
    <body>
        <div id="map"></div>

        <script>
            TrimbleMaps.setAPIKey('YOUR_API_KEY_HERE');
   const map = new TrimbleMaps.Map({
        container: 'map',
        style: TrimbleMaps.Common.Style.TRANSPORTATION,
        zoom: 0,
      });

      map.on('load', () => {
        window.setInterval(() => {
          // Make a GET request to get two random numbers
          fetch(
            'https://www.random.org/decimal-fractions/?num=2&dec=10&col=1&format=plain&rnd=new'
          )
            .then((r) => r.text())
            .then((text) => {
              // Takes the two random numbers between 0 and 1 and converts them to degrees
              const coordinates = text
                .split('\n')
                .map((l) => Number(l) * 180 - 90);
              const json = {
                type: 'Feature',
                geometry: {
                  type: 'Point',
                  coordinates,
                },
              };
              // Update the drone symbol's location on the map
              map.getSource('drone').setData(json);

              // Fly the map to the drone's current location
              map.flyTo({
                center: json.geometry.coordinates,
                speed: 0.5,
              });
            });
        }, 2000);

        // Set initial location at (0,0).
        map.addSource('drone', {
          type: 'geojson',
          data: {
            type: 'Feature',
            geometry: {
              type: 'Point',
              coordinates: [0, 0],
            },
          },
        });
        map.addLayer({
          id: 'drone',
          type: 'symbol',
          source: 'drone',
          layout: {
            'icon-image': 'rocket_15',
          },
        });
      });
    </script>
  </body>
</html>

Last updated June 26, 2025.