方向服务谷歌API,可拖动的原点



首先,我将键入起点和目的地,它将显示从起点 A 到目的地 B 的显示路线。但是,我想使原点 A 可拖动,以便它将重新计算路线并显示给我。

 var directionsDisplay = new google.maps.DirectionsRenderer;
    var directionsService = new google.maps.DirectionsService;
    var map = new google.maps.Map(document.getElementById('map'), {
      mapTypeControl: false,
      center: {lat: 1.317206, lng: 103.772240},
      zoom: 13
    });
    new AutocompleteDirectionsHandler(map);
     directionsDisplay.setMap(map);
    directionsDisplay.setPanel(document.getElementById('right-panel'));
            var onChangeHandler = function() {
      calculateAndDisplayRoute(directionsService, directionsDisplay);
    };
    document.getElementById('destination-input').addEventListener('change', 
 onChangeHandler);
 }


  function calculateAndDisplayRoute(directionsService, 
 directionsDisplay) {
    var start = document.getElementById('origin-input').value;
    var end = document.getElementById('destination-input').value;

    directionsService.route({
      origin: start,
      destination: end,
      travelMode: 'DRIVING'
    }, function(response, status) {
      if (status === 'OK') {
        directionsDisplay.setDirections(response);
      }
    });
   }

下面提供了 HTML 代码。

<body>
<input id="origin-input" class="controls" type="text" 
    placeholder="Enter an origin location">
<input id="destination-input" class="controls" type="text"
    placeholder="Enter a destination location">
    <div id="map"></div>
</body>

下面是我当前项目的屏幕截图。截图

请尝试:

function initMap() {
    var map = new google.maps.Map(document.getElementById('map'), {
    zoom: 4,
    center: {lat: -24.345, lng: 134.46}  // Australia.
});
var directionsService = new google.maps.DirectionsService;
var directionsDisplay = new google.maps.DirectionsRenderer({
    draggable: true,
    map: map,
});
displayRoute('Perth, WA', 'Sydney, NSW', directionsService,
    directionsDisplay);
}
function displayRoute(origin, destination, service, display) {
    service.route({
        origin: origin,
        destination: destination,
        travelMode: 'DRIVING',
        avoidTolls: true
    }, function(response, status) {
        if (status === 'OK') {
            display.setDirections(response);
        } else {
            alert('Could not display directions due to: ' + status);
        }
    });
}

最新更新