Ich benutze Openlayers 3, um einige Bereiche von Interesse (Vector-Layer) auf Bing-Karten zu zeichnen. Die Anwendung kann auch eine Tabelle mit Daten erstellen, die auf OL3-Cavnas gezeichnet wurden. Dann kann der Benutzer die erstellte Karte mit dem folgenden Code an den Drucker senden.Tainted Canvases
function handlePrintMap() {
var canvas = document.getElementsByTagName('canvas')[0];
var dataUrl = canvas.toDataURL('image/png');
var windowContent = '<!DOCTYPE html>';
windowContent += '<html>'
windowContent += '<head><title>Print canvas</title></head>';
windowContent += '<body>'
windowContent += '<img src="' + dataUrl + '">';
windowContent += '</body>';
windowContent += '</html>';
var printWin = window.open('','','width=1280,height=1027');
printWin.document.open();
printWin.document.write(windowContent);
printWin.document.close();
printWin.focus();
printWin.print();
printWin.close();
}
Bis zu diesem Punkt funktioniert alles wie geplant.
andere Schicht hinzugefügt wird, von MapServer stammte, mit dem folgenden Code
airwaysLayer.setSource(createAWYs('airways,navpoints'));
wo airwaysLayer
vom Typ ol.layer.Image
.
Mit nun handlePrintMap()
erzeugt den folgenden Fehler
Uncaught SecurityError: Failed to execute 'toDataURL' on 'HTMLCanvasElement': Tainted canvases may not be exported.
Ich versuchte this Antwort aber vergeblich.
MapServer muss CORS aktiviert haben, oder Sie müssen die Anforderung stattdessen über einen Proxy ausführen – bartvde