mapRenderer.ts 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import { type CameraState } from '../camera/camera'
  2. import { type TileStoreStats } from '../tile/tileStore'
  3. import { type LonLatPoint } from '../../utils/projection'
  4. import { type TileZoomBounds } from '../../utils/remoteMapConfig'
  5. export interface MapScene {
  6. tileSource: string
  7. zoom: number
  8. centerTileX: number
  9. centerTileY: number
  10. tileBoundsByZoom: Record<number, TileZoomBounds> | null
  11. viewportWidth: number
  12. viewportHeight: number
  13. visibleColumns: number
  14. overdraw: number
  15. translateX: number
  16. translateY: number
  17. rotationRad: number
  18. previewScale: number
  19. previewOriginX: number
  20. previewOriginY: number
  21. track: LonLatPoint[]
  22. gpsPoint: LonLatPoint
  23. }
  24. export type MapRendererStats = TileStoreStats
  25. export interface MapRenderer {
  26. attachCanvas(canvasNode: any, width: number, height: number, dpr: number): void
  27. updateScene(scene: MapScene): void
  28. setAnimationPaused(paused: boolean): void
  29. destroy(): void
  30. }
  31. export function buildCamera(scene: MapScene): CameraState {
  32. return {
  33. centerWorldX: scene.centerTileX,
  34. centerWorldY: scene.centerTileY,
  35. viewportWidth: scene.viewportWidth,
  36. viewportHeight: scene.viewportHeight,
  37. visibleColumns: scene.visibleColumns,
  38. translateX: scene.translateX,
  39. translateY: scene.translateY,
  40. rotationRad: scene.rotationRad,
  41. }
  42. }