// 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 JV Installers (" + blue + ")"; document.getElementById("cyan").innerHTML = "JV Service JV Service (" + cyan + ")"; document.getElementById("purple").innerHTML = "JV Drivers JV Drivers (" + purple + ")"; document.getElementById("green").innerHTML = "3rd Party 3rd Party (" + green + ")"; document.getElementById("orange").innerHTML = "Freight Only Freight Only (" + orange + ")"; document.getElementById("yellow").innerHTML = "Unassigned Unassigned (" + yellow + ")"; document.getElementById("red").innerHTML = "Not Scheduled Not Scheduled (" + red + ")"; document.getElementById("black").innerHTML = "Bringbacks 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); } } }