【问题标题】:How to remove L.Routing.line in leaflet with Leaflet Routing Machine?如何使用 Leaflet Routing Machine 删除传单中的 L.Routing.line?
【发布时间】:2014-07-27 20:52:02
【问题描述】:

我正在尝试让一个函数工作,每当用户添加或删除航点时,它会使用 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 是一个 latLngs 数组,routeline 应该是 L.Routing.line,router=L.Routing.osrm();map 是传单地图(所有全局变量)。该函数可以很好地创建一条线。

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

感谢您的任何建议。

【问题讨论】:

    标签: javascript leaflet


    【解决方案1】:

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

    function routeImplement(){
        if (routewpts.length >= 2) {
            router.route(routewpts, (err, routes) => { //arrow function
                if (routeline) {
                    map.removeLayer(routeline);
                };
    
                if (err) {
                    alert(err);
                } else {
                    routeline = L.Routing.line(routes[0]).addTo(map);
                };
            });
        }
        else{
            if (routeline) {
               map.removeLayer(routeline); // but still this line doesnt work for me
            };
        };
    }

    【讨论】:

      【解决方案2】:

      嗯...事实证明,让它工作的方法是分解 L.Routing.line 调用:

      routeline = L.Routing.line(routes[0]);
      routeline.addTo(map);
      

      这样,路线句柄就可以正常工作,其他一切都可以正常工作。我不太了解 Leaflet(或路由机),无法解释为什么如果立即将线路添加到地图,它会放弃返回任何内容。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-11-23
        • 2015-12-18
        • 2016-11-25
        • 2022-08-20
        • 1970-01-01
        • 2014-10-12
        相关资源
        最近更新 更多