1

我有一个关于路线服务 API 的问题。是否有混合旅行模式设置可以让我为自行车绘制路线,即使该特定街道上没有自行车道或者违反街道规则(甚至可能)。我想绘制一段从 A 到 B 的路段,该路段正好通过选定的道路,如果这条路实际上不允许沿该方向行驶,则不在周围。它不必在驾驶规则方面是正确的,它必须只是在街道上绘制。我尝试了自行车模式而不是驾驶模式,但没有任何区别。

我希望我的帖子有意义

蓝色是谷歌制作的路线,我需要黄色路线

调用示例:

function loadRoute0() {
  var request0 = {
    origin: new google.maps.LatLng(46.56300788, 15.62779705),
    destination: new google.maps.LatLng(46.55953332, 15.62616729),
    travelMode: google.maps.TravelMode.BICYCLING
  };

  directionsService.route(request0, function(result, status) {
    if (status == google.maps.DirectionsStatus.OK) {
      var renderer = new google.maps.DirectionsRenderer({
        polylineOptions: {
          strokeColor: "#00FF00"
        },
        suppressMarkers: true,
        map: map
      });
      renderer.setDirections(result);
    }
  });
}
4

1 回答 1

1

您可以使用TravelMode.WALKING, 这往往会为单向道路和其他不适用的路线提供结果TravelMode.DRIVING。您问题中的代码不会重现您发布的图片,但使用会TravelMode.WALKING返回一条路线(其中TravelMode.BICYCLING给出ZERO_RESULTS了发布的代码)

function loadRoute0() {
  var request0 = {
    origin: new google.maps.LatLng(46.56300788, 15.62779705),
    destination: new google.maps.LatLng(46.55953332, 15.62616729),
    travelMode: google.maps.TravelMode.WALKING
  };
  directionsService.route(request0, function(result, status) {
    if (status == google.maps.DirectionsStatus.OK) {
      var renderer = new google.maps.DirectionsRenderer({
        polylineOptions: {
          strokeColor: "#00FF00"
        },
        suppressMarkers: true,
        map: map
      });
      renderer.setDirections(result);
    } else
      console.log("status=" + status);
  });
}

结果地图的屏幕截图

结果地图的屏幕截图

代码片段:

var map;

function initialize() {
  map = new google.maps.Map(document.getElementById("map_canvas"));
  directionsService = new google.maps.DirectionsService();
  loadRoute0();

  function loadRoute0() {
    var request0 = {
      origin: new google.maps.LatLng(46.56300788, 15.62779705),
      destination: new google.maps.LatLng(46.55953332, 15.62616729),
      travelMode: google.maps.TravelMode.WALKING
    };
    var markerS = new google.maps.Marker({
      position: request0.origin,
      map: map,
      label: "S"
    });
    var markerE = new google.maps.Marker({
      position: request0.destination,
      map: map,
      label: "E"
    });
    directionsService.route(request0, function(result, status) {
      if (status == google.maps.DirectionsStatus.OK) {
        var renderer = new google.maps.DirectionsRenderer({
          polylineOptions: {
            strokeColor: "#00FF00"
          },
          suppressMarkers: true,
          map: map
        });
        renderer.setDirections(result);
      } else
        console.log("status=" + status);
    });
  }

}
google.maps.event.addDomListener(window, "load", initialize);
html,
body,
#map_canvas {
  height: 100%;
  width: 100%;
  margin: 0px;
  padding: 0px
}
<script src="https://maps.googleapis.com/maps/api/js"></script>
<div id="map_canvas"></div>

于 2018-06-09T19:40:44.743 回答