0

我使用了 tutsplus 中的以下代码,并将其调整为使用过境选项,除非它在没有出发时间选项的情况下不起作用,而且我无法让它工作。

http://wp.tutsplus.com/tutorials/creative-coding/give-your-customers-driving-directions-with-the-google-maps-api/

我已经尝试了所有可能的方法来添加离开时间/到达时间(离开时间和到达时间,但我无法让它工作!请帮帮我!!!

这真的对我没有任何帮助: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);
4

1 回答 1

0

对您没有任何帮助的资源包含您需要的所有详细信息。

内部getDirections() 您必须transitOptions向 dirRequest 添加一个 -object,该对象必须包含arrivalTime- 或 -departureTime属性。两个对象的期望值是一个日期对象

下周五早上 8:00 出发的示例:

var dirRequest = {
        origin      : fromStr,
        destination : WPmap.startLatLng,
        travelMode  : WPmap.getSelectedTravelMode(),
        unitSystem  : WPmap.getSelectedUnitSystem(),
        transitOptions:{
                        departureTime: new Date(2013, 4, 10, 8, 0, 0)
                       }
    };

下周六下午 4:00 出发的示例:

    var dirRequest = {
        origin      : fromStr,
        destination : WPmap.startLatLng,
        travelMode  : WPmap.getSelectedTravelMode(),
        unitSystem  : WPmap.getSelectedUnitSystem(),
        transitOptions:{
                        arrivalTime: new Date(2013, 4, 11, 16, 0, 0)
                       }
    };
于 2013-05-08T23:33:40.590 回答