JSFiddle - React, Tailwind, and code Playground
by Lawrence Ross
HTML
<script src="https://maps.googleapis.com/maps/api/js?libraries=geometry,places&ext=.js"></script>
<div id="map_canvas"></div>
CSS
html,
body,
#map_canvas {
height: 100%;
width: 100%;
margin: 0px;
padding: 0px
}
JavaScript
var geocoder;
var map;
var bounds;
var infowindow;
function initialize() {
map = new google.maps.Map(
document.getElementById("map_canvas"), {
center: new google.maps.LatLng(37.4419, -122.1419),
zoom: 13,
mapTypeId: google.maps.MapTypeId.ROADMAP
});
geocoder = new google.maps.Geocoder();
bounds = new google.maps.LatLngBounds();
infowindow = new google.maps.InfoWindow();
for (obj in inputJson) {
console.log(JSON.stringify(obj));
console.log(JSON.stringify(inputJson[obj]));
geocode(obj, inputJson[obj]);
};
}
google.maps.event.addDomListener(window, "load", initialize);
// modified from https://developers.google.com/maps/documentation/javascript/examples/geocoding-simple
function geocode(name, obj) {
geocoder.geocode({
'address': obj.address
}, function(results, status) {
if (status === 'OK') {
bounds.extend(results[0].geometry.location);
map.fitBounds(bounds);
var marker = new google.maps.Marker({
map: map,
position: results[0].geometry.location
});
// modified from https://stackoverflow.com/questions/3059044/google-maps-js-api-v3-simple-multiple-marker-example
google.maps.event.addListener(marker, 'click', (function(marker, obj) {
return function(evt) {
var contentString = '<b>' + name + "</b><br>";
for (attr in obj) {
contentString += attr + ":" + obj[attr] + "<br>";
}
infowindow.setContent(contentString);
infowindow.open(map, marker);
}
})(marker, obj));
} else {
alert('Geocode was not successful for the following reason: ' + status);
}
});
}
var inputJson = {
"address_number": {
"address": "New York, NY",
"time": "10:00 PM",
"show_address": "false",
"code": "000000"
},
"address_number2": {
"address": "Newark, NJ",
"time": "10:00 PM",
"show_address": "false",
"code": "000002"
},
"916788": {
"address":...