mineMap地图截图

mineMap地图截图,mineMap示例中心说明:http://minedata.cn/minemapapi/demo/index.html#map_screen_shot
具体实现:

  1. 引入js: //minedata.cn/minemapapi/demo/js/canvas2image.js
  2. 地图初始化时,打开保留绘制缓存:
var map = new minemap.Map({
        container: 'map',
        style: "//minedata.cn/service/solu/style/id/2365",
        center: [116.46,39.92],
        zoom: 14,
        pitch: 0,
        maxZoom: 17,
        minZoom: 3,
        preserveDrawingBuffer: true //保留绘制缓存 默认为false,
        //如果设置为true,地图渲染效率会有所下降;备注:需要地图截屏时,需要将改参数设置为true
    });
  1. 如果仅截图底图以及addLayer方法添加的渲染图层,示例中方法即可
    若涉及echart绘制效果叠加截取,按照如下方法:
    ①截图方法:
			let pixRatio = this.getPixRatio();  //获取不同屏幕分辨率下的像素比(包括缩放状态)
			if (echartLayer) {
			//获取echart画布-透明背景
              let offcanvas = env.echartLayer.chart.getRenderedCanvas({
                pixelRatio: pixRatio, 
                backgroundColor: 'transparent'
              });
              //获取minemap画布
              let asd = document.getElementsByClassName('minemap-canvas')[0];
              let cwidth = asd.width, cheight = asd.height;
              //新建画布
              let mycanvas = document.createElement('canvas');
              mycanvas.height = cheight;
              mycanvas.width = cwidth;
              //将以上渲染画布叠加到新建画布上
              mycanvas.getContext("2d").drawImage(c, 0, 0);
              mycanvas.getContext("2d").drawImage(offcanvas, 0, 0, cwidth, cheight, 0 , 0, cwidth, cheight);
              //保存
              let img_data1 = Canvas2Image.saveAsJPEG(mycanvas, true).getAttribute('src');
              //下载
              this.saveFile(img_data1, `${fileName}.jpg`);
              }

②getPixRatio方法,获取像素比:
此方法是解决不同分辨率下,以及缩放状态下,echat和地图位置偏移的问题

getPixRatio() {
        let ratio = 0,
          screen = window.screen,
          ua = navigator.userAgent.toLowerCase();

        if (window.devicePixelRatio !== undefined) {
          ratio = window.devicePixelRatio;
        }
        else if (~ua.indexOf('msie')) {
          if (screen.deviceXDPI && screen.logicalXDPI) {
            ratio = screen.deviceXDPI / screen.logicalXDPI;
          }
        }
        else if (window.outerWidth !== undefined && window.innerWidth !== undefined) {
          ratio = window.outerWidth / window.innerWidth;
        }
        if (ratio) {
          ratio = Math.round(ratio * 100)/100;
        }
        return ratio;
      },

③ 图片保存并自动下载的方法

saveFile(data, filename) {
    let save_link = document.createElement('a');
    save_link.href = data;
    save_link.download = filename;

    let event = document.createEvent('MouseEvents');
    event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
    save_link.dispatchEvent(event);
  }
``

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值