Google map alternative roads show with different colour

后端 未结 1 594
清酒与你
清酒与你 2020-12-22 09:28

I have the following google map JsFiddle - where i need to display multiple option between 2 location - what i did show only one route - need if possible 2 more to draw wit

相关标签:
1条回答
  • 2020-12-22 10:16
    1. set the provideRouteAlternatives option to the DirectionsRequest to true

    provideRouteAlternatives
    Type: boolean Whether or not route alternatives should be provided. Optional.

    1. add a second loop to process any additional routes returned

      service.route({
          origin: src,
          destination: des,
          provideRouteAlternatives: true,
          travelMode: google.maps.DirectionsTravelMode.DRIVING
      }, function (result, status) {
          if (status == google.maps.DirectionsStatus.OK) {
              for (var j = 0; j < result.routes.length; j++) {
                  var path = new google.maps.MVCArray();
                  polyArray.push(new google.maps.Polyline({
                     map: map,
                     strokeColor: colors[j],
                     strokeOpacity: 1.0,
                     strokeWeight: 5
                  }));
                  polyArray[polyArray.length - 1].setPath(path);
                  for (var i = 0, len = result.routes[j].overview_path.length; i < len; i++) {
                      path.push(result.routes[j].overview_path[i]);
                  }
              }
          }
      });
      

    proof of concept fiddle

    code snippet:

    $(document).ready(function() {
    
      var markers = [
    
        {
          "title": '',
          "lat": '56.965969',
          "lng": '24.143496',
          "description": ''
        }, {
          "title": '',
          "lat": '56.966259',
          "lng": '24.385860',
          "description": ''
        }
      ];
      var mapOptions = {
        zoom: 11,
        center: new google.maps.LatLng(56.975749, 24.279310),
        scrollwheel: false,
        navigationControl: false,
        mapTypeControl: false,
        scaleControl: false,
        draggable: false
      };
      var service = new google.maps.DirectionsService();
      var polyArray = [];
      var infoWindow = new google.maps.InfoWindow();
      var map = new google.maps.Map(document.getElementById("map_1"), mapOptions);
    
    
      var lat_lng = new Array();
      var colors = ['#ff0000', '#00ff00', '#0000ff', '#ffff00', '#ff00ff', '#00ffff'];
      var image = 'http://maps.google.com/mapfiles/ms/micons/blue.png';
      var marker = new google.maps.Marker({
        position: new google.maps.LatLng(56.966259, 24.385860),
        map: map,
        title: 'Sillava',
        icon: image
      });
      for (i = 0; i < markers.length; i++) {
        var data = markers[i];
        var myLatlng = new google.maps.LatLng(data.lat, data.lng);
        lat_lng.push(myLatlng);
    
      }
    
      for (var i = 0; i < lat_lng.length; i++) {
        if ((i + 1) < lat_lng.length) {
          var src = lat_lng[i];
          var des = lat_lng[i + 1];
          // path.push(src);
          // poly.setPath(path);
          service.route({
            origin: src,
            destination: des,
            provideRouteAlternatives: true,
            travelMode: google.maps.DirectionsTravelMode.DRIVING
          }, function(result, status) {
            if (status == google.maps.DirectionsStatus.OK) {
              for (var j = 0; j < result.routes.length; j++) {
                var path = new google.maps.MVCArray();
                polyArray.push(new google.maps.Polyline({
                  map: map,
                  strokeColor: colors[j],
                  strokeOpacity: 1.0,
                  strokeWeight: 5
                }));
                polyArray[polyArray.length - 1].setPath(path);
                for (var i = 0, len = result.routes[j].overview_path.length; i < len; i++) {
                  path.push(result.routes[j].overview_path[i]);
                }
              }
            }
          });
        }
      }
    
    });
    .map {
      width: 100%;
      height: 100%;
    }
    body,
    html {
      width: 100%;
      height: 100%;
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <script src="https://maps.googleapis.com/maps/api/js"></script>
    <div id="map_1" class="map"></div>

    0 讨论(0)
提交回复
热议问题