Plotting more than 8 waypoints in Google Maps v3

前端 未结 3 1320
我在风中等你
我在风中等你 2020-12-05 20:51

Migrating code from Javascript API 2 to 3. I have a list of locations which i need to plot in the form of a driving directions. This was done in v2 using the following code<

3条回答
  •  青春惊慌失措
    2020-12-05 21:28

    As others said, it's imposable to do it using Google's JavaScript API. However, Google does allow up to 23 waypoints with a server-side request. So using PHP and JavaScript, I was able to make a workaround.

    What you have to do is get the "waypoint order" from the server side request and then have JavaScript give you directions between each location.

    routes[0]->waypoint_order) . ";\n";
    ?>
    
    var startLocation = {lat: 40.713, lng: -74.0135};
    var endLocation = {lat: 40.75773, lng: -73.985708};
    
    //get directions from the origin to the first waypoint
    var request = {
        origin: startLocation,
        destination: JSON.parse(places[waypointsOrder[0]][1]),
        travelMode: google.maps.TravelMode.DRIVING
    };
    directionsService.route(request, function (result, status) {
        if (status == google.maps.DirectionsStatus.OK) {
              renderDirections(result, map);
        }
    });
    
    //get directions from the last waypoint to the destination
    var request = {
        origin: JSON.parse(places[waypointsOrder[waypointsOrder.length-1]][1]),
        destination: endLocation,
        travelMode: google.maps.TravelMode.DRIVING
    };
    directionsService.route(request, function (result, status) {
        if (status == google.maps.DirectionsStatus.OK) {
              renderDirections(result, map);
        }
    });
    
    //get directions between each waypoint
    for (i = 1; i < waypointsOrder.length; i++) {
      var request = {
          origin: JSON.parse(places[waypointsOrder[i-1]][1]),
          destination: JSON.parse(places[waypointsOrder[i]][1]),
          travelMode: google.maps.TravelMode.DRIVING
      };
      directionsService.route(request, function (result, status) {
          if (status == google.maps.DirectionsStatus.OK) {
              renderDirections(result, map);
          }
      });
    }
    
    function renderDirections(result, map) {
      var directionsDisplay = new google.maps.DirectionsRenderer ({
        map: map
      });
      directionsDisplay.setMap(map); 
      directionsDisplay.setDirections(result); 
    }
    

提交回复
热议问题