我是关于Laflet (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检查路径点,它们被更改,而不是绘制的路由.我怎么能刷新它?
发布于 2022-01-11 08:42:04
这些选项仅在初始化路由控件时使用。由于控件在内部使用自己的路径点,因此事后更改它们不会有任何效果。
您应该能够像这样使用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总是返回当前的路径点,因此您可以自由地修改它们。然后,setWaypoints将触发路由的更改事件,并相应地更新它们。
你可以玩的这是一把有用的小提琴
https://stackoverflow.com/questions/70627857
复制相似问题