export type UnitPreference = 'METRIC' | 'IMPERIAL' const KM_TO_MILES = 0.621371 const METERS_TO_FEET = 3.28084 export function formatDistance(km: number, unit: UnitPreference): string { if (unit === 'IMPERIAL') { if (km < 0.1) { const feet = km * 1000 * METERS_TO_FEET return `${Math.round(feet)} ft` } const miles = km * KM_TO_MILES return `${miles.toFixed(2)} mi` } if (km < 1) { const meters = km * 1000 return `${Math.round(meters)} m` } return `${km.toFixed(2)} km` } export function formatDistanceShort(km: number, unit: UnitPreference): string { if (unit === 'IMPERIAL') { const miles = km * KM_TO_MILES if (miles < 0.1) { return `${Math.round(miles * 5280)} ft` } return `${miles.toFixed(1)} mi` } if (km < 1) { return `${Math.round(km * 1000)} m` } return `${km.toFixed(1)} km` } export function formatRadius(meters: number, unit: UnitPreference): string { if (unit === 'IMPERIAL') { const feet = meters * METERS_TO_FEET if (feet < 5280) { return `${Math.round(feet)} ft` } const miles = feet / 5280 return `${miles.toFixed(1)} mi` } if (meters < 1000) { return `${Math.round(meters)} m` } return `${(meters / 1000).toFixed(1)} km` } export function kmToMiles(km: number): number { return km * KM_TO_MILES } export function metersToFeet(meters: number): number { return meters * METERS_TO_FEET }