Many have spoken of adding GPS location on screen for the driver and passenger, which is great.
But from there, you can't really use the simple (or moderetely complex) path finding algorithms mostly because of traffic which can be caused by many things.
We could get around that using a central service which computes suggestions for all new fares. The driver or passenger inputs a destination, the onboard computer makes a request to the service which tracks real-time traffic and produces a suggested route for the driver.
It should be possible to optimize the routes by redistributing heavy traffic on alternative routes. This could happen before (some extrapolation required) or as the jam starts. Or by focusing on reducing know/dynamic bottlenecks.
Not much to do about bridges though... but maybe it could have a positive impact on average transit times. Then again, some or all of the drivers could already be doing it on some level for all i know!