setSelection(id) {
        const me = this,
            selection = helpers.removePrefix(id),
            station = me.stations.get(selection);

        if (station) {
            me.trackObject(me.stationGroupLookup.get(station.group));
            delete me.initialSelection;
        } else if (!selection.match(/NRT|HND/)) {
            if (me.trainLoaded) {
                let activeTrain;

                for (const id of me.timetables.getConnectingTrainIds(selection)) {
                    if ((activeTrain = me.activeTrainLookup.get(id))) {
                        break;
                    }
                }
                if (activeTrain) {
                    if (activeTrain.cars[0]) {
                        me.trackObject(activeTrain.cars[0]);
                    } else {
                        me.selection = activeTrain.id;
                    }
                } else {
                    helpers.showNotification(me.container, me.dict['train-terminated']);
                }
                delete me.initialSelection;
            } else {
                me.initialSelection = selection;
            }
        } else {
            if (me.flightLoaded) {
                const activeFlight = me.activeFlightLookup.get(selection);

                if (activeFlight) {
                    if (activeFlight.aircraft) {
                        me.trackObject(activeFlight.aircraft);
                    } else {
                        me.selection = activeFlight.id;
                    }
                } else {
                    helpers.showNotification(me.container, me.dict['flight-terminated']);
                }
                delete me.initialSelection;
            } else {
                me.initialSelection = selection;
            }
        }

        return me;
    }
Sets the ID of the train or flight you want to track, or the station to select.
@param {string} id - ID of the train or flight to be tracked, or the station to
    be selected
@returns {Map} Returns itself to allow for method chaining