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

时间:2012-01-28 05:25:35

标签: google-maps

我试图在同一张地图上显示多条路线,但我无法这样做。

无论我做什么,我只能选择一条路线。

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 个答案:

答案 0 :(得分:15)

我遇到了同样的问题。用于Google地图的Google网上论坛的This thread显示了如何操作。

作者(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');

我尝试了它确实有效。

答案 1 :(得分: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
                                                    });
                }
            }
        });