【问题标题】:leaflet routing machine when waypoints are the same航路点相同时的传单路由机
【发布时间】:2019-06-17 10:35:37
【问题描述】:

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

我的代码如下所示:

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);

当我通过不同纬度/经度的点时,它会很好地绘制路线。但是让我们想象一下下面的场景。假设点数组包含 3 个项目。每个项目都包含纬度/经度,假设这些纬度/经度是相同的。所以是这样的:

34.72581233927868     -80.71105957031251
34.72581233927868     -80.71105957031251 
34.72581233927868     -80.71105957031251

现在路由控件所做的是因为它无法绘制路线,它会自动以最大方式放大,并在控制台中显示错误。 {"message":"缩放级别必须在 0-20 之间。"}

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

【问题讨论】:

  • 路由机的版本是多少?
  • 传单路由机": "^3.2.12
  • 您可以在将点传递给插件之前检查您不是这种情况,即所有点都不相同。并在项目页面提交问题。

标签: leaflet


【解决方案1】:

如果您知道您的输入可能无效,那么最简洁的方法是在输入的过程中对其进行过滤以删除重复项。如果由于某种原因无法做到这一点,并且您想让 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

【讨论】:

    猜你喜欢
    • 2021-08-27
    • 1970-01-01
    • 2022-07-24
    • 1970-01-01
    • 1970-01-01
    • 2019-12-10
    • 1970-01-01
    相关资源
    最近更新 更多