Каждый отрезок вашего маршрута представляет собой набор шагов, и в случае, если вы отправили, каждый отрезок соответствует направлениям между одной из ваших остановок (начало, путевые точки, пункт назначения).
leg[0]
от Перта до Аделаиды leg[1]
от Аделаиды до Брокен-Хилла leg[2]
от Брокен-Хилла до Сиднея
Так что у вас ничего не будет вvia_waypoints
prop.
Вам нужно установить stopover: false
в ваших путевых точках, если вы хотите, чтобы они не рассматривались как реальная остановка.Затем вы получите заполненное свойство via_waypoints
для каждого этапа (если их больше одного).
waypoints: [{
location: 'Adelaide, SA',
stopover: false
}, {
location: 'Broken Hill, NSW',
stopover: false
}],
Затем вы можете выполнить итерацию по via_waypoints
и получить координаты.
lat
и lng
- это методы, а не свойства, поэтому вам нужно вызвать их, например:
let firstWaypointLat = result.routes[0].legs[0].via_waypoints[0].lat();
Пример ниже, как получить координаты путевых точек:
function initMap() {
var map = new google.maps.Map(document.getElementById('map-canvas'), {
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,
panel: document.getElementById('right-panel')
});
directionsDisplay.addListener('directions_changed', function() {
computeTotalDistance(directionsDisplay.getDirections());
});
displayRoute('Perth, WA', 'Sydney, NSW', directionsService,
directionsDisplay);
}
function displayRoute(origin, destination, service, display) {
service.route({
origin: origin,
destination: destination,
waypoints: [{
location: 'Adelaide, SA',
stopover: false
}, {
location: 'Broken Hill, NSW',
stopover: false
}],
travelMode: 'DRIVING',
avoidTolls: true
}, function(response, status) {
if (status === 'OK') {
display.setDirections(response);
} else {
alert('Could not display directions due to: ' + status);
}
});
}
function computeTotalDistance(result) {
let leg = result.routes[0].legs[0];
for (let i=0; i<leg.via_waypoints.length; i++) {
console.log('Waypoint ' + i + ' coords: ' + leg.via_waypoints[i].lat() + ', ' + leg.via_waypoints[i].lng());
}
}
initMap();
#map-canvas {
height: 180px;
}
<div id="map-canvas"></div>
<!-- Replace the value of the key parameter with your own API key. -->
<script src="//maps.googleapis.com/maps/api/js?key=AIzaSyCkUOdZ5y7hMm0yrcCQoCvLwzdM6M8s5qk&callback=initMap">
</script>