Я также ищу ответ на ваш вопрос. А пока попробую сам разобраться и выложу, если найду что-нибудь полезное.
Обновление: после нескольких минут в JavaScript я обнаружил, что объект DirectionsResult содержит массив путевых точек, включая те, которые создаются, когда путь перетаскивается курсором. Если вы завершили учебное пособие Draggable Directions , вы можете получить доступ к этому объекту с помощью directionsDisplay.directions внутри метода обратного вызова для события directions_changed . Этот объект содержит член с именем sf , который содержит массив waypoints , если они есть, если нет, то он равен нулю. Каждый элемент этого массива содержит элемент с именем location , в котором хранятся координаты под wa (широта) и ya (долгота).
Чтобы продемонстрировать обработку путевых точек, я написал небольшую функцию, которая отображает маркеры вместо путевых точек. Чтобы проверить это, добавьте следующую глобальную переменную в скрипт:
var markers = [];
изменить функцию обратного вызова события directions_changed
google.maps.event.addListener(directionsDisplay, 'directions_changed', function() {
computeTotalDistance(directionsDisplay.directions);
});
на следующее;
google.maps.event.addListener(directionsDisplay, 'directions_changed', function() {
computeTotalDistance(directionsDisplay.directions);
displayWaypoints(directionsDisplay.directions);
});
и добавьте эту функцию тоже
function displayWaypoints(result) {
for (var i = 0; i < markers.length; ++i) {
markers[i].setMap(null);
}
markers = [];
if (result.sf.waypoints) {
for (var i = 0; i < result.sf.waypoints.length; ++i) {
var latitude = result.sf.waypoints[i].location.wa;
var longitude = result.sf.waypoints[i].location.ya;
markers.push(new google.maps.Marker({
position: new google.maps.LatLng(latitude, longitude),
map: map
}));
}
}
}
Возможно, вы также захотите подавить встроенный маркер рисования DirectionsRenderer.
Заменить
var rendererOptions = {
draggable: true
};
со следующим
var rendererOptions = {
draggable: true,
suppressMarkers: true
};
Я не смог найти официальных ссылок на этого sf участника. Используйте его на свой страх и риск, Google может изменить API без предварительного уведомления. Пока они не сделают публичный API для манипулирования путевыми точками после перетаскивания направлений, я не могу придумать лучшего решения.
Это мой первый ответ о переполнении стека, надеюсь, я вам помог.
С уважением,
Johnny