我应该如何隐藏 Leaflet Routing Machine 路由和 mouseout 事件的标记?
目前,我有常规的 Leaflet 标记,它有 mouseover/mouseout 事件。当触发 mouseover 事件并使用创建属于该标记的路由时L.Routing.control
route = L.Routing.control({
show: false,
addWaypoints: false,
draggableWaypoints: false,
fitSelectedRoutes: false,
waypoints: [
L.latLng(locations.aLat, locations.aLng), // Hardcoded coordinates
L.latLng(locations.bLat, locations.bLng), // Hardcoded coordinates
],
});
route.addTo(map);
当触发 mouseout 事件时,我调用route.remove()
它会完全删除路线。
这种方法的问题:
- 从 OSRM 服务器检索路由需要不到半秒的时间
- 每个鼠标悬停事件都会向 OSRM 服务器发送一个请求
我试图在 mouseout 事件中将路由不透明度设置为 0 并将标记图标大小设置为 0,但是,您不能在 Leaflet Routing Machine 中动态更改样式。
我采用的另一种方法是为路由提供 css 类名称并尝试设置display: none
,但将类分配给许多不同的路由是解决此问题的一种非常混乱的方法。
如果你想玩,这个演示非常简洁。(按预期更新作品)在此处获取