Design of Google Maps

High-level design

Let’s start with the high-level design of a map system. We split the discussion into two sections:

  1. The components we’ll need in our design.
  2. The workflow that interconnects these components.

Components

We’ll use the following components in our design:

  • Location finder: The location finder is a service used to find the user’s current location and show it on the map since we can’t possibly personally remember the latitude and longitude for every place in the world.
  • Route finder: The route finder service is used to find the paths between two locations or points. It shows the path on the map to users, who are new to a place and needs help with navigation.
  • Navigator: Suggesting a route through the route finder is not enough. A user may deviate from the optimal path. In that case, a navigator service is used. This service keeps track of users’ journeys and sends updated directions and notifications to the users as soon as they deviate from the suggested route.
  • GPS/Wi-Fi/Cellular technology: These are the technologies that we used to find the user’s ground position.
  • Distributed search: For converting place names to latitude/longitude values, we need a conversion system behind the source and destination fields. A distributed search maintains an index consisting of places names and their mapping to latitude and longitude. User’s entered keywordsSee Distributed Search for details. are searched using this service to find a location on the map.
...