Когда завершается рендеринг маршрута mapquest?

Я использую карту MapQuest с листовкой. Маршруты вводятся динамически. Когда мы добавляем маршруты на карту, для завершения рендеринга требуется время. Я хочу заблокировать экран во время рендеринга карты. Есть ли способ (API mapquest или событие листовки), чтобы узнать, что карта готова или закончила рендеринг, чтобы я мог остановить блокировку экрана.

Я использую 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);
}

person Sandeep Kumar    schedule 26.04.2018    source источник
comment
Это похоже на проблему XY. Почему вы хотите заблокировать экран в первую очередь?   -  person IvanSanchez    schedule 26.04.2018
comment
Кроме того, было бы неплохо узнать, как вы запрашиваете маршруты. Любая библиотека? Плагин листовки? Ручные fetch запросы?   -  person IvanSanchez    schedule 26.04.2018
comment
1. Как я упоминал ранее, карте требуется время для построения маршрутов, я хочу, чтобы пользователь не нажимал какие-либо другие кнопки на экране. 2. Я использую Leaflet для добавления маршрутов. Примерно так: function (locations) { const dir = MQ.routing.directions(); dir.route({места: места}); comp.mqroute = MQ.routing.routeLayer({направления: dir, fitBounds: true, draggable: false, }); comp.map.addLayer(comp.mqroute); }   -  person Sandeep Kumar    schedule 26.04.2018


Ответы (1)


Это случай RTFM.

Тот факт, что вы используете MQ.routing.directions в своем коде, говорит мне, что вы используете Плагин маршрутизации Mapquest для Leaflet с полной документацией по API. .

Читая эту документацию по API, можно заметить событие success, цитирую:

success

Запускается, когда данные маршрута были получены с сервера, а shapePoints были распакованы. [...]

У меня есть сильное подозрение, что вам не нужно знать, когда маршрут рендерится (имеется в виду: когда линии отображаются на экране), а скорее когда сетевые запросы на маршрут закончены (что занимает больше всего времени). Время, необходимое для реального рендеринга строк на экране, обычно незначительно, если только вы не работаете с тысячами сегментов (после автоматического упрощения Дугласа-Пекера).

У меня также есть серьезные подозрения, что это XY-проблема, и что Основная проблема, которую вы пытаетесь решить, - это условия гонки, когда пользователь (повторно) запрашивает маршруты слишком быстро, и решение этой проблемы просто ограничивает запросы, а не блокирует пользовательский интерфейс.

Как использовать это событие success показано в примере описания маршрута от MapQuest. :

dir = MQ.routing.directions();

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