这是我的代码:如何在Google地图上绘制铁路路线?
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
你可能会在导航服务在这里找到一些有用的例子:https://developers.google.com/maps/documentation/javascript/directions# TravelModes虽然我想知道API中的TRANSIT支持是否可以指定到RAIL级别(而不是公交车或“索道车”) - 他们最近刚刚为API添加了Transit Directions支持(来源:http:// googlegeodevelopers .blogspot.com.au/2012/06/public-transit-routing-and-layer-now.html) – roy
有没有RAIL或BUS的例子:( – markzzz
您可能需要重新思考Google Maps API如何让您点击它的公共交通层你有文档证明它在Transit层上提供了这些选项?我的猜测是,它目前可能不会。对于上下文来说,这是一个解释(后来)为什么他们为开发人员提供Transit路线的这种困难(而不是步行或驾驶,而不需要世界各地大量公共交通机构许可数据):http ://code.google.com/p/gmaps-api-issues/issues/detail?id = 713#c76 – roy