maps-utils.ts
1.51 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
import L from 'leaflet';
import { interpolateOnPointSegment } from 'leaflet-geometryutil';
import _ from 'lodash';
export function createTooltip(target, settings, targetArgs?) {
const popup = L.popup();
popup.setContent('');
target.bindPopup(popup, { autoClose: settings.autocloseTooltip, closeOnClick: false });
if (settings.displayTooltipAction == 'hover') {
target.off('click');
target.on('mouseover', function () {
this.openPopup();
});
target.on('mouseout', function () {
this.closePopup();
});
}
return {
markerArgs: targetArgs,
popup: popup,
locationSettings: settings,
dsIndex: settings.dsIndex
};
}
export function interpolateArray(originData, interpolatedIntervals) {
const getRatio = (firsMoment, secondMoment, intermediateMoment) => {
return (intermediateMoment - firsMoment) / (secondMoment - firsMoment);
};
const result = {};
for (let i = 1, j = 0; i < originData.length, j < interpolatedIntervals.length;) {
const currentTime = interpolatedIntervals[j];
while (originData[i].time < currentTime) i++;
const before = originData[i - 1];
const after = originData[i];
result[currentTime] = (interpolateOnPointSegment(
new L.Point(before.latitude, before.longitude),
new L.Point(after.latitude, after.longitude),
getRatio(before.time, after.time, currentTime)));
j++;
}
return result;
};