0

我正在建立一个带有地图的小站点。我需要步行路由,所以我考虑从 osrmv1 测试服务器切换到 MapBox 进行测试,因为 osrm 测试服务器只提供驱动。

我尝试这样更改路由:

const options = { profile: 'mapbox/walking' };
const mapRouter = L.Routing.control({
  router: L.Routing.Mapbox( mapBoxAPIKey, options),
  waypoints: [
    L.latLng([this.currentLatlong[0], this.currentLatlong[1]]),
    L.latLng([this.pointToGoLatlong[0], this.pointToGoLatlong[1]])
  ],
  fitSelectedRoutes : false,
  routeWhileDragging: false,
  collapsible: true,
  lineOptions: {
    styles: [{
      color: 'green',
      opacity: 1,
      weight: 3
    }]
  },
});

mapRouter.addTo(this.map);

但是这条线:

路由器:L.Routing.Mapbox(mapBoxKey,选项)

不识别L.Routing的参数Mapbox

我错过了什么?

谢谢

4

1 回答 1

2

由于 mapbox API 的更改,更具体地说,是由于更新了步行轮廓以提高其精度,因此它将返回 polyline6 编码,正如 Daniel Patterson 在此 github问题上为 Mapbox 工作所提到的那样。

您需要使用L.Routing.mapbox代替L.Routing.Mapbox并将您的选项更改为:

const options = { profile: "mapbox/walking", polylinePrecision: 6 };

还可以使用以下内容来避免 Typescript 在编译时出现错误:

router: (L.Routing as any).mapbox("your api key", options),

演示

包含您的 API 密钥以查看演示

于 2020-03-07T14:30:23.370 回答