You are here
Home > Uncategorized > The Changing Face of Commute Service

The Changing Face of Commute Service

Since Golden Gate Transit is about to retire the Orion V–a workhorse of the transit agency serving the North Bay–I have personally ridden two AC Transit low-floored Gillig Advantage buses in a commuter configuration to observe how the ride will change once Golden Gate switches to a mixture of low- and high-floor fleet.
For the past decade, I’ve been accustomed to riding Golden Gate Transit’s high-floored buses for commute routes, especially between my place in Novato and San Francisco. And I must say, the features on board Golden Gate’s Orion V high-floored transit buses are comparable to what AC Transit has with the Gillig Advantage 40-footer low-floor bus.

#element-bc0b1a96-f1ce-4f36-8d61-14a60f83ee28 .simple-table-wrapper {
padding: 20px 0;
}
#element-bc0b1a96-f1ce-4f36-8d61-14a60f83ee28 .simple-table {
width: 100%;
border: 1px solid #C9CDCF;
border-spacing: 0;
}
#element-bc0b1a96-f1ce-4f36-8d61-14a60f83ee28 .simple-table td.cell {
border-right: 1px solid #C9CDCF;
border-bottom: 1px solid #C9CDCF;
word-break: break-word;
background-color: #FFFFFF;
width: 50%;
}
#element-bc0b1a96-f1ce-4f36-8d61-14a60f83ee28 .simple-table td.cell .paragraph {
width: 90%;
margin: 0 5%;
padding-bottom: 10px;
padding-top: 10px;
text-align: center;
}
#element-bc0b1a96-f1ce-4f36-8d61-14a60f83ee28 .simple-table.style-top tr:first-child td,
#element-bc0b1a96-f1ce-4f36-8d61-14a60f83ee28 .simple-table.style-side td:first-of-type {
background-color: #F8F8F8;
}
#element-bc0b1a96-f1ce-4f36-8d61-14a60f83ee28 .simple-table.style-top tr:first-child td .paragraph,
#element-bc0b1a96-f1ce-4f36-8d61-14a60f83ee28 .simple-table.style-side td:first-of-type .paragraph {
font-weight: 700;
}
#element-bc0b1a96-f1ce-4f36-8d61-14a60f83ee28 .simple-table tr:last-child td {
border-bottom: none;
}
#element-bc0b1a96-f1ce-4f36-8d61-14a60f83ee28 .simple-table td:last-of-type {
border-right: none;
}
#element-bc0b1a96-f1ce-4f36-8d61-14a60f83ee28 .simple-table .empty-content-area-element {
padding-left: 0px !important;
}

Golden Gate Transit Orion V
AC Transit Gillig Advantage LF40
Exterior:

  • Can carry up to three bikes
  • Wheelchair lift found at back door, takes up to 5 minutes to load and unload a wheelchair

Interior:

  • Can seat 41 people, with up to 10 standees on intercounty routes
  • All forward-facing padded seats, with retractable arm rests; a total of six seats towards the rear door flip up to allow up to two wheelchairs
  • Two Clipper card machines, one at each door
  • Overhead baggage racks
  • Reading lights
  • Overhead air vents
  • Red stop buttons and yellow stop strips
  • WiFi on board
  • Most seats have seat reclining knobs on them
Exterior:

  • ​Can carry up to three bikes
  • Wheelchair ramp found at front door, takes up to 3 minutes to load and unload a wheelchair

Interior:

  • Can seat 36 people, with unlimited standees on Transbay routes
  • Seats toward the front face one another (total of 7 seats), and these flip up to allow 2 wheelchair passengers; the rest are forward-facing
  • One Clipper card machine, at the front door
  • Overhead baggage racks
  • Reading lights
  • Overhead air vents
  • Stop strings on either side of the bus
  • WiFi on board
  • Most seats have seat reclining knobs on them

