Как восстановить поведение прокрутки по умолчанию в arcGIS?

У меня есть одна проблема с использованием карты с ArcGIS API:

Когда указатель мыши находится над картой, прокрутка страницы по умолчанию блокируется. Я знаю, что могу подавить масштабирование карты при прокрутке с помощью stopPropagation () при событии колеса мыши, но это приводит только к отключению масштабирования. Страница по-прежнему не перемещается при прокрутке ...

Это приводит к плохому взаимодействию с пользователем, особенно при использовании больших / полноэкранных карт внутри страницы.

Любая идея?


person Jörg    schedule 21.11.2018    source источник


Ответы (1)


Отключение масштабирования прокрутки в представлении с помощью кода ниже (как в демонстрации esri здесь) не предотвращает запуск события wheel элемента DOM, которое предотвращает прокрутку страницы по умолчанию;

  //this prevent the mapView to zoom on wheel but does not make the page to scroll as wanted
  view.on("mouse-wheel", function(event) {
    // disable mouse wheel scroll zooming on the view
    event.stopPropagation();
  });

Итак, что вам нужно сделать, это добавить прослушиватель событий колеса в элемент DOM, который обрабатывает событие колеса esri, а затем выполнить _ 3_, чтобы не запускалось событие колеса esri, отменяющее прокрутку страницы по умолчанию.

С API v.4.9 элемент DOM, который вы должны использовать, имеет класс esri-view-surface

  var viewSurfaceElem = document.getElementsByClassName("esri-view-surface")[0];
  viewSurfaceElem.addEventListener("wheel", function(event) { event.stopImmediatePropagation(); });

См. Живую демонстрацию здесь: https://codepen.io/anon/pen/bQLwwm

person Below the Radar    schedule 21.11.2018
comment
Вот и все. Большое спасибо! - person Jörg; 23.11.2018
comment
Спасибо за ваш ответ. Это сработало. Теперь у меня есть еще одна похожая проблема: поскольку я могу встраивать клиентское приложение только через iFrame, возникает та же проблема с прокруткой. Я мог бы проверить опцию «✓ Предотвратить прокрутку карты» в настройках, но страница по-прежнему перестает прокручиваться, когда курсор мыши находится над картой. Поскольку iframe встроен в полноэкранный режим, он полностью блокирует прокрутку страницы. Есть идеи, как это решить? Спасибо за вашу помощь. - person Jörg; 02.02.2019
comment
Я не уверен, что понимаю вопрос, можете ли вы предоставить демонстрацию проблемы? Насколько я понимаю, вам просто не нужно будет добавить overflow-y: auto; в iframe css? - person Below the Radar; 04.02.2019