mapquest路由何时完成呈现?

时间:2018-04-26 10:57:23

标签: leaflet mapquest

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

我正在使用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);
}

1 个答案:

答案 0 :(得分:1)

这是RTFM的案例。

您在代码中使用MQ.routing.directions这一事实告诉我您正在使用Mapquest routing plugin for Leafletcomplete API documentation

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

  

success

     

从服务器检索到路径数据并解压缩shapePoints时触发。 [...]

我非常怀疑你不需要知道路线何时被渲染(意思是:当线路已经显示在屏幕上时),而是当网络请求时路线已经完成(这需要花费大部分时间)。在屏幕上实际渲染线条的时间通常可以忽略不计,除非有人使用数千个段(在简化自动道格拉斯 - 简化之后)。

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

MapQuest Route Narrative example中说明了如何使用此success事件:

dir = MQ.routing.directions();

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