function setupElement922628853690225258() {
var elementRequire = require || _wAMD.require;
elementRequire([
‘jquery’,
‘underscore’,
‘backbone’,
‘util/platform/elements/PlatformElement’,
‘util/platform/elements/PlatformElementSettings’
], function(
$,
_,
Backbone,
PlatformElement,
PlatformElementSettings
) {
var dependencies = null || [];
var platform_element_id = “702688850553606843-1.4.1”;
if (typeof _W.loadedPlatformDependencies === ‘undefined’) {
_W.loadedPlatformDependencies = [];
}
if (typeof _W.platformElements === ‘undefined’) {
_W.platformElements = [];
}
if (typeof _W.platformElements[platform_element_id] === ‘undefined’) {
_W.platformElements[platform_element_id] = {};
_W.platformElements[platform_element_id].deferredObject = new $.Deferred();
_W.platformElements[platform_element_id].deferredPromise = _W.platformElements[platform_element_id].deferredObject.promise();
}
if(_.intersection(_W.loadedPlatformDependencies, dependencies).length !== dependencies.length){
_.reduce(dependencies, function(promise, nextScript){
_W.loadedPlatformDependencies.push(nextScript);
return promise.then(function(){
return $.getScript(nextScript);
});
}, $().promise()).then(function(){
_W.platformElements[platform_element_id].deferredObject.resolve();
});
}
if (dependencies.length === 0){
_W.platformElements[platform_element_id].deferredObject.resolve();
}
_W.platformElements[platform_element_id].deferredPromise.done(function(){
var _ElementDefinition = /**
* This is required for element rendering to be possible
* @type {PlatformElement}
*/
(function() {
var SimpleTable = PlatformElement.extend({
initialize: function() {
this.setSizes();
},
setSizes: function() {
var sizes = this.settings.get(‘tableSizes’);
// if the # of columns isn’t the size of the array of lengths, ignore it.
if (sizes && sizes != “default” && this.settings.get(‘columns’) == sizes.length) {
var columns = this.$(‘tr’).each(function(index, value) {
var cells = $(value).find(‘td’).each(function(index2, value2) {
$(value2).css(‘width’, sizes[index2] + ‘%’);
});
});
}
}
});
return SimpleTable;
})();;
if (typeof _ElementDefinition == ‘undefined’ || typeof _ElementDefinition == ‘null’) {
var _ElementDefinition = PlatformElement.extend({});
}
var _Element = _ElementDefinition.extend({
initialize: function() {
// we still want to call the initialize function defined by the developer
// however, we don’t want to call it until placeholders have been replaced
this.placeholderInterval = setInterval(function() {
// so use setInterval to check for placeholders.
if (this.$(‘.platform-element-child-placeholder’).length == 0) {
clearInterval(this.placeholderInterval);
this.constructor.__super__.initialize.apply(this);
}
}.bind(this), 100);
}
});
_Element.prototype.settings = new PlatformElementSettings({“columns_each”:[{“columns_index”:0},{“columns_index”:1}],”rows_each”:[{“rows_index”:0},{“rows_index”:1}],”columns”:2,”rows”:2,”style”:”top”,”alignment”:”center”,”titleColor”:”#F8F8F8″,”backgroundColor”:”#FFFFFF”,”borderColor”:”#C9CDCF”,”tableSizes”:”default”});
_Element.prototype.settings.page_element_id = “922628853690225258”;
_Element.prototype.element_id = “bc0b1a96-f1ce-4f36-8d61-14a60f83ee28”;
_Element.prototype.user_id = “3466466”;
_Element.prototype.site_id = “484589221176252212”;
_Element.prototype.assets_path = “//marketplace.editmysite.com/elements/702688850553606843-1.4.1/assets/”;
new _Element({
el: ‘#element-bc0b1a96-f1ce-4f36-8d61-14a60f83ee28’
});
});
});
}
if (typeof document.documentElement.appReady == ‘undefined’) {
document.documentElement.appReady = 0;
}
if (document.documentElement.appReady || (window.inEditor && window.inEditor())) {
setupElement922628853690225258();
} else if (document.createEvent && document.addEventListener) {
document.addEventListener(‘appReady’, setupElement922628853690225258, false);
} else {
document.documentElement.attachEvent(‘onpropertychange’, function(event){
if (event.propertyName == ‘appReady’) {
setupElement922628853690225258();
}
});
}

And below are some of the photos I’ve taken of both buses.

#element-d7329e09-abdf-4be1-82bc-4c8ec820d404 .border-box {
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
-ms-box-sizing: border-box;
box-sizing: border-box;
}
#element-d7329e09-abdf-4be1-82bc-4c8ec820d404 .tabbed-box {
position: relative;
margin: 20px 0;
}
#element-d7329e09-abdf-4be1-82bc-4c8ec820d404 .tabbed-box-tab-group {
font-size: 0;
margin: 0;
padding: 0;
float: left;
list-style: none;
height: 60px;
width: 100%;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
-ms-box-sizing: border-box;
box-sizing: border-box;
white-space: nowrap;
}
#element-d7329e09-abdf-4be1-82bc-4c8ec820d404 .tabbed-box-tab {
margin: 0;
cursor: pointer;
height: 60px;
display: inline-block;
min-width: 19%;
position: relative;
background-color: #F7F7F7;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
-ms-box-sizing: border-box;
box-sizing: border-box;
}
#element-d7329e09-abdf-4be1-82bc-4c8ec820d404 .tabbed-box-content-group {
clear: both;
float: left;
width: 100%;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
-ms-box-sizing: border-box;
box-sizing: border-box;
}
#element-d7329e09-abdf-4be1-82bc-4c8ec820d404 .tabbed-box-content {
padding: 40px 20px 40px 20px;
display: none;
}
#element-d7329e09-abdf-4be1-82bc-4c8ec820d404 .scrollArrow {
width: 25px;
background-color: white;
text-align: center;
position: absolute;
z-index: 3;
top: 0;
display: none;
cursor: pointer;
height: 60px;
line-height: 60px;
font-weight: bold;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
-ms-box-sizing: border-box;
box-sizing: border-box;
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
#element-d7329e09-abdf-4be1-82bc-4c8ec820d404 .scrollArrow.scrollArrow-left {
left: 0;
}
#element-d7329e09-abdf-4be1-82bc-4c8ec820d404 .scrollArrow.scrollArrow-right {
right: 0;
}
#element-d7329e09-abdf-4be1-82bc-4c8ec820d404 .tabbed-box.scrollable .tabbed-box-tab-group {
border-bottom: none;
overflow-x: hidden;
overflow-y: hidden;
}
#element-d7329e09-abdf-4be1-82bc-4c8ec820d404 .tabbed-box.scrollable .tabbed-box-bar:hover .scrollArrow.active {
display: block;
}
@media only screen and (min-device-width: 414px) and (max-device-width: 736px) and (-webkit-min-device-pixel-ratio: 3),only screen and (min-device-width: 375px) and (max-device-width: 667px) and (-webkit-min-device-pixel-ratio: 2),only screen and (min-device-width: 320px) and (max-device-width: 568px) and (-webkit-min-device-pixel-ratio: 2),only screen and (min-device-width: 320px) and (max-device-width: 480px) and (-webkit-min-device-pixel-ratio: 2),only screen and (max-width: 499px) {
#element-d7329e09-abdf-4be1-82bc-4c8ec820d404 .tabbed-box-tab-group {
overflow-x: scroll !important;
}
}
#element-d7329e09-abdf-4be1-82bc-4c8ec820d404 .standard .tabbed-box-tab-group {
border-left: 1px solid #CCCCCC;
border-bottom: 1px solid #CCCCCC;
}
#element-d7329e09-abdf-4be1-82bc-4c8ec820d404 .standard .tabbed-box-tab {
border: 1px solid #CCCCCC;
border-left: none;
}
#element-d7329e09-abdf-4be1-82bc-4c8ec820d404 .standard .tabbed-box-tab .paragraph {
color: #A8ABAC;
}
#element-d7329e09-abdf-4be1-82bc-4c8ec820d404 .standard .tabbed-box-tab.active {
border-bottom: 1px solid white;
background-color: white;
}
#element-d7329e09-abdf-4be1-82bc-4c8ec820d404 .standard .tabbed-box-content-group {
border: 1px solid #CCCCCC;
border-top: none;
}
#element-d7329e09-abdf-4be1-82bc-4c8ec820d404 .standard.scrollable .tabbed-box-tab-group {
border-right: 1px solid #CCCCCC;
}
#element-d7329e09-abdf-4be1-82bc-4c8ec820d404 .standard.scrollable .tabbed-box-tab-group .tabbed-box-tab:last-child {
border-right: none;
}
#element-d7329e09-abdf-4be1-82bc-4c8ec820d404 .standard.scrollable .scrollArrow-left {
border: 1px solid #CCCCCC;
}
#element-d7329e09-abdf-4be1-82bc-4c8ec820d404 .standard.scrollable .scrollArrow-right {
border: 1px solid #CCCCCC;
}
#element-d7329e09-abdf-4be1-82bc-4c8ec820d404 .line .tabbed-box-tab-group {
border: 1px solid #CCCCCC;
border-bottom: none;
}
#element-d7329e09-abdf-4be1-82bc-4c8ec820d404 .line .tabbed-box-tab {
border-bottom: 1px solid #CCCCCC;
}
#element-d7329e09-abdf-4be1-82bc-4c8ec820d404 .line .tabbed-box-tab .paragraph {
color: #BDC2C2;
}
#element-d7329e09-abdf-4be1-82bc-4c8ec820d404 .line .tabbed-box-tab.active {
border-bottom: 1px solid black;
background-color: white;
}
#element-d7329e09-abdf-4be1-82bc-4c8ec820d404 .line .tabbed-box-content-group {
border: 1px solid #CCCCCC;
}
#element-d7329e09-abdf-4be1-82bc-4c8ec820d404 .line.scrollable .tabbed-box-tab-group {
height: 61px;
}
#element-d7329e09-abdf-4be1-82bc-4c8ec820d404 .line.scrollable .tabbed-box-content-group {
border-top: none;
}
#element-d7329e09-abdf-4be1-82bc-4c8ec820d404 .line.scrollable .scrollArrow-left,
#element-d7329e09-abdf-4be1-82bc-4c8ec820d404 .line.scrollable .scrollArrow-right {
border: 1px solid #CCCCCC;
border-bottom: none;
border-top: none;
height: 61px;
}
#element-d7329e09-abdf-4be1-82bc-4c8ec820d404 .simple .tabbed-box-tab {
border-bottom: 1px solid #CCCCCC;
height: 61px;
}
#element-d7329e09-abdf-4be1-82bc-4c8ec820d404 .simple .tabbed-box-tab .paragraph {
color: #BDC2C2;
}
#element-d7329e09-abdf-4be1-82bc-4c8ec820d404 .simple .tabbed-box-tab.active {
border-bottom: 1px solid black;
background-color: white;
}
#element-d7329e09-abdf-4be1-82bc-4c8ec820d404 .simple .tabbed-box-content-group {
border-top: 1px solid #CCCCCC;
}
#element-d7329e09-abdf-4be1-82bc-4c8ec820d404 .simple .tabbed-box-content {
padding: 20px 0px 20px 0px;
}
#element-d7329e09-abdf-4be1-82bc-4c8ec820d404 .simple .scrollArrow-left {
border-right: 1px solid #CCCCCC;
}
#element-d7329e09-abdf-4be1-82bc-4c8ec820d404 .simple .scrollArrow-right {
border-left: 1px solid #CCCCCC;
}
#element-d7329e09-abdf-4be1-82bc-4c8ec820d404 .s3d-shadow {
-webkit-box-shadow: #f5f5f5;
-moz-box-shadow: #f5f5f5;
box-shadow: #f5f5f5;
}
#element-d7329e09-abdf-4be1-82bc-4c8ec820d404 .s3d-content-shadow {
-webkit-box-shadow: 0px 0px 30px 4px #f5f5f5;
-moz-box-shadow: 0px 0px 30px 4px #f5f5f5;
box-shadow: 0px 0px 30px 4px #f5f5f5;
}
#element-d7329e09-abdf-4be1-82bc-4c8ec820d404 .s3d .tabbed-box-tab .paragraph {
color: #A8ABAC;
background-color: #F7F7F7;
}
#element-d7329e09-abdf-4be1-82bc-4c8ec820d404 .s3d .tabbed-box-tab.active {
border-bottom: 1px solid white;
background-color: white;
-webkit-box-shadow: 0px -10px 31px -4px #f5f5f5, -12px -4px 40px -16px #f5f5f5, 12px -4px 40px -16px #f5f5f5;
-moz-box-shadow: 0px -10px 31px -4px #f5f5f5, -12px -4px 40px -16px #f5f5f5, 12px -4px 40px -16px #f5f5f5;
box-shadow: 0px -10px 31px -4px #f5f5f5, -12px -4px 40px -16px #f5f5f5, 12px -4px 40px -16px #f5f5f5;
}
#element-d7329e09-abdf-4be1-82bc-4c8ec820d404 .s3d .tabbed-box-tab.active .paragraph {
background-color: white;
}
#element-d7329e09-abdf-4be1-82bc-4c8ec820d404 .s3d .tabbed-box-content-group {
-webkit-box-shadow: 0px 0px 30px 4px #f5f5f5;
-moz-box-shadow: 0px 0px 30px 4px #f5f5f5;
box-shadow: 0px 0px 30px 4px #f5f5f5;
}
#element-d7329e09-abdf-4be1-82bc-4c8ec820d404 .tabbed-box-tab .paragraph {
padding: 0px;
line-height: 60px !important;
text-align: center !important;
font-weight: bold;
font-size: 16px !important;
margin: 0 20px;
}
#element-d7329e09-abdf-4be1-82bc-4c8ec820d404 .tabbed-box-content .paragraph {
padding: 0;
line-height: 30px;
}
#element-d7329e09-abdf-4be1-82bc-4c8ec820d404 .tabbed-box-tab:last-child .w-delete-outer {
display: none;
position: relative;
float: right;
}

  • Orion V
  • Gillig LF40
