Как можно настроить API Y.Maps 2.1 так, чтобы при взаимодействии с картой работал только зум карты, без прокрутки страницы, и при этом в режиме прокрутки карты поведение скролла становилось обычным? Раньше использовался параметр suppressScrollAPI: true, но сейчас он не указан в документации. Варианты типа overflow: hidden с событиями mouseenter/mouseleave не пригодятся из-за возможного мерцания полосы прокрутки. Какие настройки могут решить данную проблему?
Для блокировки прокрутки страницы внутри области Яндекс Карты и настройки API Y.Maps 2.1 можно использовать следующий подход:
1. Для блокировки прокрутки страницы внутри области Яндекс карты, можно использовать CSS свойство `overflow: hidden;` для контейнера карты. Например:
```
#map {
overflow: hidden;
}
```
2. Для настройки API Y.Maps 2.1 так, чтобы при взаимодействии с картой работал только зум карты, можно использовать следующий код:
```
ymaps.ready(function () {
var map = new ymaps.Map('map', {
center: [55.76, 37.64],
zoom: 9,
controls: ['zoomControl']
}, {
suppressMapOpenBlock: true
});
map.behaviors.disable('scrollZoom');
map.behaviors.enable('multiTouch');
});
```
Параметр `suppressMapOpenBlock` поможет заблокировать прокрутку страницы внутри области карты. Метод `behaviors.disable('scrollZoom')` отключит прокрутку карты с помощью колесика мыши, а метод `behaviors.enable('multiTouch')` позволит продолжать прокрутку карты с помощью жестов на сенсорных устройствах.
Надеюсь, это поможет вам решить вашу проблему.
Можно сделать вот так.
<div class="scroll-blocker"> <YOUR_MAP /> </div>
const mouse = { x: -1, y: -1 }; const elements = document.getElementsByClassName('scroll-blocker'); window.addEventListener('mousemove', (event) => { mouse.x = event.clientX; mouse.y = event.clientY; }); window.addEventListener('wheel', (event) => { const target = document.elementFromPoint(mouse.x, mouse.y); for (const element of elements) { if (element.contains(target)) { event.preventDefault(); return; } } }, { passive: false, capture: true });