Merge pull request #10656 from mike-000/patch-6

Fix for export PDF example compatibility issues, and layer opacity handling.
This commit is contained in:
Andreas Hocevar
2020-02-13 20:06:44 +01:00
committed by GitHub
2 changed files with 6 additions and 3 deletions

View File

@@ -6,7 +6,7 @@ docs: >
Example of exporting a map as a PDF using the <a href="https://github.com/MrRio/jsPDF" target="_blank">jsPDF</a> library. Example of exporting a map as a PDF using the <a href="https://github.com/MrRio/jsPDF" target="_blank">jsPDF</a> library.
tags: "export, pdf, openstreetmap" tags: "export, pdf, openstreetmap"
resources: resources:
- https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.2.61/jspdf.min.js - https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.5.3/jspdf.min.js
--- ---
<div class="row-fluid"> <div class="row-fluid">
<div class="span12"> <div class="span12">

View File

@@ -18,7 +18,8 @@ feature.getGeometry().transform('EPSG:4326', 'EPSG:3857');
const vector = new VectorLayer({ const vector = new VectorLayer({
source: new VectorSource({ source: new VectorSource({
features: [feature] features: [feature]
}) }),
opacity: 0.5
}); });
@@ -62,8 +63,10 @@ exportButton.addEventListener('click', function() {
mapCanvas.width = width; mapCanvas.width = width;
mapCanvas.height = height; mapCanvas.height = height;
const mapContext = mapCanvas.getContext('2d'); const mapContext = mapCanvas.getContext('2d');
document.querySelectorAll('.ol-layer canvas').forEach(function(canvas) { Array.prototype.forEach.call(document.querySelectorAll('.ol-layer canvas'), function(canvas) {
if (canvas.width > 0) { if (canvas.width > 0) {
const opacity = canvas.parentNode.style.opacity;
mapContext.globalAlpha = opacity === '' ? 1 : Number(opacity);
const transform = canvas.style.transform; const transform = canvas.style.transform;
// Get the transform parameters from the style's transform matrix // Get the transform parameters from the style's transform matrix
const matrix = transform.match(/^matrix\(([^\(]*)\)$/)[1].split(',').map(Number); const matrix = transform.match(/^matrix\(([^\(]*)\)$/)[1].split(',').map(Number);