Javascript 传单发送机器获取路线摘要而不绘制路线
我正在使用LRM计算路线。我需要这条路线的数据。现在我正在学习如何提取这些数据,以便进一步使用。 我有两条路线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
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){}
不起作用(我认为应该,但可能我遗漏了什么)