SIghtMap Metrics API Demo

Using vanilla JavaScript

by Jacob Pearlstein

HTML

<!DOCTYPE html>
<html lang="en">

  <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>SightMap JavaScript IFrame API Example</title>
    <script src="https://sightmap.com/embed/api.js">


    </script>
  </head>

  <body>
    <div class="margin">
      <div class="head-container">
        <div class="title">
          <div class="textbox">
            Welcome to SightMap
          </div>
        </div>
      </div>

      <div tabindex="0" class="sightmap-container">
        <!-- Assign id to IFrame, and enable API and set origin in IFrame src -->
        <iframe id="sightmap" src="https://sightmap.com/embed/ryzvg6mywln?enable_api=1&origin=https://fiddle.jshell.net" frameborder="0" width="100%" height="100%"></iframe>
      </div>
    </div>
  </body>

</html>

CSS

* {
  box-sizing: border-box;
}

html,
body {
  height: 100%;
  margin: 0 auto;
  padding: 0;
  font-family: open sans, sans-serif;
}

.margin {
  margin: 1vh;
  height: 98vh;
}

.head-container {
  width: 100%;
  margin: auto;
}

nav.container {
  display: block;
  background-color: #333333;
  text-align: center;
  margin: auto;
}

.nav-button {
  text-align: center;
  color: white;
  width: 100%;
}

.sightmap-container {
  height: 80vh;
  width: 100%;
}

.title {
  background-color: hsl(211, 38%, 61%);
  color: white;
  margin: auto;
}

.textbox {
  text-align: center;
  line-height: 233%;
  font-size: 40pt;
}

.button-list {
  display: flex;
  flex-direction: row;
}

JavaScript

document.addEventListener("DOMContentLoaded", function(event) {
  // Create a new embed instance, providing the IFrame id value:
  var embed = new SightMap.Embed('sightmap');

  console.log(embed);

  embed.on('ready', function() {
    console.log('hello world');
    // Insert usage requirements as desired

    // Start Metrics API

    embed.on('metrics.unitMatches.impression', function(event) {
      console.log(event);
    });

    embed.on('metrics.unitMatches.change', function(event) {
      console.log(event);
    });

    embed.on('metrics.unitList.unit.click', function(event) {
      console.log(event);
    });

    embed.on('metrics.unitMap.unit.click', function(event) {
      console.log(event);
    });

    embed.on('metrics.unitDetails.outbound.click', function(event) {
      console.log(event);
    });

    embed.on('metrics.unitDetails.apply.click', function(event) {
      console.log(event);
    });
  });

  // End Metrics API

  // sample delivery to datalayer
  /*
    embed.on('metrics.unitList.unit.click', function(event) {
      var unitID = event.data.unit.mapId
      var thisUnitData = thisUnitData = {
        'planName': event.data.unit.floorPlan.name,
        'planSqFt': String(event.data.unit.area),
        'planBedrooms': String(event.data.unit.floorPlan.bedroomCount),
        'planBathrooms': String(event.data.unit.floorPlan.bathroomCount),
        'unitName': 'Apartment ' + event.data.unit.unitNumber,
        'unitNumber': event.data.unit.unitNumber,
        'unitPrice': event.data.unit.priceDisplay,
        'dateAvailable': getFormattedDate(event.data.unit.availableOn)
      }
      console.log(thisUnitData)
      dataLayer.push(thisUnitData)
    });
  */

});