97 lines
2.2 KiB
JavaScript
97 lines
2.2 KiB
JavaScript
/*
|
|
* L.Util is a namespace for various utility functions.
|
|
*/
|
|
|
|
L.Util = {
|
|
extend: function(/*Object*/ dest) /*-> Object*/ { // merge src properties into dest
|
|
var sources = Array.prototype.slice.call(arguments, 1);
|
|
for (var j = 0, len = sources.length, src; j < len; j++) {
|
|
src = sources[j] || {};
|
|
for (var i in src) {
|
|
if (src.hasOwnProperty(i)) {
|
|
dest[i] = src[i];
|
|
}
|
|
}
|
|
}
|
|
return dest;
|
|
},
|
|
|
|
bind: function(/*Function*/ fn, /*Object*/ obj) /*-> Object*/ {
|
|
return function() {
|
|
return fn.apply(obj, arguments);
|
|
};
|
|
},
|
|
|
|
stamp: (function() {
|
|
var lastId = 0, key = '_leaflet_id';
|
|
return function(/*Object*/ obj) {
|
|
obj[key] = obj[key] || ++lastId;
|
|
return obj[key];
|
|
};
|
|
})(),
|
|
|
|
requestAnimFrame: (function() {
|
|
function timeoutDefer(callback) {
|
|
window.setTimeout(callback, 1000 / 60);
|
|
}
|
|
|
|
var requestFn = window.requestAnimationFrame ||
|
|
window.webkitRequestAnimationFrame ||
|
|
window.mozRequestAnimationFrame ||
|
|
window.oRequestAnimationFrame ||
|
|
window.msRequestAnimationFrame ||
|
|
timeoutDefer;
|
|
|
|
return function(callback, context, immediate) {
|
|
callback = context ? L.Util.bind(callback, context) : context;
|
|
if (immediate && requestFn === timeoutDefer) {
|
|
callback();
|
|
} else {
|
|
requestFn(callback);
|
|
}
|
|
};
|
|
})(),
|
|
|
|
limitExecByInterval: function(fn, time, context) {
|
|
var lock, execOnUnlock, args;
|
|
function exec(){
|
|
lock = false;
|
|
if (execOnUnlock) {
|
|
args.callee.apply(context, args);
|
|
execOnUnlock = false;
|
|
}
|
|
}
|
|
return function() {
|
|
args = arguments;
|
|
if (!lock) {
|
|
lock = true;
|
|
setTimeout(exec, time);
|
|
fn.apply(context, args);
|
|
} else {
|
|
execOnUnlock = true;
|
|
}
|
|
};
|
|
},
|
|
|
|
falseFn: function() { return false; },
|
|
|
|
formatNum: function(num, digits) {
|
|
var pow = Math.pow(10, digits || 5);
|
|
return Math.round(num * pow) / pow;
|
|
},
|
|
|
|
setOptions: function(obj, options) {
|
|
obj.options = L.Util.extend({}, obj.options, options);
|
|
},
|
|
|
|
getParamString: function(obj) {
|
|
var params = [];
|
|
for (var i in obj) {
|
|
if (obj.hasOwnProperty(i)) {
|
|
params.push(i + '=' + obj[i]);
|
|
}
|
|
}
|
|
return '?' + params.join('&');
|
|
}
|
|
};
|