Прив'язка точок до дорог /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[,accuracy] де accuracy — точність визначення конкретної точки у метрах. Символ | — роздільник точок у списку.
interpolate|lЧи необхідна інтерполяція точок до линії, що повторює повну геометрію дороги з урахуванням перехресть та тунелів. У цьому випадку відповідь буде містити об'єкт LineString. За замовчуванням false.
mode|mРежим прив'язки точок. Може приймати значення driving (по автомобільним дорогам, приймається за замовчуванням) або walking — усі дороги.
keyКлюч авторизації.
callbackІм'я функції для JSONP запиту до сервера.

Обмеження

ПараметрЗначення
Максимальна кількість точок у запиті250
Максимальна дистанція між точками1000 м

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

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

Демо