В Google Maps JavaScript API выбор режима транспорта определяет
способ построения маршрута, набор доступных параметров запроса и
структуру возвращаемых данных. Основой работы с маршрутами выступает
сервис DirectionsService и рендерер
DirectionsRenderer, а ключевым параметром —
travelMode.
В API предусмотрено четыре основных режима перемещения:
Каждый режим влияет на алгоритмы маршрутизации, учитываемые ограничения дорог и доступные атрибуты ответа.
Работа с режимами транспорта осуществляется через объект запроса для
DirectionsService.route.
const request = {
origin: "Almaty",
destination: "Astana",
travelMode: google.maps.TravelMode.DRIVING
};
const directionsService = new google.maps.DirectionsService();
directionsService.route(request, (result, status) => {
if (status === "OK") {
console.log(result);
}
});
Параметр travelMode определяет стратегию построения
маршрута и влияет на выбор дорог, пересадок и типов сегментов пути.
Режим автомобильной навигации ориентирован на дорожную сеть, оптимизированную для транспортных средств.
avoidTolls — избегать платных дорогavoidHighways — избегать автомагистралейavoidFerries — избегать паромных переправdrivingOptions — расширенные настройки (включая traffic
model)Пример:
const request = {
origin: "Point A",
destination: "Point B",
travelMode: google.maps.TravelMode.DRIVING,
avoidTolls: true,
avoidHighways: false,
drivingOptions: {
departureTime: new Date(),
trafficModel: "bestguess"
}
};
При указании departureTime API возвращает поле
duration_in_traffic, отражающее прогнозируемое время в пути
с учетом дорожной ситуации.
Пешеходный режим строит маршруты по доступной для пешеходов инфраструктуре.
Пример:
const request = {
origin: "Park",
destination: "Museum",
travelMode: google.maps.TravelMode.WALKING
};
Велосипедный режим строит маршруты с учетом инфраструктуры для велосипедистов.
Алгоритм приоритетно выбирает:
Пример:
const request = {
origin: "District 1",
destination: "District 2",
travelMode: google.maps.TravelMode.BICYCLING
};
Режим общественного транспорта является наиболее сложным по структуре данных.
transitOptions — настройки маршрута общественного
транспорта
departureTime — время отправленияarrivalTime — время прибытияmodes — типы транспорта (BUS, SUBWAY, TRAIN, TRAM)routingPreference — предпочтение пересадок или
скоростиПример:
const request = {
origin: "Station A",
destination: "Station B",
travelMode: google.maps.TravelMode.TRANSIT,
transitOptions: {
departureTime: new Date(),
modes: ["BUS", "SUBWAY"],
routingPreference: "FEWER_TRANSFERS"
}
};
Ответ включает дополнительные поля:
transit_details
line — информация о маршрутеvehicle — тип транспортаdeparture_stop и arrival_stopnum_stops — количество остановокРазличия между режимами отражаются не только в маршрутах, но и в структуре ответа:
В прикладных решениях часто реализуется переключение режимов без повторного создания сервиса:
function calculateRoute(mode) {
const request = {
origin: "Start",
destination: "End",
travelMode: mode
};
directionsService.route(request, (result, status) => {
if (status === "OK") {
directionsRenderer.setDirections(result);
}
});
}
calculateRoute(google.maps.TravelMode.WALKING);
calculateRoute(google.maps.TravelMode.DRIVING);
Такой подход позволяет сравнивать маршруты по времени, расстоянию и структуре.
Алгоритм маршрутизации внутри API использует разные критерии оптимизации:
Каждый режим фактически переключает набор графов дорожной сети, по которым строится путь.
Для режимов DRIVING и TRANSIT можно запрашивать альтернативные маршруты:
const request = {
origin: "A",
destination: "B",
travelMode: google.maps.TravelMode.DRIVING,
provideRouteAlternatives: true
};
В результате возвращается массив routes, позволяющий
анализировать несколько вариантов пути.
Режим транспорта тесно связан с дополнительными параметрами:
waypoints — промежуточные точки маршрутаoptimizeWaypoints — оптимизация порядка точекregion — приоритет региона маршрутизацииПример с промежуточными точками:
const request = {
origin: "A",
destination: "D",
waypoints: [
{ location: "B", stopover: true },
{ location: "C", stopover: true }
],
travelMode: google.maps.TravelMode.DRIVING
};
DirectionsRenderer автоматически адаптирует отображение
в зависимости от режима:
Дополнительно доступны:
polylineOptions)Некоторые ограничения зависят от режима:
При отсутствии данных API возвращает статус ошибки маршрута, например
ZERO_RESULTS.
При динамическом выборе режима транспорта важно учитывать повторное вычисление маршрута:
travelMode требует нового запросаТиповой цикл:
requestDirectionsService.routeDirectionsRenderertravelMode выступает центральным параметром,
определяющим:
Таким образом, режим транспорта не является просто параметром запроса, а переключает поведение всей подсистемы построения маршрутов внутри API.