Files
openlayers/rendering/cases/layer-vectortile-renderbuffer/main.js
2021-01-10 18:59:07 +01:00

60 lines
1.3 KiB
JavaScript

import Feature from '../../../src/ol/Feature.js';
import Map from '../../../src/ol/Map.js';
import Point from '../../../src/ol/geom/Point.js';
import VectorTileLayer from '../../../src/ol/layer/VectorTile.js';
import VectorTileSource from '../../../src/ol/source/VectorTile.js';
import View from '../../../src/ol/View.js';
import {Circle, Fill, Stroke, Style} from '../../../src/ol/style.js';
const offset = 1380000;
const points = [
[-offset, -offset],
[-offset, offset],
[offset, offset],
[offset, -offset],
];
const vectorTileSource = new VectorTileSource({
tileUrlFunction: (tileCoord) => tileCoord,
tileLoadFunction(tile, tileCoord) {
const features = points.map(
(corner) =>
new Feature({
geometry: new Point(corner),
tileCoord,
})
);
tile.setFeatures(features);
},
});
const vectorTileLayer = new VectorTileLayer({
source: vectorTileSource,
style: new Style({
image: new Circle({
radius: 50,
fill: new Fill({
color: 'rgba(255, 0, 0, 0.5)',
}),
stroke: new Stroke({
width: 1,
color: 'black',
}),
}),
}),
});
new Map({
target: 'map',
layers: [vectorTileLayer],
view: new View({
center: [0, 0],
zoom: 2,
multiWorld: true,
}),
});
render({
message: 'Vector tile layer renders tiles from renderBuffer',
});