Case Studies/Search & Discovery

Google Maps

Real-time navigation and geospatial search for billions of users

mapsgeospatialnavigationreal-timeroutingsearch

Case study boundary

Use this as a learning model.

This page explains architectural patterns and constraints inspired by Google Maps. It should not be read as the exact private production architecture or as a one-size-fits-all recommendation.

Evidence

Public info + inference

Learn first

Concepts behind this architecture

Overview

Google Maps is the world’s most used mapping and navigation service, serving 1B+ monthly active users with real-time directions, place search, street view, and traffic information. Its architecture combines massive precomputed graph data (road networks, transit schedules), real-time sensor data (traffic from billions of Android phones), geospatial indexing for point-of-interest search, and a tile-based rendering system for map display. The system processes billions of routing requests daily while maintaining a continuously updated model of the world’s roads and places.

Scale

1B+

Monthly active users

220+

Countries covered

1B+ km of roads

Road data

250M+

Places in database

Requirements

Functional

  • Map rendering with vector tiles at multiple zoom levels
  • Turn-by-turn navigation for driving, walking, cycling, transit
  • Place search and discovery
  • Real-time traffic and ETA updates
  • Street View imagery
  • Offline maps for areas without connectivity
  • Location sharing and timeline

Non-Functional

  • Route computation in <200ms for most queries
  • Real-time traffic updates with <2 minute freshness
  • Map tile delivery in <100ms from edge
  • Global coverage including offline areas
  • Accuracy — route ETAs within 5% of actual
  • Battery-efficient continuous location tracking

High-Level Architecture

Loading diagram...
Google Maps — High-level system architecture

Key Components

Tile Renderer

Generates vector map tiles at 20+ zoom levels. Tiles are pre-rendered for popular areas and generated on-demand for less trafficked regions. Uses Google’s S2 geometry library for spatial partitioning. Tiles are served from edge CDN with aggressive caching.

Routing Engine

Computes optimal routes using a modified Contraction Hierarchies algorithm on a preprocessed road graph. Considers real-time traffic, road restrictions, tolls, and user preferences. Supports driving, walking, cycling, and transit with different graph weights.

Traffic Service

Aggregates anonymized location data from billions of Android phones and Waze users to compute real-time traffic speeds on every road segment. Updates traffic estimates every 1-2 minutes. Feeds into routing for dynamic ETA calculation.

Places Service

Manages the database of 250M+ places (businesses, landmarks, addresses). Handles place search, autocomplete, details, and reviews. Uses a combination of geospatial indexing (S2 cells) and text search for queries like “coffee near me”.

Geocoding Service

Converts between human-readable addresses and geographic coordinates (lat/lng). Uses a combination of address parsing, interpolation along road segments, and building footprint matching.

Street View Service

Serves panoramic street-level imagery captured by camera cars, trekkers, and user contributions. Imagery is stored as tiled panoramas with depth maps, enabling smooth navigation between capture points.

Data Model

Loading diagram...
Google Maps — Entity relationship diagram

Routing with Contraction Hierarchies

Google Maps computes billions of routes daily. Running Dijkstra’s algorithm on a raw road graph with billions of edges would be far too slow. Instead, it uses Contraction Hierarchies (CH).

Preprocessing: The road graph is contracted offline by iteratively removing less important nodes and adding shortcut edges. A node on a residential street is contracted early, adding a shortcut between its neighbors. Major highway intersections are contracted last. This creates a hierarchical structure.

Query: At query time, a bidirectional search runs from origin and destination simultaneously, only exploring edges that go “up” the hierarchy. This drastically reduces the search space — a continental route that would explore millions of nodes with Dijkstra’s touches only thousands with CH.

Real-time traffic: The edge weights in the CH are updated continuously based on traffic data. When traffic changes, only the affected shortcuts need recomputation. Google uses a variant called Customizable Contraction Hierarchies that separates the topology (which shortcuts exist) from the metrics (edge weights), allowing weight updates without full reprocessing.

Multi-modal: For transit routing, a separate algorithm (RAPTOR or CSA) handles schedule-based queries, combined with walking segments from the road graph.

Loading diagram...
Routing with Contraction Hierarchies

S2 Geometry and Spatial Indexing

Google Maps uses the S2 Geometry Library for all geospatial indexing and partitioning.

S2 cells: S2 projects the Earth’s surface onto the faces of a cube, then subdivides each face into a quadtree of cells. Each cell has a unique 64-bit ID. Cells at level 30 are ~1 cm², while level 12 cells are ~3.3 km² — covering the range from global to street-level precision.

Spatial indexing: Every place, road segment, and map feature is assigned to one or more S2 cells. Searching for “restaurants near me” becomes a cell-range query — find all S2 cells within a radius, then look up all places in those cells.

Map tiling: Map tiles are aligned to S2 cell boundaries. This means tile rendering, spatial queries, and data partitioning all use the same coordinate system, simplifying the architecture.

Coverage unions: S2 can represent arbitrary regions as a union of cells at different levels. This is used for features like “notify me when this area has less traffic” or defining offline map download regions.

Real-time Traffic from Crowdsourced Data

Google Maps’ traffic data comes primarily from anonymized location signals from Android phones and Waze users.

Data collection: When a user has location services enabled, their phone periodically reports anonymized speed and location data. This creates billions of “probe” data points per day across the world’s road network.

Aggregation: Probe data is aggregated per road segment in near real-time (<2 minutes). The system computes the median speed on each segment, compares it to the free-flow speed, and classifies congestion (green/yellow/red).

Privacy: Individual probe data is never stored with user identity. Data is aggregated with differential privacy guarantees — a road segment must have a minimum number of probes before traffic is reported, and k-anonymity ensures no individual’s route is reconstructable.

Prediction: Beyond current traffic, Google Maps predicts future traffic using historical patterns (e.g., rush hour on this highway every weekday) combined with real-time trends. The ETA displayed for a route accounts for predicted traffic conditions along the entire path, not just current conditions.

Incident detection: Sudden speed drops on a segment trigger automatic incident detection. Combined with Waze user reports, this feeds into route recalculation for affected users.

Architectural Tradeoffs

Precomputed Contraction Hierarchies over online Dijkstra

Pros

  • +Millisecond query times for continental routes
  • +Predictable latency regardless of distance
  • +Allows billions of daily queries

Cons

  • −Hours of preprocessing when graph changes
  • −Large memory footprint for shortcut edges
  • −Complex to update with real-time traffic

Vector tiles over raster tiles

Pros

  • +Smaller tile sizes — faster loading
  • +Client-side styling and rotation
  • +Smooth zoom transitions

Cons

  • −Higher client-side rendering cost
  • −More complex client implementation
  • −Requires GPU-capable client devices

Crowdsourced traffic over sensor-based

Pros

  • +Global coverage without physical infrastructure
  • +Real-time updates from billions of devices
  • +Automatically covers new roads

Cons

  • −Dependent on smartphone penetration
  • −Privacy concerns with location tracking
  • −Less accurate on low-traffic roads

Learn From Google Maps

Copy a learning context prompt for an AI assistant. It keeps assumptions visible and asks for tradeoffs, cost drivers, failure modes, and what to measure before adding complexity.

Explore More Case Studies