2013-03-03 105 views
0

我正在寻找使用javascript,谷歌地图api v3和pgoruting两点之间的路线。现在我有下面的方法,当我只给一个航点时,它可以正常工作。但是当我不止一个航点的时候它不起作用。有多个航点的格式与此符号'|'一致。因此,对于例如:36.762121,14.7866553|35.988777778,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'); 
      } 
     }); 
    }  
+0

您是否有一个示例_doesn't_ work?这工作正常:'36.762121,14.7866553 | 35.988777778,14.655444333' – geocodezip 2013-03-03 15:37:26

+0

正如[this](http://www.geocodezip.com/v3_GoogleEx_directions-waypoints_fromString.html):'36.762121,14.7866553 |意大利米兰|瑞士苏黎世| 35.988777778,14.655444333' – geocodezip 2013-03-03 15:46:21

+0

我已经尝试了上面的例子,我已发布的功能,我没有结果。 @geocodezip – 2013-03-03 16:01:39

回答

1

实际这就是不正确的航点是位置的数组:经纬度和中途停留:真的还是假的,他们不使用管道分隔符,请参阅Waypoints

+0

我已经发布了我的修改后的JavaScript代码,如链接所示,但仍然当我给它多个航点时,不会显示任何路线。任何想法为什么会发生?@David Chase – 2013-03-03 15:06:28

+0

请发布任何新的或修改的代码,这样我可以帮助你基于那个 – 2013-03-03 15:38:25

+0

A [waypoint](https://developers.google.com/maps/documentation/javascript/reference #DirectionsWaypoint)可以是包含位置的对象,该位置是google.maps.LatLng或字符串,但w如果它是一个字符串,我相信它是一个地址,而不是两个坐标。 – geocodezip 2013-03-03 15:39:38

0

如前所述,它可能有助于获得位置的谷歌对象,它也可能有助于提供经纬度和长度为两个独立的实体。

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 
     }); 
    } 
+0

当然。如果拆分工作,它只能用于经济多头,而不是文本输入,因此可能是没有意义的。除非文字有逗号 – Rafe 2013-03-03 17:48:45