Привязка точек к дорогам /snaptoroad

Snap to Road принимает список точек полученных от спутниковых систем навигации (GNSS) в виде широты, долготы, собранных вдоль маршрута, и возвращает список точек формирующих маршрут привязанный к дорогам на карте. Вы также можете использовать интерполяцию по заданным точкам, тогда ответом должна быть линия, которая следует геометрии дороги.

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

Схема запроса

https://api.visicom.ua/data-api/4.0/core/snaptoroad.json?[points][&interpolate][&mode][&key][&callback]

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

ПараметрОписание
points|pМассив координат точек. Точка задается широтой и долготой в виде lng,lat. Символ | — разделитель точек в списке.
interpolate|lНеобходима ли интерполяция точек до линии, которая повторяет полную геометрию дороги с учетом перекрестков и туннелей. В этом случае ответ будет содержать объект LineString. По умолчанию false.
mode|mРежим привязки точек. Может принимать значения driving (по автомобильным дорогам, принимается по умолчанию) или walking — все дороги.
separate|sПри указанном параметре каждая точка в запросе рассматривается отдельно и не учитываются предыдущие точки (interpolate — игнорируется даже если указан). Можно использовать когда нужно привязать несколько устройств к дорогам в одном запросе. По умолчанию false.
keyКлюч авторизации.
callbackИмя функции для JSONP запроса к серверу.

Ограничения

ПараметрЗначение
Максимальное количество точек в запросе250

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

https://api.visicom.ua/data-api/4.0/core/snaptoroad.json?points=30.36277,50.51605|30.49667,50.49508|30.59761,50.45226|30.51383,50.44789&interpolate=true&key=YOUR_API_KEY

Ответ на запрос

Структура ответа на запрос snaptoroad зависит от значения параметра interpolate и кол-ва переданных точек.

Передана одна точка, при любом значении параметра interpolate.

{ 
	"type": "Feature",
	"geometry": {
		"type": "Point", 
		"coordinates": [
			30.42615,
			50.45119
		]
	}
}

В ответе возвращается GeoJSON-объект типа Feature. В поле geometry содержится объект типа Point с координатами, привязанными к дороге.

interpolate = false (по умолчанию) и передано несколько точек

{ 
	"type": "FeatureCollection",
	"bbox": [
		30.42615,
		50.44802,
		30.44679,
		50.45716
	],
	"features": [
		{
			"type": "Feature",
			"geometry": {
				"type": "Point", 
				"coordinates": [
					30.42615,
					50.45119
				]
			}
		},
		{
			"type": "Feature",
			"geometry": {
				"type": "Point", 
				"coordinates": [
					30.43615,
					50.46119
				]
			}
		},
		{
			"type": "Feature",
			"geometry": {
				"type": "Point", 
				"coordinates": [
					30.44615,
					50.47119
				]
			}
		}
	]
}

В ответе возвращается GeoJSON-объект типа FeatureCollection. Поле features содержит массив объектов типа Feature с полем geometry типа Point. Каждая возвращенная точка содержит координаты, привязанные к дороге.

interpolate = true и передано несколько точек

{
    "type": "Feature",
    "geometry": {
        "type": "LineString",
        "coordinates": [
            [
                30.42615,
                50.45119
            ],
            [
                30.42749,
                50.45097
            ],
            [
                30.42674,
                50.44899
            ],
            [
                30.43016,
                50.44846
            ],
            [
                30.43318,
                50.44802
            ],
            [
                30.43347,
                50.44879
            ],
            [
                30.4339,
                50.44997
            ],
            [
                30.43456,
                50.45171
            ],
            [
                30.43622,
                50.45597
            ]
        ]
    },
    "bbox": [
        30.42615,
        50.44802,
        30.44679,
        50.45716
    ]
}

В ответе возвращается GeoJSON-объект типа Feature. В поле geometry содержится объект типа LineString с координатами маршрута, проходящего через привязанные к дорогам точки.

Демо