vue + html2canvas + ArcGIS 3.x 地图一键截图功能踩坑之路(三)

本文介绍了在Vue项目中,结合html2canvas和ArcGIS 3.x实现地图一键截图时遇到的地图偏移、小组件去除等问题及解决方案。通过调整svg的transform为viewBox,解决地图点线位置偏移;利用onclone处理地图组件的隐藏,修正截图效果。
摘要由CSDN通过智能技术生成

 4、地图移动之后再截图,截图的点线位置和视图的不一样,图片有偏移

这个问题表现在,地图底图正常,绘制的点线层和截图前不一样。点线层偏的老远。

最终解决方案: html2canvas用onclone(), 把svg的位移从transform换成用viewbox控制。

先看渲染出来的代码,地图底图是一个div,然后地图上自己画的线、打的点什么的全都在一个svg里面。

后面测出来好像和电脑的分辨率有点关系,又发现是在html2canvas转换的时候svg的transform有点失灵,查资料说可以把svg的定位方式改成另外一种。于是先试试用绝对定位top、left来控制位移。

先在html2canvas之前复制一个dom进行操作,为了不影响视图界面上的地图呈现,后面使用html2canvas的时候记得也要换成这个新的dom。

因为html2canvas的目标dom是一定要渲染出来的,所以还要给这个newDom加上一个绝对定位append到页面上。测试的时候暂时放在最上层不管他

bug1:这里有一个坑,在外面复制dom的这种方法,html2canvas要去掉scrollX 和 scrollY,否则截图不全。

然后找到svg的transform,得到一个translate(xxx,xxx)或者matrix(x,x,x,x,x,x)的字符串。这两种我都获得过,好在偏移量的xy值是括号里面的后两位,用

        let trans = svgDom.style.transform;

        let transArr = trans.substring(10, trans.length - 1).split(",");

        svgDom.style.transform = "";  /

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值