JSFiddle - React, Tailwind, and code Playground

by BaronGrivet

HTML

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/tabletop.js/1.5.2/tabletop.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/js-marker-clusterer/1.0.0/markerclusterer_compiled.js"></script>
<script src="https://www.upshift.co.nz/scripts/infobox.js"></script>
<div id="website-map">

</div>

CSS

#website-map {
  width: 100%;
  height: 500px;
  background-color: #fff;
}

JavaScript

var map;
var websites = [];
var websiteWindows = [];
var bounds = [];
var centreLat = -41.272682;
var centreLng = 173.284228;
var zoomPercent = 0;

document.addEventListener('DOMContentLoaded', function () {
  if (document.querySelectorAll('#website-map').length > 0)
  { 
    var js_file1 = document.createElement('script');
    js_file1.type = 'text/javascript';
    js_file1.src = 'https://maps.googleapis.com/maps/api/js?libraries=geometry,places&ext=.js&callback=initMap';
    document.getElementsByTagName('head')[0].appendChild(js_file1);
	}
});

function initMap() {
//    resizeMap();
    map = new google.maps.Map(document.getElementById('website-map'), {
        center: {
            lat: centreLat,
            lng: centreLng          
        },
        zoom: 2
    });
    
    console.log('map rendered');
    getWebsites();
}

function getWebsites() {
    Tabletop.init({
        key: 'https://docs.google.com/spreadsheets/d/1101vJhpVv76leqcKtUgjuAV3Ce1KBZv8dYbKykTda2g/pubhtml',
        callback: function(data, tabletop) {
            renderWebsites(data);
        },
        simpleSheet: true
    });
}

function renderWebsites(data) {

		var markerImage = new google.maps.MarkerImage('https://www.upshift.co.nz/assets/us0.png', new google.maps.Size(52, 52), new google.maps.Point(0, 0), new google.maps.Point(26, 26));

    $.each(data, function(index, website) {
      var position = new google.maps.LatLng(parseFloat(website['Latitude']), parseFloat(website['Longitude']));
      websites[index] = new google.maps.Marker({
        position: position,
        map: map,
        icon: markerImage,
        draggable: false,
        content: document.getElementById('website' + index),
        optimized: false,
        zIndex: 9
    	});
      
      var windowContent = "dsgjsgsiogsoigogosdf";
      
      websiteWindows[index] = new InfoBox({
        content: windowContent,
        pixelOffset: new google.maps.Size(20, -103),
        closeBoxURL: ''
    	});
      
     ...