Переход на класс Route

Разработчики из Европейской экономической зоны (ЕЭЗ)

Новая библиотека Routes Library и Maps JavaScript API включают класс Route, который заменяет устаревший сервис Directions. На этой странице объясняются различия между устаревшим сервисом прокладки маршрутов и новым классом Route, а также приводятся примеры кода для сравнения.

Сравнение сервиса Directions (устаревшего) и класса Route

Параметры запроса

В таблице ниже сравниваются параметры запроса для устаревшего сервиса Directions и класса Route.

Сервис Directions (устаревший) Route
Метод DirectionsService.route() Метод Route.computeRoutes()

Обязательные параметры

origin origin
destination destination
travelMode travelMode (необязательно)

Необязательные параметры

optimizeWaypoints optimizeWaypointOrder
provideRouteAlternatives computeAlternativeRoutes
avoidFerries, avoidHighways, avoidTolls routeModifiers
drivingOptions departureTime, trafficModel
region region
transitOptions transitPreference
arrivalTime arrivalTime
unitSystem units
waypoints intermediates

Сравнение методов

В таблице ниже сравниваются основные методы устаревшего сервиса Directions и класса Route.

Сервис Directions (устаревший) Route
Метод route() Метод computeRoutes()
Метод DirectionsRenderer.setDirections() Метод createPolylines(), метод createWaypointAdvancedMarkers()

Сравнение кода

В этом разделе сравниваются два похожих фрагмента кода, чтобы проиллюстрировать различия между устаревшим сервисом Directions и новым классом Route. Фрагменты кода показывают, какой код требуется для каждого API, чтобы сделать запрос маршрута, а затем использовать результат для рисования ломаной линии и маркеров на карте.

В устаревшем сервисе Directions для отображения ломаных линий и маркеров, представляющих результаты маршрута на карте, используется объект DirectionsRenderer. В библиотеке Routes объект DirectionsRenderer заменен методами createPolylines() и createWaypointAdvancedMarkers(). На этой странице объясняются различия между устаревшим сервисом Directions Service и новым классом Route, а также приводятся примеры кода для сравнения.

Автомобильные маршруты

Сервис Directions (устаревший)

В следующем примере кода маршрут прокладывается с помощью устаревшего сервиса Directions, а затем на карте рисуются ломаная линия и маркеры с помощью DirectionsRenderer.

// Define a simple request.
var request = {
  origin: 'Mountain View, CA',
  destination: 'San Francisco, CA',
  travelMode: 'DRIVING'
};
// Call the Directions Service to get the directions.
directionsService.route(request, function(result, status) {
  if (status == 'OK') {
    directionsRenderer.setDirections(result); // Add polyline and markers to the map.
  }
});

Класс маршрута

В следующем коде маршрут прокладывается с помощью нового класса Route, а затем используются методы createPolylines и createWaypointAdvancedMarkers, чтобы нарисовать на карте ломаную линию и маркеры.

Новый класс Route не отрисовывает маркеры автоматически. Чтобы отобразить маркеры, необходимо вызвать createWaypointAdvancedMarkers.

TypeScript

// Define a routes request.
const request: google.maps.routes.ComputeRoutesRequest = {
    origin: 'Mountain View, CA',
    destination: 'San Francisco, CA',
    travelMode: 'DRIVING',
    fields: ['path'], // Request fields needed to draw polylines.
};

// Call computeRoutes to get the directions.
const { routes } = await Route.computeRoutes(request);

// Use createPolylines to create polylines for the route.
if (!routes) {
    console.warn('No routes found.');
    return;
}
mapPolylines = routes[0].createPolylines();
// Add polylines to the map.
mapPolylines.forEach((polyline) => {
    polyline.setMap(map);
});

// Create markers to start and end points.
const markers = await routes[0].createWaypointAdvancedMarkers();
// Add markers to the map
markers.forEach((marker) => {
    marker.map = map;
});

JavaScript

// Define a routes request.
const request = {
    origin: 'Mountain View, CA',
    destination: 'San Francisco, CA',
    travelMode: 'DRIVING',
    fields: ['path'], // Request fields needed to draw polylines.
};

// Call computeRoutes to get the directions.
const { routes } = await Route.computeRoutes(request);

// Use createPolylines to create polylines for the route.
if (!routes) {
    console.warn('No routes found.');
    return;
}
mapPolylines = routes[0].createPolylines();
// Add polylines to the map.
mapPolylines.forEach((polyline) => {
    polyline.setMap(map);
});

// Create markers to start and end points.
const markers = await routes[0].createWaypointAdvancedMarkers();
// Add markers to the map
markers.forEach((marker) => {
    marker.map = map;
});