Javascript 传单发送机器获取路线摘要而不绘制路线

Javascript 传单发送机器获取路线摘要而不绘制路线,javascript,leaflet,leaflet-routing-machine,Javascript,Leaflet,Leaflet Routing Machine,我正在使用LRM计算路线。我需要这条路线的数据。现在我正在学习如何提取这些数据,以便进一步使用。 我有两条路线 var routing1 = L.Routing.control({ waypoints: [ L.latLng(54.736038, 55.97429), L.latLng(54.736985, 55.980878), ], }); var routin

我正在使用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路由的摘要?没有画出来。

TomazicM帮助我解决了以下问题:


经调查,路由过程的很大一部分取决于向映射添加L.routing.control。要强制进行路线计算并防止在地图上显示路线,需要一些黑客技巧:

必须使用show:false选项阻止行程显示。 必须通过伪标记创建选项
createMarker:function(p1,p2){}阻止端点标记显示。
必须用虚拟方法替换内部更新线方法。 必须使用onAdd(map)方法将路由控制添加到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);

TomazicM帮助我解决了以下问题:


经调查,路由过程的很大一部分取决于向映射添加L.routing.control。要强制进行路线计算并防止在地图上显示路线,需要一些黑客技巧:

必须使用show:false选项阻止行程显示。 必须通过伪标记创建选项
createMarker:function(p1,p2){}阻止端点标记显示。
必须用虚拟方法替换内部更新线方法。 必须使用onAdd(map)方法将路由控制添加到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);

由于某种原因,
routing1.on('routesfound',函数(e){}
不起作用(我认为它应该起作用,但可能我遗漏了什么),因为某种原因,
routing1.on('routesfound',函数(e){}
不起作用(我认为应该,但可能我遗漏了什么)