Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用航路点查找路线_Javascript_Google Maps_Google Maps Api 3_Url Routing - Fatal编程技术网

Javascript 使用航路点查找路线

Javascript 使用航路点查找路线,javascript,google-maps,google-maps-api-3,url-routing,Javascript,Google Maps,Google Maps Api 3,Url Routing,我正在使用javascript、google maps api v3和pgoruting查找两点之间的路线。现在我有了下面的方法,当我只给出一个航路点时,它可以很好地工作。但当我有一个以上的航路点时,它就不起作用了。有多个航路点时的格式用此符号“|”确定。因此,例如:36.762121,14.7866553 | 35.9887778,14.655444333 javascript方法如下所示: function calcRoute() { var all_nodes =

我正在使用javascript、google maps api v3和pgoruting查找两点之间的路线。现在我有了下面的方法,当我只给出一个航路点时,它可以很好地工作。但当我有一个以上的航路点时,它就不起作用了。有多个航路点时的格式用此符号
“|”
确定。因此,例如:
36.762121,14.7866553 | 35.9887778,14.655444333

javascript方法如下所示:

   function calcRoute() {

        var all_nodes = document.getElementById('result').innerHTML;
        var node = all_nodes.split("|");

        var start = node[0];
        var end = node[node.length - 1];
        var wpts = [];

        for (var i = 1; i < node.length-1; i++) {
            wpts.push({
                location:node[i],
                stopover:true
            });
        }

        var request = {
            origin: start,
            destination: end,
            waypoints: wpts,
            travelMode: google.maps.TravelMode.DRIVING
        };

        directionsService.route(request, function (response, status) {
            if (status == google.maps.DirectionsStatus.OK) {
                directionsDisplay.setDirections(response);
            } else {
                alert('No route found');
            }
        });
    }      
函数calcRoute(){
var all_nodes=document.getElementById('result').innerHTML;
var node=所有_节点。拆分(“|”);
var start=node[0];
var end=node[node.length-1];
var-wpts=[];
对于(变量i=1;i
实际不正确的航路点是位置数组:LatLng和stopover:true或false,它们不使用管道分隔符。请参考前面的建议,这可能有助于获取位置的google对象,也可能有助于提供lat和两个单独的实体

    for (var i = 1; i < node.length-1; i = i + 1) {
        node[i] = node[i].split(',');
        wpts.push({
            location:new google.maps.LatLng(node[i][0], node[i][1]),
            stopover:true
        });
    }
for(变量i=1;i
我已经发布了链接指示的修改后的javascript代码,但当我给出多个航路点时,将不会显示任何路线。知道为什么会这样吗@David Chases请发布任何新的或修改过的代码,这样我可以帮助你,基于此a可以是一个包含位置的对象,它是google.maps.LatLng或字符串,但当它是字符串时,我相信它应该是一个地址,而不是两个坐标。你有没有一个不起作用的示例?这很好:
36.762121,14.7866553 | 35.9887778,14.655444333
也一样:
36.762121,14.7866553 |意大利米兰|瑞士苏黎世| 35.9887778,14.655444333
我已经在我发布的函数中尝试了上述示例,但没有结果@geocodezipCompare将您的版本复制到。唯一的区别是字符串的来源。由于您没有发布页面的这一部分,我没有复制它。如果您将坐标转换为google.maps.LatLng对象,而不是依靠方向服务将该字符串识别为坐标,则会复制它。当然。如果拆分有效,它将只适用于lat-long,而不适用于文本条目,因此可能没有实际意义。当然,除非文本中有逗号