Maps: Route Control for Drivers

A case study exploring how drivers can personalize route recommendations without increasing navigation complexity.

Role

Sole designer; research, interaction design, AI-assisted prototype build.

Duration

One week intensive

Stack

  • FigJam for research and ideation.

  • Cursor to build and iterate.

  • Material Design 3 via Google’s Material Web components.

  • React and Vite, Leaflet for map rendering, OSRM for routing, OpenStreetMap/Nominatim for places and geocoding. Routing and place data are real; traffic is simulated.

What Drivers Actually Want

Two independent sources grounded the problem: an existing Reddit survey and discussion thread (44 responses, run by another community member and analyzed as secondary research), and an original review of roughly 400 Google Play reviews across phone, tablet, and car.

44

Responses from an existing community survey, analyzed as secondary research

48%

Reported wrong directions or unsafe routes

56%

Rated frustration 4–5 out of 5

~400

Google Play reviews analyzed across phone, tablet, and car

Reviewers independently described Maps changing their route mid-drive without warning. Several used the language of consent, unprompted, across a period of months.

Affinity Map

Affinity mapping reduced 16 research categories to 8 core insights; the 3 below connect directly to the capabilities built.

Competitive Audit

Assessed whether Google Maps, Waze, or Apple Maps had already addressed this problem.

Lets a user block a specific road

Confirms before rerouting

Google Maps

No, category-level only

Time-limited only, a Reject button appears with a brief countdown; the reroute applies automatically if not rejected in time

Waze

No, long-requested, unbuilt

No, reports go to human review

Apple Maps

No, manual workaround only

No

No major navigation app allows a driver to block a specific road. Google Maps comes closest on rerouting confirmation, but defaults to accepting the change unless the driver rejects it within a few seconds, a time-pressured opt-out, not an unhurried, equal-weight accept/reject choice. Both gaps defined the design brief.

Research Insights

INSIGHT 1

Users trust their own local knowledge and want to influence routing when Maps doesn't match it.

INSIGHT 2

Users lose confidence when Maps prioritizes speed over safety.

INSIGHT 3

Users need timely, visible guidance; unclear cues increase cognitive load while driving.

Maps Decides, Drivers Comply

Problem statement

Drivers need greater control over route recommendations. Google Maps offers limited ways to personalize routes, which reduces confidence whenever a recommendation conflicts with local knowledge or the situation at hand.

How might we help drivers personalize route recommendations without increasing the complexity of navigation?

One System, Five Capabilities

Five candidate concepts were evaluated on user value and ease of use. All five were selected and combined into a single system, since route creation, selection, saving, and trust function as one continuous flow for the driver.

Concept

Capabilities

Route Creation

Create your own route, pin/reorder stops, snap to roads, drag route, prefer this road

Route Selection

More route options, ranked alternatives, compare routes, explain recommendations

Route Preferences

Avoid/block roads, never use road, road-quality preference, scenic route

Route Persistence

Save custom routes, preserve custom routes, remember preferences, named commute routes

Navigation Control

Route lock, ask before rerouting, reject reroute, restore planned route, audio cue

Each concept was broken into specific, named capabilities.

Initial sketches included the reroute confirmation screen, Accept/Reject buttons and a speaker icon, exactly as later built. Road rules were sketched as a three-state system: Prefer, Avoid, Block. Voice command syntax was specified at this stage: "Avoid [road name]," "Prefer [road name]," "Block [road name]," followed by system confirmation. The third state shipped as Never use this rule, the same concept under a revised label. Live-navigation voice control for road rules originated in this sketch; Iteration 2 testing confirmed it was needed earlier than the build schedule anticipated.

The proposed flow introduces two decision points absent from the current flow: customization before route selection, and the ability to accept or decline changes once navigation has started. Each capability has a corresponding flow.

Design Principles

1. Confirm before acting, no route change without explicit accept/reject
2. Control at the road level, not the category level, Prefer / Avoid / Never use
3. Match Google’s existing patterns before inventing new ones
4. Persistence means the exact path, not just the destination
5. Confirmation must be fast enough to act on while driving

Building Route Control in Cursor

Developed in two phases using Cursor, deployed to GitHub Pages. Desktop Google Maps allows dragging the route line to reshape it; mobile doesn't. The edit flow closes that specific gap. Material Design 3 is implemented directly, using Google's Material Design component repository.

Tech stack

Material Design 3

React

Nominatim

Vite

OSRM

Leaflet

Build phase roadmap

Phase 1: Core Editor

Drag-to-reshape

Snap-to-road

Undo

Route comparison chip

Phase 2: Full System

Recommendations, selection

Preferences, road rules

Persistence, navigation control

AI route assistant

Multi-modal tabs

Engineering constraints

Routing engine limit

