Map Render

"/home/yossef/notes/git/projects/maplibra/flows/Map Render.md"

path: maplibra/flows/Map Render.md

- **fileName**: Map Render
- **Created on**: 2026-06-16 00:48:42

Map Render

Purpose: Floor loading, fast render, and prepared swap pipeline.

Related: ../Home.md, ../Architecture.md, ../modules/Map Rendering.md, ../modules/Layer Management.md, ../modules/MVF Loading.md

Render Pipeline

1. Floor Data Request

UIManager.requestFloorChange(floorId)
  → dispatchEvent('floor-change-requested')
  → script.js: floorDataManager.loadAndRenderFloor(floorId)

2. Floor Data Loading

FloorDataManager.loadAndRenderFloor(floorId)
  → ensureFloorData(floorId) [cached? return]
  → mvfLoader.loadFloorData(floorId) [ZIP IO]
  → cache in floorDataCache
  → track memory size
  → evict old floors if needed

3. Fast Render (immediate)

applyFloorData(floorId, floorData, null, { fast: true })
  → LayerManager.renderFloorData({ fast: true })
  → Paint raw geometry, entrance IDs, locations
  → LayerManager.updateFloorVisibility(floorId)
  → setFloorLoading(false)

4. Prepared Data (async, background)

ensurePreparedFloorData(floorId)
  → geoPrepper.prepareFloor(payload) [Web Worker]
  → Returns: { styleLayers, doorFeatures, labelFeatures }
  → if request still active:
    → applyFloorData(floorId, floorData, prepared, { fast: false })
    → LayerManager.renderFloorData({ prepared })
    → LayerManager.addPreparedLabels(prepared.labelFeatures)

5. Request Cancellation

Memory Management

Important Files

How It Connects