【问题标题】:Leaflet routing machine not giving the optimal route (by far)传单路由机器没有给出最佳路线(到目前为止)
【发布时间】:2017-11-09 00:54:43
【问题描述】:

尝试在传单地图上显示路线时遇到问题:

  L.Routing.control({
  router: L.Routing.mapbox(''),
  profile:"mapbox/driving",
  addWaypoints:false,
  waypointMode:'snap',
  routeWhileDragging: true,
  show:false,
  fitSelectedRoutes:false,
  plan:false,
  draggableWaypoints:false,
  lineOptions:{
    styles:[ {color: 'black', opacity: 0.8, weight: 6}, {color: 'red', opacity: 1, weight: 2}]
      },
  waypoints: [
    L.Routing.waypoint(L.latLng(28.6114741,77.2112497),"New Dehli"),
    L.Routing.waypoint(L.latLng(30.7304186,76.7789926),"Chandigarh"),
    L.Routing.waypoint(L.latLng(31.1047637,77.1717752),"Shimla"),
    L.Routing.waypoint(L.latLng(31.4493988,77.629702),"Rampur"),
    L.Routing.waypoint(L.latLng(31.9755409,78.5961753),"Changoa"),
    L.Routing.waypoint(L.latLng(32.2251899,78.0610693),"Kaza"),
    L.Routing.waypoint(L.latLng(32.4513357,77.860656),"Hanse"),
    L.Routing.waypoint(L.latLng(32.4386919,77.7497997),"losar gompa"),
  ],

}).addTo(map);

在第 7 个航路点(Hanse),路线正在掉头,增加一千公里到达距离只有几公里的第 8 个点。

这里发生了什么?我想不通。欢迎任何帮助!

【问题讨论】:

    标签: leaflet mapbox leaflet-routing-machine


    【解决方案1】:

    欢迎来到 SO!

    这可以通过 OSMR 服务而不是 Mapbox 重现:

    var map = L.map("map").setView([32.4513357, 77.860656], 10);
    
    L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
      attribution: '&copy; <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
    }).addTo(map);
    
    L.Routing.control({
      //router: L.Routing.mapbox(''),
      //profile: "mapbox/driving",
      addWaypoints: false,
      waypointMode: 'snap',
      routeWhileDragging: true,
      show: false,
      fitSelectedRoutes: false,
      plan: false,
      draggableWaypoints: false,
      lineOptions: {
        styles: [{
          color: 'black',
          opacity: 0.8,
          weight: 6
        }, {
          color: 'red',
          opacity: 1,
          weight: 2
        }]
      },
      waypoints: [
        /*L.Routing.waypoint(L.latLng(28.6114741, 77.2112497), "New Dehli"),
        L.Routing.waypoint(L.latLng(30.7304186, 76.7789926), "Chandigarh"),
        L.Routing.waypoint(L.latLng(31.1047637, 77.1717752), "Shimla"),
        L.Routing.waypoint(L.latLng(31.4493988, 77.629702), "Rampur"),
        L.Routing.waypoint(L.latLng(31.9755409, 78.5961753), "Changoa"),
        L.Routing.waypoint(L.latLng(32.2251899, 78.0610693), "Kaza"),*/
        L.Routing.waypoint(L.latLng(32.4513357, 77.860656), "Hanse"),
        L.Routing.waypoint(L.latLng(32.4386919, 77.7497997), "losar gompa"),
      ],
    
    }).addTo(map);
    #map {
      height: 200px;
    }
    <link rel="stylesheet" href="https://unpkg.com/leaflet@1.2.0/dist/leaflet.css">
    <script src="https://unpkg.com/leaflet@1.2.0/dist/leaflet-src.js"></script>
    <link rel="stylesheet" href="https://unpkg.com/leaflet-routing-machine@3.2.7/dist/leaflet-routing-machine.css">
    <script src="https://unpkg.com/leaflet-routing-machine@3.2.7/dist/leaflet-routing-machine.js"></script>
    
    <div id="map"></div>

    OSM 数据库似乎认为您的到达点附近存在“障碍”障碍物(“losar gompa”):

    如果这种类型的障碍物不能被汽车穿越,那就可以解释为什么路由器会选择另一条(很长的……)路线。

    如果您认为这个障碍不再存在,请随时在 OpenStreetMap 上创建一个帐户并编辑地图! Mapbox 路由器很有可能使用 OSM 数据,因此您的修改将在一段时间后反映在 Mapbox 中。

    【讨论】:

    • 我不太了解这个区域,实际上我尝试渲染的路线可以被摩托车穿过,这就是我所知道的。计算路线时可以忽略这些障碍吗?我尝试使用步行/足部配置文件,但它仍然采取了很长的方式。
    • 其实就是地图上提到的一个简单的检查站。 OSRM 应该明确地认为这些是可交叉的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-19
    • 2021-06-30
    • 1970-01-01
    • 1970-01-01
    • 2013-01-12
    • 1970-01-01
    相关资源
    最近更新 更多