1

これは私のコードです:

function trainRoute(startPoint, endPoint) {
    var polyline = new google.maps.Polyline({ strokeColor: '#af1a1a', strokeWeight: 2 });
    var directionsService = new google.maps.DirectionsService();
    var directionsDisplay = new google.maps.DirectionsRenderer({ polylineOptions: polyline, suppressMarkers: true });
    directionsDisplay.setMap(map);

    var request = {
        origin: startPoint,
        destination: endPoint,
        travelMode: google.maps.DirectionsTravelMode.TRANSIT 
    };

    directionsService.route(request, function (response, status) {
        if (status == google.maps.DirectionsStatus.OK) {
            directionsDisplay.setDirections(response);

            var legs = response.routes[0].legs;
            for (i = 0; i < legs.length; i++) {
                var steps = legs[i].steps;
                for (j = 0; j < steps.length; j++) {
                    var nextSegment = steps[j].path;
                    for (k = 0; k < nextSegment.length; k++) {
                        polyline.getPath().push(nextSegment[k]);
                        //bounds.extend(nextSegment[k]);
                    }
                }
            }
        }
    });
}

を使用するtravelMode: google.maps.DirectionsTravelMode.WALKINGと、行が表示されますが、探しているものではありません。.TRANSITのように、さらにいくつかのオプションが必要だと思いますVehicleType.RAIL

やり方がわからない!Googleで検索してみましたが、何も見つかりませんでした!


これはこれを行う正しい方法だと思います:

var request = {
    origin: puntoPartenza,
    destination: puntoArrivo,
    travelMode: google.maps.TravelMode.TRANSIT
};

directionsService.route(request, function (response, status) {
    if (status == google.maps.DirectionsStatus.OK) {
        directionsDisplay.setDirections(response);

        var legs = response.routes[0].legs;
        for (i = 0; i < legs.length; i++) {
            var steps = legs[i].steps;
            for (j = 0; j < steps.length; j++) {
                var transitMode = steps[j].travel_mode;

                if (transitMode == "TRANSIT") {
                    var vehicle = steps[j].transit.line.vehicle.type;
                    if (vehicle == "HEAVY_RAIL") {
                        var nextSegment = steps[j].path;

                        for (k = 0; k < nextSegment.length; k++) {
                            polyline.getPath().push(nextSegment[k]);
                        }                            
                    }
                }


            }
        }
    }
});

しかし :

1) なぜルートの一部だけを描くのですか?

2) 返された DirectionsStatus の JSON オブジェクトには、徒歩や TRANSIT に関する情報もあります。travelMode: google.maps.DirectionsTravelMode.TRANSITでは、 ?!?!?の意味は何ですか?

しかし、私は得るTypeError: google.maps.TransitVehicle is undefined

4

3 に答える 3

2

Transit VehicleTypeには RAIL が含まれていますが、TransitVehicleは vehicle プロパティがありません。

トランジット車両には所有車両はありません。「type」プロパティを見てください。

于 2012-11-14T13:48:19.027 に答える
1

これを試してもらえますか、私にはうまくいきました、

var directionsServiceRequest = {
                    destination: {lat: 39.79, lng: -86.14},
                    origin: {lat: 41.85, lng: -87.65},
                    travelMode: google.maps.TravelMode.TRANSIT,
                    transitOptions: {modes:['TRAIN']}
          };
于 2016-01-23T13:13:08.837 に答える
0

ドキュメントでこれを見ましたか-

https://developers.google.com/maps/documentation/javascript/reference#TransitVehicle .

おそらく.TRAINであり、.RAILではありません

于 2012-11-14T13:47:25.423 に答える