mapquest 路由什么时候完成渲染?

When does mapquest route finish rendering?

我正在使用带传单的 MapQuest 地图。路由是动态注入的。当我们向地图添加路线时,需要时间来完成渲染。 我想在渲染地图时遮挡屏幕。 有什么方法(mapquest API 或 leaflet 事件)知道地图已准备好或已完成渲染,以便我可以停止屏幕阻塞。

我正在使用 Leaflet 添加路线。像这样:

function (locations) {
  const dir = MQ.routing.directions();
  dir.route({ locations: locations });
  comp.mqroute = MQ.routing.routeLayer({
    directions: dir,
    fitBounds: true,
    draggable: false,
  });
  comp.map.addLayer(comp.mqroute);
}

这是一个 RTFM 案例。

您在代码中使用 MQ.routing.directions 的事实告诉我您使用的是 Mapquest routing plugin for Leaflet, which has complete API documentation.

通过阅读 API 文档,可以注意到一个 success 事件,我引用:

success

Fired when route data has been retrieved from the server and shapePoints have been decompressed. [...]

我非常怀疑您不需要知道路线何时 呈现 (意思是:线条何时显示在屏幕上)而是何时路由的网络请求已完成(这是最耗时的)。在屏幕上实际渲染线条的时间通常可以忽略不计,除非一个人正在处理数千个线段(在自动道格拉斯-普克简化之后)。

我也非常怀疑这是一个 XY problem,并且您要解决的根本问题是当用户(重新)请求路由太快时的竞争条件,解决方案只是限制请求而不是阻止 UI.

如何使用此 success 事件在 MapQuest 的 Route Narrative example:

中有说明
dir = MQ.routing.directions();

dir.on('success', function(data) {
     // ...
     // the code here will run once the route is ready
     // ...
  }