arcgis for js 叠加图标后,使用html2canvas截图,截取不到解决方法

本文介绍了一种将包含image标签的SVG元素转换为Canvas,并进一步保存为PNG图片的方法。通过使用canvg和html2canvas库,可以实现图像的转换与导出。特别注意的是对于image元素需要在Canvas中进行额外的绘制。
$("#SaveImage").click(function(){
		//将svg转换成canvas
		var svg=$("#map_layers").html().trim();
		var content=$("#map_layers").find("svg").html().trim();
		$("#map_gc").find("image").each(function(){
			content=content.replace($(this).prop("outerHTML"),"");
		});
		var regex = /<svg(S*?)[^>]*>/;
		var arr = svg.match(regex);
		svg=arr[0]+content+"</svg>";
		canvg('canvasSvg', svg);
		html2canvas($("#map"), {
			onrendered: function(canvas) {
				var canvas2 = $("#canvasSvg");
				canvas.getContext("2d").drawImage(canvas2[0],0,0,$("#map").width(),$("#map").height());
				$("#map_gc").find("image").each(function(){
					var obj=$(this);
					var x=$(this).attr("x");
					var y=$(this).attr("y");
					var width=$(this).attr("width");
					var height=$(this).attr("height");
					if(width==8){
						canvas.getContext("2d").drawImage(obj[0],x,y,width,height);
					}else{
						canvas.getContext("2d").drawImage(obj[0],x,y-1-height/2,width,height);	
					}
				});
				
				var link = document.createElement('a');
				link.href=canvas.toDataURL();
				link.download="保存结果.png";
				link.click();
			}
		});
	});

通过F12看到要保存的图,map对象中包含的svg中含有image标签,对于image标签需要在canvas中重新绘制,方法如上,就可以保存成对应的图片了,找了好久,记录一下,不过使用的地图是切片,这个保存还是存在跨域问题,如果哪位前辈有方法,分享一下啊~~~~

评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

肆意飞扬

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值