如何在构建路线后更改 google 地图 api 中路线的颜色

how to change color of route in google map api after route is build

您会发现许多已经给出的答案,展示了如何在其上构建具有不同颜色的路线how to change the color of route in google maps v3

我想知道如何在颜色已经构建和渲染后更改颜色。

我在地图上显示了很多不同的路线,但我想显示红色或更深的颜色,如果这个方向点是活动的,并将其他路线颜色更改为灰色,直到其中一个是活动的。

代码:

var directionsDisplay;
var directionsService = new google.maps.DirectionsService();
var map;

function initialize() {
  directionsDisplay = new google.maps.DirectionsRenderer({
    polylineOptions: {
      strokeColor: "red"
    }
  });

  var mapOptions = {
    zoom:7,
    mapTypeId: google.maps.MapTypeId.ROADMAP,
    center: {lat: 41.850033, lng: -87.6500523}
  }
  map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
  directionsDisplay.setMap(map);
}

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

google.maps.event.addDomListener(window, 'load', initialize);

演示如何不使用两条路线:http://jsfiddle.net/8xq4gd8y/15/

directionsRenderer class 有一个 setOptions 方法。见 documentation.

directionsDisplay.setOptions({
  polylineOptions: {
    strokeColor: 'red'
  }
});

要使其生效,您需要将其从地图中删除并重新添加以查看颜色变化。

例如,在事件侦听器中,您可以这样做:

google.maps.event.addListener(map, 'click', function() {

  directionsDisplay.setMap(null);

  directionsDisplay.setOptions({
    polylineOptions: {
      strokeColor: 'blue'
    }
  });

  directionsDisplay.setMap(map);
});

JSFiddle demo