显然,问题似乎源于html2canvas
无法渲染 css 转换,至少在 chrome 中(我只能在 OSX 上的 chrome 中重现该问题)。保存瓷砖的容器使用-webkit-transform
. 所以我们可以做的是获取容器被移动的值,移除变换,赋值,left
然后top
从我们得到的值中transform
使用html2canvas
. 然后为了让地图不会中断,我们在html2canvas
完成后重置地图的 css 值。
所以我把它粘贴到你网站的 javascript 控制台中,它似乎工作
//get transform value
var transform=$(".gm-style>div:first>div").css("transform")
var comp=transform.split(",") //split up the transform matrix
var mapleft=parseFloat(comp[4]) //get left value
var maptop=parseFloat(comp[5]) //get top value
$(".gm-style>div:first>div").css({ //get the map container. not sure if stable
"transform":"none",
"left":mapleft,
"top":maptop,
})
html2canvas($('#map-canvas'),
{
useCORS: true,
onrendered: function(canvas)
{
var dataUrl= canvas.toDataURL('image/png');
location.href=dataUrl //for testing I never get window.open to work
$(".gm-style>div:first>div").css({
left:0,
top:0,
"transform":transform
})
}
});