2013-01-15 21 views
0

我目前正在一個旅遊領域,我需要使用「Google Transit API V3」集成「旅行計劃」。我完成了設置地圖和旅行計劃員所需的全部選項。但在這裏我面臨着問題。設置在谷歌中轉出發和到達時間Api

我想在google API的「TransitDetails」對象中設置「arrival_time」和「departure_time」。我創建了一個對象,它返回路線上的交通細節。但不是按照在對象中傳遞的「出發」和「到達」選項。 這是我在代碼

var directions = new google.maps.DirectionsService(); 
var renderer = new google.maps.DirectionsRenderer(); 
var startLocationAutocomplete; 
var endLocationAutocomplete; 
var map, transitLayer; 

function initialize() { 
    var mapOptions = { 
     zoom:14, 
     center:new google.maps.LatLng(51.538551, -0.016633), 
     mapTypeId:google.maps.MapTypeId.ROADMAP 
    }; 

    map = new google.maps.Map(document.getElementById('map'), mapOptions); 

    google.maps.event.addDomListener(document.getElementById('go'), 'click', route); 


    var defaultBounds = new google.maps.LatLngBounds(
      new google.maps.LatLng(35.371359, -79.319916), 
      new google.maps.LatLng(36.231424, -77.752991)); 


    var autocompleteOptions = { 
     bounds:defaultBounds, 
     types:[ "locality", "political", "geocode" ] 
    }; 
    startLocationAutocomplete = new google.maps.places.Autocomplete(document.getElementById('from')); 
    endLocationAutocomplete = new google.maps.places.Autocomplete(document.getElementById('to')); 

    startLocationAutocomplete.bindTo('bounds', map); 
    endLocationAutocomplete.bindTo('bounds', map); 

    transitLayer = new google.maps.TransitLayer(); 

    var control = document.getElementById('transit-wpr'); 
    map.controls[google.maps.ControlPosition.TOP_RIGHT].push(control); 

    google.maps.event.addDomListener(control, 'click', function() { 
     transitLayer.setMap(transitLayer.getMap() ? null : map); 
    }); 

    addDepart(); 
    route(); 
} 

function addDepart() { 
    var departHr = document.getElementById('departHr'); 
    var departMin = document.getElementById('departMin'); 
    for (var hr = 1; hr < 12; hr++) { 
     departHr.innerHTML += '<option value = "'+hr+'">' + hr + '</option>'; 
    } 

    for (var i = 0; i < 12; i++) { 
     for (var j = 0; j < 60; j += 5) { 
      var x = i < 10 ? '0' + i : i; 
      var y = j < 10 ? '0' + j : j; 
      departMin.innerHTML += '<option value = "'+y+'">' + y + '</option>'; 
     } 
    } 
} 

function formatAMPM() { 
    var date = new Date(); 
    var hours = document.getElementById('departHr').value; 
    var minutes = document.getElementById('departMin').value; 
    var ampm = document.getElementById('timeFormat').value; 
    /*hours = hours % 12; 
    hours = hours ? hours : 12; // the hour '0' should be '12' 
    minutes = minutes < 10 ? '0' + minutes : minutes;*/ 
    console.log(hours); 
    if(ampm == 'pm'){ 
     hours = 12 + parseInt(hours);  } 
    var strTime = hours + ':' + minutes; 
    return strTime; 
} 

function route() { 
    var startLocation = document.getElementById('from').value; 
    var endLocation = document.getElementById('to').value; 
    var selectedMode = document.getElementById('modeOfTransportation').value; 
    var departure = formatAMPM(); 
    var bits = departure.split(':'); 
    var now = new Date(); 
    var tzOffset = (now.getTimezoneOffset() + 60) * 60 * 1000; 

    var time = ($('#travelDate').val() != '') ? new Date($('#travelDate').val()) : new Date(); 

    time.setHours(bits[0]); 
    time.setMinutes(bits[1]); 

    var ms = time.getTime() - tzOffset; 


    var departureTime = time; 


     var request = { 
      origin:startLocation, 
      destination:endLocation, 
      travelMode:google.maps.TravelMode[selectedMode], 
      provideRouteAlternatives:true, 
      transitOptions:{ 
       departureTime:departureTime 
      } 
     }; 


    console.log(request); 
    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); 
      console.log(status); 
     } else { 
      renderer.setPanel(null); 
      alert(status); 
     } 
    }); 

} 
google.maps.event.addDomListener(window, 'load', initialize); 

做過有人可以幫助我的任何參考或任何代碼暗示它是正確的。

感謝

回答

1

你需要做這樣的事情

//TranDep and TranArr have a valid date or '' 
if ((TranDep == '') && (TranArr == '')) var Transit = null; 
else { 
    if ((TranDep != '') && (TranArr != '')) 
    var Transit = {arrivalTime: new Date(TranArr), departureTime: new Date(TranDep)} 
    else { 
    if ((TranDep == '') && (TranArr != '')) 
     var Transit = {arrivalTime: new Date(TranArr)} 
    else 
     var Transit = {departureTime: new Date(TranDep)} 
    } 
} 

var Dir = new google.maps.DirectionsService(); 
var request = { 
     transitOptions: Transit, 
     ......... // the others properties 
}; 

如果你指定一個arrivalTime,該departureTime將被忽略。

Regards

+2

接受您的答案需要2年零9個月,先生。謝謝你的幫助。 –

相關問題