使用图层/标记打印谷歌地图div

时间:2016-01-02 01:07:18

标签: javascript google-maps google-maps-api-3

如何使用所有图层/标记打印Google地图?

使用$('#map').html()并将内容放在新窗口中不起作用。它只显示地图基础层。例如,以下代码不起作用。

function PrintElem(elem)
{
    Popup($(elem).html());
}

function Popup(data) 
{
    var mywindow = window.open('', 'my div', 'height=400,width=600');
    mywindow.document.write('<html><head><title>my div</title>');
    /*optional stylesheet*/ //mywindow.document.write('<link rel="stylesheet" href="main.css" type="text/css" />');
    mywindow.document.write('</head><body >');
    mywindow.document.write(data);
    mywindow.document.write('</body></html>');

    mywindow.document.close(); // necessary for IE >= 10
    mywindow.focus(); // necessary for IE >= 10

    mywindow.print();
    mywindow.close();

    return true;
}

将地图贴在横向/纵向上进行打印也很不错。

1 个答案:

答案 0 :(得分:0)

我最终只是在打印优化的弹出窗口中重新创建地图。

打开POPUP:

mapData = {
    data:someMapData(),
};
window.open('print.html', 'window1', 'height=750,width=1000');

来自POPUP,访问数据:

var data = window.opener.mapData;

在打印窗口中,我根据打印方向(横向/纵向)调整地图大小。

if(type=='portrait') {
    $('#wrap').css('height','780pt').css('width', '600pt'); 
}
if(type=='landscape') {
    $('#wrap').css('height','660pt').css('width', '900pt'); 
}
if(type=='turnbyturn') {
    $('#wrap').css('height','780pt').css('width', '600pt'); 
}

它打印得很好,而且就我的目的来说,它比试图从应用程序本身打印更好。您可以轻松获取路线数据,折线,点等,并在地图上重绘。