传单路由设备无需路由即可获取路由摘要

时间:2019-05-19 18:02:17

标签: javascript leaflet leaflet-routing-machine

我正在使用LRM计算路线。我需要有关此路线的数据。现在,我正在学习如何吸引这些数据,以便可以进一步使用它。 我有两条路线

SqlMapperExtensions.TableNameMapper = (type) => $"\"{type.Name}s\"";

我有一个绘制此路线的按钮

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)
            ],
        });

由于我还不太了解JS,所以我有一个问题:


在计算出路线时,如何console.log路线摘要?无需绘制。

1 个答案:

答案 0 :(得分:0)

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);