Via points and Stops by Suburb added
Via points and Stops by Suburb added

--- a/busui/common.inc.php
+++ b/busui/common.inc.php
@@ -2,13 +2,17 @@
 date_default_timezone_set('Australia/ACT');
 $APIurl = "http://localhost:8765";
 error_reporting(E_ALL ^ E_NOTICE);
+
+// SELECT array_to_string(array(SELECT REPLACE(name_2006, ',', '\,') as name FROM suburbs order by name), ',')
+$suburbs = explode(",","Acton,Ainslie,Amaroo,Aranda,Banks,Barton,Belconnen,Bonner,Bonython,Braddon,Bruce,Calwell,Campbell,Chapman,Charnwood,Chifley,Chisholm,City,Conder,Cook,Curtin,Deakin,Dickson,Downer,Duffy,Dunlop,Evatt,Fadden,Farrer,Fisher,Florey,Flynn,Forrest,Franklin,Fraser,Fyshwick,Garran,Gilmore,Giralang,Gordon,Gowrie,Greenway,Griffith,Gungahlin,Hackett,Hall,Harrison,Hawker,Higgins,Holder,Holt,Hughes,Hume,Isaacs,Isabella Plains,Kaleen,Kambah,Kingston,Latham,Lawson,Lyneham,Lyons,Macarthur,Macgregor,Macquarie,Mawson,McKellar,Melba,Mitchell,Monash,Narrabundah,Ngunnawal,Nicholls,Oaks Estate,O'Connor,O'Malley,Oxley,Page,Palmerston,Parkes,Pearce,Phillip,Pialligo,Red Hill,Reid,Richardson,Rivett,Russell,Scullin,Spence,Stirling,Symonston,Tharwa,Theodore,Torrens,Turner,Wanniassa,Waramanga,Watson,Weetangera,Weston,Yarralumla");
+
  // you have to open the session to be able to modify or remove it 
- session_start(); 
+session_start(); 
  
 
 function isDebug()
 {
-    return $_SERVER['SERVER_NAME'] == "localhost" || $_SERVER['SERVER_NAME'] == "127.0.0.1" || !$_SERVER['SERVER_NAME'];
+    return $_SERVER['SERVER_NAME'] == "10.0.1.154" || $_SERVER['SERVER_NAME'] == "localhost" || $_SERVER['SERVER_NAME'] == "127.0.0.1" || !$_SERVER['SERVER_NAME'];
 }
 
 function debug($msg) {
@@ -50,6 +54,10 @@
      padding-bottom: 18px;
      width: 100%;
      }
+     
+     .ui-li-heading {
+        white-space: normal !important;
+     }
 </style>
 <meta name="apple-mobile-web-app-capable" content="yes" />
  <meta name="apple-mobile-web-app-status-bar-style" content="black" />
