Merge pull request #9361 from lutzhelm/9343-zdirection

Add a zDirection option for Zoomify - implements #9343
This commit is contained in:
Andreas Hocevar
2019-03-21 19:12:41 +01:00
committed by GitHub
12 changed files with 70 additions and 1 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 778 B

View File

@@ -0,0 +1,25 @@
import Map from '../../../src/ol/Map.js';
import View from '../../../src/ol/View.js';
import TileLayer from '../../../src/ol/layer/Tile.js';
import Zoomify from '../../../src/ol/source/Zoomify.js';
const layer = new TileLayer({
source: new Zoomify({
url: '/data/tiles/zoomify/',
size: [200, 200],
tileSize: 100
})
});
new Map({
layers: [layer],
target: 'map',
view: new View({
resolutions: [2, 1],
extent: [0, -200, 200, 0],
center: [100, -100],
zoom: 0.4
})
});
render();

Binary file not shown.

After

Width:  |  Height:  |  Size: 801 B

View File

@@ -0,0 +1,26 @@
import Map from '../../../src/ol/Map.js';
import View from '../../../src/ol/View.js';
import TileLayer from '../../../src/ol/layer/Tile.js';
import Zoomify from '../../../src/ol/source/Zoomify.js';
const layer = new TileLayer({
source: new Zoomify({
url: '/data/tiles/zoomify/',
size: [200, 200],
tileSize: 100,
zDirection: -1
})
});
new Map({
layers: [layer],
target: 'map',
view: new View({
resolutions: [2, 1],
extent: [0, -200, 200, 0],
center: [100, -100],
zoom: 0.4
})
});
render();

Binary file not shown.

After

Width:  |  Height:  |  Size: 733 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 670 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 734 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 670 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 669 B

View File

@@ -143,7 +143,8 @@ class CanvasTileLayerRenderer extends CanvasLayerRenderer {
const tileSource = tileLayer.getSource();
const sourceRevision = tileSource.getRevision();
const tileGrid = tileSource.getTileGridForProjection(projection);
const z = tileGrid.getZForResolution(viewResolution, this.zDirection);
const zDirection = tileSource.zDirection === undefined ? this.zDirection : tileSource.zDirection;
const z = tileGrid.getZForResolution(viewResolution, zDirection);
const tileResolution = tileGrid.getResolution(z);
let extent = frameState.extent;

View File

@@ -105,6 +105,14 @@ class TileSource extends Source {
*/
this.tileOptions = {transition: options.transition};
/**
* zDirection hint, read by the renderer. Indicates which resolution should be used
* by a renderer if the views resolution does not match any resolution of the tile source.
* If 0, the nearest resolution will be used. If 1, the nearest lower resolution
* will be used. If -1, the nearest higher resolution will be used.
* @type {number=}
*/
this.zDirection;
}
/**

View File

@@ -111,6 +111,10 @@ export class CustomTile extends ImageTile {
* @property {number} [transition] Duration of the opacity transition for rendering.
* To disable the opacity transition, pass `transition: 0`.
* @property {number} [tileSize=256] Tile size. Same tile size is used for all zoom levels.
* @property {number} [zDirection] Indicate which resolution should be used
* by a renderer if the views resolution does not match any resolution of the tile source.
* If 0, the nearest resolution will be used. If 1, the nearest lower resolution
* will be used. If -1, the nearest higher resolution will be used.
*/
@@ -253,6 +257,11 @@ class Zoomify extends TileImage {
transition: options.transition
});
/**
* @inheritDoc
*/
this.zDirection = options.zDirection;
}
}