Transit Routing
Transit Routes are routes calculated by CoreRouter
with the RouteOptions
transport mode set to PUBLIC_TRANSPORT
. With the transit routing feature you can calculate transit routes using known online timetable information.
-
RouteOptions.TransportMode.PUBLIC_TRANSPORT
is supported since HERE SDK v3.4. - To use this feature, your application must include the Gson library (release 2.2.4 or a compatible version) on its class path.
Before displaying transit routing you should set the map scheme to include transit so that the MapRoute
showed the color of the transit lines.
// sets the map scheme to include transit
map.setMapScheme(Map.Scheme.NORMAL_DAY_TRANSIT);
The following is an example of a transit route using CoreRouter
:
...
CoreRouter router = new CoreRouter();
// Select routing options
RoutePlan routePlan = new RoutePlan();
RouteOptions routeOptions = new RouteOptions();
routeOptions.setTransportMode(RouteOptions.TransportMode.PUBLIC_TRANSPORT);
routeOptions.setRouteType(RouteOptions.Type.FASTEST);
routePlan.setRouteOptions(routeOptions);
// Select Waypoints for your routes
routePlan.addWaypoint(new RouteWaypoint(new GeoCoordinate(49.1966286, -123.0053635)));
routePlan.addWaypoint(new RouteWaypoint(new GeoCoordinate(49.1947289, -123.1762924)));
router.calculateRoute(routePlan, new RouterListener());
...
private final class RouterListener implements CoreRouter.Listener {
// Method defined in Listener
public void onProgress(int percentage) {
// Display a message indicating calculation progress
}
// Method defined in Listener
public void onCalculateRouteFinished(List<RouteResult> routeResult, RoutingError error) {
// If the route was calculated successfully
if (error == RoutingError.NONE) {
// Render the route on the map
mapRoute = new MapRoute(routeResult.get(0).getRoute());
map.addMapObject(mapRoute);
// Get the bounding box containing the route and zoom in (no animation)
GeoBoundingBox gbb = routeResult.get(0).getRoute().getBoundingBox();
map.zoomTo(gbb, Map.Animation.NONE, Map.MOVE_PRESERVE_ORIENTATION);
}
else {
// Display a message indicating route calculation failure
}
}
}

The TransitRouteElement Class
Transit route elements, which are route element objects specific to public transit, can be retrieved from getTransitElement()
method in the RouteElement
class.
Online Timetables
By default transit routes and times are calculated according to static estimations of each leg of the trip. However, it is possible for HERE SDK to query the online timetable data that is available from municipalities. This type of transit routing can be performed automatically without additional coding effort but the following conditions must be fulfilled:
- Your application must have an active data connection and
CoreRouter
must be set toConnectivity.DEFAULT
orConnectivity.ONLINE
- The route must be between two endpoints — an origin and a destination. Multiple endpoints are not supported
- You are required to display the source attribution retrieved through
Route.getTransitRouteSourceAttribution()
method somewhere near the route results
This type of calculation only returns a maximum of ten route results even if the limit set in RouteOptions.setRouteCount(int)
exceeds it.
-
setTransitMinimumChangeTime(int)
-
setTransitWalkTimeMultiplier(int)
setTransitMaximumChanges(int)
option is supported in the primary route result but the maximum number of changes is capped at 10.