ol-mbtiles
Version:
MBTiles format reader for Openlayers
69 lines (65 loc) • 1.99 kB
text/typescript
import Map from 'ol/Map.js';
import TileLayer from 'ol/layer/Tile.js';
import OSM from 'ol/source/OSM';
import View from 'ol/View.js';
import ImageTileLayer from 'ol/layer/Tile';
import TileDebug from 'ol/source/TileDebug';
import { fromLonLat, get as getProjection } from 'ol/proj';
import { Extent, getWidth } from 'ol/extent';
import { MBTilesRasterSource } from 'ol-mbtiles';
import TileGrid from 'ol/tilegrid/TileGrid';
const projExtent = getProjection('EPSG:3857')?.getExtent() as Extent;
const baseResolution = getWidth(projExtent) / 256;
function resolutions(maxZoom: number): number[] {
const r = [ baseResolution ];
for (let z = 1; z <= maxZoom; z++)
r.push(r[r.length - 1] / 2);
return r;
}
// Raster MBTiles from
// https://www.data.gouv.fr/en/datasets/pyramide-de-tuiles-depuis-la-bd-ortho-r/
// 240MB original file
// This is a synchronous function
export default function () {
return new Map({
target: 'map',
layers: [
new TileLayer({
zIndex: 20,
source: new TileDebug()
}),
new TileLayer({
zIndex: 0,
source: new OSM(),
}),
new ImageTileLayer({
zIndex: 10,
opacity: 0.5,
source: new MBTilesRasterSource({
url: 'https://velivole.b-cdn.net/tiles-RGR92UTM40S.mbtiles',
attributions: [
'IGN / Mapotempo',
'BD Ortho 5m',
'https://www.data.gouv.fr/en/datasets/pyramide-de-tuiles-depuis-la-bd-ortho-r/'
],
tileGrid: new TileGrid({
origin: [projExtent[0], projExtent[2]],
// These must be known
extent: [
6141145.607336855,
-2443028.8860581857,
6216858.872510456,
-2366876.107971946
],
minZoom: 9,
resolutions: resolutions(16)
}),
}),
})
],
view: new View({
center: fromLonLat([55.47437, -21.08468]),
zoom: 9
}),
});
}