我尝试使用点击按钮打印地图,但我收到了此错误:
无法在'HTMLCanvasElement'上执行'toDataURL':受污染的画布 可能无法导出
我搜索了一些解决方案,比如在代码中插入这个:
img.setAttribute('crossOrigin', 'anonymous');
这里是我使用的代码:
ol.control.Print = function(opt_options) {
var options = opt_options || {};
var _this = this;
var dataURL;
var controlDiv = document.createElement('div');
controlDiv.className = options.className || 'ol-print ol-unselectable ol-control';
var printButton = document.createElement('button');
printButton.textContent = options.label || '';
printButton.title = options.tipLabel || 'Print map';
printButton.addEventListener('click', function(evt) {
_this.getMap().once('postcompose', function(evt) {
var canvas = evt.context.canvas;
dataURL = canvas.toDataURL('image/png');
});
_this.getMap().renderSync();
window.open(dataURL, '_blank').print();
dataURL = null;
});
controlDiv.appendChild(printButton);
ol.control.Control.call(this, {
element: controlDiv,
target: options.target
});
};
ol.inherits(ol.control.Print, ol.control.Control);