mobility-toolbox-js 3.0.0-beta.8 → 3.0.0-beta.9
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/api/HttpAPI.d.ts +31 -0
- package/api/RealtimeAPI.d.ts +359 -0
- package/api/RoutingAPI.d.ts +37 -0
- package/api/StopsAPI.d.ts +38 -0
- package/api/WebSocketAPI.d.ts +153 -0
- package/api/index.d.ts +3 -0
- package/api/typedefs.d.ts +178 -0
- package/common/controls/StopFinderControlCommon.d.ts +53 -0
- package/common/index.d.ts +2 -0
- package/common/mixins/RealtimeLayerMixin.d.ts +273 -0
- package/common/styles/index.d.ts +4 -0
- package/common/styles/realtimeDefaultStyle.d.ts +36 -0
- package/common/styles/realtimeDelayStyle.d.ts +12 -0
- package/common/styles/realtimeHeadingStyle.d.ts +12 -0
- package/common/styles/realtimeSimpleStyle.d.ts +4 -0
- package/common/typedefs.d.ts +212 -0
- package/common/utils/compareDepartures.d.ts +10 -0
- package/common/utils/constants.d.ts +5 -0
- package/common/utils/createCanvas.d.ts +10 -0
- package/common/utils/createDefaultCopyrightElt.d.ts +5 -0
- package/common/utils/createDefaultStopFinderElt.d.ts +5 -0
- package/common/utils/createRealtimeFilters.d.ts +12 -0
- package/common/utils/debounceDeparturesMessages.d.ts +12 -0
- package/common/utils/debounceWebsocketMessages.d.ts +11 -0
- package/common/utils/getLayersAsFlatArray.d.ts +3 -0
- package/common/utils/getMapGlCopyrights.d.ts +17 -0
- package/common/utils/getRealtimeModeSuffix.d.ts +9 -0
- package/common/utils/getUrlWithParams.d.ts +8 -0
- package/common/utils/getVehiclePosition.d.ts +16 -0
- package/common/utils/index.d.ts +16 -0
- package/common/utils/realtimeConfig.d.ts +64 -0
- package/common/utils/removeDuplicate.d.ts +9 -0
- package/common/utils/renderTrajectories.d.ts +16 -0
- package/common/utils/sortAndFilterDepartures.d.ts +15 -0
- package/common/utils/sortByDelay.d.ts +3 -0
- package/common/utils/timeUtils.d.ts +23 -0
- package/common/utils/toMercatorExtent.d.ts +5 -0
- package/iife.d.ts +2 -0
- package/index.d.ts +9 -0
- package/maplibre/controls/CopyrightControl.d.ts +35 -0
- package/maplibre/controls/index.d.ts +1 -0
- package/maplibre/index.d.ts +5 -0
- package/maplibre/layers/Layer.d.ts +28 -0
- package/maplibre/layers/RealtimeLayer.d.ts +160 -0
- package/maplibre/layers/index.d.ts +2 -0
- package/maplibre/utils/getMercatorResolution.d.ts +7 -0
- package/maplibre/utils/getSourceCoordinates.d.ts +7 -0
- package/maplibre/utils/index.d.ts +2 -0
- package/mbt.js +32 -24
- package/mbt.js.map +2 -2
- package/mbt.min.js +1 -1
- package/mbt.min.js.map +3 -3
- package/ol/controls/CopyrightControl.d.ts +31 -0
- package/ol/controls/RoutingControl.d.ts +209 -0
- package/ol/controls/StopFinderControl.d.ts +37 -0
- package/ol/controls/index.d.ts +3 -0
- package/ol/index.d.ts +6 -0
- package/ol/layers/MapGlLayer.d.ts +144 -0
- package/ol/layers/MapGlLayer.js +3 -1
- package/ol/layers/MaplibreLayer.d.ts +63 -0
- package/ol/layers/MaplibreStyleLayer.d.ts +235 -0
- package/ol/layers/MaplibreStyleLayer.js +1 -1
- package/ol/layers/RealtimeLayer.d.ts +285 -0
- package/ol/layers/RealtimeLayer.js +11 -5
- package/ol/layers/index.d.ts +3 -0
- package/ol/mixins/MobilityLayerMixin.d.ts +98 -0
- package/ol/mixins/MobilityLayerMixin.js +1 -4
- package/ol/mixins/PropertiesLayerMixin.d.ts +127 -0
- package/ol/mixins/PropertiesLayerMixin.js +5 -4
- package/ol/renderers/MaplibreLayerRenderer.d.ts +20 -0
- package/ol/renderers/MaplibreStyleLayerRenderer.d.ts +20 -0
- package/ol/renderers/RealtimeLayerRenderer.d.ts +22 -0
- package/ol/renderers/RealtimeLayerRenderer.js +9 -9
- package/ol/styles/fullTrajectoryDelayStyle.d.ts +6 -0
- package/ol/styles/fullTrajectoryStyle.d.ts +5 -0
- package/ol/styles/index.d.ts +3 -0
- package/ol/styles/routingStyle.d.ts +4 -0
- package/ol/utils/getFeatureInfoAtCoordinate.d.ts +8 -0
- package/ol/utils/index.d.ts +1 -0
- package/package.json +1 -1
- package/setupTests.d.ts +1 -0
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import { RealtimeLayerMixinOptions } from '../../common/mixins/RealtimeLayerMixin';
|
|
2
|
+
import Layer, { LayerOptions } from './Layer';
|
|
3
|
+
import type { AnyMapGlMap, ViewState } from '../../types';
|
|
4
|
+
import type { RealtimeTrajectory } from '../../api/typedefs';
|
|
5
|
+
export type RealtimeLayerOptions = LayerOptions & RealtimeLayerMixinOptions;
|
|
6
|
+
declare const RealtimeLayer_base: {
|
|
7
|
+
new (options: RealtimeLayerMixinOptions): {
|
|
8
|
+
[x: string]: any;
|
|
9
|
+
debug: boolean;
|
|
10
|
+
trajectories?: {
|
|
11
|
+
[key: string]: GeoJSONFeature;
|
|
12
|
+
} | undefined;
|
|
13
|
+
canvas?: import("../../types").AnyCanvas | undefined;
|
|
14
|
+
mode: import("../../types").RealtimeMode;
|
|
15
|
+
api: import("../../api/RealtimeAPI").default;
|
|
16
|
+
tenant: string;
|
|
17
|
+
bboxParameters?: {
|
|
18
|
+
[index: string]: string | number | boolean | string[] | number[] | boolean[];
|
|
19
|
+
} | undefined;
|
|
20
|
+
time?: Date | undefined;
|
|
21
|
+
live?: boolean | undefined;
|
|
22
|
+
speed?: number | undefined;
|
|
23
|
+
filter?: Function | undefined;
|
|
24
|
+
sort?: Function | undefined;
|
|
25
|
+
style?: import("../../types").RealtimeStyleFunction | undefined;
|
|
26
|
+
styleOptions?: import("../../types").RealtimeStyleOptions | undefined;
|
|
27
|
+
pixelRatio?: number | undefined;
|
|
28
|
+
minZoomInterpolation: number;
|
|
29
|
+
isUpdateBboxOnMoveEnd: boolean;
|
|
30
|
+
hoverVehicleId?: string | undefined;
|
|
31
|
+
selectedVehicleId?: string | undefined;
|
|
32
|
+
renderState?: import("../../types").RealtimeRenderState | undefined;
|
|
33
|
+
useRequestAnimationFrame?: boolean | undefined;
|
|
34
|
+
useDebounce?: boolean | undefined;
|
|
35
|
+
useThrottle?: boolean | undefined;
|
|
36
|
+
mots?: import("../../types").RealtimeMot[] | undefined;
|
|
37
|
+
motsByZoom: import("../../types").RealtimeMot[][];
|
|
38
|
+
generalizationLevel?: import("../../types").RealtimeGeneralizationLevel | undefined;
|
|
39
|
+
generalizationLevelByZoom: import("../../types").RealtimeGeneralizationLevel[];
|
|
40
|
+
renderTimeIntervalByZoom: number[];
|
|
41
|
+
format: import("ol/format/GeoJSON").default<typeof import("ol/Feature").default>;
|
|
42
|
+
requestId?: number | undefined;
|
|
43
|
+
updateTimeInterval?: number | undefined;
|
|
44
|
+
updateTimeDelay?: number | undefined;
|
|
45
|
+
visibilityRef: import("ol/events").EventsKey;
|
|
46
|
+
selectedVehicle: GeoJSONFeature;
|
|
47
|
+
getMotsByZoom: (zoom: number) => import("../../types").RealtimeMot[];
|
|
48
|
+
getGeneralizationLevelByZoom: (zoom: number) => import("../../types").RealtimeGeneralizationLevel;
|
|
49
|
+
getRenderTimeIntervalByZoom: (zoom: number) => number;
|
|
50
|
+
throttleRenderTrajectories: (viewState: ViewState, noInterpolate?: boolean | undefined) => void;
|
|
51
|
+
debounceRenderTrajectories: (viewState: ViewState, noInterpolate?: boolean | undefined) => void;
|
|
52
|
+
onStart?: ((realtimeLayer: any) => void) | undefined;
|
|
53
|
+
onStop?: ((realtimeLayer: any) => void) | undefined;
|
|
54
|
+
defineProperties(options: RealtimeLayerMixinOptions): void;
|
|
55
|
+
attachToMap(map: any): void;
|
|
56
|
+
detachFromMap(): void;
|
|
57
|
+
start(): void;
|
|
58
|
+
startUpdateTime(): void;
|
|
59
|
+
stop(): void;
|
|
60
|
+
stopUpdateTime(): void;
|
|
61
|
+
renderTrajectoriesInternal(viewState: ViewState, noInterpolate?: boolean): boolean;
|
|
62
|
+
renderTrajectories(viewState: ViewState | undefined, noInterpolate: boolean | undefined): void;
|
|
63
|
+
setBbox(extent: [number, number, number, number], zoom: number): void;
|
|
64
|
+
getRefreshTimeInMs(zoom?: number | undefined): number;
|
|
65
|
+
getVehicle(filterFc: Function): GeoJSONFeature[];
|
|
66
|
+
getFeatureInfoAtCoordinate(coordinate: import("ol/coordinate").Coordinate, options: import("../../types").LayerGetFeatureInfoOptions): Promise<import("../../types").LayerGetFeatureInfoResponse>;
|
|
67
|
+
getTrajectoryInfos(id: string): Promise<{
|
|
68
|
+
stopSequence: import("../../api/WebSocketAPI").WebSocketAPIMessageEventData<import("../../types").RealtimeFullTrajectory> | import("../../api/WebSocketAPI").WebSocketAPIMessageEventData<GeoJSONFeature[]>;
|
|
69
|
+
fullTrajectory: import("../../api/WebSocketAPI").WebSocketAPIMessageEventData<import("../../types").RealtimeFullTrajectory> | import("../../api/WebSocketAPI").WebSocketAPIMessageEventData<GeoJSONFeature[]>;
|
|
70
|
+
}>;
|
|
71
|
+
purgeOutOfDateTrajectories(): void;
|
|
72
|
+
purgeTrajectory(trajectory: GeoJSONFeature, extent: [number, number, number, number], zoom: number): boolean;
|
|
73
|
+
addTrajectory(trajectory: GeoJSONFeature): void;
|
|
74
|
+
removeTrajectory(trajectoryOrId: any): void;
|
|
75
|
+
onZoomEnd(): void;
|
|
76
|
+
onDocumentVisibilityChange(): void;
|
|
77
|
+
onTrajectoryMessage(data: import("../../api/WebSocketAPI").WebSocketAPIMessageEventData<GeoJSONFeature>): void;
|
|
78
|
+
onDeleteTrajectoryMessage(data: import("../../api/WebSocketAPI").WebSocketAPIMessageEventData<string>): void;
|
|
79
|
+
highlightVehicle(id: string): void;
|
|
80
|
+
selectVehicle(id: string): void;
|
|
81
|
+
};
|
|
82
|
+
} & typeof Layer;
|
|
83
|
+
/**
|
|
84
|
+
* Responsible for loading and display data from a geOps realtime API.
|
|
85
|
+
*
|
|
86
|
+
* @example
|
|
87
|
+
* import { RealtimeLayer } from 'mobility-toolbox-js/Maplibre';
|
|
88
|
+
*
|
|
89
|
+
* const layer = new RealtimeLayer({
|
|
90
|
+
* apiKey: "yourApiKey"
|
|
91
|
+
* // url: "wss://api.geops.io/tracker-ws/v1/",
|
|
92
|
+
* });
|
|
93
|
+
*
|
|
94
|
+
*
|
|
95
|
+
* @see <a href="/api/class/src/api/RealtimeAPI%20js~RealtimeAPI%20html">RealtimeAPI</a>
|
|
96
|
+
*
|
|
97
|
+
* @implements {maplibregl.CustomLayer}
|
|
98
|
+
* @extends {maplibregl.Evented}
|
|
99
|
+
* @public
|
|
100
|
+
*/
|
|
101
|
+
declare class RealtimeLayer extends RealtimeLayer_base {
|
|
102
|
+
/**
|
|
103
|
+
* Constructor.
|
|
104
|
+
*
|
|
105
|
+
* @param {RealtimeLayerOptions} options
|
|
106
|
+
* @param {string} options.apiKey Access key for [geOps apis](https://developer.geops.io/).
|
|
107
|
+
* @param {string} [options.url="wss://api.geops.io/tracker-ws/v1/"] The geOps realtime API url.
|
|
108
|
+
*
|
|
109
|
+
*/
|
|
110
|
+
constructor(options?: {});
|
|
111
|
+
/**
|
|
112
|
+
* Add sources, layers and listeners to the map.
|
|
113
|
+
*/
|
|
114
|
+
onAdd(map: AnyMapGlMap, gl: WebGLRenderingContext | WebGL2RenderingContext): void;
|
|
115
|
+
/**
|
|
116
|
+
* Remove source, layers and listeners from the map.
|
|
117
|
+
*/
|
|
118
|
+
onRemove(map: AnyMapGlMap, gl: WebGLRenderingContext | WebGL2RenderingContext): void;
|
|
119
|
+
onLoad(): void;
|
|
120
|
+
/**
|
|
121
|
+
* Start updating vehicles position.
|
|
122
|
+
*
|
|
123
|
+
* @public
|
|
124
|
+
*/
|
|
125
|
+
start(): void;
|
|
126
|
+
/**
|
|
127
|
+
* Stop updating vehicles position.
|
|
128
|
+
*
|
|
129
|
+
* @public
|
|
130
|
+
*/
|
|
131
|
+
stop(): void;
|
|
132
|
+
/**
|
|
133
|
+
* Render the trajectories using current map's size, resolution and rotation.
|
|
134
|
+
* @param {boolean} noInterpolate if true, renders the vehicles without interpolating theirs positions.
|
|
135
|
+
* @private
|
|
136
|
+
*/
|
|
137
|
+
renderTrajectories(noInterpolate?: boolean): void;
|
|
138
|
+
/**
|
|
139
|
+
* Return the delay in ms before the next rendering.
|
|
140
|
+
*/
|
|
141
|
+
getRefreshTimeInMs(): number;
|
|
142
|
+
/**
|
|
143
|
+
* Remove the trajectory form the list if necessary.
|
|
144
|
+
*/
|
|
145
|
+
purgeTrajectory(trajectory: RealtimeTrajectory, extent: [number, number, number, number], zoom: number): boolean;
|
|
146
|
+
/**
|
|
147
|
+
* Send the current bbox to the websocket
|
|
148
|
+
*/
|
|
149
|
+
setBbox(extent?: [number, number, number, number], zoom?: number): void;
|
|
150
|
+
renderTrajectoriesInternal(viewState: ViewState, noInterpolate?: boolean): boolean;
|
|
151
|
+
/**
|
|
152
|
+
* Callback on 'move' event.
|
|
153
|
+
*/
|
|
154
|
+
onMove(): void;
|
|
155
|
+
/**
|
|
156
|
+
* Callback on 'moveend' event.
|
|
157
|
+
*/
|
|
158
|
+
onMoveEnd(): void;
|
|
159
|
+
}
|
|
160
|
+
export default RealtimeLayer;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { AnyMapGlMap } from '../../types';
|
|
2
|
+
/**
|
|
3
|
+
* Get the canvas source coordinates of the current map's extent.
|
|
4
|
+
* @param {maplibregl.Map} map A map object.
|
|
5
|
+
*/
|
|
6
|
+
export declare const getSourceCoordinates: (map: AnyMapGlMap, pixelRatio?: number) => number[][];
|
|
7
|
+
export default getSourceCoordinates;
|
package/mbt.js
CHANGED
|
@@ -45447,8 +45447,9 @@ uniform ${i3} ${s3} u_${a3};
|
|
|
45447
45447
|
|
|
45448
45448
|
// src/ol/mixins/PropertiesLayerMixin.ts
|
|
45449
45449
|
function PropertiesLayerMixin(Base) {
|
|
45450
|
-
return class extends Base {
|
|
45451
|
-
constructor(
|
|
45450
|
+
return class PropertiesLayer extends Base {
|
|
45451
|
+
constructor(...args) {
|
|
45452
|
+
const options = args[0];
|
|
45452
45453
|
super(options);
|
|
45453
45454
|
this.options = {};
|
|
45454
45455
|
this.olListenersKeys = [];
|
|
@@ -45532,6 +45533,7 @@ uniform ${i3} ${s3} u_${a3};
|
|
|
45532
45533
|
set visible(newValue) {
|
|
45533
45534
|
this.setVisible(newValue);
|
|
45534
45535
|
}
|
|
45536
|
+
// @ts-expect-error - this is a mixin
|
|
45535
45537
|
setMapInternal(map) {
|
|
45536
45538
|
super.setMapInternal(map);
|
|
45537
45539
|
if (map) {
|
|
@@ -45583,10 +45585,10 @@ uniform ${i3} ${s3} u_${a3};
|
|
|
45583
45585
|
|
|
45584
45586
|
// src/ol/mixins/MobilityLayerMixin.ts
|
|
45585
45587
|
function MobilityLayerMixin(Base) {
|
|
45586
|
-
return class extends PropertiesLayerMixin_default(Base) {
|
|
45587
|
-
constructor(options = {}) {
|
|
45588
|
-
|
|
45589
|
-
}
|
|
45588
|
+
return class MobilityLayer extends PropertiesLayerMixin_default(Base) {
|
|
45589
|
+
// constructor(options: MobilityLayerOptions = {}) {
|
|
45590
|
+
// super(options);
|
|
45591
|
+
// }
|
|
45590
45592
|
};
|
|
45591
45593
|
}
|
|
45592
45594
|
var MobilityLayerMixin_default = MobilityLayerMixin;
|
|
@@ -45634,6 +45636,7 @@ uniform ${i3} ${s3} u_${a3};
|
|
|
45634
45636
|
style: "travic_v2",
|
|
45635
45637
|
url: "https://maps.geops.io",
|
|
45636
45638
|
...options || {},
|
|
45639
|
+
// @ts-expect-error mapOptions must be saved by the mixin in this.options
|
|
45637
45640
|
mapOptions: {
|
|
45638
45641
|
interactive: false,
|
|
45639
45642
|
trackResize: false,
|
|
@@ -46072,7 +46075,7 @@ uniform ${i3} ${s3} u_${a3};
|
|
|
46072
46075
|
}
|
|
46073
46076
|
}
|
|
46074
46077
|
this.olListenersKeys.push(
|
|
46075
|
-
// @ts-expect-error 'load' is a custom event
|
|
46078
|
+
// @ts-expect-error 'load' is a custom event
|
|
46076
46079
|
this.maplibreLayer.on("load", this.onLoad.bind(this)),
|
|
46077
46080
|
this.on("change:visible", (evt) => {
|
|
46078
46081
|
this.applyLayoutVisibility(evt);
|
|
@@ -47230,7 +47233,7 @@ uniform ${i3} ${s3} u_${a3};
|
|
|
47230
47233
|
this.container.style.position = "absolute";
|
|
47231
47234
|
this.container.style.width = "100%";
|
|
47232
47235
|
this.container.style.height = "100%";
|
|
47233
|
-
if (canvas2) {
|
|
47236
|
+
if (canvas2 instanceof HTMLCanvasElement) {
|
|
47234
47237
|
canvas2.style.position = "absolute";
|
|
47235
47238
|
canvas2.style.top = "0";
|
|
47236
47239
|
canvas2.style.left = "0";
|
|
@@ -47254,17 +47257,20 @@ uniform ${i3} ${s3} u_${a3};
|
|
|
47254
47257
|
canvas2?.height
|
|
47255
47258
|
);
|
|
47256
47259
|
} else {
|
|
47257
|
-
const
|
|
47258
|
-
const
|
|
47259
|
-
|
|
47260
|
-
|
|
47261
|
-
|
|
47262
|
-
|
|
47263
|
-
|
|
47264
|
-
|
|
47265
|
-
|
|
47266
|
-
|
|
47267
|
-
|
|
47260
|
+
const map = this.getLayer().getMapInternal();
|
|
47261
|
+
const pixelCenterRendered = map?.getPixelFromCoordinate(renderedCenter);
|
|
47262
|
+
const pixelCenter = map?.getPixelFromCoordinate(center);
|
|
47263
|
+
if (pixelCenterRendered && pixelCenter) {
|
|
47264
|
+
this.container.style.transform = composeCssTransform(
|
|
47265
|
+
pixelCenterRendered[0] - pixelCenter[0],
|
|
47266
|
+
pixelCenterRendered[1] - pixelCenter[1],
|
|
47267
|
+
renderedResolution / resolution,
|
|
47268
|
+
renderedResolution / resolution,
|
|
47269
|
+
rotation - renderedRotation,
|
|
47270
|
+
0,
|
|
47271
|
+
0
|
|
47272
|
+
);
|
|
47273
|
+
}
|
|
47268
47274
|
}
|
|
47269
47275
|
}
|
|
47270
47276
|
return this.container;
|
|
@@ -47305,7 +47311,7 @@ uniform ${i3} ${s3} u_${a3};
|
|
|
47305
47311
|
}
|
|
47306
47312
|
const layer = this.getLayer();
|
|
47307
47313
|
const map = layer.getMapInternal();
|
|
47308
|
-
const resolution = map
|
|
47314
|
+
const resolution = map?.getView()?.getResolution() || 1;
|
|
47309
47315
|
const nb = 10;
|
|
47310
47316
|
const ext = buffer(
|
|
47311
47317
|
[...coordinate, ...coordinate],
|
|
@@ -47392,6 +47398,7 @@ uniform ${i3} ${s3} u_${a3};
|
|
|
47392
47398
|
this.olListenersKeys.push(
|
|
47393
47399
|
...this.map.on(
|
|
47394
47400
|
["moveend", "change:target"],
|
|
47401
|
+
// @ts-expect-error - bad ol definitions
|
|
47395
47402
|
(evt) => {
|
|
47396
47403
|
const view = (evt.map || evt.target).getView();
|
|
47397
47404
|
if (view.getAnimating() || view.getInteracting()) {
|
|
@@ -47472,8 +47479,9 @@ uniform ${i3} ${s3} u_${a3};
|
|
|
47472
47479
|
isRendered = blockRendering ? false : super.renderTrajectoriesInternal(viewState, noInterpolate);
|
|
47473
47480
|
if (isRendered) {
|
|
47474
47481
|
this.renderedViewState = { ...viewState };
|
|
47475
|
-
|
|
47476
|
-
|
|
47482
|
+
const { container } = this.getRenderer();
|
|
47483
|
+
if (container) {
|
|
47484
|
+
container.style.transform = "";
|
|
47477
47485
|
}
|
|
47478
47486
|
}
|
|
47479
47487
|
return isRendered;
|
|
@@ -47565,7 +47573,7 @@ uniform ${i3} ${s3} u_${a3};
|
|
|
47565
47573
|
return super.purgeTrajectory(
|
|
47566
47574
|
trajectory,
|
|
47567
47575
|
extent || this.map.getView().calculateExtent(),
|
|
47568
|
-
zoom || this.map.getView().getZoom()
|
|
47576
|
+
zoom || this.map.getView().getZoom() || 0
|
|
47569
47577
|
);
|
|
47570
47578
|
}
|
|
47571
47579
|
/**
|
|
@@ -47576,7 +47584,7 @@ uniform ${i3} ${s3} u_${a3};
|
|
|
47576
47584
|
setBbox(extent, zoom) {
|
|
47577
47585
|
super.setBbox(
|
|
47578
47586
|
extent || this.map.getView().calculateExtent(),
|
|
47579
|
-
zoom || this.map.getView().getZoom()
|
|
47587
|
+
zoom || this.map.getView().getZoom() || 0
|
|
47580
47588
|
);
|
|
47581
47589
|
}
|
|
47582
47590
|
/**
|