这是我的代码:
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对象上,还有关于walking和/或TRANSIT的信息。那么travelMode: google.maps.DirectionsTravelMode.TRANSIT
的含义是什么?!?!?
但我得到TypeError: google.maps.TransitVehicle is undefined
答案 0 :(得分:2)
您不能仅仅编写语法并希望它能够正常工作Transit VehicleType确实包含RAIL,但是TransitVehicle,并没有车辆属性。
Transit车辆中没有物业车辆。看看&#34;类型&#34;属性。
答案 1 :(得分: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']}
};
答案 2 :(得分:0)
您是否在文档中看到了这一点 -
https://developers.google.com/maps/documentation/javascript/reference#TransitVehicle
可能是.TRAIN而不是.RAIL