mobility-toolbox-js
Version:
Toolbox for JavaScript applications in the domains of mobility and logistics.
125 lines (124 loc) • 4.71 kB
TypeScript
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;