我正在尝试使函数能够在用户添加或删除航路点时使用Leaflet Routing Machine更新L.Routing.line。

到目前为止,我的代码(对http://www.liedman.net/leaflet-routing-machine/interaction.html进行了一些修改):

function routeImplement(){
    if (routewpts.length >= 2) {
        router.route(routewpts, function(err, routes) {
            if (routeline) {
                map.removeLayer(routeline);
            };

            if (err) {
                alert(err);
            } else {
                routeline = L.Routing.line(routes[0]).addTo(map);
            };
        });
    }
    else{
        if (routeline) {
           map.removeLayer(routeline);
        };
    };
}


routewpts是latLng的数组,routeline应该是L.Routing.line,router=L.Routing.osrm();,并且map是传单地图(所有全局变量)。该功能可以很好地创建线条。

我遇到的问题是map.removeLayer(routeline);似乎不起作用。看来有两个问题:一是L.Routing.line似乎没有返回任何内容,因此routeline仍未定义。其次,如果我放弃使用句柄,而尝试直接在map.removeLayer上使用L.Routing.line,则会收到有关对OSRM.org的错误请求的一些疯狂错误。

感谢您的任何建议。

最佳答案

我前进的第一件事是使用箭头功能

10-06 07:44