@@ -156,6 +164,7 @@
 }
 function getPage($url)
 {
+    debug($url);
     $ch = curl_init($url);
 curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
 curl_setopt( $ch, CURLOPT_HEADER, 0 );
@@ -351,6 +360,38 @@
 function bracketsMeanNewLine($input) {
     return str_replace(")","</small>",str_replace("(","<br><small>",$input));
 }
+
+function viaPoints($tripid,$stopid, $timingPointsOnly = false) {
+    global $APIurl;
+    $url = $APIurl."/json/tripstoptimes?trip=".$tripid;
+
+$json = json_decode(getPage($url));
+debug(print_r($json,true));
+$stops = $json[0];
+$times = $json[1];
+$foundStop = false;
+$viaPoints = Array();
+foreach ($stops as $key => $row)
+{
+    if ($foundStop) {
+        if (!$timingPointsOnly || !startsWith($row[5],"Wj") ) {
+            $viaPoints[] = Array("id" => $row[0], "name" => $row[1], "time" => $times[$key]);
+        }
+    } else {
+        if ($row[0] == $stopid) $foundStop = true;
+    }
+}
+    return $viaPoints;
+}
+
+function viaPointNames($tripid,$stopid) {
+    $points = viaPoints($tripid,$stopid,true);
+    $pointNames = Array();
+    foreach ($points as $point) {
+        $pointNames[] = $point['name'];
+    }
+    return implode(", ",$pointNames);
+}
 ?>
   
 

 Binary files /dev/null and b/busui/css/images/01-refresh.png differ
 Binary files /dev/null and b/busui/css/images/02-redo.png differ
 Binary files /dev/null and b/busui/css/images/06-magnify.png differ
 Binary files /dev/null and b/busui/css/images/07-map-marker.png differ
 Binary files /dev/null and b/busui/css/images/101-gameplan.png differ
 Binary files /dev/null and b/busui/css/images/102-walk.png differ
 Binary files /dev/null and b/busui/css/images/103-map.png differ
 Binary files /dev/null and b/busui/css/images/113-navigation.png differ
 Binary files /dev/null and b/busui/css/images/121-landscape.png differ
 Binary files /dev/null and b/busui/css/images/13-target.png differ
 Binary files /dev/null and b/busui/css/images/139-flags.png differ
 Binary files /dev/null and b/busui/css/images/145-persondot.png differ
 Binary files /dev/null and b/busui/css/images/184-warning.png differ
 Binary files /dev/null and b/busui/css/images/193-location-arrow.png differ
 Binary files /dev/null and b/busui/css/images/28-star.png differ
 Binary files /dev/null and b/busui/css/images/53-house.png differ
 Binary files /dev/null and b/busui/css/images/55-network.png differ
 Binary files /dev/null and b/busui/css/images/57-download.png differ
 Binary files /dev/null and b/busui/css/images/58-bookmark.png differ
 Binary files /dev/null and b/busui/css/images/59-flag.png differ
 Binary files /dev/null and b/busui/css/images/60-signpost.png differ
 Binary files /dev/null and b/busui/css/images/73-radar.png differ
 Binary files /dev/null and b/busui/css/images/74-location.png differ
 Binary files /dev/null and b/busui/css/images/83-calendar.png differ
 Binary files a/busui/images/01-refresh.png and /dev/null differ
 Binary files a/busui/images/02-redo.png and /dev/null differ
 Binary files a/busui/images/06-magnify.png and /dev/null differ
 Binary files a/busui/images/07-map-marker.png and /dev/null differ
 Binary files a/busui/images/101-gameplan.png and /dev/null differ
 Binary files a/busui/images/102-walk.png and /dev/null differ
 Binary files a/busui/images/103-map.png and /dev/null differ
 Binary files a/busui/images/113-navigation.png and /dev/null differ
 Binary files a/busui/images/121-landscape.png and /dev/null differ
 Binary files a/busui/images/13-target.png and /dev/null differ
 Binary files a/busui/images/139-flags.png and /dev/null differ
 Binary files a/busui/images/145-persondot.png and /dev/null differ
 Binary files a/busui/images/184-warning.png and /dev/null differ
 Binary files a/busui/images/193-location-arrow.png and /dev/null differ
 Binary files a/busui/images/28-star.png and /dev/null differ
 Binary files a/busui/images/53-house.png and /dev/null differ
 Binary files a/busui/images/55-network.png and /dev/null differ
 Binary files a/busui/images/57-download.png and /dev/null differ
 Binary files a/busui/images/58-bookmark.png and /dev/null differ
 Binary files a/busui/images/59-flag.png and /dev/null differ
 Binary files a/busui/images/60-signpost.png and /dev/null differ
 Binary files a/busui/images/73-radar.png and /dev/null differ
 Binary files a/busui/images/74-location.png and /dev/null differ
 Binary files a/busui/images/83-calendar.png and /dev/null differ
--- a/busui/index.php
+++ b/busui/index.php
@@ -21,13 +21,14 @@
                 <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>
+		<li><a href="stopList.php?suburbs=yes">Stops By Suburb</a></li>
+		<li><a href="stopList.php?nearby=yes">Nearby Stops</a></li>
             </ul>
 	    <ul data-role="listview" data-inset="true" data-theme="c" data-dividertheme="b">
                 <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>
+		<li><a href="routeList.php?nearby=yes">Nearby Routes</a></li>
             </ul>
             <div class="ui-body ui-body-c">
 		<h3>Time/Place Settings</h3>

--- a/busui/schedule_viewer.py
+++ b/busui/schedule_viewer.py
@@ -88,8 +88,11 @@
 def StopToTuple(stop):
   """Return tuple as expected by javascript function addStopMarkerFromList"""
   return (stop.stop_id, stop.stop_name, float(stop.stop_lat),
-          float(stop.stop_lon), stop.location_type)
-
+          float(stop.stop_lon), stop.location_type, stop.stop_code)
+def StopZoneToTuple(stop):
+  """Return tuple as expected by javascript function addStopMarkerFromList"""
+  return (stop.stop_id, stop.stop_name, float(stop.stop_lat),
+          float(stop.stop_lon), stop.location_type, stop.stop_code, stop.zone_id)
 
 class ScheduleRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler):
   def do_GET(self):
