Получить маршрут

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

Маршрут — это навигируемый путь между начальной точкой (источником) и конечной точкой (пунктом назначения). Вы можете получить маршрут для различных видов транспорта, например, пешком, на велосипеде или на разных типах транспортных средств. Вы также можете запросить информацию о маршруте, такую ​​как расстояние, предполагаемое время в пути, ожидаемые сборы и пошаговые инструкции по его прохождению.

Вызовите метод computeRoutes() для запроса маршрута между двумя точками. В следующем примере показано определение запроса и последующий вызов computeRoutes() для получения маршрута.

  // Import the Routes library.
  const { Route } = await google.maps.importLibrary('routes');

  // Define a computeRoutes request.
  const request = {
    origin: 'Mountain View, CA',
    destination: 'San Francisco, CA',
  };

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

Выберите поля для возврата

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

Использование маски поля также гарантирует, что вы не будете запрашивать ненужные данные, что, в свою очередь, помогает сократить задержку ответа и избежать возврата информации, которая не нужна вашей системе.

Укажите список необходимых полей, установив свойство ComputeRoutesRequest.fields , как показано в следующем фрагменте:

Машинопись

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

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.
};

Укажите места для маршрута

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

В ComputeRoutesRequest вы можете указать местоположение любым из следующих способов:

Вы можете указать местоположение всех точек маршрута в запросе одинаково или комбинировать их. Например, можно использовать координаты широты и долготы для начальной точки маршрута и объект Place для конечной точки маршрута.

Для эффективности и точности используйте объекты Place вместо координат широты/долготы или строк адреса. Идентификаторы Place являются уникальными и предоставляют преимущества геокодирования для маршрутизации, например, для точек доступа и данных о дорожном движении. Они помогают избежать следующих ситуаций, которые могут возникнуть при использовании других способов указания местоположения:

  • Использование координат широты/долготы может привести к привязке местоположения к ближайшей к этим координатам дороге, которая может не быть точкой доступа к объекту недвижимости или даже дорогой, которая быстро или безопасно ведет к месту назначения.
  • Для расчета маршрута строки адреса должны быть геокодированы API Routes и преобразованы в координаты широты и долготы. Это преобразование может повлиять на производительность.

Укажите местоположение как объект Place (предпочтительно)

Чтобы указать местоположение с помощью объекта Place, создайте новый экземпляр Place . В следующем фрагменте кода показано создание новых экземпляров Place для origin и destination , а затем их использование в ComputeRoutesRequest :

Машинопись

// Use Place IDs in a directions request.
const originPlaceInstance = new Place({
  id: 'ChIJiQHsW0m3j4ARm69rRkrUF3w', // Mountain View, CA
});

const destinationPlaceInstance = new Place({
  id: 'ChIJIQBpAG2ahYAR_6128GcTUEo', // San Francisco, CA
});

const requestWithPlaceIds = {
  origin: originPlaceInstance,
  destination: destinationPlaceInstance,
  fields: ['path'], // Request fields needed to draw polylines.
}; 

JavaScript

// Use Place IDs in a directions request.
const originPlaceInstance = new Place({
    id: 'ChIJiQHsW0m3j4ARm69rRkrUF3w', // Mountain View, CA
});
const destinationPlaceInstance = new Place({
    id: 'ChIJIQBpAG2ahYAR_6128GcTUEo', // San Francisco, CA
});
const requestWithPlaceIds = {
    origin: originPlaceInstance,
    destination: destinationPlaceInstance,
    fields: ['path'], // Request fields needed to draw polylines.
};

Координаты широты/долготы

Чтобы указать местоположение в виде координат широты и долготы, создайте новый экземпляр google.maps.LatLngLiteral , google.maps.LatLngAltitude или google.maps.LatLngAltitudeLiteral . В следующем фрагменте кода показано создание новых экземпляров google.maps.LatLngLiteral для origin и destination , а затем их использование в computeRoutesRequest :

Машинопись

// Use lat/lng in a directions request.
// Mountain View, CA
const originLatLng = {lat: 37.422000, lng: -122.084058};
// San Francisco, CA
const destinationLatLng = {lat: 37.774929, lng: -122.419415};

// Define a computeRoutes request.
const requestWithLatLngs = {
  origin: originLatLng,
  destination: destinationLatLng,
  fields: ['path'],
};

JavaScript

// Use lat/lng in a directions request.
// Mountain View, CA
const originLatLng = { lat: 37.422000, lng: -122.084058 };
// San Francisco, CA
const destinationLatLng = { lat: 37.774929, lng: -122.419415 };
// Define a computeRoutes request.
const requestWithLatLngs = {
    origin: originLatLng,
    destination: destinationLatLng,
    fields: ['path'],
};

Строка адреса

