Wednesday, June 1, 2016

Transit routing starting to show some life-signs

Since last time, Andreas Nilsson produced some awesome mockups of public transit routing.


So, I ofcourse coudn't resist jumping on these awesome mockups and start implement it.

Right now it's at the point where it can render the ”overview list” of itineraries when performing a search. You can now also select a later departure time (or arrival time, for cases where that makes sense).

After performing a search, something like this can show up:


The route labels (line numbers) are still a bit rough, they should have some rounded corner and spacing, also the text size should probably be slightly smaller. I think the rounded corners and padding should be possible to achieve using a GtkLabel and a custom CSS style (and not having to implement a custom widget inheriting GtkDrawingArea and implement custom drawing using Cairo).
If the transit data feed gives back route color information, this is used here as well (unfortunatly the Swedish data doesn't currently include this). The colors in the screenshot above are fallbacks I put in (which might be adjusted later on).

STIB in Brussels, Belgium does however:


Currently the code is just using whatever colors would come with the data. These colors should probably be checked for good contrast (there's algorithms published by the W3C that we should be able to use for this), and bail out to a good default if the data is clearly less-than-optimal. Also, in case there's only a background color supplied, it should be possible to automagically compute a suitable text color.

Also, as you can see in the screenshots are the new nice icons Andreas made for the various transit modes.

For a more “exotic“ example:


Here you can see an itinerary with Portland's ”Aerial Tram” gondola lift. Also, as you can see here, the route labels gets pretty long (and ”shifts out” the routing side panel), on the TODO is deducing some more compact route labels for the overview view (i.e. using the agency name if it's shorter, or just cut it off and ellipsize). Another interesting point in this screenshot (which was taken just after the previous one) is that the times shown are in the local time zone of the area in question.


Here the departure time was set at approximatly the same time as the local time here when I took the screenshots, which then would give you a trip at that time (21:50) in Portland's timezone (and as can be seen, the gondola lift seems to have ended service for the day).

Oh, and another thing. I added an option to override the (for now hardcoded to using localhost) URL of the OpenTripPlanner instance. This could be used if you know of some publicly available server, or would like to run your own to test with on another machine (or in a VM).

Next up I will take a look at those label issues mentioned, and then move on to implement the “show a specific itinerary view” a.k.a. ”dive into a route” from the mockups.

And one last thing, the route being rendered in the map view is still hardcoded to the first itinerary in result list, this should ofcourse later on be changed so that it changes when you view the individual itineraries in detail.

No comments:

Post a Comment