leaflet.offline
Version:
Offline tilelayer for leaflet
90 lines (89 loc) • 2.59 kB
TypeScript
/**
* Api methods used in control and layer
* For advanced usage
*
* @module TileManager
*
*/
import { Bounds, Point } from 'leaflet';
import { IDBPDatabase } from 'idb';
import { FeatureCollection, Polygon } from 'geojson';
export type TileInfo = {
key: string;
url: string;
urlTemplate: string;
x: number;
y: number;
z: number;
createdAt: number;
};
export type StoredTile = TileInfo & {
blob: Blob;
};
export declare function openTilesDataBase(): Promise<IDBPDatabase>;
/**
* @example
* ```js
* import { getStorageLength } from 'leaflet.offline'
* getStorageLength().then(i => console.log(i + 'tiles in storage'))
* ```
*/
export declare function getStorageLength(): Promise<number>;
/**
* @example
* ```js
* import { getStorageInfo } from 'leaflet.offline'
* getStorageInfo('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png')
* ```
*/
export declare function getStorageInfo(urlTemplate: string): Promise<StoredTile[]>;
/**
* @example
* ```js
* import { downloadTile } from 'leaflet.offline'
* downloadTile(tileInfo.url).then(blob => saveTile(tileInfo, blob))
* ```
*/
export declare function downloadTile(tileUrl: string): Promise<Blob>;
/**
* @example
* ```js
* saveTile(tileInfo, blob).then(() => console.log(`saved tile from ${tileInfo.url}`))
* ```
*/
export declare function saveTile(tileInfo: TileInfo, blob: Blob): Promise<IDBValidKey>;
export declare function getTileUrl(urlTemplate: string, data: any): string;
export declare function getTilePoints(area: Bounds, tileSize: Point): Point[];
/**
* Get a geojson of tiles from one resource
*
* @example
* const urlTemplate = 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png';
* const getGeoJsonData = () => LeafletOffline.getStorageInfo(urlTemplate)
* .then((data) => LeafletOffline.getStoredTilesAsJson(baseLayer, data));
*
* getGeoJsonData().then((geojson) => {
* storageLayer = L.geoJSON(geojson).bindPopup(
* (clickedLayer) => clickedLayer.feature.properties.key,
* );
* });
*
*/
export declare function getStoredTilesAsJson(tileSize: {
x: number;
y: number;
}, tiles: TileInfo[]): FeatureCollection<Polygon>;
/**
* Remove tile by key
*/
export declare function removeTile(key: string): Promise<void>;
/**
* Get single tile blob
*/
export declare function getBlobByKey(key: string): Promise<Blob>;
export declare function hasTile(key: string): Promise<boolean>;
/**
* Remove everything
*/
export declare function truncate(): Promise<void>;
export declare function getTileImageSource(key: string, url: string): Promise<string>;