<
>

function setupElement985551547961567949() {
var elementRequire = require || _wAMD.require;
elementRequire([
‘jquery’,
‘underscore’,
‘backbone’,
‘util/platform/elements/PlatformElement’,
‘util/platform/elements/PlatformElementSettings’
], function(
$,
_,
Backbone,
PlatformElement,
PlatformElementSettings
) {
var dependencies = null || [];
var platform_element_id = “135397292802228534-1.3.2”;
if (typeof _W.loadedPlatformDependencies === ‘undefined’) {
_W.loadedPlatformDependencies = [];
}
if (typeof _W.platformElements === ‘undefined’) {
_W.platformElements = [];
}
if (typeof _W.platformElements[platform_element_id] === ‘undefined’) {
_W.platformElements[platform_element_id] = {};
_W.platformElements[platform_element_id].deferredObject = new $.Deferred();
_W.platformElements[platform_element_id].deferredPromise = _W.platformElements[platform_element_id].deferredObject.promise();
}
if(_.intersection(_W.loadedPlatformDependencies, dependencies).length !== dependencies.length){
_.reduce(dependencies, function(promise, nextScript){
_W.loadedPlatformDependencies.push(nextScript);
return promise.then(function(){
return $.getScript(nextScript);
});
}, $().promise()).then(function(){
_W.platformElements[platform_element_id].deferredObject.resolve();
});
}
if (dependencies.length === 0){
_W.platformElements[platform_element_id].deferredObject.resolve();
}
_W.platformElements[platform_element_id].deferredPromise.done(function(){
var _ElementDefinition = /**
* This is required for element rendering to be possible
* @type {PlatformElement}
*/
(function() {
var TabbedBox = PlatformElement.extend({
events: {
‘click .tabbed-box-tab’: ‘clickTab’,
// in case they type and that causes an overflow, we should determine scrollability here
‘keyup .tabbed-box-tab .paragraph’: ‘determineScrollability’,
‘mousedown .scrollArrow-left’: ‘scrollLeft’,
‘mousedown .scrollArrow-right’: ‘scrollRight’,
‘touchstart .scrollArrow-left’: ‘scrollLeft’,
‘touchstart .scrollArrow-right’: ‘scrollRight’
},
initialize: function() {
var view = this;
var tabs = this.$(‘.tabbed-box-tab’);
var content = this.$(‘.tabbed-box-content’);
// optimization
this.scrollArrowLeft = this.$(‘.scrollArrow-left’);
this.scrollArrowRight = this.$(‘.scrollArrow-right’);
this.scrollTabsBar = this.$(‘.tabbed-box-tab-group’);
// resize handler and mouseup handler
// since we want to be able to handle mouseup wherever the user releases (not just over the element)
// we set it here as a property of the window.
$(window).resize(function() {
this.determineScrollability();
}.bind(this)).on(‘mouseup touchend’, function() {
this.stopScrolling();
}.bind(this));
// since scroll events don’t propagate up, we have to bind it here as opposed to in the events object
this.$(‘.tabbed-box-tab-group’).scroll(function() {
this.determineHandlers();
}.bind(this));
// determine whether or not we should show the scroll handlers
this.determineScrollability();
// load the first tab.
$(document).ready(function() {
this.scrollTabsBar.children().first().click();
}.bind(this));
},
/*
Handle click event on a tab.
Uses ‘rel’ attribute of each tab as an index to access
the class of the corresponding content area.
*/
clickTab: function(e) {
var active = $(e.currentTarget); // Clicked tab
var content_wrapper = this.$(‘.tabbed-box-content-group’); // wrapper for all content divs
this.stopScrolling();
this.determineClickScroll(active);
// Set new active tab
active.siblings().removeClass(‘active’);
active.addClass(‘active’);
// mark the new active tab
this.settings.set(‘activeTabIndexInternal’, this.scrollTabsBar.children().index(active));
this.settings.save();
// Set new active content
content_wrapper.children().hide();
content_wrapper.find(‘.’ + active.attr(‘rel’)).fadeIn();
this.determineHandlers();
// Stop propagation in case this is a nested tab app
e.stopPropagation();
},
// determines whether or not the two arrows (left and right scroll handlers) should be visible or not.
determineScrollability: function() {
var group = this.scrollTabsBar[0];
if (group.scrollWidth > group.clientWidth) {
this.$el.children().addClass(‘scrollable’);
this.determineHandlers();
} else {
this.$el.children().removeClass(‘scrollable’);
}
},
// determines whether or not the two arrows (left and right scroll handlers) should be active or not.
determineHandlers: function() {
var target = this.scrollTabsBar[0];
// left handler
if (target.scrollLeft != 0) {
this.scrollArrowLeft.addClass(‘active’);
} else {
this.scrollArrowLeft.removeClass(‘active’);
}
// right handler
if (target.scrollLeft + target.clientWidth < target.scrollWidth – 1) {
this.scrollArrowRight.addClass('active');
} else {
this.scrollArrowRight.removeClass('active');
}
},
// scrolls the tabs bar to the left.
scrollLeft: function(e) {
e.stopPropagation();
this.stopScrolling();
var scrollEl = this.scrollTabsBar[0];
var view = this;
var factor = 2;
this.scrollArrowRight.addClass('active');
this.scrollInterval = setInterval(function() {
scrollEl.scrollLeft -= Math.floor(factor);
factor *= 1.05;
if (scrollEl.scrollLeft == 0) {
view.stopScrolling();
}
}, 10);
},
// scrolls the tabs bar to the right.
scrollRight: function(e) {
e.stopPropagation();
this.stopScrolling();
var scrollEl = this.scrollTabsBar[0];
var view = this;
var factor = 2;
this.scrollArrowLeft.addClass('active');
this.scrollInterval = setInterval(function() {
scrollEl.scrollLeft += Math.floor(factor);
factor *= 1.05;
// forcefully stop the interval if it's not doing anything anymore
if (scrollEl.scrollLeft + scrollEl.clientWidth == scrollEl.scrollWidth) {
view.stopScrolling();
}
}, 10);
},
stopScrolling: function() {
clearInterval(this.scrollInterval);
this.determineHandlers();
},
determineClickScroll: function(active) {
// figure out where the element is, and if we need to change our view to show it
var scroll;
// determine where the element we're going to is in respect to the tabs bar
// 25px is the size of the scroll arrows
var leftSidePosition = active.position().left – 50;
var rightSidePosition = active.position().left + active.width() + 50;
// the gap is how much space we want there to be between the selected element
// when it's out of view, and we go to it.
var gap = 25;
if (this.scrollTabsBar.children().index(active) == 0) {
// this the first element, so define the scroll to be 0.
scroll = 0;
} else if (this.scrollTabsBar.children().index(active) == this.scrollTabsBar.children().length – 1) {
// this the last element, so define the scroll to be all the way to the right.
scroll = this.scrollTabsBar[0].scrollWidth – this.scrollTabsBar[0].clientWidth;
} else if (leftSidePosition this.scrollTabsBar.width()) {
// the right corner is out of view.
scroll = this.scrollTabsBar[0].scrollLeft + (rightSidePosition – this.scrollTabsBar.width()) + gap;
} else {
scroll = this.scrollTabsBar[0].scrollLeft;
}
// start scrolling
scroll = Math.floor(scroll);
var delta = scroll – this.scrollTabsBar[0].scrollLeft;
var startedDown = false;
if (delta != 0) {
clearInterval(this.scrollInterval);
var distance = 0;
var direction = (delta > 0 ? 1 : -1);
var speed = 1;
var factor = 1.25; // for parabolic acceleration
this.scrollInterval = setInterval(function() {
if (distance >= Math.abs(delta)) {
this.stopScrolling();
}
this.scrollTabsBar[0].scrollLeft += (Math.max(1, Math.floor(speed)) * direction);
distance += Math.max(1, Math.floor(speed));
if (distance * 2 >= Math.abs(delta)) { // if we’ve traversed more than half
if (factor == 1.25) { // 5/4
factor = 1; // 4/4
} else {
factor = 0.8; // 4/5
}
}
speed *= factor;
}.bind(this), 20);
}
}
});
return TabbedBox;
})();
if (typeof _ElementDefinition == ‘undefined’ || typeof _ElementDefinition == ‘null’) {
var _ElementDefinition = PlatformElement.extend({});
}
var _Element = _ElementDefinition.extend({
initialize: function() {
// we still want to call the initialize function defined by the developer
// however, we don’t want to call it until placeholders have been replaced
this.placeholderInterval = setInterval(function() {
// so use setInterval to check for placeholders.
if (this.$(‘.platform-element-child-placeholder’).length == 0) {
clearInterval(this.placeholderInterval);
this.constructor.__super__.initialize.apply(this);
}
}.bind(this), 100);
}
});
_Element.prototype.settings = new PlatformElementSettings({“tabs_each”:[{“tabs_index”:0},{“tabs_index”:1}],”theme”:”standard”,”tabs”:2,”active_tab”:”white”,”inactive_tab”:”#F7F7F7″,”border_color”:”#CCCCCC”,”activeTabIndexInternal”:0});
_Element.prototype.settings.page_element_id = “985551547961567949”;
_Element.prototype.element_id = “d7329e09-abdf-4be1-82bc-4c8ec820d404”;
_Element.prototype.user_id = “3466466”;
_Element.prototype.site_id = “484589221176252212”;
_Element.prototype.assets_path = “//marketplace.editmysite.com/elements/135397292802228534-1.3.2/assets/”;
new _Element({
el: ‘#element-d7329e09-abdf-4be1-82bc-4c8ec820d404’
});
});
});
}
if (typeof document.documentElement.appReady == ‘undefined’) {
document.documentElement.appReady = 0;
}
if (document.documentElement.appReady || (window.inEditor && window.inEditor())) {
setupElement985551547961567949();
} else if (document.createEvent && document.addEventListener) {
document.addEventListener(‘appReady’, setupElement985551547961567949, false);
} else {
document.documentElement.attachEvent(‘onpropertychange’, function(event){
if (event.propertyName == ‘appReady’) {
setupElement985551547961567949();
}
});
}


​Given that I’ve ridden both bus types, I can make the following observations:

#element-fae7d23e-12e7-462c-955b-c7509ecd2a36 .simple-table-wrapper {
padding: 20px 0;
}
#element-fae7d23e-12e7-462c-955b-c7509ecd2a36 .simple-table {
width: 100%;
border: 1px solid #C9CDCF;
border-spacing: 0;
}
#element-fae7d23e-12e7-462c-955b-c7509ecd2a36 .simple-table td.cell {
border-right: 1px solid #C9CDCF;
border-bottom: 1px solid #C9CDCF;
word-break: break-word;
background-color: #FFFFFF;
width: 50%;
}
#element-fae7d23e-12e7-462c-955b-c7509ecd2a36 .simple-table td.cell .paragraph {
width: 90%;
margin: 0 5%;
padding-bottom: 10px;
padding-top: 10px;
text-align: center;
}
#element-fae7d23e-12e7-462c-955b-c7509ecd2a36 .simple-table.style-top tr:first-child td,
#element-fae7d23e-12e7-462c-955b-c7509ecd2a36 .simple-table.style-side td:first-of-type {
background-color: #F8F8F8;
}
#element-fae7d23e-12e7-462c-955b-c7509ecd2a36 .simple-table.style-top tr:first-child td .paragraph,
#element-fae7d23e-12e7-462c-955b-c7509ecd2a36 .simple-table.style-side td:first-of-type .paragraph {
font-weight: 700;
}
#element-fae7d23e-12e7-462c-955b-c7509ecd2a36 .simple-table tr:last-child td {
border-bottom: none;
}
#element-fae7d23e-12e7-462c-955b-c7509ecd2a36 .simple-table td:last-of-type {
border-right: none;
}
#element-fae7d23e-12e7-462c-955b-c7509ecd2a36 .simple-table .empty-content-area-element {
padding-left: 0px !important;
}

