Google Maps — Detailed#
flowchart TB
subgraph Clients
BR
APP([Mobile / Auto])
EMB[Embed API]
end
subgraph Edge
CDN
GW
end
subgraph Tiles[Map Tiles]
TS[Tile Service]
RAS[Raster tiles 256/512]
VEC[Vector tiles]
Z[Zoom levels 0-22]
PROJ[Mercator projection]
CACHE[(Tile cache on CDN)]
end
subgraph Data[Map Data]
OSM([Ground truth ingest<br/>sat imagery, OSM, vendors])
EDIT[Editor + ops tools]
BUILD[Tile build pipeline]
GEO[(Spatial DB - S2 cells)]
end
subgraph Places[Places & Geocoding]
PSVC[Places Service]
GEOC[Geocoder]
REV[Reverse geocoder]
PIDB[(POIs DB)]
SRCH[Place search]
end
subgraph Route[Routing & ETA]
R1[Route Service]
GRAPH[(Road graph<br/>contraction hierarchies)]
CH[CH preprocessor]
DIJK[A* / Dijkstra]
ETA[ETA model]
TRAF[[Live traffic stream]]
HIST[Historical traffic]
end
subgraph Live[Live signals]
PROBES([GPS probes from phones])
SPEED[Speed estimation]
INCID[Incidents / closures]
end
subgraph Nav[Turn-by-turn navigation]
SES[Nav session]
REROUTE[Reroute on miss]
LANE[Lane guidance]
VOICE[Voice TTS]
end
Clients --> CDN --> GW
GW --> Tiles --> CACHE
Tiles -. miss .-> TS
TS --- Data
GW --> Places --> PIDB
GW --> Route --> GRAPH
Route --> DIJK
Route --> ETA
TRAF --> ETA
PROBES --> SPEED --> TRAF
HIST --> ETA
Route --> Nav
Live --- Route
classDef client fill:#dbeafe,stroke:#1e40af,stroke-width:1px,color:#0f172a;
classDef edge fill:#cffafe,stroke:#0e7490,stroke-width:1px,color:#0f172a;
classDef service fill:#fef3c7,stroke:#92400e,stroke-width:1px,color:#0f172a;
classDef datastore fill:#fee2e2,stroke:#991b1b,stroke-width:1px,color:#0f172a;
classDef cache fill:#fed7aa,stroke:#9a3412,stroke-width:1px,color:#0f172a;
classDef queue fill:#ede9fe,stroke:#5b21b6,stroke-width:1px,color:#0f172a;
classDef compute fill:#d1fae5,stroke:#065f46,stroke-width:1px,color:#0f172a;
classDef storage fill:#e5e7eb,stroke:#374151,stroke-width:1px,color:#0f172a;
classDef external fill:#fce7f3,stroke:#9d174d,stroke-width:1px,color:#0f172a;
classDef obs fill:#f3e8ff,stroke:#6b21a8,stroke-width:1px,color:#0f172a;
class APP,PROBES client;
class EMB,TS,RAS,VEC,Z,PROJ,EDIT,BUILD,PSVC,GEOC,REV,SRCH,R1,CH,DIJK,ETA,HIST,SPEED,INCID,SES,REROUTE,LANE,VOICE service;
class CACHE,GEO,PIDB datastore;
class TRAF queue;
class OSM compute;
Tiles#
- Pre-rendered raster or thin vector tiles, served via CDN.
- Tile key =
(z, x, y). Higher z = closer zoom; tile count quadruples per level.
Routing#
- Road network as a graph; preprocessed with Contraction Hierarchies for fast queries.
- Online A* with edge-weight =
f(distance, current_speed, predicted_speed). - For long routes: hierarchy of "important" edges (highways pre-computed).
ETA model#
- Inputs: distance, speed limits, live traffic, weather, historical patterns, time of day.
- ML regressor; updated minutely.
Live traffic#
- GPS probes from millions of phones (privacy-aggregated).
- Map-match probes to road segments; compute speed.
- Detect incidents (cluster of slowdowns).
Glossary & fundamentals#
Concepts referenced in this design. Each row links to its canonical page; the tag column shows whether it is a high-level (HLD) or low-level (LLD) concept.
| Tag | Concept | What it is | Page |
|---|---|---|---|
HLD |
CDN | edge caching for static assets | cdn |
HLD |
Geo indexing | Geohash, Quadtree, S2, H3, R-tree | geo-indexing |