/// /// function printMapControl(map) { "use strict"; if (!isCanvasSupported()) { return null; } var controlDiv = printMapButton("Print", "printMap"); google.maps.event.addDomListener(controlDiv, "click", function () { printMap(map); }); return controlDiv; } function isCanvasSupported() { "use strict"; var elem = document.createElement("canvas"); return !!(elem.getContext && elem.getContext("2d")); } function printMap(map) { "use strict"; var mapControlVisible = map.mapTypeControl; var zoomVisible = map.zoomControl; var streetViewVisible = map.streetViewControl; var panVisible = map.panControl; var fullscreenVisible = map.fullscreenControl; map.setOptions({ mapTypeControl: false, zoomControl: false, streetViewControl: false, panControl: false, fullscreenControl: false }); map.controls.forEach(function (array) { array.forEach(function (elem) { $(elem).hide(); }); }); clearMarkerClusterer(); var showControls = function () { map.setOptions({ mapTypeControl: mapControlVisible, zoomControl: zoomVisible, streetViewControl: streetViewVisible, panControl: panVisible, fullscreenControl: fullscreenVisible }); map.controls.forEach(function (array) { array.forEach(function (elem) { $(elem).show(); }); }); }; var popUpAndPrint = function () { try { // var dataUrl = []; // var container = map.getDiv(); // $(container) // .find("canvas") // .filter(function () { // dataUrl.push(this.toDataURL("image/png")); // }); // var clone = $(container).clone(); // var width = container.clientWidth; // var height = container.clientHeight; // $(clone) // .find("canvas") // .each(function (i, item) { // $(item) // .replaceWith($("") // .attr("src", dataUrl[i])) // .css("position", "absolute") // .css("left", "0") // .css("top", "0") // .css("width", width + "px") // .css("height", height + "px"); // }); // var printWindow = window.open("", "PrintMap", "width=" + width + ",height=" + height); // if (printWindow == null) { // throw new Error("Unable to display the print dialog, you might need to allow popups on this site"); // } // printWindow.document.writeln($(clone).html()); // printWindow.document.close(); // printWindow.focus(); // printWindow.print(); // printWindow.close(); const $body = $('body'); const $mapContainer = $('.map'); const $mapContainerParent = $mapContainer.parent(); const $printContainer = $('
'); $printContainer .height($mapContainer.height()) .append($mapContainer) .prependTo($body); const $content = $body .children() .not($printContainer) .not('script') .detach(); /** * Needed for those who use Bootstrap 3.x, because some of * its `@media print` styles ain't play nicely when printing. */ const $patchedStyle = $('