如何在Google地图上绘制铁路线? [英] How can I draw a railway route on Google Maps?

查看:954
本文介绍了如何在Google地图上绘制铁路线?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是我的代码:
$ b

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 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 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;

(k = 0; k polyline.getPath()。push(nextSegment [k]);
}
}
}


}
}
}
});

但:

<1>为何如此2)在DirectionsStatus的返回JSON对象中,只绘制路线的一部分?


2,还有关于步行和/或TRANSIT的信息。那么 travelmode的含义是什么:google.maps.DirectionsTravelMode.TRANSIT ?!?!?



但是我得到 TypeError:google.maps.TransitVehicle is undefined

解决方案

t只需编写语法并期望它能够工作 Transit VehicleType 包含RAIL,但 TransitVehicle ,不包含有一个车辆的财产。



在过境车辆没有物业车辆。看看类型属性。


This is my code:

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]);
                    }
                }
            }
        }
    });
}

Using travelMode: google.maps.DirectionsTravelMode.WALKING I see the line, but it is not what I'm looking for. I think I need .TRANSIT with some more options, like VehicleType.RAIL.

I don't know how to do it! I've tried on searching on Google, but couldn't find anything!


I think this is the right way to do this :

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]);
                        }                            
                    }
                }


            }
        }
    }
});

but :

1) why it draw only a part of route?

2) on the returned JSON object of DirectionsStatus, there are also info about walking and/or TRANSIT. So what's the meaning of travelMode: google.maps.DirectionsTravelMode.TRANSIT ?!?!?

but I get TypeError: google.maps.TransitVehicle is undefined

解决方案

You can't just make up syntax and expect it to work Transit VehicleType does include RAIL, but TransitVehicle, doesn't have a vehicle property.

There is no property vehicle in Transit vehicle. Look at the "type" property.

这篇关于如何在Google地图上绘制铁路线?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