День добрый.
Помогите, пожалуйста разобраться.
Ситуация
Область просмотра карты может меняться:
1) как программным способом через API (конкретно методами map.setCenter; map.setZoom; map.container.fitToViewport;)
2) так и в результате действий пользователя (скролл над картой, кнопки "+", "-", перетаскиванием карты с помощью мыши и т.д.)
Все эти действия можно обработать, с помощью события boundschange.
Вопрос
Как в обработчике события boundschange отличить событие, программно вызванное через API, от события, инициированного непосредственными действиями пользователя?
* Это важно для построения нашего UI.
Попытки решения
1) В методах (setCenter и setZoom) есть callback. С его помощью можно, конечно, отловить часть именно программных действий. Но как тогда обработать fitToViewport? И отдельный колбэк для пользовательких действий всё равно не получится назначить.
2) Хотелось бы, конечно, увидеть способ (не смог найти) передать некий флаг в эти методы, который потом можно прочитать из объекта инциированных событий в обработчике. Т.е. увидеть что-то вроде jQuery-подобного подхода:
$('.link').trigger('click', [true]);
//...
$('.link').on('click', function(event, isProgramClickEmulation){
if(isProgramClickEmulation){
console.log('Это программная эмуляция клика');
}
});