// Global variables
var map, gmarkers = [], blue = 0, cyan = 0, purple = 0, green = 0, orange = 0, yellow = 0, red = 0, black = 0;
var catList = document.getElementsByClassName('chk').value;
// The initial function to create and display the map on the page
function initMap() {
var bounds = new google.maps.LatLngBounds();
map = new google.maps.Map(document.getElementById('map_canvas'), {
streetViewControl: false,
mapTypeControl: false,
scaleControl: false,
disableDefaultUI: true
});
for (var i = 0; i < markers.length; i++) {
addMarker(markers[i]);
bounds.extend({ lat: parseFloat(markers[i].Lat), lng: parseFloat(markers[i].Long) });
}
// Builds legend HTML with marker count included
document.getElementById("blue").innerHTML = " JV Installers (" + blue + ")";
document.getElementById("cyan").innerHTML = " JV Service (" + cyan + ")";
document.getElementById("purple").innerHTML = " JV Drivers (" + purple + ")";
document.getElementById("green").innerHTML = " 3rd Party (" + green + ")";
document.getElementById("orange").innerHTML = " Freight Only (" + orange + ")";
document.getElementById("yellow").innerHTML = " Unassigned (" + yellow + ")";
document.getElementById("red").innerHTML = " Not Scheduled (" + red + ")";
document.getElementById("black").innerHTML = " Bringbacks (" + black + ")";
// Sets the map zoom and center based on the markers created
map.setCenter(bounds.getCenter());
map.fitBounds(bounds);
map.setZoom(map.getZoom() - 1);
// Calls the initial filter check on initialization
getChecked();
}
//Creates the marker object and sets the associated variables
function addMarker(marker) {
var pos = new google.maps.LatLng(parseFloat(marker.Lat), parseFloat(marker.Long));
var name = marker.Customer;
var category = marker.Marker;
var icon = marker.Marker + ".png";
var mark = new google.maps.Marker({
position: pos,
title: name,
category: category,
icon: icon,
visible: true
});
// Getting count of each type of marker for the legend
switch (category) {
case "blue":
blue++; break;
case "cyan":
cyan++; break;
case "purple":
purple++; break;
case "green":
green++; break;
case "orange":
orange++; break;
case "yellow":
yellow++; break;
case "red":
red++; break;
default:
black++;
}
// Creating info window for the on-click display
var infoWin = new google.maps.InfoWindow({
content:
"" + name + " " +
"Customer Order: " + marker.CO + " " +
"Address: " + marker.Address + " " +
"Phone: " + marker.Phone + " " +
"Vendor: " + marker.Vendor + " " +
"PO: " + marker.PO + " " +
"CO Due Date: " + marker["CO Due Date"] + " " +
"Install Date: " + marker["Install Date"] + " " +
"Type: " + marker.Type + " "
});
mark.addListener("click", () => {
infoWin.open({
anchor: mark,
map
});
});
gmarkers.push(mark);
}
// Gets list of all boxes checked on page
var getChecked = function () {
var checkedPlace = []
var allFilterElem = document.getElementsByName('filter');
for (var i = 0; i < allFilterElem.length; i++) {
if (allFilterElem[i].checked == true) {
checkedPlace.push(allFilterElem[i].value)
}
}
filterCheck(checkedPlace);
}
// Iterates through marker array to check if the marker category matches with the box checked. Disassociates it from the map if the checkbox is not set.
var filterCheck = function (cat) {
for (var i = 0; i < gmarkers.length; i++) {
if (cat.includes(gmarkers[i].category)) {
gmarkers[i].setMap(map);
}
else {
gmarkers[i].setMap(null);
}
}
}