SIghtMap Metrics API Demo

Using vanilla JavaScript

by Patrik Vormittag

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 Metrics 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');

  // 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 GTM datalayer()
  /*
  embed.on('metrics.unitList.unit.click', function(event) {
    var unitID = event.data.unit.id;
    var 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: event.data.unit.availableOn
    }
    console.log(thisUnitData)
    dataLayer.push(thisUnitData)
  });
  */
});