我正在使用带有传单的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);
}
答案 0 :(得分:1)
这是RTFM的案例。
您在代码中使用MQ.routing.directions
这一事实告诉我您正在使用Mapquest routing plugin for Leaflet,complete 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
// ...
}