mobility-toolbox-js 2.0.0-beta.67 → 2.0.0-beta.68
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/RealtimeAPI.d.ts +1 -1
- package/api/RealtimeAPI.d.ts.map +1 -1
- package/common/mixins/RealtimeLayerMixin.d.ts.map +1 -1
- package/common/mixins/RealtimeLayerMixin.js +20 -4
- package/common/styles/realtimeDefaultStyle.d.ts +1 -1
- package/common/styles/realtimeDefaultStyle.d.ts.map +1 -1
- package/common/styles/realtimeDefaultStyle.js +58 -50
- package/common/utils/renderTrajectories.d.ts.map +1 -1
- package/common/utils/renderTrajectories.js +12 -23
- package/mapbox/layers/RealtimeLayer.js +2 -2
- package/mbt.js +86 -62
- package/mbt.js.map +2 -2
- package/mbt.min.js +40 -40
- package/mbt.min.js.map +2 -2
- package/ol/layers/RealtimeLayer.d.ts.map +1 -1
- package/ol/layers/RealtimeLayer.js +12 -1
- package/package.json +5 -4
- package/types/common.d.ts +3 -1
- package/types/realtime.d.ts +6 -1
- package/README.md +0 -44
package/api/RealtimeAPI.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import WebSocketAPI, { WebSocketAPIMessageCallback, WebSocketAPIMessageEventData } from '../common/api/WebSocketAPI';
|
|
2
|
-
import { RealtimeMode, RealtimeDeparture, RealtimeNews, RealtimeStation, RealtimeExtraGeom, RealtimeTrainId, RealtimeGeneralizationLevel, RealtimeFullTrajectory, RealtimeTrajectoryResponse, RealtimeStationId } from '../types';
|
|
2
|
+
import type { RealtimeMode, RealtimeDeparture, RealtimeNews, RealtimeStation, RealtimeExtraGeom, RealtimeTrainId, RealtimeGeneralizationLevel, RealtimeFullTrajectory, RealtimeTrajectoryResponse, RealtimeStationId } from '../types';
|
|
3
3
|
import { StopSequence } from './typedefs';
|
|
4
4
|
export declare type RealtimeAPIOptions = {
|
|
5
5
|
url?: string;
|
package/api/RealtimeAPI.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RealtimeAPI.d.ts","sourceRoot":"","sources":["../../src/api/RealtimeAPI.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,EAAE,EACnB,2BAA2B,EAC3B,4BAA4B,EAC7B,MAAM,4BAA4B,CAAC;AAGpC,OAAO,
|
|
1
|
+
{"version":3,"file":"RealtimeAPI.d.ts","sourceRoot":"","sources":["../../src/api/RealtimeAPI.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RealtimeLayerMixin.d.ts","sourceRoot":"","sources":["../../../src/common/mixins/RealtimeLayerMixin.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"RealtimeLayerMixin.d.ts","sourceRoot":"","sources":["../../../src/common/mixins/RealtimeLayerMixin.ts"],"names":[],"mappings":"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"}
|
|
@@ -81,8 +81,26 @@ function RealtimeLayerMixin(Base) {
|
|
|
81
81
|
'funicular',
|
|
82
82
|
'coach',
|
|
83
83
|
];
|
|
84
|
+
const onlyRail = ['rail'];
|
|
85
|
+
const withoutCable = ['tram', 'subway', 'rail', 'bus'];
|
|
84
86
|
// Server will block non train before zoom 9
|
|
85
|
-
this.motsByZoom = options.motsByZoom || [
|
|
87
|
+
this.motsByZoom = options.motsByZoom || [
|
|
88
|
+
onlyRail,
|
|
89
|
+
onlyRail,
|
|
90
|
+
onlyRail,
|
|
91
|
+
onlyRail,
|
|
92
|
+
onlyRail,
|
|
93
|
+
onlyRail,
|
|
94
|
+
onlyRail,
|
|
95
|
+
onlyRail,
|
|
96
|
+
onlyRail,
|
|
97
|
+
withoutCable,
|
|
98
|
+
withoutCable,
|
|
99
|
+
allMots,
|
|
100
|
+
allMots,
|
|
101
|
+
allMots,
|
|
102
|
+
allMots,
|
|
103
|
+
];
|
|
86
104
|
this.getMotsByZoom = (zoom) => {
|
|
87
105
|
return ((options.getMotsByZoom &&
|
|
88
106
|
options.getMotsByZoom(zoom, this.motsByZoom)) ||
|
|
@@ -590,9 +608,7 @@ function RealtimeLayerMixin(Base) {
|
|
|
590
608
|
purgeTrajectory(trajectory, extent, zoom) {
|
|
591
609
|
const { type, bounds } = trajectory.properties;
|
|
592
610
|
if (!intersects(extent, bounds) ||
|
|
593
|
-
(this.mots && !this.mots.includes(type))
|
|
594
|
-
(type !== 'rail' && zoom < 9) // zoom 9 is defined by the backend
|
|
595
|
-
) {
|
|
611
|
+
(this.mots && !this.mots.includes(type))) {
|
|
596
612
|
this.removeTrajectory(trajectory);
|
|
597
613
|
return true;
|
|
598
614
|
}
|
|
@@ -10,7 +10,7 @@ export declare const getDelayBgCanvas: (origin: number, radius: number, color: s
|
|
|
10
10
|
*
|
|
11
11
|
* @private
|
|
12
12
|
*/
|
|
13
|
-
export declare const getDelayTextCanvas: (
|
|
13
|
+
export declare const getDelayTextCanvas: (text: string, fontSize: number, font: string, delayColor: string, delayOutlineColor?: string, pixelRatio?: number) => import("../../types").AnyCanvas | null;
|
|
14
14
|
/**
|
|
15
15
|
* Draw colored circle with black border
|
|
16
16
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"realtimeDefaultStyle.d.ts","sourceRoot":"","sources":["../../../src/common/styles/realtimeDefaultStyle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAKV,qBAAqB,EACtB,MAAM,aAAa,CAAC;AAMrB;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,WACnB,MAAM,UACN,MAAM,SACP,MAAM,2CAmBd,CAAC;AAKF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,
|
|
1
|
+
{"version":3,"file":"realtimeDefaultStyle.d.ts","sourceRoot":"","sources":["../../../src/common/styles/realtimeDefaultStyle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAKV,qBAAqB,EACtB,MAAM,aAAa,CAAC;AAMrB;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,WACnB,MAAM,UACN,MAAM,SACP,MAAM,2CAmBd,CAAC;AAKF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,SACvB,MAAM,YACF,MAAM,QACV,MAAM,cACA,MAAM,sBACC,MAAM,eACb,MAAM,2CA0BnB,CAAC;AAKF;;;;GAIG;AACH,eAAO,MAAM,eAAe,WAClB,MAAM,UACN,MAAM,SACP,MAAM,aACF,OAAO,WACT,OAAO,cACJ,MAAM,2CAiCnB,CAAC;AAKF;;;;GAIG;AACH,eAAO,MAAM,aAAa,SAClB,MAAM,UACJ,MAAM,YACJ,MAAM,aACL,MAAM,eACJ,MAAM,aACR,OAAO,cACN,MAAM,2CAmCnB,CAAC;AAKF;;;;;;;GAOG;AACH,QAAA,MAAM,oBAAoB,EAAE,qBA0N3B,CAAC;AACF,eAAe,oBAAoB,CAAC"}
|
|
@@ -32,24 +32,24 @@ const cacheDelayText = {};
|
|
|
32
32
|
*
|
|
33
33
|
* @private
|
|
34
34
|
*/
|
|
35
|
-
export const getDelayTextCanvas = (
|
|
36
|
-
const key = `${
|
|
35
|
+
export const getDelayTextCanvas = (text, fontSize, font, delayColor, delayOutlineColor = '#000', pixelRatio = 1) => {
|
|
36
|
+
const key = `${text}, ${font}, ${delayColor}, ${delayOutlineColor}, ${pixelRatio}`;
|
|
37
37
|
if (!cacheDelayText[key]) {
|
|
38
|
-
const canvas = createCanvas(
|
|
38
|
+
const canvas = createCanvas(Math.ceil(text.length * fontSize), Math.ceil(fontSize + 8 * pixelRatio));
|
|
39
39
|
if (canvas) {
|
|
40
40
|
const ctx = canvas.getContext('2d');
|
|
41
41
|
if (!ctx) {
|
|
42
42
|
return null;
|
|
43
43
|
}
|
|
44
|
+
ctx.font = font;
|
|
44
45
|
ctx.textAlign = 'left';
|
|
45
46
|
ctx.textBaseline = 'middle';
|
|
46
47
|
ctx.font = font;
|
|
47
48
|
ctx.fillStyle = delayColor;
|
|
48
49
|
ctx.strokeStyle = delayOutlineColor;
|
|
49
50
|
ctx.lineWidth = 1.5 * pixelRatio;
|
|
50
|
-
|
|
51
|
-
ctx.
|
|
52
|
-
ctx.fillText(delayText, 0, fontSize);
|
|
51
|
+
ctx.strokeText(text, 0, fontSize);
|
|
52
|
+
ctx.fillText(text, 0, fontSize);
|
|
53
53
|
cacheDelayText[key] = canvas;
|
|
54
54
|
}
|
|
55
55
|
}
|
|
@@ -191,67 +191,75 @@ const realtimeDefaultStyle = (trajectory, viewState, options) => {
|
|
|
191
191
|
const margin = 1 * pixelRatio;
|
|
192
192
|
const radiusDelay = radius + 2;
|
|
193
193
|
const markerSize = radius * 2;
|
|
194
|
-
const size = radiusDelay * 2 + margin * 2
|
|
194
|
+
const size = radiusDelay * 2 + margin * 2;
|
|
195
195
|
const origin = size / 2;
|
|
196
|
+
// Draw circle delay background
|
|
197
|
+
let delayBg = null;
|
|
198
|
+
if (isDisplayStrokeAndDelay && delay !== null) {
|
|
199
|
+
delayBg = getDelayBgCanvas(origin, radiusDelay, getDelayColor(delay, cancelled));
|
|
200
|
+
}
|
|
201
|
+
// Show delay if feature is hovered or if delay is above 5mins.
|
|
202
|
+
let delayText = null;
|
|
203
|
+
let fontSize = 0;
|
|
204
|
+
if (isDisplayStrokeAndDelay &&
|
|
205
|
+
(hover || (delay || 0) >= delayDisplay || cancelled)) {
|
|
206
|
+
// Draw delay text
|
|
207
|
+
fontSize =
|
|
208
|
+
Math.max(cancelled ? 19 : 14, Math.min(cancelled ? 19 : 17, radius * 1.2)) * pixelRatio;
|
|
209
|
+
const text = getDelayText(delay, cancelled);
|
|
210
|
+
if (text) {
|
|
211
|
+
delayText = getDelayTextCanvas(text, fontSize, `bold ${fontSize}px arial, sans-serif`, getDelayColor(delay, cancelled, true), delayOutlineColor, pixelRatio);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
// Draw colored circle with black border
|
|
215
|
+
let circleFillColor;
|
|
216
|
+
if (useDelayStyle) {
|
|
217
|
+
circleFillColor = getDelayColor(delay, cancelled);
|
|
218
|
+
}
|
|
219
|
+
else {
|
|
220
|
+
circleFillColor = color || getBgColor(type);
|
|
221
|
+
}
|
|
222
|
+
const hasStroke = isDisplayStrokeAndDelay || hover || selected;
|
|
223
|
+
const hasDash = !!isDisplayStrokeAndDelay &&
|
|
224
|
+
!!useDelayStyle &&
|
|
225
|
+
delay === null &&
|
|
226
|
+
operatorProvidesRealtime === 'yes';
|
|
227
|
+
const circle = getCircleCanvas(origin, radius, circleFillColor, hasStroke, hasDash, pixelRatio);
|
|
196
228
|
// Create the canvas
|
|
197
|
-
const
|
|
229
|
+
const width = size + ((delayText === null || delayText === void 0 ? void 0 : delayText.width) || 0) * 2;
|
|
230
|
+
const height = size;
|
|
231
|
+
const canvas = createCanvas(width, height);
|
|
198
232
|
if (canvas) {
|
|
199
233
|
const ctx = canvas.getContext('2d');
|
|
200
234
|
if (!ctx) {
|
|
201
235
|
return null;
|
|
202
236
|
}
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
ctx.drawImage(delayBg, 0, 0);
|
|
208
|
-
}
|
|
237
|
+
// The renderTrajectories will center the image on the vehicle positions.
|
|
238
|
+
const originX = (delayText === null || delayText === void 0 ? void 0 : delayText.width) || 0;
|
|
239
|
+
if (delayBg) {
|
|
240
|
+
ctx.drawImage(delayBg, originX, 0);
|
|
209
241
|
}
|
|
210
|
-
// Show delay if feature is hovered or if delay is above 5mins.
|
|
211
|
-
if (isDisplayStrokeAndDelay &&
|
|
212
|
-
(hover || (delay || 0) >= delayDisplay || cancelled)) {
|
|
213
|
-
// Draw delay text
|
|
214
|
-
const fontSize = Math.max(cancelled ? 19 : 14, Math.min(cancelled ? 19 : 17, radius * 1.2)) * pixelRatio;
|
|
215
|
-
const text = getDelayText(delay, cancelled);
|
|
216
|
-
if (text) {
|
|
217
|
-
const textWidth = text.length * fontSize;
|
|
218
|
-
const delayText = getDelayTextCanvas(textWidth, text, fontSize, `bold ${fontSize}px arial, sans-serif`, getDelayColor(delay, cancelled, true), delayOutlineColor, pixelRatio);
|
|
219
|
-
if (delayText) {
|
|
220
|
-
ctx.drawImage(delayText, origin + radiusDelay + margin, origin - fontSize);
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
// Draw colored circle with black border
|
|
225
|
-
let circleFillColor;
|
|
226
|
-
if (useDelayStyle) {
|
|
227
|
-
circleFillColor = getDelayColor(delay, cancelled);
|
|
228
|
-
}
|
|
229
|
-
else {
|
|
230
|
-
circleFillColor = color || getBgColor(type);
|
|
231
|
-
}
|
|
232
|
-
const hasStroke = isDisplayStrokeAndDelay || hover || selected;
|
|
233
|
-
const hasDash = !!isDisplayStrokeAndDelay &&
|
|
234
|
-
!!useDelayStyle &&
|
|
235
|
-
delay === null &&
|
|
236
|
-
operatorProvidesRealtime === 'yes';
|
|
237
|
-
const circle = getCircleCanvas(origin, radius, circleFillColor, hasStroke, hasDash, pixelRatio);
|
|
238
242
|
if (circle) {
|
|
239
|
-
ctx.drawImage(circle,
|
|
243
|
+
ctx.drawImage(circle, originX, 0);
|
|
240
244
|
}
|
|
241
245
|
// Draw text in the circle
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
const
|
|
246
|
+
let circleText = null;
|
|
247
|
+
if (isDisplayText) {
|
|
248
|
+
const fontSize2 = Math.max(radius, 10);
|
|
249
|
+
const textSize = getTextSize(ctx, markerSize, name, fontSize2);
|
|
245
250
|
const textColor2 = !useDelayStyle
|
|
246
251
|
? textColor || getTextColor(type)
|
|
247
252
|
: '#000000';
|
|
248
253
|
const hasStroke2 = !!useDelayStyle &&
|
|
249
254
|
delay === null &&
|
|
250
255
|
operatorProvidesRealtime === 'yes';
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
256
|
+
circleText = getTextCanvas(name, origin, textSize, textColor2, circleFillColor, hasStroke2, pixelRatio);
|
|
257
|
+
}
|
|
258
|
+
if (circleText) {
|
|
259
|
+
ctx.drawImage(circleText, originX, 0);
|
|
260
|
+
}
|
|
261
|
+
if (delayText) {
|
|
262
|
+
ctx.drawImage(delayText, originX + Math.ceil(origin + radiusDelay) + margin, Math.ceil(origin - fontSize));
|
|
255
263
|
}
|
|
256
264
|
cache[key] = canvas;
|
|
257
265
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderTrajectories.d.ts","sourceRoot":"","sources":["../../../src/common/utils/renderTrajectories.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,SAAS,EACT,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,SAAS,EACV,MAAM,aAAa,CAAC;AAGrB;;;;;;;;;;;;GAYG;AACH,QAAA,MAAM,kBAAkB,WACd,SAAS,gBACH,oBAAoB,SAC3B,qBAAqB,aACjB,SAAS,WACX,oBAAoB,KAC5B,
|
|
1
|
+
{"version":3,"file":"renderTrajectories.d.ts","sourceRoot":"","sources":["../../../src/common/utils/renderTrajectories.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,SAAS,EACT,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,SAAS,EACV,MAAM,aAAa,CAAC;AAGrB;;;;;;;;;;;;GAYG;AACH,QAAA,MAAM,kBAAkB,WACd,SAAS,gBACH,oBAAoB,SAC3B,qBAAqB,aACjB,SAAS,WACX,oBAAoB,KAC5B,mBA+JF,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/* eslint-disable no-param-reassign */
|
|
2
1
|
import { compose, apply, create } from 'ol/transform';
|
|
3
2
|
import getVehiclePosition from './getVehiclePosition';
|
|
4
3
|
/**
|
|
@@ -22,7 +21,9 @@ const renderTrajectories = (canvas, trajectories, style, viewState, options) =>
|
|
|
22
21
|
if (!resolution || !center) {
|
|
23
22
|
return { renderedTrajectories: [] };
|
|
24
23
|
}
|
|
25
|
-
const { noInterpolate = false, hoverVehicleId, selectedVehicleId, filter,
|
|
24
|
+
const { noInterpolate = false, hoverVehicleId, selectedVehicleId, filter, getScreenPixel = (pixel, viewStat) => (viewStat.zoom || 0) < 12
|
|
25
|
+
? pixel.map((coord) => Math.floor(coord))
|
|
26
|
+
: pixel, } = options;
|
|
26
27
|
const context = canvas.getContext('2d');
|
|
27
28
|
context === null || context === void 0 ? void 0 : context.clearRect(0, 0, canvas.width, canvas.height);
|
|
28
29
|
const [width, height] = size;
|
|
@@ -37,12 +38,8 @@ const renderTrajectories = (canvas, trajectories, style, viewState, options) =>
|
|
|
37
38
|
}
|
|
38
39
|
let hoverVehicleImg;
|
|
39
40
|
let hoverVehiclePx;
|
|
40
|
-
let hoverVehicleWidth;
|
|
41
|
-
let hoverVehicleHeight;
|
|
42
41
|
let selectedVehicleImg;
|
|
43
42
|
let selectedVehiclePx;
|
|
44
|
-
let selectedVehicleWidth;
|
|
45
|
-
let selectedVehicleHeight;
|
|
46
43
|
const renderedTrajectories = [];
|
|
47
44
|
for (let i = trajectories.length - 1; i >= 0; i -= 1) {
|
|
48
45
|
const trajectory = trajectories[i];
|
|
@@ -81,38 +78,30 @@ const renderTrajectories = (canvas, trajectories, style, viewState, options) =>
|
|
|
81
78
|
// eslint-disable-next-line no-continue
|
|
82
79
|
continue;
|
|
83
80
|
}
|
|
84
|
-
const imgWidth = vehicleImg.width;
|
|
85
|
-
const imgHeight = vehicleImg.height;
|
|
86
81
|
if (hoverVehicleId !== id && selectedVehicleId !== id) {
|
|
87
|
-
|
|
82
|
+
// To optimize the performance we use integer as pixel coordinate
|
|
83
|
+
// to avoid an additional work by the browser on zoom level < 12.
|
|
84
|
+
// See https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API/Tutorial/Optimizing_canvas?retiredLocale=de#avoid_floating-point_coordinates_and_use_integers_instead
|
|
85
|
+
const [x, y] = getScreenPixel([px[0] - vehicleImg.width / 2, px[1] - vehicleImg.height / 2], viewState);
|
|
86
|
+
context === null || context === void 0 ? void 0 : context.drawImage(vehicleImg, x, y);
|
|
88
87
|
}
|
|
89
88
|
if (hoverVehicleId && hoverVehicleId === id) {
|
|
90
89
|
// Store the canvas to draw it at the end
|
|
91
90
|
hoverVehicleImg = vehicleImg;
|
|
92
91
|
hoverVehiclePx = px;
|
|
93
|
-
hoverVehicleWidth = imgWidth;
|
|
94
|
-
hoverVehicleHeight = imgHeight;
|
|
95
92
|
}
|
|
96
93
|
if (selectedVehicleId && selectedVehicleId === id) {
|
|
97
94
|
// Store the canvas to draw it at the end
|
|
98
95
|
selectedVehicleImg = vehicleImg;
|
|
99
96
|
selectedVehiclePx = px;
|
|
100
|
-
selectedVehicleWidth = imgWidth;
|
|
101
|
-
selectedVehicleHeight = imgHeight;
|
|
102
97
|
}
|
|
103
98
|
renderedTrajectories.push(trajectory);
|
|
104
99
|
}
|
|
105
|
-
if (selectedVehicleImg &&
|
|
106
|
-
selectedVehiclePx
|
|
107
|
-
selectedVehicleWidth &&
|
|
108
|
-
selectedVehicleHeight) {
|
|
109
|
-
context === null || context === void 0 ? void 0 : context.drawImage(selectedVehicleImg, selectedVehiclePx[0] - selectedVehicleWidth / 2, selectedVehiclePx[1] - selectedVehicleHeight / 2, selectedVehicleWidth, selectedVehicleHeight);
|
|
100
|
+
if (selectedVehicleImg && selectedVehiclePx) {
|
|
101
|
+
context === null || context === void 0 ? void 0 : context.drawImage(selectedVehicleImg, Math.floor(selectedVehiclePx[0] - selectedVehicleImg.width / 2), Math.floor(selectedVehiclePx[1] - selectedVehicleImg.height / 2));
|
|
110
102
|
}
|
|
111
|
-
if (hoverVehicleImg &&
|
|
112
|
-
hoverVehiclePx
|
|
113
|
-
hoverVehicleWidth &&
|
|
114
|
-
hoverVehicleHeight) {
|
|
115
|
-
context === null || context === void 0 ? void 0 : context.drawImage(hoverVehicleImg, hoverVehiclePx[0] - hoverVehicleWidth / 2, hoverVehiclePx[1] - hoverVehicleHeight / 2, hoverVehicleWidth, hoverVehicleHeight);
|
|
103
|
+
if (hoverVehicleImg && hoverVehiclePx) {
|
|
104
|
+
context === null || context === void 0 ? void 0 : context.drawImage(hoverVehicleImg, Math.floor(hoverVehiclePx[0] - hoverVehicleImg.width / 2), Math.floor(hoverVehiclePx[1] - hoverVehicleImg.height / 2));
|
|
116
105
|
}
|
|
117
106
|
return {
|
|
118
107
|
renderedTrajectories,
|
|
@@ -179,7 +179,7 @@ class RealtimeLayer extends mixin(Layer) {
|
|
|
179
179
|
center: fromLonLat([center.lng, center.lat]),
|
|
180
180
|
extent: bounds,
|
|
181
181
|
resolution: res,
|
|
182
|
-
zoom: this.
|
|
182
|
+
zoom: this.getOlZoom(),
|
|
183
183
|
rotation: -(this.map.getBearing() * Math.PI) / 180,
|
|
184
184
|
pixelRatio: this.pixelRatio,
|
|
185
185
|
};
|
|
@@ -215,7 +215,7 @@ class RealtimeLayer extends mixin(Layer) {
|
|
|
215
215
|
* @private
|
|
216
216
|
*/
|
|
217
217
|
purgeTrajectory(trajectory, extent, zoom) {
|
|
218
|
-
return super.purgeTrajectory(trajectory, extent || this.getMercatorExtent(), zoom || Math.floor(this.
|
|
218
|
+
return super.purgeTrajectory(trajectory, extent || this.getMercatorExtent(), zoom || Math.floor(this.getOlZoom()));
|
|
219
219
|
}
|
|
220
220
|
/**
|
|
221
221
|
* Send the current bbox to the websocket
|
package/mbt.js
CHANGED
|
@@ -34787,7 +34787,8 @@ uniform ${i3} ${o3} u_${a3};
|
|
|
34787
34787
|
noInterpolate = false,
|
|
34788
34788
|
hoverVehicleId,
|
|
34789
34789
|
selectedVehicleId,
|
|
34790
|
-
filter
|
|
34790
|
+
filter,
|
|
34791
|
+
getScreenPixel = (pixel, viewStat) => (viewStat.zoom || 0) < 12 ? pixel.map((coord) => Math.floor(coord)) : pixel
|
|
34791
34792
|
} = options;
|
|
34792
34793
|
const context = canvas2.getContext("2d");
|
|
34793
34794
|
context?.clearRect(0, 0, canvas2.width, canvas2.height);
|
|
@@ -34802,12 +34803,8 @@ uniform ${i3} ${o3} u_${a3};
|
|
|
34802
34803
|
}
|
|
34803
34804
|
let hoverVehicleImg;
|
|
34804
34805
|
let hoverVehiclePx;
|
|
34805
|
-
let hoverVehicleWidth;
|
|
34806
|
-
let hoverVehicleHeight;
|
|
34807
34806
|
let selectedVehicleImg;
|
|
34808
34807
|
let selectedVehiclePx;
|
|
34809
|
-
let selectedVehicleWidth;
|
|
34810
|
-
let selectedVehicleHeight;
|
|
34811
34808
|
const renderedTrajectories = [];
|
|
34812
34809
|
for (let i = trajectories.length - 1; i >= 0; i -= 1) {
|
|
34813
34810
|
const trajectory = trajectories[i];
|
|
@@ -34833,30 +34830,25 @@ uniform ${i3} ${o3} u_${a3};
|
|
|
34833
34830
|
if (!vehicleImg) {
|
|
34834
34831
|
continue;
|
|
34835
34832
|
}
|
|
34836
|
-
const imgWidth = vehicleImg.width;
|
|
34837
|
-
const imgHeight = vehicleImg.height;
|
|
34838
34833
|
if (hoverVehicleId !== id && selectedVehicleId !== id) {
|
|
34839
|
-
|
|
34834
|
+
const [x, y] = getScreenPixel([px[0] - vehicleImg.width / 2, px[1] - vehicleImg.height / 2], viewState);
|
|
34835
|
+
context?.drawImage(vehicleImg, x, y);
|
|
34840
34836
|
}
|
|
34841
34837
|
if (hoverVehicleId && hoverVehicleId === id) {
|
|
34842
34838
|
hoverVehicleImg = vehicleImg;
|
|
34843
34839
|
hoverVehiclePx = px;
|
|
34844
|
-
hoverVehicleWidth = imgWidth;
|
|
34845
|
-
hoverVehicleHeight = imgHeight;
|
|
34846
34840
|
}
|
|
34847
34841
|
if (selectedVehicleId && selectedVehicleId === id) {
|
|
34848
34842
|
selectedVehicleImg = vehicleImg;
|
|
34849
34843
|
selectedVehiclePx = px;
|
|
34850
|
-
selectedVehicleWidth = imgWidth;
|
|
34851
|
-
selectedVehicleHeight = imgHeight;
|
|
34852
34844
|
}
|
|
34853
34845
|
renderedTrajectories.push(trajectory);
|
|
34854
34846
|
}
|
|
34855
|
-
if (selectedVehicleImg && selectedVehiclePx
|
|
34856
|
-
context?.drawImage(selectedVehicleImg, selectedVehiclePx[0] -
|
|
34847
|
+
if (selectedVehicleImg && selectedVehiclePx) {
|
|
34848
|
+
context?.drawImage(selectedVehicleImg, Math.floor(selectedVehiclePx[0] - selectedVehicleImg.width / 2), Math.floor(selectedVehiclePx[1] - selectedVehicleImg.height / 2));
|
|
34857
34849
|
}
|
|
34858
|
-
if (hoverVehicleImg && hoverVehiclePx
|
|
34859
|
-
context?.drawImage(hoverVehicleImg, hoverVehiclePx[0] -
|
|
34850
|
+
if (hoverVehicleImg && hoverVehiclePx) {
|
|
34851
|
+
context?.drawImage(hoverVehicleImg, Math.floor(hoverVehiclePx[0] - hoverVehicleImg.width / 2), Math.floor(hoverVehiclePx[1] - hoverVehicleImg.height / 2));
|
|
34860
34852
|
}
|
|
34861
34853
|
return {
|
|
34862
34854
|
renderedTrajectories
|
|
@@ -36095,24 +36087,24 @@ uniform ${i3} ${o3} u_${a3};
|
|
|
36095
36087
|
return cacheDelayBg[key];
|
|
36096
36088
|
};
|
|
36097
36089
|
var cacheDelayText = {};
|
|
36098
|
-
var getDelayTextCanvas = (
|
|
36099
|
-
const key = `${
|
|
36090
|
+
var getDelayTextCanvas = (text, fontSize, font, delayColor, delayOutlineColor = "#000", pixelRatio = 1) => {
|
|
36091
|
+
const key = `${text}, ${font}, ${delayColor}, ${delayOutlineColor}, ${pixelRatio}`;
|
|
36100
36092
|
if (!cacheDelayText[key]) {
|
|
36101
|
-
const canvas2 = createCanvas_default(
|
|
36093
|
+
const canvas2 = createCanvas_default(Math.ceil(text.length * fontSize), Math.ceil(fontSize + 8 * pixelRatio));
|
|
36102
36094
|
if (canvas2) {
|
|
36103
36095
|
const ctx = canvas2.getContext("2d");
|
|
36104
36096
|
if (!ctx) {
|
|
36105
36097
|
return null;
|
|
36106
36098
|
}
|
|
36099
|
+
ctx.font = font;
|
|
36107
36100
|
ctx.textAlign = "left";
|
|
36108
36101
|
ctx.textBaseline = "middle";
|
|
36109
36102
|
ctx.font = font;
|
|
36110
36103
|
ctx.fillStyle = delayColor;
|
|
36111
36104
|
ctx.strokeStyle = delayOutlineColor;
|
|
36112
36105
|
ctx.lineWidth = 1.5 * pixelRatio;
|
|
36113
|
-
|
|
36114
|
-
ctx.
|
|
36115
|
-
ctx.fillText(delayText, 0, fontSize);
|
|
36106
|
+
ctx.strokeText(text, 0, fontSize);
|
|
36107
|
+
ctx.fillText(text, 0, fontSize);
|
|
36116
36108
|
cacheDelayText[key] = canvas2;
|
|
36117
36109
|
}
|
|
36118
36110
|
}
|
|
@@ -36246,52 +36238,58 @@ uniform ${i3} ${o3} u_${a3};
|
|
|
36246
36238
|
const margin = 1 * pixelRatio;
|
|
36247
36239
|
const radiusDelay = radius + 2;
|
|
36248
36240
|
const markerSize = radius * 2;
|
|
36249
|
-
const size = radiusDelay * 2 + margin * 2
|
|
36241
|
+
const size = radiusDelay * 2 + margin * 2;
|
|
36250
36242
|
const origin = size / 2;
|
|
36251
|
-
|
|
36243
|
+
let delayBg = null;
|
|
36244
|
+
if (isDisplayStrokeAndDelay && delay !== null) {
|
|
36245
|
+
delayBg = getDelayBgCanvas(origin, radiusDelay, getDelayColor2(delay, cancelled));
|
|
36246
|
+
}
|
|
36247
|
+
let delayText = null;
|
|
36248
|
+
let fontSize = 0;
|
|
36249
|
+
if (isDisplayStrokeAndDelay && (hover || (delay || 0) >= delayDisplay || cancelled)) {
|
|
36250
|
+
fontSize = Math.max(cancelled ? 19 : 14, Math.min(cancelled ? 19 : 17, radius * 1.2)) * pixelRatio;
|
|
36251
|
+
const text = getDelayText2(delay, cancelled);
|
|
36252
|
+
if (text) {
|
|
36253
|
+
delayText = getDelayTextCanvas(text, fontSize, `bold ${fontSize}px arial, sans-serif`, getDelayColor2(delay, cancelled, true), delayOutlineColor, pixelRatio);
|
|
36254
|
+
}
|
|
36255
|
+
}
|
|
36256
|
+
let circleFillColor;
|
|
36257
|
+
if (useDelayStyle) {
|
|
36258
|
+
circleFillColor = getDelayColor2(delay, cancelled);
|
|
36259
|
+
} else {
|
|
36260
|
+
circleFillColor = color || getBgColor2(type);
|
|
36261
|
+
}
|
|
36262
|
+
const hasStroke = isDisplayStrokeAndDelay || hover || selected;
|
|
36263
|
+
const hasDash = !!isDisplayStrokeAndDelay && !!useDelayStyle && delay === null && operatorProvidesRealtime === "yes";
|
|
36264
|
+
const circle = getCircleCanvas(origin, radius, circleFillColor, hasStroke, hasDash, pixelRatio);
|
|
36265
|
+
const width = size + (delayText?.width || 0) * 2;
|
|
36266
|
+
const height = size;
|
|
36267
|
+
const canvas2 = createCanvas_default(width, height);
|
|
36252
36268
|
if (canvas2) {
|
|
36253
36269
|
const ctx = canvas2.getContext("2d");
|
|
36254
36270
|
if (!ctx) {
|
|
36255
36271
|
return null;
|
|
36256
36272
|
}
|
|
36257
|
-
|
|
36258
|
-
|
|
36259
|
-
|
|
36260
|
-
ctx.drawImage(delayBg, 0, 0);
|
|
36261
|
-
}
|
|
36262
|
-
}
|
|
36263
|
-
if (isDisplayStrokeAndDelay && (hover || (delay || 0) >= delayDisplay || cancelled)) {
|
|
36264
|
-
const fontSize = Math.max(cancelled ? 19 : 14, Math.min(cancelled ? 19 : 17, radius * 1.2)) * pixelRatio;
|
|
36265
|
-
const text = getDelayText2(delay, cancelled);
|
|
36266
|
-
if (text) {
|
|
36267
|
-
const textWidth = text.length * fontSize;
|
|
36268
|
-
const delayText = getDelayTextCanvas(textWidth, text, fontSize, `bold ${fontSize}px arial, sans-serif`, getDelayColor2(delay, cancelled, true), delayOutlineColor, pixelRatio);
|
|
36269
|
-
if (delayText) {
|
|
36270
|
-
ctx.drawImage(delayText, origin + radiusDelay + margin, origin - fontSize);
|
|
36271
|
-
}
|
|
36272
|
-
}
|
|
36273
|
-
}
|
|
36274
|
-
let circleFillColor;
|
|
36275
|
-
if (useDelayStyle) {
|
|
36276
|
-
circleFillColor = getDelayColor2(delay, cancelled);
|
|
36277
|
-
} else {
|
|
36278
|
-
circleFillColor = color || getBgColor2(type);
|
|
36273
|
+
const originX = delayText?.width || 0;
|
|
36274
|
+
if (delayBg) {
|
|
36275
|
+
ctx.drawImage(delayBg, originX, 0);
|
|
36279
36276
|
}
|
|
36280
|
-
const hasStroke = isDisplayStrokeAndDelay || hover || selected;
|
|
36281
|
-
const hasDash = !!isDisplayStrokeAndDelay && !!useDelayStyle && delay === null && operatorProvidesRealtime === "yes";
|
|
36282
|
-
const circle = getCircleCanvas(origin, radius, circleFillColor, hasStroke, hasDash, pixelRatio);
|
|
36283
36277
|
if (circle) {
|
|
36284
|
-
ctx.drawImage(circle,
|
|
36278
|
+
ctx.drawImage(circle, originX, 0);
|
|
36285
36279
|
}
|
|
36286
|
-
|
|
36287
|
-
|
|
36288
|
-
const
|
|
36280
|
+
let circleText = null;
|
|
36281
|
+
if (isDisplayText) {
|
|
36282
|
+
const fontSize2 = Math.max(radius, 10);
|
|
36283
|
+
const textSize = getTextSize2(ctx, markerSize, name, fontSize2);
|
|
36289
36284
|
const textColor2 = !useDelayStyle ? textColor || getTextColor2(type) : "#000000";
|
|
36290
36285
|
const hasStroke2 = !!useDelayStyle && delay === null && operatorProvidesRealtime === "yes";
|
|
36291
|
-
|
|
36292
|
-
|
|
36293
|
-
|
|
36294
|
-
|
|
36286
|
+
circleText = getTextCanvas(name, origin, textSize, textColor2, circleFillColor, hasStroke2, pixelRatio);
|
|
36287
|
+
}
|
|
36288
|
+
if (circleText) {
|
|
36289
|
+
ctx.drawImage(circleText, originX, 0);
|
|
36290
|
+
}
|
|
36291
|
+
if (delayText) {
|
|
36292
|
+
ctx.drawImage(delayText, originX + Math.ceil(origin + radiusDelay) + margin, Math.ceil(origin - fontSize));
|
|
36295
36293
|
}
|
|
36296
36294
|
cache2[key] = canvas2;
|
|
36297
36295
|
}
|
|
@@ -49161,7 +49159,25 @@ uniform ${i3} ${o3} u_${a3};
|
|
|
49161
49159
|
"funicular",
|
|
49162
49160
|
"coach"
|
|
49163
49161
|
];
|
|
49164
|
-
|
|
49162
|
+
const onlyRail = ["rail"];
|
|
49163
|
+
const withoutCable = ["tram", "subway", "rail", "bus"];
|
|
49164
|
+
this.motsByZoom = options.motsByZoom || [
|
|
49165
|
+
onlyRail,
|
|
49166
|
+
onlyRail,
|
|
49167
|
+
onlyRail,
|
|
49168
|
+
onlyRail,
|
|
49169
|
+
onlyRail,
|
|
49170
|
+
onlyRail,
|
|
49171
|
+
onlyRail,
|
|
49172
|
+
onlyRail,
|
|
49173
|
+
onlyRail,
|
|
49174
|
+
withoutCable,
|
|
49175
|
+
withoutCable,
|
|
49176
|
+
allMots,
|
|
49177
|
+
allMots,
|
|
49178
|
+
allMots,
|
|
49179
|
+
allMots
|
|
49180
|
+
];
|
|
49165
49181
|
this.getMotsByZoom = (zoom) => {
|
|
49166
49182
|
return options.getMotsByZoom && options.getMotsByZoom(zoom, this.motsByZoom) || this.motsByZoom[zoom] || this.motsByZoom[this.motsByZoom.length - 1];
|
|
49167
49183
|
};
|
|
@@ -49523,7 +49539,7 @@ uniform ${i3} ${o3} u_${a3};
|
|
|
49523
49539
|
}
|
|
49524
49540
|
purgeTrajectory(trajectory, extent, zoom) {
|
|
49525
49541
|
const { type, bounds } = trajectory.properties;
|
|
49526
|
-
if (!intersects(extent, bounds) || this.mots && !this.mots.includes(type)
|
|
49542
|
+
if (!intersects(extent, bounds) || this.mots && !this.mots.includes(type)) {
|
|
49527
49543
|
this.removeTrajectory(trajectory);
|
|
49528
49544
|
return true;
|
|
49529
49545
|
}
|
|
@@ -49791,7 +49807,9 @@ uniform ${i3} ${o3} u_${a3};
|
|
|
49791
49807
|
}
|
|
49792
49808
|
hasFeatureInfoAtCoordinate(coordinate) {
|
|
49793
49809
|
if (this.map && this.canvas) {
|
|
49794
|
-
const context = this.canvas.getContext("2d"
|
|
49810
|
+
const context = this.canvas.getContext("2d", {
|
|
49811
|
+
willReadFrequently: true
|
|
49812
|
+
});
|
|
49795
49813
|
const pixel = this.map.getPixelFromCoordinate(coordinate);
|
|
49796
49814
|
return !!context?.getImageData(pixel[0] * (this.pixelRatio || 1), pixel[1] * (this.pixelRatio || 1), 1, 1).data[3];
|
|
49797
49815
|
}
|
|
@@ -49847,6 +49865,12 @@ uniform ${i3} ${o3} u_${a3};
|
|
|
49847
49865
|
}
|
|
49848
49866
|
onZoomEnd() {
|
|
49849
49867
|
super.onZoomEnd();
|
|
49868
|
+
if (this.visible && this.isUpdateBboxOnMoveEnd) {
|
|
49869
|
+
this.setBbox();
|
|
49870
|
+
}
|
|
49871
|
+
if (this.visible && this.isUpdateBboxOnMoveEnd && this.userClickInteractions && this.selectedVehicleId) {
|
|
49872
|
+
this.highlightTrajectory(this.selectedVehicleId);
|
|
49873
|
+
}
|
|
49850
49874
|
}
|
|
49851
49875
|
onFeatureHover(features, layer, coordinate) {
|
|
49852
49876
|
super.onFeatureHover(features, layer, coordinate);
|
|
@@ -50713,7 +50737,7 @@ uniform ${i3} ${o3} u_${a3};
|
|
|
50713
50737
|
center: fromLonLat([center.lng, center.lat]),
|
|
50714
50738
|
extent: bounds,
|
|
50715
50739
|
resolution: res,
|
|
50716
|
-
zoom: this.
|
|
50740
|
+
zoom: this.getOlZoom(),
|
|
50717
50741
|
rotation: -(this.map.getBearing() * Math.PI) / 180,
|
|
50718
50742
|
pixelRatio: this.pixelRatio
|
|
50719
50743
|
};
|
|
@@ -50737,7 +50761,7 @@ uniform ${i3} ${o3} u_${a3};
|
|
|
50737
50761
|
}
|
|
50738
50762
|
}
|
|
50739
50763
|
purgeTrajectory(trajectory, extent, zoom) {
|
|
50740
|
-
return super.purgeTrajectory(trajectory, extent || this.getMercatorExtent(), zoom || Math.floor(this.
|
|
50764
|
+
return super.purgeTrajectory(trajectory, extent || this.getMercatorExtent(), zoom || Math.floor(this.getOlZoom()));
|
|
50741
50765
|
}
|
|
50742
50766
|
setBbox(extent, zoom) {
|
|
50743
50767
|
let newExtent = extent;
|