航路点相同时的小叶路由机

时间:2019-06-17 10:35:37

标签: leaflet

我正在使用此插件:https://github.com/perliedman/leaflet-routing-machine

我的代码如下:

...
recipe = {
  .
  .
  thumbnail: require('assets/images/img1.jpg'),
  //make sure the path of the image is relative to parent class where you are defining the prop 
  .
  .
}
...

当我通过充满不同纬度/经度的点时,它会画出精细的路线。但是,让我们想象一下以下情况。假设点数组包含3个项目。每个项目都包含纬度/经度,假设这些纬度/经度是相同的。像这样:

for(let i=0; i<markers.length; i++){
  points.push(L.latLng(markers[i].latitude, markers[i].longitude))
}
this.routingControl = L.Routing.control({
  waypoints: points
}).addTo(this.map);

现在,路由控件的作用是无法绘制路线,它会自动以最大方式放大,并在控制台中显示错误。 {“消息”:“缩放级别必须在0-20之间。”}

解决方法1:绘制路线后,我决定在1秒后使用settimeout,然后在myseslf处放大11。这样,它会缩小,但在控制台中,错误仍然存​​在。我该如何解决?

1 个答案:

答案 0 :(得分:0)

如果您知道您的输入内容可能是无效的,那么最干净的方法是在删除重复项的过程中对其进行过滤。如果由于某种原因无法实现,并且您想让LRM确定是否存在错误,则可以使用以下命令捕获错误事件:

L.Routing.control({
...
})
.addTo(this.map)
.on('routingerror', function(e) {
    // do your error action here - e.g. zoom out
})

有关处理LRM中的错误的更多信息,请参见https://www.liedman.net/leaflet-routing-machine/api/#eventobjects