Spaces:
Running
Running
File size: 2,909 Bytes
f655b1d |
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 88 89 90 91 92 93 94 95 96 |
(function (factory) {
// Packaging/modules magic dance
var L;
if (typeof define === 'function' && define.amd) {
// AMD
define(['leaflet'], factory);
} else if (typeof module !== 'undefined') {
// Node/CommonJS
L = require('leaflet');
module.exports = factory(L);
} else {
// Browser globals
if (typeof window.L === 'undefined')
throw 'Leaflet must be loaded first';
factory(window.L);
}
}(function (L) {
'use strict';
L.Control.Pan = L.Control.extend({
options: {
position: 'topleft',
panOffset: 500
},
onAdd: function (map) {
var className = 'leaflet-control-pan',
container = L.DomUtil.create('div', className),
off = this.options.panOffset;
this._panButton('Up' , className + '-up',
container, map, new L.Point( 0 , -off));
this._panButton('Left' , className + '-left',
container, map, new L.Point( -off , 0));
this._panButton('Right', className + '-right',
container, map, new L.Point( off , 0));
this._panButton('Down' , className + '-down',
container, map, new L.Point( 0 , off));
// Add pan control class to the control container
if (this.options.position === 'topleft') {
var controlContainer = L.DomUtil.get(map._controlCorners.topleft);
} else if (this.options.position === 'topright') {
var controlContainer = L.DomUtil.get(map._controlCorners.topright);
} else if (this.options.position === 'bottomleft') {
var controlContainer = L.DomUtil.get(map._controlCorners.bottomleft);
} else {
var controlContainer = L.DomUtil.get(map._controlCorners.bottomright);
}
if(!L.DomUtil.hasClass(controlContainer, 'has-leaflet-pan-control')) {
L.DomUtil.addClass(controlContainer, 'has-leaflet-pan-control');
}
return container;
},
onRemove: function (map) {
// Remove pan control class to the control container
var controlContainer = L.DomUtil.get(map._controlCorners.topleft);
if(L.DomUtil.hasClass(controlContainer, 'has-leaflet-pan-control')) {
L.DomUtil.removeClass(controlContainer, 'has-leaflet-pan-control');
}
},
_panButton: function (title, className, container, map, offset) {
var wrapper = L.DomUtil.create('div', className + '-wrap', container);
var link = L.DomUtil.create('a', className, wrapper);
link.href = '#';
link.title = title;
L.DomEvent
.on(link, 'click', L.DomEvent.stopPropagation)
.on(link, 'click', L.DomEvent.preventDefault)
.on(link, 'click', function(){ map.panBy(offset); }, map)
.on(link, 'dblclick', L.DomEvent.stopPropagation);
return link;
}
});
L.Map.mergeOptions({
panControl: false
});
L.Map.addInitHook(function () {
if (this.options.panControl) {
this.panControl = new L.Control.Pan();
this.addControl(this.panControl);
}
});
L.control.pan = function (options) {
return new L.Control.Pan(options);
};
return L.Control.Pan;
}));
|