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