Commit | Line | Data |
---|---|---|
c5ba5b04 JW |
1 | /*\r |
2 | * L.Util is a namespace for various utility functions.\r | |
3 | */\r | |
4 | \r | |
5 | L.Util = {\r | |
6 | extend: function(/*Object*/ dest) /*-> Object*/ { // merge src properties into dest\r | |
7 | var sources = Array.prototype.slice.call(arguments, 1);\r | |
8 | for (var j = 0, len = sources.length, src; j < len; j++) {\r | |
9 | src = sources[j] || {};\r | |
10 | for (var i in src) {\r | |
11 | if (src.hasOwnProperty(i)) {\r | |
12 | dest[i] = src[i];\r | |
13 | }\r | |
14 | }\r | |
15 | }\r | |
16 | return dest;\r | |
17 | },\r | |
18 | \r | |
19 | bind: function(/*Function*/ fn, /*Object*/ obj) /*-> Object*/ {\r | |
20 | return function() {\r | |
21 | return fn.apply(obj, arguments);\r | |
22 | };\r | |
23 | },\r | |
24 | \r | |
25 | stamp: (function() {\r | |
26 | var lastId = 0, key = '_leaflet_id';\r | |
27 | return function(/*Object*/ obj) {\r | |
28 | obj[key] = obj[key] || ++lastId;\r | |
29 | return obj[key];\r | |
30 | };\r | |
31 | })(),\r | |
32 | \r | |
33 | requestAnimFrame: (function() {\r | |
34 | function timeoutDefer(callback) {\r | |
35 | window.setTimeout(callback, 1000 / 60);\r | |
36 | }\r | |
37 | \r | |
38 | var requestFn = window.requestAnimationFrame || \r | |
39 | window.webkitRequestAnimationFrame || \r | |
40 | window.mozRequestAnimationFrame || \r | |
41 | window.oRequestAnimationFrame || \r | |
42 | window.msRequestAnimationFrame || \r | |
43 | timeoutDefer;\r | |
44 | \r | |
45 | return function(callback, context, immediate) {\r | |
46 | callback = context ? L.Util.bind(callback, context) : context;\r | |
47 | if (immediate && requestFn === timeoutDefer) {\r | |
48 | callback();\r | |
49 | } else {\r | |
50 | requestFn(callback);\r | |
51 | }\r | |
52 | };\r | |
53 | })(),\r | |
54 | \r | |
55 | limitExecByInterval: function(fn, time, context) { \r | |
56 | var lock, execOnUnlock, args;\r | |
57 | function exec(){\r | |
58 | lock = false;\r | |
59 | if (execOnUnlock) {\r | |
60 | args.callee.apply(context, args);\r | |
61 | execOnUnlock = false;\r | |
62 | }\r | |
63 | }\r | |
64 | return function() {\r | |
65 | args = arguments;\r | |
66 | if (!lock) { \r | |
67 | lock = true;\r | |
68 | setTimeout(exec, time);\r | |
69 | fn.apply(context, args);\r | |
70 | } else {\r | |
71 | execOnUnlock = true;\r | |
72 | }\r | |
73 | };\r | |
74 | },\r | |
75 | \r | |
76 | falseFn: function() { return false; },\r | |
77 | \r | |
78 | formatNum: function(num, digits) {\r | |
79 | var pow = Math.pow(10, digits || 5);\r | |
80 | return Math.round(num * pow) / pow;\r | |
81 | },\r | |
82 | \r | |
83 | setOptions: function(obj, options) {\r | |
84 | obj.options = L.Util.extend({}, obj.options, options);\r | |
85 | },\r | |
86 | \r | |
87 | getParamString: function(obj) {\r | |
88 | var params = [];\r | |
89 | for (var i in obj) {\r | |
90 | if (obj.hasOwnProperty(i)) {\r | |
91 | params.push(i + '=' + obj[i]);\r | |
92 | }\r | |
93 | }\r | |
94 | return '?' + params.join('&');\r | |
95 | }\r | |
96 | };\r |