detectParkings = (points, parkingThreshold) => {
const latlngEq = (p1, p2) => p1.lat === p2.lat && p1.lng === p2.lng
if (!(points instanceof Array)) {
return points
}
const { parkings } = points.reduce((cursor, pt) => {
if (cursor.last) {
const interval = dayjs(pt.get_time).diff(dayjs(cursor.last.get_time))
if (interval > Number(parkingThreshold) * 60 * 1000) {
cursor.parkings.push({ ...cursor.last, interval })
}
}
if (!cursor.last || !latlngEq(cursor.last, pt)) {
cursor.last = pt
}
return cursor
}, { last: null, parkings: [] })
return parkings
}