Когда закончится рендеринг маршрута mapquest? - PullRequest
0 голосов
/ 26 апреля 2018

Я использую карту 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 голосов
/ 26 апреля 2018

Это случай RTFM.

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

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

success

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

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

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

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

dir = MQ.routing.directions();

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