Orion V High-Floored
Gillig Advantage Low-Floored
Advantages:

  • With more seats, more passengers can be loaded​ and transported (these buses are used for both regional and local services)
  • Two of the seats are single seats, allowing more privacy (although if carrying a bag, it can be a bit cramped)
  • The high-floored nature of the vehicle allows faster speeds on freeways and is less prone to bouncing when climbing hills
  • The individualized air vents on nearly every seat and reading lights on every seat allow passengers to be comfortable on their journeys
  • WiFi reliability on the bus is high, allowing passengers to surf the Internet and watch videos, especially for long-haul trips
  • Drivers can modify the interior environment of the bus at night by setting the lighting accordingly to reduce glares
  • There are two types of Stop Requested buttons, the red button and the yellow strip, allowing passengers to call for stops either way

Concerns:

  • With the yellow stop strips, there have been a few instances where sleeping passengers accidentally hit the strip and did not get off the bus, forcing drivers sometimes to either turn the stop function off or go to the sleeping passenger and change seats
  • While there are overhead racks, it only fits smaller bags and briefcases, not small backpacks
  • The policy with Golden Gate has been no bags larger than the seat width or one that can fit under the seat in front. Passengers needing to carry dufflebags and suitcases may be denied boarding due to limited space, and may be directed to using a taxi or airport bus service
