Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Openlayers打印功能

Openlayers打印功能
EN

Stack Overflow用户
提问于 2013-08-29 19:12:11
回答 3查看 9.5K关注 0票数 5

我想为我的Openlayers地图创建一个打印按钮,它可以捕捉地图图像并创建一个漂亮的图像文件。我尝试过http://dev.openlayers.org/sandbox/camptocamp/canvas/openlayers/examples/exportMapCanvas.html,但它看起来像是试验性的。我也研究过http://trac.osgeo.org/openlayers/wiki/Printing,但我不希望涉及任何服务器。我还检查了http://html2canvas.hertzen.com/,但无法让它正常工作。我得到以下错误,未捕获图像:无法读取未定义的html2canvas.js的属性‘TypeError’

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<button onclick="printFunction()">Click me</button>

function printFunction() {

        html2canvas(('#map'), {
            onrendered: function (canvas) {
                var img = canvas.toDataURL("image/png")
                window.open(img);
            }
        });
    };
EN

回答 3

Stack Overflow用户

发布于 2013-09-03 08:30:05

试一试

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function printFunction() {

    html2canvas(document.getElementById("map"), {
        onrendered: function (canvas) {
            var img = canvas.toDataURL("image/png")
            window.open(img);
        }
    });

这对我很有效。标签标识只适用于jQuery,我花了一段时间才弄明白:-)

不过,有一个小问题。html2canvas没有渲染背景WMS层-只有地图窗口和标记,所以仍然需要进行一些调整。

更新:我对此做了一些修改,我不认为它能与openlayers一起工作。由于openlayers地图是许多div的组合,似乎html2canvas不能正确地绘制所有这些div。尤其是WMS图层,当尝试单独绘制该图层时,会返回错误。您可以尝试在地图中渲染其中一个子div,但这对我不起作用。虽然,如果你只使用简单的矢量图形,它可以为你工作。

票数 2
EN

Stack Overflow用户

发布于 2015-05-28 00:53:25

好的,我已经在这上面花了几个小时了,我想出的最好的方法是对@Kenny806的答案进行了增强,基本上就是this one

它似乎确实能拾取WMS和矢量层:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    function exportMap() {

        var mapElem = document.getElementById('map'); // the id of your map div here

        // html2canvas not able to render css transformations (the container holding the image tiles uses a transform)
        // so we determine the values of the transform, and then apply them to TOP and LEFT 
        var transform=$(".gm-style>div:first>div").css("transform");
        var comp=transform.split(","); //split up the transform matrix
        var mapleft=parseFloat(comp[4]); //get left value
        var maptop=parseFloat(comp[5]);  //get top value
        $(".gm-style>div:first>div").css({ //get the map container. not sure if stable
          "transform":"none",
          "left":mapleft,
          "top":maptop,
        });

        html2canvas(mapElem, {
          useCORS: true,
          onrendered: function(canvas) {
             mapImg = canvas.toDataURL('image/png');

            // reset the map to original styling
            $(".gm-style>div:first>div").css({
              left:0,
              top:0,
              "transform":transform
            });

            // do something here with your mapImg
            // e.g. I then use the dataURL in a pdf using jsPDF...
            // createPDFObject();
          }
        });
    }

笔记

  • 仅在Chrome和Firefox上测试
  • 这是一个老套的解决方案(不幸的是,我正在努力寻找适合我的情况的其他选择)
  • 如果你可以选择使用Openlayers 3,似乎有更好的canvas支持,我也看到了一个令人信服的toBlob示例:Openlayers
票数 1
EN

Stack Overflow用户

发布于 2014-03-17 14:56:08

WMS draw工作得很好,但您必须实现一个代理,以便使用AJAX下载WMS tiles。有关" proxy“(不是http代理)的实现细节,请参阅html2canvas的PHP代理示例。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18519251

