SightMap JS IFrame API Demo

Apartments.com Demo

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>
    <link href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" rel="stylesheet" type="text/css">

  </head>

  <body>
    <div class="margin">
      <div class="head-container">
        <div class="title">
          <div class="textbox">
            Welcome to SightMap
          </div>
        </div>
        <div class="row mt-5">
          <div class="col-md-4">
            <button class="btn btn-primary mb-2" id="disable-ui"><span id="disable-ui-button-text">Disable</span> All UI</button>
            <button class="btn btn-primary mb-2" id="disable-unit-list"><span id="disable-unit-list-button-text">Disable</span> Unit List</button>
            <button class="btn btn-primary mb-2" id="disable-filters"><span id="disable-filters-button-text">Disable</span> Filters</button>
            <button class="btn btn-primary mb-2" id="get-floor"><span id="get-floor-button">Get</span> Floor</button>

          </div>
          <div class="col-md-4">
            <div class="input-group mb-2">
              <input class="form-control" id="locate-unit-number" placeholder="Locate by unit number" />
              <div class="input-group-append">
                <button class="btn btn-success" type="button" id="locate-unit-number-button">Locate Unit</button>
              </div>
            </div>
            <!-- START SET UNIT NUMBERS MATCHES -->
            <div class="input-group mb-2">
              <input class="form-control" id="display-unit-numbers" placeholder="Set Unit Number Matches (i.e. P2-101,P1-100,A-103,102)" />
              <div class="input-group-append">
                <button class="btn btn-success"...

CSS

* {
  box-sizing: border-box;
}

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

.margin {
  margin: 20px;
  height: 75%;
}

.head-container {
  width: 95%;
  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: 100vh;
  min-height: 600px;
  align-items: center;
  justify-content: center;
}

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

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

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

JavaScript

$('document').ready(function() {
  // 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');
    // Usage requirements go here
  });

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

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

  // 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)
            });
  					*/
  // End Metrics API

  // Other events
  embed.on('outbound.testKey.click', function(event) {
    console.log(event);
  })

  embed.on('floor:change', function(event) {
    console.log('floor id is now: ', event.id)
  })


  // Button functions
  $("#get-floor").on('click', function(event) {
    embed.getFloor(function(id) {
      console.log('Active Floor ID:', id);
    })
  })

  $("#set-floor-button").on('click', function(event) {
    var value = $("#set-floor").val()
    embed.setFloor(value)
  })

  $("#display-unit-numbers-button").on('click', function(event) {
    var value = $("#display-unit-numbers").val().split(",")
   ...