можно ли получить все координаты маршрута, не добавляя его на карту?

Рейтинг: 1Ответов: 1Опубликовано: 19.02.2023

Когда я добавляю routingControl на карту (я использую карту от leaflet и leaflet-routing-machine), у меня есть все координаты маршрута в этом объекте:

const routingControl = L.Routing.control({
  waypoints: route.points,
}).addTo(map)

console.log("routingControl", routingControl)

В routingControl._line._route.coordinates у меня есть все рассчитанные координаты

Могу ли я получить эти координаты без .addTo(map)?

Ответы

▲ 0Принят

Координаты получить без вызова .addTo(map) можно плагином запроса, который использует leaflet-routing-machine L.Routing.OSRMv1. Документация.

Пример:

const osrmv1 = L.Routing.osrmv1();
osrmv1.route([{
    latLng: L.latLng(57.74, 11.94)
  }, {
    latLng: L.latLng(57.6792, 11.949)
  }],
  (err, route) => console.log(route[0].coordinates));
<script src="https://unpkg.com/leaflet@1.2.0/dist/leaflet.js"></script>
<script src="https://unpkg.com/leaflet-routing-machine@latest/dist/leaflet-routing-machine.js"></script>

Также комментарий к вашему вопрос: routingControl._line._route.coordinates - плохая идея использовать такой доступ к координатам. Обращение происходит к внутренним переменным, данные которых не гарантируются контрактами. Для получения координат из плагина L.Routing.control нужно использовать .on('routesfound', callback). Документация.