The ServiceStopMapFragment displays a particular scheduled service's route.

            android:layout_height="match_parent" />

To tell it which route to display, call the setService function with a TimetableEntry, or if you are using a TimetableFragment, you can give the map to it and it will automatically display routes when the entries are clicked.



The TimetableFragment lists all scheduled services for a particular stop. If you pass it a ServiceStopMapFragment, it will automatically call setService when the user clicks on a particular service. You can also do that manually from a OnTimetableEntrySelectedListener.

Like a few of the fragments in the Trip Results, you can display your own custom buttons.

    var timetableFragment = com.skedgo.tripkit.ui.timetables.TimetableFragment.Builder()
            .withButton("route", R.layout.route_button)
            .withButton("favorite", R.layout.bookmark_button)

When the user clicks a particular timetable entry, the OnTimetableEntrySelectedListener will be called.

    // If we add our ServiceStopMapFragment as a listener, it will automatically display a selected timetable entry.
    timetableFragment.addOnTimetableEntrySelectedListener { timetableEntry, scheduledStop, minStartTime ->
        // Perhaps you'd like to show the service detail now?

And when they click on any of the TripKitButtons that you provided, the OnTripKitButtonClickListener will be called.

    timetableFragment.setOnTripButtonClickListener { id, scheduledStop ->
        if (id == "route") {
            Toast.makeText(activity, "Will route to ${scheduledStop.displayAddress}", Toast.LENGTH_SHORT).show()
        } else if (id == "favorite") {
            Toast.makeText(activity, "Will favorite ${scheduledStop.nameOrApproximateAddress}", Toast.LENGTH_SHORT).show()



To show the details about a particular service, you can use the ServiceDetailFragment which shows the entire scheduled service line. If you pass it a ServiceStopMapFragment, it will automatically have the map move and zoom in on the scheduled stop that a user clicks on.

You'll need to pass it a TimetableEntry and a ScheduledStop.

    var fragment = ServiceDetailFragment.Builder()

You can then add OnScheduledStopClickListeners to handle users clicking on individual stops.

            fragment.addOnScheduledStopClickListener {
                // You could collapse a bottom sheet, for example.