无法在'HTMLCanvasElement'上执行'toDataURL'

时间:2017-06-18 02:43:54

标签: javascript html5-canvas openlayers-3

我尝试使用点击按钮打印地图,但我收到了此错误:

  

无法在'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);

0 个答案:

没有答案