cellTravelTimes = {
let interCellDist = null;
const {point} = map;
const origin = h3.geoToH3(point.lat, point.lng, h3Resolution);
const queue = new Heapify(1028, [], [], Array);
queue.push(origin, 0);
const output = new Map([[origin, 0]]);
while (queue.length > 0) {
const cell = queue.pop();
const edges = h3.getH3UnidirectionalEdgesFromHexagon(cell);
for (const edge of edges) {
if (edgeSpeedsMPH.has(edge)) {
const dest = h3.getDestinationH3IndexFromUnidirectionalEdge(edge);
if (interCellDist === null) {
const coord1 = h3.h3ToGeo(cell);
const coord2 = h3.h3ToGeo(dest);
interCellDist = h3.pointDist(coord1, coord2, h3.UNITS.km) * 0.621371;
}
const minutes = (interCellDist / edgeSpeedsMPH.get(edge)) * 60;
const travelTime = output.get(cell) + minutes;
if (!output.has(dest) || travelTime < output.get(dest)) {
output.set(dest, travelTime);
queue.push(dest, travelTime);
}
}
}
}
return output;
}