传单路由机在没有drawind路由的情况下获取路由摘要
Leaflet routing machine get route summary without drawind route
我正在使用 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) {}.
内部 _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);
我正在使用 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) {}.
内部 _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);