Кажется, есть (недокументированное) свойство объекта события с именем hard
, которое устанавливается, когда карта перемещается setBounds
, и не устанавливается, когда пользователь перетаскивает карту или использует курсоры:
map.on('moveend', function (e) {
if (e.hard) {
// moved by bounds
} else {
// moved by drag/keyboard
}
});
Тестовый пример здесь, на Plunker: http://plnkr.co/edit/SloKuB?p=preview
В качестве другого варианта вы можете привязаться к событию после того, как вы установили границы, чтобы оно не срабатывало, когда вы устанавливаете границы, и когда вы хотите установить границы впоследствии, вы можете сначала отменить привязку, используя .off
, и снова выполнить привязку после установки с помощью .on
. Что-то вроде (непроверенный/хакерский):
function moveEndHandler () {
....
}
map.on('moveend', moveEndHandler);
function mySetBounds (bounds) {
map.off('moveEnd', moveEndHandler);
map.setBounds(bounds);
map.on('moveend', moveEndHandler);
}
19.02.2015