我正在使用DirectionsService通过Google Maps JavaScript API获取路线。问题是我想获取单个步骤,但仍将它们作为mvc对象的一部分,因此当您单击它们时,它们将作为默认值呈现在地图上

directionsDisplay.setDirections(response);


做。
一些代码:

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

var request = {
        origin : a,
        destination : b,
        travelMode : google.maps.DirectionsTravelMode.DRIVING
};

directionsService.route(request, function(response, status) {

    if (status == google.maps.DirectionsStatus.OK) {
                directionsDisplay.setDirections(response);
          //Instead of setting directions to a panel i want to
          //set just one to a panel and yet have it link to the
          //map like the above does.
            }});

最佳答案

这个想法是,您必须遍历路线的每个分支,然后遍历该分支的每个步骤,并呈现自己的HTML来表示它。请参见以下代码(假设您已定义mapdirectionsDisplaydirectionsService,并且定义了request):

directionsService.route(request, function(response, status) {
  // Make sure the directions request was valid
  if (status == google.maps.DirectionsStatus.OK) {
    // Give the response to the directions display
    directionsDisplay.setDirections(response);

    // Display the route on the map
    directionsDisplay.setMap(map);

    // Grab the result from the routes
    var routeResult = response.routes[0];

    // Iterate over each leg of the route
    routeResult.legs.forEach(function(leg) {
      // Build HTML for each step
      var stepHTML = '';
      leg.steps.forEach(function(step) {
        stepHTML += '<div class="directionStep">'+
                  '<div>'+step.instructions+'</div>'+
                  '<div class="grey">'+step.distance.text+' ('+step.duration.text+')'+'</div>'+
                '</div>';
      });

      // Put the step HTML somewhere
      $('.steps').append(stepHTML);
    });
  }
});


然后,听每个步骤的点击,并做您需要做的一切作为回应。

09-07 15:41