Адресные строки — это литеральные адреса, представленные строкой (например, «1600 Amphitheatre Parkway, Mountain View, CA»). Геокодирование — это процесс преобразования адресной строки в координаты широты и долготы (например, широта 37.423021 и долгота -122.083739).

Когда вы передаете строку адреса в качестве местоположения путевой точки, библиотека Routes выполняет внутреннее геокодирование строки, чтобы преобразовать ее в координаты широты и долготы.

В следующем фрагменте показано создание ComputeRoutesRequest со строкой адреса для origin и destination :

Машинопись

// Use address strings in a directions request.
const requestWithAddressStrings = {
  origin: '1600 Amphitheatre Parkway, Mountain View, CA',
  destination: '345 Spear Street, San Francisco, CA',
  fields: ['path'],
};

JavaScript

// Use address strings in a directions request.
const requestWithAddressStrings = {
    origin: '1600 Amphitheatre Parkway, Mountain View, CA',
    destination: '345 Spear Street, San Francisco, CA',
    fields: ['path'],
};

Установите регион для адреса

Если вы передадите неполную строку адреса в качестве местоположения путевой точки, API может использовать неверные геокодированные координаты широты и долготы. Например, вы делаете запрос, указывая «Толедо» в качестве начальной точки и «Мадрид» в качестве конечной точки автомобильного маршрута:

// Define a request with an incomplete address string.
const request = {
  origin: 'Toledo',
  destination: 'Madrid',
};
    

В этом примере «Толедо» интерпретируется как город в штате Огайо в США, а не в Испании. Поэтому запрос возвращает пустой массив, что означает отсутствие маршрутов.

Вы можете настроить API для возврата результатов, ориентированных на определённый регион, включив параметр regionCode. Этот параметр задаёт код региона в виде двухсимвольного значения ccTLD («домена верхнего уровня») . Большинство кодов ccTLD идентичны кодам ISO 3166-1, за некоторыми заметными исключениями. Например, ccTLD Великобритании — «uk» (.co.uk), а её код ISO 3166-1 — «gb» (технически обозначает «Соединённое Королевство Великобритании и Северной Ирландии»).

Запрос маршрута «Толедо» — «Мадрид», включающий параметр regionCode, возвращает соответствующие результаты, поскольку «Толедо» интерпретируется как город в Испании:

const request = {
  origin: 'Toledo',
  destination: 'Madrid',
  region: 'es', // Specify the region code for Spain.
};
    

Плюс Код

У многих людей нет точного адреса, что может затруднить получение посылок. Или же те, у кого есть адрес, могут предпочесть получать посылки в более определённых местах, например, у заднего входа или на погрузочной площадке.

Plus-коды — это своего рода адреса для людей или мест, у которых нет фактического адреса. Вместо адресов с названиями улиц и номерами домов, Plus-коды основаны на координатах широты и долготы и отображаются в виде цифр и букв.

Компания Google разработала Plus-коды , чтобы предоставить всем и каждому возможность пользоваться адресами. Plus-код — это закодированная ссылка на местоположение, полученная на основе координат широты и долготы, которая представляет область размером 1/8000 градуса на 1/8000 градуса (примерно 14 м на экваторе) или меньше. Вы можете использовать Plus-коды в качестве замены уличных адресов там, где их нет, где здания не пронумерованы или улицы не имеют названий.

Плюс-коды должны быть отформатированы как глобальный код или составной код:

  • Глобальный код состоит из 4-значного кода города и 6-значного или более длинного местного кода. Например, для адреса «1600 Amphitheatre Parkway, Mountain View, CA» глобальный код — «849V», а местный — «CWC8+R9». Затем используйте весь 10-значный Plus Code для указания местоположения: «849VCWC8+R9».
  • Составной код состоит из местного кода длиной не менее 6 символов и точного указания местоположения. Например, адрес «450 Serra Mall, Stanford, CA 94305, USA» имеет местный код «CRHJ+C3». Для создания составного адреса объедините местный код с частью адреса, содержащей город, штат, почтовый индекс и страну, в формате «CRHJ+C3 Stanford, CA 94305, USA».

В следующем фрагменте показан расчет маршрута путем указания путевой точки для начальной и конечной точки маршрута с использованием Plus-кодов:

Машинопись

// Use Plus Codes in a directions request.
const requestWithPlusCodes = {
  origin: '849VCWC8+R9', // Mountain View, CA
  destination: 'CRHJ+C3 Stanford, CA 94305, USA', // Stanford, CA
  fields: ['path'],
};

JavaScript

// Use Plus Codes in a directions request.
const requestWithPlusCodes = {
    origin: '849VCWC8+R9', // Mountain View, CA
    destination: 'CRHJ+C3 Stanford, CA 94305, USA', // Stanford, CA
    fields: ['path'],
};