@@ -301,11 +304,11 @@
     except KeyError:
        # if a non-existent trip is searched for, the return nothing
       return
-    time_stops = trip.GetTimeStops()
+    time_stops = trip.GetTimeInterpolatedStops()
     stops = []
     times = []
-    for arr,dep,stop in time_stops:
-      stops.append(StopToTuple(stop))
+    for arr,ts,is_timingpoint in time_stops:
+      stops.append(StopToTuple(ts.stop))
       times.append(arr)
     return [stops, times]
 
@@ -366,7 +369,34 @@
     query = params.get('q', None).lower()
     matches = []
     for s in schedule.GetStopList():
-      if s.stop_id.lower().find(query) != -1 or s.stop_name.lower().find(query) != -1:
+      if s.stop_name.lower().find(query) != -1 or s.stop_code.lower().find(query) != -1:
+        matches.append(StopToTuple(s))
+    return matches
+
+  def handle_json_GET_stopnamesearch(self, params):
+    schedule = self.server.schedule
+    query = params.get('q', None).lower()
+    matches = []
+    for s in schedule.GetStopList():
+      if s.stop_name.lower().find(query) != -1:
+        matches.append(StopToTuple(s))
+    return matches
+  
+  def handle_json_GET_stopcodesearch(self, params):
+    schedule = self.server.schedule
+    query = params.get('q', None).lower()
+    matches = []
+    for s in schedule.GetStopList():
+      if s.stop_code.lower().find(query) != -1:
+        matches.append(StopToTuple(s))
+    return matches
+
+  def handle_json_GET_stopzonesearch(self, params):
+    schedule = self.server.schedule
+    query = params.get('q', None).lower()
+    matches = []
+    for s in schedule.GetStopList():
+      if s.zone_id != None and s.zone_id.lower().find(query) != -1:
         matches.append(StopToTuple(s))
     return matches
 
@@ -391,7 +421,6 @@
     # Need make a tuple to find correct bisect point
     time_trips = time_trips[bisect.bisect_left(time_trips, (time, 0)):]
     time_trips = time_trips[:15]
-    # TODO: combine times for a route to show next 2 departure times
     result = []
     for time, (trip, index), tp in time_trips:
       headsign = None
@@ -411,8 +440,9 @@
         if len(trip_name):
           trip_name += " - "
         trip_name += route.route_long_name
-      if headsign:
-        trip_name += " (Direction: %s)" % headsign
+        # comment out directions because we already have them in the long name
+      #if headsign:
+      #  trip_name += " (Direction: %s)" % headsign
       if service_period == None or trip.service_id == service_period:
         result.append((time, (trip.trip_id, trip_name, trip.service_id), tp))
     return result

--- a/busui/stop.php
+++ b/busui/stop.php
@@ -13,7 +13,8 @@
 foreach ($trips as $row)
 {
 echo  '<li>';
-echo '<h3><a href="trip.php?stopid='.$_REQUEST['stopid'].'&tripid='.$row[1][0].'">'.bracketsMeanNewLine($row[1][1]).'</a></h3>';      
+echo '<h3><a href="trip.php?stopid='.$_REQUEST['stopid'].'&tripid='.$row[1][0].'">'.$row[1][1];
+echo '<br><small>Via: '.viaPointNames($row[1][0],$_REQUEST['stopid']).'</small> </a></h3>';      
 echo '<p class="ui-li-aside"><strong>'.midnight_seconds_to_time($row[0]).'</strong></p>';
 echo '</li>';  
 }