Advantages:

  • Used mostly on Transbay and select school services, so these buses are kept clean often​ (rarely used on local services)
  • The padded seats give extra comfort to riders who want to relax on their trips
  • The stop strings reduce a passenger accidentally hitting it while asleep on the bus
  • Passengers can exit the bus from either the front or rear door easily, speeding up boarding and disembarking
  • With larger overhead bins toward the middle of the bus, passengers can load backpacks on them to provide a more comfortable travel experience
  • The low-floor nature of the bus allows quicker boarding and disembarking for seniors and people with limited mobility

Concerns:

  • WiFi reliability is average at best: while AC Transit provides adequate WiFi coverage, Dumbarton Express does not have WiFi setup yet on all its buses
  • The combination of side- and front-facing seats can make the journey awkward, especially if one wants to sleep along the way towards the front of the bus
  • The limited number of overhead reading lights and air vents (while deploying long fluorescent lights) may be uncomfortable if traveling early in the morning or later at night, especially if one wants to relax
  • The low-floored nature of the bus is more prone to bouncing and drag, especially if doing long commute trips on freeways
  • Over time, those stop strings may be deformed if not properly maintained and repaired due to wear and tear (not to mention, there is only one stop requested button towards the rear door, not everywhere around the vehicle)

function setupElement446669962561391862() {
var elementRequire = require || _wAMD.require;
elementRequire([
‘jquery’,
‘underscore’,
‘backbone’,
‘util/platform/elements/PlatformElement’,
‘util/platform/elements/PlatformElementSettings’
], function(
$,
_,
Backbone,
PlatformElement,
PlatformElementSettings
) {
var dependencies = null || [];
var platform_element_id = “702688850553606843-1.4.1”;
if (typeof _W.loadedPlatformDependencies === ‘undefined’) {
_W.loadedPlatformDependencies = [];
}
if (typeof _W.platformElements === ‘undefined’) {
_W.platformElements = [];
}
if (typeof _W.platformElements[platform_element_id] === ‘undefined’) {
_W.platformElements[platform_element_id] = {};
_W.platformElements[platform_element_id].deferredObject = new $.Deferred();
_W.platformElements[platform_element_id].deferredPromise = _W.platformElements[platform_element_id].deferredObject.promise();
}
if(_.intersection(_W.loadedPlatformDependencies, dependencies).length !== dependencies.length){
_.reduce(dependencies, function(promise, nextScript){
_W.loadedPlatformDependencies.push(nextScript);
return promise.then(function(){
return $.getScript(nextScript);
});
}, $().promise()).then(function(){
_W.platformElements[platform_element_id].deferredObject.resolve();
});
}
if (dependencies.length === 0){
_W.platformElements[platform_element_id].deferredObject.resolve();
}
_W.platformElements[platform_element_id].deferredPromise.done(function(){
var _ElementDefinition = /**
* This is required for element rendering to be possible
* @type {PlatformElement}
*/
(function() {
var SimpleTable = PlatformElement.extend({
initialize: function() {
this.setSizes();
},
setSizes: function() {
var sizes = this.settings.get(‘tableSizes’);
// if the # of columns isn’t the size of the array of lengths, ignore it.
if (sizes && sizes != “default” && this.settings.get(‘columns’) == sizes.length) {
var columns = this.$(‘tr’).each(function(index, value) {
var cells = $(value).find(‘td’).each(function(index2, value2) {
$(value2).css(‘width’, sizes[index2] + ‘%’);
});
});
}
}
});
return SimpleTable;
})();;
if (typeof _ElementDefinition == ‘undefined’ || typeof _ElementDefinition == ‘null’) {
var _ElementDefinition = PlatformElement.extend({});
}
var _Element = _ElementDefinition.extend({
initialize: function() {
// we still want to call the initialize function defined by the developer
// however, we don’t want to call it until placeholders have been replaced
this.placeholderInterval = setInterval(function() {
// so use setInterval to check for placeholders.
if (this.$(‘.platform-element-child-placeholder’).length == 0) {
clearInterval(this.placeholderInterval);
this.constructor.__super__.initialize.apply(this);
}
}.bind(this), 100);
}
});
_Element.prototype.settings = new PlatformElementSettings({“columns_each”:[{“columns_index”:0},{“columns_index”:1}],”rows_each”:[{“rows_index”:0},{“rows_index”:1}],”columns”:2,”rows”:2,”style”:”top”,”alignment”:”center”,”titleColor”:”#F8F8F8″,”backgroundColor”:”#FFFFFF”,”borderColor”:”#C9CDCF”,”tableSizes”:”default”});
_Element.prototype.settings.page_element_id = “446669962561391862”;
_Element.prototype.element_id = “fae7d23e-12e7-462c-955b-c7509ecd2a36”;
_Element.prototype.user_id = “3466466”;
_Element.prototype.site_id = “484589221176252212”;
_Element.prototype.assets_path = “//marketplace.editmysite.com/elements/702688850553606843-1.4.1/assets/”;
new _Element({
el: ‘#element-fae7d23e-12e7-462c-955b-c7509ecd2a36’
});
});
});
}
if (typeof document.documentElement.appReady == ‘undefined’) {
document.documentElement.appReady = 0;
}
if (document.documentElement.appReady || (window.inEditor && window.inEditor())) {
setupElement446669962561391862();
} else if (document.createEvent && document.addEventListener) {
document.addEventListener(‘appReady’, setupElement446669962561391862, false);
} else {
document.documentElement.attachEvent(‘onpropertychange’, function(event){
if (event.propertyName == ‘appReady’) {
setupElement446669962561391862();
}
});
}

I personally like both types, especially when we look at accessibility and ease of use. However, there will indeed be certain cases that a high-floored bus would be a better choice than low-floored, especially for climbing hills and traveling long distances. I just hope a manufacturer will be able to “replicate” the successes of the Gillig Phantom and Orion V, in which those heavy-duty coaches carry less passengers than a Motor Coach Industries commuter bus (seating 57), but offer superior comfort for lengthy commutes.

Let’s not forget also that not a long time ago, AC Transit was like San Francisco Muni where its buses did not offer any air conditioning until the introduction of the Gillig Advantage LF40. It is fortunate that AC has learned its lesson and finally adopted air conditioned buses since 2013, in which it has improved the riding experience significantly.

The transition, for me, may not be that easy, especially that I’ve been accustomed to high-floored buses for over a decade now. However, with Marin Transit getting more Gillig BRT Hybrid buses, those give me a preview of what’s to come with commuting locally and regionally. Hopefully, Golden Gate Transit will be able to modify the low-floor bus it chooses to provide a similar level of comfort it now has with the Orion V, which is about to be retired in a few years.

0 thoughts on “The Changing Face of Commute Service

  1. This is a blog where I finally saw an automatic announcement window on an Golden Gate Transit Orion V bus. Before like 2014, that feature was not there.

Leave a Reply

Top