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
// ...
}
我正在使用带传单的 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
// ...
}