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

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

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

Схема запиту

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

Параметри запиту

ПараметрОпис
points|pМасив координат точок. Точка задається широтою та довготою у вигляді lng,lat. Символ | — роздільник точок у списку. Максимальна кількість точок - 250
interpolate|lЧи необхідна інтерполяція точок до линії, що повторює повну геометрію дороги з урахуванням перехресть та тунелів. У цьому випадку відповідь буде містити об'єкт LineString. За замовчуванням false.
mode|mРежим прив'язки точок. Може приймати значення driving (по автомобільним дорогам, приймається за замовчуванням) або walking — усі дороги.
separate | sПри зазначеному параметрі кожна точка в запиті розглядається окремо і не враховуються попередні точки (interpolate - ігнорується навіть якщо вказано). Можна використовувати і коли потрібно прив'язати кілька пристроїв до доріг в одному запиті. За замовчуванням false.
keyКлюч авторизації.
callbackІм'я функції для JSONP запиту до сервера.

Приклад запиту

https://api.visicom.ua/data-api/5.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 з координатами маршруту, що проходить через прив'язані до доріг точки.

Демо