API Спутник/КартыСервис маршрутов

Маршруты

Запрос viaroute

Запрос viaroute позволяет найти кратчайший путь между несколькими точками. Поддеживается расчет альтернативных маршрутов, маршрут сопровождается тестовым описанием.

Запрос

http://{baseUrl}?loc={lat,lon}&loc={lat,lon}<&loc={lat,lon} ...>
Тип маршрутовbaseUrl
Автомобильныеhttp://routes.maps.sputnik.ru/osrm/router/viaroute
Пешеходныеhttp://footroutes.maps.sputnik.ru/
ParameterValuesDescription
loclat,lonПоложение начальной/конечной/промежуточной точки
locsEncoded polylineТочки можно задать в формате polyline
z0 ... 18 (default)Уровень масштаба (используется для генерализации геометрий)
outputjson (default), gpxФормат ответа
instructionstrue, false (default)Return route instructions for each route
alttrue (default), falseПрокладывать альтернативный маршрут, если возможно
geometrytrue (default), falseВозвращать геометрию маршрута
uturnsfalse (default), trueВозможность развернуться в начальной/конечной/промежуточной точках маршрута
ufalse (default), trueВозможность развернуться в заданной точке маршрута. Задается после loc.

Ответ

  • route_geometry - геометрия в формате polyline, с точностью до 6-го знака. Можно использовать npm-модуль polyline для декодировки.
  • route_instructions - массив, содержащий инструкции для каждого сегмента маршрута. Каждый элемент массива представлен в следующей форме: [{drive instruction code}, {street name}, {length}, {location index}, {time}, {formated length}, {direction}, {azimuth}]
    • driving directions code - целочисленные коды поворотов (описаны в файле turn_instructions.hpp).
    • street name - название улицы (строка)
    • length - длина улицы в метрах (целое число)
    • position - индекс для списка координат (целое число)
    • time - время движения в секундах (число с плавающей точкой)
    • formated length - длина с размерностью (строка)
    • direction - направление N: север(north), S: юг(south), E: восток(east), W: запад(west), NW: севеол-запад(North West), … (строка)
    • azimuth - азимут (число с плавающей точкой)
    • mode - режим работы (целое число)
  • route_summary - общая информация
    • total_distance - общая длина в метрах (целое число)
    • total_time - общее время в секундах (целое число)
    • start_point - название начальной улицы (строка)
    • end_point - название конечной улицы (строка)
  • route_name - название маршрута (строка)
  • via_indices - индекс для списка координат (целое число)
  • via_points - массив точек, через которые проложен маршрут (массив координат в формате [lat, lon])
  • hint_data - эта информация может быть использована для ускорения сборки при незначительном изменении маршрута
    • checksum - необходимо передать при следующем запросе
    • locations - массив хинтов
  • found_alternative - строить альтернативный маршрут true или false

Если запрошены альтернативные маршруты (alt=true), в ответе могут присутствовать также следующие поля:

  • alternative_geometries - массив route_geometry
  • alternative_instructions - массив route_instructions
  • alternative_summaries - массив route_summary
  • alternative_names - массив route_name

Пример

Запрос:

http://routes.maps.sputnik.ru/osrm/router/viaroute?loc=52.503033,13.420526&loc=52.516582,13.429290&instructions=true

Ответ:

