html2canvas实现将地图截屏输出图片(设置图片标题,自动下载截图的图片)

html2canvas文档:html2canvas

<div id="map"></div>
    <canvas id="myCanvas" width="800" height="600" style="display:none;">
	</canvas>
    <div id="box">
        <button id="export">出图</button>
 </div>
$("#export").click(function(){
          setTimeout(function(){
	       var canvasImgSizeArr = [ $('#map')[0].offsetWidth, $('#map')[0].offsetHeight ];
		   html2canvas($('#map')[0], {
		      useCORS:true,//保证跨域图片的显示,如果为不添加改属性,或者值为false,地图底图不显示
		     x:window.pageXOffset, //页面在水平方向的滚动距离
		     y:window.pageYOffset,//页面在垂直方向的滚动距离
		     onrendered: function (canvas) {
		     var img = new Image();
		     var canvas2 = document.getElementById("myCanvas");
		     var ctx = canvas2.getContext('2d');
		    ctx.fillStyle="#FFFFFF";//画布填充色    	                                    ctx.fillRect(0,0,canvasImgSizeArr[0],canvasImgSizeArr[1]);
		    ctx.lineWidth="1";
		    ctx.rect(20,30,canvas2.width-40,canvas2.height-60);//矩形距离画布左上角水平和垂直距离,矩形的宽高
		    ctx.stroke();
		    img.src = canvas.toDataURL(); 
		                                	  
		    img.onload=function(){
		         // 绘制图片
		          ctx.drawImage(img,24,34,canvas2.width-48,canvas2.height-68);    //图片距离画布左上角水平和垂直距离,图片的宽高
		          // 绘制水印
		          ctx.font="15pt Arial";  //水印文字添加
		          ctx.fillStyle = "#000000"; //设置画布背景色
		          var text = "全国省级边界图";
		          ctx.textBaseline = 'bottom';
		          ctx.fillText(text,(canvas2.width/2-ctx.measureText(text).width/2), 27);//文字的位置
			      var a = document.createElement("a");
			      a.setAttribute("id", "download3");
			      document.body.appendChild(a);
			       //以下代码为下载此图片功能
			      var triggerDownload = $("#download3").attr("href", canvas2.toDataURL()).attr("download", "专题图.png");
			      triggerDownload[0].click();
			       //移除下载a标签
			      document.body.removeChild(a);
		        }
		      }
		                                  
		 });	     
	                              
	              },500);
   })

完整代码:

<!DOCTYPE html>
<html>

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta name="viewport" content="initial-scale=1, maximum-scale=1,user-scalable=no" />
    <title>Test Map</title>
    <link rel="stylesheet" href="../js/arcgis_js_api/library/3.17/3.17/dijit/themes/claro/claro.css">
    <link rel="stylesheet" href="../js/arcgis_js_api/library/3.17/3.17/esri/css/esri.css">
    <style>
        html,
        body,
        #map {
            margin: 0;
            padding: 0;
            width: 800px;
            height: 600px;
            position: relative;
        }
    </style>
    <script src="../js/arcgis_js_v317_api/arcgis_js_api/library/3.17/3.17compact/init.js"></script>
    <script src="../js/jquery-1.11.3.js"></script>
    <script src="../js/html2canvas.min.js"></script>
    <script src="../js/canvas2image.js"></script>

   
    <script>
        var map;
        require([
            "esri/map",
            "esri/geometry/Extent",
            "esri/layers/ArcGISTiledMapServiceLayer",
            "esri/layers/FeatureLayer",
            "dojo/parser",
            "dojo/domReady!"
        ], function (
            Map,
            Extent,
            ArcGISTiledMapServiceLayer,
            FeatureLayer,
            parser
        ) {
                parser.parse();
                map = new Map("map", {
                    center: [116.389160, 39.91816],
                    zoom:4
                });
                //切片地图
                var tiledMapServiceLayer = new ArcGISTiledMapServiceLayer(
                    "https://services.arcgisonline.com/arcgis/rest/services/World_Imagery/MapServer"
                );
                //添加省份服务
				var provinceLayer = new FeatureLayer("http://59.108.92.196:8061/arcgis/rest/services/provincelayer/MapServer/0", {
					showLabels : true,
					outFields : [ "*" ],
					visible : true
				});
                map.addLayer(tiledMapServiceLayer);
                map.addLayer(provinceLayer);
                $("#export").click(function(){
                    	  setTimeout(function(){
	                    	var canvasImgSizeArr = [ $('#map')[0].offsetWidth, $('#map')[0].offsetHeight ];
		                              html2canvas($('#map')[0], {
		                            	  useCORS:true,//保证跨域图片的显示,如果为不添加改属性,或者值为false,地图底图不显示
		                            	  x:window.pageXOffset, //页面在水平方向的滚动距离
		                            	  y:window.pageYOffset,//页面在垂直方向的滚动距离
		                                  onrendered: function (canvas) {
		                                	  var img = new Image();
		    	                    		  var canvas2 = document.getElementById("myCanvas");
		    	                              var ctx = canvas2.getContext('2d');
		    	                              ctx.fillStyle="#FFFFFF";//画布填充色
		    	                              ctx.fillRect(0,0,canvasImgSizeArr[0],canvasImgSizeArr[1]);
		    	                              ctx.lineWidth="1";
		    	                              ctx.rect(20,30,canvas2.width-40,canvas2.height-60);//矩形距离画布左上角水平和垂直距离,矩形的宽高
		    	                              ctx.stroke();
		                                	  img.src = canvas.toDataURL(); 
		                                	  
		                                	  img.onload=function(){
		                                		// 绘制图片
		                                          ctx.drawImage(img,24,34,canvas2.width-48,canvas2.height-68);    //图片距离画布左上角水平和垂直距离,图片的宽高
		                                          // 绘制水印
		                                          ctx.font="15pt Arial";  //水印文字添加
		                                          ctx.fillStyle = "#000000"; //设置画布背景色
		                                          var text = "全国省级边界图";
		                                          ctx.textBaseline = 'bottom';
		                                          ctx.fillText(text,(canvas2.width/2-ctx.measureText(text).width/2), 27);//文字的位置
			                                      var a = document.createElement("a");
			                                      a.setAttribute("id", "download3");
			                                      document.body.appendChild(a);
			                                      //以下代码为下载此图片功能
			                                      var triggerDownload = $("#download3").attr("href", canvas2.toDataURL()).attr("download", "专题图.png");
			                                      triggerDownload[0].click();
			                                      //移除下载a标签
			                                      document.body.removeChild(a);
		                                	  }
		                                	  }
		                                  
		                              	});	     
	                              
	                    	  },500);
                })

            });
    </script>
</head>

<body>
    <div id="map"></div>
    <canvas id="myCanvas" width="800" height="600" style="display:none;">
	</canvas>
    <div id="box">
        <button id="export">出图</button>
    </div>
</body>

</html>

截图效果:
在这里插入图片描述

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值