# Code coverage report for src/control/Control.Zoom.js

## Statements: 83.87% (26 / 31) Branches: 40% (4 / 10) Functions: 50% (4 / 8) Lines: 83.87% (26 / 31)

All files » src/control/ » Control.Zoom.js

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87

    1

    50

    50

    50

    50

    50

    50

    100
    100
    100
    100

    100

    100

    100

    36

    36
    36

    36
    1

    36

    1

    1
    50
    50
    50

    1

     /*
     * L.Control.Zoom is used for the default zoom buttons on the map.
     */

    L.Control.Zoom = L.Control.extend({
    	options: {
    		position: 'topleft'
    	},

    	onAdd: function (map) {
    		var zoomName = 'leaflet-control-zoom',
    		    container = L.DomUtil.create('div', zoomName + ' leaflet-bar');

    		this._map = map;

    		this._zoomInButton  = this._createButton(
    		        '+', 'Zoom in',  zoomName + '-in',  container, this._zoomIn,  this);
    		this._zoomOutButton = this._createButton(
    		        '-', 'Zoom out', zoomName + '-out', container, this._zoomOut, this);

    		map.on('zoomend zoomlevelschange', this._updateDisabled, this);

    		return container;
    	},

    	onRemove: function (map) {
    		map.off('zoomend zoomlevelschange', this._updateDisabled, this);
    	},

    	_zoomIn: function (e) {
    		this._map.zoomIn(e.shiftKey ? 3 : 1);
    	},

    	_zoomOut: function (e) {
    		this._map.zoomOut(e.shiftKey ? 3 : 1);
    	},

    	_createButton: function (html, title, className, container, fn, context) {
    		var link = L.DomUtil.create('a', className, container);
    		link.innerHTML = html;
    		link.href = '#';
    		link.title = title;

    		var stop = L.DomEvent.stopPropagation;

    		L.DomEvent
    		    .on(link, 'click', stop)
    		    .on(link, 'mousedown', stop)
    		    .on(link, 'dblclick', stop)
    		    .on(link, 'click', L.DomEvent.preventDefault)
    		    .on(link, 'click', fn, context);

    		return link;
    	},

    	_updateDisabled: function () {
    		var map = this._map,
    			className = 'leaflet-disabled';

    		L.DomUtil.removeClass(this._zoomInButton, className);
    		L.DomUtil.removeClass(this._zoomOutButton, className);

    		if (map._zoom === map.getMinZoom()) {
    			L.DomUtil.addClass(this._zoomOutButton, className);
    		}
    		Iif (map._zoom === map.getMaxZoom()) {
    			L.DomUtil.addClass(this._zoomInButton, className);
    		}
    	}
    });

    L.Map.mergeOptions({
    	zoomControl: true
    });

    L.Map.addInitHook(function () {
    	Eif (this.options.zoomControl) {
    		this.zoomControl = new L.Control.Zoom();
    		this.addControl(this.zoomControl);
    	}
    });

    L.control.zoom = function (options) {
    	return new L.Control.Zoom(options);
    };