复制
相关文章
Openlayers2卷帘功能的实现
在WebGIS开发中,经常会有用户提需求,要实现卷帘功能,卷帘功能主要是实现两张图之间的对比。在前文中,讲到了openlayers3以及Arcgis for js中卷帘的实现,在本文讲述如何在openlayers2中实现卷帘功能。
牛老师讲GIS
2018/10/23
1.5K0
Openlayers2卷帘功能的实现
openlayers之selectfeature
在本文叙述如何在openlayers中实现鼠标经过某一对象时,对象高亮;点击某一对象时,弹出该对象的信息。重点为OpenLayers.Layer.Vector和OpenLayers.Control.SelectFeature,下面开始讲解。
牛老师讲GIS
2018/10/23
1.6K0
openlayers之selectfeature
手机端实现打印功能
1、  打印代理PC,使用Spring轮询机制,每隔一定时间,通过HTTPClient,向服务器发出查询待打印队列的请求。
week
2018/08/27
1.8K0
WordPress 添加网页打印功能
网页页面打印功能方便我们快速链接打印机,Wordpress方面有很多插件,今天何先生在这里介绍简单代码就能实现的方法。
空木白博客
2019/04/23
1.8K0
OpenLayers入门(二)
好久不见,距离OpenLayers入门第一篇已经过了很久,为什么迟迟没有后续呢,主要有两个原因,一是因为近期项目里使用地图的部分比较少,二是因为很多时候即使功能做出来了,但是还是不能完全理解,不是很明白的东西除了贴代码之外也写不了啥,其实第一篇也是很基础很简单的,但是意外的是看的人是最多的,这让我意识到可能即使是贴一下代码对一些人也是有帮助的,这就是这一篇的主要目的,可能有一些地方会看不懂,但是不要问,问我也不知道,如果你恰好了解的话十分欢迎在评论里分享,感谢~
街角小林
2022/06/15
2.8K0
OpenLayers入门(二)
openlayers实现画圆
通过OpenLayers.Control.DrawFeature和OpenLayers.Handler.Point实现在地图上画圆心。
牛老师讲GIS
2018/10/23
3.3K0
openlayers实现画圆
c#实现打印功能
c#实现打印功能,可以设置纸张大小,字体和颜色等         /// <summary>         /// 打印的按钮         /// </summary>         /// <param name="sender"></param>         /// <param name="e"></param>         private void btnPrint_Click(object sender, EventArgs e)         {            
跟着阿笨一起玩NET
2018/09/20
3.5K0
OpenLayers入门(一)
OpenLayers(https://openlayers.org/)是一个用来帮助开发Web地图应用的高性能的、功能丰富的JavaScript类库,可以满足几乎所有的地图开发需求。
街角小林
2022/06/15
5K0
OpenLayers入门(一)
element ui实现前台打印功能
      在项目中经常会使用打印功能,这次我们来看一下element ui实现打印功能,后台采用springboot作为后台接口方法,后台抽数据就不用看了,大家都明白,抽出来需要打印的数据就好,然后传给前台json数据。前台element ui来处理打印工作。下面咱们看一下前台如何做一个打印功能。
十分钟空间
2022/08/17
2.9K0
HTML打印准考证用JS在html页面实现打印功能
用JS在html页面实现打印功能 做项目时,有在网页实现全局和局部打印的需求,百度许久,现总结如下: 打印方式一: 1.首先在head里面加入下面一段js代码: <script language="javascript"> function preview(fang) { if (fang < 10){ bdhtml=window.document.body.innerHTML;//获取当前页的html代码 sprnstr="<!--startprint"+fang+"-->";//设置打印开始区域
SingYi
2022/07/14
9.9K0
HTML打印准考证用JS在html页面实现打印功能
利用bootstrap-table插件自带的打印功能打印表格
文章目录 1、前端代码: 2、前端页面: 1、表格数据展示 2、点击打印按钮之后: 3、插件下载地址: 4、碰到的bug 1、前端代码: <link href="https://unpkg.com/bootstrap-table@1.18.2/dist/bootstrap-table.min.css" rel="stylesheet"> <script src="https://unpkg.com/bootstrap-table@1.18.2/dist/bootstrap-table.min.js"
别团等shy哥发育
2023/02/25
2K0
利用bootstrap-table插件自带的打印功能打印表格
OpenFeign超时控制和日志打印功能
@FeignClient(value = "CLOUD-PAYMENT-SERVICE")    value的值是8001程序名称
一个风轻云淡
2022/11/13
8590
OpenFeign超时控制和日志打印功能
Python Print打印计时器功能
我们仔细看看print的参数:print(value,sep=’ ‘,end=’\n’,file=sys.stdout,flush=False)
用户7886150
2020/11/25
1.9K0
Vite + Vue3 + OpenLayers
本文案例使用 Vite 搭建项目,在 Vue 3 的基础上使用 OpenLayers 。
德育处主任
2022/04/15
2.8K0
Vite + Vue3 + OpenLayers
Echart在Openlayers的应用
echart,一个由百度前端发起的canvas国产类库(官网:http://echarts.baidu.com/index.html)。echart其实是在canvas类库zrender的基础上做的主题图库,优点有数据驱动,图例丰富,功能强大,支持数据拖拽重计算,数据区域漫游等功能,不论是从使用便捷程度、美观程度等方面都是不错的选择,在本文讲述如何在Openlayers中结合echart实现地图统计图的展示。
牛老师讲GIS
2018/10/23
2.6K0
Echart在Openlayers的应用
openlayers实现在线编辑
在前面有篇博文讲述了基于Arcgis for js和wkt实现在线数据的采集和编辑功能,在本文讲述如何在openlayers实现类似的功能。上一篇博文的地址为:
牛老师讲GIS
2018/10/23
3.5K0
openlayers实现在线编辑
PPT如何打印奇数页和偶数页?获取更多打印功能?
1、点击[视图] 2、点击[大纲视图] 3、点击[文本] 4、点击[复制] 5、点击[开始菜单] 6、点击[Word] 7、点击[布局] 8、点击[纸张方向] 9、点击[横向] 10、点击[文本] 11、点击[粘贴] 12、点击[文本] 13、点击[文件] 14、点击[打印] 15、点击[打印所有页] 16、点击[仅打印奇数页]
裴来凡
2022/05/28
4.9K0
PPT如何打印奇数页和偶数页?获取更多打印功能?
openlayers实现多图显示
概述: 本文讲述在openlayers中如何实现多图联动。 思路: 1、判断鼠标在哪个地图上; 2、添加该地图的地图移动事件; 3、设置另外一个地图的bound为该地图的。 代码: <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>openlayers map</title> <link rel="stylesheet" href="http://localhost/olapi/theme
牛老师讲GIS
2018/10/23
1.3K0
点击加载更多

相似问题

OpenLayers打印功能不工作

13

OpenLayers打印地图

20

未呈现OpenLayers功能

19

OpenLayers点击所选功能触发功能

28

OpenLayers覆盖功能id

24
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文