--- a/busui/stopList.php
+++ b/busui/stopList.php
@@ -4,12 +4,22 @@
 echo'
 		<div data-role="navbar"> 
 			<ul> 
-				<li><a href="stopList.php">Timing Points</a></li> 
+				<li><a href="stopList.php">Timing Points</a></li>
+				<li><a href="stopList.php?suburbs=yes">By Suburb</a></li>
+				<li><a href="stopList.php?nearby=yes">Nearby Stops</a></li>
 				<li><a href="stopList.php?allstops=yes">All Stops</a></li> 
 			</ul>
                 </div>
 	';
-        
+// By suburb
+if (isset($_REQUEST['suburbs'])) {
+   echo '  <ul data-role="listview" data-filter="true" data-inset="true" >';
+   foreach ($suburbs as $suburb) {
+         echo  '<li><a href="stopList.php?suburb='.urlencode($suburb).'">'.$suburb.'</a></li>';
+   }
+echo '</ul>';
+} else {
+// Timing Points / All stops
         echo '<div class="noscriptnav"> Go to letter: ';
 foreach(range('A','Z') as $letter) 
 { 
@@ -22,7 +32,8 @@
 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";
+if ($_REQUEST['nearby']) $url = $APIurl."/json/neareststops?lat={$_REQUEST['lat']}&lon={$_REQUEST['lon']}&limit=15";
+if ($_REQUEST['suburb']) $url = $APIurl."/json/stopzonesearch?q={$_REQUEST['suburb']}";
 $contents = json_decode(getPage($url));
 debug(print_r($contents,true));
 foreach ($contents as $key => $row) {
@@ -42,7 +53,7 @@
       echo  '<li><a href="stop.php?stopid='.$row[0].'">'.bracketsMeanNewLine($row[1]).'</a></li>';
         }
 echo '</ul>';
-
+}
 include_footer();
 ?>
 

--- a/busui/trip.php
+++ b/busui/trip.php
@@ -1,6 +1,7 @@
 <?php
 include('common.inc.php');
 $tripid = $_REQUEST['tripid'];
+$stopid = $_REQUEST['stopid'];
 if ($_REQUEST['routeid']) {
     $url = $APIurl."/json/routetrips?route_id=".$_REQUEST['routeid'];
     $trips = json_decode(getPage($url));
@@ -30,7 +31,9 @@
 foreach ($stops as $key => $row)
 {
     echo  '<li>';
-echo '<h3><a href="stop.php?stopid='.$row[0].'">'.bracketsMeanNewLine($row[1]).'</a></h3>';      
+echo '<h3><a href="stop.php?stopid='.$row[0].'">'.bracketsMeanNewLine($row[1]);
+if ($row[0] == $stopid) echo "<br><small> Current Location</small>";
+echo '</a></h3>';      
 echo '<p class="ui-li-aside">'.midnight_seconds_to_time($times[$key]).'</p>';
 echo '</li>';       
 }

--- a/busui/view.sh
+++ b/busui/view.sh
@@ -1,8 +1,2 @@
-# input location (via GPS or favourites or search) and destination (via searchable list, optional)
-# http://10.0.1.153:8765/json/boundboxstops?n=-35.27568499917103&e=149.1346514225006&s=-35.279495003493516&w=149.12622928619385&limit=50
-# http://10.0.1.153:8765/json/stoptrips?stop=43&time=64440 # recursively call to show all services nearby, sort by distance, need to filter by service period
-# Hey, can pick destination again from a list filtered to places these stops go if you're curious!
-# http://10.0.1.153:8765/json/tripstoptimes?trip=2139 # Can recursively call and parse based on intended destination to show ETA
-# http://10.0.1.153:8765/json/triprows?trip=2139 # For pretty maps
 python schedule_viewer.py --feed=../maxious-canberra-transit-feed/cbrfeed.zip --key=ABQIAAAA95XYXN0cki3Yj_Sb71CFvBTPaLd08ONybQDjcH_VdYtHHLgZvRTw2INzI_m17_IoOUqH3RNNmlTk1Q
 

--- a/maxious-canberra-transit-feed/04-generateymlinclude.rb
+++ b/maxious-canberra-transit-feed/04-generateymlinclude.rb
@@ -27,7 +27,6 @@
 	time_points.each do |time_point|
 		#pp time_point
 		# 0 = name
-
 		# 1 = lat*100000
 		# 2 = lng*100000
 		#pp time_point[0]
@@ -45,8 +44,9 @@
 		# 1 = lat*100000
 		# 2 = lng*100000
 		# 3 = name
+		# 4 = suburb(s)
 		#pp time_point[0]
-		f2.puts "  - { name: #{stop[3]},stop_code: #{stop[0]}, lat: #{Float(stop[1])/10000000}, lng: #{Float(stop[2])/10000000}}"
+		f2.puts "  - { name: #{stop[3]},stop_code: #{stop[0]}, lat: #{Float(stop[1])/10000000}, lng: #{Float(stop[2])/10000000}, zone_id: #{stop[4]} }"
 	end
 	f2.puts "routes:\n";
 end

--- a/maxious-canberra-transit-feed/cbrtable.yml
+++ b/maxious-canberra-transit-feed/cbrtable.yml
@@ -228,1665 +228,1665 @@
   - { name: Woden Bus Station (Platform 9),stop_code: Woden Bus Station (Platform 9), lat: -35.3442083, lng: 149.0877771}
   - { name: Woodcock / Clare Dennis,stop_code: Woodcock / Clare Dennis, lat: -35.4422566, lng: 149.0854375}
   - { name: Yarralumla,stop_code: Yarralumla, lat: -35.30725, lng: 149.0972}
-  - { name: Cowper Street,stop_code: Wjz5SWN, lat: -35.2535974, lng: 149.1390827}
-  - { name: Learmonth Drive,stop_code: Wjz230G, lat: -35.4032475, lng: 149.0634951}
-  - { name: Hurtle Avenue,stop_code: Wjz1dX2, lat: -35.4341379, lng: 149.0831762}
-  - { name: Copland Drive,stop_code: Wjz67xQ, lat: -35.2046532, lng: 149.0691406}
-  - { name: Baddeley Crescent,stop_code: Wjz67nz, lat: -35.2006201, lng: 149.0659965}
-  - { name: King Edward Terrace,stop_code: Wjz4S1U, lat: -35.2983385, lng: 149.1296979}
-  - { name: Theodore Street,stop_code: Wjz3fCx, lat: -35.333256, lng: 149.0798309}
-  - { name: Hopetoun Circuit,stop_code: Wjz4A7o, lat: -35.3052441, lng: 149.107042}
-  - { name: Schlich Street,stop_code: Wjz4tpE, lat: -35.3038329, lng: 149.1005569}
-  - { name: Hopetoun Circuit,stop_code: Wjz4A2c, lat: -35.3082791, lng: 149.1066534}
-  - { name: Lawrence Wackett Crescent,stop_code: Wjz1HEb, lat: -35.4471149, lng: 149.1245306}
-  - { name: Chippindall Circuit,stop_code: Wjz1xWZ, lat: -35.4565002, lng: 149.1174205}
-  - { name: Goyder Street,stop_code: Wjzb705, lat: -35.3370433, lng: 149.1505109}
-  - { name: Clift Crescent,stop_code: Wjz1CdY, lat: -35.4270927, lng: 149.1090734}
-  - { name: Kingsford Smith Drive,stop_code: Wjr_UPA, lat: -35.1977713, lng: 149.0605874}
-  - { name: Clarey Crescent,stop_code: Wjz707Z, lat: -35.1948745, lng: 149.0637273}
-  - { name: Owen Dixon Drive,stop_code: Wjz70IY, lat: -35.1970964, lng: 149.0706179}
-  - { name: Copland Drive,stop_code: Wjz67BD, lat: -35.2015929, lng: 149.0686908}
-  - { name: Bimbimbie Street,stop_code: Wjz68Y0, lat: -35.2413091, lng: 149.0832098}
-  - { name: Bimbimbie Street,stop_code: Wjz68Ip, lat: -35.2412881, lng: 149.0809439}
-  - { name: Bandjalong Crescent,stop_code: Wjz5dQt, lat: -35.2573605, lng: 149.0822652}
-  - { name: Cooyong Street,stop_code: Wjz5NAQ, lat: -35.2794375, lng: 149.1349942}
-  - { name: Kambah pool Road,stop_code: WjrXMN9, lat: -35.3751239, lng: 149.0489789}
-  - { name: Hodgson Crescent,stop_code: Wjz3i6e, lat: -35.3603188, lng: 149.084779}
-  - { name: Melrose Drive,stop_code: Wjz3k1J, lat: -35.3528521, lng: 149.0854118}
-  - { name: Amy Ackman Street,stop_code: Wjz7ZaP, lat: -35.1710474, lng: 149.141884}
-  - { name: Cowper Street,stop_code: Wjz5Za5, lat: -35.2588175, lng: 149.1409439}
-  - { name: Gundaroo Drive,stop_code: Wjz7xp9, lat: -35.193896, lng: 149.1108506}
-  - { name: Constitution Avenue,stop_code: Wjz5MsT, lat: -35.2846782, lng: 149.133671}
-  - { name: Hindmarsh Drive,stop_code: WjrXBSS, lat: -35.3438051, lng: 149.0278253}
-  - { name: Northbourne Avenue,stop_code: Wjz5SrO, lat: -35.2528485, lng: 149.1336705}
-  - { name: Northbourne Avenue,stop_code: Wjz5Pl0, lat: -35.2681201, lng: 149.1312}
-  - { name: Northbourne Avenue,stop_code: Wjz5N5h, lat: -35.2790396, lng: 149.1288222}
-  - { name: Northbourne Avenue,stop_code: Wjz5RkN, lat: -35.2577065, lng: 149.1322899}
-  - { name: Kitchener Street,stop_code: Wjz3uK7, lat: -35.3382669, lng: 149.1024969}
-  - { name: Baldwin Drive,stop_code: Wjz6keB, lat: -35.2175697, lng: 149.0866478}
-  - { name: O'Loghlen Street,stop_code: Wjr-IGJ, lat: -35.2203467, lng: 149.0373003}
-  - { name: White Crescent,stop_code: Wjzd0oD, lat: -35.2874406, lng: 149.1552177}
-  - { name: Parliament Drive,stop_code: Wjz4INj, lat: -35.3091118, lng: 149.1261312}
-  - { name: Holman Street,stop_code: Wjz3fO2, lat: -35.3359729, lng: 149.0817737}
-  - { name: Scantlebury Crescent,stop_code: Wjz1HOf, lat: -35.4453654, lng: 149.1258946}
-  - { name: Lawrence Wackett Crescent,stop_code: Wjz1GsO, lat: -35.4499519, lng: 149.1226442}
-  - { name: Louis Loder Street,stop_code: Wjz1G32, lat: -35.4506139, lng: 149.1174495}
-  - { name: Heagney Crescent,stop_code: Wjz1TgM, lat: -35.4253782, lng: 149.1323625}
-  - { name: Baskerville Street,stop_code: Wjz1LBV, lat: -35.4218605, lng: 149.1241279}
-  - { name: O'Halloran Circuit,stop_code: WjrWYDO, lat: -35.3929049, lng: 149.058196}
-  - { name: Canopus Crescent,stop_code: Wjz6t9w, lat: -35.21597, lng: 149.09763}
-  - { name: Haydon Drive,stop_code: Wjz6hxB, lat: -35.2374959, lng: 149.0907853}
-  - { name: Baldwin Drive,stop_code: Wjz6rrI, lat: -35.2252509, lng: 149.1005016}
-  - { name: College Street,stop_code: Wjz681S, lat: -35.2428905, lng: 149.0745728}
-  - { name: Maribyrnong Avenue,stop_code: Wjz6y90, lat: -35.2324006, lng: 149.1079069}
-  - { name: Ellenborough Street,stop_code: Wjz6yzQ, lat: -35.2307289, lng: 149.1130906}
-  - { name: Aikman Drive,stop_code: Wjz69ht, lat: -35.2375061, lng: 149.0768646}
-  - { name: Boddington Crescent,stop_code: WjrWZA3, lat: -35.3893963, lng: 149.0571767}
-  - { name: Anketell  Street,stop_code: Wjz213w, lat: -35.4123171, lng: 149.0633299}
-  - { name: Athllon Drive,stop_code: Wjz3gQn, lat: -35.3725942