mapRenderer.ts 1.2 KB

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