我正在尝试使函数能够在用户添加或删除航路点时使用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的错误请求的一些疯狂错误。感谢您的任何建议。
最佳答案
我前进的第一件事是使用箭头功能