REST API Сервис построения маршрутов

API сервиса построения маршрутов router.geo4.me

Определение местоположения

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

GET/locate?loc=lat,lon

Структура запроса:


GET/locate?loc=52.4224,13.333086

lat: широта
lon: долгота

Ответ:


{
	"mapped_coordinate": [52.42244, 13.332101],
	"status": 0
}


// координаты на карте
// статус: 0 – успешное выполнение запроса, 207 – нет маршрута

Ближайшая точка

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

GET/nearest?loc=lat,lon

Структура запроса:


GET/nearest?loc=52.4224,13.333086

lat: широта

lon: долгота

Ответ:


{
	"name": "Mariannenstraße",
	"mapped_coordinate": [52.422592, 13.333837],
	"status": 0
}


// название улицы
// координаты на карте
// статус: 0 – успешное выполнение запроса, 207 – нет маршрута

При использовании вышеупомянутого синтаксиса ответ приходит в формате JSON, который может быть дополнительно обработан многими языками программирования. При этом на выходе данные могут быть отформатированы как JSONP:


GET/nearest?52.555485441735&13.342227642887&jsonp=function

Запрос возвращает результат в формате JSON, обёрнутый функцией (), которая может быть легко переработана при помощи JavaScript:


function({"status":0,"result":[52.55567, 13.34252]"})

Построение маршрута

Данный сервис позволяет построить кратчайший маршрут через указанные координаты с учетом порядка следования координат. Основные точки между координатами (lat1, lon1) и (lat2, lon2) запрашиваются следующим образом:

GET/viaroute?loc=lat1,lon1&loc=lat2,lon2

Структура запроса:


GET/viaroute?loc= 55.7887400, 49.1221400&loc= 55.8437600, 48.5178400

lat: широта

lon: долгота

Чтобы построить маршрут через определенные координаты, перечислите их в запросе string в порядке своего появления (на текущий момент стоит максимальное ограничение в 25 точек).

При построении маршрута появляется параметр hint_data, который дает (кодированную) достоверную информацию о начальных и конечных точках. При этом при реализации API предполагается следующее:

  • добавление &checksum=… в URL, где ‘…’ – это контрольная сумма в hint_data.checksum из предыдущего запроса.
  • добавление &hint=… после каждого &loc=… параметра, если он не меняется по сравнению с предыдущим запросом.
  • в случае, если координаты были изменены, то они не дают никакой «подсказки» для указанной координаты.
  • «подсказки» должны быть размещены непосредственно после параметра &loc=…

Ответ:


{
	"hint_data": {
		"locations": ["1","2"],
		"checksum": 3637997664
	},
	"route_name": ["1","2"],
	"found_alternative": false,
	"via_points": [[55.788872,49.121826],
	[55.843784,48.517399]],
	"route_summary": {
		"end_point": "",
		"start_point": "Университетская улица",
		"total_time": 3128,
		"total_distance": 42557
	},
	"route_geometry": "",
	"status_message": "Found route between points",
	"via_indices": [0, 362],
	"status": 0
}


// информация о «подсказывающих» данных
// местоположение
// контрольная сумма

// массив строк, который хранит наименования маршрутов
// поиск альтернатив
// массив точек, в котором каждая точка представляет собой массив координат: [lat, lon]

// общие сведения о маршруте
// конечная точка
// начальная точка
// общее время пути в секундах
// общая длина в метрах

// геометрия маршрута
// сообщение о статусе (находит маршрут между точками или нет)
// целочисленный массив, который содержит положение начальных и конечных путевых точек
// статус: 0 – успешное выполнение запроса, 207 – нет маршрута

Таблица расстояний по дорожной сети

Запрос по таблицам расстояний аналогичен запросу по маршруту. Схема запроса по таблице расстояний выглядит следующим образом:

GET/table?loc=lat1,lon1&loc=lat2,lon2&…loc=latX,lonX

Структура запроса:


GET/table?loc=52.554070,13.160621&loc=52.431272,13.720654&loc=52.554070,13.720654&loc=52.554070, 13.160621&z=14

lat: широта

lon: долгота

Ответ:


{
    "distance_table": [
        [0, 26084, 22942, 26989],
        [26319, 0, 30810, 19607],
        [22782, 30482, 0, 37495],
        [27376, 19415, 37693, 0]
    ]
}

Параметры

В запрос может быть добавлен ряд дополнительных параметров:

Название параметров Описание параметров
&z={0,…,18} Определяет уровень масштабирования и упрощает геометрию маршрута (то есть на сколько точной будет возвращаемая геометрия маршрута).
output={json, gpx} Форматирует выходные данные как JSON или GPX.
&jsonp=_function_ Форматирует выходные данные как JSONP, обернутые функцией.
&instructions={true, false} Возвращает инструкции для каждого маршрута в виде массива.

  • 0 – направление пути
  • 1 – название маршрута (строка)
  • 2 – длина в метрах (целое число)
  • 3 – положение
  • 4 – время в секундах
  • 5 – длина в метрах (строка)
  • 6 – аббревиатура направления (N – север, S – юг, E – восток, W — запад)
  • 7 – азимут
&alt={true, false} Возвращает альтернативный маршрут при его наличии.