Difference between revisions of "Widget:GTform"

From Transit.Wiki
(Created page with "<form action="http://www.google.com/transit"> <input type="hidden" name="ie" value="UTF8"> <input type="hidden" name="f" value="d"> Start adress <input type="text" style="widt...")
 
m
Line 1: Line 1:
<form action="http://www.google.com/transit"> <input type="hidden" name="ie" value="UTF8"> <input type="hidden" name="f" value="d"> Start adress <input type="text" style="width:20em" size="20" name="saddr" tabindex="1" maxlength="2048"/> <br>e.g. 4412 se 17th ave, Portland, OR
+
      <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
 +
    <script>
 +
      var directions = new google.maps.DirectionsService();
 +
      var renderer = new google.maps.DirectionsRenderer();
 +
      var map, transitLayer;
  
<!-- Code meeting location, date and time below --> <input type="hidden" name="daddr" value="Burnside St & SW Broadway, Portland, OR" <input type="hidden" name="ttype" value="arr"> <input type="hidden" name="date" value="2/13"> <input type="hidden" name="time" value="7:30pm">
+
      function initialize() {
 +
        var mapOptions = {
 +
          zoom: 5,
 +
          center: new google.maps.LatLng(38.6, -114.6),
 +
          mapTypeId: google.maps.MapTypeId.ROADMAP
 +
        };
  
<!-- Optional location hint to help a partial address in saddr work. Get the sll and sspan values by moving the map over the area of interest in clicking on "Link". If you edit these don't forgot to remove them from the html comment. --> <!-- <input type="hidden" name="sspan" value="0.1232,0.2211"> <input type="hidden" name="sll" value="37.7587,-122.4415"> -->
+
        map = new google.maps.Map(document.getElementById('map'), mapOptions);
  
<br><input type="submit" value="Get Directions" /> </form>
+
        google.maps.event.addDomListener(document.getElementById('go'), 'click',
 +
        route);
 +
 
 +
        transitLayer = new google.maps.TransitLayer();
 +
 
 +
        var control = document.getElementById('transit-wpr');
 +
 
 +
        google.maps.event.addDomListener(control, 'click', function() {
 +
          transitLayer.setMap(transitLayer.getMap() ? null : map);
 +
        });
 +
 
 +
        addDepart();
 +
        route();
 +
      }
 +
 
 +
      function addDepart() {
 +
        var depart = document.getElementById('depart');
 +
        for (var i = 0; i < 24; i++) {
 +
          for (var j = 0; j < 60; j += 15) {
 +
          var x = i < 10 ? '0' + i : i;
 +
          var y = j < 10 ? '0' + j : j;
 +
          depart.innerHTML += '<option>' + x + ':' + y + '</option>';
 +
        }
 +
        }
 +
      }
 +
 
 +
      function route() {
 +
        var departure = document.getElementById('depart').value;
 +
        var bits = departure.split(':');
 +
        var now = new Date();
 +
        var tzOffset = (now.getTimezoneOffset() + 60) * 60 * 1000;
 +
 
 +
        var time = new Date();
 +
        time.setHours(bits[0]);
 +
        time.setMinutes(bits[1]);
 +
 
 +
        var ms = time.getTime();
 +
        if (ms < now.getTime()) {
 +
          ms += 24 * 60 * 60 * 1000;
 +
        }
 +
 
 +
        var departureTime = new Date(ms);
 +
 
 +
        var request = {
 +
          origin: document.getElementById('from').value,
 +
          destination: document.getElementById('to').value,
 +
          travelMode: google.maps.DirectionsTravelMode.TRANSIT,
 +
          provideRouteAlternatives: true,
 +
          transitOptions: {
 +
            departureTime: departureTime
 +
          }
 +
        };
 +
 
 +
        var panel = document.getElementById('panel');
 +
        panel.innerHTML = '';
 +
        directions.route(request, function(response, status) {
 +
          if (status == google.maps.DirectionsStatus.OK) {
 +
            renderer.setDirections(response);
 +
            renderer.setMap(map);
 +
            renderer.setPanel(panel);
 +
          } else {
 +
            renderer.setMap(null);
 +
            renderer.setPanel(null);
 +
          }
 +
        });
 +
 
 +
      }
 +
 
 +
      google.maps.event.addDomListener(window, 'load', initialize);
 +
    </script>
 +
      <div id="info">
 +
        <div>
 +
          <h2>Transit directions</h2>
 +
        </div>
 +
        <div>
 +
          <label>from:</label>
 +
          <input class="input" id="from" value="">
 +
        </div>
 +
        <div>
 +
  <label>to:</label>
 +
  <input class="input" id="to" value="">
 +
        </div>
 +
        <div>Depart at <select id="depart"></select></div>
 +
        <div class="btn">
 +
          <button id="go">Get Directions</button>
 +
        </div>
 +
      </div>
 +
    <div id="transit-wpr">
 +
</div>
 +
    <div id="map" style="border: 1px solid black; position:absolute; width:398px; height:398px"></div>
 +
    <div id="panel-wpr" style="position:absolute; left: 410px; width:240px; height:400px; overflow: auto">
 +
 
 +
      <div id="panel"></div>
 +
    </div>

Revision as of 00:18, 6 June 2013

     <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
   <script>
     var directions = new google.maps.DirectionsService();
     var renderer = new google.maps.DirectionsRenderer();
     var map, transitLayer;
     function initialize() {
       var mapOptions = {
         zoom: 5,
         center: new google.maps.LatLng(38.6, -114.6),
         mapTypeId: google.maps.MapTypeId.ROADMAP
       };
       map = new google.maps.Map(document.getElementById('map'), mapOptions);
       google.maps.event.addDomListener(document.getElementById('go'), 'click',
       route);
       transitLayer = new google.maps.TransitLayer();
       var control = document.getElementById('transit-wpr');
       google.maps.event.addDomListener(control, 'click', function() {
         transitLayer.setMap(transitLayer.getMap() ? null : map);
       });
       addDepart();
       route();
     }
     function addDepart() {
       var depart = document.getElementById('depart');
       for (var i = 0; i < 24; i++) {
         for (var j = 0; j < 60; j += 15) {
         var x = i < 10 ? '0' + i : i;
         var y = j < 10 ? '0' + j : j;
         depart.innerHTML += '<option>' + x + ':' + y + '</option>';
       }
       }
     }
     function route() {
       var departure = document.getElementById('depart').value;
       var bits = departure.split(':');
       var now = new Date();
       var tzOffset = (now.getTimezoneOffset() + 60) * 60 * 1000;
       var time = new Date();
       time.setHours(bits[0]);
       time.setMinutes(bits[1]);
       var ms = time.getTime();
       if (ms < now.getTime()) {
         ms += 24 * 60 * 60 * 1000;
       }
       var departureTime = new Date(ms);
       var request = {
         origin: document.getElementById('from').value,
         destination: document.getElementById('to').value,
         travelMode: google.maps.DirectionsTravelMode.TRANSIT,
         provideRouteAlternatives: true,
         transitOptions: {
           departureTime: departureTime
         }
       };
       var panel = document.getElementById('panel');
       panel.innerHTML = ;
       directions.route(request, function(response, status) {
         if (status == google.maps.DirectionsStatus.OK) {
           renderer.setDirections(response);
           renderer.setMap(map);
           renderer.setPanel(panel);
         } else {
           renderer.setMap(null);
           renderer.setPanel(null);
         }
       });
     }
     google.maps.event.addDomListener(window, 'load', initialize);
   </script>

Transit directions

         <label>from:</label>
         <input class="input" id="from" value="">

<label>to:</label> <input class="input" id="to" value="">

Depart at <select id="depart"></select>
         <button id="go">Get Directions</button>