OSRM caps route alternatives at 3 and rejects hard road exclusions.

Hard filter rejected

Soft-ranking system

Touch event failure

Leaflet dispatches mouse events only, touch drags didn't register.

Map panned instead

Pointer handlers

I scoped out

Avoiding high-crime areas

No external safety data available

Live construction & closure awareness

Needs real-time data beyond OSRM

Time-of-day "escape routes"

Deferred as a future personalization layer

Voice staging sequence

Text-based assistant

Sketch-stage parsing logic

Live voice input

Added after Iteration 2

"Avoid [road]" / "Prefer [road]" / "Block [road]" → confirms

The features

Drag-drop route editing

Route saving

Preferring, avoiding or blocking a road before driving

Reroute audial consent (sound on)

Prefer, avoid or block a road through audial commands while driving (sound on)

Preferences: Scenic roads, fewest turns, & good quality roads

Always suggests 5 routes (tick icon indicates good quality road)

Renaming saved routes

Note on visual fidelity: Not pixel-identical to the live Google Maps app. Interactions and layout follow Google Maps' patterns; used Material Design 3 component repository. Interaction logic was prioritized over pixel parity.

The prototype

The embedded frame might not support all features.

The embedded frame might not support all features.

Three Rounds, Thirteen Drivers

Iteration 1 (5 participants)

4 of 5 completed tasks with help; 1 completed independently

Full Findings
Incorporated After Iteration 1
  • Removed the separate edit mode for route editing

  • Added a clearer messaging layout introducing route editing

  • Fixed reported bugs

  • Added the ability to rename a saved route

  • Removed the AI text assistant

Iteration 1 (5 participants)

4 of 5 completed tasks with help; 1 completed independently

Full Findings
Incorporated After Iteration 1
  • Removed the separate edit mode for route editing

  • Added a clearer messaging layout introducing route editing

  • Fixed reported bugs

  • Added the ability to rename a saved route

  • Removed the AI text assistant

Iteration 2 (5 participants)

All 5 completed their tasks; 2 required help on 1 task each

Full Findings
Incorporated After Iteration 2
  • Voice commands to avoid or prefer roads during live navigation

  • An onboarding message introducing the new features

  • A road-quality icon shown alongside route time chips

  • Voice-based confirmation for the reroute message

Iteration 2 (5 participants)

All 5 completed their tasks; 2 required help on 1 task each

Full Findings
Incorporated After Iteration 2
  • Voice commands to avoid or prefer roads during live navigation

  • An onboarding message introducing the new features

  • A road-quality icon shown alongside route time chips

  • Voice-based confirmation for the reroute message

Iteration 3 (3 participants)

100% task completion across the full feature set, including voice and onboarding under first-time use.

What Testing Changed

Assumption

Outcome

Drag is discoverable without onboarding

Disproven, onboarding added

Text confirmation is sufficient before rerouting

Refined, moved to voice for speed

Avoid vs. Never use require separate builds

Confirmed as built, 3 of 3 Round 3 participants explained the distinction correctly, unprompted

From Assumption to Evidence

3

Testing rounds

13

Participants total

2

Major design changes driven directly by testing evidence

Prototype vs. Production

This Prototype

Production Google Maps

Places / search

OpenStreetMap + Nominatim

Google Places

Routing

OSRM

Google Navigation SDK

Traffic / live conditions

Simulated

Google Maps Platform (real-time)

Limitations
  1. Small, largely personally-connected testing sample.

  1. Qualitative testing; time and ease metrics not yet captured.

  1. Accessibility audit (contrast, screen reader, ARIA) not yet run.

Next Steps
  1. Broader unmoderated validation.

  1. Quantified time and ease metrics, using the existing tracking sheet.

  1. Accessibility audit.

  1. Defined success metrics (e.g. reduction in manual mid-route correction).

Reflections
  1. Testing validated important design decisions and also found problems. It confirmed that Avoid/Never feature worked as intended in Round 3 and revealed the drag mode issue in Iteration 1.

  1. Technical limits affected the design. OSRM's exclusion limit led to a soft ranking approach instead of giving users controls that the system could not fully support.

  1. Building with AI required clear instructions. I had to turn feedback like "the drag feels wrong" into specific, testable changes.

  1. Working alone in one week meant some decisions, such as the original edit mode, were not tested until Iteration 1. With more time, I would get feedback from another person before building based on an assumption.

  1. AI-based prototyping made it faster to build and test real interactions. Features like route dragging were easier to implement in Cursor than to simulate in Figma.

Thank you for reading! Interested in my approach?
Thank you for reading! Interested in my approach?
Thank you for reading!
Interested in my approach?

Let's connect and create impact together!

Let's connect and create impact together!

Let's connect and create impact together!

Let's connect and create impact together!