commit f0dd5a11b8e5b3ac2a3cdcb2ba16606db262fe4d
parent 526ba9e306e49eff9454afb2631748d1be2b288e
Author: Sergej Orlov <wladimirych@gmail.com>
Date: Sun, 26 Feb 2017 22:00:20 +0300
[print] better progress increment for canvas markers and track lines
Diffstat:
3 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/src/lib/leaflet.control.printPages/map-render.js b/src/lib/leaflet.control.printPages/map-render.js
@@ -200,8 +200,9 @@ async function* iterateLayersTiles(layers, latLngBounds, destPixelSize, resoluti
let layerPromises = [];
for (let tilePromise of iterateTilePromises()) {
layerPromises.push(tilePromise.tilePromise);
+ let progressInc = (layer._printProgressWeight || 1) / count;
tilePromise.tilePromise =
- tilePromise.tilePromise.then((tileInfo) => Object.assign({zoom, progressInc: 1 / count}, tileInfo));
+ tilePromise.tilePromise.then((tileInfo) => Object.assign({zoom, progressInc}, tileInfo));
doStop = yield tilePromise;
if (doStop) {
tilePromise.abortLoading();
@@ -251,7 +252,11 @@ async function* promiseQueueBuffer(source, maxActive) {
async function renderPages({map, pages, zooms, resolution, scale, progressCallback}) {
const xhrQueue = new XHRQueue();
const layers = getLayersForPrint(map, xhrQueue);
- const progressRange = pages.length * layers.length;
+ let progressRange = 0;
+ for (let layer of layers) {
+ progressRange += layer._printProgressWeight || 1;
+ }
+ progressRange *= pages.length;
const pageImagesInfo = [];
for (let page of pages) {
let destPixelSize = page.printSize.multiplyBy(resolution / 25.4).round();
diff --git a/src/lib/leaflet.layer.rasterize/CanvasMarkers.js b/src/lib/leaflet.layer.rasterize/CanvasMarkers.js
@@ -4,6 +4,8 @@ import {CanvasLayerGrabMixin} from './TileLayer';
L.Layer.CanvasMarkers.include(CanvasLayerGrabMixin);
L.Layer.CanvasMarkers.include({
+ _printProgressWeight: 0.1,
+
cloneMarkers: function() {
const markers = this.rtree.all();
diff --git a/src/lib/leaflet.layer.rasterize/MeasuredLine.js b/src/lib/leaflet.layer.rasterize/MeasuredLine.js
@@ -2,6 +2,7 @@ import L from 'leaflet';
import 'lib/leaflet.polyline-measure';
L.Polyline.include({
+ _printProgressWeight: 0.1,
printWidthMm: 1,
cloneForPrint: function(options) {