UNPKG

mobility-toolbox-js

Version:

Toolbox for JavaScript applications in the domains of mobility and logistics.

125 lines (124 loc) 4.71 kB
import { CanvasSourceSpecification, LayerSpecification } from 'maplibre-gl'; import type { AnyCanvas, AnyMapGlMap } from '../../types'; import RealtimeEngine, { RealtimeEngineOptions } from '../../common/utils/RealtimeEngine'; import Layer, { LayerOptions } from './Layer'; export type RealtimeLayerOptions = LayerOptions & RealtimeEngineOptions; /** * A Maplibre layer able to display data from the [geOps Realtime API](https://developer.geops.io/apis/realtime/). * * @example * import { Map } from 'maplibre-gl'; * import { RealtimeLayer } from 'mobility-toolbox-js/maplibre'; * * // Define the map * const map = new Map({ ... }); * * // Define your layer map * const layer = new RealtimeLayer({ * apiKey: "yourApiKey" * // url: "wss://api.geops.io/tracker-ws/v1/", * }); * * // Add the layer to your map * * map.on('load', () => { * map.addLayer(layer); * }); * * * @see <a href="/api/class/src/api/RealtimeAPI%20js~RealtimeAPI%20html">RealtimeAPI</a> * @see <a href="/example/mb-realtime>MapLibre Realtime layer example</a> * * @implements {maplibregl.CustomLayerInterface} * @extends {maplibregl.Evented} * @classproperty {function} filter - Filter out a train. This function must be fast, it is executed for every trajectory on every render frame. * @classproperty {RealtimeMode} mode - The realtime mode to use. * @classproperty {RealtimeMot[]} mots - Filter trains by its mode of transportation. It filters trains on backend side. * @classproperty {RealtimeTenant} tenant - Filter trains by its tenant. It filters trains on backend side. * @classproperty {function} sort - Sort trains. This function must be fast, it is executed on every render frame. * @classproperty {function} style - Function to style the vehicles. s * @public */ declare class RealtimeLayer extends Layer { #private; engine: RealtimeEngine; layer: LayerSpecification; source: CanvasSourceSpecification; sourceId: string; get canvas(): AnyCanvas | undefined; get pixelRatio(): number | undefined; set pixelRatio(pixelRatio: number | undefined); /** * Constructor. * * @param {RealtimeLayerOptions} options * @param {string} options.apiKey Access key for [geOps apis](https://developer.geops.io/). * @param {FilterFunction} options.filter Filter out a train. This function must be fast, it is executed for every trajectory on every render frame. * @param {getMotsByZoomFunction} options.getMotsByZoom Returns for each zoom level the list of MOTs to display. It filters trains on backend side. * @param {number} [options.minZoomInterpolation=8] Minimal zoom level where to start to interpolate train positions. * @param {RealtimeMode} [options.mode='topographic'] The realtime mode to use. * @param {SortFunction} options.sort Sort trains. This function must be fast, it is executed on every render frame. * @param {RealtimeStyleFunction} options.style Function to style the vehicles. * @param {RealtimeTenant} options.tenant Filter trains by its tenant. It filters trains on backend side. * @param {string} [options.url="wss://api.geops.io/tracker-ws/v1/"] The geOps Realtime API url. */ constructor(options?: RealtimeLayerOptions); /** * Return the current view state. Used by the RealtimeEngine. * @private */ getViewState(): { center?: undefined; extent?: undefined; pixelRatio?: undefined; resolution?: undefined; rotation?: undefined; size?: undefined; visible?: undefined; zoom?: undefined; } | { center: import("ol/coordinate").Coordinate; extent: number[]; pixelRatio: number; resolution: number; rotation: number; size: number[]; visible: boolean; zoom: number; }; /** * Add sources, layers and listeners to the map. */ onAdd(map: AnyMapGlMap, gl: WebGL2RenderingContext | WebGLRenderingContext): void; onLoad(): void; /** * Callback on 'move' event. */ onMove(): void; /** * Callback on 'moveend' event. */ onMoveEnd(): void; /** * Callback when the RealtimeEngine has rendered successfully. */ onRealtimeEngineRender(): void; /** * Remove source, layers and listeners from the map. */ onRemove(map: AnyMapGlMap, gl: WebGL2RenderingContext | WebGLRenderingContext): void; onZoomEnd(): void; /** * Start updating vehicles position. * * @public */ start(): void; /** * Stop updating vehicles position. * * @public */ stop(): void; } export default RealtimeLayer;