首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >单张选路机-更新/重绘路线

单张选路机-更新/重绘路线
EN

Stack Overflow用户
提问于 2022-01-07 22:29:09
回答 1查看 922关注 0票数 1

我是关于Laflet (liedman) https://www.liedman.net/leaflet-routing-machine/的新手,我想更新每30秒计算出来的第一条路由,因为我想刷新它,并且我不需要提出很多服务器请求。

我会做一个setInterval,但是现在我需要知道它是否有效,如果是这样的话.这是我的密码:

代码语言:javascript
运行
复制
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检查路径点,它们被更改,而不是绘制的路由.我怎么能刷新它?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-11 08:42:04

这些选项仅在初始化路由控件时使用。由于控件在内部使用自己的路径点,因此事后更改它们不会有任何效果。

您应该能够像这样使用setWaypoints函数

代码语言:javascript
运行
复制
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将触发路由的更改事件,并相应地更新它们。

你可以玩的这是一把有用的小提琴

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70627857

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档