import { TomTomConfig } from '@tomtom-org/maps-sdk/core';
import { TomTomMap, TrafficAreaAnalyticsModule } from '@tomtom-org/maps-sdk/map';
import { geocodeOne, geometryData, trafficAreaAnalytics } from '@tomtom-org/maps-sdk/services';
import './style.css';
import { API_KEY, MOVE_PORTAL_KEY } from './config';
TomTomConfig.instance.put({ apiKey: API_KEY, language: 'en-GB' });
const pastDateRange = (): { startDate: string } => {
const start = new Date();
start.setDate(start.getDate() - 9);
return { startDate: start.toISOString().slice(0, 10) };
};
(async () => {
const cityName = 'Amsterdam, Netherlands';
const place = await geocodeOne(cityName);
const map = new TomTomMap({
mapLibre: { container: 'sdk-map', bounds: place.bbox, fitBoundsOptions: { padding: 40, pitch: 45 } },
});
const analyticsPromise = geometryData({ geometries: [place] })
.then(({ features }) => features[0]?.geometry)
.then((geometry) =>
trafficAreaAnalytics({
apiKey: MOVE_PORTAL_KEY,
name: cityName,
...pastDateRange(),
metrics: ['speed', 'congestionLevel', 'freeFlowSpeed', 'travelTime'],
functionalRoadClasses: 'all',
hours: 'all',
geometry,
}),
);
const [analyticsModule, analytics] = await Promise.all([TrafficAreaAnalyticsModule.get(map), analyticsPromise]);
await analyticsModule.show(analytics);
})();