Google map alternative roads show with different colour

风流意气都作罢 提交于 2019-11-29 17:58:58
  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>
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!