Маршрутизатор листовок получает сводку маршрута без просчета маршрута - PullRequest
1 голос
/ 19 мая 2019

Я использую LRM для расчета маршрутов.И мне нужны данные об этих маршрутах.Сейчас я только учусь извлекать эти данные, чтобы я мог использовать их дальше.У меня есть два маршрута

var routing1 =  L.Routing.control({
            waypoints: [
                L.latLng(54.736038, 55.97429),
                L.latLng(54.736985, 55.980878),
            ],
        });

var routing2 =  L.Routing.control({
            waypoints: [
                L.latLng(54.732798, 55.969934),
                L.latLng(54.734954, 55.95809)
            ],
        });

У меня есть кнопка для рисования этих маршрутов

document.getElementById("drawing").addEventListener("click", myFunction);
        function myFunction() {
            routing1.addTo(map).on('routesfound', function (e) {
                distance = e.routes[0].summary.totalDistance;
                console.log('routing1 ' + distance);
            });
            routing2.addTo(map).on('routesfound', function (e) {
                distance = e.routes[0].summary.totalDistance;
                console.log('routing2 ' + distance);
            });
        }

Поскольку я пока не совсем понимаю JS, у меня есть этот вопрос:


Как я могу получить сводку маршрута console.log на момент расчета маршрута?Без рисования.

1 Ответ

0 голосов
/ 22 мая 2019

TomazicM помог мне с решением:


После исследования выясняется, что довольно большая часть процесса маршрутизации зависит от добавления L.Routing.control на карту.Для принудительного расчета маршрута и предотвращения отображения маршрута на карте требуется некоторая хитрость хакерства:

Необходимо отключить отображение маршрута с помощью опции show: false.Отображение маркера конечных точек должно быть предотвращено с помощью опции создания фиктивного маркера createMarker: function(p1,p2) {}. Внутренний метод _updateLines должен быть заменен на фиктивный метод.Элемент управления маршрутизацией должен быть добавлен на карту с помощью метода onAdd (map).

Окончательный код выглядит примерно так:

var wayPoint1 = L.latLng(57.74, 11.94);
var wayPoint2 = L.latLng(57.6792, 11.949);

var bounds = L.latLngBounds(wayPoint1, wayPoint2); 

var myRouting = L.Routing.control({
    waypoints: [wayPoint1, wayPoint2],
    routeWhileDragging: true,
    show: false,
    createMarker: function(p1,p2) {}
});

myRouting.on('routesfound', function (e) {
    distance = e.routes[0].summary.totalDistance;
    console.log('routing distance: ' + distance);
});

// save original mathed for later use
var _updateLines = myRouting._updateLines;

myRouting._updateLines = function (p1) { };

map.fitBounds(bounds);
myRouting.onAdd(map);
...