aboutsummaryrefslogtreecommitdiff
blob: 1b000c0a5b9dd2a573fd55d3c06ef752fb7e8bfb (plain)
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
/**
 * Converts time in seconds to HH:mm format.
 * @param time Time to convert in seconds.
 */
export function secondsToTimeString(time: number): string {
  const h = Math.floor(time / 3600);
  const m = Math.floor((time % 3600) / 60);

  return `${h < 10 ? `0${h}` : h}:${m < 10 ? `0${m}` : m}`;
}

/**
 * Calculates distance between two geographical points.
 * @param latlng1 Coordinates of the first point.
 * @param latlng2 Coordinates of the second point.
 */
export function distanceBetween(latlng1: number[], latlng2: number[]): number {
  const R = 6371000;
  const rad = Math.PI / 180;
  const lat1 = latlng1[0] * rad;
  const lat2 = latlng2[0] * rad;
  const sinDLat = Math.sin(((latlng2[0] - latlng1[0]) * rad) / 2);
  const sinDLon = Math.sin(((latlng2[1] - latlng1[1]) * rad) / 2);
  const a = sinDLat * sinDLat + Math.cos(lat1) * Math.cos(lat2) * sinDLon * sinDLon;
  const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));

  return R * c;
}

export default { secondsToTimeString, distanceBetween };