2012-01-28 23 views
6

Estoy tratando de mostrar varias rutas en el mismo mapa, pero no puedo hacerlo.Mostrar múltiples rutas en un mapa de Google

No importa lo que haga, obtengo solo una ruta.

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

Cualquier apuntador será útil.

Respuesta

0

¿Lo intentó de la siguiente manera?
Aquí he capturado una ruta y la he mostrado. Puede hacer lo mismo al escribir pointsArray = result.routes[1].overview_path; y mostrarlo en un nuevo ciclo.

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

sí haciendo esto result.routes [1] .overview_path; no me está dando la segunda ruta. –

+0

@AJ. Tal vez no hay una segunda ruta en este caso? ¿Has probado todo esto con algunos conjuntos de coordenadas diferentes también? De todos modos, ¿puede presentar su código actual aquí (que contiene result.routes [1] .overview_path) para que otros lo prueben? –

+0

Gracias Anisha. Sí, hay 3 rutas disponibles. Pegaré mi fragmento de código aquí. –

14

Tuve el mismo problema. This thread en un grupo de Google para Google maps muestra cómo hacerlo.

El autor (un empleado de Google), escribió esto:

Usted debe ser capaz de crear dos objetos, cada uno DirectionsRenderer que utilizan el mismo mapa y diferentes 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'); 

Lo he probado y funciona.

Cuestiones relacionadas