You can use html2canvas.js to convert map div to canvas element, then you can print it as image. Below code works perfect for me:
HTML
<div id="map" style="width:500px;height:500px;"></div> <input type="button" value="Print Map" class="printBtn" />
JavaScript
var map = new google.maps.Map(document.getElementById('map'), { zoom: 13, center: defLocation, mapTypeId: 'satellite', streetViewControl: false }); $(document).on('click', '.printBtn', function () { map.setOptions({ mapTypeControl: false, zoomControl: false, streetViewControl: false, panControl: false }); var printWin = window.open('', '', 'width=1000,height=700'); var windowContent = '<!DOCTYPE html>'; html2canvas($("#map"), { useCORS: true, onrendered: function (canvas) { windowContent += '<html>' windowContent += '<head><title>Print canvas</title></head>'; windowContent += '<body>' windowContent += '<img src="' + canvas.toDataURL() + '">'; windowContent += '</body>'; windowContent += '</html>'; printWin.document.open(); printWin.document.write(windowContent); printWin.document.close(); printWin.focus(); setTimeout(function () { printWin.print(); printWin.close(); }, 500); map.setOptions({ mapTypeControl: true, zoomControl: true, streetViewControl: true, panControl: true }); } }); });