我使用了 tutsplus 中的以下代码,并将其调整为使用过境选项,除非它在没有出发时间选项的情况下不起作用,而且我无法让它工作。
我已经尝试了所有可能的方法来添加离开时间/到达时间(离开时间和到达时间,但我无法让它工作!请帮帮我!!!
这真的对我没有任何帮助:https ://developers.google.com/maps/documentation/javascript/directions?hl=fr
真的很感激这个!
var WPmap = {
// HTML Elements we'll use later!
mapContainer : document.getElementById('map-container'),
dirContainer : document.getElementById('dir-container'),
toInput : document.getElementById('map-config-address'),
fromInput : document.getElementById('from-input'),
unitInput : document.getElementById('unit-input'),
travelMode : document.getElementById('travel-mode'),
startLatLng : null,
// Google Maps API Objects
dirService : new google.maps.DirectionsService(),
dirRenderer : new google.maps.DirectionsRenderer(),
map:null,
showDirections:function (dirResult, dirStatus) {
if (dirStatus != google.maps.DirectionsStatus.OK) {
switch (dirStatus){
case "ZERO_RESULTS" : alert ('Sorry, we can\'t provide directions to that address. Please try again.')
break;
case "NOT_FOUND" : alert('Sorry we didn\'t understand the address you entered - Please try again.');
break;
default : alert('Sorry, there was a problem generating the directions. Please try again.')
}
return;
}
// Show directions
WPmap.dirRenderer.setMap(WPmap.map);
WPmap.dirRenderer.setPanel(WPmap.dirContainer);
WPmap.dirRenderer.setDirections(dirResult);
},
getStartLatLng:function () {
var n = WPmap.toInput.value.split(",");
WPmap.startLatLng = new google.maps.LatLng(n[0], n[1]);
},
getSelectedUnitSystem:function () {
return WPmap.unitInput.options[WPmap.unitInput.selectedIndex].value == 'metric' ?
google.maps.DirectionsUnitSystem.METRIC :
google.maps.DirectionsUnitSystem.IMPERIAL;
},
getSelectedTravelMode:function () {
return WPmap.travelMode.options[WPmap.travelMode.selectedIndex].value == 'driving' ?
google.maps.DirectionsTravelMode.DRIVING :
google.maps.DirectionsTravelMode.WALKING;
google.maps.DirectionsTravelMode.TRANSIT;
},
getDirections:function () {
var fromStr = WPmap.fromInput.value; //Get the postcode that was entered
var dirRequest = {
origin : fromStr,
destination : WPmap.startLatLng,
travelMode : WPmap.getSelectedTravelMode(),
unitSystem : WPmap.getSelectedUnitSystem()
};
WPmap.dirService.route(dirRequest, WPmap.showDirections);
},
init:function () {
//get the content
var infoWindowContent = WPmap.mapContainer.getAttribute('data-map-infowindow');
var initialZoom = WPmap.mapContainer.getAttribute('data-map-zoom');
WPmap.getStartLatLng();
//setup the map.
WPmap.map = new google.maps.Map(WPmap.mapContainer, {
scrollwheel: false,
zoom:parseInt(initialZoom), //ensure it comes through as an Integer
center:WPmap.startLatLng,
mapTypeId:google.maps.MapTypeId.HYBRID
});
//setup the red pin marker
marker = new google.maps.Marker({
map:WPmap.map,
position:WPmap.startLatLng,
draggable:false
});
//set the infowindow content
infoWindow = new google.maps.InfoWindow({
content:infoWindowContent
});
infoWindow.open(WPmap.map, marker);
//listen for when Directions are requested
google.maps.event.addListener(WPmap.dirRenderer, 'directions_changed', function () {
infoWindow.close(); //close the first infoWindow
marker.setVisible(false); //remove the first marker
//setup strings to be used.
var distanceString = WPmap.dirRenderer.directions.routes[0].legs[0].distance.text;
//set the content of the infoWindow before we open it again.
infoWindow.setContent('Thanks!<br /> It looks like you\'re about <strong> ' + distanceString + '</strong> away from us. <br />Directions are just below the map');
//re-open the infoWindow
infoWindow.open(WPmap.map, marker);
setTimeout(function () {
infoWindow.close()
}, 8000); //close it after 8 seconds.
});
}//init
};
google.maps.event.addDomListener(window, 'load', WPmap.init);