传单路由机 - update/redraw 路由
Leaflet Routing Machine - update/redraw route
我是 Laflet Routing Machine (liedman) 的新手 https://www.liedman.net/leaflet-routing-machine/ 我想更新每 30 秒计算的第一条路线,因为我想刷新它并且我不需要创建很多服务器请求。
我会设置一个 setInterval,但目前我需要知道它是否有效以及是否是这样...这是我的代码:
routingControl = L.Routing.control({
waypoints: [
L.latLng(43.12, 11.99),
L.latLng(43.37, 12.08)
]
createMarker: function() { return null; },
routeWhileDragging: false,
draggableWaypoints: false,
reverseWaypoints: false,
fitSelectedRoutes: true,
addWaypoints: false
}).addTo(OSM_Map);
var newLat = routingControl.options.waypoints[0].lat+0.01;
var newLng = routingControl.options.waypoints[0].lng+0.01;
setTimeout(function () {
routingControl.options.waypoints=[
L.latLng(newLat, newLng),
routingControl.options.waypoints[1]
];
}, 10000);
我使用 setTimeout 更改起点(添加 0.01)并使用 console.dir 检查 waypoints 它们已更改但未更改绘制的路线...我如何刷新它?
这些选项仅在初始化路由控件时使用。之后更改它们没有任何作用,因为控件在内部使用自己的 waypoints。
您应该可以像这样使用 setWaypoints
函数
setInterval(function () {
var newWaypoint = routingControl.getWaypoints()[0].latLng;
var newLat = newWaypoint.lat + 0.01;
var newLng = newWaypoint.lng + 0.01;
routingControl.setWaypoints([
L.latLng(newLat, newLng),
routingControl.options.waypoints[1]
]);
}, 10000);
与选项不同,getWaypoints 始终 returns 当前 waypoints,因此您可以自由修改它们。
然后 setWaypoints 将触发路线的更改事件并相应地更新它们。
我是 Laflet Routing Machine (liedman) 的新手 https://www.liedman.net/leaflet-routing-machine/ 我想更新每 30 秒计算的第一条路线,因为我想刷新它并且我不需要创建很多服务器请求。
我会设置一个 setInterval,但目前我需要知道它是否有效以及是否是这样...这是我的代码:
routingControl = L.Routing.control({
waypoints: [
L.latLng(43.12, 11.99),
L.latLng(43.37, 12.08)
]
createMarker: function() { return null; },
routeWhileDragging: false,
draggableWaypoints: false,
reverseWaypoints: false,
fitSelectedRoutes: true,
addWaypoints: false
}).addTo(OSM_Map);
var newLat = routingControl.options.waypoints[0].lat+0.01;
var newLng = routingControl.options.waypoints[0].lng+0.01;
setTimeout(function () {
routingControl.options.waypoints=[
L.latLng(newLat, newLng),
routingControl.options.waypoints[1]
];
}, 10000);
我使用 setTimeout 更改起点(添加 0.01)并使用 console.dir 检查 waypoints 它们已更改但未更改绘制的路线...我如何刷新它?
这些选项仅在初始化路由控件时使用。之后更改它们没有任何作用,因为控件在内部使用自己的 waypoints。
您应该可以像这样使用 setWaypoints
函数
setInterval(function () {
var newWaypoint = routingControl.getWaypoints()[0].latLng;
var newLat = newWaypoint.lat + 0.01;
var newLng = newWaypoint.lng + 0.01;
routingControl.setWaypoints([
L.latLng(newLat, newLng),
routingControl.options.waypoints[1]
]);
}, 10000);
与选项不同,getWaypoints 始终 returns 当前 waypoints,因此您可以自由修改它们。 然后 setWaypoints 将触发路线的更改事件并相应地更新它们。