尝试从全屏 OpenLayers 网络地图应用程序创建格式化的打印页面时遇到问题。
当我调用我的print函数时,我使用css样式的HTML创建一个新窗口。我从 OpenLayers 画布中获取innerHTML
并将内容粘贴到打印页面上的新画布div中。
{
var widthPx = document.getElementById('OpenLayers_canvas').offsetWidth;
var heightPX = document.getElementById('OpenLayers_canvas').offsetHeight;
var html =
'<html><head>'
+ '<link rel="stylesheet" href="styles/olStyle_printing.css" type="text/css" />'
+ '</head><body>'
+ '<div id="OpenLayers_printcanvas">'
+ '<div style="width:' + widthPx + 'px;height:' + heightPX + 'px" id="OpenLayers_canvas">'
+ document.getElementById('OpenLayers_canvas').innerHTML
+ '</div>'
+ '</div>'
+ '</body></html>';
var w = window.open();
w.document.write(html);
w.document.close();
w.focus();
w.print();
//w.close();
}
问题是我不知道如何集中内容。
地图与左上角相连。我要做的是让原始地图的中心位于打印页面框架的中心。
编辑: 我添加了一个带边框的容器div。我可以隐藏溢出。但是,问题是我不知道如何将div放在容器中。
第一个屏幕截图显示了OpenLayers应用:
第二个屏幕截图显示了我在容器div中的div中使用innerHTML内容创建的文档。
答案 0 :(得分:0)
我相信您的问题在于,如果您使用innerHTML,则不会执行任何其他操作,只需发送您之前在页面中发送的相同请求即可。如果您想显示其他内容,则必须更改请求。
工作流程应该是:
第二个机会是在您的打印对象中创建新的地图视图,您可以根据打印功能的边界设置地图的边界。
或者你可以试试这个: Openlayers Print Function
或者这个(对地图服务器的新请求): http://trac.osgeo.org/openlayers/wiki/Printing