在谷歌地图上显示多条路线

6
我试图在同一张地图上显示多条路线,但一直无法实现。
无论我怎么做,始终只能得到一条路线。
function calcRoute() {
        var start = document.getElementById('start').value;
        var end = document.getElementById('end').value;
        var request = {
          origin: start,
          destination: end,
          travelMode: google.maps.DirectionsTravelMode.DRIVING
        };
        directionsService.route(request, function(response, status) {
          if (status == google.maps.DirectionsStatus.OK) {
            directionsDisplay.setDirections(response);
          }
        });
      }

任何指针都将有所帮助。
2个回答

17
我也遇到了同样的问题。这个来自 Google Maps 的 讨论串 显示了如何解决它。
这位作者是一位 Google 员工,他写道:
“您应该能够创建两个 DirectionsRenderer 对象,每个对象使用相同的地图和不同的 DirectionsResults。”
var map = new google.maps.Map(document.getElementById("map_canvas"));
function renderDirections(result) {
  var directionsRenderer = new google.maps.DirectionsRenderer;
  directionsRenderer.setMap(map);
  directionsRenderer.setDirections(result);
}

var directionsService = new google.maps.DirectionsService;
function requestDirections(start, end) {
  directionsService.route({
    origin: start,
    destination: end,
    travelMode: google.maps.DirectionsTravelMode.DRIVING
  }, function(result) {
    renderDirections(result);
  });
}
requestDirections('Huntsville, AL', 'Boston, MA');
requestDirections('Bakersfield, CA', 'Vancouver, BC');
我尝试过了,它确实有效。

0

你试过以下的代码吗?
这里我已经捕获了一个路径并显示出来了。你可以通过写 pointsArray = result.routes[1].overview_path; 并在一个新的循环中显示它来做到相同的效果。

directionsService.route (request, function (result, status) 
        {
            if (status == google.maps.DirectionsStatus.OK)
            {
                directionsDisplay.setDirections (result);
                pointsArray = result.routes[0].overview_path;

                var i = 0;
                var j = 0;

                for (j = 0; j < pointsArray.length; j++)
                {
                    var point1 = new google.maps.Marker ({
                                                    position:pointsArray [j],
                                                    draggable:false,
                                                    map:map,
                                                    flat:true
                                                    });
                }
            }
        });

是的,执行这个代码 result.routes[1].overview_path; 并不能给我第二条路线。 - AJ.
@AJ。也许在这种情况下没有第二条路线?你尝试过使用其他坐标集吗?无论如何,你能否在此处展示你的实际代码(包含result.routes[1].overview_path),以供他人测试? - Aquarius_Girl
谢谢Anisha。是的,有三条可用路线。我将在这里粘贴我的代码片段。 - AJ.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接