src/directives/glHandlers.js
angular.module('mapboxgl-directive').directive('glHandlers', [function () {
function mapboxGlHandlersDirectiveLink (scope, element, attrs, controller) {
if (!controller) {
throw new Error('Invalid angular-mapboxgl-directive controller');
}
var mapboxglScope = controller.getMapboxGlScope();
/*
handlers: {
scrollZoom: true | false,
boxZoom: true | false,
dragRotate: true | false,
dragPan: true | false,
keyboard: true | false,
doubleClickZoom: true | false,
touchZoomRotate: true | false
}
*/
controller.getMap().then(function (map) {
mapboxglScope.$watch('glHandlers', function (handlers) {
if (angular.isDefined(handlers) && Object.prototype.toString.call(handlers) === Object.prototype.toString.call({})) {
for (var attribute in handlers) {
if (handlers.hasOwnProperty(attribute)) {
var functionToExecute = handlers[attribute] ? 'enable' : 'disable';
map[attribute][functionToExecute]();
}
}
}
}, true);
});
}
var directive = {
restrict: 'A',
scope: false,
replace: false,
require: '?^mapboxgl',
link: mapboxGlHandlersDirectiveLink
};
return directive;
}]);