Add rendering test for vector tile layer rotation w/ layer on top

This commit is contained in:
Florent gravin
2018-11-15 16:41:06 +01:00
parent 7630fafcf2
commit f9c64e52af
9 changed files with 78 additions and 53 deletions

View File

@@ -1,19 +1,12 @@
import Map from '../../../src/ol/CompositeMap.js'; import Map from '../../../src/ol/CompositeMap.js';
import View from '../../../src/ol/View.js'; import View from '../../../src/ol/View.js';
import TileLayer from '../../../src/ol/layer/Tile.js'; import TileLayer from '../../../src/ol/layer/Tile.js';
import {fromLonLat} from "../../../src/ol/proj"; import {fromLonLat} from '../../../src/ol/proj';
import XYZ from "../../../src/ol/source/XYZ"; import XYZ from '../../../src/ol/source/XYZ';
import {getSize} from "../../../src/ol/extent"; import {getSize} from '../../../src/ol/extent';
const center = fromLonLat([8.6, 50.1]); const center = fromLonLat([8.6, 50.1]);
function centerExtent() {
const c = map.getView().calculateExtent([256, 256]);
const qw = getSize(c)[0] / 4;
const qh = getSize(c)[1] / 4;
return [c[0] + qw, c[1] + qh, c[2] - qw, c[3] - qh];
}
const map = new Map({ const map = new Map({
target: 'map', target: 'map',
view: new View({ view: new View({
@@ -43,3 +36,12 @@ map.addLayer(
); );
render(); render();
function centerExtent() {
const c = map.getView().calculateExtent([256, 256]);
const qw = getSize(c)[0] / 4;
const qh = getSize(c)[1] / 4;
return [c[0] + qw, c[1] + qh, c[2] - qw, c[3] - qh];
}

View File

@@ -1,8 +1,8 @@
import Map from '../../../src/ol/CompositeMap.js'; import Map from '../../../src/ol/CompositeMap.js';
import View from '../../../src/ol/View.js'; import View from '../../../src/ol/View.js';
import TileLayer from '../../../src/ol/layer/Tile.js'; import TileLayer from '../../../src/ol/layer/Tile.js';
import {fromLonLat} from "../../../src/ol/proj"; import {fromLonLat} from '../../../src/ol/proj';
import XYZ from "../../../src/ol/source/XYZ"; import XYZ from '../../../src/ol/source/XYZ';
const center = fromLonLat([8.6, 50.1]); const center = fromLonLat([8.6, 50.1]);

View File

@@ -1,8 +1,8 @@
import Map from '../../../src/ol/CompositeMap.js'; import Map from '../../../src/ol/CompositeMap.js';
import View from '../../../src/ol/View.js'; import View from '../../../src/ol/View.js';
import TileLayer from '../../../src/ol/layer/Tile.js'; import TileLayer from '../../../src/ol/layer/Tile.js';
import {fromLonLat} from "../../../src/ol/proj"; import {fromLonLat} from '../../../src/ol/proj';
import XYZ from "../../../src/ol/source/XYZ"; import XYZ from '../../../src/ol/source/XYZ';
const center = fromLonLat([8.6, 50.1]); const center = fromLonLat([8.6, 50.1]);

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 KiB

View File

@@ -0,0 +1,53 @@
import Map from '../../../src/ol/Map.js';
import View from '../../../src/ol/View.js';
import VectorTileSource from '../../../src/ol/source/VectorTile';
import MVT from '../../../src/ol/format/MVT';
import {createXYZ} from '../../../src/ol/tilegrid';
import VectorTileLayer from '../../../src/ol/layer/VectorTile';
import VectorSource from '../../../src/ol/source/Vector';
import Feature from '../../../src/ol/Feature';
import Point from '../../../src/ol/geom/Point';
import VectorLayer from '../../../src/ol/layer/Vector';
import Style from '../../../src/ol/style/Style';
import CircleStyle from '../../../src/ol/style/Circle';
import Fill from '../../../src/ol/style/Fill';
const vectorSource = new VectorSource({
features: [
new Feature(new Point([1825727.7316762917, 6143091.089223046]))
]
});
const layer = new VectorLayer({
zIndex: 1,
source: vectorSource,
style: new Style({
image: new CircleStyle({
radius: 10,
fill: new Fill({
color: 'red'
})
})
})
});
new Map({
layers: [
layer,
new VectorTileLayer({
source: new VectorTileSource({
format: new MVT(),
tileGrid: createXYZ(),
url: '/data/tiles/mvt/{z}-{x}-{y}.vector.pbf',
transition: 0
})
})
],
target: 'map',
view: new View({
center: [1825927.7316762917, 6143091.089223046],
zoom: 14,
rotation: Math.PI / 4
})
});
render({message: 'Vector tile layer rotates with vector layer on top'});

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

View File

@@ -1,9 +1,9 @@
import Map from '../../../src/ol/Map.js'; import Map from '../../../src/ol/Map.js';
import View from '../../../src/ol/View.js'; import View from '../../../src/ol/View.js';
import VectorTileSource from "../../../src/ol/source/VectorTile"; import VectorTileSource from '../../../src/ol/source/VectorTile';
import MVT from "../../../src/ol/format/MVT"; import MVT from '../../../src/ol/format/MVT';
import {createXYZ} from "../../../src/ol/tilegrid"; import {createXYZ} from '../../../src/ol/tilegrid';
import VectorTileLayer from "../../../src/ol/layer/VectorTile"; import VectorTileLayer from '../../../src/ol/layer/VectorTile';
const map = new Map({ const map = new Map({
layers: [ layers: [
@@ -23,5 +23,5 @@ const map = new Map({
}) })
}); });
map.getView().setRotation( Math.PI / 4); map.getView().setRotation(Math.PI / 4);
render({message: 'Vector tile layer rotates'}); render({message: 'Vector tile layer rotates'});

View File

@@ -1,9 +1,9 @@
import Map from '../../../src/ol/CompositeMap.js'; import Map from '../../../src/ol/CompositeMap.js';
import View from '../../../src/ol/View.js'; import View from '../../../src/ol/View.js';
import VectorTileSource from "../../../src/ol/source/VectorTile"; import VectorTileSource from '../../../src/ol/source/VectorTile';
import MVT from "../../../src/ol/format/MVT"; import MVT from '../../../src/ol/format/MVT';
import {createXYZ} from "../../../src/ol/tilegrid"; import {createXYZ} from '../../../src/ol/tilegrid';
import VectorTileLayer from "../../../src/ol/layer/VectorTile"; import VectorTileLayer from '../../../src/ol/layer/VectorTile';
new Map({ new Map({
layers: [ layers: [

View File

@@ -1,12 +1,8 @@
import Feature from '../../../../src/ol/Feature.js';
import Map from '../../../../src/ol/Map.js'; import Map from '../../../../src/ol/Map.js';
import View from '../../../../src/ol/View.js'; import View from '../../../../src/ol/View.js';
import MVT from '../../../../src/ol/format/MVT.js'; import MVT from '../../../../src/ol/format/MVT.js';
import Point from '../../../../src/ol/geom/Point.js';
import VectorLayer from '../../../../src/ol/layer/Vector.js';
import VectorTileLayer from '../../../../src/ol/layer/VectorTile.js'; import VectorTileLayer from '../../../../src/ol/layer/VectorTile.js';
import {assign} from '../../../../src/ol/obj.js'; import {assign} from '../../../../src/ol/obj.js';
import VectorSource from '../../../../src/ol/source/Vector.js';
import VectorTileSource from '../../../../src/ol/source/VectorTile.js'; import VectorTileSource from '../../../../src/ol/source/VectorTile.js';
import CircleStyle from '../../../../src/ol/style/Circle.js'; import CircleStyle from '../../../../src/ol/style/Circle.js';
import Fill from '../../../../src/ol/style/Fill.js'; import Fill from '../../../../src/ol/style/Fill.js';
@@ -76,32 +72,6 @@ describe('ol.rendering.layer.VectorTile', function() {
}); });
}); });
it('renders rotated view correctly with vector layer on top', function(done) {
createMap();
const vectorSource = new VectorSource({
features: [
new Feature(new Point([1825727.7316762917, 6143091.089223046]))
]
});
map.addLayer(new VectorLayer({
zIndex: 1,
source: vectorSource,
style: new Style({
image: new CircleStyle({
radius: 10,
fill: new Fill({
color: 'red'
})
})
})
}));
map.getView().setRotation(Math.PI / 4);
waitForTiles(source, {}, function() {
expectResemble(map, 'rendering/ol/layer/expected/vectortile-vector-rotated.png',
14, done);
});
});
it('renders correctly with the canvas renderer (HiDPI)', function(done) { it('renders correctly with the canvas renderer (HiDPI)', function(done) {
createMap(2); createMap(2);
waitForTiles(source, {}, function() { waitForTiles(source, {}, function() {