File size: 870 Bytes
9de8a4f | 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 | import { z } from 'zod';
export const RouteRequestSchema = z.object({
start: z.tuple([
z.number().min(-90).max(90), // latitude
z.number().min(-180).max(180), // longitude
]),
end: z.tuple([
z.number().min(-90).max(90),
z.number().min(-180).max(180),
]),
});
export type RouteRequest = z.infer<typeof RouteRequestSchema>;
export interface RouteResponse {
geometry: [number, number][];
distance: number;
duration: number;
crossesBorder: boolean;
countries: string[];
}
export interface OSRMRoute {
geometry: {
coordinates: [number, number][];
type: string;
};
legs: {
distance: number;
duration: number;
summary: string;
}[];
distance: number;
duration: number;
}
export interface OSRMResponse {
code: string;
routes: OSRMRoute[];
waypoints: { location: [number, number]; name: string }[];
}
|