{
    "alternative_names": [
        [
            "Adalbertstraße",
            "Lichtenberger Straße"
        ]
    ],
    "route_name": [
        "Bethaniendamm",
        "Andreasstraße"
    ],
    "alternative_indices": [
        ​0,
        ​37
    ],
    "status_message": "Found route between points",
    "route_geometry": "_~occBa~brXoL{GyY{QaW}OoN{IoHuEcIcFeM}HoKyGuBsAZ}Ip@aUXaZIqT_@sUi@kNgCk`@wAePsCwTwDuTsG}YwIsZgFuMmB_F_HmQ}NoVgFyGoCsDmK}KgLaJuHeEqN}JuEeDwFGmIKkNq@_N}AgQiMyNgMkDqCuGiHyb@u]kLoJk]gYsPeImg@{MoJgCw`@sK_Ck@ot@qPkBg@_D{@cHgBeR}E{\\yIm_@}JuEeAiGaBuBi@eMcDuPkE{Djo@{@jMaCp_@eKt_BkTeGcg@oMkG}AfCn@",
    "route_instructions": [
        [
            "10",
            "Adalbertstraße",
            ​251,
            ​0,
            ​33,
            "251m",
            "N",
            ​22
        ],
        [
            "2",
            "Bethaniendamm",
            ​706,
            ​9,
            ​65,
            "705m",
            "E",
            ​99
        ],
        [
            "1",
            "Schillingbrücke",
            ​90,
            ​39,
            ​8,
            "90m",
            "NE",
            ​34
        ],
        [
            "1",
            "An der Schillingbrücke",
            ​121,
            ​41,
            ​14,
            "121m",
            "NE",
            ​28
        ],
        [
            "1",
            "Andreasstraße",
            ​533,
            ​44,
            ​49,
            "532m",
            "N",
            ​13
        ],
        [
            "7",
            "Singerstraße",
            ​212,
            ​60,
            ​31,
            "212m",
            "W",
            ​281
        ],
        [
            "3",
            "Krautstraße",
            ​136,
            ​64,
            ​16,
            "135m",
            "N",
            ​13
        ],
        [
            "15",
            "",
            ​0,
            ​68,
            ​0,
            "0m",
            "N",
            ​0
        ]
    ],
    "alternative_summaries": [
        {
            "end_point": "Krautstraße",
            "start_point": "Adalbertstraße",
            "total_time": ​228,
            "total_distance": ​2020
        }
    ],
    "via_points": [
        [
            ​52.503025,
            ​13.420529
        ],
        [
            ​52.516579,
            ​13.429288
        ]
    ],
    "route_summary": {
        "end_point": "Krautstraße",
        "start_point": "Adalbertstraße",
        "total_time": ​214,
        "total_distance": ​2050
    },
    "found_alternative": true,
    "status": ​0,
    "via_indices": [
        ​0,
        ​69
    ],
    "hint_data": {
        "locations": [
            "cbwZAHa8GQCmTgAAFgAAAFUAAAAAAAAAAAAAAP_____wISED8cfMAAAAVJ0",
            "nva-A7dw5waFawEATgAAAAAAAAAAAAAAFwAAABKp7wPkViEDKOrMAAAAAAA"
        ],
        "checksum": ​641772483
    },
    "alternative_geometries": [
        "_~occBa~brXoL{GyY{QaW}OoN{IoHuEcIcFeM}HoKyGuBsA}U}OcvA}}@{wBuuA}SvkAgAhGeCfNeD`RaZbbB{bBegAeTkN{QsLkK}G_]wZkIcIaKyJgUaTiFeMqi@gz@{RkSmOyO}_Aqz@bGww@xGukAkTeGcg@oMkG}AfCn@"
    ],
    "alternative_instructions": [
        [
            [
                "10",
                "Adalbertstraße",
                ​700,
                ​0,
                ​97,
                "699m",
                "N",
                ​22
            ],
            [
                "7",
                "L 1066",
                ​259,
                ​12,
                ​25,
                "259m",
                "NW",
                ​294
            ],
            [
                "3",
                "Michaelkirchstraße",
                ​296,
                ​17,
                ​26,
                "296m",
                "NE",
                ​24
            ],
            [
                "1",
                "Michaelbrücke",
                ​61,
                ​21,
                ​5,
                "61m",
                "NE",
                ​29
            ],
            [
                "1",
                "An der Michaelbrücke",
                ​92,
                ​22,
                ​8,
                "92m",
                "NE",
                ​31
            ],
            [
                "1",
                "Lichtenberger Straße",
                ​328,
                ​25,
                ​31,
                "327m",
                "NE",
                ​51
            ],
            [
                "3",
                "Singerstraße",
                ​148,
                ​30,
                ​22,
                "147m",
                "E",
                ​103
            ],
            [
                "7",
                "Krautstraße",
                ​136,
                ​32,
                ​16,
                "135m",
                "N",
                ​13
            ],
            [
                "15",
                "",
                ​0,
                ​36,
                ​0,
                "0m",
                "N",
                ​0
            ]
        ]
    ]
}