有没有办法在两点之间的 MapQuest 路线中获取点的一些坐标?

Is there a way to get some coordinates of the points in a MapQuest route between two points?

我设法通过 leaflet 和 mapquest 获得了两点之间的优化路线。这是为此的代码:

dir = MQ.routing.directions();

  dir.optimizedRoute({
    locations: [
      start,
      end
    ]
  });

  CustomRouteLayer = MQ.Routing.RouteLayer.extend({
    createStartMarker: (location) => {
      const marker = L.marker(location.latLng).addTo(mymap);
      return marker;
    },

    createEndMarker: (location) => {
      const marker = L.marker(location.latLng, { icon: redIcon }).addTo(mymap);
      return marker;
    }

  });

  mymap.addLayer(new CustomRouteLayer({
    directions: dir,
    fitBounds: true,
  }));

结果是这样的:

但是我没能得到这条路线中某些点的坐标。我需要这些点,因为我想制作一个对象如何穿过直线的“动画”。

我曾经使用 OSRM,而不是 MapQuest,但是阅读他们的文档让我建议您也使用 MapQuest 的 Route Shape endpoint (GET) 来获取形状节点坐标。

使用路由函数回调选项来处理路由响应。获得形状点后,您可能需要解压缩它们。这是我的做法。

    L.mapquest.directions().route({
      start: 'Denver,CO',
      end: 'Boulder,CO',
    },function(x,data){console.log(data.route.shape.shapePoints)});

通过监听 MQ.routing.directions().optimizedRoute() 的 'success' 事件,我设法获得了方向列表中的点列表。这个事件被触发了 2 次,但只有第二次它的形状是 属性.

dir.on('success', function (e) {
      if (e.route.shape) {
        arrLocations.push(...e.route.shape.shapePoints)
        console.log(arrLocations);
        resolve(arrLocations);
      }
})