mobility-toolbox-js 3.0.1-beta.0 → 3.0.1-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -3
- package/api/HttpAPI.js +1 -3
- package/api/RealtimeAPI.d.ts +47 -47
- package/api/RealtimeAPI.js +74 -74
- package/api/WebSocketAPI.js +0 -1
- package/common/controls/StopFinderControlCommon.d.ts +1 -1
- package/common/controls/StopFinderControlCommon.js +1 -1
- package/common/styles/realtimeDefaultStyle.js +0 -5
- package/common/styles/realtimeHeadingStyle.js +0 -5
- package/common/styles/realtimeSimpleStyle.d.ts +0 -1
- package/common/styles/realtimeSimpleStyle.js +0 -1
- package/common/typedefs.d.ts +0 -117
- package/common/typedefs.js +0 -31
- package/common/utils/RealtimeEngine.d.ts +214 -0
- package/common/utils/RealtimeEngine.js +554 -0
- package/common/utils/getLayersAsFlatArray.d.ts +0 -1
- package/common/utils/getLayersAsFlatArray.js +0 -1
- package/common/utils/getVehiclePosition.js +1 -4
- package/common/utils/realtimeConfig.d.ts +1 -1
- package/common/utils/realtimeConfig.js +0 -1
- package/common/utils/renderTrajectories.d.ts +1 -0
- package/common/utils/renderTrajectories.js +1 -0
- package/common/utils/sortAndFilterDepartures.d.ts +1 -0
- package/common/utils/sortAndFilterDepartures.js +1 -0
- package/maplibre/controls/CopyrightControl.d.ts +9 -6
- package/maplibre/controls/CopyrightControl.js +11 -8
- package/maplibre/layers/Layer.d.ts +7 -6
- package/maplibre/layers/Layer.js +1 -2
- package/maplibre/layers/RealtimeLayer.d.ts +54 -111
- package/maplibre/layers/RealtimeLayer.js +126 -114
- package/maplibre/utils/getSourceCoordinates.d.ts +1 -0
- package/maplibre/utils/getSourceCoordinates.js +5 -4
- package/mbt.js +6960 -14605
- package/mbt.js.map +4 -4
- package/mbt.min.js +68 -71
- package/mbt.min.js.map +4 -4
- package/ol/controls/CopyrightControl.d.ts +13 -5
- package/ol/controls/CopyrightControl.js +13 -5
- package/ol/controls/RoutingControl.d.ts +29 -18
- package/ol/controls/RoutingControl.js +44 -56
- package/ol/controls/StopFinderControl.d.ts +21 -2
- package/ol/controls/StopFinderControl.js +22 -3
- package/ol/index.d.ts +0 -1
- package/ol/index.js +0 -1
- package/ol/layers/Layer.d.ts +17 -92
- package/ol/layers/Layer.js +17 -3
- package/ol/layers/MaplibreLayer.d.ts +47 -114
- package/ol/layers/MaplibreLayer.js +102 -46
- package/ol/layers/MaplibreStyleLayer.d.ts +67 -147
- package/ol/layers/MaplibreStyleLayer.js +170 -123
- package/ol/layers/RealtimeLayer.d.ts +85 -218
- package/ol/layers/RealtimeLayer.js +170 -181
- package/ol/layers/VectorLayer.d.ts +1 -2
- package/ol/layers/VectorLayer.js +7 -6
- package/ol/renderers/MaplibreLayerRenderer.d.ts +9 -0
- package/ol/renderers/MaplibreLayerRenderer.js +35 -137
- package/ol/renderers/MaplibreStyleLayerRenderer.js +2 -2
- package/ol/renderers/RealtimeLayerRenderer.d.ts +1 -1
- package/ol/renderers/RealtimeLayerRenderer.js +6 -31
- package/ol/styles/fullTrajectoryDelayStyle.js +5 -7
- package/ol/styles/fullTrajectoryStyle.d.ts +1 -2
- package/ol/styles/fullTrajectoryStyle.js +5 -7
- package/ol/styles/routingStyle.d.ts +0 -1
- package/ol/styles/routingStyle.js +13 -10
- package/ol/utils/defineDeprecatedProperties.d.ts +10 -0
- package/ol/utils/defineDeprecatedProperties.js +180 -0
- package/package.json +40 -39
- package/setupTests.js +14 -0
- package/types/common.d.ts +4 -27
- package/types/realtime.d.ts +7 -2
- package/common/mixins/RealtimeLayerMixin.d.ts +0 -267
- package/common/mixins/RealtimeLayerMixin.js +0 -751
- package/ol/mixins/MobilityLayerMixin.d.ts +0 -96
- package/ol/mixins/MobilityLayerMixin.js +0 -6
- package/ol/mixins/PropertiesLayerMixin.d.ts +0 -136
- package/ol/mixins/PropertiesLayerMixin.js +0 -178
- package/ol/mixins/index.d.ts +0 -1
- package/ol/mixins/index.js +0 -2
package/ol/layers/Layer.d.ts
CHANGED
|
@@ -1,101 +1,26 @@
|
|
|
1
|
+
import { Map } from 'ol';
|
|
1
2
|
import OLLayer from 'ol/layer/Layer';
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
readonly group: string;
|
|
17
|
-
readonly hitTolerance: number;
|
|
18
|
-
readonly key: string;
|
|
19
|
-
readonly map: import("ol").Map;
|
|
20
|
-
readonly name: string;
|
|
21
|
-
olLayer: OLLayer;
|
|
22
|
-
parent: OLLayer<import("ol/source").Source, import("ol/renderer/Layer").default<any>>;
|
|
23
|
-
visible: boolean;
|
|
24
|
-
on: import("ol/layer/Layer").LayerOnSignature<import("ol/events").EventsKey>;
|
|
25
|
-
once: import("ol/layer/Layer").LayerOnSignature<import("ol/events").EventsKey>;
|
|
26
|
-
un: import("ol/layer/Layer").LayerOnSignature<void>;
|
|
27
|
-
render: (frameState: import("ol/Map").FrameState | null, target: HTMLElement) => HTMLElement | null;
|
|
28
|
-
getSource: () => import("ol/source").Source | null;
|
|
29
|
-
getRenderSource: () => import("ol/source").Source | null;
|
|
30
|
-
getFeatures: (pixel: import("ol/pixel").Pixel) => Promise<Array<import("ol/Feature").FeatureLike>>;
|
|
31
|
-
getData: (pixel: import("ol/pixel").Pixel) => Uint8ClampedArray | Uint8Array | Float32Array | DataView | null;
|
|
32
|
-
isVisible: (view?: import("ol").View | import("ol/View").ViewStateLayerStateExtent | undefined) => boolean;
|
|
33
|
-
getAttributions: (view?: import("ol").View | import("ol/View").ViewStateLayerStateExtent | undefined) => Array<string>;
|
|
34
|
-
unrender: () => void;
|
|
35
|
-
getDeclutter: () => string;
|
|
36
|
-
renderDeclutter: (frameState: import("ol/Map").FrameState, layerState: import("ol/layer/Layer").State) => void;
|
|
37
|
-
renderDeferred: (frameState: import("ol/Map").FrameState) => void;
|
|
38
|
-
getMapInternal: () => import("ol").default | null;
|
|
39
|
-
setMap: (map: import("ol").default | null) => void;
|
|
40
|
-
setSource: (source: import("ol/source").Source | null) => void;
|
|
41
|
-
getRenderer: () => import("ol/renderer/Layer").default<any> | null;
|
|
42
|
-
hasRenderer: () => boolean;
|
|
43
|
-
getBackground: () => import("ol/layer/Base").BackgroundColor | false;
|
|
44
|
-
getClassName: () => string;
|
|
45
|
-
getLayerState: (managed?: boolean | undefined) => import("ol/layer/Layer").State;
|
|
46
|
-
getLayersArray: (array?: import("ol/layer/Layer").default<import("ol/source").default, import("ol/renderer/Layer").default<any>>[] | undefined) => Array<import("ol/layer/Layer").default>;
|
|
47
|
-
getLayerStatesArray: (states?: import("ol/layer/Layer").State[] | undefined) => Array<import("ol/layer/Layer").State>;
|
|
48
|
-
getExtent: () => import("ol/extent").Extent | undefined;
|
|
49
|
-
getMaxResolution: () => number;
|
|
50
|
-
getMinResolution: () => number;
|
|
51
|
-
getMinZoom: () => number;
|
|
52
|
-
getMaxZoom: () => number;
|
|
53
|
-
getOpacity: () => number;
|
|
54
|
-
getSourceState: () => import("ol/source/Source").State;
|
|
55
|
-
getVisible: () => boolean;
|
|
56
|
-
getZIndex: () => number | undefined;
|
|
57
|
-
setBackground: (background?: import("ol/layer/Base").BackgroundColor | undefined) => void;
|
|
58
|
-
setExtent: (extent: import("ol/extent").Extent | undefined) => void;
|
|
59
|
-
setMaxResolution: (maxResolution: number) => void;
|
|
60
|
-
setMinResolution: (minResolution: number) => void;
|
|
61
|
-
setMaxZoom: (maxZoom: number) => void;
|
|
62
|
-
setMinZoom: (minZoom: number) => void;
|
|
63
|
-
setOpacity: (opacity: number) => void;
|
|
64
|
-
setVisible: (visible: boolean) => void;
|
|
65
|
-
setZIndex: (zindex: number) => void;
|
|
66
|
-
get: (key: string) => any;
|
|
67
|
-
getKeys: () => Array<string>;
|
|
68
|
-
getProperties: () => {
|
|
69
|
-
[x: string]: any;
|
|
70
|
-
};
|
|
71
|
-
getPropertiesInternal: () => {
|
|
72
|
-
[x: string]: any;
|
|
73
|
-
} | null;
|
|
74
|
-
hasProperties: () => boolean;
|
|
75
|
-
notify: (key: string, oldValue: any) => void;
|
|
76
|
-
addChangeListener: (key: string, listener: import("ol/events").Listener) => void;
|
|
77
|
-
removeChangeListener: (key: string, listener: import("ol/events").Listener) => void;
|
|
78
|
-
set: (key: string, value: any, silent?: boolean | undefined) => void;
|
|
79
|
-
setProperties: (values: {
|
|
80
|
-
[x: string]: any;
|
|
81
|
-
}, silent?: boolean | undefined) => void;
|
|
82
|
-
unset: (key: string, silent?: boolean | undefined) => void;
|
|
83
|
-
changed: () => void;
|
|
84
|
-
getRevision: () => number;
|
|
85
|
-
addEventListener: (type: string, listener: import("ol/events").Listener) => void;
|
|
86
|
-
dispatchEvent: (event: import("ol/events/Event").default | string) => boolean | undefined;
|
|
87
|
-
getListeners: (type: string) => Array<import("ol/events").Listener> | undefined;
|
|
88
|
-
hasListener: (type?: string | undefined) => boolean;
|
|
89
|
-
removeEventListener: (type: string, listener: import("ol/events").Listener) => void;
|
|
90
|
-
dispose: () => void;
|
|
91
|
-
};
|
|
92
|
-
} & typeof OLLayer;
|
|
3
|
+
import LayerRenderer from 'ol/renderer/Layer';
|
|
4
|
+
import type { Options } from 'ol/layer/Layer';
|
|
5
|
+
export type MobilityLayerOptions = {
|
|
6
|
+
children?: any[];
|
|
7
|
+
copyrights?: string[];
|
|
8
|
+
disabled?: boolean;
|
|
9
|
+
group?: string;
|
|
10
|
+
hitTolerance?: number;
|
|
11
|
+
key?: string;
|
|
12
|
+
map?: Map;
|
|
13
|
+
name?: string;
|
|
14
|
+
properties?: Record<string, any>;
|
|
15
|
+
visible?: boolean;
|
|
16
|
+
} & Options & Record<string, any>;
|
|
93
17
|
/**
|
|
94
18
|
* An OpenLayers layer here only for backward compatibility v2.
|
|
95
19
|
* @deprecated Use an OpenLayers Layer instead.
|
|
96
20
|
*/
|
|
97
|
-
declare class Layer extends
|
|
21
|
+
declare class Layer extends OLLayer {
|
|
98
22
|
constructor(options: MobilityLayerOptions);
|
|
99
23
|
clone(newOptions: MobilityLayerOptions): Layer;
|
|
24
|
+
createRenderer(): LayerRenderer<OLLayer>;
|
|
100
25
|
}
|
|
101
26
|
export default Layer;
|
package/ol/layers/Layer.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import debounce from 'lodash.debounce';
|
|
2
2
|
import OLLayer from 'ol/layer/Layer';
|
|
3
|
-
import
|
|
3
|
+
import LayerRenderer from 'ol/renderer/Layer';
|
|
4
|
+
import defineDeprecatedProperties from '../utils/defineDeprecatedProperties';
|
|
4
5
|
let deprecated = () => { };
|
|
5
6
|
if (typeof window !== 'undefined' &&
|
|
6
7
|
new URLSearchParams(window.location.search).get('deprecated')) {
|
|
@@ -9,17 +10,30 @@ if (typeof window !== 'undefined' &&
|
|
|
9
10
|
console.warn(message);
|
|
10
11
|
}, 1000);
|
|
11
12
|
}
|
|
13
|
+
class EmptyLayerRenderer extends LayerRenderer {
|
|
14
|
+
prepareFrame() {
|
|
15
|
+
return true;
|
|
16
|
+
}
|
|
17
|
+
renderFrame() {
|
|
18
|
+
return null;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
12
21
|
/**
|
|
13
22
|
* An OpenLayers layer here only for backward compatibility v2.
|
|
14
23
|
* @deprecated Use an OpenLayers Layer instead.
|
|
15
24
|
*/
|
|
16
|
-
class Layer extends
|
|
25
|
+
class Layer extends OLLayer {
|
|
17
26
|
constructor(options) {
|
|
18
27
|
super(options);
|
|
28
|
+
defineDeprecatedProperties(this, options);
|
|
19
29
|
deprecated('Layer is deprecated. Use an OpenLayers Layer instead.');
|
|
20
30
|
}
|
|
21
31
|
clone(newOptions) {
|
|
22
|
-
return new Layer(Object.assign(Object.assign({}, (this.options || {})), (newOptions || {})));
|
|
32
|
+
return new Layer(Object.assign(Object.assign({}, (this.get('options') || {})), (newOptions || {})));
|
|
33
|
+
}
|
|
34
|
+
// ol does not like when it returns null.
|
|
35
|
+
createRenderer() {
|
|
36
|
+
return new EmptyLayerRenderer(this);
|
|
23
37
|
}
|
|
24
38
|
}
|
|
25
39
|
export default Layer;
|
|
@@ -1,104 +1,18 @@
|
|
|
1
|
-
import { MapLibreLayer } from '@geoblocks/ol-maplibre-layer';
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
1
|
+
import { MapLibreLayer } from '@geoblocks/ol-maplibre-layer/lib';
|
|
2
|
+
import { EventsKey } from 'ol/events';
|
|
3
|
+
import Map from 'ol/Map';
|
|
4
|
+
import MaplibreLayerRenderer from '../renderers/MaplibreLayerRenderer';
|
|
5
|
+
import { MobilityLayerOptions } from './Layer';
|
|
6
|
+
import type { MapLibreLayerOptions, MapLibreOptions } from '@geoblocks/ol-maplibre-layer/lib/MapLibreLayer';
|
|
7
|
+
import type { QueryRenderedFeaturesOptions } from 'maplibre-gl';
|
|
5
8
|
export type MaplibreLayerOptions = {
|
|
6
9
|
apiKey?: string;
|
|
7
10
|
apiKeyName?: string;
|
|
8
11
|
mapLibreOptions?: MapLibreOptions;
|
|
12
|
+
queryRenderedFeaturesOptions?: QueryRenderedFeaturesOptions | undefined;
|
|
9
13
|
style?: maplibregl.StyleSpecification | null | string;
|
|
10
14
|
url?: string;
|
|
11
|
-
} &
|
|
12
|
-
declare const MaplibreLayer_base: {
|
|
13
|
-
new (...args: any[]): {
|
|
14
|
-
olEventsKeys: import("ol/events").EventsKey[];
|
|
15
|
-
options?: import("../mixins/PropertiesLayerMixin").PropertiesLayerMixinOptions;
|
|
16
|
-
attachToMap(map: OlMap): void;
|
|
17
|
-
detachFromMap(): void;
|
|
18
|
-
flat(): any[];
|
|
19
|
-
onChildrenChange(oldValue: import("ol/layer").Layer[]): void;
|
|
20
|
-
setMapInternal: ((map: OlMap) => void) & ((map: import("ol/Map").default | null) => void);
|
|
21
|
-
children: import("ol/layer").Layer<import("ol/source").Source, import("ol/renderer/Layer").default<any>>[];
|
|
22
|
-
get copyrights(): string;
|
|
23
|
-
set copyrights(newCopyrights: string | string[]);
|
|
24
|
-
disabled: boolean;
|
|
25
|
-
readonly group: string;
|
|
26
|
-
readonly hitTolerance: number;
|
|
27
|
-
readonly key: string;
|
|
28
|
-
readonly map: OlMap;
|
|
29
|
-
readonly name: string;
|
|
30
|
-
olLayer: import("ol/layer").Layer;
|
|
31
|
-
parent: import("ol/layer").Layer<import("ol/source").Source, import("ol/renderer/Layer").default<any>>;
|
|
32
|
-
visible: boolean;
|
|
33
|
-
on: import("ol/layer/Layer").LayerOnSignature<import("ol/events").EventsKey>;
|
|
34
|
-
once: import("ol/layer/Layer").LayerOnSignature<import("ol/events").EventsKey>;
|
|
35
|
-
un: import("ol/layer/Layer").LayerOnSignature<void>;
|
|
36
|
-
render: (frameState: import("ol/Map").FrameState | null, target: HTMLElement) => HTMLElement | null;
|
|
37
|
-
getSource: () => import("ol/source").Source | null;
|
|
38
|
-
getRenderSource: () => import("ol/source").Source | null;
|
|
39
|
-
getFeatures: (pixel: import("ol/pixel").Pixel) => Promise<Array<import("ol/Feature").FeatureLike>>;
|
|
40
|
-
getData: (pixel: import("ol/pixel").Pixel) => Uint8ClampedArray | Uint8Array | Float32Array | DataView | null;
|
|
41
|
-
isVisible: (view?: import("ol").View | import("ol/View").ViewStateLayerStateExtent | undefined) => boolean;
|
|
42
|
-
getAttributions: (view?: import("ol").View | import("ol/View").ViewStateLayerStateExtent | undefined) => Array<string>;
|
|
43
|
-
unrender: () => void;
|
|
44
|
-
getDeclutter: () => string;
|
|
45
|
-
renderDeclutter: (frameState: import("ol/Map").FrameState, layerState: import("ol/layer/Layer").State) => void;
|
|
46
|
-
renderDeferred: (frameState: import("ol/Map").FrameState) => void;
|
|
47
|
-
getMapInternal: () => import("ol/Map").default | null;
|
|
48
|
-
setMap: (map: import("ol/Map").default | null) => void;
|
|
49
|
-
setSource: (source: import("ol/source").Source | null) => void;
|
|
50
|
-
getRenderer: () => import("ol/renderer/Layer").default<any> | null;
|
|
51
|
-
hasRenderer: () => boolean;
|
|
52
|
-
getBackground: () => import("ol/layer/Base").BackgroundColor | false;
|
|
53
|
-
getClassName: () => string;
|
|
54
|
-
getLayerState: (managed?: boolean | undefined) => import("ol/layer/Layer").State;
|
|
55
|
-
getLayersArray: (array?: import("ol/layer").default<import("ol/source").default, import("ol/renderer/Layer").default<any>>[] | undefined) => Array<import("ol/layer").default>;
|
|
56
|
-
getLayerStatesArray: (states?: import("ol/layer/Layer").State[] | undefined) => Array<import("ol/layer/Layer").State>;
|
|
57
|
-
getExtent: () => import("ol/extent").Extent | undefined;
|
|
58
|
-
getMaxResolution: () => number;
|
|
59
|
-
getMinResolution: () => number;
|
|
60
|
-
getMinZoom: () => number;
|
|
61
|
-
getMaxZoom: () => number;
|
|
62
|
-
getOpacity: () => number;
|
|
63
|
-
getSourceState: () => import("ol/source/Source").State;
|
|
64
|
-
getVisible: () => boolean;
|
|
65
|
-
getZIndex: () => number | undefined;
|
|
66
|
-
setBackground: (background?: import("ol/layer/Base").BackgroundColor | undefined) => void;
|
|
67
|
-
setExtent: (extent: import("ol/extent").Extent | undefined) => void;
|
|
68
|
-
setMaxResolution: (maxResolution: number) => void;
|
|
69
|
-
setMinResolution: (minResolution: number) => void;
|
|
70
|
-
setMaxZoom: (maxZoom: number) => void;
|
|
71
|
-
setMinZoom: (minZoom: number) => void;
|
|
72
|
-
setOpacity: (opacity: number) => void;
|
|
73
|
-
setVisible: (visible: boolean) => void;
|
|
74
|
-
setZIndex: (zindex: number) => void;
|
|
75
|
-
get: (key: string) => any;
|
|
76
|
-
getKeys: () => Array<string>;
|
|
77
|
-
getProperties: () => {
|
|
78
|
-
[x: string]: any;
|
|
79
|
-
};
|
|
80
|
-
getPropertiesInternal: () => {
|
|
81
|
-
[x: string]: any;
|
|
82
|
-
} | null;
|
|
83
|
-
hasProperties: () => boolean;
|
|
84
|
-
notify: (key: string, oldValue: any) => void;
|
|
85
|
-
addChangeListener: (key: string, listener: import("ol/events").Listener) => void;
|
|
86
|
-
removeChangeListener: (key: string, listener: import("ol/events").Listener) => void;
|
|
87
|
-
set: (key: string, value: any, silent?: boolean | undefined) => void;
|
|
88
|
-
setProperties: (values: {
|
|
89
|
-
[x: string]: any;
|
|
90
|
-
}, silent?: boolean | undefined) => void;
|
|
91
|
-
unset: (key: string, silent?: boolean | undefined) => void;
|
|
92
|
-
changed: () => void;
|
|
93
|
-
getRevision: () => number;
|
|
94
|
-
addEventListener: (type: string, listener: import("ol/events").Listener) => void;
|
|
95
|
-
dispatchEvent: (event: import("ol/events/Event").default | string) => boolean | undefined;
|
|
96
|
-
getListeners: (type: string) => Array<import("ol/events").Listener> | undefined;
|
|
97
|
-
hasListener: (type?: string | undefined) => boolean;
|
|
98
|
-
removeEventListener: (type: string, listener: import("ol/events").Listener) => void;
|
|
99
|
-
dispose: () => void;
|
|
100
|
-
};
|
|
101
|
-
} & typeof MapLibreLayer;
|
|
15
|
+
} & MobilityLayerOptions & Omit<MapLibreLayerOptions, 'mapLibreOptions'>;
|
|
102
16
|
/**
|
|
103
17
|
* An OpenLayers layer able to display data from the [geOps Maps API](https://developer.geops.io/apis/maps).
|
|
104
18
|
*
|
|
@@ -121,40 +35,59 @@ declare const MaplibreLayer_base: {
|
|
|
121
35
|
* });
|
|
122
36
|
*
|
|
123
37
|
* @classproperty {maplibregl.Map} mapLibreMap - The Maplibre map object. Readonly.
|
|
124
|
-
* @classproperty {string} style - geOps Maps
|
|
125
|
-
*
|
|
38
|
+
* @classproperty {string} style - The [geOps Maps API](https://developer.geops.io/apis/maps) style.
|
|
39
|
+
*
|
|
40
|
+
*
|
|
41
|
+
* @see <a href="/example/ol-maplibre-layer">OpenLayers Maplibre layer example</a>
|
|
42
|
+
*
|
|
43
|
+
* @extends {geoblocks/ol-maplibre-layer/MapLibreLayer}
|
|
126
44
|
* @public
|
|
127
45
|
*/
|
|
128
|
-
declare class MaplibreLayer extends
|
|
46
|
+
declare class MaplibreLayer extends MapLibreLayer {
|
|
47
|
+
olEventsKeys: EventsKey[];
|
|
48
|
+
set apiKey(newValue: string);
|
|
49
|
+
get apiKey(): string;
|
|
50
|
+
set apiKeyName(newValue: string);
|
|
51
|
+
get apiKeyName(): string;
|
|
52
|
+
/**
|
|
53
|
+
* @deprecated Use layer.mapLibreMap.
|
|
54
|
+
*/
|
|
55
|
+
get maplibreMap(): maplibregl.Map | undefined;
|
|
56
|
+
/**
|
|
57
|
+
* @deprecated Use layer.mapLibreMap.
|
|
58
|
+
*/
|
|
59
|
+
get mbMap(): maplibregl.Map | undefined;
|
|
60
|
+
get style(): string;
|
|
61
|
+
set style(newValue: string);
|
|
62
|
+
get url(): string;
|
|
63
|
+
set url(newValue: string);
|
|
129
64
|
/**
|
|
130
65
|
* Constructor.
|
|
131
66
|
*
|
|
132
|
-
* @param {
|
|
133
|
-
* @param {string} options.apiKey
|
|
134
|
-
* @param {string} [options.apiKeyName="key"] The geOps Maps API key name.
|
|
135
|
-
* @param {maplibregl.MapOptions} [options.mapLibreOptions={ interactive: false, trackResize: false, attributionControl: false }]
|
|
136
|
-
* @param {string} [options.style="travic_v2"] The geOps Maps API style.
|
|
137
|
-
* @param {string} [options.url="https://maps.geops.io"] The geOps Maps API url.
|
|
67
|
+
* @param {Object} options
|
|
68
|
+
* @param {string} options.apiKey Accesss key for [geOps APIs](https://developer.geops.io/).
|
|
69
|
+
* @param {string} [options.apiKeyName="key"] The [geOps Maps API](https://developer.geops.io/apis/maps) key name.
|
|
70
|
+
* @param {maplibregl.MapOptions} [options.mapLibreOptions={ interactive: false, trackResize: false, attributionControl: false }] MapLibre map options.
|
|
71
|
+
* @param {string} [options.style="travic_v2"] The [geOps Maps API](https://developer.geops.io/apis/maps) style.
|
|
72
|
+
* @param {string} [options.url="https://maps.geops.io"] The [geOps Maps API](https://developer.geops.io/apis/maps) url.
|
|
138
73
|
*/
|
|
139
74
|
constructor(options: MaplibreLayerOptions);
|
|
140
75
|
/**
|
|
141
76
|
* Initialize the layer and listen to feature clicks.
|
|
142
|
-
* @param {ol/Map~Map} map
|
|
143
77
|
*/
|
|
144
|
-
attachToMap(
|
|
78
|
+
attachToMap(): void;
|
|
145
79
|
/**
|
|
146
80
|
* Create a copy of the MaplibreLayer.
|
|
147
|
-
*
|
|
81
|
+
*
|
|
82
|
+
* @param {Object} newOptions Options to override. See constructor.
|
|
148
83
|
* @return {MaplibreLayer} A MaplibreLayer layer
|
|
84
|
+
* @public
|
|
149
85
|
*/
|
|
150
86
|
clone(newOptions: MaplibreLayerOptions): MaplibreLayer;
|
|
151
|
-
|
|
87
|
+
createRenderer(): MaplibreLayerRenderer;
|
|
88
|
+
detachFromMap(): void;
|
|
89
|
+
getStyle(): any;
|
|
90
|
+
setMapInternal(map: Map): void;
|
|
152
91
|
updateMaplibreMap(): void;
|
|
153
|
-
get maplibreMap(): maplibregl.Map | undefined;
|
|
154
|
-
get mbMap(): maplibregl.Map | undefined;
|
|
155
|
-
get style(): string;
|
|
156
|
-
set style(newValue: string);
|
|
157
|
-
get url(): string;
|
|
158
|
-
set url(newValue: string);
|
|
159
92
|
}
|
|
160
93
|
export default MaplibreLayer;
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import { MapLibreLayer } from '@geoblocks/ol-maplibre-layer';
|
|
1
|
+
import { MapLibreLayer } from '@geoblocks/ol-maplibre-layer/lib';
|
|
2
2
|
import debounce from 'lodash.debounce';
|
|
3
|
+
import { unByKey } from 'ol/Observable';
|
|
3
4
|
import { getUrlWithParams } from '../../common/utils';
|
|
4
|
-
import
|
|
5
|
+
import MaplibreLayerRenderer from '../renderers/MaplibreLayerRenderer';
|
|
6
|
+
import defineDeprecatedProperties from '../utils/defineDeprecatedProperties';
|
|
5
7
|
const buildStyleUrl = (url, style, apiKey, apiKeyName) => {
|
|
6
8
|
return getUrlWithParams(`${url}/styles/${style}/style.json`, {
|
|
7
9
|
[apiKeyName]: apiKey,
|
|
@@ -37,62 +39,122 @@ if (typeof window !== 'undefined' &&
|
|
|
37
39
|
* });
|
|
38
40
|
*
|
|
39
41
|
* @classproperty {maplibregl.Map} mapLibreMap - The Maplibre map object. Readonly.
|
|
40
|
-
* @classproperty {string} style - geOps Maps
|
|
41
|
-
*
|
|
42
|
+
* @classproperty {string} style - The [geOps Maps API](https://developer.geops.io/apis/maps) style.
|
|
43
|
+
*
|
|
44
|
+
*
|
|
45
|
+
* @see <a href="/example/ol-maplibre-layer">OpenLayers Maplibre layer example</a>
|
|
46
|
+
*
|
|
47
|
+
* @extends {geoblocks/ol-maplibre-layer/MapLibreLayer}
|
|
42
48
|
* @public
|
|
43
49
|
*/
|
|
44
|
-
class MaplibreLayer extends
|
|
50
|
+
class MaplibreLayer extends MapLibreLayer {
|
|
51
|
+
set apiKey(newValue) {
|
|
52
|
+
this.set('apiKey', newValue);
|
|
53
|
+
}
|
|
54
|
+
get apiKey() {
|
|
55
|
+
return this.get('apiKey');
|
|
56
|
+
}
|
|
57
|
+
set apiKeyName(newValue) {
|
|
58
|
+
this.set('apiKeyName', newValue);
|
|
59
|
+
}
|
|
60
|
+
get apiKeyName() {
|
|
61
|
+
return this.get('apiKeyName');
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* @deprecated Use layer.mapLibreMap.
|
|
65
|
+
*/
|
|
66
|
+
get maplibreMap() {
|
|
67
|
+
deprecated('MaplibreLayer.maplibreMap is deprecated. Use layer.mapLibreMap.');
|
|
68
|
+
return this.mapLibreMap;
|
|
69
|
+
}
|
|
70
|
+
// get queryRenderedFeaturesOptions(): maplibregl.QueryRenderedFeaturesOptions {
|
|
71
|
+
// return this.get('queryRenderedFeaturesOptions');
|
|
72
|
+
// }
|
|
73
|
+
// set queryRenderedFeaturesOptions(
|
|
74
|
+
// newValue: maplibregl.QueryRenderedFeaturesOptions,
|
|
75
|
+
// ) {
|
|
76
|
+
// this.set('queryRenderedFeaturesOptions', newValue);
|
|
77
|
+
// }
|
|
78
|
+
/**
|
|
79
|
+
* @deprecated Use layer.mapLibreMap.
|
|
80
|
+
*/
|
|
81
|
+
get mbMap() {
|
|
82
|
+
deprecated('MaplibreLayer.mbMap is deprecated. Use layer.maplibreMap.');
|
|
83
|
+
return this.maplibreMap;
|
|
84
|
+
}
|
|
85
|
+
get style() {
|
|
86
|
+
return this.get('style');
|
|
87
|
+
}
|
|
88
|
+
set style(newValue) {
|
|
89
|
+
this.set('style', newValue);
|
|
90
|
+
}
|
|
91
|
+
get url() {
|
|
92
|
+
return this.get('url');
|
|
93
|
+
}
|
|
94
|
+
set url(newValue) {
|
|
95
|
+
this.set('url', newValue);
|
|
96
|
+
}
|
|
45
97
|
/**
|
|
46
98
|
* Constructor.
|
|
47
99
|
*
|
|
48
|
-
* @param {
|
|
49
|
-
* @param {string} options.apiKey
|
|
50
|
-
* @param {string} [options.apiKeyName="key"] The geOps Maps API key name.
|
|
51
|
-
* @param {maplibregl.MapOptions} [options.mapLibreOptions={ interactive: false, trackResize: false, attributionControl: false }]
|
|
52
|
-
* @param {string} [options.style="travic_v2"] The geOps Maps API style.
|
|
53
|
-
* @param {string} [options.url="https://maps.geops.io"] The geOps Maps API url.
|
|
100
|
+
* @param {Object} options
|
|
101
|
+
* @param {string} options.apiKey Accesss key for [geOps APIs](https://developer.geops.io/).
|
|
102
|
+
* @param {string} [options.apiKeyName="key"] The [geOps Maps API](https://developer.geops.io/apis/maps) key name.
|
|
103
|
+
* @param {maplibregl.MapOptions} [options.mapLibreOptions={ interactive: false, trackResize: false, attributionControl: false }] MapLibre map options.
|
|
104
|
+
* @param {string} [options.style="travic_v2"] The [geOps Maps API](https://developer.geops.io/apis/maps) style.
|
|
105
|
+
* @param {string} [options.url="https://maps.geops.io"] The [geOps Maps API](https://developer.geops.io/apis/maps) url.
|
|
54
106
|
*/
|
|
55
107
|
constructor(options) {
|
|
108
|
+
var _a;
|
|
56
109
|
const newOptions = Object.assign(Object.assign({ apiKeyName: 'key', style: 'travic_v2', url: 'https://maps.geops.io' }, (options || {})), { mapLibreOptions: Object.assign({}, (options.mapLibreOptions || {})) });
|
|
57
110
|
if (!newOptions.mapLibreOptions.style &&
|
|
111
|
+
((_a = newOptions.url) === null || _a === void 0 ? void 0 : _a.includes('style.json'))) {
|
|
112
|
+
newOptions.mapLibreOptions.style = newOptions.url;
|
|
113
|
+
}
|
|
114
|
+
else if (!newOptions.mapLibreOptions.style &&
|
|
58
115
|
newOptions.apiKey &&
|
|
59
116
|
newOptions.style &&
|
|
60
117
|
typeof newOptions.style === 'string') {
|
|
61
118
|
newOptions.mapLibreOptions.style = buildStyleUrl(newOptions.url, newOptions.style, newOptions.apiKey, newOptions.apiKeyName);
|
|
62
119
|
}
|
|
63
120
|
super(newOptions);
|
|
121
|
+
this.olEventsKeys = [];
|
|
122
|
+
// For backward compatibility with v2
|
|
123
|
+
defineDeprecatedProperties(this, options);
|
|
124
|
+
// We save the options to be able to clone the layer.
|
|
125
|
+
// and to see if the style is defined by the maplibreOptions given by the user.
|
|
126
|
+
this.set('options', options);
|
|
64
127
|
}
|
|
65
128
|
/**
|
|
66
129
|
* Initialize the layer and listen to feature clicks.
|
|
67
|
-
* @param {ol/Map~Map} map
|
|
68
130
|
*/
|
|
69
|
-
attachToMap(
|
|
70
|
-
super.attachToMap(map);
|
|
131
|
+
attachToMap() {
|
|
71
132
|
const updateMaplibreMapDebounced = debounce(this.updateMaplibreMap.bind(this), 150);
|
|
72
133
|
updateMaplibreMapDebounced();
|
|
73
134
|
this.olEventsKeys.push(this.on('propertychange', (evt) => {
|
|
74
|
-
if (/(url|style)/.test(evt.key)) {
|
|
135
|
+
if (/(url|style|apiKey|apiKeyName)/.test(evt.key)) {
|
|
75
136
|
updateMaplibreMapDebounced();
|
|
76
137
|
}
|
|
77
138
|
}));
|
|
78
139
|
}
|
|
79
|
-
// get queryRenderedFeaturesOptions(): maplibregl.QueryRenderedFeaturesOptions {
|
|
80
|
-
// return this.get('queryRenderedFeaturesOptions');
|
|
81
|
-
// }
|
|
82
|
-
// set queryRenderedFeaturesOptions(
|
|
83
|
-
// newValue: maplibregl.QueryRenderedFeaturesOptions,
|
|
84
|
-
// ) {
|
|
85
|
-
// this.set('queryRenderedFeaturesOptions', newValue);
|
|
86
|
-
// }
|
|
87
140
|
/**
|
|
88
141
|
* Create a copy of the MaplibreLayer.
|
|
89
|
-
*
|
|
142
|
+
*
|
|
143
|
+
* @param {Object} newOptions Options to override. See constructor.
|
|
90
144
|
* @return {MaplibreLayer} A MaplibreLayer layer
|
|
145
|
+
* @public
|
|
91
146
|
*/
|
|
92
147
|
clone(newOptions) {
|
|
93
|
-
return new MaplibreLayer(Object.assign(Object.assign({}, (this.options || {})), (newOptions || {})));
|
|
148
|
+
return new MaplibreLayer(Object.assign(Object.assign({}, (this.get('options') || {})), (newOptions || {})));
|
|
149
|
+
}
|
|
150
|
+
createRenderer() {
|
|
151
|
+
return new MaplibreLayerRenderer(this);
|
|
152
|
+
}
|
|
153
|
+
detachFromMap() {
|
|
154
|
+
unByKey(this.olEventsKeys);
|
|
94
155
|
}
|
|
95
156
|
getStyle() {
|
|
157
|
+
var _a, _b;
|
|
96
158
|
// If the style is a complete style object, use it directly.
|
|
97
159
|
if (this.style &&
|
|
98
160
|
typeof this.style === 'object' &&
|
|
@@ -104,8 +166,22 @@ class MaplibreLayer extends MobilityLayerMixin(MapLibreLayer) {
|
|
|
104
166
|
if (this.url.includes('style.json')) {
|
|
105
167
|
return this.url;
|
|
106
168
|
}
|
|
169
|
+
// If the user has defined the style by the maplibreOptions, we use it directly.
|
|
170
|
+
if ((_b = (_a = this.get('options')) === null || _a === void 0 ? void 0 : _a.mapLibreOptions) === null || _b === void 0 ? void 0 : _b.style) {
|
|
171
|
+
return this.get('options').mapLibreOptions.style;
|
|
172
|
+
}
|
|
107
173
|
/// Otherwise build the complete style url.
|
|
108
|
-
return buildStyleUrl(this.url, this.style, this.
|
|
174
|
+
return buildStyleUrl(this.url, this.style, this.apiKey, this.apiKeyName);
|
|
175
|
+
}
|
|
176
|
+
setMapInternal(map) {
|
|
177
|
+
if (map) {
|
|
178
|
+
super.setMapInternal(map);
|
|
179
|
+
this.attachToMap();
|
|
180
|
+
}
|
|
181
|
+
else {
|
|
182
|
+
this.detachFromMap();
|
|
183
|
+
super.setMapInternal(map);
|
|
184
|
+
}
|
|
109
185
|
}
|
|
110
186
|
updateMaplibreMap() {
|
|
111
187
|
var _a;
|
|
@@ -117,25 +193,5 @@ class MaplibreLayer extends MobilityLayerMixin(MapLibreLayer) {
|
|
|
117
193
|
console.error('Error while updating MaplibreMap', e);
|
|
118
194
|
}
|
|
119
195
|
}
|
|
120
|
-
get maplibreMap() {
|
|
121
|
-
deprecated('MaplibreLayer.maplibreMap is deprecated. Use layer.mapLibreMap.');
|
|
122
|
-
return this.mapLibreMap;
|
|
123
|
-
}
|
|
124
|
-
get mbMap() {
|
|
125
|
-
deprecated('MaplibreLayer.mbMap is deprecated. Use layer.maplibreMap.');
|
|
126
|
-
return this.maplibreMap;
|
|
127
|
-
}
|
|
128
|
-
get style() {
|
|
129
|
-
return this.get('style');
|
|
130
|
-
}
|
|
131
|
-
set style(newValue) {
|
|
132
|
-
this.set('style', newValue);
|
|
133
|
-
}
|
|
134
|
-
get url() {
|
|
135
|
-
return this.get('url');
|
|
136
|
-
}
|
|
137
|
-
set url(newValue) {
|
|
138
|
-
this.set('url', newValue);
|
|
139
|
-
}
|
|
140
196
|
}
|
|
141
197
|
export default MaplibreLayer;
|