Mapbox GL JS тесно интегрируется с платформой Mapbox, однако Matrix API относится к серверной части Mapbox и используется совместно с фронтендом для решения задач пространственного анализа. Matrix API предназначен для вычисления матриц расстояний и времени между множеством точек с учётом дорожной сети и выбранного режима передвижения.
Matrix API решает задачу вычисления попарных расстояний и длительности маршрутов между наборами координат. Вместо построения отдельных маршрутов для каждой пары точек, система возвращает компактную матрицу значений, где каждая ячейка соответствует стоимости перемещения от точки A к точке B.
Основные характеристики:
Матрица используется в задачах оптимизации маршрутов, логистике, кластеризации точек интереса и построении пользовательских интерфейсов навигации.
Matrix API принимает массив координат в формате:
[longitude, latitude]
Порядок важен: сначала долгота, затем широта.
Пример набора точек:
[
[69.5901, 42.3171],
[69.6012, 42.3205],
[69.5803, 42.3109]
]
Каждая точка участвует как источник и как цель, формируя квадратную матрицу.
Matrix API использует транспортные профили:
driving — автомобильный маршрутwalking — пешие маршрутыcycling — велосипедные маршрутыКаждый профиль учитывает собственную дорожную сеть и ограничения.
Например, driving учитывает односторонние дороги, а
walking игнорирует автомобильные ограничения.
Типичный HTTP-запрос выглядит так:
GET https://api.mapbox.com/directions-matrix/v1/mapbox/{profile}/{coordinates}
Где:
{profile} — выбранный профиль маршрутизации{coordinates} — список координат через
;Пример:
/driving/69.5901,42.3171;69.6012,42.3205;69.5803,42.3109
Дополнительные параметры:
access_token — ключ доступаannotations — какие данные возвращать
(duration, distance или оба)sources — индексы точек-источниковdestinations — индексы точек назначенияОтвет содержит две основные матрицы:
durations — время в секундахdistances — расстояние в метрахПример структуры:
{
"durations": [
[0, 120, 240],
[110, 0, 180],
[200, 170, 0]
],
"distances": [
[0, 800, 1500],
[750, 0, 1200],
[1400, 1100, 0]
]
}
Каждая строка соответствует точке-источнику, каждый столбец — точке назначения.
Матрица представляет собой ориентированный граф:
Несимметричность возникает из-за:
Matrix API имеет ограничения по количеству точек. Обычно допускается до 25 координат в одном запросе, что формирует матрицу 25×25.
Для оптимизации:
sources,
destinations)Пример ограничения выборки:
sources=0;1;2
destinations=3;4;5
Это снижает вычислительную нагрузку и ускоряет ответ.
Интеграция с фронтендом часто выполняется через
fetch.
Пример запроса:
const coordinates = [
[69.5901, 42.3171],
[69.6012, 42.3205],
[69.5803, 42.3109]
];
const coordsString = coordinates
.map(c => c.join(','))
.join(';');
const url = `https://api.mapbox.com/directions-matrix/v1/mapbox/driving/${coordsString}?annotations=duration,distance&access_token=YOUR_TOKEN`;
fetch(url)
.then(res => res.json())
.then(data => {
const matrix = data.durations;
console.log(matrix);
});
Типичные ошибки:
Пример обработки:
fetch(url)
.then(res => {
if (!res.ok) {
throw new Error("Matrix API request failed");
}
return res.json();
})
.then(data => {
if (!data.durations) {
throw new Error("No route data available");
}
})
.catch(err => {
console.error(err.message);
});
Matrix API используется как вычислительный слой для задач:
Матрица позволяет вычислить кратчайшие пути между складом и множеством точек доставки, после чего применяется алгоритм коммивояжёра или его эвристики.
Для пользователя выбирается минимальное значение в строке матрицы:
const nearestIndex = matrix[0]
.reduce((minIdx, val, idx, arr) =>
val < arr[minIdx] ? idx : minIdx, 0);
Матрица расстояний служит входом для алгоритмов кластеризации (например, DBSCAN или k-means), где расстояние выступает метрикой близости.
В системах оценки времени прибытия используются значения
durations, агрегируемые по нескольким точкам
назначения.
Параметр annotations управляет содержимым ответа:
duration — время в путиdistance — расстояниеВыбор влияет на объём данных и скорость ответа.
Matrix API позволяет запрашивать не всю матрицу, а её подмножество, что важно для масштабируемых систем.
Пример:
Это снижает сложность с O(n²) до O(n·m).
Данные Matrix API зависят от:
Поэтому значения являются оценочными, а не абсолютными.
В связке с Mapbox GL JS результаты Matrix API часто визуализируются:
Типичный сценарий:
При увеличении количества точек применяется стратегия:
Это позволяет сохранять производительность при работе с сотнями объектов.
Матрица расстояний представляет собой полное взвешенное ориентированное графовое пространство, где:
Такая модель используется в задачах теории графов, логистики и пространственного анализа.