Once the user chooses a location, it's time for the routing engine to plot the fastest and most direct route to the destination. This requires a very sophisticated algorithm that can juggle many variables at once: types of roads (one-lane vs. highway), speed limits, stop lights, turns, ...