--- a/busui/common.inc.php +++ b/busui/common.inc.php @@ -8,6 +8,9 @@ return true; } +function debug($msg) { + if (isDebug()) echo "<!-- $msg -->"; +} function isFastDevice() { return true; } @@ -26,13 +29,55 @@ width: 100%; } </style> - <script src="http://code.jquery.com/jquery-1.4.3.min.js"></script><script type="text/javascript" -src="http://code.jquery.com/mobile/1.0a2/jquery.mobile-1.0a2.min.js"></script> - <meta name="apple-mobile-web-app-capable" content="yes" /> + <script src="http://code.jquery.com/jquery-1.4.3.min.js"></script> + <script type="text/javascript" src="http://code.jquery.com/mobile/1.0a2/jquery.mobile-1.0a2.min.js"></script> + <meta name="apple-mobile-web-app-capable" content="yes" /> <meta name="apple-mobile-web-app-status-bar-style" content="black" /> <link rel="apple-touch-startup-image" href="startup.png" /> - <link rel="apple-touch-icon" href="apple-touch-icon.png" /> -</head> + <link rel="apple-touch-icon" href="apple-touch-icon.png" />'; + if ($geolocate) { +echo "<script> + +function setCookie(c_name,value,expiredays) +{ +var exdate=new Date(); +exdate.setDate(exdate.getDate()+expiredays); +document.cookie=c_name+ \"=\" +escape(value)+ +((expiredays==null) ? \"\" : \";expires=\"+exdate.toUTCString()); +} + +function getCookie(c_name) +{ +if (document.cookie.length>0) + { + c_start=document.cookie.indexOf(c_name + \"=\"); + if (c_start!=-1) + { + c_start=c_start + c_name.length+1; + c_end=document.cookie.indexOf(\";\",c_start); + if (c_end==-1) c_end=document.cookie.length; + return unescape(document.cookie.substring(c_start,c_end)); + } + } +return \"\"; +} + +function success(position) { +$('#geolocate').val(position.coords.latitude+','+position.coords.longitude); +setCookie('geolocate',position.coords.latitude+','+position.coords.longitude,1); +} + +function error(msg) { + console.log(msg); +} + +if (navigator.geolocation) { + navigator.geolocation.getCurrentPosition(success, error); +} + +</script> "; + } +echo '</head> <body> '; if ($opendiv) echo '<div data-role="page"> @@ -48,6 +93,8 @@ echo '</div>'; } +$service_periods = Array ('sunday','saturday','weekday'); + function service_period() { switch (date('w')){ @@ -59,6 +106,11 @@ default: return 'weekday'; } +} + +function remove_spaces($string) +{ + return str_replace(' ','',$string); } function midnight_seconds()
--- a/busui/index.php +++ b/busui/index.php @@ -1,30 +1,53 @@ <?php include('common.inc.php'); -include_header("bus.lambdacomplex.org",false) +include_header("bus.lambdacomplex.org",false, true) ?> <div data-role="page" data-theme="b" id="jqm-home" class="ui-page ui-body-b ui-page-active"> <div id="jqm-homeheader"> - <center><h1 id="jqm-logo"><img src="apple-touch-icon.png" alt="jQuery Mobile Framework" width="64" height="64" /> + <center><h1 id="jqm-logo"><img src="apple-touch-icon.png" alt="logo" width="64" height="64" /><br> bus.lambdacomplex.org</h1></center> </div> - <div data-role="content"> + <div data-role="content"> + <a href="tripPlanner.php" data-role="button">Launch Trip Planner...</a> <ul data-role="listview" data-inset="true" data-theme="c" data-dividertheme="b"> - <li data-role="list-divider">Stops</li> - <li><a href="stopList.php">All stops List</a></li> - <li class="nearby"><a href="stopList.php?nearby=yes">Nearby List</a></li> - <li><a href="stopList.php?favourites=yes">Favourites List</a></li> + <li data-role="list-divider">Timetables - Stops</li> + <li><a href="stopList.php">Major (Timing Point) Stops</a></li> + <li><a href="stopList.php">All Stops</a></li> + <li><a href="stopList.php?nearbyfavs=yes">Nearby/Favourite Stops</a></li> </ul> <ul data-role="listview" data-inset="true" data-theme="c" data-dividertheme="b"> - <li data-role="list-divider">Routes</li> - <li><a href="routeList.php">All Routes List</a></li> - <li class="nearby"><a href="routeList.php?nearby=yes">Nearby List</a></li> - <li><a href="routeList.php?favourites=yes">Favourites List</a></li> + <li data-role="list-divider">Timetables - Routes</li> + <li><a href="routeList.php">Routes By Final Destination</a></li> + <li><a href="routeList.php?bynumber=yes">Routes By Number</a></li> + <li><a href="routeList.php?nearbyfavs=yes">Nearby/Favourites Routes</a></li> </ul> - <div class="ui-body ui-body-c info"> - <p class="latlng"></p> - Time: <?php echo date("H:m"); ?> <br> - Service Period: <?php echo ucwords(service_period()); ?> + <div class="ui-body ui-body-c"> + <h3>Time/Place Settings</h3> + <div data-role="fieldcontain"> + <label for="geolocate"> Current Location: </label> + <input type="text" id="geolocate" name="geolocate"/> <a href="#" style="display:none" name="here" id="here"/>Here?</a> + </div> + <div data-role="fieldcontain"> + <label for="time"> Time: </label> + <input type="time" value="<?php echo date("H:m"); ?>"/> <a href="#" style="display:none" name="currentTime" id="currentTime"/>Current Time?</a> + </div> + <div data-role="fieldcontain"> + <label for="service_period"> Service Period: </label> + <select name="service_period"> + <?php + foreach ($service_periods as $service_period) { + echo "<option value=\"$service_period\"".(service_period() === $service_period ? "SELECTED" : "").'>'.ucwords($service_period).'</option>'; + }?> + </select> + <a href="#" style="display:none" name="currentPeriod" id="currentPeriod"/>Current Period?</a> + </div> + + <input type="submit" value="Update"/> </div> + <script> +$('#here').click(function(event) { $('#geolocate').val(getCookie('geolocate')); return false;}); +$('#here').show(); + </script> </div> </div> </body>
--- a/busui/routeList.php +++ b/busui/routeList.php @@ -1,55 +1,90 @@ <?php include('common.inc.php'); include_header("Routes"); -/* data-filter="true">'; -echo "<script> $('#routeList').listnav({prefixes: ['to'] }); </script>";*/ +echo' + <div data-role="navbar"> + <ul> + <li><a href="routeList.php">By Final Destination...</a></li> + <li><a href="routeList.php?bynumber=yes">By Number... </a></li> + <!--<li><a href="routeList.php?bysuburb=yes">By Suburb... </a></li>--> + </ul> + </div> + '; echo ' <ul data-role="listview">'; $url = $APIurl."/json/routes"; +$contents = json_decode(getPage($url)); +debug(print_r($contents,true)); -$contents = json_decode(getPage($url)); +function printRoutes($routes){ + foreach($routes as $row) { + echo '<li>'.$row[1].' <a href="trip.php?routeid='.$row[0].'">'.$row[2]." (".ucwords($row[3]).")</a></li>\n"; + } +} + if ($_REQUEST['bynumber']) { $routeSeries = Array(); + $seriesRange = Array(); foreach ($contents as $key => $row) { foreach (explode(" ",$row[1]) as $routeNumber ) { $seriesNum = substr($routeNumber, 0, -1)."0"; if ($seriesNum == "0") $seriesNum = $routeNumber; + $finalDigit = substr($routeNumber, sizeof($routeNumber)-1, 1); + if (isset($seriesRange[$seriesNum])) { + if ($finalDigit < $seriesRange[$seriesNum]['max']) + $seriesRange[$seriesNum]['max'] = $routeNumber; + if ($finalDigit > $seriesRange[$seriesNum]['min']) + $seriesRange[$seriesNum]['min'] = $routeNumber; + } else { + $seriesRange[$seriesNum]['max'] = $routeNumber; + $seriesRange[$seriesNum]['min'] = $routeNumber; + } $routeSeries[$seriesNum][$seriesNum."-".$row[1]."-".$row[0]] = $row; - - } } ksort($routeSeries); + ksort($seriesRange); + echo '<div class="noscriptnav"> Go to route numbers: '; + foreach ($seriesRange as $series => $range) + { + if ($range['min'] == $range['max']) echo "<a href=\"#$series\">$series</a> "; + else echo "<a href=\"#$series\">{$range['min']}-{$range['max']}</a> "; + } + echo "</div> + <script> + $('.noscriptnav').hide(); + </script>"; foreach ($routeSeries as $series => $routes) { - echo '<li>'.$series."... <ul>\n"; - foreach($routes as $row) { - echo '<li>'.$row[1].' <a href="route.php?routeid='.$row[0].'">'.$row[2]."</a></li>\n"; - } + echo '<a name="'.$series.'"></a>'; + if ($series <= 9) echo '<li>'.$series."<ul>\n"; + else echo "<li>{$seriesRange[$series]['min']}-{$seriesRange[$series]['max']}<ul>\n"; + printRoutes($routes); echo "</ul></li>\n"; } } else { foreach ($contents as $key => $row) { $routeDestinations[$row[2]][] = $row; } + echo '<div class="noscriptnav"> Go to Destination: '; + foreach(ksort($routeDestinations) as $destination => $routes) + { + echo "<a href=\"#$destination\">$destination</a> "; + } + echo "</div> + <script> + $('.noscriptnav').hide(); + </script>"; foreach ($routeDestinations as $destination => $routes) { + echo '<a name="'.$destination.'"></a>'; echo '<li>'.$destination."... <ul>\n"; - foreach($routes as $row) { - echo '<li>'.$row[1].' <a href="trip.php?routeid='.$row[0].'">'.$row[2]."</a></li>\n"; - } + printRoutes($routes); echo "</ul></li>\n"; } } echo "</ul>\n"; -echo' - <div data-role="footer" data-id="foo1" data-position="fixed"> - <div data-role="navbar"> - <ul> - <li><a href="routeList.php" class="ui-btn-active">By Final Destination...</a></li> - <li><a href="routeList.php?bynumber=yes">By Number... </a></li> - <li><a href="routeList.php?bysuburb=yes">By Suburb... </a></li> - </ul> - '; + + include_footer(); ?>
--- a/busui/schedule_viewer.py +++ b/busui/schedule_viewer.py @@ -256,7 +256,12 @@ schedule = self.server.schedule result = [] for r in schedule.GetRouteList(): - result.append( (r.route_id, r.route_short_name, r.route_long_name) ) + servicep = None + for t in schedule.GetTripList(): + if t.route_id == r.route_id: + servicep = t.service_period + break + result.append( (r.route_id, r.route_short_name, r.route_long_name, servicep.service_id) ) result.sort(key = lambda x: x[1:3]) return result @@ -273,8 +278,6 @@ for t in schedule.GetTripList(): if t.route_id == query: result.append ( (t.GetStartTime(), t.trip_id) ) - """ UGH fails for 300s """ - """return result""" return sorted(result, key=lambda trip: trip[0]) def handle_json_GET_triprows(self, params):
--- a/busui/stop.php +++ b/busui/stop.php @@ -8,6 +8,7 @@ echo ' <ul data-role="listview" >'; $url = $APIurl."/json/stoptrips?stop=".$_REQUEST['stopid']."&time=".midnight_seconds()."&service_period=".service_period(); $trips = json_decode(getPage($url)); +debug(print_r($trips,true)); foreach ($trips as $row) { echo '<li>';
--- a/busui/stopList.php +++ b/busui/stopList.php @@ -4,27 +4,41 @@ echo' <div data-role="navbar"> <ul> - <li><a href="stopList.php" class="ui-btn-active">Timing Points</a></li> + <li><a href="stopList.php">Timing Points</a></li> <li><a href="stopList.php?allstops=yes">All Stops</a></li> </ul> </div> '; -echo ' <ul data-role="listview" data-filter="true">'; + + echo '<div class="noscriptnav"> Go to letter: '; +foreach(range('A','Z') as $letter) +{ + echo "<a href=\"#$letter\">$letter</a> "; +} +echo "</div> + <script> +$('.noscriptnav').hide(); + </script>"; +echo ' <ul data-role="listview" data-filter="true" data-inset="true" >'; $url = $APIurl."/json/timingpoints"; if ($_REQUEST['allstops']) $url = $APIurl."/json/stops"; if ($_REQUEST['lat'] && $_REQUEST['lon']) $url = $APIurl."/json/neareststops?lat={$_REQUEST['lat']}&lon={$_REQUEST['lon']}&limit=15"; $contents = json_decode(getPage($url)); +debug(print_r($contents,true)); foreach ($contents as $key => $row) { $stopName[$key] = $row[1]; } -// Sort the data with volume descending, edition ascending -// Add $data as the last parameter, to sort by the common key +// Sort the stops by name array_multisort($stopName, SORT_ASC, $contents); +$firstletter = ""; foreach ($contents as $row) { - + if (substr($row[1],0,1) != $firstletter){ + echo "<a name=$firstletter></a>"; + $firstletter = substr($row[1],0,1); + } echo '<li><a href="stop.php?stopid='.$row[0].'">'.$row[1].'</a></li>'; } echo '</ul>';
--- a/busui/trip.php +++ b/busui/trip.php @@ -4,6 +4,7 @@ if ($_REQUEST['routeid']) { $url = $APIurl."/json/routetrips?route_id=".$_REQUEST['routeid']; $trips = json_decode(getPage($url)); +debug(print_r($trips,true)); foreach ($trips as $trip) { if ($trip[0] < midnight_seconds()) { @@ -15,7 +16,7 @@ } $url = $APIurl."/json/triprows?trip=".$tripid; $trips = array_flatten(json_decode(getPage($url))); - +debug(print_r($trips,true)); include_header("Stops on ". $trips[1]->route_short_name . ' '. $trips[1]->route_long_name); echo ' <ul data-role="listview" >'; @@ -23,6 +24,7 @@ $url = $APIurl."/json/tripstoptimes?trip=".$tripid; $json = json_decode(getPage($url)); +debug(print_r($json,true)); $stops = $json[0]; $times = $json[1]; foreach ($stops as $key => $row)
--- a/busui/tripPlanner.php +++ b/busui/tripPlanner.php @@ -1,6 +1,6 @@ <?php include('common.inc.php'); - include_header("Trip Planner"); + include_header("Trip Planner", true, true); function tripPlanForm($errorMessage = "") { $from = (isset($_REQUEST['from']) ? $_REQUEST['from'] : "Brigalow"); @@ -12,20 +12,29 @@ <div data-role="fieldcontain"> <label for="from">I would like to go from</label> <input type="text" name="from" id="from" value="' . $from . '" /> + <a href="#" style="display:none" name="fromHere" id="fromHere"/>Here?</a> </div> <div data-role="fieldcontain"> <label for="to"> to </label> <input type="text" name="to" id="to" value="' . $to . '" /> + <a href="#" style="display:none" name="toHere" id="toHere"/>Here?</a> </div> <div data-role="fieldcontain"> <label for="date"> on </label> - <input type="text" name="date" id="date" value="' . $date . '" /> + <input type="date" name="date" id="date" value="' . $date . '" /> </div> <div data-role="fieldcontain"> <label for="time"> at </label> - <input type="text" name="time" id="time" value="' . $time . '" /> + <input type="time" name="time" id="time" value="' . $time . '" /> </div> <input type="submit" value="Go!"></form>'; + echo "<script> +$('#toHere').click(function(event) { $('#to').val(getCookie('geolocate')); return false;}); +$('#toHere').show(); +$('#fromHere').click(function(event) { $('#from').val(getCookie('geolocate')); return false;}); +$('#fromHere').show(); + + </script>"; } function processItinerary($itineraryNumber, $itinerary) @@ -94,6 +103,7 @@ $page = curl_exec($ch); curl_close($ch); $tripplan = json_decode($page); + debug(print_r($triplan,true)); echo "<h1> From: {$tripplan->plan->from->name} To: {$tripplan->plan->to->name} </h1>"; echo "<h1> At: {$tripplan->plan->date} </h1>";
--- a/maxious-canberra-transit-feed/01-extracttimes.rb +++ b/maxious-canberra-transit-feed/01-extracttimes.rb @@ -14,7 +14,9 @@ timetable = {"between_stops" => [], "short_name" => short_name} time_points = table.xpath('tr[1]//th').map do |tp| if tp.content != "\302\240" && tp.content != "" && tp.content != "<br/>" - timing_point = tp.content.squeeze(" ").gsub("Bus Station"," Bus Station ").gsub(" Platform"," (Platform").gsub(" - "," - ").gsub("\n"," ").gsub("\r"," ").gsub("\t"," ").gsub("\\"," / ").gsub("/"," / ").gsub(","," ").gsub("\302\240","").squeeze(" ").strip + timing_point = tp.content.squeeze(" ").gsub("Shops"," ").gsub("Bus Station"," Bus Station ").gsub("Interchange"," Bus Station ").gsub(" Platform"," (Platform") + timing_point = timing_point.gsub("Machonochie","Maconochie").gsub("Hume"," ").gsub("Market Place","Marketplace").gsub("Terminus Fyshwick","Terminus") + timing_point = timing_point.gsub(" - "," - ").gsub("\n"," ").gsub("\r"," ").gsub("\t"," ").gsub("\\"," / ").gsub("/"," / ").gsub(","," ").gsub("\302\240","").squeeze(" ").strip if (tp.content.match('Platform')) timing_point.concat(")") end;
--- a/maxious-canberra-transit-feed/02-tidytimepoints.rb +++ b/maxious-canberra-transit-feed/02-tidytimepoints.rb @@ -34,7 +34,7 @@ "NarrabundahTerminus"=>"Narrabundah Terminus", "Railway StationKingston"=>"Railway Station Kingston", "Saint AndrewsVillage Hughes"=>"Saint Andrews Village Hughes", - "Dickson ShopsAntill Street"=>"Dickson Shops", + "DicksonAntill Street"=>"Dickson", "Cohen St Bus Station (Platform 3)" => "Cohen Street Bus Station (Platform 3)", "Cohen St Bus Station (Platform 6)" => "Cohen Street Bus Station (Platform 6)", "Newcastle Streetafter Isa Street" => "Newcastle Street after Isa Street", @@ -52,8 +52,8 @@ "Flemington Road / Nullabor Ave"=>"Flemington Rd / Nullabor Ave", "Flemington Road / Sandford St"=>"Flemington Rd / Sandford St", "Heagney Cres Clift Cres Richardson"=> "Heagney / Clift Richardson", - "Charnwood Shops (Tillyard Drive)"=> "Charnwood Shops", - "charnwood Shops"=> "Charnwood Shops", + "Charnwood (Tillyard Drive)"=> "Charnwood", + "charnwood"=> "Charnwood", "Black Moutain- Telstra Tower"=>"Black Mountain Telstra Tower", "Bonython Primary"=> "Bonython Primary School", "Athllon Drive / Sulwood Dr Kambah"=>"Athllon / Sulwood Kambah", @@ -61,31 +61,37 @@ "Alexander Maconochie Centre Hume"=>"Alexander Maconochie Centre", "Anthony Rolfe Ave / Moonight Ave" =>"Anthony Rolfe Av / Moonlight Av", "Australian National Botanic Gardens"=>"Botanic Gardens", - "Calwell shops"=> "Calwell Shops", + "Calwell shops"=> "Calwell", "Chuculba / William Slim Drive"=>"Chuculba / William Slim Dr", "Fyshwick direct Factory Outlet"=>"Fyshwick Direct Factory Outlet", "Kaleen Village / Maibrynong"=>"Kaleen Village / Marybrynong", "Kaleen Village / Marybrynong Ave"=>"Kaleen Village / Marybrynong", "National Aquarium"=>"National Zoo and Aquarium", - "chisholm Shops"=>"Chisholm Shops", - "O'connor Shops"=>"O'Connor Shops", - "Mckellar Shops"=>"McKellar Shops", - "Melba shops"=> "Melba Shops", + "chisholm"=>"Chisholm", + "O'connor"=>"O'Connor", + "Mckellar"=>"McKellar", "William Web / Ginninderra Drive"=>"William Webb / Ginninderra Drive", "Procor / Mead"=>"Proctor / Mead", "Fyshwick DirectFactory Outlet"=>"Fyshwick Direct Factory Outlet", - "Yarrulumla Shops"=>"Yarralumla Shops", + "Yarrulumla"=>"Yarralumla", "Tharwa Dr / Pocket Ave"=>"Tharwa Dr / Pockett Ave", "Paul Coe / Mirrebei Dr"=>"Paul Coe / Mirrabei Dr", "Mirrebei Drive / Dam Wall"=>"Mirrabei Drive / Dam Wall", "Tharwa / Knoke" => "Tharwa Drive / Knoke Ave", - "Tharwa / Pocket" => "Tharwa Dr / Pockett Ave", + "Tharwa / Pocket" => "Tharwa Drive / Pockett Ave", + 'Tharwa Dr / Pockett Ave' => "Tharwa Drive / Pockett Ave", "Outrim / Duggan" => "Outtrim / Duggan", "ANU Burton and Garran Hall Daley Rd" => "Burton and Garran Hall Daley Road", "Farrer Primary"=>"Farrer Primary School", "St Thomas More Campbell"=>"St Thomas More's Campbell", - "Lyneham Shops"=>"Lyneham Shops Wattle Street", - + "Lyneham Wattle Street"=>"Lyneham / Wattle St", + "Dickson" => "Dickson / Antill St", + 'Dickson Antill Street' => 'Dickson / Antill St', + "Livingston / Kambah" => "Kambah / Livingston St", + 'Melba shops' => 'Melba', + 'St Clare of Assisi' => 'St Clare of Assisi Primary', + 'War Memorial Limestone Ave' => 'War Memorial / Limestone Ave' + } time_point_corrections.each do |wrong, right|
--- a/maxious-canberra-transit-feed/03-locatetimepoints.rb +++ b/maxious-canberra-transit-feed/03-locatetimepoints.rb @@ -38,6 +38,7 @@ $time_points = [] $time_points_sources = Hash.new([]) Dir.glob("*.yml") { |file| + pp file timetable = YAML::load_file(file) $time_points = $time_points | timetable["time_points"] timetable["time_points"].each do |timepoint|
--- a/maxious-canberra-transit-feed/cbrtable.yml +++ b/maxious-canberra-transit-feed/cbrtable.yml @@ -11,12 +11,10 @@ - { name: ACTEW AGL House,stop_code: ACTEW AGL House, lat: -35.282374, lng: 149.132047} - { name: ADFA,stop_code: ADFA, lat: -35.2937972, lng: 149.1643403} - { name: Ainslie,stop_code: Ainslie, lat: -35.2620105, lng: 149.1443302} - - { name: Ainslie Shops,stop_code: Ainslie Shops, lat: -35.26198, lng: 149.14535} - { name: Alexander Maconochie Centre,stop_code: Alexander Maconochie Centre, lat: -35.3720651, lng: 149.1696618} - { name: Alpen & Clifford St,stop_code: Alpen & Clifford St, lat: -35.20562, lng: 149.06259} - { name: Anthony Rolfe Av / Moonlight Av,stop_code: Anthony Rolfe Av / Moonlight Av, lat: -35.1856021, lng: 149.1543639} - { name: Aranda,stop_code: Aranda, lat: -35.257534, lng: 149.0762963} - - { name: Aranda Shops,stop_code: Aranda Shops, lat: -35.25753, lng: 149.0763} - { name: Athllon / Sulwood Kambah,stop_code: Athllon / Sulwood Kambah, lat: -35.38442, lng: 149.09328} - { name: Australian Institute of Sport,stop_code: Australian Institute of Sport, lat: -35.246351, lng: 149.101478} - { name: Belconnen Community Bus Station,stop_code: Belconnen Community Bus Station, lat: -35.23987, lng: 149.0619} @@ -37,7 +35,7 @@ - { name: Bugden Sternberg,stop_code: Bugden Sternberg, lat: -35.4017223, lng: 149.0992172} - { name: Burton and Garran Hall Daley Road,stop_code: Burton and Garran Hall Daley Road, lat: -35.2753671, lng: 149.1172822} - { name: Calvary Hospital,stop_code: Calvary Hospital, lat: -35.25212, lng: 149.09088} - - { name: Calwell Shops,stop_code: Calwell Shops, lat: -35.43524, lng: 149.113942} + - { name: Calwell,stop_code: Calwell, lat: -35.43524, lng: 149.113942} - { name: Cameron Ave Bus Station,stop_code: Cameron Ave Bus Station, lat: -35.2410195, lng: 149.0722506} - { name: Cameron Ave Bus Station (Platform 1),stop_code: Cameron Ave Bus Station (Platform 1), lat: -35.2410195, lng: 149.0722506} - { name: Cameron Ave Bus Station (Platform 2),stop_code: Cameron Ave Bus Station (Platform 2), lat: -35.2410108, lng: 149.0717142} @@ -52,13 +50,10 @@ - { name: Causeway,stop_code: Causeway, lat: -35.31615, lng: 149.15058} - { name: Centrelink Tuggeranong,stop_code: Centrelink Tuggeranong, lat: -35.4207496, lng: 149.0700973} - { name: Chapman,stop_code: Chapman, lat: -35.3557877, lng: 149.0408111} - - { name: Chapman Shops,stop_code: Chapman Shops, lat: -35.35579, lng: 149.04082} - { name: Charnwood,stop_code: Charnwood, lat: -35.2052138, lng: 149.0337266} - - { name: Charnwood Shops,stop_code: Charnwood Shops, lat: -35.20472, lng: 149.03336} - { name: Charnwood Tillyard Dr,stop_code: Charnwood Tillyard Dr, lat: -35.20295, lng: 149.04027} - { name: Chifley,stop_code: Chifley, lat: -35.350985, lng: 149.077319} - - { name: Chifley Shops,stop_code: Chifley Shops, lat: -35.35099, lng: 149.07732} - - { name: Chisholm Shops,stop_code: Chisholm Shops, lat: -35.41341, lng: 149.12833} + - { name: Chisholm,stop_code: Chisholm, lat: -35.41341, lng: 149.12833} - { name: Chuculba / William Slim Dr,stop_code: Chuculba / William Slim Dr, lat: -35.208931, lng: 149.088499} - { name: CIT Weston,stop_code: CIT Weston, lat: -35.330234, lng: 149.058632} - { name: City Bus Station,stop_code: City Bus Station, lat: -35.2794346, lng: 149.1305879} @@ -84,19 +79,14 @@ - { name: Cohen Street Bus Station (Platform 6),stop_code: Cohen Street Bus Station (Platform 6), lat: -35.2400028, lng: 149.060315} - { name: Conder Primary,stop_code: Conder Primary, lat: -35.4643475, lng: 149.0986908} - { name: Cook,stop_code: Cook, lat: -35.2596, lng: 149.0638} - - { name: Cook Shops,stop_code: Cook Shops, lat: -35.25898, lng: 149.06343} - { name: Cooleman Court,stop_code: Cooleman Court, lat: -35.34147, lng: 149.05338} - { name: Copland College,stop_code: Copland College, lat: -35.2127018, lng: 149.0596387} - { name: Curtin,stop_code: Curtin, lat: -35.3248779, lng: 149.081441} - - { name: Curtin Shops,stop_code: Curtin Shops, lat: -35.32515, lng: 149.08224} - { name: Deakin,stop_code: Deakin, lat: -35.3158608, lng: 149.1084563} - - { name: Deakin Shops,stop_code: Deakin Shops, lat: -35.31473, lng: 149.10771} - { name: Deamer / Clift Richardson,stop_code: Deamer / Clift Richardson, lat: -35.4319597, lng: 149.1187876} - - { name: Dickson,stop_code: Dickson, lat: -35.2498434, lng: 149.1391218} + - { name: Dickson / Antill St,stop_code: Dickson / Antill St, lat: -35.2489, lng: 149.14012} - { name: Dickson College,stop_code: Dickson College, lat: -35.24923, lng: 149.15315} - - { name: Dickson Cowper St,stop_code: Dickson Cowper St, lat: -35.250297, lng: 149.141336} - - { name: Dickson Shops,stop_code: Dickson Shops, lat: -35.25045, lng: 149.14044} - - { name: Dickson Shops/Antill St,stop_code: Dickson Shops/Antill St, lat: -35.2251335, lng: 149.1658895} + - { name: Dickson / Cowper St,stop_code: Dickson / Cowper St, lat: -35.250297, lng: 149.141336} - { name: Duffy,stop_code: Duffy, lat: -35.3366908, lng: 149.0324311} - { name: Duffy Primary,stop_code: Duffy Primary, lat: -35.334219, lng: 149.033656} - { name: Dunlop,stop_code: Dunlop, lat: -35.1942693, lng: 149.0206702} @@ -104,59 +94,47 @@ - { name: Erindale Dr / Charleston St Monash,stop_code: Erindale Dr / Charleston St Monash, lat: -35.414616, lng: 149.07888} - { name: Erindale / Sternberg Cres,stop_code: Erindale / Sternberg Cres, lat: -35.4014472, lng: 149.0956545} - { name: Evatt,stop_code: Evatt, lat: -35.2091093, lng: 149.0735343} - - { name: Evatt Shops,stop_code: Evatt Shops, lat: -35.21203, lng: 149.06505} - { name: Eye Hospital,stop_code: Eye Hospital, lat: -35.3341884, lng: 149.1656213} - { name: Fairbairn Park,stop_code: Fairbairn Park, lat: -35.3001773, lng: 149.2041185} - { name: Farrer Primary School,stop_code: Farrer Primary School, lat: -35.37887, lng: 149.10641} - { name: Farrer Terminus,stop_code: Farrer Terminus, lat: -35.3771794, lng: 149.1046948} - { name: Federation Square,stop_code: Federation Square, lat: -35.1908726, lng: 149.0848153} - { name: Fisher,stop_code: Fisher, lat: -35.3605627, lng: 149.0576481} - - { name: Fisher Shops,stop_code: Fisher Shops, lat: -35.36056, lng: 149.05765} - { name: Flemington Rd,stop_code: Flemington Rd, lat: -35.20756, lng: 149.14778} - { name: Flemington Rd / Nullabor Ave,stop_code: Flemington Rd / Nullabor Ave, lat: -35.2008585, lng: 149.1493407} - { name: Flemington Rd / Sandford St,stop_code: Flemington Rd / Sandford St, lat: -35.221231, lng: 149.144645} - - { name: Florey Shops,stop_code: Florey Shops, lat: -35.2258544, lng: 149.0546214} + - { name: Florey,stop_code: Florey, lat: -35.2258544, lng: 149.0546214} - { name: Flynn,stop_code: Flynn, lat: -35.2019283, lng: 149.0478356} - { name: Fraser,stop_code: Fraser, lat: -35.1896539, lng: 149.0435012} - { name: Fraser East Terminus,stop_code: Fraser East Terminus, lat: -35.1896539, lng: 149.0435012} - - { name: Fraser Shops,stop_code: Fraser Shops, lat: -35.18966, lng: 149.0435} - { name: Fraser West Terminus,stop_code: Fraser West Terminus, lat: -35.191513, lng: 149.038006} - { name: Fyshwick Direct Factory Outlet,stop_code: Fyshwick Direct Factory Outlet, lat: -35.3359862, lng: 149.1796322} - { name: Fyshwick Terminus,stop_code: Fyshwick Terminus, lat: -35.3285202, lng: 149.1785592} - { name: Garran,stop_code: Garran, lat: -35.3423286, lng: 149.10811} - - { name: Garran Shops,stop_code: Garran Shops, lat: -35.34236, lng: 149.1082} - { name: Geoscience Australia,stop_code: Geoscience Australia, lat: -35.3429702, lng: 149.1583893} - { name: Giralang,stop_code: Giralang, lat: -35.2115608, lng: 149.0960692} - - { name: Giralang Shops,stop_code: Giralang Shops, lat: -35.2115608, lng: 149.0960692} - { name: Gordon Primary,stop_code: Gordon Primary, lat: -35.455517, lng: 149.086978} - { name: Gowrie,stop_code: Gowrie, lat: -35.4120264, lng: 149.1110804} - - { name: Gowrie Shops,stop_code: Gowrie Shops, lat: -35.4120264, lng: 149.1110804} - { name: Gungahlin Marketplace,stop_code: Gungahlin Marketplace, lat: -35.1769532, lng: 149.1319017} - { name: Gwydir Square Kaleen,stop_code: Gwydir Square Kaleen, lat: -35.2338677, lng: 149.1031998} - { name: Hackett,stop_code: Hackett, lat: -35.2481617, lng: 149.1626094} - - { name: Hackett Shops,stop_code: Hackett Shops, lat: -35.24825, lng: 149.16271} - { name: Hawker,stop_code: Hawker, lat: -35.2437386, lng: 149.0432804} - { name: Hawker College,stop_code: Hawker College, lat: -35.2454598, lng: 149.0324251} - - { name: Hawker Shops,stop_code: Hawker Shops, lat: -35.24398, lng: 149.04361} - { name: Heagney / Clift Richardson,stop_code: Heagney / Clift Richardson, lat: -35.4251299, lng: 149.11375} - { name: Hibberson / Kate Crace,stop_code: Hibberson / Kate Crace, lat: -35.1861642, lng: 149.1391756} - { name: Higgins,stop_code: Higgins, lat: -35.2313901, lng: 149.0271811} - - { name: Higgins Shops,stop_code: Higgins Shops, lat: -35.23136, lng: 149.02611} - { name: Holder,stop_code: Holder, lat: -35.3378123, lng: 149.0449433} - - { name: Holder Shops,stop_code: Holder Shops, lat: -35.33781, lng: 149.04494} - { name: Holt,stop_code: Holt, lat: -35.223099, lng: 149.0126