如何在地图外添加Leaflet Routing Machine控件div

How to add Leaflet Routing Machine control outside the map div

传单routing machine容器div默认显示在地图上,我想把这个div放在地图下面。有什么线索吗?

因此,您需要在地图外添加一个传单控件div。这是一个解决方案。

  • 创建一个 Div 您想要添加控件的位置并将其放置在页面上您想要的任何位置
  • 启动您的控件并将其添加到变量中,就像我在本例中所做的那样

    var control = L.Routing.control({
      waypoints: [
        L.latLng(57.74, 11.94),
        L.latLng(57.6792, 11.949)
      ]
    });
    
  • 将您的 control 添加到地图,如下所示

    control._map = map;
    var controlDiv = control.onAdd(map);
    
  • 最后将您的控件添加到最初定义的 html div

    document.getElementById('controls').appendChild(controlDiv);
    

这是一个有效的 fiddle

我修改了 muzaffar 解决方案,现在它工作得更好了。 谢谢 muzaffar!

var control = L.Routing.control({
    waypoints: [
        L.latLng(32.78186, -96.76612),
        L.latLng(32.77602, -96.80766)
    ],
    geocoder: L.Control.Geocoder.nominatim(),
    routeWhileDragging: true,
    reverseWaypoints: true,
    fitSelectedRoutes: true
});

var routeBlock = control.onAdd(map);    
document.getElementById('controls').appendChild(routeBlock);

这里如果 fiddle