import * as saveAs from 'file-saver'; export interface IRoutePoint { lat: number, lng: number, } interface IGPXSticker { latlng: IRoutePoint, text?: string, } interface IGetGPXString { route: Array, stickers?: Array title?: string, } export const getGPXString = ({ route, title, stickers }: IGetGPXString): string => (` ${title || 'GPX Track'} ${ stickers.reduce((cat, { latlng: { lat, lng }, text }) => ( `${cat} ${text} generic ${title} `), '') } ${title || 'GPX Track'} ${ route.reduce((cat, { lat, lng }) => ( ` ${cat} ` ), '') } `); export const downloadGPXTrack = ({ track, title }: { track: string, title?: string }): void => ( saveAs( new Blob([track], { type: 'application/gpx+xml;charset=utf-8' }), `${title || 'track'}.gpx` ) );