Я сделал это недавно, так как мне нужен был метод для расчета миллиона случайных маршрутов при низких затратах для целей моделирования.То, что я сделал, это загрузил все векторные плитки в области, в которой был актуален маршрут (ограничивающий прямоугольник или все плитки, которые пересекают буферную ванну прямой линии между началом / концом).Затем извлекли дороги из векторных плиток и объединили (объединили) их вместе, чтобы создать большую MultiLineString.Оттуда я использовал набор сетевых топологий и алгоритм кратчайшего пути для расчета маршрута.Обратите внимание, что это не учитывает ограничения на поворот и другие дорожные ограничения, поскольку эти данные обычно отсутствуют в листах, но это будет зависеть от источника ваших векторных листов.Вы можете избежать платных дорог, просто исключив их из MultiLineString.Улицы с односторонним движением могут учитываться, поскольку векторные листы нуждаются в этой информации для рендеринга.