Клуб API Карт

Вопрос к разработчикам: boundschange и sizechange

ivan-zykov
10 февраля 2016, 10:22

Обнаружил интересную особенность работы boundschange. Это событие отслеживает изменение области просмотра карты. В документации написано «в результате изменения центра или уровня масштабирования». Но в случае изменения размера окна карты тоже срабатывает событие boundschange, так как при изменении размера окна карты область просмотра карты тоже меняется (проверено).

Есть также событие sizechange, которое отслеживает только изменения размера окна карты. Там доступны поля oldSize и newSize.

Но если мне нужно отследить только изменение масштаба и перетаскивание карты? Я бы мог слушать boundschange и проверять, меняется ли размер окна, но в boundschange не доступны поля oldSize и newSize.

На мой взгляд, с этим нужно что-то делать.

6 комментариев
myMap.container.getSize()
https://tech.yandex.ru/maps/doc/jsapi/2.1/ref/reference/map.Container-docpage/#getSize
dimik,
Спасибо, конечно, но что мне это даст? Как проследить именно изменение размера контейнера карты?
ivan-zykov,
Сравнить с предыдущим, до события boundschange
dimik,
Хорошо, а в какой момент мне получать предыдущий размер окна до события boundschange? Я как-то не очень хорошо это представляю.
ivan-zykov,
Я как-то не очень хорошо представляю, что тут можно не очень хорошо представлять. Предыдущий размер окна получаете перед добавлением обработчика "boundschange". В обработчике меняете ему значение.

Можно кидать на карте свое событие "sizeboundschange"

http://jsfiddle.net/xometL0L/
dimik,
Спасибо! Я не с той стороны пошёл)