使用HTML2Canvas,我正在尝试捕获Google地图的截图(可以正常工作),然后捕获覆盖在其上方的
然后页面会显示这两个
到目前为止,我的问题是当我尝试捕获
HTML:
#overlay
div(用于允许人们在特定位置放置图片)(也可以正常工作)。然后页面会显示这两个
canvas
元素,然后我想再次捕获它们,将两个画布合并成一个图像,然后用户可以下载。到目前为止,我的问题是当我尝试捕获
#preview
div时,HTML2Canvas似乎没有捕获它创建的canvas
元素。HTML:
<div id="mainPanel">
<div id="overlay">
</div>
<button class="download">Download as PDF</button>
<button onclick="startEdit();" class="edit_button">Start Editing</button>
<div id="map">
<input id="pac-input" class="controls" type="text" placeholder="Search Box">
<div id="map-canvas"></div>
</div>
<div id="preview">
</div>
</div>
HTML2Canvas JQuery:
$(".download").click(function() {
html2canvas($("#map"), {
logging: true,
proxy: "https://html2canvas.appspot.com/query",
onrendered: function(canvas) {
// var img = canvas.toDataURL("image/png");
$(canvas).css({"position" : "absolute", "z-index" : "999"});
document.getElementById("preview").appendChild(canvas);
html2canvas($("#overlay"), {
logging: true,
onrendered: function(canvas1) {
// var img = canvas.toDataURL("image/png");
$(canvas1).css({"position" : "absolute", "z-index" : "1000"});
document.getElementById("preview").appendChild(canvas1);
setTimeout(function() {downloadURI()}, 5000);
}
});
}
});
});
function downloadURI() {
html2canvas($("#preview"), {
logging: true,
onrendered: function(canvas2) {
var img = canvas2.toDataURL("image/png");
window.open(img);
// var link = document.createElement("a");
// link.download = "image-download.png";
// link.href = img;
// link.click();
}
});
}
如您所见,我已经尝试延迟DownloadURI
函数以防止画布未能及时加载,但这不是问题所在。我不确定是否有关于canvas
元素的问题导致插件无法正常工作。
工作原理:我的上述代码相当简单。当一个HTML2Canvas完成后,它运行另一个HTML2Canvas。这两个画布都被添加到#preview
元素中,以便我可以捕获该元素和其上面的2个画布。完成后,它会运行另一个函数来拍摄#preview
元素,我希望将2张图片叠加成一张用户可以下载的单张图片,但结果只显示了一张空白图片。
如果需要更多信息,请告诉我,谢谢。